java
文章平均质量分 59
_再见阿郎_
这个作者很懒,什么都没留下…
展开
-
java线程池正确使用姿势
有哪些常见线程池类型以使用工具类 Executors 进行创建线程池为参照// FixedThreadPool 固定线程数池public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS,原创 2021-05-08 21:47:59 · 352 阅读 · 0 评论 -
java注解继承(来自源码的解答)
事情的经过是,某天突然对注解继承有点兴趣,于是面向搜索引擎准备解惑下,发现网上都是自己写的例子然后给出结论,而且例子也没有完全覆盖一些情况。于是翻找Java源码得出了以下的输出。Inherited 类是元注解类,只能修饰注解。英文说明的第一大段大致意思是:会沿着子类一直找到Object类,把标记为@Inherited的注解信息全部拿到。简单来说标记为@Inherited注解的父类,注解信息就会继承到子类。第二大段是说:该@Inherited只有标记类的时候才有效果。而且该注解只对父类上的注解有效果,对原创 2021-02-07 00:37:43 · 649 阅读 · 1 评论 -
synchronized是公平锁还是非公平锁
synchronized是公平锁还是非公平锁原创 2020-06-09 14:30:58 · 8579 阅读 · 0 评论 -
tcc-transaction避坑指南
tcc-transaction避坑指南原创 2020-05-30 10:53:23 · 8389 阅读 · 0 评论 -
tcc-transaction深入理解
分析的项目为https://github.com/changmingxie/tcc-transaction在项目为dubbo搭配使用,因此全文是在dubbo服务环境进行分析。首先tcc如何实现分布式服务的事务一致性的,配置使用的指南中,主要通过Compensable注解开始,首先找到注解的切面,有两个切面,tcc-transaction-spring 的 tcc-transaction.xml配置如下: <!-- 初始化compensable事物切面 --> <bea.原创 2020-05-29 18:48:40 · 8696 阅读 · 0 评论 -
HashSet为什么要设置PRESENT
直接进入正题,HashSet是通过组合模式,使用HashMap的key是不重复的来实现HashSet中的元素是不重复的,遍历时为该map对象的keySet()即map的key集合。而HashMap通过hash函数和key实现,具体实现见HashMap,篇幅有限这里就不展开说明了。以下为HashSet的源码,HashSet有一个全局唯一的PRESENT指向的Object对象,add的时候使用其作为map的value。现在有疑问的地方就是,这里为什么不用null来代理PRESENT比直接使用new Ob原创 2020-05-29 09:49:27 · 2726 阅读 · 0 评论 -
内部类实现懒汉模式下的单例
双重检查(double-check)实现对象单例懒加载,虽然能够实现逻辑,由于使用了同步锁、volatile关键字,代码和理解过程较为复杂,因此还写了一篇梳理其相关逻辑的文章,从评论能看出来大家对代码的用法见解各不同,链接如下https://blog.csdn.net/FU250/article/details/79721197,由此可见其理解复杂度,那能不能有更简洁的方式实现单例懒汉模式加载呢...原创 2019-09-25 10:09:15 · 11427 阅读 · 0 评论 -
html2pdf使用总结
起源:项目中用到使用html转pdf功能,将开发过程中,几个主要功能提炼出来,分享给大家并有github例子,clone下来配置好jdk就能直接跑例子,代码和逻辑也超简单,一看就能明白。环境配置:jdk1.8.0_77 idea win10htmlpdf版本如下<dependencies> <dependency&...原创 2019-08-12 15:19:03 · 25243 阅读 · 1 评论 -
linux下tomcat服务器添加远程调试配置
1.进到tomcat的bin目录下,敲命令vim catalina.sh,编辑catalina.sh文件,添加以下参数:CATALINA_OPTS='-agentlib:jdwp=transport=dt_socket,address=2222,suspend=n,server=y'重启即可,监听的端口需要确保不被占用,否则启动报错。2.本人使用idea进行远程调试,配置操作如下...原创 2018-11-30 09:38:08 · 16403 阅读 · 1 评论 -
Java字节码简介(Introduction to Java Bytecode)
本文为译文,原链接地址Introduction to Java Bytecode,首先感谢原文作者。跟随本篇文章深入研究JVM内部结构和java字节码,你将会知道如何分解你的文件进行深入检查。 对于一个经验丰富的开发人员阅读java字节码也是非常枯燥的事情。首先我们要弄清楚我们为什么需要知道如此底层的东西?上周有一个能应用简单的场景:很早以前我作了代码修改,编译至jar包中并部署到服...翻译 2018-07-05 17:34:08 · 20883 阅读 · 0 评论 -
String[]转换为list<Integer>
public static void main(String[] args){ String moreBidIds = "2,34,100"; List<Integer> ids =Arrays.stream(moreBidIds.split(",")).map(s->Integer.parseInt(s.trim())). collect(Coll...原创 2018-04-19 14:43:56 · 3814 阅读 · 0 评论 -
mybatis如何接受set集合参数
起因:在实际开发中我们使用list进行范围查询,一般已知list集合中的数据为不重复的数据,如果集合中的数据重复概率较大于是采用set集合去除重复的参数,再进行范围查询。现在问题是,调用以下方法,parameter直接传递set集合时,如下:Set<Integer> set = new HashSet<>();set.add(2),set.add(3),return ...原创 2018-04-19 11:01:06 · 25037 阅读 · 5 评论 -
Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的。现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应。第一:介绍Dubbo背景大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均转载 2016-01-29 13:37:06 · 520 阅读 · 0 评论 -
The user specified as a definer ('gw_db_user'@'%') does not exist异常分析
异常信息如下:2017-02-07 15:25:38,679 DEBUG java.sql.Connection - {conn-103263} Preparing Statement: SELECT FUNC_GETCHARGE(?,?) as money from dual 2017-02-07 15:25:38,679 DEBUG java.sql.Prepare原创 2017-02-14 09:56:57 · 860 阅读 · 1 评论 -
intellj idea 如何设置类头注释和方法注释
intellj idea 如何设置类头注释和方法注释 intellj idea的强大之处就不多说了,相信每个用过它的人都会体会到,但是我们也会被他的复杂搞的晕头转向,尤其刚从eclipse转过来的童鞋,相信刚开始的那段经历都是不堪回首的,我也是一步步这么走过来的。 今天讲的一个主题是如何实现类似eclipse的Code Templates转载 2017-05-26 10:18:09 · 477 阅读 · 0 评论 -
oauth2添加get请求方式获取token
oauth2通过/oauth/token接口请求获取token,以下为oauth2源码中获取token代码能看到allowedRequestMethods中只存放了post的请求所以默认为只支持post请求。 但我们需要通过get请求或者别的请求去访问怎么实现呢?例如nigix做域名跳转时,默认将post的请求更改为get请求,这个时候/oauth/token就获取不到token了。private原创 2017-06-16 10:26:35 · 21291 阅读 · 2 评论 -
freemarker使用String模板进行渲染展示
我们使用freemarker常用写法为配置请求的html等静态页面路径地址方式,从而获取页面渲染数据并进行展示,以下为freemarker官网上的测试例子,详细见官网链接。import freemarker.template.*;import java.util.*;import java.io.*;public class Test { public static void main(S原创 2017-06-14 13:59:04 · 6093 阅读 · 0 评论 -
使用freemarker实现静态模板维护及动态内容展示案例
1.需求: 例如各类网站上的用户展示对应的合同,不同用户使用的合同模板一样,只是用户信息不一样,静态模板可在后台进行维护操作;用户在前台进行查看时将用户的信息动态渲染到静态模板上再到前台进行展示。 分解需求以上需求有两个技术重点 a.静态模板管理维护。 b.参数数据动态渲染。 2.技术分析: 使用freemarker实现,主要使用到了其渲染机制,参数${name}可以动态获取并渲染成原创 2017-10-10 16:05:13 · 10566 阅读 · 0 评论 -
session机制详解
虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术。本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答。 一、术语session 在我的经验里,session这个词被滥用的程度大概仅次于transacti转载 2018-02-01 14:06:57 · 1111 阅读 · 0 评论 -
阿里java规范手册总结
本文总结一些常见编码注意问题,每条规范来自各个模块,所以序号有点凌乱,一些简单及很少用的规范没有进行收录,具体的规范可见文末阿里java规范.pdf,进行下载详细阅读OOP规约7.【强制】所有的相同类型的包装类对象之间值的比较,全部使用equals方法比较。 说明:对于Integer var = ? 在-128至127范围内的赋值,Integer对象是在IntegerCache.cache产生,会...原创 2018-03-26 14:16:25 · 507 阅读 · 0 评论 -
双重检查单例为什么要加volatile
前言 单例模式是开发中常见应用模式,在实际开发中一个实例只需创建一次就能满足使用要求,我们选择使用单例模式,避免不必要的内存消耗。先简单介绍下双重检查单例模式是什么,代码如下:public class Single { private Factory factory; public Factory getFactory(){ if (factory == null){/原创 2018-03-28 00:50:28 · 5519 阅读 · 17 评论 -
java继承深入解析
最近在进行知识回顾的时候发现很多知识只是了解了如何去使用,根据what、why、how去分析发现why(为什么)和how(怎么是)层次理解薄弱。 java的特点之一继承,大家都知道什么是继承和为什么要用继承,但是java中怎么实现的继承呢? 子类对象中会保存一个实例对象的引用super,该引用指向其父类。 在实际的方法调用时,java会先在当前类的对象中寻找名称相同的方法,如果没有,就到supe原创 2015-11-29 22:18:48 · 604 阅读 · 0 评论