• ZooKeeper事务流程源码分析<1>

    = 97

    本文出自:【InTheWorld的博客】

    ZooKeeper

    利用过年这几天的一些空余时间,把《从PAXOS到ZOOKEEPER分布式一致性原理与实践》看了一遍。对ZooKeeper有了一个大致的了解。ZooKeeper作为Chubby的开源实现,在当前的分布式生产环境中有着广泛的应用。使用ZooKeeper可以方便的实现Dynamic DNS、微服务架构中的服务路由以及为其他分布式系统提供支撑(如Kafka, HBase)。

    作为个人关于ZooKeeper的第一篇blog,我准备分析一下ZooKeeper的事务流程。事务处理是ZooKeeper的一大重要功能。在ZooKeeper事务流程实现中,所有的事[……]

    Read more

  • Android触控之驱动层与应用层

    = 103

    本文出自:【InTheWorld的博客】

    触控技术算是现代智能硬件的一大特征。作为一种输入方式,触摸系统与其他输入设备(如键盘)其实非常相似。写这篇blog的初衷并不是要实现触屏驱动移植。而是看《Android内核剖析》等书的时候,发现他们都没有仔细分析触摸系统的整个流程。在这篇博客中,我打算把Android触控技术从硬件驱动到应用层大致分析一下。

    本文以GT810触屏为例进行分析,虽然我手头并没有这个板子。分析原理当然还是要从硬件分析起来了,首先简单地看下电路图吧!

    image

    就是这么简单,重点就在I2C接口和中断CAP_INT。其中I2C总线的作用是数据传输,可以实现触摸屏的初始化以及触摸[……]

    Read more

  • MINA拆包问题的简单讨论

    = 103

    本文出自:【InTheWorld的博客】

    mina

    前面有写过一篇简单的关于Netty的粘包和拆包问题,这里扯扯Mina。讲真,我对Mina其实不熟悉,但作为网络框架,和Netty什么的还是挺相似的。使用Mina处理报文数据的时候,也是通过添加自定义filter来实现的。对应与本文所讨论的拆包问题,就是ProtocolCodecFilter。

    而ProtocolCodecFilter的构造函数有两个,分别是:

    public ProtocolCodecFilter(ProtocolCodecFactory factory) 
    
    public ProtocolCodecFilter(final[......]

    Read more

  • Linux下矩阵键盘驱动分析与移植

    = 285

    本文出自:【InTheWorld的博客】

    首先要介绍一下Linux中input子系统的模型,一图胜千言,所以直接上图。

    input_subsys

    上图一目了然,我们的键盘驱动就是工作在input子系统的最低层。单纯地从驱动角度讲,我们的工作就是最终调用input_event()这个函数,把扫描到的键值传递给input core层。然后的事情就不是我们考虑的了,这样一来感觉很轻松的样子。

    好吧!正式开工了!首先说明一下硬件环境,我用的是友善之臂的tiny210开发板。出厂配置的内核是没有加入矩阵键盘的。不过驱动代码是有的,所以在menuconfig里面配置矩阵键盘。说实话,这工作真的很弱智的样子。为什么呢?因为[……]

    Read more

  • Java的序列化实现解析

    = 316

    本文出自:【InTheWorld的博客】java_logo

    对于Java自带的对象序列化,我并没有仔细研究过它的实现机制。对于Java默认的序列化机制,它的最大优点就是简单方便。你需要做的仅仅是对需要序列化的POJO增加一句implement Serializable,最多最多再增加一行serialVersionUID。其他的事情就不用我们操心了。那么Java默认的序列化机制是如何实现的呢?答案就是——反射。

            Person person = new Person(25, "Tim");
            FileOutputStream fos = new FileOutputStream("[......]

    Read more

  • TCP粘包与拆包——基于Netty

    = 369

    本文出自:【InTheWorld的博客】

    netty_log

    粘包与拆包的概念

    在TCP/IP协议中,由于传输层并不了解应用层数据的含义,发送端传输层可能会对应用层数据进行拆分或者合并,在接收端也同样如此。由此而产生的问题就是常常会听说的“粘包与拆包”的问题。“粘包拆包”的问题在“短报文”和“一问一答”的场景下其实并不会出现。短报文是指报文长度远小于MSS的情况,应用层的报文在TCP报文中完全可以放下。另一方面,“一问一答”的通信模式可以保证报文会以单一的TCP包发送出去。在这两个条件下都满足时,我们不需要考虑“粘包拆包”问题。

    反之,如果这两个条件不同时满足,就很可能会出现“粘包拆包”问题。

    • 粘包[……]

    Read more

  • SSL/TLS的理解与使用

    = 292

    本文出自:【InTheWorld的博客】

    随着网络安全技术的发展,SSL(Secure Socket Layer)逐渐成为了一种广泛应用的技术。甚至我个人认为,SSL已经成为软件从业人员必须要理解的技术。回想起来,我为了学习SSL技术还是花了不少的时间。可惜应用的少,所以很多知识点都开始淡忘了。前几天,同事们在讨论SSL的问题,我没忍住就参合了进去,大致的讲了一下自己对SSL的一些理解,也讨论了一些相关问题。这些交流也算是简单复习了一下SSL方面的知识吧!期间也发现了自己对相关知识点有些生疏了,所以就准备写点关于SSL的问题。这篇算是个人第一篇关于网络安全的blog了。image

    关于历史发展的内容[……]

    Read more

  • Varnish缓存服务器的使用

    = 357

    本文出自:【InTheWorld的博客】varnishcache (1)

    我最早接触CDN的概念是看阿里“叔度”的分享,当时觉得CDN很有趣的。后来也看过一本移动研究院出的CDN书,但还是对CDN缺乏细致的了解。双十一的时候,趁着减价的时机,入手了一台阿里云的ECS服务器。这个blog的速度确实不敢恭维,所以昨天晚上开始着手给网站提提速。

    刚开始我打算用LuManager来实现,后来又觉得LuManager这种面板操作确实有悖于自己学习的目的。而且,阿里上的这台ECS内存有两个G,感觉做一个内存层面的cache还是可以的。所以最终还是决定使用先玩一玩Varnish。Varnish这个软件其实挺出名的。

    如果要说Varn[……]

    Read more

  • NDK开发的入门级总结

    = 392

    本文出自:【InTheWorld的博客】

    就在两天前,我对JNI或者NDK开发的了解基本都还处于Hello World水平。这两天花时间学习了一下,算是对NDK开发有了一些入门级的了解。所以我准备写这一篇博客,算是一个入门级的学习总结。鉴于目前的水平,这篇blog不会讨论到一些复杂的内容,仅仅是一些流程的理解和分析。

    • JNI和NDK的开发思路

    NDK听起来好像很神秘,但实质上就是Java调用C/C++代码的技术。考虑到JVM就是用C/C++写的,Java调用C/C++其实并没有本质上的难度。以前写过一篇关于Lua调用C扩展的博客,其实就和JNI的思路是差不多的,当然Java比Lua[……]

    Read more

  • RxAndroid解析

    = 283

    本文出自:【InTheWorld的博客】

    首先说明,RxAndroid其实并不是一个大项目,它更接近于一个RxJava在Android平台的一个补丁。不过这个霸气的名字却容易让人感觉这个一个平行的大项目。其实RxJava在Android上特殊性主要体现在UI线程的切换上,因为Android不允许普通线程更新UI。所以,RxAndroid的主要功能其实就是实现了AndroidSchedulers的功能。对于AndroidSchedulers这个类而言,我们最熟悉的用法便是AndroidSchedulers.mainThread()这个方法了。

    public final class Andro[......]

    Read more

第 1 页,共 5 页12345