Content Table

zTree

zTree is an advanced jQuery ‘tree plug-in’. The performance is excellent, it is easy to configurw (with a full set of options), and has many advanced features (that usually only come with paid software).

zTree is open source and uses the MIT license.

主页是 http://www.treejs.cn

你刚才在淘宝上买了一件东西

你发现快要过年了,于是想给你的女朋友买一件毛衣,你打开了 www.taobao.com。这时你的浏览器首先查询 DNS 服务器,将 www.taobao.com 转换成 IP 地址。不过首先你会发现,你在不同的地区或者不同的网络(电信、联通、移动)的情况下,转换后的 IP 地址很可能是 不一样的,这首先涉及到负载均衡的第一步,通过 DNS 解析域名时将你的访问分配到不同的入口,同时尽可能保证你所访问的入口是所有入口中可能较快的一个 (这和后文的 CDN 不一样)。

你通过这个入口成功的访问了 www.taobao.com 的实际的入口IP地址。这时你产生了一个 PV,即 Page View,页面访问。每日每个网站的总 PV 量是形容一个网站规模的重要指标。淘宝网全网在平日(非促销期间)的PV大概是 16-25 亿之间。同时作为一个独立的用户,你这次访问淘宝网的所有页面,均算作一个 UV(Unique Visitor 用户访问)。12306.cn 的日PV量最高峰在 10 亿左右,而 UV 量却远小于淘宝网十余倍,这其中的原因我相信大家都会知道。

字节序 Endian

Endian 一词来源于乔纳森·斯威夫特的小说格列佛游记。小说中,小人国为水煮蛋该从大的一端(Big-End)剥开还是小的一端(Little-End)剥开而争论,争论的双方分别被称为 Big-Endians 和 Little-Endians。

1980 年,Danny Cohen 在其著名的论文 “On Holy Wars and a Plea for Peace“ 中为平息一场关于字节该以什么样的顺序传送的争论而引用了该词。

Endian 翻译为“字节序”,又称端序尾序。在计算机科学领域中,字节序是指存放多字节数据的字节(byte)的顺序,典型的情况是整数在内存中的存放方式和网络传输的传输顺序。Endianness 有时候也可以用指位序(bit)。

一般而言,字节序指示了一个 UCS-2 字符的哪个字节存储在低地址。如果 LSByte 在 MSByte 的前面,即 LSB 为低地址,则该字节序是小端序;反之则是大端序。在网络编程中,字节序是一个必须被考虑的因素,因为不同的处理器体系可能采用不同的字节序。在多平台的代码编程中,字节序可能会导致难以察觉的 bug

BIG Endian:最低位地址存放高位字节,可称高位优先,内存从最低地址开始按顺序存放(高数位数字先写)。最高位字节放最前面。

LITTLE Endian:最低位地址存放低位字节,可称低位优先,内存从最低地址开始按顺序存放(低数位数字先写)。最低位字节放最前面。

Big Endian 解释

最低位地址存放高位字节,可称高位优先,内存从最低地址开始按顺序存放(高数位数字先写)。最高位字节放最前面。

例如“汉”字的 Unicode 编码是 6C49。如果将 6C 写在前面,就是 big endian,如果将 49 写在前面,就是 little endian。

Java NIO Buffer

Java NIO 由以下几个核心部分组成:

  • Channel
  • Buffer
  • Selector

虽然 Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。
Buffer 缓冲区,以及缓冲区如何工作,是所有 I/O 的基础。所谓输入/输出讲的无非就是把数据移进或移出缓冲区。

滚动插件 Animation Scroll

AnimationScroll 是一个 jQuery 的滚动插件,支持很多缓冲动画效果

AnimateScroll is a jQuery plugin which enables you to scroll to any part of the page in styleby just calling the animatescroll() function with the Id or Classname of the element where you want to scroll to.

Basic usage: $('body').animatescroll();

可到 https://plugins.jquery.com/animatescroll/ 下载,主页为 http://plugins.compzets.com/animatescroll/

Dubbo Hello World

本文介绍 Dubbo 的入门程序:

  • Dubbo Provider: Dubbo + SpringMvc
  • Dubbo Consumer: Dubbo + JUnit

使用传统 RPC 时服务器之间是星形结构,紧耦合的,Dubbo (SOA) 时服务器之间通过调度中心调度,典型的中介者模式,实现了解耦,服务的注册和查找通过中心的 ZooKeeper 使用接口实现,不需要配置 URL,服务器之间互相不知道对方的存在。Spring Http Remote Invoker 也能实现远程方法调用,但是需要配置 URL,而且也是星形结构。

Spring Http 远程方法调用

Spring Http 远程调用 (Spring Http Remote Invocation) 是 Spring 提供的一种特殊的允许通过 HTTP 进行 Java 串行化的远程调用策略,支持任意 Java 接口,相对应的支持类是 HttpInvokerServiceExporter (服务器端) 和 HttpInvokerProxyFactoryBean (客服端)。

远程调用两部分:

  • 服务端
  • 客户端

调用逻辑: