自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 资源 (1)
  • 收藏
  • 关注

原创 不可忘的一个值班日

在“我要发”(518的谐音)的日子竟然碰上了一次线上事故!!!目录1、描述事故2、临时解决3、汲取教训1、描述事故表现形式:1)起初,收到告警通知,大概内容就是近1分钟内,某个pod的所有请求的RT都大于了2s。这时候觉得有点不对劲了,但没特别在意。内心想着2s还能接受吧。2)然后,不间断的告警。这时发现某几个接口的95线都达到了8s。到这里就开始慌了。3)再接着,系统的其它接口(一些逻辑比较简单的接口)响应都提示了“系统异常,请稍后再试”。这时可以理解为,部分系统挂了!原因所在:快速提.

2022-05-18 21:52:18 367

原创 借助Dubbo过滤器实现服务间传值

你知道的越多,不知道的也越多!基于现在的微服务架构,一个系统背后可能是几十个service去做支撑。那如何在多个服务间传递值呢?场景描述:一个用户下单某个商品,中间涉及到的服务有 (1)网关service -> (2)某个业务service -> (3)订单中心service -> (4)支付中心service…这几个服务其实都需要用到用户身份。首先网关service需要完成 用户身份校验的工作,当解析出用户信息的时候,如何传递到下游服务呢?不可能说用参数形式吧?因为这.

2021-10-08 19:57:04 695

原创 PageHelper底层源码了解一下

你知道的越多,你不知道的也越多使用过Mybatis框架的亲故们肯定都听说过PageHelper这个分页神器吧?简单的一句话PageHelper.startPage(pageNo,pageLimit)就可以帮我们实现分页!YYDS有没有?废话不多说,直接进入源码探索阶段吧.日常使用由于目前很多项目都基于SpringBoot,引入PageHelper也是极其的方便.这里不提供业务代码.相信聪明的你肯定会自行百度,或者直接拿日常项目里的代码作为学习样本.来来来,我这里随手写了一个demo,主要就是.

2021-10-05 16:32:56 5514 2

原创 ThreadPoolExecutor的线程复用底层的源码了解下?

你知道的越多,不知道的也越多!线程池源码1. 整体思路2. 学习源码想必大家对线程池都有了解吧,必须掌握的知识点有:构造函数里的入参列表、常见有哪几种线程池以及使用场景、为什么要用线程池、线程池接受到一个任务后的处理流程等等。本文对以上问题不做说明了,主要是想讲明白其中的“线程复用”底层的原理。啰嗦一句: 看源码不要一上来就死磕每一行代码(相信我死磕撑不了几分钟),先掌握大体思路,然后再仔细品。1. 整体思路相信以下这张图大家都很熟悉了:其实就是线程池接受任务的处理规则。那图里的规则哪来.

2021-10-02 15:57:35 172 1

原创 原子类AtomicInteger的原理回顾一下

你知道的越多,你不知道的也越多!聪明的大家,都知道在高并发的场景下,**i++**这种操作是线程不安全的。原因大家都懂吧?啊?大家说啥?好吧,你们说的都对,的确只有我不懂。呜呜呜~ 来,你们告诉我吧。我现在就记在我的小本本上。1.i++ 为什么不安全i++ 看似一句代码,实际底层是3条指令:取值+加1操作+最新的值回写。假如2个线程,同时对一个i=0变量进行i++操作。就问下有没有如下的可能性发生?两个线程都进行i++操作但是,最终结果还是1?其实是有的! 如果不信,可以使用两个Thre.

2021-10-02 13:07:46 287

原创 Mybatis拦截器+Cat监控+SpringBootStarter自动装配+实现Sql跟踪

你知道的越多,不知道的也越多!之前就非常好奇在公司内部Cat(大众点评监控系统)上可以看到每次调用链路里的Sql日志。下图来自cat某个链路的日志截图。跟踪SQL有啥好处么?当然有阿, 方便排查慢SQL 。你要知道,如果一个request timeout,QA人员天天吐槽你,经理气的炸毛,然后你还在抓脑门,到底哪里慢了,这可还行?原以为Cat自身支持该功能,其不然,是公司二次开发,我只能说YYDS~其实主要涉及到的几个知识点已经在标题里提到了。下图是一个思维图,我也不知道用什么图比较合适。.

2021-09-26 18:56:47 339

原创 死锁了该怎么办?

其实发生死锁的地方有很多,比如MySQL、日常业务代码里抢锁。那一般解决办法有哪些呢?其实理清楚死锁的原因是什么,就好理解哪些应对死锁的方案啦。原因:资源竞争例子:线程1抢到了锁A -> 业务执行 -> 抢占锁B线程2抢到了锁B -> 业务执行 -> 抢占锁A线程1拿到了锁A,但迟迟未拿到了锁B,陷入了无限等待中。。。线程2拿到了锁B,但迟迟未拿到了锁A,陷入了无限等待中。。。解决:业务执行之前,就拿到锁A + 锁B 。并保证两个抢锁是原子操作。原因:忘记释放

2021-09-25 15:25:45 167

原创 MySQL select ** for update 之后就无法读?

你知道的越多,不知道的也越多!想必大家早有所闻,在select语句后加上 for update 是mysql里的读锁(s锁),加上lock share in mode 是写锁(x锁)。读锁:共享锁就是多个事务对于同一数据可以共享一把锁(其它事务可以抢占读锁),都能访问到数据,但是只能读不能修改;写锁:排他锁就是不能与其他锁并存,如一个事务获取了一个数据行的排他锁,其他事务就不能对该行记录做其他操作,也不能获取该行的锁。那面对文章标题的灵魂拷问?到底可以读么?答案: 可以读,可以读,可以读。.

2021-09-25 14:59:53 2447

原创 sql类型不符合索引失效

你知道的越多,不知道的也越多!这种因字段类型不匹配的情况,实际在开发中不是很常见。但是随着系统数据模型越来越多的情况下,也可能会出现,字段未统一导致的。表结构假设两张表: 用户表 、用户城市code表。2张表可以通过cityCode关联。并且各自都基于城市code做了索引sqlCREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `area_code` tinyint(4) DEFAULT '0' COMM.

2021-09-25 12:30:27 373

原创 回忆下什么是双亲委派机制吧

你知道的越多,你不知道的也越多!该篇主要是自己的一个小总结吧,内容知识点主要来源于各大牛的一些博客。外婆问我:什么是双亲委派原则?1.前提须知(1)该知识点主要是和java类加载有关系。来,那什么又叫做java类加载呢?别急,总结下就是将一个java文件要加载到JVM里。怎么感觉《运行时的数据区》怎么那么像《JVM的内存模型》啊?额,,,别闹,简直就是一个好吧。如果想具体了解,请移步:JVM 运行时数据区详解,写得非常好!(2)那类加载器到底有哪几种呢?答案:3种通过代码来继.

2021-09-25 08:15:04 98

原创 Charles在windows下的安装以及踩过的坑

文章目录1、Charles下载2、安装2.1 电脑端安装2.2 手机端配置3、踩过的坑3.1 手机设置了Charles的代理,无法连接网络3.2 Charles 抓包都是UNKNOWNCharles其实一款代理服务器,通过将自己设置成系统的网络访问代理服务器,使得网络请求都通过它来完成,从而实现网络封包的截取和分析。1、Charles下载网盘地址供上,提取码:zkds 。里面还含有安卓版的charles证书,后续步骤需要用到。当然也可以自己去官网下载哦~2、安装2.1 电脑端安装安装Ch

2020-12-05 02:36:09 2826

原创 Redis批量执行命令

只需要两步骤!!!1、编辑预执行的批量命令建议直接找台Linux服务器,使用Linux自带的文本编辑,避免Window 、Linux换行符不一致,还需要做换行的转换。-- 新建命令文档vim batch.txt-- batch.txt中输入批量命令lpush batch:queue 1lpush batch:queue 2lpush batch:queue 3lpush batch:queue 42、cat + redis-cli 批量执行 cat batch.txt | r.

2020-11-29 18:55:18 2055

原创 记一次奇妙的启动异常排查过程java.lang.NoClassDefFoundError

奇妙的异常(1)异常症状(2)挠头思考 WHY ?(3)解决办法(1)异常症状这个异常是一次SpringBoot项目启动的时候发生的,我先直接贴图,从日志上看,我直白翻译之后的理解:无法生成【xxx】的bean ,由于该bean的init方法报错了。报错又是因为没有找到DefaultValueOperations.class。(2)挠头思考 WHY ?知道日志的意思之后,我立马就定位到该【xxx】bean的init 方法。看了很久,压根就没有用到任何和Redis引用,怎么就赖上了这个init 方

2020-11-13 17:29:19 231

原创 No qualifying bean of type bean but found

1、报错分析报错日志的表面意思:希望指定一个明确的bean进行导入,但现容器中有2个bean ,分别是重点: 意思就是@Autowire 的时候,Spring 需要将 beanId= grouponService 的bean 注入到变量中,但容器里没有对应的bean对象。2、探索原因继续查看项目里在哪里配置了bean的注入,最后发现了两处:// 会向容器中导入beanId = @Reference com.xxx.trade.remote.GrouponService 的bean

2020-11-02 20:34:33 525

原创 Zookeeper启动报错~找不到或无法加载主类

按照之前自己写的博客安装zk, 在启动的时候却发现 就是启动不了,百思不得其解 , 额 , 唯一的区别就是zk的版本不一样了。最后通过查看启动日志 ,一般都是在zk的log路径下,查出竟然报了如下的错误。[root@centos-1 logs]# tail -n 200 zookeeper-root-server-centos-1.out 错误: 找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain解决方法换安装包!!!出现.

2020-10-26 20:26:50 1938

原创 动态代理?JDK Proxy 和 CGLib 有什么区别?

文章目录动态代理是什么?JDK代理和CGLib代理的简单使用区别分析别告诉我,作为Java开发工程师你没用过Spring;别告诉我,不知道Spring充分运用了AOP思想;别告诉我,不知道AOP思想的实现没有用到动态代理。如果这些问题,全都不知道的话,emmm… 没事,大兄弟,我们一起学习吧,我们还年轻不是嘛!动态代理是什么?在这之前不得不提下Java的设计模式-代理模式。代理模式主要是代理类为委托类负责于预消息处理、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关

2020-10-01 00:23:47 365

原创 FutureTask 会 “吞掉“ 异常是怎么回事?需要注意些什么?

这次 , 没有废话,切入正题!在Callable#call方法里,如果没有try-catch的情况下,如果call方法运行时,一旦出现异常,那么该异常会被Future所接收到,且只有调用 Future # get 方法才会抛出。也就是说,如果你不调用get方法,做些异常处理的话,真的发现不了问题发生在哪?import java.util.concurrent.Callable;public class MyCallable implements Callable<String> {.

2020-09-28 14:58:29 2264 1

原创 别因为ThreadLocal有内存泄漏就不用它了

扯点废话,不想看前言的大佬,“来,大佬,请您跳过前5行~”真的,这个ThreadLocal 是不是经常被面试问到?是不是都问吐了 ? 以前我不懂的时候,听到什么泄漏或者内存溢出的词,吓得我都不敢用了,emm,说完这句话,我怎么感觉我有点怂呢?诶,屏幕对面的小哥哥、小姐姐给点面子哈。0.01克的面子,我也很开心的 。Please ! [????????????????????]使用案例一般使用package test;public class ThreadLocalTest { pu

2020-09-26 00:40:04 272

原创 判断一个字符串是否是JSON字符串的坑

开篇(扯点闲话)提起JSON,想必大家脑海里能浮现出几个常用的JSON框架吧 :Jackson : Jackson是一个开源的基于Java的json解析和处理类库,它可以轻松的将Java对象转换成json对象或xml文档,同样也可以将json对象或xml文档转换成Java对象,它简单易用并且性能优秀,Jackson社区相对活跃,更新速度也较快,在Spring mvc框架默认也采用了该类库进行json格式的输出。Gson : GSON是Google开发的一款开源的JSON解析处理类库,用于转换Jav

2020-09-08 10:16:15 6649

转载 virtualbox安装centos7的坑(笔记)

下载系统的镜像文件参考:Centos镜像下载我选择了阿里云的链接,下载速度的确很快。下载的版本是DVD版,也是文章推荐的版本。启动后配置网络链接当系统安装好之后,重启系统的时候,发现ping 百度都ping 不通。参考:Centos7网络连接不上:Network is unreachable 解决方案排查方法:先确定下虚拟机里的系统和主机的网络连接方式是:桥接再确定下网卡是否开启:参考上文修改配置文件,并重启下网卡。发现下载东西很慢,或者加载镜像源很慢参考:阿里云镜像开源官网选择【c

2020-08-26 11:48:54 452

原创 Java线程池真的很重要,了解一下?(笔记篇)

主要内容来源于zycxnanwang的博客源文章:《Java线程池,你五分钟讲完,而我和面试官聊了半小时》自己看完简单总结下,方便日后快速的回忆起来。(1)核心线程数 < 最大核心线程数 & 阻塞队列足够可以容纳所有的任务import com.google.common.util.concurrent.ThreadFactoryBuilder;import org.apache.tomcat.util.threads.ThreadPoolExecutor;import ja.

2020-07-23 16:32:12 275

原创 沃特?SimpleDateFormat在多线程下不安全???

最近公司统一了下开发规范,其中有一条就是使用SimpleDateFormat时候不要设置成类的静态成员变量,被各个方法引。而是,建议改成方法内部变量,或者借助下ThreadLocal。作为菜鸟的我,当时听到时,内心绝对的是无数个问号,当然了,听会的时候还是要强行装淡定嘛,假装我懂了。emm,,大家不要学我哦,所谓,子曰:知之为知之,不知为不知,是知也!To 孔子老师:我错了,所以我来认真学习了,写下这笔记可好?问题复现废话别说了,赶紧重现下,别想糊弄到屏幕面前的各位大佬 !!!分析原因解决办.

2020-07-21 15:24:48 140

转载 天天见的单例模式了解一下

参考链接如下:为什么要使用单例模式Java单例模式的5种实现方法这篇内容主要是自己看完网友写的博客之后的一点点总结。为什么要用 ?第一个问题的答案,可以看开头的推荐的第一篇博客里。第一篇我觉得写的挺好的,纠正了一些误区。那怎么去实现 ?第二个问题的答案 ,具体可以看开头的推荐的第二篇博客。这里还需要知道单例模式实现的几个共同点:私有的构造函数,对外无法实例化;由于外部无法实例化,但是还是需要调用呀,那所以要提供给一个能获取单例类的实例对象的方法啊。一般该方法的名字 : createI.

2020-07-20 13:59:05 124

原创 MongoTemplate直接将Json存入MongoDB

记住两点就好了(1) 记住MongoTemplate(2) 使用 com.alibaba.fastjson直接看代码,一看就懂的记住Json如果选择了其它的,可能会给你带来惊喜的哈.出现member ,出现name,value取出来用JSONObject 接口,怎么获取到ObjectId的16进制的字符串插入之后会出现_class...

2020-07-17 18:09:46 4336

原创 Putty将公钥私钥文件改成ppk文件

相信Git的使用已经成为IT人士必备的知识点了,那你有没有遇到过使用SSH的方式连接,而不是

2020-07-17 15:58:31 4593

原创 Cookie怎么设置了不生效

今天本来写一个简单的登录demo , 其中有个思路,就是直接将token 存在cookie 中,这样后端接口进行token校验的时候,可以直接从Cookie 中获取但是,等我全部写好了,悲剧发生了,Cookie 就是没看见。好想贴一张狗头的图片,但我现在没时间去搜去,毕竟现在快凌晨了啊啊啊啊 。赶紧写完这篇博客要紧 !直接说下,我错哪了,我错就错在Cookie的domain 和 path 的值 设置错了,呜呜呜呜呜呜呜呜呜 ~前端实现Cookie设值注意: 需要引入jquery.js 和 c.

2020-07-07 23:57:33 4580

原创 微服务如何接收下游服务抛出的异常

相信大家在使用微服务的过程中,必定会遇到远程服务的调用,既然这样,必定也会存在一个如何优雅的接收调用下游服务的响应。解决思路(1)统一接口响应实体每个微服务接口的响应类型统一,比如我这边都统一成ResponseBaseDTO类。这个类可以做成一个底层共通的jar包,或者做成一个共通的微服务。import lombok.AllArgsConstructor;import lombok.Builder;import lombok.Getter;import lombok.NoArgsConst.

2020-07-07 14:25:19 4458 4

原创 记录CountDownLatch的一次简单使用

最近这边连续下了好几天的雨了啊啊啊,你那边呢?嗯哼?这开场的感觉不对呀,好尬,哈哈哈哈~直接进入正题吧。什么是CountDownLatch这个是在JDK1.5开始就出现的,并发编程工具类。这里偷懒下,直接看下源码上的类注释吧,相信你看完就差不多大概知道这个干啥子用的了。在这里,请允许我用本人的蹩脚英文稍微翻译下:可以允许一个或者多个线程等待,直到一组在其它线程里的操作都完成,然后再执行。初始化CountDownLatch时提供一个count数,主方法一直将被阻塞直到多次调用CountD.

2020-06-16 18:21:00 211

原创 SimpleDateFormat的时区记录

在开发过程中,经常碰到时区问题,一般解决思路,数据库时区问题,服务器时区,还有就是数据返回出去的时候(例如spring jackson )在这几个解决思路中,有些是要用到Date 和 String 进行转换的。所以这我想记录下SimpleDateFormat平日使用可能会被忽略的知识点Date 转 String public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFo.

2020-05-20 22:37:51 752

原创 SpringBoot追加自定义的MessgeConverter

自定义messageConverter@Configurationpublic class WebConfiguration implements WebMvcConfigurer { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { MappingJackson2HttpMessageConverter con

2020-05-20 16:02:56 609

原创 使用异常枚举类让if( condition ){ throw Exception }变的简洁点吧

现在大多数的接口项目,对于一些业务异常处理,都是直接以先来看一段非空判断抛出异常的代码 User user = userService.findUserById(1); if(user==null){ th }

2020-04-30 17:47:04 613

原创 xxl-rpc remoting request fail, http HttpStatus[302] invalid

初次体验 分布式任务调度 xxl-job ,参考网上很多入门教程以及给力的源码 ,相信你也可以快速地在项目里整合起来。废话不多说,在我启动执行器的项目的时候,竟然启动失败了, 直接po上我遇到的问题:一开始看着控制台的错误日志,一直以为是http://127.0.0.1:8080/解决思路:xxl-job 的开发者不是已经提供了很多sample的嘛。好好看,仔细看看,咦,samp...

2020-04-28 18:08:00 10532 5

原创 Nginx反向代理来解决跨域问题

参考如下博客,自己小小总结了下跨域的一些问题:什么是跨域浏览器为什么要设计同源策略什么是跨域?如何解决跨域的概念一个域下的文档或者脚本(比如ajax) 去请求另外一个域的资源。这里判断是否在一个域的,依据三点: 协议(http|https) + 域名 + 端口 ,如果中间 有任一个不同,那么就算是跨域请求。注意: 如果两个域名指向同一个ip ,那也算是跨域请求!我们来看下面的页...

2020-04-28 11:13:23 831

原创 window收到mac发过来的zip包乱码

额,今天收到同事发过来一个zip,说明,对方是mac ,本人是window (????难受,想哭),看出差别了(哈哈,开玩笑,没有对公司不满,毕竟我老员工了,没事没事)。不给配mac就算了,但也不能欺负我打开之后乱码吧。有时候打开还是个空文件夹,emm,首先,我肯定不能一股脑地认为是同事坑我,先从自己找原因吧,当时我用的是WinRAR 解压的,乱码图片请往下看。原因解压方式不对哦解决办法...

2020-04-23 09:55:12 965

原创 Nginx上传文件很慢很慢

收到同事反馈,一个上传apk的接口,传一个180多兆的文件,一直转圈,最终提示上传文件失败Bug所处背景带宽为10M的云服务器,额,,,就算按照7M的带宽,如果是一个180M的文件,网络顺畅的话,大概需要xxx项目主要是前端用formData封装文件,然后调用上传接口。项目四查找原因nginx 的error 日志里发现,请求里的body太大了。还有就是前端控制台会报一个ERROR_...

2020-04-22 23:45:06 10092 1

原创 Integer比较到底要不要equals

-127 ~ 128 范围得,直接从常量池里获取,所以这时候用比较不会出错。但是超过该范围的就会new 了,所以推荐还是用equals 吧,毕竟不要显得自己很疏忽的态度初次之外,还可以用自动拆箱的时候,可以用比如 Integer.value(299).intValue == 299...

2020-04-22 13:36:52 194

原创 window下使用sed命令批量替换文件里的指定字符串

又要一波迁移Jenkins服务,遇到了头疼的事情,Jenkins下的所有项目的配置脚本都需要修改环境。乍一看,100个左右的项目,人肉改的话,岂不是人都要变傻。Jenkis上所有项目的配置其实都是文件存储的,基于我当时的服务器系统是window环境,配置文件在安装目录下的job的文件夹里的config.xml现在要将所有的config.xml里的这里的&quot; 是一个双引号...

2020-04-21 14:08:36 6478

原创 云服务(腾讯云)的安全防范措施

服务器设置大写、小写、特殊字符、数字组成的12-16位的复杂密码 ,也可使用密码生成器自动生成复杂密码,这里链接参考:https://suijimimashengcheng.51240.com/删除服务器上设置的不需要的用户对于不需要登录的用户,请将用户的权限设置为禁止登录修改远程登录服务的默认端口号以及禁止超级管理员用户登陆Linux远程端口修改参考文档:https://cloud.t...

2020-03-24 17:58:50 1273

原创 Ubuntu安装openssh-server

ssh 是Linux 下远程管理工具,默认端口22最近虚拟机VirtualBox里装了Ubuntu,但发现窗口右边没有滚动条并且不能开多个窗口。想到平时连接腾讯云服务器都是用了XShell工具,方便多了。下载安装首先就是要下载并安装openssh服务。apt-get install openssh-server图中很显然是没有成功,大概意思就是需要依赖于openssh-clien...

2020-03-20 22:54:00 9834 3

原创 虚拟机建立FTP服务

为了让宿主机能正常的和主机的传输文件。最先尝试的是通过共享文件的方式,但能力有限,失败;由于时间紧迫,最终虚拟机里安装FTP解决问题。安装FTP首先用命令检查是否安装了vsftpdvsftpd -versionroot权限安装sudo apt-get install vsftpd可以通过查版本的方式校验下是否安装成功。配置FTP我配置文件路径:/etc/vsftpd...

2020-03-20 18:23:24 3588

历年软考真题

历年软考真题和详细解析,帮助大家更好的复习

2014-03-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除