William的小星球 
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
  •     

view-getX(),-view-getLeft(),-view-getTranslationX()

https://stackoverflow.com/questions/30202379/android-views-gettop-getleft-getx-gety-getwidth-getheight-meth
 2019-03-05   View   

application-x-www-form-urlencoded-还是-multipart-form-data-

主体内容翻译自https://stackoverflow.com/questions/4007969/application-x-www-form-urlencoded-or-multipart-form-data 上的最高赞的回答 首先,http请求的内容如下: request line headers request body其中,request line部分的url必须以application/x-www-form-urlencoded方式编码 request body的编码方式由头部的Content-Type指定。 以下,开始翻译stackOverFlow的application
 2019-03-03   网络   

Java泛型通配符,上下界。

为了理清楚泛型的通配符和上下界的作用,并为了Kotlin的泛型中的关键字in和out的理解,在此用小demo重新梳理一遍对泛型的理解。 demopublic class Example { //程序入口 public static void main(String[] args) { Source<? extends Number> sourceOfNumber = new Source<>(); Number params = sourceOfNumber.getParams();//get()方法,通过编译
 2019-02-17   Java   

OkHttp拦截器袖珍重写版

本篇文章建立在看过一遍OkHttp源码中的拦截器部分的基础上。 OkHttp回顾OkHttp的拦截器工作原理如下图,每一个拦截器都有机会处理上一个拦截器传下来的Request或者下一个拦截器返回上来的Response,即可任意地进行前处理和后处理。在最后一个拦截器CallServerInterceptor中进行真正的网络链接,成功后构造Response对象并发布,一层一层地传递到开发者手上。 仿写拦截器 在实战开发中,仅就涉及数据处理这一方面,拦截器就有非常好的设计效果,OkHttp这一套是可以照搬到很多地方的,拦截器这一套设计实战性非常高,故在这里动手撸一个简易版。 1. 定义Re
 2019-01-18   第三方库   

Message-obtain()中的单链表栈缓存

Message.obtain()中的单链表栈缓存Android中的Message.java用单链表实现了一个size=50的栈,用作缓存。以下结合源码和图分析存取过程。 存void recycleUnchecked() { // Mark the message as in use while it remains in the recycled object pool. // Clear out all other details. flags = FLAG_IN_USE; what = 0; arg1 = 0; arg2 = 0; o
 2019-01-16   Android   

Socket、描述符、端口号

Socket、描述符、端口号端口:端口与进程对应:TCP 的包是不包含 IP 地址信息的,那是 IP 层上的事,但是有源端口和目的端口。就是说,端口这一东西,是属于 TCP 知识范畴的。 我们知道两个进程,在计算机内部进行通信,可以有管道、内存共享、信号量、消息队列等方法。而两个进程如果需要进行通讯最基本的一个前提是能够唯一的标识一个进程,在本地进程通讯中我们可以使用 「PID(进程标识符)」 来唯一标识一个进程。但 PID 只在本地唯一,如果把两个进程放到了不同的两台计算机,然后他们要通信的话,PID 就不够用了,这样就需要另外一种手段了。 解决这个问题的方法就是在运输层使用 「协议端口号
 2018-12-16   网络   

Android文件api获得的路径

InternalStorage/data/user/0等同于/data/data context.getFilesDir(); //路径:/data/user/0/包名/files context.getCacheDir(); //路径:/data/user/0/包名/cache context.getDir("abc",MODE_PRIVATE); //路径:/data/user/0/包名/app_abc contexnt.createTmpFile("myTmp",".suffix"); //路径:/data/user/0/包名/
 2018-12-02   Android   

Gradle构建的生命周期和其对象的理解

文章主题内容来自Gradle官方文档的Understanding the Build Lifecycler章节。通读完该章节,大大加深了我对task对象,project对象,gradle.build脚本和project对象的关系等这3个概念的理解。 官方文档地址:https://docs.gradle.org/current/userguide/build_lifecycle.html#sub:building_the_tree 构建的不同阶段一个gradle的构建有3个不同的阶段 初始化(Initialization) Gradle支持单和多project的构建。在初始化阶段,gra
 2018-11-11   Gradle   

ubuntu下配置java,gradle,groovy,androidSdk,androidNdk环境变量

1. 下载到官网下载各自对应的压缩包并解压。注意,如果提前用AndroidStudio下载了gradle,那么可以直接在~/.gradle/wrapper/dists/下找到已经下载了的gradle。 2.配置命令行 用gedit打开profile配置文件$ sudo gedit /etc/profile 拉倒最底部,依次根据自己的下载路径加入如下配置# set java environment export JAVA_HOME=/home/william/下载/jdk-8u181-linux-x64/jdk1.8.0_181 export PATH=$JAVA_HOME/bin:$PAT
 2018-11-03   操作系统   

git在github上的操作的版本回退

git在github上的操作的版本回退 找到你要回退的版本快照的hashCode git reset --hard hashCode 将本地的head指针指向hashCode代表的版本快照。 git push -f将当前指针强制推送到远程,操作之后github上的版本快照回到原来的样子。(强制push之前一定要再看一眼head指针指向的版本快照是你想要的原来的样子)
 2018-10-08   git   
1…45678…21

搜索

Hexo Fluid