- 博客(35)
- 收藏
- 关注
原创 异步线程任务处理,主线程抛出异常事务回滚验证
且事务正常回滚,50个请求,只存储了3个,且请求不连续,因为被回滚掉了。1、将线程池参数调到最小,并将队列设置为0。线程池大部分拒绝,实际只处理了3个任务。2、设置拒绝策略为抛弃并抛异常。总结:想都是问题,做都是答案。jmeter设置50请求/s。
2023-10-10 15:58:51
232
原创 nacos监听更新bean和apollo的区别
总结:先说结论nacos使用起来不如apollo,很多奇怪的问题,比如密码不能用一些特殊字符(客户端1.2.1),和logback的加载有优先级问题,可能会导致logback的配置出错,这些都需要去解决,如果只是用配置中心的话,建议apollo。中配置它,by the way遵循nacos默认规则不配置shared-configs无法做到监听,我这里监听了ExtensionConfigs(),因此我配置了它。这是一个map数据,我在配置里将其配置成了String,通过字符串的形式进行切割。
2023-07-18 11:06:09
144
原创 skywalking排除端追踪端口
skywalking部分旧版本没有对请求的method做区分,只写路径就行,比如。才可以将端口排掉,具体看一下自己的端口具体地址,如下图此版本需要带method。在agent安装目录下,将**此版本便不需要Method。下面新建一个配置文件。
2023-07-18 10:51:03
326
2
原创 mybatis-plus动态分表使用ThreadLocal未remove引起的问题
每次请求,tomcat线程会分配线程池进行处理,请求线程任务结束后,线程并不会销毁,而是回收到线程池,线程数据也随之留存,因为在使用threadlocal时,尽量要remove,当然如果是非线程池也可以不remove,但是也会有threadlocal溢出风险。
2023-05-17 18:52:22
379
原创 理解mysql架构和执行流程
之所采用这种双写方式,是因为buffer在写入dbfile时使用了随机io,效率较低 ,因此采用写入redolog的方式,这种方式采用的是顺序io,速度比较快,最大可能避免数据丢失。buffer-pool将数据同步到logbuffer,然后logbuffer再同步到redoLog,这样避免Bufferpool存入dbfile时产生丢失后无法恢复。数据在查询到buffer之后,会对undolog进行同步,记录数据的初始状态,以进行回滚。用于数据的具体存储和查询,索引的管理,直接和磁盘交互。
2023-04-14 11:28:44
123
2
原创 python+milvus实现一个以图搜图系统
当您听到“以图搜图”时,是否首先想到了百度、Google 等搜索引擎的以图搜图功能呢?事实上,您完全可以搭建一个属于自己的以图搜图系统:自己建立图片库;自己选择一张图片到库中进行搜索,并得到与其相似的若干图片。
2023-04-11 10:54:07
2853
4
原创 apache-common-pool2简单使用和源码分析
至此apache-common-pool2的部分关键代码分析完毕,对连接池有了更多的理解,个人使用案例参考之前做过另一篇笔记。
2023-03-21 18:18:29
1292
原创 TCP/IP的理解!
但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。为了这种情况: B向A发送 FIN = 1 的释放连接请求,但这个报文丢失了, A没有接到不会发送确认信息, B 超时会重传,这时A在 WAIT_TIME 还能够接收到这个请求,这时再回复一个确认就行了。这个字段实际上是指出了 TCP 报文段的首部长度 ,它指出了 TCP报文段的数据起始处 距离 TCP报文的起始处 有多远。包首部就像协议的脸。
2022-12-12 14:09:31
1090
原创 apache doris+cannal+mysql实践
使用canal同步mysql数据到doris参考:官方快速开始下载安装包:https://github.com/alibaba/canal/releases或者wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz这里我只安装服务端,可以满足场景,客户端有机会再探索下载 canal, 访问 release 页面 , 选择需要的包下载, 如以 1.1.5 版本为例解
2022-12-07 16:10:47
1931
2
原创 spring-webflux理解
了解spring-webflux之前,我们要先了解一个词,是一套反应式编程 标准 和 规范,如果 Publisher 发布消息太快了,超过了 Subscriber 的处理速度,那怎么办?这就是 Backpressure 的由来。Reactive Programming 框架需要提供 背压机制,使得 Subscriber 能够控制 消费消息 的速度其中,Subcriber 中便包含了上面表格提到的 onNext、onError、onCompleted 这三个方法。
2022-11-21 18:53:43
781
转载 深入分析 ThreadLocal 内存泄漏问题
势必会被回收,这样一来,ThreadLocalMap中就会出现key为null的Entry,就没有办法访问这些key为null的Entry的value,如果当前线程再迟迟不结束的话,这些key为null的Entry的value就会一直存在一条强引用链ThreadRef->Thread->ThreaLocalMap->Entry->value永远无法回收,造成内存泄漏。的生命周期,可能导致的内存泄漏(参考ThreadLocal内存泄露的实例分析)。的弱引用作为key,如果一个。......
2022-07-25 18:18:48
407
原创 一次linux搭建Sftp问题排查
根据资料搭建sftp后,第一次登陆成功,再次登陆报错查找资料显示是因为网络配置问题,于是重新改了一下配置,加了心跳连接等,依然无效。仔细检查配置发现,配置sftp根路径带有匹配符号,拷贝过来的,忘记修改,总结:网络查询资料时,一定要理解,不然你都不知道你拷贝的是什么东西,特别是csdn,可能连作者自己都不知道。.........
2022-07-10 00:16:23
1288
原创 MyBatis-Plus(主键策略、UUID、Sequence)
1,ASSIGN_ID(雪花算法)如果不设置 type 值,默认则使用 策略(自 3.3.0 起)。该策略会使用雪花算法自动生成主键 ID,主键类型为 Long 或 String(分别对应 MySQL 的表字段为 BIGINT 和 VARCHAR)提示:该策略使用接口 IdentifierGenerator 的方法 nextId(默认实现类为 DefaultIdentifierGenerator 雪花算法)。2,ASSIGN_UUID(不含中划线的UUID)如果使用 策略,则会自动生成不含中划线
2022-06-10 14:58:06
3566
原创 LogstashLayout日志模板简化
背景项目发布后Kibana展示的日志,过于繁琐,看的眼睛要瞎了,如下打开JSON发现,有这么多的key,希望能够只输出系统信息,便于查错。分析elk的流程,日志的输出到es是会有模板的,而模板应该是logstash定义的,找到这段配置, <layout class="net.logstash.logback.layout.LogstashLayout" > <includeContext>true</includeC
2022-05-13 18:06:13
826
原创 本地使用浏览器模拟跨域请求
浏览器模拟跨域请求随便写一个域名,然后在调试工具使用异步请求,保证请求的IP和域名不一致,即可实现跨域请求js代码var xhr = new XMLHttpRequest();xhr.open('OPTIONS', 'http://127.0.0.1:8090/crossFilter');xhr.send();xhr.onload = function(e) { var xhr = e.target; console.log(xhr.responseText);}...
2022-05-09 15:34:21
2637
原创 大数据量下如何排序的个人理解
需求有几千万数据订单,需要查出来,并且根据用户去重并且,筛选出10大消费客户,想到之前归并排序,这里参考了归并排序的思想,每批排出10个最大客户,最终将这些10个一批的用户继续排序。关键代码如下这里是一批的的数据排序方式 List<User> users = new ArrayList<>(); users.add(new User("1",new BigDecimal("10.00"))); users.add(new User
2022-05-05 12:33:14
805
原创 对比Mysql的流式查询和普通分页查询
背景最近有一个场景,需要大批量处理数据,大概1200w的数据,之前是按照分页查询的方式来处理,但是会导致查到最后越来越慢,想到流式查询和游标查询。游标查询的方式,可能对数据库性能影响比较大,本次测试就不考虑了。jvm参数设置由于本地测试,机器内存比较大,为了测试效果,于是将jvm设置小一点-ea -Xms512M -Xmx512m普通查询 @Test public void testCommonQuery(){ tmpFeeService.commonQuery
2022-05-04 14:32:05
2968
原创 多线程下mysql的死锁问题
版本5.7数据隔离级别默认RRDB如下:CREATE TABLE `tenant_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, `created_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `updated_time` timest.
2022-03-21 14:54:47
2506
原创 关于SpringMvc中HttpMessageConverter的理解
版本springboot-2.2.6HttpMessageConverter在SpringMVC中的作用最近通过configureMessageConverters重写HttpMessageConverter时候,通过浏览器请求出现了乱码,响应头也从Content-Type :application/json 变成Content-Type: text/html,下面是代码片段 // 字符串 StringHttpMessageConverter stringHttpMess
2022-01-27 01:45:20
717
原创 springboot实现注解获取登录参数
创建一个注解/** * 登录信息获取注解 * * @author zh * @date 2022/1/12 16:58 */@Target({ ElementType.PARAMETER })@Retention(RetentionPolicy.RUNTIME)public @interface LoginUser {}解析方法参数,并做业务处理@Slf4jpublic class LoginUserHandlerMethodArgumentResolver impl.
2022-01-20 10:16:20
848
原创 springcloud-nacos-config的基本使用
客户端配置server: port: 9002spring: servlet: multipart: max-file-size: 5MB application: name: vlms-user profiles: active: dev cloud: nacos: discovery: server-addr: ${common.nacos.server-addr} group: ${co.
2022-01-20 10:03:32
563
原创 springcloud-gateway中基本的请求日志打印
定义一个业务的过滤器public class AuthFilter implements GlobalFilter, Ordered { private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain ch.
2022-01-20 09:57:48
1569
原创 Druid连接错误无限重试的分析
目前有一个场景,动态切换数据源,但是切换的数据源有可能会连接失败,连接失败时,会无限报错,希望能够捕捉这个错误,防止日志爆满。2022-01-14 15:45:01.170 ERROR 21920 --- [Create-45539238] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://10.118.9.50:3306/vlms_dev?useUnicode=true
2022-01-14 15:56:23
4942
1
原创 HashMap源码理解
下标计算:https://blog.csdn.net/weixin_41046681/article/details/100850318?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blo
2021-12-12 23:31:57
173
原创 ArrayList的源码理解
ArrayList的源码解读使用无参构造初始化时,初始化容量为0 public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }当开始add添加元素时,初始化容量为DEFAULT_CAPACITY = 10因为第一次添加时elementData.length为0,所以会走grow(), elementData = Arrays.copyOf(elementData, newCa
2021-12-12 22:24:58
287
原创 关于springcloud线程池隔离和信号量隔离
信号量信号量Semaphore是一个并发工具类,用来控制可同时并发的线程数,其内部维护了一组虚拟许可,通过构造器指定许可的数量,每次线程执行操作时先通过acquire方法获得许可,执行完毕再通过release方法释放许可。如果无可用许可,那么acquire方法将一直阻塞,直到其它线程释放许可。执行tryAcquire如果获取不不到就放弃。线程池线程池用来控制实际工作的线程数量,通过线程复用的方式来减小内存开销。线程池可同时工作的线程数量是一定的,超过该数量的线程需进入线程队列等待,直到有可用的工作线程
2021-12-12 21:19:52
1305
原创 Springboot自动装配源码理解
注解@SpringBootApplication@SpringBootApplication继承了 -@SpringBootConfiguration 继承 @Configuration ,声启动类是一个配置类 -@ComponentScan 包扫描范围 -@EnableAutoConfiguration 自动配置注解(重点)自动配置导入选择器获取自动配置类列表怎么获取的呢获取自动配置包下的spring.factories(不仅仅这里有,符合sprin
2021-12-12 18:18:03
318
原创 mysql间隙锁导致死锁
建表语句CREATE TABLE `aaa_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf-8_mb4;产生死锁的场景sessionA1、start TRANSACTION;
2021-12-09 18:10:40
1133
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人