- 博客(64)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 分布式事务六种解决方案
转载自“絮絮叨叨”的敖丙不得不感慨,人之间的差距是巨大的,敖丙年龄其实比我小一点,但技术上的差距却是我没办法弥补的,果然付出不一定会成功,但是付出一定会有回报。人,终归要为自己的所为买单。加油吧,既然没办法重来,那就努力将还未被融化的蜡烛燃烧到最亮吧!!!...
2021-02-07 16:01:53
153
原创 JVM-类加载器
jvm启动时不会一次性加载全部类,大部分类都是在使用时触发加载,那如何知道当前类是否已经加载过呢?根据双亲委派模型来实现,当需要加载一个类时,首先会由父类加载器中加载(及父类的父类),当父类加载器无法加载时,则调用findClass方法来加载该类;ps:为了打破双亲委派模型,可以自定义类加载器(继承ClassLoader),【tomcat的应用间类隔离原理】
2023-07-20 16:04:23
225
原创 mysql 3范式
1范式列不能再继续拆分错误:学生学号班长-大傻1学习委员-小傻22范式水平冗余,多行有重复的值错误:班级:1 1 重复学生学号班级大傻011小傻021中傻0323范式垂直冗余,多列有重复的值错误:班级:1 1 重复学生学号班级大傻011小傻021中傻032...
2022-01-07 09:45:48
661
原创 mysql主从同步搭建
1 下载启动mysql该步骤不详细展开,如果只有一台机器安装两个mysql,copy下my.cnf配置文件改下端口等配置即可,我下的5.7: wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz2 修改主从库配置文件master:my.cnf:#启用二进制日志(必须)log-bin=mysql-bin #服务器唯一ID,一般取IP最后一段,我这里写的端口(必
2021-08-30 17:31:36
129
原创 mysql主从同步报错解决
查看mysql error.log日志如下2021-08-19T07:19:04.118011+08:00 14933683 [ERROR] Slave SQL for channel '': Could not execute Update_rows event on table xxxdb.xxxtable; Can't find record in 'xxxtable', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event
2021-08-19 16:12:17
2837
原创 JDK,JRE,JVM区别
简单总结JDK:java开发环境和运行环境(JRE + 开发环境),生成.class类。JRE:java运行环境支持,JRE = JVM + jre/lib,lib文件夹下的类是JVM在解释class的时候需要调用的类库lib。JVM:运行由JDK生成.class类,在虚拟机中运行并由虚拟机实现与当前机器操作系统的交互...
2021-07-29 20:21:49
92
原创 记一次排查挖矿进程(dbus,autoupdate)
线上服务期cpu高达60%,服务器配置32个逻辑cpu,日常cpu最多也就10%左右开始没有怀疑是挖矿进程,毕竟cpu没有飙到100本人虽说不是专业运维,前后也遇到过四五种漏洞导致的挖矿进程(jenkins,xxlJob,redis等)既然漏洞的大门是我打开的,那就要由我来关上中了挖矿病毒,只杀挖矿进程是一定杀不干净的,必须找到该挖矿病毒是从哪个漏洞进来的,漏洞修复后,再把相关进程及文件清掉,挖矿病毒才会被消灭干净,当cpu彪高影响线上,可以先把挖矿进程kill,把cpu降下来,再排查问题出在哪
2021-07-28 18:27:44
1868
原创 Mac安装brew(亲测可用)
1 终端执行:/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"本人第一次选择中科大下载源失败了,后来选择的序号3:北京外国语大学下载成功安装。安装过程漫长需耐心等待2 查看安装是否成功brew --versionwhich brew...
2021-06-04 17:40:49
125
原创 网络故障排查-路由跟踪(windows、linux、Android)
windows: tracert使用:ctrl+r输入传cmd进入dos窗口,输入tracert ip或tracert 域名;主要参数: -d 不将地址解析成主机名。 -h maximum_hops 搜索目标的最大跃点数,默认30。 -j host-list 与主机列表一起的松散源路由(仅适用于 IPv4)。指定沿host-list的稀疏源路由列表序进行转发。host-list是以空格隔开的多个路由器IP地址,最多9个; -w
2021-05-24 17:17:28
1631
转载 java内存模型及678的主要区别
一 计算机内存模型及Java内存模型: 计算机内存模型是个规范:为了多线程下的共享内存的正确性(可见性、有序性、原子性) Java内存模型是符合计算机内存模型规范的二 Java内存模型及678的主要区别...
2021-04-23 15:28:25
176
原创 ThreadPoolTaskExecutor的配置问题记录
配置问题: 首先使用corePoolSize中的线程,corePoolSize满了之后之后对新的线程排入queueCapacity队列,queueCapacity队列达到了设置的数量后,再根据maxPoolSize的设置数据,继续创建线程(当maxPoolSize > corePoolSize)或者根据策略处理多余任务等(见tt12()及tt13())异步不生效原因之一: 当主类/service类/ExecutorConfig类添加@EnableAsync注解,异步才生效,不然任务还是同步阻..
2021-04-10 17:49:43
754
原创 常量池的一些问题
new String(“12345”) 和 String s = “12345” 的区别1:String strObj = new String(“12345”); Class clazz = String.class; String strObj = new String("12345"); Field[] fields = clazz.getDeclaredFields(); char [] obj = null; Fie
2021-04-01 20:44:16
64
原创 个人理解java参数按值传递
Java 程序设计语言对对象采用的不是引用调用,对象引用是按 值传递的。方法参数传递规则:①一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。②一个方法可以改变一个对象参数的状态(set方法等)。③一个方法不能让对象参数引用一个新的对象。就是方法传递对象参数时。可以修改对象一些属性值,但不能将这个对象引用到另一个对象,因为传递的是对象地址值,而不是这个对象的引用。...
2021-04-01 17:35:23
106
原创 策略模式和模板模式的区别
模板模式在基类中定义整体逻辑的骨架,其中的一些具体实现由子类来延迟实现策略模式已知具体的子类逻辑或算法,将其封装成策略类统并实现基类,根据逻辑组合调用
2021-03-26 17:20:48
115
原创 URI和URL的区别
URI:资源标志符标志一个资源有很多种方式,例如:人的身份证号人的社保账号https://www.url.com/浙江省/杭州市/拱墅区/祥符街道/萍水街地铁A口/穿着羽绒服五分裤沙滩鞋.人;URL:资源定位符一定是个路径并指定到具体文件及文件类型,例如:https://www.url.com/浙江省/杭州市/拱墅区/祥符街道/萍水街地铁A口/穿着羽绒服五分裤沙滩鞋.人;用路径定位到了萍水街地铁A口的某个具体的人。虽然身份证号也可以标识这个人,但是不能定位这个人。这就是UR
2021-03-16 19:45:56
67
原创 springboot开箱即用原理
相信大家都知道springboot的好处,约定大约配置,开箱即用,内置tomcat等等本人也是一直知其然不知其所以然本次以RedisTemplate为例,结合其他博文,了解下RedisTemplate到底是如何被作为bean自动注册到spring容器中的日常开发中,如下引入pom依赖,按照固定格式配置好yml或者properties文件即可在代码中注入使用RedisTemplate,这一切到底是因为springBoot道德的沦丧,还是因spring人性的扭曲,就让本期走进科学,还原故事的真相
2021-02-24 17:34:36
1548
原创 2p C和3p C的区别
2pc二阶段提交调度者boss:开始干活了。分布式事务a:活干好了。分布式事务b:活干好了。调度者boss:都做好了就打卡下班吧(可以提交事务了)分布式事务a:已打卡下班(提交事务)。分布式事务b:已打卡下班(提交事务)。3pc顾名思义 三…阶段提交调度者boss:在吗在吗?还活着吗?还能干活吗?分布式事务a:在的在的。分布式事务b:哎,苟且偷生。调度者boss:既然都活着,那就开始干活吧。分布式事务a:活干好了。分布式事务b:活干好了。调度者boss:都做好了就打卡下
2021-02-22 18:28:04
488
原创 redis两种持久化原理
RDB:保存数据因数据是周期性持久化到.rdb文件,服务宕机会丢失数据部分最新数据AOF:保存命令记录命令行,恢复数据时按照命令恢复数据。
2021-02-02 16:59:25
46
原创 redis单线程基本原理
Redis单线程原理redis是以socket方式通信,socket服务端可同时接受多个客户端请求连接,也就是说,redis服务同时面对多个redis客户端连接请求,而redis服务本身是单线程运行。假设,现在有A,B,C,D,E五个客户端同时发起redis请求,A优先稍微一点点第一个到达,然后是B,C,D,E依次到达,此时redis服务端开始处理A请求,建立连接需要30秒,获取请求数据需要10秒,然后处理数据需要0.1秒,回送数据给客户端需要5秒,总共大概需要45秒。也就是说,下一个B请求需要等待45
2021-02-02 11:37:44
164
原创 jstack 每隔5秒定时监控jvm线程堆栈信息日志脚本
#!/bin/bash num=0 log="/tmp/jstack_thread_log/thread_info" cd /tmp if [ ! -d "jstack_thread_log" ]; then mkdir jstack_thread_log fi while ((num <= 10000)); do ID=`ps -ef | grep java | grep gaea | grep -v "grep" | awk '{print $2}'` if [ -n
2021-02-01 18:18:39
1247
原创 spring源码下载及安装gradle并导入IDEA
我的版本:spring:5.1.xgradle:4.9jdk:1.8IDEA:2018.31:下载spring源码(可选择一个你喜欢的版本,注意版本兼容,自行百度)git地址:https://github.com/spring-projects/spring-framework/tree/5.1.x2:spring使用了gradle构建工具,需要安装gradle#查看是否已安装gradle -version下载安装gradle(可选择一个你喜欢的版本,注意版本兼容,自行百度)下
2021-01-28 11:18:45
441
2
原创 Spring事务REQUIRES与REQUIRES_NEW嵌套场景简单总结
个人总结,如有错误,欢迎斧正。如下8个场景:同类中:无事务方法 嵌套 事务方法 ,事务不生效,因spring 中事务基于代理实现,详细原理及解决请看这个文章 MMM。同类中:REQUIRES 嵌套 REQUIRES_NEW ,REQUIRES_NEW不生效,加入到REQUIRES事务中,原理同上。同类中:REQUIRES(1) 嵌套 REQUIRES (2),其实REQUIRES(2)事务注解也是不生效的,只是加入到REQUIRES(1)事务中,看起来REQUIRES(2)事务注解是生
2021-01-26 18:35:34
2776
原创 mysql查看及解除死锁(附测试锁sql及一位大佬排查index_merge造成死锁的过程)
解除正在死锁的状态有两种方法:第一种:1.查询是否锁表show OPEN TABLES where In_use > 0;2.查询进程(如果有SUPER权限,可以看到所有线程。否则,只能看到自己的线程)show processlist3.杀死进程id(就是上面命令的id列)kill id第二种:1.查看下有锁的事务SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;2.杀死进程id(就是上面命令的trx_mysql_thread_id列
2021-01-25 16:59:20
159
1
转载 Tomcat 最大并发连接数的正确修改方法及修改策略
之后遇到问题最好先查看下官方文档,很多开源项目版本差异很大,官文文档避免走弯路,其实不怕走弯,就怕走错造成损失就西内了????点击这里????
2021-01-21 14:53:55
316
原创 linux 修改ssh端口
编辑sshd配置文件vim /etc/ssh/sshd_config#添加一行如下Port 12570重启服务systemctl restart sshd如果有selinux服务一定要记得关闭,不然sshd修改端口不生效方式1:#编辑selinux配置文件vim /etc/selinux/config#将SELINUX修改为disabledSELINUX=disabled生效需要重启服务器方式2临时修改#执行命令setenforce 0#查看是否生效getenfo
2021-01-18 18:10:08
84
原创 记一次添加服务器主要配置(环境,权限,防火墙白名单,数据库权限,最大请求链接数等)
常用命令安装新服务器可能需要安装一些命令 以下命令若是没有,执行后面命令安装上传/下载 rz/sz :yum install lrzszunzip:yum install -y unzip zipjdk安装安装jdk 查看yum安装支持jdk版本:yum -y list java*#选择具体版本安装yum -y install java-1.8.0-openjdk*查看是否安装成功java -version防火墙添加服务开放端口需要部署tomcat 端口为 808
2021-01-14 20:15:09
375
原创 mysql 插入大量数据的几种方式
mysql 插入大量数据1 挨条insert (不推荐)2 拼接成一条sql 插入,减低连接消耗3 使用存储过程4 使用MYSQL LOCAL_INFILE
2021-01-11 15:50:57
770
原创 linux安装zookeeper
1 官网下载需要的zookeeper版本zoo官网 wget 或者 curl 命令下载到服务器即可2解压修改配置文件 #解压 tar -zxvf apache-zookeeper-3.6.2.tar.gz #修改配置文件 cd /apache-zookeeper-3.6.2/conf mv zoo_sample.cfg zoo.cfg3启动zoocd /apache-zookeeper-3.6.2/bin#启动 或者使用./zkServer.sh start-foregroun
2021-01-09 16:59:05
90
原创 yum 命令
1.使用yum安装和卸载软件,有个前提是yum安装的软件包都是rpm格式的。安装的命令是,yuminstall ~,yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,那么最好,下载安装;如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断;删除的命令是,yum remove ~,同安装一样,yum也会查询数据库,给出解决依赖关系的提示。其中~代表软件名1.用YUM安装软件包命令:yuminstall ~2.用YUM删除软件包命令:yum
2021-01-07 11:24:50
510
原创 几个比较好的学习网站整理一下
1.在线数据模拟-你值得拥有:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html2.在线数据模拟2(中文阉割版)https://iacj.github.io/react-datastructer/#/hashtable3.在线题库(刷题狂魔)https://leetcode-cn.com/4.java复习资料(怎么能少了我全球最大同性交友网站呢?)https://github.com/Snailclimb/JavaGui
2020-12-22 18:27:38
184
原创 强引用、软引用,弱引用的区别及gc回收策略
上周同事技术分享,本就为菜鸟的我叕忘记了强引用,软引用,弱引用的区别。本着好记性不如烂笔头的原则,将整理及测试的demo贴出,供之后复习。 -0.0-一:1 强引用:eg: String stongReference = new String(“java”);对象存活时即使内存溢出也不会进行回收,如果要中断强引用和某个对象之间的关联,可以显示地将引用赋值为null eg:ArraryList的clear方法2 软引用:内存足不回收,内存不足回收 ;类:SoftReference3 弱
2020-12-22 16:16:26
510
3
原创 linux firewalld 防火墙添加开放端口
1.查看防火墙状态相关 #查看防火墙状态 systemctl status firewalld #开启防火墙 systemctl start firewalld #关闭防火墙 systemctl stop firewalld #开启防火墙 service firewalld start #若遇到无法开启
2020-12-19 18:19:16
9262
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人