- 博客(218)
- 资源 (11)
- 收藏
- 关注

原创 spring-aop源码分析
涉及到很多图片,实在懒得拷贝,参见http://note.youdao.com/noteshare?id=6705116de166518537ec2cebfefe63af
2018-07-26 18:10:38
276

原创 spring-ioc创建过程源码分析
涉及到很多图片,实在懒得拷贝,参见http://note.youdao.com/noteshare?id=665b1db24a3a5ce3ebab573ec2bfd384
2018-07-26 18:07:36
252
原创 springboot的校验
本文介绍全局异常捕获BindException、MethodArgumentNotValidException和ConstraintViolationException @Validated@Valid同时补充了对入参校验枚举描述,枚举值的自定义注解。
2023-01-31 15:15:12
227
原创 二分查找变形
不同于二分查找,找到一个升序数组中第一个出现目标值的下标索引比如:1, 2, 2, 3, 4 返回下标位置1,不是2package com.my.java.suanfa;public class erfenchazhao { public static void main(String[] args) { int[] nums = new int[]{1, 1, 2, 3, 4}; System.out.println(search(nums, 2))
2022-05-20 17:12:53
250
原创 给定一颗二叉树和两个任意节点,请求解出这两个节点的最小公共父节点
package com.my.java.suanfa.treeNode;import com.alibaba.fastjson.JSONObject;import org.assertj.core.util.Lists;import java.util.*;/** * 功能描述: 给定一颗二叉树和两个任意节点,请求解出这两个节点的最小公共父节点, * 如果其中一个节点本身是另外一个的父类,那么就返回这个父节点, * 否则,就返回距离他们俩最近的公共父节点。此题给定的两个节点肯定在这颗二.
2022-05-14 11:03:08
228
原创 层次打印二叉树,一层换一行
package com.my.java.suanfa.treeNode;import java.util.LinkedList;import java.util.Queue;public class MyTreeNodeTest { public static void main(String[] args) { MyTreeNode2 head7 = new MyTreeNode2(7,null,null); MyTreeNode2 head4 = ne.
2022-05-13 17:31:08
206
原创 有效字符算法
package com.my.java.suanfa.String;import java.util.HashMap;import java.util.Stack;/** * 功能描述: 判断是否是有效字符 */public class isValid { public static void main(String[] args) {// String str = "[{()}]"; String str = "[]{}({[]})";// .
2022-05-13 11:27:45
548
转载 mac系统升级后git使用不了
转载文件原文链接:https://blog.youkuaiyun.com/weixin_39172380/article/details/88388913Mac使用git出现xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun解决方法终端输入xcode-selec
2021-09-24 15:57:45
1227
原创 redis源码系列之~简介
本月将持续更新redis源码系列~~相关文章链接:redis源码系列之一-sds:https://blog.youkuaiyun.com/zhangxiaomin1992/article/details/119680802redis源码系列之三-整数集合inserthttps://mp.youkuaiyun.com/mp_blog/creation/editor/119680377redis常见数据类型,命令和底层数据结构简介一:string 常见命令:redis> SET db redis..
2021-08-20 12:17:23
165
原创 redis源码系列之一-sds
本月开始更新redis源码系列:其他文章链接稍后更新~~1.sds的介绍2.为什么不使用string而是使用sds?1.保存了一个len,可以直接获取字符串长度2.杜绝缓冲区溢出3.减少字符串修改时重新分配内存次数4.二进制安全3.sds3.2之前的数据结构struct sds { int len;// buf 中已占用字节数 int free;// buf 中剩余可用字节数 char buf[];// 数据空间,柔性数组的地址和结构
2021-08-13 18:15:24
290
原创 redis源码系列之三-整数集合insert
本月将开始分析redis源码系列:同系列文章链接后期更新~~1.Redis集合类型的元素都是整数并且都处在64位有符号整数范围之内时,并且元素个数不超过512个的时候,使用该结构体insert存储。整数集合(intset)是Redis用于保存整数值的集合抽象数据结构,它可以保存类型为 int16_t、int32_t或者int64_t的整数值,并且保证集合中不会出现重复元素。它在内存分配上与ziplist有些类似,是连续的一整块内存空间,而且对于大整数和小整数(按绝对值)采取了不同的编码,
2021-08-13 17:27:55
411
原创 innodb间隙锁看这一篇就够啦~
innodb的默认事务隔离级别是rr(可重复读)。它的实现技术是mvcc(MVCC只在读提交可重复读两种隔离级别下工作)。基于版本的控制协议。该技术不仅可以保证innodb的可重复读,而且可以防止幻读。但是它防止的是快照读,也就是读取的数据虽然是一致的,但是数据是历史数据。为什么说他读的是历史数据的可重复读呢,因为根据这个mvcc的查询规则,新数据他是看不到的,无感知的。mvcc查询和更新的原则:SELECT操作的查询结果要同时满足条件:1、只会查询版本号小于等于当前版本号的数据作为结果返回,保
2021-07-13 18:01:02
1291
2
转载 分库分表后全局ID和分页查询的考虑
分库分表带来的问题 1.分库分表之后一个必然的问题,如何获取一个全局为一个ID?因为表中的数据是通过ID路由映射的,ID不能重复。 2.就算有了全局唯一的ID,那面对分页查询的需求,应该怎么处理呢? 唯一ID的生成 下面列举几种常见的唯一ID生成方案,需要满足两大核心需求:1.全局唯一 2趋势有序 1.用数据库的auto_increment(自增ID)来生成,每次通过写入数据库一条记录,利用数据库ID自增的特性获取唯一,有序的ID。 优点:使用数据...
2021-07-06 17:03:22
542
原创 垂直遍历二叉树,返回各个等级的列表
给定一个二叉树,返回其结点垂直方向(从上到下,逐列)遍历的值。如果两个结点在同一行和列,那么顺序则为从左到右。示例:思路:假设跟节点的位置是0,跟节点左孩子的位置减1就是-1,右孩子的位置加1,跟节点左孩子的右孩子位置就是0,-1+1=0,那么1,5节点就是同一个等级的。源码:package com.my.java.suanfa.ListNode;public class MyListNode { int val; MyListNode left..
2021-07-05 12:03:00
173
转载 MySQL in不走索引
SELECT* FROM erp_helei mg WHERE mg.num = 602 AND mg.pid IN (10002559,10002561,10002562,10002563,10002564,10002598,10002599,10002600,10002601,10002602,10002603,10002604,10002648,10002649,100026...
2020-04-22 18:59:48
575
原创 基本类型的重载方法
基本类型传递给重载方法,有个规则:byte->short->int->long->float->doubleshort->int->long->float->doublechar->int->long->float->double指的就是byte、char、short等"较小"类型能自动转换成较大...
2020-04-21 17:45:08
507
原创 float和double的范围和精度
float 4个字节,32位,float:1bit(符号位)+8bits(指数位+23bits(尾数位)float:2^23 = 8388608,共七位,意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;double 8个字节,64位,double:1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)double:2^52 = ...
2020-04-21 17:14:36
2348
原创 一篇文章搞懂系列:深入理解mysql索引底层数据结构与算法
http://note.youdao.com/noteshare?id=478e1e0f1b1db4ac287fffc27dccd3d0
2019-05-21 10:52:58
217
原创 一篇文章搞定系列:装箱和拆箱
本文参考:http://www.cnblogs.com/dolphin0520/p/3780005.html装箱 int -》integer,integer ainteger =1;反编译后的实际上是Integer.valueOf(1)拆箱 integer-〉int,int a = ainteger;反编译后实际上是ainteger.intValue();规则:1.== 两边的类型...
2019-02-21 16:28:06
245
原创 一篇文章搞定系列:事务的隔离级别和MVCC多版本控制
本文事务传播行为参考:https://segmentfault.com/a/1190000013341344本文事务隔离级别参考:https://www.cnblogs.com/huanongying/p/7021555.html一篇文章搞定系列有:java深拷贝和浅拷贝https://blog.youkuaiyun.com/zhangxiaomin1992/article/details/8...
2019-02-20 15:32:22
445
1
原创 java深拷贝和浅拷贝
从今天开始将不定期更新一篇文章搞懂XXX系列,系列目录以后更新第一篇:java深拷贝和浅拷贝,发现技术问题的请私信,评论,加qq指导!1、浅拷贝:将stu1的引用赋值给stu2,stu1和stu2指向内存堆中同一个对象,一个对象的改变会引起另一个对象的改变2、深拷贝的几种实现方式2.1、实现Cloneable接口,假设有依赖属性是类B,类B也需要实现Cloneable接口,假设...
2019-02-19 13:48:30
465
原创 redis数据丢失后rdb文件分析
http://note.youdao.com/noteshare?id=665ae87106d1021330362d6fb0318e44
2019-01-03 19:29:01
631
原创 nginx+lua+strom+kafka实现热点数据实时展示
涉及图片部分访问这个地址:http://note.youdao.com/noteshare?id=55c8fe08359e502ca6434b63d4b5dc0d假设最近一段时间内有10万个请求过来,其中1万次请求访问商品1,2万次请求访问商品2,3万次请求访问商品3,其他商品被访问次数均匀。请实时统计热点数据展示出来。说下主要的解决步骤:1.分发层nginx将所有的请求hash分发到...
2018-10-09 17:31:37
1530
转载 lua脚本完成基于商品id的定向流量分发策略
local uri_args = ngx.req.get_uri_args()local productId = uri_args["productId"]local hosts = {"192.168.31.187", "192.168.31.19"}local hash = ngx.crc32_long(productId)local index = (hash % 2) + 1...
2018-09-25 10:27:52
426
原创 模拟一个redis缓存组件启动器
starter是springboot的一个启动器,引入这个启动器就可以使用想用的功能。类似spring-boot-starter-web等功能,现在模拟一个redis缓存启动器,实现功能:其他项目引入这个组件依赖,在配置文件中加上redis连接配置后1.可以直接使用redis工具类操作redis存数据,不用在另外的项目中再弄一个工具类2.可以在自定义缓存注解在指定方法上存放方法返回...
2018-08-20 19:55:23
354
转载 ==equals装箱拆箱基础
package com.my.java.base;public class TestLong { public static void main(String[] args) { /** * 和integer一样,Long也有一个缓冲区,值在-127到128之间的数==是相等的,超过不相等 */ Long id1 = 123L; Long id2 = 123L;...
2018-08-03 12:25:42
293
转载 spring bean声明周期
bean的装载顺序:0.获取bean的定义1.createBean 创建bean的实例2.populateBean 对bean的属性赋值3.initializeBean.初始化bean3.1invokeAwareMethods 处理AWARE接口方法的回调3.2 applyBeanPostProcessorsBeforeInitialization应用后置处理器3.3 ...
2018-07-25 18:42:06
228
原创 eureka fegin ribbon的坑或扩展点
1.eureka界面的environment和datacenter怎么改?在主配置文件修改:eureka.environment=trunkeureka.datacenter=peer2cloud发现界面更改了!2.eureka界面的红框是它的自我保护模式?自我保护模式的特性,快过期的实例进入保护模式,不再从实例列表中删除该实例。关闭自我保护模式:eureka.server.enable-self...
2018-07-04 12:00:56
1425
原创 log4j2.xml文件讲解和在日志中加入全局guid
<Configuration status="WARN" monitorInterval="30"> <Appenders> <!-- 输出到控制台 --> <Console name="STDOUT" target="SYSTEM_OUT"> <!--
2018-06-13 11:43:43
2232
原创 mac定时任务和发送附件
有个任务是等运维要找我要文件的时候去生产ftp下载下来给他,嗯嗯,每天,好繁琐,偷偷的本地跑了个定时,每天11点执行jar包,jar包的功能就是给运维发送邮件,ok。1.mac系统自带定时任务功能:00 11 * * * cd /Users/yp-tc-m-7129/newworkspace/ftpFileEmail/target && java -jar ftpFileEmail...
2018-05-29 15:41:48
1821
原创 springboot利用JavaMailSender发送邮件
之前用javamaill的方式发送邮件,比较繁琐,现在利用spring-mail来发送邮件,非常简单1.引入pom依赖,分别是freemarker邮件模板和spring-maill依赖<!-- Spring Boot Freemarker 依赖,发送HTML格式的邮件的方式 --> <dependency> <groupId&g...
2018-05-23 15:28:24
3188
转载 基础坑
zheif you can learn,why care who tell you,how to tell you?1.控制表状态进入后先更新为process,最后更新为SUCCESS,为了防止其他sql更新其他字段导致版本号加1,最后的SUCCESS状态就不做乐观锁控制了2.遍历日期,第0天跳过,每天指定商户跳过,不影响其他商户和其他天,注意while 和 for 的双层循环i==0...
2018-05-17 13:49:57
613
转载 Eclipse使用Debug模式调试Spring Boot项目时跳转到exitCurrentThread的问题
Spring Boot项目使用了spring-boot-devtools工具且在Eclipse中Debug调试会自动跳转到这个方法:public static void exitCurrentThread() { throw new SilentEitException();}解决方法:Eclipse->【Preferences】->【Java】->【Debug】:去掉...
2018-05-16 11:18:17
1778
原创 java编程思想随书笔记
关于string,stringBuffer的区别是老生常谈了,下文将讲述在for循环中的内存和性能问题/** * 1000000条,for循环中stringBuffer.append(j).的时间为150级别,str+=的级别时间超级长,1000条的时间为560 * 1000000条,for循环中频繁声明一个变量 str= 的使用时间为170级别,使用stringBuffer的时间
2018-01-11 19:27:45
297
转载 多态加载顺序
作为java三大特性之一,原来以为自己了解多态,直到看到了这道题发现自己还是做着做着就晕了,证明了还是不了解的呢public class A { public String show(D obj) { return ("A and D"); } public String show(A obj) { return ("A and A")
2018-01-10 14:54:44
596
原创 求任意数据类型(注意任意)数组的最大值和最小值
如题:求任意数据类型(注意任意)数组的最大值和最小值,实现容易,但是面对各种数据格式,需要做到代码简洁!package test;import javafx.util.Pair;/** * 求任意类型数组的最大值和最小值--这么多类型的数组,需要增加冗余代码* @Description: TODO(用一句话描述该文件做什么) * @author min.zhang-2 *
2018-01-04 15:45:18
1080
原创 wait() notify使用注意事项
1.wait被调用之前notify的唤醒通知就来了,那么这个线程并不能保证被唤醒,有可能会导致死锁问题2.不要使用if(队列size>最大个数) 否则真的会出现放入队列的size个数超过最大值的情况,推荐使用while3.不要使用notify,推荐使用notifyall()下面是生产者和消费者线程死锁方式和正确方式package thred;import java.util.A
2017-12-22 10:32:17
811
原创 K链表反转一次和多次
呃呃,一个单向链表,给定一个K,实现k+1和K的反转,这个只是反转一次已经降低难度了,貌似没打算考我递归我擦嘞,当时竟然没考虑到K-1,你是怎么一回事啊,提示好多次了,好多问题买考虑全可能需要我考虑一下几点1.链表长度小于传过来的参数K2.链表为空3.k参数不合法public static class ListNode { int data;
2017-12-19 11:10:44
395
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人