自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(244)
  • 问答 (5)
  • 收藏
  • 关注

原创 rr 为什么会出现幻读?

rc是每次读生成一个新的readview, 这样每次读都能获取到最新(规则:指当前版本或比未提交版本小的)的undolog。1. undolog 可以理解为就是一个数据快照,里面包含数据,当前事务ID(相当于版本号)和上一个快照的指针。2. readview 可以理解为事务快照, 记录当前事务ID,其他未完成的事务ID。这就是多版本的来历。阻塞数据修改,那么虽然readview变了,但是根据规则找到的还是同一条undolog。就是每个事务就相当于一个版本,记录自己的版本,同时知道其他未完成事务的版本。

2024-03-19 22:36:45 381

原创 spring初始化bean之后执行某个方法

比如我想在A类中控制B类(我的需求:B类在jar报中使用@Bean生成)的初始化,我用了BeanPostProcessor,发现A类先于B类实例化,可以使用@DependsOn 强制B类实例化。问题2: 可以使用 ApplicationListener 监控容器启动完成后。bean定义-实例化-初始化-销毁。注意: 这里的bean定义是指所有的bean定义完成,然后才继续执行,而实例化和初始化 单个bean 一次执行的。2. 所有bean初始化后执行?

2023-12-25 16:15:36 834

原创 spring RabbitListenerContainerFactory 作用

容器基础属性配置,最终连接以CachingConnectionFactory 为准。在 RabbitListener可以对不同队列使用不同容器区分mq地址和其他接收配置。

2023-12-20 16:38:19 508

原创 将博客搬至CSDN

将博客搬至CSDN

2023-12-12 18:12:00 385

原创 apollo 配置 list

和字符串一样。 多个值在字符串中用逗号隔开即可。如 xx: "a,b,c,d"读取也和字符串一样 @Value("${xx}")网上查到都是 @Value("#{$xx}}") 天坑。

2023-08-02 18:15:00 93

原创 记一次sql 查询很慢, DEPENDENT SUBQUERY。

sql 如下。 需求很简单: 其中r 是一张关联 c 和用户的表。 查询出某个用户没有关注过的c数据。select c.* from c where //其他普通c表列条件省略NOT EXISTS (SELECT 1 FROM r WHERE r.n= 10119 AND r.is_valid=1 AND r.id= c.id) ...

2023-06-20 14:35:00 28

原创 springboot 自定义listener 添加环境变量。 抄的springboot项目去掉了一些不用的jar包后包 No Value Bound 错误排查。...

1. 自定义listener 实现ApplicationListener<ApplicationEnvironmentPreparedEvent>, Ordered (如果要设置优先级可以实现Ordered接口,注意order值越小优先级越高)public class MyListener implements ApplicationListener<Applicatio...

2023-06-15 14:24:00 64

原创 冒泡排序 和 插入排序 快速排序

package com.zc.original_test;import java.util.Arrays;public class OrderTest { public static void main(String[] args) { int[] or = new int[]{10, 18 , 14, 25, 9 , 38 , 20 , 17, 24, 18}; ...

2022-09-20 14:50:00 19

原创 mybatis bind 标签 覆盖 复杂对象的某个属性值 问题。

需求: 有四个sql 都需要用一个 相同的where 条件,于是定义了一个sql 标签。 然后在每个sql中使用<include refid="myWhereSql"></include> 引入。后来需求变更,有两个sql 的where条件有一个参数需要和其他两个不同。 于是想到了bind标签sql 3 : <bind name = "req.cc" va...

2022-08-09 11:13:00 26

原创 普通java项目打成jar包,引入第三方jar .

ja方法1 . MANIFEST.MF 中添加Class-Path 。 1. 项目src目录下创建 META-INF/MANIFEST.MF 文件、文件内容Manifest-Version: 1.0Class-Path: lib/commons-lang3-3.10.jarMain-Class: com.ordinay.Test  注意lib 目录 和...

2022-07-29 10:45:00 63

原创 maven 引入了jar包,但却不能使用jar包里类

无报错,但是就是 无法 使用 lombok 的类。 发现classpath 里面也的确没有lombok jar包。最后把json 的 version 属性加上 就正常了。 所以结论: 不加version有时候不报错,但是会导致后面的jar包无法引入(也不报错),继而导致命名引入了jar包,却无法使用。...

2022-02-11 15:06:00 128

原创 springboot1.x apollo 更改属性值不起作用。 ConfigurationProperties

1. @ApolloConfigChangeListeners 默认监控命名空间是 application.properties , 如果是自己创建的namespace ,一定要明确指定(包含文件扩展名)。 @ApolloConfigChangeListener(value = {"xx.yml"}) public void onChange(ConfigChangeEvent configC...

2021-12-28 13:30:00 38

原创 maven profile 的作用

maven 的profile 可以是我们通过编译时指定 -P 来实现 使用不同的 属性变量。比如: <profiles> <profile> <id>local</id> <properties> &lt...

2021-07-30 18:34:00 22

原创 配置中包含maven属性,在idea中本地启动无法正常获取配置

1. 本地启动一个spring cloud 项目,无法启动 (注:测试环境正常),且控台无错误日志。分析:debug 代码发现是配置无法获取。 查看配置获取方式 是 spring config 通过spring: application: name: cc@project.name.suffix@ profiles: active: '@...

2021-07-13 16:46:00 40

原创 tomcat8 无法解析 请求url 中 包含 [: 或者 :] 等特殊符号

使用如下URL:http://127.0.0.1:8080/xx/[:xOGxeSSk5ENaYh89ziEFJA==:].do如果使用tomcat8 无法正常访问,浏览器network 报错400 :ERR_HTTP_RESPONSE_CODE_FAILURE访问 server 没有任何报错,开始以为是filter 把错误吃掉了,把所有filter 加断点连进都进不去。...

2021-07-06 16:16:00 19

原创 debug 获取mybatis dao 连接的数据库

MapperProxy.invokeMapperMethod.execute查看sqlSession .((HikariProxyConnection)sqlSession.getConnection()).getPoolEntry().hikariPool.config

2021-05-20 18:09:00 18

原创 java 守护线程的关闭

在进程内所有用户线程 全部消亡后,如果 守护线程仍在执行 (注意: 守护线程并不是一直运行中,守护线程中的代码执行完毕,则守护线程自然消亡。),则会被强制消亡。...

2021-03-26 17:01:00 21

原创 使用spring @RequestBody 接收参数,返回400 。 但是控台不报错误日志

使用spring @RequestBody 接收参数,返回400 , 大概率是参数问题,比如json参数转对象错误。但是控台不打印错误日志 ,没法一眼看出问题。假如我参数很多,就麻烦了。加断点调试:InvocableHandlerMethod 文件private Object[] getMethodArgumentValues(NativeWebRequest request, ...

2021-02-25 13:43:00 39

原创 iframe 中 js 在浏览器中无法调试,js 文件找不到

1. 在js 中添加debugger .2. 在js 文件中添加//# sourceURL=aa.js 其中aa.js为文件名称

2021-02-25 13:27:00 21

原创 idea 控制台乱码debug

请在 HELP->Edit Custom VM OPtions中加-Dfile.encoding=utf-8重点 : 然后重启IDEA 就好了 。做备份。参考https://www.freesion.com/article/2875240662/

2020-04-07 20:37:00 15

原创 线程控制

1. semaphore 信号量:控制并发线程数量。acquire 获取, release 释放2. exchanger 两线程数据交换,在调用exchange() 方法后等待另一个线程调用exchange() 后交换数据3. CountDownLatch , await() 等待所有线程调用countDown() 后 继续执行。4. CyclicBarrier 等待规定数量线程到达aw...

2020-04-03 15:58:00 14

原创 jvm 垃圾回收

回收策略标记清除复制标记整理根对象来源: java 栈 ,静态变量,寄存器堆年轻代:Eden和两个survivor老年代持久代   1. jmap -head pid 可以查看堆的配置情况,该命令可能导致进程终止。 可以使用jstat -gc 代替。 2. jmap -histo:live pid 查看堆中所有存活...

2020-04-03 13:58:00 15

原创 java 单例模式

1. 饿汉式: 类静态变量,利用类的初始化,jvm 中一个class 只会初始化一次public class A{ public static final A a= new A();}2. 懒汉式public class A{ private static A a; public synchronized static A getIns(){ ...

2020-04-03 11:26:00 17

原创 http报头

http 报头有四种: 请求头,响应头,实体头,通用头。Accept: 属于请求头,希望接收的数据类型Content-type : 属于实体头,发送给服务端实体数据的数据类型。Content-encoding : 属于响应头,指内容压缩方式,有gzip ,compress ,deflate ,是服务端返回给客户端的内容压缩方式,与Accept-encoding 对应,其为指定客户端能够...

2020-04-03 10:58:00 12

原创 java 构造函数 , 参数传递 , lamda表达式

1. java 子类中必须显式或者隐式的调用父类的构造方法,原因是双亲委派机制。java 在创建一个对象是,会在构造方法中依次向上调用父类的构造方法。为了找到父类的构造方法,所以子类应显式或者隐式的调用父类的构造方法 .显式: 构造方法的第一行super(n..) n 个参数隐式: 子对象构造方法会默认调用父类的无参构造方法,即super(). 所以父类中如果没有无参构造,则子类必...

2020-04-02 16:10:00 16

原创 mysql 杂识

1. mysql慢查询记录中除了记录超过long_query_time 时间的sql,还记录没有使用索引的查询,可以使用参数log_queries_not_using_index 设置开闭2. timestamp 占4个字节,可表示时间范围少,自带时区3. int(1) 和 int(11) 区别: 都是int ,占64个字节,1和11 表示的是显示长度,设置zerofill 可以看到左侧补0...

2020-04-02 15:47:00 13

原创 spring mvc 配置 拦截器不起作用

applicationContext.xml 配置<context:component-scan base-package="com.shdy"> <!--<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/&...

2020-01-10 15:03:00 36

原创 spring mvc 每次请求后是否自动销毁线程

import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.slf4j.MDC;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import...

2019-12-11 14:39:00 33

原创 mysql 杂识: 超时sql , sql 优化

mysql 可以打开slow_query_log 以开启日志记录。记录方式有两种,通过参数 log_output = file 或者table 。慢查询时间参数: long_query_time同时注意慢查询日志中总会多出一些还没有超过 long_query_time 的日志,,这个可能是 未使用索引的sql 查询,可以通过参数log_queries_not_using...

2019-11-25 16:06:00 16

原创 spring mvc:annotation-driven 和 context:component-scan

1. <!-- 开启spring mvc 配置,可以理解为主要做请求关系映射,请求参数处理,异常处理--><mvc:annotation-driven/>2. <!-- 处理该包中的各种spring注解,即将各个注解类交由容器管理 --><context:component-scan base-package="com.shdy.controller"...

2019-11-25 15:33:00 11

原创 mysql for update 锁行的错误理解

1. 最开始的理解是 : for update 会对查询出的结果加行锁,没有查询到结果就不加锁。但是今天发现有一句代码执行for update 却超时了 。查了mysql 获取锁超时时间是 50s .已我目前业务量不可能有 某一行 被单独锁定50s 。 除非是整表有锁,导致获取单独行锁超时。排查发现的确是表锁。正确锁行的理解: for update 会对 经过索引(包含主键, 此处...

2019-11-22 13:57:00 15

原创 mysql 为大表添加索引,导致超时的解决办法

简单的创建索引语句 : create unique index inxName on table A('Col') 。如果表数据量不大,没有问题,但是数据超过千万,可能你等了半天,却告知你超时了。网上查到解决方案:1. 复制表A 的数据结构 , 不复制数据create table B like A;2. 表B加上你需要的索引3. 把原有数据导入新表4. 修改表A 的名称为A_o...

2019-10-24 14:01:00 36

原创 logback 使用异步和缓存提升日志效率

主要是使用AsyncAppender 提供异步功能,然后使用 immediteFlush配置使用缓存(缓存8k).注意: 高版本的logback 已经指出SizeAndTimeBasedRollingPolicy , 我的版本是1.0.13可以使用SizeAndTimeBasedFNATP实现。<?xml version="1.0" encoding="UTF-8"?> ...

2019-09-17 13:26:00 23

原创 利用rabbitmq 实现消息的延迟发送

需求: 实现消息的延迟通知,每5s, 30s,60s,120s 通知一次。 就是每隔一段时间执行一次方法,该方法做业务上的处理。网上查rabbitmq原生是不支持延迟消息的。(rocketmq 支持), 但是可以换种方式实现: 利用其死信队列。rabbitmq的队列或消息可以设置过期时间,过期后会将消息放入你设置的队列中,如<rabbit:queue name="notify.us...

2019-08-26 14:52:00 12

原创 spring mvc 全局错误处理遇到的问题

今天项目甲方调用项目接口报了一个错误,直接显示异常信息的页面415(服务器无法处理请求附带的媒体格式) 。 很不美观。这显然不是我代码的问题,是调用方没有按约定请求。于是想整个全局异常处理。 本项目使用spring mvc 对外提供restful 接口。网上找了下,大致有两种解决方案:1. 继承HandlerExceptionResolverimport org.slf4j.Lo...

2019-08-14 20:38:00 19

原创 logback 按照业务主键分文件打印日志,使用SiftingAppender结合MDC. 实现项目中定时任务的日志单独打印,使用FilterReplay.NEUTRAL. 线程池和MDC...

1. 需求: 按照业务主键划分日志分件,可以使用siftingAppender结合MDC 实现。 <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender"> <discriminator> <key>sysUUID</key...

2019-08-12 13:16:00 17

原创 spring mvc controller 方法处理参数的过程。RequestWrapper 包装 @RequestBody 参数 。。 filter , inter,aop...

参考:https://blog.csdn.net/q957967519/article/details/91544888今天有个需求:每个请求设置一个唯一的标识,目前是用uuid,用于数据库主键,当然也用于打印日志的时候有个唯一标识。目前的代码是这样的, Qrs 有个属性uuid. @ResponseBody @RequestMapping(value = "/tran...

2019-08-08 15:17:00 71

原创 关于 spring redis 集群的两个错误

1.Jedis does not support password protected Redis Cluster configurations!spring-data-redis 1.8版本以下是不支持jedis 集群2. spring-data-redis 换成1.8 以后报错org.springframework.core.serializer.support.Deseriali...

2019-08-05 11:05:00 19

原创 关于mysql where 时间字段 大于 小于是否使用索引。 复合索引

对时间字段 trans_date 添加普通索引。使用where trans_date = ‘’ 是肯定会使用索引的。但是使用< , > 比较符时就不一定了。select count(1) from A; // 40000EXPLAIN select * from A where trans_date = '20190428'; 2. 使用> , 查询语句...

2019-07-15 10:42:00 184

原创 java 中文 字符对应的byte 为什么是负数。。二进制 到 16进制

暂存还没有搞明白一个字节占8位,可以表示 00000000-11111111 , 其中首位为符号位,也就是说能表示【-128--127】之间。为什么是8位,因为英文中256已经能够包含所有字符了。但是这样的话,其他国家的文字没法表示了,所以发明了utf-8国际统一编码,基本可以表示世界上所有字符了。而中文也有专门的编码GBK,一个字符占2个字节,就是16位,编码定义第一个字节从129开始...

2019-07-09 20:43:00 54

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除