java
Vencent Kim
好好的活,记录每一份情感和想法,每一个行为,并思考为什么,不断优化自己
展开
-
怎样让多个版本的JDK在系统环境中被不同依赖软件识别
在PATH变量里加入JDK的bin目录,高版本JDK在前,低版本在后原创 2014-08-26 22:39:13 · 723 阅读 · 0 评论 -
Unable to open debugger port (127.0.0.1:59842): java.net.BindException "Address already in use: JVM
今天用IDEA 在dubug模式启动tomcat应用时,报这个错Unable to open debugger port (127.0.0.1:59842): java.net.BindException "Address already in use: JVM。杀掉IDEA进程和jvm进程即可...原创 2017-10-18 10:45:20 · 3403 阅读 · 0 评论 -
关于HashMap要知道的事
HashMap数据结构底层使用了数组+链表。如果,链表的长度大于等于8(TREEIFY_THRESHOLD)了,则将链表改为红黑树,这是Java8 的一个新的优化。if (binCount >= TREEIFY_THRESHOLD - 1) // -1 for 1st treeifyBin(tab, hash);当发生 哈希冲突(碰撞)的时候,HashMap 采用 拉链法...原创 2018-12-19 18:29:05 · 180 阅读 · 0 评论 -
常用lambda写法整理
将list输出为逗号拼接的字符串(使用String的API):List<String> cities = Arrays.asList("Milan", "London", "New York", ...原创 2018-12-26 15:38:06 · 2275 阅读 · 0 评论 -
分页(Oracle)
分页Oracle分页一般写法select * from ( select rownum rn,a.* from ( select * from table_name ) a where rownum <= 25) where rn >= 1最内层的select * from table_name是不经过分页的原...原创 2018-12-24 10:11:39 · 422 阅读 · 0 评论 -
深入理解hash
哈希哈希 其实是随机存储的一种优化,先进行分类,然后查找时按照这个对象的分类去找。哈希通过一次计算大幅度缩小查找范围,自然比从全部数据里查找速度要快。哈希函数哈希函数是一种映射关系,根据数据的关键词 key ,通过一定的函数关系,计算出该元素存储位置的函数。常见的哈希函数:重温数据结构:哈希 哈希函数 哈希表hash算法原理详解为什么大部分 hashcode 方法使...原创 2018-12-19 10:48:18 · 315 阅读 · 0 评论 -
JavaAgent实验
agent使用场景:当类加载时希望对类进行修改或者增强,又不影响类的代码。具体场景:监控,热部署,运行pojie程序 比较agent的使用(参考探秘-Java-热部署三(Java-agent-agentmain)):premain:优点:可以在启动的时候,通过参数指定,在类加载前进行操作缺点:只能在启动的时候指定参数,不够优雅;加载之后修改需要重新创建类加载器。或者在自...原创 2019-01-02 14:53:26 · 339 阅读 · 0 评论 -
从Object.wat()方法看JNI及native方法底层调用逻辑
前言早上debug join方法的时候,其内部调用wait方法,wait是Object中的native方法,但是在ClassLoader类中的findNative中打断点,不会进去断点。然后想了一下,是不是因为Object是Bootstrap类加载器加载的原因。那么怎么才能知道native调用的到底是什么方法呢?在网上搜索"Java如何查看native方法的实现",没有搜到可用的内容。...原创 2019-01-07 15:07:36 · 512 阅读 · 0 评论 -
agentmain 使用过程中的坑,看看你有没有遇到
com.sun.tools.attach.AttachNotSupportedException: no providers installed我出现这个报错,是因为我引的包有问题,本地装了jdk的话,可以这样引用tools.jar<dependency> <groupId>com.sun</groupId> <artifactId>t...原创 2019-01-03 12:23:48 · 8804 阅读 · 3 评论 -
JavaAgent源码分析
先上测试代码:业务代码模拟AccountMain.javapackage com.rong.kim.agenttest;import com.rong.kim.common.Lion;public class AccountMain { public static void main(String[] args) throws InterruptedException...原创 2019-01-03 18:06:59 · 1357 阅读 · 0 评论 -
从MemCache到一致性哈希算法
MemCache的官方网站为http://memcached.org/源码地址:https://github.com/memcached/memcached依赖libevent, http://www.monkey.org/~provos/libevent/ (libevent-dev) libseccomp, (optional, experimental, linux) - en...原创 2019-01-14 08:28:30 · 200 阅读 · 0 评论 -
(转)从一道面试题开始说起 枚举、动态代理的原理
原文链接https://blog.csdn.net/lmj623565791/article/details/79278864 按照作者的思路,可以分析一波jdk了转载 2018-09-30 14:13:21 · 239 阅读 · 0 评论 -
代理模式三:CGLib动态代理
回顾:上一篇代理模式二:Java动态代理介绍了JDK动态代理,使用Proxy.newProxyInstance生成代理类对象,使用InvocationHandler接口定义回调,但是存在一个局限性,JDK动态代理不能代理没有实现任何接口的类。CGLib可以。先看看CGLib怎么用的。1、定义一个类,不实现任何接口,如下:package aop.demo4;public class...原创 2018-10-08 17:19:44 · 639 阅读 · 0 评论 -
StringBuffer使用equals方法比较字符串内容总是返回true
老哥,点进去equals方法看源码吧,StringBuffer没有复写Object的equals方法,所以你懂得。。。原创 2018-05-04 13:34:33 · 581 阅读 · 0 评论 -
Effective Java 第二版读书笔记 (二) 引言部分
引言介绍了书的目的,行文逻辑,名词约定,大概内容,阅读方式本书目标帮助读者最有效的使用Java语言和基本类库。主要是java.lang、java.util,包括部分java.util.concurrent和java.io这本书更像一本参考书,通读全文后,也不需要刻意记忆细节,在写代码时,遇到有疑问的地方可以回头来翻阅。书中的10章内容(除了引言),都是相对独立的,不需要从头读到尾,刻意...原创 2018-08-05 21:25:56 · 180 阅读 · 2 评论 -
Freemarker深入解析
一:创建一个Configuration实例// Where the application is initialized; in general you do this ONLY ONCE in the application life-cycle! Configuration cfg = new Configuration(); cfg.setSomeSetting(......原创 2018-08-28 15:56:21 · 2432 阅读 · 2 评论 -
与第三方交互问题
与第三方接口交互,发消息过去,但是对方系统挂了。我们是异步发送消息,起一个线程做这个事情,发送使用的是httpclient应该在自测阶段,出方案应对这类问题...原创 2018-09-04 15:21:13 · 841 阅读 · 1 评论 -
Java基础拾遗1
跟着https://github.com/JeffLi1993/java-core-learning-example这个项目学习。主题:对象浅拷贝和深拷贝重要程度:不重要(相对于面试来说),了解应用场景,基本原理,用的时候调用api即可应用场景:代码分层后,各层交互的对象有一些是属性相同的,当需要复制时,需要用到拷贝方法。比如前段传过来的dto会被转为do或者vo相关工具:DozerBe...原创 2018-09-10 16:35:23 · 142 阅读 · 0 评论 -
对象的克隆——原型模式阅读笔记
参考:https://blog.csdn.net/LoveLion/article/details/7424559https://github.com/quanke/design-pattern-java-source-codehttps://gof.quanke.name原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。...原创 2018-09-10 17:07:52 · 154 阅读 · 0 评论 -
手动刷新缓存
缓存一般都是如下的结构if(cache.get(targetKey) == null){ cache.put(targetKey,targetObject); } return cache.get(targetKey);先从缓存里面取数据,缓存里面没有,即没有命中缓存,就去请求新的数据,然后保存到缓存;如果缓存有数据,就直接返回。缓...原创 2018-09-07 11:24:35 · 2208 阅读 · 0 评论 -
深入理解Java中的异常
推荐参考:1. JavaDoc 中搜索Throwable2. Java异常封装(自己定义错误码和描述,附源码)3. stackoverflow上的解释4. Kotlin 和 Checked Exception引言:在看Spring mvc源码,看到initWebApplicationContext方法,接着就看到边界检查,方法体抛出异常IllegalStateExcept...原创 2018-09-13 17:08:07 · 258 阅读 · 0 评论 -
代理模式一:初识代理模式
代码分析//公共接口interface Subject { //公共方法 void request();} //委托类class RealSubject implements Subject { //委托类的request逻辑 @Override public void request(){ System.out.prin...原创 2018-10-06 10:07:22 · 198 阅读 · 0 评论 -
代理模式二:Java动态代理
Java动态代理基于jdk1.8.0_1721、定义一个公共接口Greeting.java:package aop;public interface Greeting { void sayHello(String name);}2、定义真实业务逻辑类GreetingImpl.java,实现Greeting接口,重写sayHello方法:package a...原创 2018-10-06 11:21:48 · 346 阅读 · 1 评论