- 博客(76)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 dubbo 直连解决方案
要做什么看dubbo官网后发现有dubbo直连这种方式,简化了我们开发环境的流程,不再需要启动注册中心。于是想要应用到自己项目中去。但是各类网站看了很多dubbo直连的案例,基本都和官网一致,一个一个service 指定 url,这样的方式不太符合我们自己项目,我想要的是所有的service 使用 dubbo://127.0.0.1:20880 urldubbo版本:2.7.8源码过程分析这里先创建的一个又Spring 管理的Controller, 其中只有一个属性且被Reference 注解标识
2021-09-29 16:47:00
502
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 dubbo 循环调用本服务
服务AB,A调用服务B,B中出现了调用自己,而这次调用也是通过dubbo调用B调用B,讲道理应该使用spring调用本身,而原来也没有问题,只是这次加个dubbo过滤器,导致本服务抛出的自定义异常被dubbo包装了一下无法识别,抛出意料之外的异常...
2021-06-28 18:50:35
317
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 MySQL oreder by的单路排序和双路排序
innodb存储引擎的排序分为两大类,索引排序和文件排序,索引排序效率肯定是优于文件排序的,所以请尽可能的使用索引排序。如何去查看sql语句是利用了哪种排序方式答案就在explain关键字,查看sql语句的执行计划,我们可以从mysql官网看到If the Extra column of EXPLAIN output does not contain Using filesort, the index is used and a filesort is not performed.If the E
2021-06-03 16:42:02
306
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 mysql join原理
MySQL join表共有三种匹配方式,以A left join B为例进行描述,A left join B是以A表为驱动表,B表为匹配表进行连接一、Nested-Loop Join Algorithm(简单的嵌套循环连接)一种简单的嵌套循环连接(NLJ)算法,循环从A表中读取每一行,然后将每一行与B表中的每一行进行匹配,其实就是两层for循环。for each A_row in A { for each B_row in B { if (A_row.fid == B_row.fid)
2021-05-14 11:27:01
64
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 大文件断点续传
public void uploadBySlice(UploadFileReq uploadFileReq) { byte[] bytes = uploadFileReq.getBytes(); if(bytes==null){ throw new ServiceException("请上传文件"); } String base = sysConfig.getStaticArticleAccessPath().sub.
2021-02-20 09:27:13
74
原创 websocket消息处理失败排查(redis大key)
于是排查websocket + redis问题, 测试发现 redis本身的连接没有问题,只是某次差点寻会有问题。想到大key的问题,在测试环境复现,复制粘贴大量数据走 websocket 确实会出现断连的情况。调用grpc 超时失败, 起初是认为grpc 的问题, 于是开了个python脚本 访问grpc,没有问题, 表示grpc 服务端正常。访问 http://127.0.0.1:9121/ ,显示正常这一步则没有问题。我们本身是有prometheus 和 grafana 的,
2024-04-18 10:51:43
442
1
原创 spring boot自动装配的原理是什么
spring 时代,开启注解需要在xml中配置component-scan,然后触发标签解析,解析时根据标签的annotation-config属性将configrationPostProcesser注册进spring,由其完成注解的解析工作而springboot,在自己的prepareContext 方法中将configrationPostProcesser注册进去...
2022-04-11 20:33:39
488
原创 spring中线程池默认大小(源码)
@ConditionalOnClass(ThreadPoolTaskExecutor.class)@Configuration(proxyBeanMethods = false)@EnableConfigurationProperties(TaskExecutionProperties.class)public class TaskExecutionAutoConfiguration { /** * Bean name of the application {@link TaskExecuto
2021-11-25 17:26:17
1065
原创 ELK日志收集搭建过程中的一些问题
一、es 7.x 版本需要jdk11的支持二、es配置外网访问config/elasticsearch.yml 添加 http.host: 0.0.0.0三、es启动失败 不允许以root用户启动,创建一个新用户启动即可四、logstash启动失败 缺少log4J插件
2021-11-14 15:28:57
1436
原创 mysql 自定义变量使用
set @a = now(), @b = now();SELECT *, @ax, @bx, @mxFROM atestWHERE ( @mx := IF (( @ax := DATE_ADD( af, INTERVAL 48 HOUR )) < ( @bx := DATE_ADD( DATE(bf), INTERVAL "2 8 30" DAY_MINUTE )), 1, 2 )) > 0 af, bf 两个字段都为日期字段写在where条件后的赋值语句 必须
2021-10-19 13:35:56
122
原创 解析rar5压缩文件
public static void unRar5(File rarFile, String outDir) throws Exception { IInArchive archive; RandomAccessFile randomAccessFile; // 第一个参数是需要解压的压缩包路径,第二个参数参考JdkAPI文档的RandomAccessFile //r代表以只读的方式打开文本,也就意味着不能用write来操作文件
2021-10-12 22:39:03
538
2
原创 RequestPart注解实现同时上传json 和 文件
最近要改造一个接口,原本是json传参,现在要加个文件,emmRequestPart 可以帮我们做到,不同的key 以不同的content type解析后端代码@PostMapping("test") @ResponseBody public String test(@RequestPart("customer") Customer customer, @RequestPart MultipartFile file){ System.out.println(file.g
2021-10-11 21:02:13
761
原创 spring 事务传播验证
package com.example.flyway.service;import com.example.flyway.bean.User;import com.example.flyway.mapper.UserMapper;import org.springframework.aop.support.AopUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframewor
2021-09-11 16:05:33
74
原创 druid部分配置
druid 在1.1.18版本后需要手动配置开启监控,默认监控不开启,可以查看DruidStatViewServletConfiguration的变动1、开启监控spring.datasource.druid.stat-view-servlet.enabled=false2、只有本机能够访问页面#允许外部访问spring.datasource.druid.stat-view-servlet.allow=3、碰到sql监控中没有数据spring.datasource.druid.filters
2021-09-11 14:31:28
567
原创 项目升级mybatis-plus全局查找并替换方法
shareRecordMapper.selectListCustomer(([a-zA-Z.()\n\s]+))// 用 . 的时候获取不到$1shareRecordMapper.selectListCustomer(([a-zA-Z0-9.()\n\s]+)) // 可以匹配到数字, 这个没测shareRecordMapper.selectList(new LambdaQueryWrapper($1))
2021-09-08 18:03:01
446
原创 mysql中,如果单行占用太长的空间,在聚集索引中应该如何存储?
技术交流群中,有人问出了一个这样的问题,如果一行占用空间大于16K,那么是不是就存不进页了。针对这个问题查了一下官网,最终终于查出结果可变长度列太长而不适合 B 树页的可变长度列存储在单独分配的磁盘页上,称为溢出页。此类列称为页外列。页外列的值存储在溢出页的单链接中,每个这样的列都有自己的一个或多个溢出页面列表。根据列长度,可变长度列值的全部或前缀存储在 B 树中,以避免浪费存储空间和读取单独的页面。参考:14.11 InnoDB Row Formats...
2021-09-06 15:56:23
392
原创 重写的finalize方法,每个对象只会被调用一次?
在finalize方法注释上看到了“对于任何给定对象,Java 虚拟机永远不会多次调用finalize方法。”那是不是意味着一个对象只能被复活一次呢?
2021-08-31 17:52:19
745
原创 juc包下的线程间协作用到的类
1、CountDownLatch内部类实现aqs,使用cas修改state值完成同步2、CyclicBarrier内部使用独占锁实现+condition实现,构造函数可以传入回调任务,在屏障被冲破时执行(在冲破屏障的线程中执行)。维护了parties,count两个变量,每有一个线程waite阻塞时,–count,当count == 0时,调用condition的signalAll唤醒所有线程先执行回调任务,然后唤醒所有线程,之后count重置为parties可以重复使用3、Semaphore
2021-08-29 21:44:47
57
原创 线程池是如何线程复用的?
调用方法execute判断是否线程池的当先线程数小于核心线程数如果小于:调用addWorker方法通过线程工厂创建Thread对象并封装成worker对象,且开启线程,先执行本任务,然后循环获取队列中的任务执行如果等于:直接将传入的runnable对象加入的队列中等待执行...
2021-08-29 13:06:36
67
原创 关于aqs疑惑的地方
在调用lock方法时候,可能能为资源竞争, 导致该线程被阻塞加入到aqs等待队列中,在获取锁的线程调用realease方法后, 该线程被唤醒(locksupport),从代码上来看 说白了 阻塞线程 调用lock方法时,,实际上就是被加入到等待队列,然后进行阻塞,那么问题来了 , 被唤醒时候是会直接执行后续代码,还是继续竞争锁呢,从书的第124页上来看是竞争所,但是lock方法已经被执行过了,为什么还会再执行呢?通过debug 发现lock方法阅读不充分,java.util.concurrent.loc
2021-08-28 18:17:48
63
原创 Xorshift 生成随机数
static final int advanceProbe(int probe) { probe ^= probe << 13; // xorshift probe ^= probe >>> 17; probe ^= probe << 5; UNSAFE.putInt(Thread.currentThread(), PROBE, probe); return probe; }
2021-08-28 17:24:37
648
原创 错误开线程的方式导致的bug
1、开线程栈溢出2、使用线程池开线程还同时捕获了异常并向上抛出,且线程池设置了主线程执行的拒绝策略,导致投资者端同时调用接口时候随机出现报错,主线程中执行了这个方法并且被dubbo捕获了异常...
2021-08-27 17:58:57
54
原创 selectById也会出bug?
功能上了生产后,测试给我提了一个bug,导出数据功能报错。马上排查了一下日志,发现一个selectById的sql报错了,马上去查看一下这条数据,由于生产环境,使用审计工具查看数据,并没有发现什么异常,是在没办法,准备将数据迁移到本地debug试试看,在打开数据库时,看到这条数据好像跟刚刚看到的不太一样,仔细对比。审计工具上的结果Navicat 下的结果很明显 00 就是罪魁祸首了,之前没碰过这样的报错信息,一时间也没想到在这里,同时因为审计工具 导致排查花费了更长的时间...
2021-08-09 09:33:15
271
原创 EnumUtils 枚举工具类
public class EnumUtils { public static <T, V, S> S getEnumProperty(T t, Function<T, V> function1, Function<V, S> function2) { return getEnumProperty(t, function1, null, function2); } public static <T, V, S> S ge
2021-08-06 10:16:33
139
原创 pageUtils 工具类
public class PageUtils { public static Page setPageInfo(List list){ PageInfo pageInfo = new PageInfo(list); return setPageInfo(pageInfo); } public static Page setPageInfo(PageInfo pageInfo){ Page page = new Page();
2021-08-06 10:14:57
987
原创 spring invokeBeanFactoryPostProcess 执行流程
一、外部beanFactoryPostProcessors如果是BeanDefinitionRegistryPostProcessor 实现类,立即执行,然后 add registryProcessors如果不是 add regularPostProcessors二、实现BeanDefinitionRegistryPos
2021-08-05 16:03:08
76
原创 java 根据html生成pdf 实现透明度
原项目中有在使用flying-saucer库来生成pdf,奈何不支持css3样式,然后遇到一个需求,客户要求设置透明度,然而百度一波,发现rgba 和 Opacity都是css3的,我当即就说这功能做不了。说是说了,做还是得做,面向百度搜索了一波,发现了WKHtmlToPdf程序,于是开始安装环境:centos7 x86_64wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12
2021-07-27 18:01:18
185
原创 git revert后再merge
在自己的分支上进行需求的开发1、提交了A,B节点后2、合并到master3、此时因为需求变更等,这个这需求延期到下一个版本4、revert (2)的merge节点5、自己的分支再次提交了C节点6、向master合并的时候发现并没有AB节点的内容。7、reset(6)操作,需要先revert (4)产生的节点8、再次merge...
2021-07-21 14:03:55
778
原创 根据枚举code获取枚举三种方式耗时
package com.example;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.function.Function;import java.util.function.Supplier;public class Test { public static void main(String[] args) { lon
2021-07-15 20:02:59
310
原创 2021-07-12
stream.mapstream.mapToIntstream.flatMapstream.flatMapToIntdistinctsortedpeeklimitskipreduceminmaxcount// stream.flatMapCollection<List<Object>> values = map.values();List<Object> collect = values.stream().flatMap(Collection
2021-07-12 15:40:04
26
原创 mysql编辑集导致大小写不敏感
一个批量上传客户的功能导入的时候,抛出了重复键的异常,这是因为mysql的索引导致,然后通过这个key值上去库中查询这条数据,发现并没有这条数据。然后我尝试将这条数据单独放到另一个excel中,可以插入成功,于是猜想是否是mybatis批量插入的bug但想了一下不太可能,因为抛出的异常不同。网上大概搜了一下,搜到了ignore关键字,在程序中加上这个关键字,并且打了下log,发现一共需要插入72条,实际插入成功69,少了三条,嗯??比对了一下,找出插入失败的数据,发现一个共同点,有索引的那个字段都
2021-06-30 16:08:07
53
原创 kafka启动以及整合spring碰到的问题
背景kafka在阿里云服务器上,java客户端在windows上问题问题一:kafka启动失败,The Cluster ID doesn’t match stored clusterId删除log.dirs目录下的meta.properties文件,如果还不行删除zookeeper中kafka相关的目录问题二:kafka正常启动后且命令行可以生产消费消息,客户端连不上kafka打开config/server.properties 配置文件设置listeners=PLAINTEXT://私网i
2021-06-30 11:16:54
183
原创 dubbo 过滤器
一、实现filter二、在META-INF下穿件dubbo文件夹创建com.alibaba.dubbo.rpc.Filter文件xxFilter=全前限定名三、在配置文件中配置dubbo.provider.filter=xxFilter或者在过滤器上加@Activate注解
2021-06-23 10:23:43
181
1
原创 对象转json字符串输出到日志
背景想要将一个对象以json的格式输出到日志中处理使用log,info(JSONObject.toJSONString(invokeLog, true));或者log,info(JSONObject.toJSONString(invokeLog, SerializerFeature.PrettyFormat));第一种实际也是调用的第二种。public class InvokeLog { private int id; private String data;}问题
2021-06-22 18:55:15
1220
2
原创 获取方法返回类型
//如果返回值类型为Result,则不再进行处理 System.out.println("getParameterType" + methodParameter.getParameterType() + "," + methodParameter.getParameterType().equals(ResponseData.class)); System.out.println("getGenericParameterType" + methodParameter.getGe
2021-06-11 11:11:38
426
1
原创 mybatis 批量插入提升效率
背景最近工作中遇到了解析excel,然后批量插入,发现这个插入时间比较长,所以想要进行一些优化,大家可以跳过过程直接看结论背景作)准备工作,创建一张测试表CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `user_age` int(11) DEFAULT NULL COMMENT '年龄', `master` int(11) DEFAULT NU
2021-05-21 16:56:19
1302
5
原创 mysql中left join on多条件与where的区别
为了测试建立两张表A、B表CREATE TABLE `b` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a_id` int(11) NULL DEFAULT NULL, `is_delete` int(1) NULL DEFAULT NULL, `a_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`
2021-05-12 09:27:03
44
原创 mysql中的时间类型与java日期类的接收
mysql中关于时间的类型共有四个datetime,timestamp,date,time;datetime,timestamp比较相似,都是既有日期又有时间,不同的是timestamp 是时间戳,表示从1970/01/01到现在的毫秒数,因此它的范围是大于1970,而datetime则没有这个限制date表示日期,不包含时间,如果我们使用java date类来接收,时间则是00:00:00,没有范围限制time表示时间,不包含日期,如果我们使用java date类来接收,日期则是1970-01
2021-03-24 17:54:04
2968
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人