Fritz

Results 11 comments of Fritz

IP直接连接,那么https怎么办

楼上已经说的很多了,这里补充下https的连接流程: 1.当 TCP 的3次挥手完成连接时,客户端将一个16位的随机数以及自己的支持那些AES,RAS加密的版本发送给服务器 2.服务器收到客户端的信息后,会用证书加密以下数据:服务器生成的16位随机数,服务器使用的AES版本,RAS加密的密钥,发送到客户端 3.客户端接收到服务器的证书加密包后,会从依据情况,从系统本地或应用本地中寻找解密用的密钥(微信支付宝的加密也是这种模式,微信支付宝是直接找厂家合作将RAS的key烧录到手机的安全区里面),解密成功得到数据后,那么客户端就会生成第三个随机数,并且使用3个16位随机数在本地生产一个 AES 加密的密钥,客户端会使用这个 AES 密钥加密一个约定好的数据(字符串),使用服务器的 RAS 加密密钥将第三个随机数以及 AES 加密的数据包返回给服务器 4.服务器收到加密的数据包并顺利解密得到第三个随机数后,也会在本地生产一个 AES 密钥,如果能顺利解密客户端的 AES 加密包,那么就会给客户发送一个可以进行安全通讯的通知,此时客户端和服务器都使用本地生成的 AES 密钥进行 http报文的传输 可以看出,https 的优势绝对安全,http报文加密用的 AES 密钥是在两端本地生成的,用完就会抛弃,黑客只有知道了证书的密钥才可能盗取到信息 而 https 的缺点也很明显,那就是每次通讯之前,要花费2~3个RTT(**客户端与服务器来回一次称为1个RTT,run trip...

可以试下以上的方法进行优化: 1. 单/多进程化:webView在独立的进程里面,那么WebView的进程崩溃不会影响到主进程运行;同时WebView的安 全漏洞也很难影响到主进程;如果是多进程的话,可以使用WebView的容器池,有二次秒开的作用;不过缺点就是需要你做好和WebView的跨进程通讯了 2. 网络优化:我们可以让WebView的host和客户端的host保持一致,那么就达到复用DNS缓存的效果;如果客户端有针对网络请求进行了优化,那么可以让WebView的全部网络请求托管给客户端 3. H5离线包:这个是手Q的H5方案之一,让客户端提前去下载离线的H5数据包,WebView只需要加载本地H5数据包即可,这么做不仅可以避免一些http的劫持,而且跳过了WebView的建立TCP连接和H5、CCS等数据下载的过程,直接开始UI渲染,大大提高了WebView的效率

context.getSharedPreferences()开始追踪的话,可以去到ContextImpl的getSharedPreferences(),最终发现SharedPreferencesImpl这个SharedPreferences的实现类,在代码中可以看到读写操作时都有大量的synchronized,因此它是线程安全的

commit是同步写入,会返回执行结果,apply方法是异步写入,并不会返回执行结果;但是SharedPreferences文件的写入是全量写入,即使只是修改了其中一条key-value,也会执行全部的写入操作,因为SharedPreferences只能用于存储体积较小的数据,太大了就容易引发OOM,同时如果需要修改多条数据,必须使用Editor来一次性完成修改再提交

View动画和属性动画最大区别就是View动画只是 Parents View 对子View里面的画布进行操作,属性动画则是修改View这个窗口容器的属性 我们都是透过 View 这个窗口来看到里面的画布内容的;也是因为这个原因,View动画执行了平移操作后,View的原位置还可以响应点击事件的原因

> @kinzirva 基于lancet改了下 升级到asm6 集成看看有问题么 classpath 'com.bytedance.tools.lancet:lancet-plugin-asm6:1.0.0' 我这边解决了集成问题了,感谢 同时建议可以写到项目demo里面去,或者在文档同步更新一下?

View.post方法调用时,如果在 View 还没开始绘制时( Activity 的 onResume方法还没回调之前 或者onResume方法执行了,但是 ViewRootImpl 的 performTraversals 还没开始执行)就会用一个初始长度为 4 的数组缓存起来(Runnable 数量大于4时会进行扩容),ViewRootImpl 在初始化时创建了一个 View.AttchInfo 对象并绑定 ViewRootImpl 的 Handler ,该 Handler 也用于发送 View 绘制相关的 msg ; 等到 ViewRootImpl执行 performTraversals方法时(此时...

是不是没有在项目的build.gradle配置下面的: `apply plugin: "cn.cxzheng.asmtraceman" traceMan { open = true //这里如果设置为false,则会关闭插桩 logTraceInfo = false //这里设置为true时可以在log日志里看到所有被插桩的类和方法 traceConfigFile = "${project.projectDir}/traceconfig.txt" }`

我也遇到了,X5webView是否不兼容Android 10呢