AllenWang的个人博客

小楼一夜听春雨


  • 首页

  • 分类

  • 归档

  • 标签

  • menu.ad

深入理解堆和栈

发表于 2016-11-20 | 分类于 data_structure os

引言

堆和栈是经常看到的两个名词了,以至于太平常反而没有区深入了解它们,导致一些概念区分不清楚。实际上对堆和栈的理解需要从数据结构和操作系统这两个层面来理解,因为在这两种情形下它们的含义有些差别

阅读全文 »

https原理与过程

发表于 2016-11-20 | 分类于 network_protocols

引言

我们知道,http协议属于明文传输协议,交互过程以及数据传输都没有进行加密,通信双方也没有进行任何认证,通信过程非常容易遭遇劫持、监听、篡改,比如我们打开一些http网站时会跳出一些不属于网站本身的弹出广告,这种情况下就是遭遇运营商的流量劫持。严重情况下,会造成恶意的流量劫持等问题,甚至造成个人隐私泄露(比如银行卡卡号和密码泄露)等严重的安全问题。

可以把http通信比喻成寄送信件一样,A给B寄信,信件在寄送过程中,会经过很多的邮递员之手,他们可以拆开信读取里面的内容(因为http是明文传输的)。A的信件里面的任何内容(包括各类账号和密码)都会被轻易窃取。除此之外,邮递员们还可以伪造或者修改信件的内容,导致B接收到的信件内容是假的。

比如常见的,在http通信过程中,“中间人”将广告链接嵌入到服务器发给用户的http报文里,导致用户界面出现很多不良链接; 或者是修改用户的请求头URL,导致用户的请求被劫持到另外一个网站,用户的请求永远到不了真正的服务器。这些都会导致用户得不到正确的服务,甚至是损失惨重。

考虑到http的这些隐患,目前像Google、Apple都在大力呼吁开发者使用全站https连接

阅读全文 »

Java集合总结

发表于 2016-11-15 | 分类于 java

引言

Java中的集合在日常开发中使用非常广泛,因为它提供了一些通用的接口来管理对象。为此,整个集合框架围绕一组标准接口而设计,你可以直接使用这些接口的标准实现,诸如: LinkedList, HashSet, 和 TreeSet等,除此之外你也可以通过这些接口实现自己的集合。目前,所有的集合框架都包含以下内容:

  • 接口:是代表集合的抽象数据类型,接口允许集合独立操纵其代表的细节,在面向对象的语言,接口通常形成一个层次;
  • 实现类:是集合接口的具体实现,从本质上讲,它们是可重复使用的数据结构;
  • 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现
    阅读全文 »

Ubuntu14.04下64位Java虚拟机编译过程

发表于 2016-10-31 | 分类于 jvm

引言

Java程序员应该都听过HotSpot JVM,它是Sun JDK和Open JDK中所带的虚拟机,也是目前使用范围最广的虚拟机. 不过很多人不知道的是,这个目前“血统纯正”的虚拟机最初并非由Sun公司开发,而是由一家名为”Longview Technologies”的小公司设计的;甚至这个虚拟机最初并非是为Java语言开发的,它来源于Strongtalk VM,而这款虚拟机中相当多的技术又是来源于一款支持Self语言实现”达到C语言50%以上的执行效率”的目标而设计的虚拟机,Sun公司注意到了这款虚拟机在JIM编译上有许多优秀的理念和实际效果,在1997年收购了Longview Technologies公司,从而获得了HotSpot VM.

HotSpot VM继承了Sun之前的两款商用VM的优点,同时也有直接的一些优势,如它名称中的HotSpot指的是它的热点代码探测技术

阅读全文 »

Android应用启动过程分析

发表于 2016-09-21 | 分类于 android_deep_analysis

引言

在知乎上看到一个问题,是关于Android中应用的入口到底在哪里,本文以点击Launcher中某个icon为启动,分析Android应用的启动过程。

1.点击Launcher中的icon

Launcher其实也就是一个特殊的Activity而已,点击icon时的执行逻辑如下

阅读全文 »

EventBus高效使用及源码解析

发表于 2016-09-11 | 分类于 android_deep_analysis

引言

EventBus是square发布的一个用于事件订阅和发布的框架,其最大的贡献在于将事件的订阅和发布很好地解耦,使代码更优雅,逻辑更清晰。
EventBus的主要特点如下:

  • 组件解耦
    • 解耦事件订阅和发布者
    • 在Activitives,Fragments和后台线程的使用中表现良好
    • 避免了复杂且易导致错误的依赖和生命周期问题
  • 简化代码
  • 足够快
  • 轻量(大约50K)
  • 已经在100,000,000+个应用上得到了证明
  • 具有一些高级特色,如负责传递的线程,订阅优先级,粘性事件等.

下面就让我们一起揭开EventBus的神秘面纱

阅读全文 »

Retrofit源码解析

发表于 2016-08-06 | 分类于 android_deep_analysis

引言

Retrofit 是 Github 上面 squre 组织开发的一个类型安全的 Http 客户端,它可以在 Java 和 Android 上面使用,并且对Java8做好了适配。Retrofit 将描述
请求的接口转换为对象,然后再由该对象去请求后台。在有了Android Async Http和Volley之后,rxjava+Retrofit+okhttp的网络请求框架能够流行起来呢?一个最主要的原因是它在保证效率的同时,使Http请求变得简单,而且代码的可读性更好

阅读全文 »

Perfect is not pretty

发表于 2016-07-26 | 分类于 life

早上看Youtobe视频时看到的这个广告,觉得很赞! Perfetc isn’t pretty!

What doesn’t kill you only makes you stronger!

Gillette Perfect Isn’t Pretty Rio 2016 Olympic Games Sia Unstoppable


Your browser does not support the video tag.

TCP/IP协议(四):ICMP

发表于 2016-06-10 | 分类于 network_protocols

引言

ICMP(Internet Control Message Protocol)是介于网络层和传输层的协议,它的主要功能是传输网络诊断信息。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用,不过,也有一些ICMP报文把差错报文返回给用户进程

阅读全文 »

TCP/IP协议(三):ARP和RARP

发表于 2016-06-10 | 分类于 network_protocols

引言

ARP(Address Resolution Protocol,地址解析协议)是将IP地址解析为MAC地址(物理地址)的协议。在局域网中,当主机或其他网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址),但是仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送。因此发送方还需要有接收方的物理地址,也就需要一个从IP地址到物理地址的映射,ARP就是用于完成这个映射的协议

阅读全文 »
1…345…16
Allen Wang

Allen Wang

152 日志
25 分类
8 标签
© 2018 Allen Wang
由 Hexo 强力驱动
主题 - NexT.Muse