- 博客(83)
- 资源 (2)
- 收藏
- 关注
原创 Java实现日志全链路追踪.精确到一次请求的全部流程
广大程序员在排除线上问题时,会经常遇见各种BUG.处理这些BUG的时候日志就格外的重要.只有完善的日志才能快速有效的定位问题.为了提高BUG处理效率.我决定在日志上面优化.实现每次请求有统一的id.通过id能获取当前接口的全链路流程走向.实现效果如下: 一次查询即可找到所有关键信息.不再被多线程日志进行困扰了.
2024-07-01 11:39:45
645
1
原创 PageHelp插件在复杂sql下引起的Having无法识别错误及其解决方案
系统中有一个复杂SQL内嵌套了多个子查询.在改动时需要将SQL的最后一行加上having来做额外的过滤处理. 添加完having语句后发现SQL能够正常执行就直接将代码提交到了测试环境.结果在测试环境报错。
2023-09-22 09:20:08
586
原创 基于注解实现接口幂等机制防止数据重复提交
接口幂等性是指无论调用接口的次数是一次还是多次,对于同一资源的操作都只会产生相同的效果。比如: 一个订单记账的时候,会同步扣减库存数量,如果记账的按钮被用户多次触发,就会导致一个订单库存却被多次扣减的情况. 如果对每一个接口都进行特殊的处理会导致工作量增大,并增加了代码可维护性.我下面的代码将通过实现幂等性来避免多次扣减库存.
2023-08-04 11:56:04
535
原创 mysql进阶: mysql中的锁(全局锁/表锁/行锁/间隙锁/临键锁/共享锁/排他锁)
mysql中的锁(全局锁/表锁/行锁/间隙锁/临键锁/共享锁/排他锁)
2022-08-05 17:25:13
1189
2
原创 分布式事务的解决方案(理论篇)
在微服务,分布式项目为主流架构的现在,分布式事务是一个不得不谈的技术点,本文将作者理解到的分布式事务进行记录.1:事务是什么?我之前的博客有事务的介绍本文就不介绍基础知识了.mysql进阶之路:mysql中的事务相关知识https://blog.csdn.net/wang5701071/article/details/123815090?spm=1001.2014.3001.5502java中的事务及使用https://blog.csdn.net/wang5701071/article/de..
2022-05-05 16:43:55
409
原创 MySQL进阶:sql性能分析
1:sql的执行次数分析: sql: show global status like 'com_______'解释:通过该命令可以查看当前数据库下的增删改查的使用次数,来采取对应的优化处理. value值就是执行的次数.2:慢查询日志sql: show variables like '%slow_query_log%'; 慢查询日志会记录超出自己设置的时间还没有执行完毕的sql. 默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,如果不是调优...
2022-04-02 16:20:02
10042
1
原创 mysql进阶之路:mysql中的事务相关知识
1:事务是什么?事务(Transactional) 就是把多个要做的操作组合成一个整体.利用事务的特性来保证操作的安全性,如果一个事务做到一半出现任何错误,就会进行回滚操作.来恢复成最初的模样.2:事务的特性 (具有ACID的特性)(1) A 原子性(atomicity) : 事务是一个不可分割的工作单位,事务中的操作要么都修改,要么都不修改。(2) C 一致性(consistency):事务在完成时,必须是所有的数据都保持一致状态。(3) I 隔离性(isolation):...
2022-03-30 15:37:24
1566
原创 并发编程:JUC下的同步实现之AQS理解
1:AQS是什么AQS:全称AbstractQueuedSynchronizer(抽象类的队列式同步器). 是JUC包下的一个抽象类. aqs因为是抽象类,本身并不提供同步的接口,但JUC下的其他同步组件都是基于aqs来进行实现同步的,比如(:ReentrantLock、CountDownLatch、Semaphore)这些都是继承自aqs.所以aqs在并发编程中是至关重要的知识点.2:实现AQS的类AQS支持线程抢占两种锁——独占锁和共享锁:实现独占锁的类:ReentrantLock、
2022-03-18 20:15:00
461
1
原创 并发编程:线程池ThreadPoolExecutor的理解
ThreadPoolExecutor是java.util.concurrent包下的线程池,继承ExecutorService类.《阿里巴巴Java开发手册》中强制线程池不允许使用 Executors 去创建,而是通过 new ThreadPoolExecutor 实例的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。
2022-03-11 17:11:44
548
原创 并发编程:java中的锁ReentrantLock的理解
1:ReentrantLock的介绍ReentrantLock是java的并发包JUC下的一种锁机制.其继承了LOCK接口,功能与synchronized锁相似,由此经常会与synchronized锁进行对比.2:ReentrantLock与synchronized的区别相同点: 两者都是 独占锁, 都可重入不同点:1:synchronized是自动加锁,解锁,不需要代码进行控制,易于操作.ReentrantLock需要手动加锁解锁并且次数需要一致,不易操作.2:synchroniz
2022-03-09 20:12:05
384
原创 并发编程: 线程八锁的情况示范
线程八锁即多线程的情况下由不同的调用方法或者限制来判断不同的执行结果.下面进行一一演示示例1:这个例子的执行结果是 1,2 或者2,1,因为调用方法的时候 用了synchronized关键字,所以两个线程是互斥的,就看cpu先分配给线程a还是b了示例2: 结果和实例1的结果一样,但有不同的地方就是,线程里面有休眠时间,两则是互斥的,所有执行a的时候会等待1秒才执行2示例3:这个示例多了一个方法c 但是没有用synchronized来进行锁操作, 所以方法c在与 a,b 两个之间是并行的, .
2022-03-06 18:45:43
278
原创 并发编程:java中线程的六种状态
学过计算机操作系统的都了解过线程由五种状态组成,分别为: 新建,就绪,运行,阻塞,死亡这五种状态。但java中线程的状态却有六种组成.通过Thread.java源码来看.
2022-03-01 15:21:50
1117
2
原创 sql优化之explain关键字分析
expain是非常重要的关键字,要善于运用它.通过explain我们可以获得以下信息:表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些索引被实际使用 表之间的引用 每张表有多少行被优化器查询废话不多说 ,使用方法:explain + sql语句。会出现下方截图.根据下方的字段来进行解析sql的问题所在 explain select * from user_test出现了下列数据.1:id字段id可以认为是查询序列号,每一个id代表一个sele...
2021-06-10 17:10:13
1953
原创 设计模式之双锁校验单例模式的理解
设计模式提供了在软件开发过程中面临的一些问题的解决方案。单例模式对于大家来说都不陌生了,单例模式也分为饿汉模式,懒汉模式,本文主要讲解的是并发情况下的单例模式 voliate+sync.
2021-05-28 18:27:13
350
2
原创 SQLDataException: Cannot determine value type from string
1 问题描述:在用mybatis查询出数据传给实体类List时,出现了Cannot determine value type from string XXX 错误.网上说是实体类字段与数据库不对应导致的. 我进行了一一对比,发现没有区别.2:解决办法在实体类添加一个无参的构造函数.就能正确运行了.以前用的都是@AllArgsConstructor进行全参的构造函数,也没遇见这个问题. 第一次遇见这么奇怪的问题.坐等大佬解答...
2021-04-02 17:16:29
2828
2
原创 Maven引入本地jar包无法使用的解决方法
1:问题描述Maven项目引入本地jar后,无法使用jar的方法.说明:本地有自己写的一个jar包项目.在另一个项目中需要使用这个本地jar包.于是根据网上的方案引入本地jar包.(1) 在src同级目录下创建lib文件夹. 2,把本地jar包放入lib中 3,修改pom文件将jar包引入新的项目中. 最终的效果如下. 如图所示,在maven仓库中 本地jar已经引入. 但问题随之而来. 本地jar的方法无法使用.提示找不到2:解决方法:修改本地jar的打包方...
2021-03-28 22:24:11
12512
6
原创 人人博客_系统架构图_初版
最近打算写一款开源软件来当毕业设计,于是选了一个博客项目.目前的设计思路采用公司的架构: 前端+大中台+后台的架构.架构图如下,思考不合理的地方,或者架构有问题的地方,欢迎指正.
2021-02-21 10:13:53
1204
原创 对于SpringCloud项目架构的理解_中台项目的介绍
本文章写的项目规范以及架构都是我在公司所体会到的,目前该架构师已经去了蚂蚁金服.羡慕大佬;1:项目架构介绍1.1:公司采用小前端+大中台+后台的模式,来快速适应业务上的快速变化.什么是中台? 我个人的理解为.将所有项目的共同业务分离开来,然后把共同的业务塞进同一个微服务中;列如:一个公司有多个项目, 每个项目呢都会有会员模块. 订单模块.等相同的业务. 把所有项目的会员模块都由一个微服务来提供接口,订单模块由一个微服务提供接口.把这些微服务汇总起来呢,就是整个公司的中台.也...
2021-01-20 17:14:55
954
2
原创 SpringSecurity进行自定义登录页面
1:引入SpringSecurity jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>2: 在resources文件夹下的stat...
2020-12-30 14:22:23
1966
1
原创 项目启动报错: Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ 解决方案, mybatis踩坑
1问题描述在我搭建项目的时候采用的是SpringBoot+Mybaits的架构.于是我再创建项目的时候 直接让idea进行整合. idea采用了spring-boot-starter-XXX 系列的框架版本来作为maven的jar包, 注意:问题就出在这在我创建后各种demo.写好配置文件后测试的时候发现项目竟然无法启动.报错如下Error creating bean with name 'adminDao' defined in file .....Property 'sqlS...
2020-12-23 16:45:00
10083
4
原创 CorsRegistry SpringBoot的解决跨域方式介绍
1:CorsRegistry是什么?CorsRegistry的全称为Cross-Origin Resource SharingRegistry,直译过来就是跨域资源共享登记。是spring中解决跨域的一种方式需要在pom文件中引入jar包.<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-...
2020-12-22 15:07:15
7550
1
原创 Nacos无法访问_服务器异常踩坑记录.由docker,mysql导致 .
Nacos服务器异常踩坑记录.由docker,mysql导致 .场景:在我重启阿里云服务器后,启动各种镜像,各种jar包后.却发现项目无法正常访问.naocs页面也无法进入.由于我的中间件 mysql redis nginx 这些都在docker中镜像生成的.最终导致了这个异常发生.docker在创建nacos镜像的时候 需要些mysql的ip地址, 而镜像的ip地址是由docker随机分配的.所以每次重启后,都需要重新run nacos来更新mysql 的ip地址.d...
2020-11-20 17:55:34
2921
原创 CentOS增加虚拟内存
最近在搭建自己写的博客网站,使用的是cloud+vue项目.没想到的是微服务太占内存了.只启动了一些中间件,三个微服务.我阿里云2H4G的服务器就快扛不住了.为此只能进行扩充虚拟内存了.swap分区的创建1、查看磁盘使用情况free -h 因为我之前增加了交换空间4G,所以Swap会显示4G,并且已经使用了1G了2、添加Swap分区使用dd命令创建名为swapfile 的swap交换文件(文件名和目录任意):dd if=/dev/zero of=/v..
2020-11-20 15:48:41
951
原创 mybatis foreach执行多条sql报错的解决方法
mybatis foreach执行多条sql报错的解决方法今天在用mybatis执行foreach更新操作时报了奇怪的错误.sql语句是没有任何问题的.sql拿出来直接能运行.但是mybatis就是不能运行.而我传递一条数据的话mybatis能运行,但是两条以上数据就会报错后来发现是mysql不支持执行多条sql语句.为此需要再数据源后面加上一句话.就可以执行多条sql了&allowMultiQueries=true...
2020-11-17 16:29:09
1607
3
原创 springBoot项目启动报错Error running ‘WebApplication‘: Command line is too long.
1:问题在启动boot项目时,出现Error running 'WebApplication': Command line is too long. Shorten command line for WebApplication or also for Spring Boot default configuration.2:解决方法到该项目文件夹.idea/workspace.xml中找到<component name="PropertiesComponent"> ...
2020-11-05 17:44:50
3860
原创 IDEA开启DashBoard
三、如何配置自动启动Run Dashboard1.找到.idea下面的workspace.xml文件中的这些代码<span style="color:#000000"><code><component name="RunDashboard"> <option name="ruleStates"> <list> <RuleState> <option name=...
2020-11-05 17:38:33
261
原创 nacos无法修改配置文件Mysql8.0的解决方法
1:故障描述我的项目采用nacos+mysql来保存读取配置文件.今天在nacos中修改配置信息.提示报错.显示的当前只能读,不能写.2:解决方案下载一个 mysql-connector-java-8.0.16.jar包 把它放到nacos\plugins\mysql中 plugins\mysql这个文件夹需要自己创建然后重启nacos.就能修改了.3:问题原因nacos与mysql8.0版本冲突导致的....
2020-11-04 15:56:31
2296
4
原创 1251- Client does not support authentication protocol MySql错误解决方案
1:问题描述在navicat中登录的时候发现这个问题.mysql版本为8.0.2:解决方法1.打开命令行小黑屏,进入MySQL的bin目录,然后输入mysql -u root -p,登录进去2.然后输入ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下root用户的密码3: FLUSH PRIVILEGES; #刷新权限返回navicat登录,..
2020-11-04 14:38:16
460
原创 深圳民太安智能二面_秋招第一份offer
2020/9月面的.目前已经收到该公司的意向offer. 这场面试覆盖范围比较广,但偏基础,校招嘛,考察的是知识体系覆盖的怎么样.java基础1 == equals区别== 比较基本数据类型时,比较是值.比较引用类型时,比较的是地址值equals 情况 1:类没有覆盖equals()方法。则通过 equals()比较该类的两个对象时,等价于通过“==”比较这两个对象。使用的默认是Object类equals()方法。 情况 2:类覆盖了equals()方法...
2020-11-01 09:57:40
532
2
原创 mysql导入导出数据到excel表日期出现问题
1:问题描述今天我在导出sql数据的时候,发现导出excel的日期竟然不对.数据库中的列是 datetime格式, 但是导出到excel后日期变成了日月年.数据库中的日期导出到excel后的日期这种问题导致了导入也会报错2:解决方案网上有人说 在excel上修改单元格的格式为日期就行了. 但是我用的wps实际并没有任何作用...
2020-10-29 16:37:31
4328
原创 HTTP常用的方法及status状态码
HTTP常用Method列举:1. HEAD ---获取报文头部信息。2. GET --- 返回报文主体信息,不会对数据产生任何影响。3. POST --- 传输实体主体,用于给服务器发送数据,如表单提交等4. OPTIONS --- 询问支持方法5. PUT --- 传输文件,报文主体中包含文件内容,保存到指定URI资源的存放位置6. DELETE --- 删除指定URI下的指定资源。-------------------------------------------..
2020-10-13 11:15:56
368
原创 RESTful和RPC
1、RESTful是一种软件架构风格,用于约束客户端和服务器交互,满足这些约束条件和原则的应用程序或设计就是RESTful。比如HTTP协议使用同一个URL地址,通过GET,POST,PUT,DELETE等方式实现查询、提交、删除数据。RPC是远程过程调用,是用于解决分布式系统服务间调用的一种方式。RPC采用客户端与服务端模式,双方通过约定的接口(常见为通过IDL定义或者是代码定义)以类似本地方法调用的方式来进行交互,客户端根据约定传输调用函数+参数给服务端(一般是网络传输TCP/UDP),服务端处理.
2020-10-13 11:12:43
378
2
原创 二叉树之_哈夫曼树_哈弗曼编码
哈夫曼树又称最优二叉树 给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。名词解释路径:在一棵树中,一个结点到另一个结点之间的通路,称为路径。图 1 中,从根结点到结点 a 之间的通路就是一条路径。路径长度:在一条路径中,每经过一个结点,路径长度都要加 1 。例如在一棵树中,规定根结点所在层数为1层,那么从根结点到第 i 层结...
2020-10-12 11:37:53
2010
1
原创 java零碎易错知识点笔记_持续更新
1: java初始化的加载顺序为:父类静态成员变量, 父类静态代码块 ,子类静态成员变量 ,子类静态代码块 ,父类非静态成员变量,父类非静态代码块,父类构造函数,子类非静态成员变量,子类非静态代码块,子类构造函数,...
2020-10-09 14:26:21
542
1
原创 java面试题_有赞二面(1)_java面经汇总_ 2020-09-19
最近在准备有赞的面试,看了下相关面经,感觉都是地狱级别的.......... 心都凉了,还是等春招吧.题目来自牛客, 题的答案都是我个人理解的或网上的参考,仅仅只作为复习用.因个人水平有限,不合理的地方请多多指正.1.HashMap链表转红黑树后会不会再转会链表,转链表的阈值是多少,为什么要设置为这个值?HashMap在jdk1.8之后引入了红黑树的概念,表示若桶中链表元素超过8时,会自动转化成红黑树;若桶中元素小于等于6时,树结构还原成链表形式。原因:红黑树的平均查找长度是lo..
2020-10-08 16:18:00
693
3
转载 spring如何解决缓存依赖_spring的三级缓存
前言循环依赖:就是N个类循环(嵌套)引用。通俗的讲就是N个Bean互相引用对方,最终形成闭环。用一副经典的图示可以表示成这样(A、B、C都代表对象,虚线代表引用关系):注意:其实可以N=1,也就是极限情况的循环依赖:自己依赖自己另需注意:这里指的循环引用不是方法之间的循环调用,而是对象的相互依赖关系。(方法之间循环调用若有出口也是能够正常work的)可以设想一下这个场景:如果在日常开发中我们用new对象的方式,若构造函数之间发生这种循环依赖的话,程序会在运行时一直循环调用最终导致内
2020-10-08 10:48:20
958
2
原创 java面试题_有赞一面(1)_java面经汇总_2020-09-30
Java基础1、HashMap的底层如何进行实现的1.8版本后 底层采用 (数组+链表+红黑树)HashMap 通过 key 的 hashCode 经过扰动函数处理过后得到 hash 值,然后通过(n - 1) & hash判断当前元素存放的位置(这里的 n 指的是数组的长度),如果当前位置存在元素的话,就判断该元素与要存入的元素的 hash 值以及 key 是否相同,如果相同的话,直接覆盖,不相同就通过拉链法解决冲突。当链表长度大于8的时候,转换为红黑树.2、Arra...
2020-10-05 15:31:48
513
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人