Java
文章平均质量分 57
0li0
这个作者很懒,什么都没留下…
展开
-
Java Exception结构及思考
Java的异常结构:最顶层是Throwable接口,表示所有可以被抛出的内容往下是Error和Exception,Error代表的是非常严重的错误,JVM会直接宕掉,无法被修复;Exception代表异常,有的需要被捕获有的不需要被捕获;Exception下分为RuntimeException和其它Exception,RuntimeException是运行时异常,可以不需要被捕获,JVM...原创 2018-09-11 20:32:45 · 343 阅读 · 0 评论 -
JDK 8 try-with-resource的问题
JDK 7 try-with-resource实践原创 2018-10-22 14:32:13 · 2327 阅读 · 0 评论 -
Java循环日志
现在大多情况下都使用日志组件,比如log4j、log4j2,这些组件的好处是比较通用,同时鉴于软件开发中的拿来主义,尽量用现成的代码减小工作任务,同时公用的框架能避免自己花大量时间去测试,因为大家都在测试;另一方面,使用日志组件比较简单,只要配置配置就好了。但是要自己实现一个循环日志,或者想探究循环日志原理是什么,怎么去做呢本文基于Jdk8,记录实现循环日志的基本原理和测试代码。...原创 2018-10-25 15:05:57 · 969 阅读 · 0 评论 -
很棒的开源监控系统原理系列文章:UAV MOF工作原理之Agent注入机制原理
原文链接:https://mp.weixin.qq.com/s/eA6nuYPVvgoCWO4E3yP4BQ也可关注公众号:UAVStack智能运维大家好,UAVStack推送时间到~上月我们为大家介绍了UAVStack中的调用链技术,助力大家进行问题诊断和系统性能提升,希望大家有所收获;也可点击链接http://www.itdks.com/dakashuo/detail/16900观看相...转载 2018-11-07 10:28:22 · 344 阅读 · 0 评论 -
Java对象深度复制和序列化总结
经常会碰到对象复制的问题,这个问题比较基础,同时与JVM内存模型挂钩。实现Cloneable接口默认的clone方法是浅拷贝通过实现Cloneable接口的方式实现深度拷贝的方法是重写clone方法,并对当前对象内所有引用进行拷贝使用序列化方式可以简便实现深度拷贝参考文章:https://www.cnblogs.com/NaLanZiYi-LinEr/p/9192734.htmlh...原创 2018-11-07 11:58:04 · 832 阅读 · 0 评论 -
JS split使用
最近一直在实现新需求,其中碰到一个小问题,关于JS split的使用和Java中字符串的split使用没区分开,导致一个bug。在Java中如果分割符是正则表达式中的符号,那么以这个字符作分割时,需要添加转义,比如如果字符串以|分割,那么正确的写法是str.split("\|");正确示例: String str = "a|b|c"; String[] result = str...原创 2018-11-21 11:50:19 · 673 阅读 · 0 评论 -
【转载】java 性能优化:35 个小细节,让你提升 java 代码的运行效率
原文地址:https://www.cnblogs.com/Qian123/p/6046096.html满满的干货!前言代码 优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽...转载 2018-11-23 18:17:07 · 133 阅读 · 0 评论 -
Maven项目使用Hibernate简单案例
之前用过SPRING BOOT 带的JPA进行过数据库操作,一直没用过Hibernate和Mybatis, 这里记录下用eclipse build 一个使用Hibernate的maven项目。一个maven项目使用Hibernate主要有以下几步:使用eclipse创建一个maven project;pom.xml文件中引入Hibernate相关的包;hibernate-core是H...原创 2019-06-19 17:36:07 · 1606 阅读 · 0 评论 -
【转载】Hibernate常见知识点
转载自:https://www.cnblogs.com/Java3y/p/8535459.htmlHibernate工作原理及为什么要用?读取并解析配置文件读取并解析映射信息,创建SessionFactory打开Sesssion创建事务Transation持久化操作提交事务关闭Session关闭SesstionFactory使用Hibernate框架就不用我们写很多繁琐的S...转载 2019-06-20 11:13:24 · 119 阅读 · 0 评论 -
HashMap的put和get数据流程揭秘
本文是针对JDK1.8中的HashMap,之前以为已经懂的不错了,结果发现很多关键点没明白1. 先说HashMap的数据结构核心数据结构就三个:数组,链表,Tree数组Node<K,V> table数据就是个简单的Node数组,存放的是当前索引应第一个Node<K,V>对节点,或者是空(说明没有存放数据)链表如果挂在同一个索引下的数据Node个数小于变Tree...原创 2019-06-21 17:46:09 · 749 阅读 · 0 评论 -
java字节码解析学习
java字节码表java源码:public class TestByteCode { public static void test() { int a = 10; int b = 10; int c = (a+b)*10; System.out.println(c); } publ...原创 2019-06-25 17:33:32 · 426 阅读 · 0 评论 -
【转载】java7的异常处理新特性
原文地址:https://my.oschina.net/fhd/blog/324484前辈们非常给力!addSuppressed()方法开发人员对异常处理的try-catch-finally语句块都比较熟悉。如果在try语句块中抛出了异常,在控制权转移到调用栈上一层代码之前,finally语句块中的语句也会执行。但是finally语句块在执行的过程中,也可能会抛出异常。如果finally语句...转载 2018-10-22 14:17:07 · 171 阅读 · 0 评论 -
接口BlockingQueue分析以及实现多个接口时的一点问题
在java并发包中,每种阻塞队列BlockingQueue都有各自的特性,但是他们都是BlockingQueue的实现,因此分析并发包中的具体实现的BlockingQueue不如先了解BlockingQueue接口各方法的意义,然后具体分析某一个具体BlockingQueue队列实现,最后推及所有BlockingQueue的特性。 public interface BlockingDeq...原创 2018-10-19 19:05:08 · 160 阅读 · 0 评论 -
Java中接口、类的继承和实现小问题
以下这个问题其实是一个很low的问题,但确实很基础今天在看JDK源码中发现这一行代码:public interface BlockingDeque&lt;E&gt; extends BlockingQueue&lt;E&gt;, Deque&lt;E&gt; 奇怪了,大神写的,我没这样用过,接口可以多继承接口?经过实验,得出以下结论:1. 类只能继承一个类,可以实现多个接口;2. 接...原创 2018-10-19 17:05:55 · 160 阅读 · 0 评论 -
JAVA 线程池ScheduledThreadPoolExecutor中scheduleAtFixedRate和scheduleWithFixedDelay比较
一般知道Jdk中线程池ScheduledThreadPoolExecutor用来跑定时任务,注意到其中由两个方法scheduleAtFixedRate和scheduleWithFixedDelay,两方法的参数内容一样,方法名字也很像,含义也很像,它两有什么不同呢?public ScheduledFuture&amp;amp;lt;?&amp;amp;gt; scheduleWithFixedDelay(Runnable c...原创 2018-09-12 17:25:42 · 1289 阅读 · 0 评论 -
Java Iterator原理分析
所有Iterator都最终实现接口Iterator,Iterator接口中包含三个基本方法,next(), hasNext(), remove(),其中对于List的遍历删除只能用Iterator的remove方法;JDK1.8中Iterator接口的源码如下:public interface Iterator&amp;amp;amp;amp;lt;E&amp;amp;amp;amp;gt; { boolean hasNext(); /..原创 2018-09-11 20:28:04 · 7570 阅读 · 0 评论 -
ConcurrentHashMap弱一致性迭代器Iterator
之前查看ArrayList中迭代器实现源码,明白为啥通常用的迭代器在迭代的过程中不能作add和remove操作。但在支持并发数据结构的情况下,还会存在这种情况吗?答案是不会,少见多怪了,util包中的迭代器实现是fast-failed迭代器,说白了就是一旦由修改就抛异常,在current包中迭代器是弱一致性迭代器,原来两种迭代器情况不一样。测试代码用以ConcurrentHashMap为例...原创 2018-09-13 16:38:59 · 5014 阅读 · 3 评论 -
ScheduleThreadPoolExecutor线程池分析
ScheduleThreadPoolExecutor是官方推荐的取代Timer作定时任务的线程池,在研究ScheduleThreadPoolExecutor过程中发现此线程池无论什么时候都只会有核心线程数coreSize个线程在工作。这样就有个问题,如果任务较为繁重的情况下,或者单个任务执行时间较长的情况下,是否需要调整coreSize的大小。先从ScheduleThreadPoolExecu...原创 2018-09-19 19:43:57 · 2730 阅读 · 0 评论 -
记单例模式double check的正确写法及相关思考
今天读了一篇关于单例模式中Double Check的文章,初始有些疑惑,后来串起来一些知识,理一下对单例模式的一点理解。单例模式要求对象在全局范围内只能存在一个,故此实现单例模式有三个重要的点:构造方法私有化,保证此类不能外部初始化;静态并且私有的单例对象,保证此对象内部初始化时只有一个;静态并且公有的获取单例对象方法, 保证对外提供此单例的获取途径;以下为最简单的单例模式实现方法(...原创 2018-09-26 15:26:02 · 1519 阅读 · 0 评论 -
记RSA非对称加密RSAUtil包分享
本类结合了网上各种资源整合而成,可以生产RSA密钥对,解析公钥私钥,公钥加解密,私钥加解密。RSAUtil.javaimport java.security.InvalidKeyException;import java.security.InvalidParameterException;import java.security.KeyFactory;import java.secur...原创 2018-09-26 17:49:15 · 1008 阅读 · 0 评论 -
JSK1.8 String类部分关键源码分析
本文基于JDK1.8中的String类,看源码时无意发现String类中几个比较有意思的地方,特此记录下。String类的两个重要属性,final的字符数组和int的hash值,还有序列化相关的两个字段,这里不写;final char value[]初始化后将是不可以变的,与String类的final关键字相呼应,保证的字符串的不变性;特别是在初始化字符串对象时,如果常量池中存在该字符串,可以...原创 2018-09-27 12:09:07 · 178 阅读 · 0 评论 -
Java ThreadLocal源码解析: Thread和ThreadLocal
之前对TreadLocal有所理解,对原理也有所了解,但一直不深入,重新整理,希望借以加深理解和印象。在Jdk1.8中,ThreadLocal相关代码主要分为三部分:Thread,其中Thread中保存对ThreadLocal.ThreadLocalMap的引用,作为Thread类的default属性;ThreadLocal,类似于线程中的T和readLocal.ThreadLocalMa...原创 2018-09-30 12:03:11 · 224 阅读 · 0 评论 -
Java ThreadLocal源码解析: ThreadLocalMap
ThreadLocalMap在比其中Thread和ThreadLocal部分要复杂很多,是ThreadLocal底层存储和核心数据结构。从整体上将,ThreadLocalMap底层是Entry数组,key值为ThreadLocal的hash code, 采用线性探测法解决哈希冲突。以下是ThreadLocalMap核心属性和方法,所有方法和属性都标识为private,仅为ThreadLocal可...原创 2018-09-30 15:31:59 · 198 阅读 · 0 评论 -
Queue接口分析:add和offer区别,remove和poll方法到底啥区别
往队列中添加元素有两个方法,分布是add和offer方法,两者的入参和返回值都一样,或许很多同学都奇怪,为什么,要有这两个功能类似(都是添加元素),但方法名不一样的方法,看看源码的注释以下为Queue接口中方法定义:```public interface Queue<E> extends Collection<E> { /* * add方法,...原创 2018-10-19 16:42:59 · 6431 阅读 · 0 评论 -
为什么不要用select *
主要从以下几个角度:1. 程序变更问题,出现不可以预知隐患;假设某一天修改了表结构,如果用select *,返回的数据必然会会变化,客户端是否对数据库变化作适配,是否所有地方都做了适配,这都是问题。2. 性能问题a. 使用了select ,必然导致数据库需要先解析代表哪写字段,从数据字段中将*转化为具体的字段含义,存在性能开销;b. 不可能对所有字段建索引,在索引优化必然会有局限性,导致...原创 2019-06-28 10:25:07 · 4294 阅读 · 4 评论