- 博客(19)
- 资源 (3)
- 收藏
- 关注
原创 Spring总结
可参考:DispatcherServlet接收请求———找到HandlerExecutionChain(包括Handler对象及其拦截器)———委托HandlerAdapter去执行Handle(Controller方法)———执行Controller方法之前,HandlerAdapter会遍历注册的所有HandlerMethodArgumentResolver实例,检查它们是否支持当前方法的参数。
2024-09-14 11:24:48
941
原创 try-catch-finally、return、throw异常之间的执行顺序
try-catch-finally、return、throw异常之间的执行顺序。
2024-05-15 20:03:26
303
1
原创 数据中有emoji,导致插入不了数据库
前言前两天负责的系统,因为需要获取用户的昵称并进行入库,但是有个别用户的昵称中存在emoji表情,导致入库时报错。报错内容:java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x92\x94‘ for column问题原因Q:为什么我们设置表的的字符类型为utf8却不能存放emoji呢?A:因为我们UTF-8编码可能是2或3或4个字节,但mysql中的utf8是3个字节,存放一个emoji是需要4个字节的,自然不够。Mysql数据
2021-11-20 21:58:36
4639
2
原创 升级JDK8的坎坷之路
为更好的适应JAVA技术的发展,使用更先进及前沿的技术。所以推出将我们现在使用的JDK1.6(1.7)及tomcat6(7)升级至JDK1.8及tomcat8,使我们的系统获得更好的性能,更好适应未来及节约成本一、升级JDK8流程1、服务器JDK版本升级将JDK1.8版本安装到服务器上2、老系统升级时专用流程将老代码(1.6或1.7编译的)部署到升级的服务器上(JDK有向下兼容原则),灰度观察一段时间(但也有部分不兼容的内容)查看代码运行是否有问题JDK不向下兼容部分:https://www
2021-11-09 09:15:00
1774
原创 彻底解决SLF4J的日志冲突的问题
今天公司同事上线时发现,有的机器打印了日志,而有的机器则一条日志也没有打。以往都是没有问题的。因此猜测是这次开发间接引入新的日志jar包,日志冲突导致未打印。排查代码发现,系统使用的是SLF4J框架打印log4j2的日志。查看系统中引入的jar包发现果然有多个SLF4J的桥接包。于是排掉冲突jar包,然后上线时所有机器都正常打印日志先上一张关系图:SLF4J框架、各种具体日志实现以及相应桥接包的关系图一、起因由于线上系统要接入很多中间件,因此系统中会有各种各样的日志打印形式(例如:log4j2
2021-11-05 10:00:00
2946
3
原创 细数线程池五大坑,一不小心线上就崩了
系统性能优化的几种常用手段是异步和缓存。因此我们常常使用线程池异步处理一些业务。线程池的使用还是相对比较简单的,首先创建一个线程池,然后通过execute或submit执行任务。但魔鬼往往藏于细节之中,稍有不慎就会出错。本文将会详细总结线程池容易出错的五大坑一、拒绝策略参数知多少二、拒绝策略使用不当,系统阻塞不可用三、多任务get()异常时,结果获取有误四、ThreadLocal与线程池搭配使用,上下文缺失五、父子任务共用同一线程池,系统“饥饿”死锁以下为线程池的核心流程【具体内容参
2021-11-02 10:00:00
808
原创 实战 | 线程池的几种自定义扩展
下图为线程池的构造方法,我们可以自定义一些功能实现项目优化1、预先启动核心线程this.prestartAllCoreThreads();使用方式:自定义线程池的构造方法中调用作用:当真正任务被执行时,可以减少创建线程带来的性能损耗2、自定义线程池线程工厂官方提供的默认线程池工厂为Executors.defaultThreadFactory();我们可以仿照进行自定义扩展线程工厂,增加一些个性化功能。如下图所示,我们自定义线程池线程工厂时可以附加很多功能。1、定制化线程池内线程名称,便
2021-10-29 09:30:00
288
原创 线程池系列三:动态修改线程池队列大小
线程池中的队列要求的是阻塞队列,作用主要是当线程池处理任务能力不足时,队列存储多余的任务,从而起到削峰和缓冲的目的。可以选择的队列种类很多,如何选择合适的队列应用到自己的线程池中?就需要了解他们的优缺点,从而择优使用1、常见阻塞队列常见的阻塞队列都是以基于BlockingQueue的实现ArrayBlockingQueue一个基于数组结构的有界阻塞队列,此队列按 FIFO(先进先出)原则对元素进行排序。LinkedBlockingQueue一个基于链表结构的有界阻塞队列(不设置大小时,默认
2021-10-25 22:37:05
5517
原创 线程池系列二:一张动图,彻底懂了execute和submit
目录1、为线程池提交任务2、流程分解我们知道线程池通过execute方法执行提交的Runnable任务,但Runnable只是执行任务,没有返回任何信息。【线程池原理:线程池原来是个外包公司,打工人我悟了】若是我们想在异步执行完任务后能够拿到结果。怎么处理呢?我们可以借助Callable来回去返回结果。线程池为我们提供了另外一种方式执行任务,即submit方法1、为线程池提交任务 execute方法执行Runnable任务 .
2021-10-23 15:24:52
445
原创 常用日志框架及源码解析
常用日志框架及源码解析常用日志框架基础日志框架log4jlog4j2logbackJUL(java日志框架)日志框架集成JCL(有自己默认的日志,总会打印出日志)源码分析SLF4J(日志接口,无默认日志,必须搭配日志桥接器)源码分析SLF4J日志桥接器使用Slf4时如何桥接遗留的api引用常用日志框架基础日志框架log4j、log4j2、logback、JUL(java日志框架)日志框架集...
2019-03-28 18:19:28
1266
原创 easypoi注解导出Excel
pom.xmldependency> groupId>org.jeecggroupId> artifactId>easypoi-baseartifactId> version>2.3.1version>dependency>dependency> groupId>org.jeecggroupId> artifactId>easypoi-annota
2018-01-24 11:57:13
2519
转载 Map中提供的一个算法(提供一个值,返回大于等于该值的最接近的2的指数幂)
Map中提供的一个算法(提供一个值,返回大于等于该值的最接近的2的指数幂) eg:(例:5–>8;9–>16,16–>16)static final int MAXIMUM_CAPACITY = 1 << 30;/** * Returns a power of two size for the given target capacity. */ static fi
2017-12-01 11:26:10
462
原创 前端页面展示文字过长时用...代替
限制表table的变化,加上width限制宽度,在table上添加样式style="table-layout:fixed;"文字过长设置为省略号,展示字段商添加样式style="text-overflow:ellipsis;overflow:hidden;white-space:nowrap;"鼠标经过时展示内容使用title
2017-09-12 16:39:28
5781
原创 弹框遮罩层
<!--背景隐藏层--> <div class="back_con" style="display: none"></div><!--end背景隐藏层--><!--样式-->.back_con{ position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 9997;
2017-09-12 16:29:17
869
原创 使用AJAX的几种方式
普通形式的AJAXvar data={'id':id};jQuery.ajax({ type:'post', url:XXX, data:data, dataType:'json', cache:false, async:true, //true为异步,false为同步 success:function(data){}})
2017-09-04 21:46:04
441
VisualVM-216.dmg
2024-09-19
快速访问github的方式
2024-07-17
Veloeclipse.ui-2.0.8
2018-01-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人