Netty的TCP粘包/拆包(源码二)
摘要:假设客户端分别发送了两个数据包D1和D2给服务器,由于服务器端一次读取到的字节数是不确定的,所以可能发生四种情况: 1、服务端分两次读取到了两个独立的数据包,分别是D1和D2,没有粘包和拆包。 2、服务端一次接收到了两个数据包,D1和D2粘合在一起,被称为TCP粘包。 3、服务端分两次读取到了两个数
阅读全文
posted @
2016-12-09 00:54
松伯
阅读(598)
推荐(0) 编辑
Netty服务端与客户端(源码一)
摘要:首先,整理NIO进行服务端开发的步骤: (1)创建ServerSocketChannel,配置它为非阻塞模式。 (2)绑定监听,配置TCP参数,backlog的大小。 (3)创建一个独立的I/O线程,用于轮询多路复用器Selector。 (4)创建Selector,将之前创建的ServerSocke
阅读全文
posted @
2016-12-06 23:42
松伯
阅读(2133)
推荐(0) 编辑
NIO源码阅读
摘要:自己对着源码敲一遍练习,写上注释。发现NIO编程难度好高啊。。虽然很复杂,但是NIO编程的有点还是很多: 1、客户端发起的连接操作是异步的,可以通过在多路复用器注册OP_CONNECTION等待后续结果,不需要像BIO的客户端一样被同步阻塞。 2、SocketChannel的读写操作都是异步的,如果
阅读全文
posted @
2016-12-05 23:50
松伯
阅读(1404)
推荐(0) 编辑
数据集成中间件知识点总结
摘要:数据集成是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。 一、模型分类 (1)联邦式数据库系统(Federated Distributed Database System),这种分布式数据库的特点是结点自治和没有全局数据模式,每个结点所看到的数据模式仅仅限
阅读全文
posted @
2016-09-26 00:54
松伯
阅读(2458)
推荐(0) 编辑
XML编程知识点总结
摘要:DOM和SAX DOM的全称是Document Object Model,也即文档对象模型。基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合,应用程序挣是通过对这个对象模型的操作,来实现对XML文档数据的操作。 DOM接口提供了一种通过分层对象模型来访问XML文档信息的方式,这些分层
阅读全文
posted @
2016-09-22 11:25
松伯
阅读(438)
推荐(0) 编辑
读写hdfs文件(工作笔记)
摘要:应用场景为,读取hdfs上的文件,并转化成<k,v>形式存入内存。
阅读全文
posted @
2016-09-18 15:09
松伯
阅读(692)
推荐(0) 编辑
JAVA源码走读(二)二分查找与Arrays类
摘要:给数组赋值:通过fill方法。 对数组排序:通过sort方法,按升序。比较数组:通过equals方法比较数组中元素值是否相等。查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。 使用如下: 源码解析:package test; 今日太晚,明日再干~
阅读全文
posted @
2016-09-13 02:24
松伯
阅读(822)
推荐(0) 编辑
JAVA源码走读(一) HashMap与ArrayList
摘要:HashMap 一、HashMap基本概念: HashMap是基于哈希表的Map接口的实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Collectio
阅读全文
posted @
2016-09-13 01:21
松伯
阅读(393)
推荐(0) 编辑
Socket与Http方式解析发送xml消息封装中间件jar包
摘要:最近项目代码中太多重复的编写Document,不同的接口需要不同的模板,于是重写提取公共部分打成jar包,方便各个系统统一使用~ 提取结构: Http连接方式: Socket方式: package SocketClient; import java.io.DataInputStream; impor
阅读全文
posted @
2016-08-11 12:52
松伯
阅读(2116)
推荐(0) 编辑
java解析命令行参数(common-cli)练习
摘要:A class that implements the CommandLineParser interface can parse a String array according to the Options specified and return a CommandLine.
阅读全文
posted @
2016-07-10 22:52
松伯
阅读(2492)
推荐(0) 编辑
JDK1.7新特性
摘要:jdk1.7新特性 1 对集合类的语言支持; 2 自动资源管理; 3 改进的通用实例创建类型推断; 4 数字字面量下划线支持; 5 switch中使用string; 6 二进制字面量; 7 简化可变参数方法调用。 下面我们来仔细看一下这7大新功能: 1 对集合类的语言支持 Java将包含对创建集合类
阅读全文
posted @
2016-04-24 12:56
松伯
阅读(809)
推荐(0) 编辑
Java方法总结与源码解析(未完待续)
摘要:使用StringTokenizer去掉字符串中的空格 主要是通过st.hasMoreTokens实现的去除空格,那么我们观察下源码: public StringTokenizer(String str, String delim, boolean returnDelims) { currentPos
阅读全文
posted @
2016-04-23 23:22
松伯
阅读(327)
推荐(0) 编辑
LinkedHashMap的实现原理(复习)
摘要:1. LinkedHashMap概述: LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 LinkedHashMap实现与HashMap的不同之处在...
阅读全文
posted @
2015-12-10 20:53
松伯
阅读(270)
推荐(0) 编辑
HashMap 实现原理(复习)
摘要:1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,...
阅读全文
posted @
2015-12-09 23:10
松伯
阅读(202)
推荐(0) 编辑
JAVA基础知识
摘要:1. 什么是 Java 虚拟机?为什么 Java 被称作是 “ 平台无关的编程语言 ” ? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。 Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。 Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台
阅读全文
posted @
2015-12-01 23:41
松伯
阅读(327)
推荐(0) 编辑
二叉树的深度
摘要:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 递归函数以参数节点root为根节点的子树的深度 public class TreeNode { int val = 0; TreeNode left = null; TreeNo
阅读全文
posted @
2015-11-29 19:57
松伯
阅读(162)
推荐(0) 编辑
字符串的排列
摘要:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。public ArrayList Permutation(String str) { A...
阅读全文
posted @
2015-11-24 00:17
松伯
阅读(344)
推荐(0) 编辑
从上往下打印二叉树
摘要:从上往下打印出二叉树的每个节点,同层节点从左至右打印。使用两个队列,一个存放节点,一个存放值。将根节点加入到队列中,然后遍历队列中的元素,遍历过程中,访问该元素的左右节点,再将左右节点依次加入到队列中。public ArrayList PrintFromTopToBottom(TreeNode ro...
阅读全文
posted @
2015-11-22 20:41
松伯
阅读(285)
推荐(0) 编辑
栈的压入、弹出序列
摘要:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。import java.util.A...
阅读全文
posted @
2015-11-21 22:25
松伯
阅读(249)
推荐(0) 编辑
包含min函数的栈
摘要:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。public:/*入栈时,判断存放最小元素的栈是否为空,入栈元素是否小于存放最小元素栈的栈顶元素*/ void push(int value) { stacktemp.push(value); i...
阅读全文
posted @
2015-11-17 23:24
松伯
阅读(241)
推荐(0) 编辑