自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Error的博客

个人记录

  • 博客(47)
  • 收藏
  • 关注

原创 基于Redis解决集群环境下雪花算法机器号的分配问题

前言如果你正在寻找一种全局唯一ID生成策略,那么我相信你一定会了解到一种算法,那就是雪花算法,如果再深入了解一下,你会发现雪花算法其实不单单只是一种算法,同时也是一种思想,它将ID细分为时间戳、机器号、序列号等几个关键部分。时间戳用来保持ID的递增趋势,机器号用来区分相同时刻下不同机器所生成的ID,序号用来区分同一个机器相同时刻下生成的ID。关于雪花算法的实现网上有很多现成代码可以借鉴,同时你也可以基于这种思想自己实现一个雪花算法。无论是自己实现的雪花算法还是网上借鉴的雪花算法,在集群环境中都面临着一个

2021-07-26 21:47:19 2722 7

原创 生产环境NoHttpResponseException异常排查记录

业务背景公司最近正在准备为邮储银行开展一个营销活动,活动规则是:用户使用邮储银行卡在线上支付一分钱,就可以领取50元现金券,卡券领取完毕后,系统会自动退还消费者的1分钱。(相当于免费给邮储用户发放50元现金券),因为发券的入口要做在小程序里面,于是这个需求就落到了C端这边(公司的另一个业务小组),而我主要负责B端支付模块。经过我们商讨后,初步制定的业务逻辑为:用户打开C端小程序进行支付、然后C端将支付请求转给B端支付模块、B端支付模块向微信下单、等待消费者完成支付后B端支付模块通知C端交易完成并返回其支付

2021-07-17 16:09:59 1119 1

原创 怎样生成全局唯一流水号?UUID、自增主键,你已经Out啦,快来学习定制化雪花算法。

前言流水号是每个系统永远都绕不开的一个话题,如订单系统中的订单号,物流系统的运单号、银行系统的业务单号等等,不难发现这些单号虽然叫法不一样,但都有着一些相同的共性,那就是全局唯一性。除此之外,一个设计良好的流水号生成规则还应该包含如下特性:全局唯一性:在整个系统中唯一,可以通过单号直接定位到具体数据可读性:能够直接从单号上获取一些基本信息可扩展性:支持海量id,当应用扩展时可以做到平滑升级递增趋势:需要根据业务或时间呈递增趋势不可推测性:使用户无法猜测下一个或上一个订单号是什么高性能:流水号

2021-06-10 23:16:11 3798 1

原创 谁再问我加密算法、签名算法、我上去就是一jio

前言作为一个已经在互联网公司工作了一段时间的咸鱼来说,从当初一脸懵逼到现在似懂非懂的这段期间始终有一些问题困扰着我,由于工作原因又很少有时间去了解这些问题,导致自己欠下的技术债也是越来越多。于是准备趁着五一假期把加密算法这个大坑先给填一填。先决条件大家应该都知道网络环境是非常复杂的,在一个请求到达服务器的过程中,通常是要经过很多个中间环节进行转发的(网关、路由、代理),而在任意的一个...

2020-05-01 18:21:41 1051 1

原创 归并排序,快速排序

快速排序:画图画的丑,拿百度百科两张图勉强用着。快速排序思想:在初始数组中选出一个基数,将数组分为3个区间。[小于基数的一个区间],[等于基数的一个区间],[大于基数的一个区间]。当大于区或小于区数量大于1时,在区间内重新选基数,重新进行分区(重选基数,重新分区),它的平均时间复杂度为O(NlogN)。最坏的情况下它的时间复杂度会跟冒泡排序一样O(N^)快速排序实现:/** * ...

2019-04-13 10:54:07 219

原创 SpringBoot环境MongoDB分页+去重+获取去重后的原始数据

最近有个比较复杂的MongoDB查询需求,研究了大半天,终于搞出了解决方案,因此记录一下供有需要的同学参考。

2023-09-06 18:27:43 789

原创 拿来吧你——一个类帮你搞定SpringBoot中的请求日志打印

日常开发工作中避免不了要打印请求日志,这个功能几乎在所有的项目中都需要编写一次,重复的次数多了,难免会感觉繁琐,因此打算搞一个通用类把这块功能拆出来。

2023-05-06 17:09:28 1025

原创 深入了解HTTPS

说起HTTPS,相信每个技术人都不陌生,都知道它能够带来安全上的提升,如果再深入问一下**HTTPS如何带来安全上的提升?**相信有一部分同学犹豫片刻后也能给出答案:**HTTPS由HTTP协议+SSL/TSL协议组成,通过在应用层(HTTP)与运输层(TCP)之间加入安全套接层来实现数据加密解密功能,从而实现数据的安全传输。**但是如果继续追问:**请你详细说说HTTPS具体解决了什么场景下的哪些问题?是如何解决的?**相信大多数人已经开始沉默了。如果你刚好也存在相同的疑惑,那么就请你带着些许耐心细

2023-02-06 22:46:36 413

原创 API集成测试:SpringBoot+Junit

之前写过一篇单元测试相关的文章,细心的同学会发现,单元测试其实是面向后端代码层面的测试,它只能保证单个函数或单个类的行为正常,并不能保证API正常,然而后端开发人员最终需要交付的其实是一个功能正常的API,那么应该如何保证API的功能正常呢?

2022-11-18 10:30:39 408

原创 Github图床搭建

回想起刚开始写blog的场景,总是苦恼于文章的排版问题,看到别人的排版总是整整齐齐的,很是羡慕,后来才得知这是Markdown语法。排版问题得到解决后,图片管理的问题又浮出水面,一篇技术文章难免会存在三五张截图,一些比较复杂的技术文章中配图数量甚至会更多,在最初的编写阶段,我往往将文章配图暂存于一个文件夹中,然后等文章编写完成后再上传至指定的平台(CSDN/微信公众号)。但是这个过程却很痛苦,因为文件夹中的图片数量很多,需要将它们一一上传并且与文章中的位置一一对应是一件很繁琐的事情。

2022-05-08 16:58:15 1943

原创 NPS——搭建属于你的内网穿透平台

内网穿透

2022-04-09 14:33:16 3218

转载 # 如何优雅地给妹子优化电脑(Windows)?

每个会修电脑的BOY都有故事

2021-11-27 08:30:00 121

原创 如何正确编写单元测试?

国内的大多数互联网公司只注重软件功能,却往往忽略了极为重要的软件质量,在一个月以前,我认为遵循了代码规范(阿里规约、sonar)的软件系统已经算是一个质量比较好的软件系统了,但是在我了解单元测试以后,才发现自己以前的想法有多么愚蠢,单元测试的作用远比我想象的要重要许多。经过一段时间的研究,总算对单元测试有了一个大概的了解,然而网上的文章零零散散,大多是讲解一些比较简单的demo,参考价值比较有限,因此我决定写一篇关于单元测试的文章来总结自己这段时间的收获与心得。

2021-11-24 23:06:26 6756 11

原创 脏读、不可重读的最终解决方案——MVCC

前言早上上班途中,趁着坐地铁的功夫翻了翻高性能mysql这本书,准备回顾一下MVCC这块的知识点,因为书中对MVCC的讲解不是很多,于是我很快便看完了这一段落,但是文章末尾有一段话引起了我的思考。MVCC只在REPEATABLE READ和READ COMMITTED两个隔离级别下工作。其他两个隔离级别都和MVCC不兼容,因为READ UNCOMMITED总是读取最新的数据行,而不是符合当前事务版本的数据行。而SERIALIZABLE则会对所有读取的行都加锁。摘抄——《高性能mysql第三版》之

2021-10-28 22:08:16 1906 3

原创 HttpClient源码——探索Tcp链接建立的时机及http请求发送的时机

首先说明一点:我阅读源码一般都不是通篇阅读,而是抓住某一个关键问题,然后一步步跟踪下去,所以阅读源码的过程中会忽略一些我不关注的部分源码。文章的标题就是此次源码阅读的核心InternalHttpClient因为Httclient发起请求的入口是httpClient.execute(httpPost),所以就跟着这个入口进去首先发现的就是InternalHttpClient,里面doExecute()方法是这个类的核心然后再进一步跟踪下去,发现HttpClient采用了责任链的设计模式,将执.

2021-07-17 16:07:20 337 1

原创 世界上有10种人,一种是懂二进制的人,一种是不懂二进制的人。

前言这天,我正在一个技术交流群跟群友交流学(mo)习(yu)经验,忽然看到了这样的一个问题。看到这个问题,我想到了之前的一个场景是要获取近30天的日期列表,我的思路是通过System.currentTimeMillis()获取当前时间戳,然后依次减去对应的毫秒数(24 * 60 * 60 * 1000),后来发现问题:30 * 24 * 60 * 60 * 1000因为超过了int的上限值而变为了一个负数。于是我回复他:这个时候有位热心的大佬给解释了一波,然后我发现又特喵的触及到自己的知识盲区了

2020-12-15 13:05:58 7385

原创 搭建自己的图床

搭建自己的图床前言没听过图床这个词的人应该挺多的吧,毕竟平时也不怎么会用到,第一次听到图床这个概念是一位朋友跟我提起的,他平时比较喜欢写技术文章,在一次日常的商业互吹中,他鼓励我也一起写文章,我觉得很OK,跟不上大佬的脚步以后再装X是要挨打的。在大佬的指导下,我开始学习MarkDown语法、然后用自己的服务器搭建了一个私人博客(后来觉得麻烦就给停掉了,现在写文章主要是在CSDN跟微信公众号)。尝试写了几篇文章后,我经常会思考的一个问题是“文章中的这些图片咋搞啊?”,因为MarkDown语法中的图片

2020-11-23 16:06:46 2807 4

原创 手把手教你搭建SpringCloudAlibaba微服务架构——集成Dubbo、Feign实现服务注册、远程服务调用(RPC)

手把手教你搭建SpringCloudAlibaba微服务架构——集成Dubbo、Feign实现服务注册、远程服务调用(RPC)目录文章目录手把手教你搭建SpringCloudAlibaba微服务架构——集成Dubbo、Feign实现服务注册、远程服务调用(RPC)目录前言环境准备为什么需要RPC?基于Nacos的服务注册与发现项目结构dubboDemo工程pom文件pay-service工程pom文件order-service-consumer工程pom文件order-service-api工程pom文

2020-11-19 20:16:42 1483 2

原创 手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建目录文章目录手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建目录环境介绍Java环境Maven环境下载Nacos编译源码包安装单机Nacos并启动搭建Nacos配置中心项目结构父工程pom文件pay-service工程pom文件application.yml动态刷新配置环境介绍我用的是Win10系统,为了演示方便,所以就直接把nacos搭在了本地,配置源暂时先用Nacos内

2020-11-19 19:46:10 2834 2

原创 请谈谈你对线程可见性及volatile关键字的理解?

请谈谈你对线程可见性及volatile关键字的理解?文章目录请谈谈你对线程可见性及volatile关键字的理解?引言可见性问题基本数据类型的可见性问题引用数据类型可见性问题引用可见性问题成员变量可见性问题可见性问题总结Java内存模型CPU与内存之间的爱恨情仇Java内存模型主存与工作内存间的交互规则Volatile变量特殊规则先行发生原则对先行发生原则的理解volatile的使用保证变量可见性防止指令重排案例解决引言工作一段时间的老铁们对这个问题应该都不陌生吧。回想起刚毕业那会儿,我信心满满的拿着

2020-09-25 18:36:54 488 8

原创 必知必会的ThreadLocal

学习笔记——ThreadLocal简介:ThreadLocal :线程本地变量、线程私有。实现原理其实现原理是在Thread类中引用一个ThreadLocalMap结构的成员变量。ThreadLocalMap是一个Entry类型的数组结构,与HashMap不同的是当出现hash冲突时,ThreadLocalMap并不是以链表的方式组织数据的,而是依次向数组后方查找空白位置进行保存Entry是一个以ThreadLocal弱引用为key的k-v结构。需要注意的点(个人理解)线程复用造

2020-08-19 17:42:35 177

原创 mysql索引基础

mysql索引什么是索引?索引(在Mysql中也叫做“键(key)”)是存储引擎用于快速找到记录的一种数据结构。为什么要使用索引?索引对于良好的性能非常关键。尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要。在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但当数据量逐渐增大时,性能则会急剧下降。索引应该是对查询性能优化最有效的手段了,索引能够轻易的将查询性能提高几个数量级,”最优“的索引有时比一个"好的"索引性能要好两个数量级。索引基础要理解索引是如何工作的,

2020-08-12 18:15:33 124 1

原创 Mysql用户模块表结构设计+Shiro权限认证

SpringBoot整合Shiro完成用户认证前言最近在做一个管理系统,神奇的是最后发现登录模块竟然没有人安排人去做(不得不吐槽一下公司的开发流程emm),好在这个管理系统是内部使用的,目前基本没什么用户。于是产品小姐姐就把这块需求直接划分给了我。技术选型第二天一大早我就开始考虑这件事情:脑海中的第一方案就是使用shiro来做权限认证这个需求,因为之前也接触过shiro,但是由于不是自己开发的且开发完成后几乎没有过这方面的需求,因此也导致自己对shiro始终处于一知半解的程度。正好借此机会来

2020-07-30 17:53:42 1385

原创 【算法】两个长度相同,元素为随机整数的无序数组,交换位置,使得两个数组的和的差值最小。

两个长度相同,元素为随机整数的无序数组,交换位置,使得两个数组的和的差值最小。面试时,很多公司都会存在笔试这一个环节,虽然心里一万个不想写,但是毕竟是一个打工仔,还是得老老实实的服从公司安排。面试的岗位是后端java岗位,但是笔试题好像都是统一的一套,其中也涉及到了一些前端及JS的一些问题,其中前端问题印象较深的是如何加速一个网站或者网页?大哥,我面的是后端的岗位,你这不是在为难我胖虎么,于是随便答了答静态资源分离,CND加速之类的,个人感觉答的还是靠点边的,哈哈。最后是一道算法题:两个长度相同

2020-05-27 20:35:20 442

原创 统一响应对象、统一异常处理——跟可恶的try-catch说拜拜

统一响应对象、统一异常处理——跟可恶的try-catch说拜拜前言在一个月黑风高的晚上(麻烦大家假装没看到时间),我的leader突然给我指派了一个需求,如下所示首先说明一下,【金融服务】是我们其中一个后台管理系统的功能菜单,【积分商城】则是我们另外一个系统。然后来看下这个需求:很明显是要在我们系统维护一个【银行网点】的功能,然后提供一些接口给【积分商城】使用,于是我设计了如下的两张表然后我又写下了这样的一个接口给积分商城的同事进行对接...

2020-05-10 17:17:36 778 4

原创 拜托,不要在问我@Transactional注解了

前言在一个阳光明媚的周五,我正开心的敲着代码,突然看到一个技术交流群中正在火热的讨论着某个话题,好奇心驱使着我点开看了一下, 原来是某位同僚正在远程面试,面试官出了这样的一道题我心里默默的笑了笑,这特喵的该不会是哪个crud仔自己排查不出来,所以找面试者来套方案的吧。本想帮一帮这位同僚,奈何公司规定:上班时间不允许装逼。ps:突然想到自己似乎也没有对这方面知识做过系统的学习,于是默...

2020-04-25 21:53:03 1732 5

原创 都二十一世纪了,你还不知道什么是摘要算法?

前言摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,目前可以被解密逆向的只有CRC32算法,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。消息摘要算法不存在密钥的管理与分发问题,适合于分布式网络上使用。由于其加密计算的工作量相当...

2020-04-18 13:12:06 615 1

原创 AOP动态代理的区别你造吗?

一个风和日立的下午,一个java程序员正在愉(tong)快(ku)的修改着bug。天空突然出现五个字:“请谈谈你对Aop的理解”

2020-03-26 00:07:31 765

原创 Mysql字段类型选取

前言在一个愉快的周末,一条咸鱼正爬在床上愉快的玩着游戏,突然接到了同事的一个钉钉电话,抛出了这样的一张图片,只见这条咸鱼艰难的翻了下身,打开了电脑。看到这个异常,这条咸鱼心里默默的笑了笑,简直so easy数据库都不用看(稳妥起见还是看了一眼)果然跟料想一样:字段是varchar类型且长度太小,于是顺手就写出了如下sqlalter table merchant_info modify c...

2020-03-14 19:41:52 196

原创 对象实例化时属性加载顺序

对象实例化加载顺序Person p = new Person();1.如果Person存在父类,则jvm按代码顺序加载父类的静态成员,然后再加载子类的静态成员。(静态成员:静态变量、静态代码块)2.然后调用父类中的匿名代码块及父类中构造器(具体条用哪一个构造器由子类中的super关键字决定)3.最后调用子类中的匿名代码块,子类中构造器。总结:父类静态成员->子类静...

2019-12-18 11:29:37 365

原创 SpringRetry踩坑记录

Retry简单介绍 Retry是Spring提供的异常重试框架,只需要引入如下依赖即可安心食用。<dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId></...

2019-07-19 22:10:17 8038

原创 单例模式——双重校验锁

//new:创建一个新对象//dup:复制之前分配对象空间的引用并压入栈顶//invokespecail:调用实例方法(此处调用的是类的init方法)//putstatic:将栈顶元素赋值给静态成员public class Sington{ //volatile禁止指令重排 private static volatile Sington instance=null; ...

2019-04-19 10:07:38 1535

原创 Keepalived、Haproxy、mycat、mysql集群组件介绍

Mysql集群搭建mysql:主从复制master库中数据发生更改后会将数据写入日志,slave节点启动IO线程及Sql读取master日志同步数据 ,此时slave作为master的冷备份mycat:读写分离、负载均衡、高可用负载均衡: 当用户非常多时,通常数据库往往会成为系统的扩展的瓶颈。而mysql提供的优化方案(索引)效果微乎甚微。于是mycat提供读写分离、分库分表等方案...

2019-04-11 14:52:59 483

原创 MapReduce

MapReduce组件InputFormat类 :将文件分割成多个splits和每行怎么解析(recordReader)。分片规则:max(minsplitSize,min(maxSplitSize,blockSize))默认:minSplitSize=0,blockSize=128M,maxSplitSize=Integet.maxValue如果需要改变切片大小,通常...

2019-04-10 15:45:32 168

原创 HDFS核心组件

HadoopHDFS:分布式文件存储系统核心组件:一、NameNode: 整个集群的核心,在NameNode本地磁盘中管理着文件系统的镜像文件及编辑日志,在内存中管理着BlockMap核心1: 文件系统镜像文件(FsImage);存放着文件的元数据信息(元数据信息[FileName、副本数、副本所在位置…]),可以看做是hdfs的目录树。核心2:编辑日志文件(EditsLo...

2019-04-03 11:51:21 6542

原创 synchronized它不香吗为啥还要用分布式锁?

深圳的某个办公室内,一枚长相帅气的程序员正在努力的搬砖。老板火急火燎的走到跟前对我说:“最近我们接到了一大批用户反馈说下完单后没有及时发货,已经有很多用户投诉了,你赶快去处理一下 ” 我急忙点头说好。然后开始检查订单数据,通过数据发现库存系统中某些商品的剩余数量竟然是负数。。。。。

2019-03-26 12:24:40 4532 10

原创 SSO单点登录

SSO单点登录:​ SSO英文全称Single Sign On。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一在之前的单机环境中,我们通常是将用户登陆过的信息保存在服务端的Seesion中,通过判断Session中是否存在用户信息来确认用户是否登录...

2019-03-24 11:56:32 1005

原创 SpringBoot整合自定义FTP文件连接池

SpringBoot整合自定义FTP文件连接池说明:通过GenericObjectPool实现的FTP连接池,记录一下以供以后使用环境:JDK版本1.8框架 :springboot2.1文件服务器: Serv-U1.引入依赖 <!--ftp文件上传--> <dependency> <groupId&g...

2019-03-19 13:24:20 5415 2

原创 mybatis反向工程

mybatis反向工程引言之前写项目一直使用的是Hibernate。所以sql语句、实体类、dao这方面的代码基本上都没怎么管过。但是这次项目我们使用的是SpringBoot+mybatis。好蓝瘦啊,mybatis中的sql需要自己编写就已经够痛苦的了。难道实体类、dao、也需要自己一个个的手动编写吗?于是在度娘上了解了一下mybatis的反向工程。并且在这里记录一下自己的学习过程,方便...

2018-10-13 12:20:47 686

原创 设计模式——建造者模式

建造者模式一、什么是建造者模式 建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性。建造者模式通常包括下面几个角色:产品类:需要被创建的复杂对象 建造者接口:规范产品对象的各个组成部分的建...

2018-08-15 10:00:54 120

空空如也

空空如也

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

TA关注的人

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