java
wuhulala
这个作者很懒,什么都没留下…
展开
-
BeanUtils.copyProperties 导致的 ClassCastException
static class Foo { private List<String> list; public List<String> getList() { return list; } public void setList(List<String> list) { ...原创 2019-11-28 22:11:44 · 1484 阅读 · 2 评论 -
忽然觉得java并发的锁的里面挺有意思的,等看完mybatis这里的就搞jdk并发包去
TODO原创 2019-11-28 20:20:52 · 137 阅读 · 0 评论 -
Java IO思维导图
对应的测试类 public static void main(String[] args) { String path = "D:" + File.separator + "data.txt"; File file = new File(path); try( FileReader fr = new FileReader(file);原创 2017-06-12 14:10:15 · 994 阅读 · 0 评论 -
java 日期转换校验
/** * 测试字符串转换日期(严格模式) * * Lenient => 宽容 * */ @Test public void testExactingDateFormat() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //S原创 2017-06-24 22:57:57 · 406 阅读 · 0 评论 -
集合学习--ArrayList 源码学习最终版
ArrayList add remove set 方法分析原创 2016-08-14 15:09:19 · 453 阅读 · 0 评论 -
集合学习--LinkedList学习最终版
ListLinkedList为什么用static class ?private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E element, Node<E> next) { this.item = e原创 2016-08-14 16:21:33 · 460 阅读 · 0 评论 -
集合学习--HashMap 源码初探
HashMap底层实现Hash的实现时数组加链表 如图所示 而hashMap我们每一次get 只获取 第一个值。初始容量和负载因子##因为put的时候可能需要做扩容,扩容会导致性能损耗,所以如果可以预知Map大小的话,可以设置合理的初始大小和负载因子来避免HashMap的频繁扩容导致的性能消耗。 默认为16与0.75put 源码public V put(K key, V value) {原创 2016-08-14 17:12:20 · 416 阅读 · 0 评论 -
集合学习--HashTable 源码初探
HashTable装填因子的定义α=表中填入的记录数哈希表的长度\alpha=\frac{表中填入的记录数}{哈希表的长度}线性探测再散列的哈希表查找成功时的成功查找长度Snl≈12(1+11−α)S_{nl}\approx\frac{1}{2}\left(1+\frac{1}{1-\alpha}\right)随机探测在再散列丶二次探测再散列丶再哈希的哈希表查找成功时的平均查找长度为Snr≈−1αl原创 2016-08-15 09:58:25 · 459 阅读 · 0 评论 -
Java由HashMap生成树形菜单/部门
1.获取部门列表2.根据部门的Id映射部门实体类先看下部门实体类public class TbEnterpriseDepartment { private int id; private String name; private int number; private int parentId; private List<TbEnterpriseDepartm原创 2017-01-15 16:35:59 · 2322 阅读 · 0 评论 -
JVM 字节码 (一) 加载和存储指令
本文主要讲load,store,const,push等字节码的实例即应用。声明局部变量并赋值源程序 int x = 2; int y = 3;字节码0 iconst_2 将常量(2)压入操作数栈中1 istore_1 将操作栈的值弹出,即常量(2)并赋值给第1个局部变量x2 iconst_3 将常量...原创 2018-02-20 11:22:44 · 1100 阅读 · 0 评论 -
原生NIO粘包拆包的一种解决方案
粘包/拆包解决思路我采用的是分割符的方法,后面固定”\r\n”,为分割符,,这样每一次读取到“\r\n”字符,就处理这个命令。如果本次读取的内容最后不是以”\r\n”结尾的呢,我会认为这个命令还没有完,用map保存本次的客户端地址与这次剩余的请求的映射关系,这样下次这个客户端再来请求的时候我会把这个请求拼接上去。具体实现可以看源码: https://github.com/wuhulala/nett原创 2017-11-26 17:30:58 · 1997 阅读 · 0 评论 -
Java 标准IO、直接IO、内存映射的访问磁盘区别点
标准IO 是通过new File的方式访问, 这种方式的访问会先把磁盘的文件缓存到操作系统层面,再有操作系统缓存到应用程序层面(Java程序层面),这种访问最慢。直接IO是略过操作系统层面,直接访问文件进行文件的读写,减少了磁盘缓冲到操作系统层面。Java中是由DirectByteBuffer,但是这种机制的缺点也是有的,对于没有做好一个好的程序缓存管理,或者一直需要读取新的文件的时候,还是需要直接原创 2017-10-21 21:57:16 · 2267 阅读 · 0 评论 -
nio 使用的都是直接内存吗?
前两天测试问了个问题,就是内存爆掉,排查原因是因为缓存东西太多,而他把缓存的东西读取到list中,每请求一次读取一次,没有释放掉导致内存溢出,本来还以为是请求过多是nio的原因。后来经过nio的socketChannel 和 ServerSocketChannel测试, 在配置jvm参数(-Xmx100M -Xms100M -Xmn30M)发现在客户端有5000不到的空连接的时候,会出现内存溢出,原创 2017-07-16 14:52:58 · 2970 阅读 · 0 评论 -
图解NIO(1) Buffer 与 Channel
众所周知的NIO的两个重要组件就是buffer与channel,那么他们是怎么相互传输数据呢。那么还支持多buffer => 单channel的转换原创 2017-05-22 19:23:30 · 583 阅读 · 0 评论 -
图解NIO(2) Selector and 聊天室
Selector可以拥有无限制个连接,当然在硬件承受范围之内。通过不断的轮询selectionKey查看当前的可操作的通道,也可以在注册到selector上面。也可以保存通道做一个点对点的聊天播放器。规定消息的格式,比如lisi:nihao 给李四发送消息nihao。 //保存姓名和网络地址(host:port)的一一对应关系 Map<String, SocketAddress> nameA原创 2017-05-23 21:08:13 · 458 阅读 · 0 评论