- 博客(174)
- 资源 (2)
- 收藏
- 关注
原创 ThreadLocal,InheritableThreadLocal,TransmittableThreadLocal
InheritableThreadLocal 在new Thread的时候,会把ThreadLocalMap放到新线程中,完成上下文的传递,但遇到线程池,线程没有回收,而是继续复用的时候,还是拿不到线程上下文。TransmittableThreadLocal是阿里开源的组件,用于解决线程池线程复用时的上下文传递问题。ThreadLocal 新线程无法拥有拿到旧线程的上下文。
2023-04-11 14:22:15 172
原创 使用@Data编译报不允许使用‘空’类型的问题排查
上伪代码@Datapublic class Test { private int age; private String name; public void getName() { if (age == 1) { XXXXXX } }}原因是有个变量,假设名为name;然后刚好我有个getName()方法是实现了自定义逻辑的(只是方法名刚好一样),且返回值为void这个getName方法就会与@
2022-03-11 18:15:28 1224 2
原创 linux使用多个不同版本JDK并切换
1.不同版本JDK下载地址,直接下载x64.tar.gz解压即可用,不需要安装https://www.oracle.com/java/technologies/downloads/archive/2.修改/etc/profileexport JAVA_HOME=/opt/jdkexport JRE_HOME=/opt/jdk/jre#export JAVA_HOME=/usr/local/jdk707/jdk1.7.0_07#export JRE_HOME=/usr/local/jdk.
2022-03-02 10:57:28 1295
原创 使用Druid配置密码加解密
1.引进Druid包2.对密码进行加密public static void main(String[] args) throws Exception{ String[] arr = ConfigTools.genKeyPair(512); System.out.println("privateKey:"+arr[0]); System.out.println("publicKey:"+arr[1]); String encryptSt
2022-03-01 11:25:46 2761
原创 Waiting for table flush及Waiting for table metadata lock重现及解决
背景:线上的从库突然查询非常慢,一直在等待,查不出来。看执行线程列表有大量的Waiting for table flush猜测原因: 1.运维使用alter在主库上进行大表数据的切表 2.大数据部门在从库通过datax同步数据到数据仓库。早上报Waiting for table flush,有可能是主库先rename成功,然后主库切表成,主从同步到从库的时候,因为从库有慢查询,所以从库报Waiting for table flush重现步骤: 1.先用一个线程查表然后长...
2021-11-16 17:17:29 2404
原创 RocketMQ.MQClientInstance和close the connection to remote address解决
因为业务需要,所以项目需要发消息到两个不同NameServerAddr的RocketMQ第一个Rocketmq是直接用springboot-rocketmq第二个Rocketmq是封装了一下,手动创建DefaultMQProduct的试着发送了消息,两个都显示SEND_OK但发现消息都跑到了同一个RocketMQ上。后来看了下源码,发现原因是用了同一个MQClientInstance。MQClientInstance通过MQClientManager获取得到,MQClientMana
2021-11-16 17:09:36 2486
转载 Float累加,精度引起误差 符号位指数位尾数位
程序用float累加订单的金额,得出来的数跟在数据库查出的总数不一致。后面换成Double下面内容转自浮点数float累加误差分析与解决_zhrh0096的专栏-CSDN博客由上图可知(摘在[2]), 浮点数由: 符号位 + 指数位 + 尾数部分, 三部分组成。由于机器中都是由二进制存储的,那么一个10进制的小数如何表示成二进制。例如: 8.25转成二进制为1000.01, 这是因为 1000.01 = 1*2^3 + 0*2^2 + 0*2^1 + 0*2^0 + 0*2^-1 .
2021-09-30 14:14:50 794
原创 Tomcat版本大于7.0.72引起get请求400问题
刚才收到运营反馈说,公安部认证有问题,去看了日志,是请求认证中心报了400。认证中心有4台服务器,两台IDC,两台腾迅云服务器公安部认证,会去请求腾迅的公安部认证接口。定位到是两台腾迅云服务器才会请求报400,通过本地请求同个项目的公安部认证和中宣认证,都会报400,所以排除腾迅云-公安部认证接口出问题跟运维沟通,两台腾迅云服务器的tomcat版本是7.0.100,因为tomcat在7.0.73就已经添加了RFC3986,所以导致get请求上携带了认证姓名有中文编码,所以直接返回400了。...
2021-09-23 12:16:01 437
原创 Feign跨服务调用导出文件,浏览器没有自动下载文件问题解决
前端请求到B服务,B服务使用feign去调用A服务是输出流,这个时候A服务就需要将输出流响应到feign接口中的response上,B服务再拿到feign接口的response,在B服务这里将response以流的方式输到浏览器;feign在这里将相当于一个中间人先拿到输出流中转一下。如果feign接口这里不定义返回值的话并不会抛异常只是不能正常输出到浏览器,也看不出什么问题。1.A服务(文件服务,提供导出方法)void exportExcel(HttpServletResponse
2021-09-18 11:59:41 1207
原创 基于Docker搭建Canal
首先用yuminstalldocker在Linux搭建Docker然后设置子网docker network create --subnet=192.168.0.0/16 canalNetWork子网作用:创建网络时使用--subnet 选项。 如果未指定--subnet 则Docker daemon会自动为网络选择并分配子网,这可能会导致与您基础结构中的另一个子网(该子网不受--subnet 管理)重叠。 当容器连接到该网络时,这种重叠可能导致连接问题或故障。然后创建容器docke..
2021-08-05 19:58:40 662
转载 (转)基于Docker搭建RocketMQ
部分内容出自:https://blog.csdn.net/fenglibing/article/details/92378090首先在https://hub.docker.com/这里搜索镜像有哪些版本可以用然后下载镜像docker pull foxiswho/rocketmq:4.8.0然后启动RocketMQServer(目录/home/rocketmq/rocketmq-4.8.0)docker run -itd -p 9876:9876 --name rocketMQServ
2021-08-05 19:33:19 265
原创 Log4j日志文件没有日志问题解决
现象:tomcat启动后,登录日志都显示在tomcat的catalina.out里,没有打印在对应的项目的日志文件里配置文件 :logFilePath=/data/logs/Login-Interface/log.txtlog4j.rootLogger=DEBUG,A1log4j.logger.com.mchange=ERROR,A2log4j.logger.org=ERROR,A2log4j.logger.httpclient.wire=ERROR,A2 log4j.log
2021-08-02 12:14:11 3990
原创 基于Docker实现OpenResty连接Redis
搭建Redis#它会自动下载redis最新版本的镜像docker pull redis#根据镜像创建容器,绑定宿主机6379端口用于外网访问容器的redisdocker run -itd --name redis-test -p 6379:6379 redis#进入容器docker exec -it redis-test bash#进入redisredis-cli搭建OpenResty#下载openresty镜像docker pull sevenyuan/openresty
2021-07-01 23:55:45 630 1
转载 (转)基于Docker搭建Hadoop+Hive
本次使用的各版本配置如下:Docker 19.03.8 JDK 1.8 Hadoop 3.2.0 Hive 3.1.2 mysql 8.0.1 mysql-connector-java-5.1.49.jar hive_jdbc_2.5.15.1040Hadoop部分:一、拉取镜像docker pull registry.cn-hangzhou.aliyuncs.com/hadoop_test/hadoop_base二、运行容器进入容器看worker里面有三台机子,分别是M
2021-06-27 21:09:53 675 2
转载 hadoop的SecondaryNameNode
辅助NameNode管理元数据,从可用性的角度出发,不会跟nameNode部署在同一服务器执行过程:从NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到NameNode,替换旧的fsimage....
2021-06-14 16:34:12 767
原创 docker安装hadoop集群遇到的一些问题
1.进入hadoop镜像对应的容器内,执行Hdfs命令,显示没找到hdfs: command not found解决方案:在/etc/profile文件内原来是export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin改成export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH...
2021-06-14 15:48:46 638
转载 (转)Hadoop的nameNode
以下大部分内容转自:https://blog.csdn.net/weixin_45324890/article/details/108593297和https://www.cnblogs.com/cicada-smile/p/13801180.html
2021-06-14 15:40:03 466
转载 (转)hadoop的datanodes
转自https://blog.csdn.net/cicada_smile/article/details/109180161
2021-06-14 10:50:55 321
转载 (转)并发-Tomcat线程-QPS的思考
转自:https://segmentfault.com/q/1010000016846975该贴下临风的回答临风个人主页:https://segmentfault.com/u/linfeng_5ac9bd0a4d6a7一般线程数有一个公式:最佳启动线程数 = [任务执行时间 / (任务执行时间 - IO等待时间)] * CPU内核数比如说任务执行时间是100ms IO等待时间是10ms 8核 则线程数为8个IO等待时间是50ms 则线程数为16个线程多少对最高并发没有直接影响,任务计算时
2021-02-02 12:28:00 3014 1
原创 Seata的no available service ‘null‘ found, please make sure registry config correct解决
我们用的Seata版本是1.2 springcloud版本是springcloud hoxton.SR3先记录下这个错的方法所在地,调用链是在Seata-all-1.2.0.jario.seata.core.rpc.netty.TmRpcClient.init()->io.seata.core.rpc.netty.AbstractRpcRemotingClient.init()的reconnect(AbstractRpcRemotingClient.this.getTransactionS
2021-01-28 17:01:45 3513
原创 雪花算法
雪花算法生成的ID可用于做分布式系统ID生成的ID格式 1位标识符(始终是0)+41位时间戳 + 10位机器标识符 +12位序列41位时间=当前时间截 - 开始时间截,这里的的开始时间截,是我们的id生成器开始使用的时间,由程序指定的机器标识符就是分布式系统中每台机的标识ID优点:64位二进制转成十进制是19位长度短且根据算法生成,可以反推缺点:因为算法中有时间戳,所以如果机器时钟回拨,有可能ID重复反推:我可以在10位机器标识符那里,用5位做机房ID,5位做机器ID比如说生..
2020-10-19 10:59:12 367
转载 (转)Spring-cloud-stream的认识
可以看https://blog.csdn.net/elim168/article/details/101082105这个博主的介绍,讲的很详细看完上面博主的,下面是我的一点总结首先用spring-cloud-stream的目的就是实现解耦,在更换MQ组件时,代码层面不需要改,只需要改相应的MQ配置使用这个注解开启Stream@EnableBinding({AAA.class})AAA是我自定义的接口,在接口里可以用@Output("输出映射名") @Input("输入映射名")来定义多个输出
2020-09-23 11:10:27 201
转载 Kafka的存储模型
有部分内容转自https://www.jianshu.com/p/3e54a5a39683这篇讲的很详细 易懂Kafka一个Topic可以有多个Partition,多个线程,每个线程负责一个Partition进行读写每个Paratition可以有多个LogSegment,每个LogSegment文件包括一个日志数据文件和两个索引文件(偏移量索引文件和消息时间戳索引文件)。以上红字部分就是他的存储模型其中,每个LogSegment中的日志数据文件大小均相等(该日志数据文件的大小可以通过在Kaf
2020-08-19 18:18:50 636
转载 MySQL中InnoDB的一级索引、二级索引 即聚簇索引 密集索引和稀疏索引
转自https://blog.csdn.net/roxliu/article/details/70160664每个InnoDB表具有一个特殊的索引称为聚簇索引(也叫聚集索引,聚类索引,簇集索引)。如果表上定义有主键,该主键索引就是聚簇索引。如果未定义主键,MySQL取第一个唯一索引(unique)而且只含非空列(NOT NULL)作为主键,InnoDB使用它作为聚簇索引。如果没有这样的列,...
2020-08-19 17:25:04 1952
转载 (转)Http 持久连接和非持久连接 Pipeline
大部分内容转自https://blog.csdn.net/susan0218/article/details/832938651.1 定义1. 非持久连接:每个连接处理一个请求-响应事务。2. 持久连接:每个连接可以处理多个请求-响应事务。持久连接情况下,服务器发出响应后让TCP连接继续打开着。同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。3. HTTP/1.0 使用非持久连接。HTTP/1.1 默认使用持久连接。...
2020-06-08 11:58:30 782
原创 Mysql 事务会锁数据 其他事务会Lock wait timeout
因为我是手动开启开务,没用Transactional注解,做了试验 当开启A事务后 中途发生异常,然后在Catch里不调用事务回滚方法,也就是A事务不提交 也不回滚使用以下语句查询SELECT trx_id,trx_state,trx_started,trx_tables_locked,trx_rows_locked FROM INFORMATION_SCHEMA.INNODB_TRX;结果 没有锁表 只锁了一行数据用这个命令会看到A事务一直在运行中 因为我这个事务操作的是用户的钱包..
2020-05-30 16:20:54 262
原创 JVM问题排查
1.先用ps -ef | grep "java" 找出对应java进程2.进Linux安装java的bin目录,利用jstat查看 命令jstat -gc pid 如果报Could not attach to Pid,则加上sudo 安装bin目录/jstat -c pid就可以查出来了3.利用sudo 安装bin目录/jmap -heap pid就可以看到整个堆的情况4.可以加...
2020-04-24 14:13:53 887
原创 MongoSocketReadTimeoutException: Timeout while receiving message问题解决
由提示可知 是读取消息时超时,因为我们项目配置的SocketTimeOut是5秒,也就是说,是在读取5秒后,还未返回响应,就报了这个异常。怀疑两个原因:1.因为锁的原因,比如说写锁阻塞,其他读锁都只能等待。2.怀疑是查询慢的问题排查步骤如下,首先进入Mongodb对应DB执行db.currentOp() 查看目前正在执行的所有查询语句##当前语句有没有在等待锁 fals...
2020-03-16 20:25:35 8551
转载 顺序IO跟随时IO
转载自https://blog.csdn.net/fly_rice/article/details/89398157对于从磁盘中读取数据的操作,叫做IO操作,这里有两种情况:第一种:假设我们所需要的数据是随机分散在磁盘的不同页的不同扇区中的,那么找到相应的数据需要等到磁臂(寻址作用)旋转到指定的页,然后盘片寻找到对应的扇区,才能找到我们所需要的一块数据,一次进行此过程直到找完所有数据,这...
2020-03-13 18:20:25 231
原创 解决跨域问题
问题产生:前端页面地址跟接口地址域名不一样。问题解决:前端页面请求的请口地址域名,保持跟页面地址的域名一致,然后在前端项目所在的nginx中进行请求的转发,将请求转发到接口地址对应的服务器中location ~ ^/(h5)/ { proxy_redirect off; proxy_set_header Host $host; ...
2020-03-03 17:33:31 990
转载 ThreadLocal的弱引用
ThreadLocal中,获取到线程私有对象是通过线程持有的一个threadLocalMap,然后传入ThreadLocal当做key获取到对象的,这时候就有个问题,如果你在使用完ThreadLocal之后,将其置为null,这时候这个对象并不能被回收,因为他还有 ThreadLocalMap->entry->key的引用,直到该线程被销毁,但是这个线程很可能会被放到线程池中不会被销毁...
2020-01-01 17:47:25 1330
转载 (转)B+树的理解
大部分内容转自这篇博文https://www.jianshu.com/p/e5d86a0ba150和https://www.cnblogs.com/xueqiuqiu/articles/8779029.htmlB树就是B-树。Mysql用的是B+树B树和B+树应用在数据库索引,可以认为是m叉的多路平衡查找树,但是从理论上讲,二叉树查找速度和比较次数都是最小的,为什么不用二叉树呢?因...
2019-12-25 16:04:13 331
转载 (转)页、磁盘块与扇区
转自 xiazemin 的 泽民博客https://xiazemin.github.io/MyBlog/linux/2019/03/27/disk.html#扇区:磁盘的最小存储单位;磁盘块:文件系统读写数据的最小单位;页:内存的最小存储单位;一个磁盘块由连续几个(2^n)扇区组成;页的大小为磁盘块大小的2^n倍;页大小查看: getconf PAGE_SIZE,常见为4...
2019-12-24 17:26:24 791
原创 JsonSerializer的理解
一开始,我需要的是在将数据对象转成Json时,对象里的Date字段自动转成时间戳,查了下,发现JsonSerializer,以为可以满足需求,结果不行。它是可以将Date字段转成时间戳,只不过是在传输数据的时候才会自动传。在转成Json的时候,因为不涉及到传输数据,所以并不会转。关于JsonSerializer的使用及详细介绍,看下面博文就可以知道了https://www.jiansh...
2019-11-19 14:52:21 3732
原创 Mongodb一点总结
1.mongo --port 端口号 先进Mongodb2.db.auth('帐号','密码'); 进行权限验证,才能继续往下执行。3.对于用户的其他操作可以看这篇https://jingyan.baidu.com/article/dca1fa6f0428a4f1a440522e.html4.关于报权限校验失败的13跟18 Code我的理解是 13是登录的时候校验失败就报 18是...
2019-11-18 17:53:27 228 1
原创 连接Redis集群出现Connection refused
1.确认帐号密码 地址 端口都没有问题2.连接集群单个节点可连。3.通过 cluster nodes命令看到集群中有两个节点挂了修复两个节点,重启集群就可以连接上了。...
2019-10-24 15:07:39 2193
原创 (转)List.subList带来的ConcurrentModificationException异常
下面内容主要转自下面两篇博文https://www.jianshu.com/p/59ca14497a12https://www.jianshu.com/p/d2a69f7dc563ArrayList$SubList.size方法,如果原List和SubList的modCount不相等就会报错先贴demopublic static void main(String[] args...
2019-08-14 10:44:55 2542 1
原创 Linux命令
有个用tab键的小技巧,比如说你切换到tomcat的logs目录下,想要用tail 来看某个文件的目录,但你只记得这个文件的首字母,你就可以按下tab键如 tail -f t 按了之后就变成 tail -fcatalina.了1)wget用来下载文件 比如wgethttp://download.redis.io/releases/redis-2.8.9.tar.gz...
2019-04-07 17:36:45 514
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人