Java程序设计
文章平均质量分 54
西兰花不蓝
自信且松弛,自律且坚定,自省且突破。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Zstandard压缩算法
Zstandard(缩写为zstd)是一种开源的无损数据压缩算法,主要设计目标是提供高比率的压缩和快速的解压缩速度。它由Yann Collet开发,并于2015年首次发布。原创 2025-01-10 23:46:21 · 952 阅读 · 0 评论 -
Guava防击穿回源-异步防击穿
使用Guava的结合异步加载机制(如)可以有效防止缓存击穿问题。通过确保同一时间只有一个线程加载数据,其余线程等待并共享加载结果,可以大幅减少后端数据源的压力,提高系统的稳定性和性能。同时,结合异步编程的优势,可以提升系统的响应速度和用户体验。根据具体业务需求,开发者可以进一步优化缓存策略,结合其他技术手段,构建高效、健壮的缓存系统。原创 2024-10-20 22:19:06 · 962 阅读 · 0 评论 -
下游依赖上游
上面的例子有三个步骤:收集部件、组装部件、喷漆。下游一定是依赖上游的。原创 2021-11-22 11:05:29 · 279 阅读 · 0 评论 -
多线程下IO密集型和cpu密集型对比总结
CPU密集型一个计算为主的程序(专业一点称为CPU密集型程序)。多线程跑的时候,可以充分利用起所有的cpu核心,比如说4个核心的cpu,开4个线程的时候,可以同时跑4个线程的运算任务,此时是最大效率。但是如果线程远远超出cpu核心数量 反而会使得任务效率下降,因为频繁的切换线程也是要消耗时间的。因此对于cpu密集型的任务来说,线程数等于cpu数是最好的了。IO密集型如果是一个磁盘或网络为主的程序(IO密集型)。一个线程处在IO等待的时候,另一个线程还可以在CPU里面跑,有时候CPU闲原创 2021-10-19 04:38:18 · 891 阅读 · 0 评论 -
MAT分析内存简述
工具准备下载MAT工具:http://www.eclipse.org/mat/安装原创 2021-05-30 19:19:58 · 764 阅读 · 1 评论 -
Excel操作的工具类
package util;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.File;.原创 2021-03-20 16:37:37 · 192 阅读 · 0 评论 -
通过Maven Profiles实现A/B Test验证
maven profile原创 2020-12-21 21:08:56 · 180 阅读 · 0 评论 -
Java性能优化点滴汇总
起草mark原创 2020-10-30 07:40:46 · 169 阅读 · 0 评论 -
Arrays.asList()方法的使用
使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportOperationException异常,Collections.singletonList()方法与Arrays.asList()类似。说明:asList的返回对象是一个Arrays内部类,并没有实现集合的修改方法。Arrays.asList体现的是适配器模式,只是转换接口,后台的数据仍是数组。Arrays.asList():(1)该方法不.原创 2020-06-27 22:38:01 · 340 阅读 · 0 评论 -
Tomcat 6.0.33 每小时触发FullGC一次
Tomcat 6.0.33 每小时触发FullGC一次tomcat为了防止内存泄露,会注册一个监听器,周期性的触发System.gc()。原创 2020-06-05 11:35:50 · 404 阅读 · 0 评论 -
Java8Map的API笔记
package com.jd.stock.common.domain;import java.util.HashMap;import java.util.Map;public class MapTestInJava8 { public static Map<String, String> map = new HashMap<>(); static { map.put("a", "A"); map.put("b", "B");.原创 2020-05-21 01:49:45 · 381 阅读 · 0 评论 -
JDK8新特性——lambda表达式
package zcl.jdk8.lambda;/** * 参考学习文档:https://www.runoob.com/java/java8-lambda-expressions.html */public class TestMain4Lambda { /* 一、lambda的标准格式为: (Object obj)-> { doSo...原创 2020-03-18 23:47:14 · 226 阅读 · 0 评论 -
C2 CompilerThread9 长时间占用CPU解决方案
一、问题描述近期在进行日常巡检时发现,线上部分应用服务器的CPU突然比以往高出很多,经过登录机器排查确认是C2 CompilerThread9线程始终长时间运行消耗了CPU。排查步骤在上篇博文有记录总结,地址:https://blog.youkuaiyun.com/u012538947/article/details/104581740异常线程的堆栈如下:"C2 CompilerThread...原创 2020-03-02 00:26:51 · 12450 阅读 · 3 评论 -
排查CPU异常步骤
1、TOP命令定位异常进程toptop命令介绍参考:https://blog.youkuaiyun.com/xtggbmdk/article/details/828180232、通过 top -H -p pid 查看异常的线程top -H -p 2253、printf "%x/n"线程号 #将异常线程转化为16进制printf "%x\n" 3924、使...原创 2020-02-29 20:58:56 · 1595 阅读 · 0 评论 -
Too Many Connections
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:Datasourcerejectedestablishmentofconnection,messagefromserver:"Toomanyconnections"原因:因为你的mysql安装目录下的my.ini中设定的并发连接数太少或...原创 2020-01-07 17:47:38 · 385 阅读 · 2 评论 -
一个例子了解Java的反射机制
本文来自:blog.youkuaiyun.com/ljphhjJAVA反射机制:通俗地说,反射机制就是可以把一个类,类的成员(函数,属性),当成一个对象来操作,希望读者能理解,也就是说,类,类的成员,我们在运行的时候还可以动态地去操作他们.理论的东东太多也没用,下面我们看看实践 Demo ~Demo:转载 2014-09-30 09:46:01 · 613 阅读 · 0 评论 -
ThreadPoolExecutor线程池使用介绍
// 线程池初始化 if (threadPool == null) { threadPool = new ThreadPoolExecutor(corePoolSize, maxPoolSize, keepAliveTime, TimeUnit.SECONDS,原创 2015-09-17 18:11:34 · 556 阅读 · 0 评论 -
JVM堆内存结构分配
JVM的堆内存分为新生代(Young Generation)和旧生代(Old Generation)。新生代分为Eden区和Survivor区。Survivor区分为From Survivor和To Survivor。如图:从上图可以看出,新生代通常占JVM堆内存的1/3,因为新生代存储都是新创建的对象,比较小的对象,而老年代存的都是比较大的,活的久的对象,所以老年代占JVM堆原创 2016-03-30 17:16:33 · 5105 阅读 · 0 评论 -
对List进行多维度排序
在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标。1 实体类package domain;/** * Created by Johny on 2016/8/31. */public class Student { /** * 学号 */ int id ; /** * 分数原创 2016-08-31 17:49:41 · 4118 阅读 · 0 评论 -
文章书籍链接汇总
积木设计理论: http://www.techug.com/post/chief-architect-talk-about-architect.html 九年双十一PDF:http://techforum-img.cn-hangzhou.oss-pub.aliyun-inc.com/1516614343703/AliDouble11.pdf项目重构之组件化:https://blog.csd...转载 2018-01-16 18:20:21 · 486 阅读 · 0 评论 -
业务通用化处理
当业务中出现新的需求A时,代码中我们经常这样写if(A){ action1();}并且A还出现在程序的各个地方if(A){ action2();}if(A){ actionn();}随着业务新需求类型的出现, BCDE,会面临需求的膨胀,代码会是如下的样子if(A or B){ action1;}if(C or D or E){ action2;...原创 2018-06-14 17:07:27 · 308 阅读 · 0 评论 -
final关键字用法总结
final关键字在java中,final的含义在不同的场景下有细微的差别,但总体上来说,它指的是“这是不可变的”。下面,结合例子简单记录下final关键字的用法场景1:当final修饰基本数据类型变量时, 一旦变量的值被初始化后, 则不允许被二次赋值 /** * 场景1: * 当final修饰基本数据类型变量时, 一旦变量的值被初始化后, 则不允许被二次赋值...原创 2018-08-31 09:54:54 · 972 阅读 · 0 评论 -
hashCode方法与equals方法
工作中编写代码的时候涉及到了重写equals方法和hashCode方法,一直都是重写equals方法时要重写hashCode方法,但是一直不知道原理,现在将学习到知识记录下来。(文章引用的JDK源码均为1.8版本)先来几个问题:1. hashCode和equals的作用都是什么?2. 为什么需要重写equals()方法?3. 为什么重写equals方法时需要同时重写HashCode...原创 2018-09-13 22:29:00 · 286 阅读 · 0 评论 -
组件化总结
此笔记仅为个人总结,适用特定场景,勿参考组件化的定义可以理解为:可配置、可扩展、可替换、代码去业务化(业务松耦合;行为驱动)、可以减少上线次数。隔离层:代码中难免会出现if重站的逻辑,但是要把这种无法规避的判断放在隔离层,不要影响核心逻辑的可读性。组件化零活开发的同时注意不要降低现有代码质量,千万避免为了组件化而组件化。当认准正确的道路上出现一个拦路虎的时候,不要轻易放弃这条道路,...原创 2018-09-26 21:01:34 · 261 阅读 · 0 评论 -
组件替换数据查询模板
对原有代码进行升级改造或者组件替换时,一个基本原则是新老逻辑要一致。保证新旧逻辑最常用的手段肯定是线上流量验证最为稳妥,相同的入参,走完原组件逻辑之后,再走一遍新组件的逻辑,比较输出是否一致。但是实际情况中会遇到一种情况,要被替换的组件中包含一些外部依赖,例如需要从Redis中查询一些数据,从第三方介质获取一些信息等,这样可能由于两次查询的结果不一致导致最终新老组件对比的结果存在差异。针对这种情况...原创 2018-09-27 14:10:57 · 205 阅读 · 0 评论 -
和光同尘
以下内容来自《大江大河》-20集-29:45和光同尘的精髓:水书记:骄傲有很多种,有一种是因为太聪明、太优秀,从内心深处产生的傲慢。宋运辉:我改水书记:这种傲是改不了的,不过你也不要灰心,这种傲是你坚持不懈、不断努力前进的动力。但是这种傲你要深深地藏在内心深处,不要拿出来给别人看,更不要拿自己的标准来要求别人。宋运辉:你是说让我降低对别人的要求?水书记:...原创 2018-12-30 00:08:31 · 916 阅读 · 0 评论 -
数据库权限
where需要查询权限原创 2019-04-12 10:27:32 · 274 阅读 · 0 评论 -
数据库分布式事务-两阶段提交2PC
http://xiaorui.cc/2016/02/25/%E7%90%86%E8%A7%A3%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1%E7%9A%84%E4%B8%A4%E9%98%B6%E6%AE%B5%E6%8F%90%E4%BA%A42pc/原创 2019-05-08 15:23:28 · 519 阅读 · 0 评论 -
springBoot项目Http升级Https+腾讯云证书
参考链接:https://blog.youkuaiyun.com/zhoucheng05_13/article/details/86767550https://blog.youkuaiyun.com/l4642247/article/details/81631770原创 2019-07-02 00:07:58 · 679 阅读 · 0 评论 -
springBoot部署云服务器步骤
参考:https://blog.youkuaiyun.com/weixin_39274753/article/details/815575011. 安装JDKyum install java-1.8.0-openjdk* -y2. 安装lrzsz,用于往服务器上传文件yum install lrzsz -y3. 在idea中把项目打包,xxx.jar4. 在终端中利用rz...原创 2019-07-01 09:01:31 · 311 阅读 · 0 评论 -
详细解析垃圾的回收机制
详细介绍Java垃圾回收机制垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机制并未改变。垃圾收集的目的在于清除不再使用的对象。GC通过确定对象是否被活动对象引用来确定是否收集该对象。GC首先要判断该对象是否是时候可以收集。两种常用的方法转载 2014-09-29 22:41:23 · 810 阅读 · 0 评论
分享