
java
我爱双面奶
每天进步一点点
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HashSet
HashSet 是 Set接口的经典实现,它按Hash算法来存储集合中的元素,因此具有很好的存储和查找性能。HashSet是基于HashMap实现的,HashSet中的元素都存放在HashMap的key上面,而value中的值都是统一的一个private static final Object PRESENT = new Object();。HashSet跟HashMap一样,都是一个存放链表的数组原创 2017-09-23 15:48:08 · 5972 阅读 · 0 评论 -
中缀表达式转前缀表达式java实现
中缀表达式转前缀表达式java实现 准备知识: 前缀、中缀、后缀表达式 http://note.youdao.com/noteshare?id=c27a0ee6222c18ec60cf5bb2154b0744&sub=4CEC6E1E196B4B228839B9220F9F673C 前缀、中缀、后缀表达式和二叉树的关系 http://note.youdao.com/noteshare?id...原创 2019-06-25 17:08:08 · 5501 阅读 · 0 评论 -
Java中加载类并不一定初始化
假设有class Student 一、加载类不初始化的情况 Test.class.getClassLoader().loadClass("Student"); Class clazz = Student.class; 这两种情况下,加载类,但是不会“链接“和”初始化” 通过命令:java -verbose:class test查看类加载器加载类情况可知类被加载了。 但是这个类的静态属性在方法区...原创 2019-06-25 19:04:13 · 5577 阅读 · 0 评论 -
ArrayList中迭代器(Iterator)源码解析
一、迭代器接口(java.util.Iterator) JDK中的定义:对 collection 进行迭代的迭代器。 Iterator取代了 Java Collections Framework 中的 Enumeration。 Iterator与Enumeration有两点不同: 迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection 移除元素。 方法名称得到了改进。...原创 2019-06-25 19:11:18 · 5459 阅读 · 0 评论 -
逃逸分析
一、逃逸分析 逃逸分析的作用:分析对象动态作用域。 逃逸分析的对象:方法中的变量。 逃逸分析的分类: 方法逃逸:一个对象在方法中定义后,他可能被外部方法所引用,譬如作为调用参数传递到其他方法中,称为方法逃逸。 线程逃逸:一个对象在方法中定义后,他可能被外部线程所访问,譬如赋值给类变量或可以在其他线程中访问到的实例变量,称为线程逃逸。 二、逃逸分析带来的优化 当证明一个对象不会逃逸到...原创 2019-06-25 20:56:12 · 4811 阅读 · 0 评论 -
匿名内部类的参数需用使用final修饰
一、闭包 一个依赖于自由变量的函数 处在含有这些自由变量的一个外围环境 这个函数能够访问外围环境里的自由变量 **内部类:**通过包含一个指向外部类的引用,做到自由访问外部环境类的所有字段,变相把环境中的自由变量封装到函数里,形成一个闭包。 二、匿名内部类实现 匿名内部类通过capture-by-value实现的,就是会将局部变量拷贝一份到匿名类中,在匿名类中要update只能updat...原创 2019-07-15 21:12:50 · 3903 阅读 · 1 评论 -
高并发请求处理流程
一、概述 普通业务场景我们可能会通过唯一索引、insertOrUpdate之类的操作保证数据的准确性,但是当并发起来会大量唯一索引报错,会导致mysql CPU上涨导致整个数据源崩溃; tip:可以通过先查后插操作,降低唯一索引报错的情况,但是不能根本解决问题; 二、高并发请求处理流程 前端过滤无效请求,避免大量无效请求到达后端,占用cpu资源; 网关再次对恶意请求进行过滤,比如重复ip大量...原创 2019-07-18 19:02:18 · 4287 阅读 · 0 评论 -
网络IO 零拷贝解析
一、传统网络IO(read/write方式) 场景:将一张本地图片展示给用户,首先将本地图片从磁盘中拷贝出来放到内存buffer中,然后将这个buffer通过socket传递给用户,这个过程抽象成下面的过程: read(file, tmp_buf, len); write(socket, tmp_buf, len); 首先调用read将本地图片,读取到jvm内存中,然后调用write将jvm内存...原创 2019-08-07 14:45:07 · 710 阅读 · 0 评论 -
Java常用获取类加载器的三种方式和区别
一、获取类加载器的三种方式 //获取当前类的加载器 ClassLoader classLoader = Test.class.getClassLoader(); //获取当前线程上下文类加载器 ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); //获取系统类加载器 ClassLoader...原创 2019-09-02 18:05:02 · 2793 阅读 · 0 评论 -
Swing监听器(ActionListener)中观察者模式源码解析
switch源码解析---jdk1.8 一、switch介绍 switch (表达式) { case 常量表达式或枚举常量: 语句; break; case 常量表达式或枚举常量: 语句; break; ...... default:...原创 2019-06-25 16:54:44 · 4782 阅读 · 0 评论 -
Thread源码解析---创建线程流程、start()之后回调run()方法流程
一、线程的两种创建方式 继承Thread类:通过new MyThread();无参构造方法创建对象;【MyThread是Thread类的继承类】 实现Runnable接口:通过new Thread(new MyThread());有参构造方法创建对象;【MyThread是Runnable接口的实现类】 二、Thread源码创建Thread对象流程 无参构造方法和有参构造方法:两个...原创 2019-06-25 16:39:34 · 4958 阅读 · 0 评论 -
web.xml文件详解
前言:一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程。web.xml主要用来配置Filter、Listener、Servlet等。但是要说明的是web.xml并不是必须的,一个web工程可以没有web.xml文件。 1、WEB工程加载web.xml过程 经过个人测试,WEB工程加载顺序与元素节点在文件中的配置顺序无关。即不会因为 filter...转载 2017-08-09 16:00:28 · 5828 阅读 · 1 评论 -
Maven包冲突排查思路
maven 树 命令:mvn dependency:tree 结果:groupId:artifactId:version [INFO] +- com.jd.ads.union.mng:union_mng-auth:jar:1.0.3-SNAPSHOT:compile [INFO] | +- com.jd.common:sso-uim-spring:jar:1.0.0-SNAPSHOT:com...原创 2018-12-05 16:31:49 · 4815 阅读 · 0 评论 -
java中JDK SPI源码解析
一、SPI概述 SPI全称是Service Provider Interface,是一种服务发现机制,用于被第三方实现或者扩展的API JDK SPI的使用: 在META-INF/services目录创建一个以"接口全限定名"为命名的文件,内容为接口"实现类的全限定名" eg: 文件名:com.union.jd.SpiService 文件内容: com.union.jd.ASpiServi...原创 2019-09-02 18:07:07 · 331 阅读 · 0 评论