- 博客(165)
- 收藏
- 关注
原创 系统属性-环境变量-JVM参数
系统属性系统属性是JVM进程中的系统相关属性,如springBoot中的properties配置文件也属于系统属性可以通过System.getProperties()获取环境变量环境变量是操作系统级别设置的环境变量可以通过System.getEvn()获取JVM参数JVM参数是jvm初始化或则运行过程中需要的参数。JVM参数-Dproperty_name=property_value是设置的系统参数,也是springBoot中的系统属性...
2021-05-12 20:24:15 1240
原创 护眼
日常护眼设置Idea 设置背景色Chrome 使用darkreader护眼插件https://darkreader.org/help/zh-CN/https://github.com/darkreader/darkreaderhttps://www.chajian5.com/extension/dark-reader-v4-9-21
2021-04-26 23:50:31 137
原创 Golang 使用
Golang 开发环境配置和编程示例:https://cloud.tencent.com/developer/article/1596713
2021-04-17 11:56:32 77
原创 VS Code
文章目录VS Code使用VsCode运行编程语言VS Code使用VsCode运行编程语言vscode运行不同的编程语言需要使用不同的编程编译和运行环境等插件,但是大部分插件需要翻墙下载不然会下载失败或者直接需要等待很长时间下载不下来等。...
2021-04-16 23:02:12 69
原创 Redisson客户端 port out of range:-1
问题描述:RedissonClient在项目启动过程中提示报错:RedissonClient bean注册失败,cause by: port out of range:-1问题排查:先调试进入java配置类发现,bean注册获取的properties属性没问题,并且之前启动没有问题,合并其他分支后突然出现这种问题。然后怀疑是pom依赖的问题,经过maven helper分析发现当前项目通过间接依赖的pom版本是2.8.0,实际redisson模块使用的3.14.0。问题解决:所以对业务模块的
2021-03-24 11:40:42 2617
原创 LeetCode-两数求和查找
解题思路把数组元素做一次hash表转换,然后通过减法减数组元素后的结果可以直接通过hash来获取。代码class Solution { public int[] twoSum(int[] nums, int target) { if(nums.length == 0){ return null; } // 数组转hashmap, key为num中的值, value为下标位置, 在target减nums中比自己小的元素时,剩
2021-02-06 17:59:08 76
原创 LeetCode-单向链表反转
解题思路首先有个newHead是表示指向新链表头的变量,temp是记录每次遍历newHead向后迁移一个节点后指向的节点,所以temp每次遍历完成后需要和newHead做一次同步。原理就是newHead先向后迁移然后再把next指针指向原来的自己也就是temp.current就是记录当前原链表的从开始节点到结束的变量,并且每次都比newHead超前一个节点,这样newHead才能顺着current向前移动。代码/** * Definition for singly-linked list. *
2021-02-06 17:26:44 85
原创 统计程序执行时长
使用 Stopwatch类监控程序执行时长public static void main(String[] args) {// String result = add("12345", "789");// System.out.println(result); int count = 1000000; Stopwatch watch = Stopwatch.createStarted(); for (int i = 0;
2021-01-24 14:14:43 155
原创 Integer Source Code
Intege Source Code Analysepublic class IntegerSource { public static void main(String[] args) { method(); } /** * 通过修改vm 参数-XX:AutoBoxCacheMax=N来设置IntegerCache 中的high值,默认是127,如果vm 参数 小于127会取127 * * The cache is ini
2021-01-18 14:19:18 147 1
原创 AtomicLong And AtomicLongFieldUpdater
AtomicLong是支持Long类型的原子执行器,AtomicLongFieldUpdater是long字段原子执行器,可以把某个类中的valitile long字段进行原子性操作。这样做可以避免直接使用AtomicLong这样的类级别属性,直接使用long基本类型字段,然后在需要使用原子性加减的地方可以通过AtomicLongFieldUpdater包装成CASUpdater或则LockedUpdater进行原子性操作。使用AtomicLongFieldUpdater需要注意原字段非原子性更新操作的
2021-01-18 11:22:56 138
原创 代码
前言:代码对于程序员就像小说家的小说一样,一个程序员的好坏或则一个程序对的好坏看代码就知道,就像小说好不好或则小说家好坏看小说就知道。所以一个逻辑清晰、代码严谨、结构清楚的代码是一个好的程序员体现。现在程序员工作了好几年,好像懂了一大堆理论,高可用、分布式、高性能等脱口而出,可是代码编写一团糟,殊不知这些理论实现的背后都是代码的支撑,脱离了代码谈这些理论纯是扯淡。文章目录编码编码实战1、使用函数式编程2、类的封装严谨3、工具类的实现编码编码实战1、使用函数式编程使用函数式编程可以减少重复代码
2020-11-29 10:41:29 246 1
原创 Spring start error:Error creating bean with name ‘configurationPropertiesBeans‘
问题描述Spring 中增加了@AspectJ切面类,启动Spring报错。错误信息org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configurationPropertiesBeans' defined in class path resource [org/springframework/cloud/autoconfigure/ConfigurationProperti
2020-11-20 17:47:38 5484
原创 Spring context error Bean instantiation via factory method failed
问题分析在bean factory创建bean的时候出现StackOverflowError,要么是Java配置类中@Bean注解的方法出现无线递归,要么是bean类对应的构造方法有堆栈溢出的问题。org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'person' defined in class path resource [spring/project/integration/
2020-11-19 14:46:57 14972
原创 参数json序列化报错: (no Creators, like default construct, exist): cannot deserialize from Object value (no
参数json序列化报错,定位问题使用jackson对json字符串转对象时报错。 (no Creators, like default construct, exist): cannot deserialize from Object value分析通过分析应该时construct构造函数出问题了。解决然后进入dto类中发现,代码中自定义了有参数的构造函数,导致默认无参构造函数失效,需要手动添加无参构造函数,用于对象的json序列化。com.fasterxml.jackson.databind
2020-11-10 17:16:36 21023
原创 ArrayIndexOutOfBoundsException Trouble Shoot
ArrayIndexOutOfBoundsException Trouble Shoot
2020-11-05 10:26:22 224
原创 集合查找性能优化
集合查找性能优化:public class OptimizeCollectionDemo { public static void main(String[] args) { List<Ticket> tickets = new ArrayList<>(); List<Integer> ids = new ArrayList<>(); for (int i = 0; i < 100000;
2020-09-27 18:04:19 177
原创 算法
文章目录算法算法原理算法时间复杂度算法空间复杂度算法实践算法面试算法算法原理算法时间复杂度算法空间复杂度算法实践几种常见排序算法实践算法面试1、假设淘宝一天有5亿条成交数据,求出销量最高的100个商品并给出算法的时间复杂度。先用哈希,统计每个商品的成交次数,然后再用在N个数中找出前K大个数的方法找出成交次数最多的前100个商品。优化方法: 可以把5亿个数据分组存放,比如放在5000个文件中。这样就可以分别在每个文件的10^6个数据中,用哈希+堆统计每个区域内前100个频率最高的商品,最后
2020-09-21 18:38:43 165
原创 Spring
文章目录SpringSpring 框架原理Spring 注解Spring 框架实战SpringSpring 框架原理Spring 注解@Component 表示该类需要被Spring 容器管理并生成bean实例,@Component(“beanName”)可以通过value指定bean name,方便bean注入时指定,默认是类名第一个字母小写。@Scope 指定容器中bean生命周期类型,默认是单例,@Scope(“prototype”),value值分别为singleton(单例)、p
2020-09-11 16:48:14 117
原创 Java
文章目录Java反射反射原理动态代理原理反射语法动态代理反射实战动态代理Java反射Java反射是Java语言的一个非常重要的功能,是大多数Java框架现实的技术支撑点,如Spring、Mybatis等。 其中Spring是一个Java对象的容器框架,是大部分Java项目或则其他开源框架的基础支撑框架。Mybatis是一个ORM的持久层组件,提供了Java对象和关系型数据库的映射。反射原理动态代理原理JDK动态代理是通过反射来获取类实例和调用method.invoke实现的。JDK动态代理是代理模
2020-09-11 16:13:52 452
原创 偏门知识点
偏门知识点Java相关1、@CallerSensitive注解的作用是什么这个注解是为了堵住漏洞用的。曾经有黑客通过构造双重反射来提升权限, 原理是当时反射只检查固定深度的调用者的类,看它有没有特权, 例如固定看两层的调用者(getCallerClass(2))。如果我的类本来没足够 权限群访问某些信息,那我就可以通过双重反射去达到目的:反射相关 的类是有很高权限的,而在 我->反射1->反射2 这样的调用链上,反射2 检查权限时看到的是反射1的类,这就被欺骗了,导致安全漏洞。 使用Cal
2020-09-09 11:50:47 532
原创 系统问题排查
系统问题排查监控系统问题排查主要通过监控指标来定位的问题出在哪里,监控主要分为主机监控和应用程序监控。主机监控主机主要用来运行应用程序或则应用程序容器,所以系统的运行和主机的健康程度有关系。主机我们一般关注CPU使用、内存使用、磁盘IO和网络等。主机监控一般涉及以下指标:CPU使用率内存使用率磁盘IO使用率网络IO使用率TCP连接数应用程序监控应用程序有自身的一些健康标准或则接口信息,还有应用程序本身运行的虚拟机或则容器。下面以Java程序JVM监控为例。JVM监控一般涉及的参
2020-09-07 17:11:33 338
原创 DevOps CI/CD
DevOpsDevOps 就是开发(Development)、测试(QA)、运维(Operations)这三个领域的合并。为什么要合并这三个领域?主要是开发和运维的脱节,开发和运维各自独立工作。DevOps是一种思想、一组最佳实践、以及一种文化。DevOps落地实施,从组织架构、设计人员、流程、人员分工、人员技能到工具,变化很大,要求很高,完全颠覆了现有的开发运维模式,建设风险很高。其中DevOps的主要核心是自动化,自动化代码检测部署和发布。要实现开发和运维的合并并且自动化,要通过执行CI/CD
2020-09-06 17:43:13 420
原创 Mybatis
文章目录MybatisMybatis 原理Mybatis 实战mybatis 配置mybatis 优化Mybatis 面试题MybatisMybatis 原理Mybatis 实战mybatis 配置mybatis 优化Mybatis 面试题
2020-09-04 10:31:02 73
原创 设计
文章目录设计设计模式和使用接口设计代码模块设计分布式设计分布式接口幂等设计分布式唯一ID设计设计主要记录实际编程过程中涉及的代码编写和设计的方式。设计模式和使用接口设计代码模块设计分布式设计分布式接口幂等设计幂等性设计今天我们来聊聊接口的幂等性设计,所谓幂等,就是任意多次执行所产生的影响均与一次执行的影响相同。 幂等性接口是指可以使用相同参数重复执行,并能获得相同结果的接口。这里就不展开数学中的定义了,有兴趣的可以自行google。为什么接口需要幂等呢?我们都知道,作为接口的调用方,对
2020-09-03 19:06:19 73
原创 集合
文章目录集合HashMap集合HashMap通过key哈希值确认数组索引位置HashMap 每次扩容结果都是2的N次方,正常通过key值经过hash方法处理后的返回值对扩容后的数组大小进行取余操作即可,得到的值就是对应数组的索引位置,每个索引位置对应的值是一个链表(桶),实际JDK源码使用key hash后的值和2的N次方减一进行位与操作(&),得出的值和取余是一致的。hash(key)&(2^n-1) 等同于 hash(key)%(length)2次方位与的原理分析:Hash
2020-09-03 12:09:43 89
原创 Dubbo
文章目录Dubbodubbo 原理RPC 通信原理Dubbo注:Dubbo官网dubbo 原理RPC 通信原理RPC并不是一个通信协议,RPC其实是一个远程过程调用实现技术的统称,RPC的实现可以通过http或则tcp来实现,其中tcp实现居多,因为tcp和http相比更底层,tcp是在传输层,http是应用层,http有固定的数据传输格式数据相对冗余,直接使用tcp更为高效。...
2020-09-03 11:44:30 63
原创 Zookeeper
文章目录Zookeeper操作Zookeeper原理zookeeper通信协议juteZookeeper操作Zookeeper原理zookeeper通信协议juteJute是Zookeeper底层序列化组件。序列化可以把在程序中运行的对象或则基本数据类型对应的值转成特殊的格式进行网络传输或则磁盘保存(数据库或则磁盘文件中),需要使用的时候再通过反序列化把数据读入到程序中。序列化与安装没有必然关系,不过可以通过序列化避免原数据结构直接暴露在网络中。不过公开的序列化和反序列化基本上没有保密性可言。通
2020-09-02 18:09:17 2965
原创 Java匿名内部类和使用
一.匿名内部类匿名内部类适合创建那种只需要一次使用的类,例如前面介绍命令模式时所需要的Command对象,匿名内部类的语法有点奇怪,创建匿名内部类时会立即创建一个该类的实例,这个类的定义立即消失,匿名内部类不能重复使用。语法格式一般如下://匿名类可以是实现接口 或则继承类new 实现接口() | 父类构造器 (实参列表){ //匿名内部类的类体部分}从上面可以看出,匿名内部类必须继承一个父类,或者实现一个接口,但最多只能继承一个父类,或者实现一个接口。关于匿名内部类还有如下两条规则
2020-08-31 17:02:21 207
原创 Idea Java集合源码调试
1、LinkedList是链表数据结构的实现,但是同时也实现了队列和栈数据结构,因为LinkedList类实现了Deque接口,Deque接口定义了双端队列和栈的实现(其实双端队列同时定义了队列和栈的双重实现)...
2020-08-24 16:24:02 170
原创 Idea 框架设计模式 源码调试
1、Mybatis cache模块使用装饰器模式,一个顶层接口Cache定义缓存的基本操作PerpetualCache实现类通过HashMap实现了缓存的功能。BlockingCache等实现类通过delegate对象完成装饰器模式。
2020-08-21 16:07:58 101
原创 Idea Mybatis源码调试
1、通过SqlSessionFactoryBuilder build方法创建sqlSessionFactory,通过Resources获取mybatis配置文件的inputStream1.1、初始化XMLConfigBuilde XMLConfigBuilde 调用parsefa
2020-08-20 18:34:20 1054
原创 Win10 new terminal
https://www.iplaysoft.com/windows-terminal.htmlhttps://jingyan.baidu.com/article/67662997024f1f14d51b8483.html
2020-08-13 17:01:51 855
原创 Idea Spring源码调试
SpringBoot 启动 加载primarySources 为@SpringBootApplication注解的类然后加载ApplicationContextInitializer容器初始化实例加载ApplicationListener Spring监听实例然后从堆栈信息中找出有main入口的类 new RuntimeException().getStackTrace()(通过异常类的堆栈信息记录)然后加载bootstrap引导问文件然后通过SpringApplicationBuilder
2020-08-12 21:31:21 319
原创 logback使用的几个问题
logback使用的几个问题一、logger与root用来设置某一个包或者具体的某一个类的日志打印级别、以及指定。仅有一个name属性,一个可选的level和一个可选的addtivity属性。name:用来指定受此logger约束的某一个包或者具体的某一个类。level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前logger
2020-07-23 11:41:07 243
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人