自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 收藏
  • 关注

原创 日志脱敏功能

数据安全尤为重要,最为简单的防线就是防止重要信息(身份证、手机号、姓名等)明文显示,对此需要在数据库层、日志层等做好数据加解密。

2024-06-03 15:04:59 463

原创 日志埋点功能

开发中经常会有日志埋点需求, 用于统计接口的请求量、处理速度等等,为此本篇幅从一下几个维度进行分析,从零到有搭建。利用原生的logback,配置好xml即可实现日志保存,不需要考虑批量刷盘等问题,而封装好通用的SDK是为了方便后续系统使用 。 共享文件夹是为了后续不同微服务部署在不同机器上时,设置的绝对路径文件地址能被后续定时任务解析到文件。解析日志就是文件记录+文件解析的过程,可以建立两张表。一张记录有哪些文件,这些文件是否被解析过,状态如何,另一张表即日志文件表,保存每一次埋点的数据。解析过程会严格安装

2024-04-11 15:33:58 1355

原创 服务宕机、线上环境内存溢出OOM分析思路

平时工作中,肯定会遇到哪个产品经理突然来找,说服务器又挂了,怎么又用不了啦!类似的紧急情况,遇到这种情况不要慌,我提供以下几点紧急补救思路。1)重启大法保命2)确认是否新功能发布,线上环境,紧急回退版本3)查看服务器实例的CPU使用率、内存使用率(arthas)4)扩充服务器资源,大多数公司上百台微服务,每台微服务实例一般资源都设置不大5)开启GC日志,分析 xx.hprof文件总体思路基本围绕上述展开,注意OOM不一定是一蹴而就,也可能是日积月累慢慢产生。

2023-12-20 11:54:55 1281 1

原创 Java集合自定义字段排序

针对项目中需要对一些集合进行自定义字段排序,该方法包含object类型和map类型的排序,输入需要排序的字段名或键key,以及排序先后的sortOrder规则集合。

2023-10-12 17:15:30 261

原创 经纬度坐标工具

CoordinateTransformUtils : 坐标转换工具 BD09 、GCJ02、WGS84。LngLatUtil :用于计算里程数。

2023-08-07 09:38:49 371

原创 雪花算法~

【代码】雪花算法~

2023-07-14 09:48:55 124

原创 Docker安装MySQL5.7

没安docker的先安下,或者直接用docker desktop。配好阿里云镜像仓库地址后,拉取镜像还是挺快的。

2023-07-12 16:52:06 1197

原创 MQTT快速入门

MQTT 是用于物联网连接的 OASIS 标准,它是一种基于发布订阅模式的、轻量级的消息传输协议,专为受限设备和低带宽、高延迟和不可靠的网络设计,并且能够提供一定的消息可靠性保证。得益于这些特性,MQTT 在车联网、工业制造、移动通信等领域广泛应用。目前 MQTT 的主要版本有 v3.1.1 和 v5.0,v5.0 于 2019 年 3 月发布,相比于 v3.1.1 引入了很多改进和增强,目前市面上绝大部分的客户端 和代理都已经支持了 MQTT v5.0。

2023-07-11 17:06:52 305

原创 百万数据深度分页优化

当以上场景翻页很深,offset越来越大,回表的记录越来越多,sql查询新能惠急剧下降,会出现大量的慢SQL(超过1s的)3、访问某小程序的积分商城查看商品,一直滑动翻页,不用跳转到指定页面。1、查询文章列表,一直滑动翻页,不用跳转到指定页数。2、从数据库查询百万客户数据写入redis。假设一个单表有100万数据,如何进行分页。以上一个简单的分页查询语句。

2023-07-07 10:28:18 281

原创 并发编程中的CAS机制

CAS是Java中Unsafe类里面的一个方法,它的全称叫compareAndSwap,比较并替换的意思,它的主要功能是能够保证在多线程环境下,对于共享变量修改的一个原子性。compareAndSwap其实是一个native方法,它最终还是会面临同样的问题,就是先从内存地址中读取state值,然后比较,最后再去修改,这个过程不管什么层面去实现都会有原子性问题,所以它的底层实现里,如果在多核CPU环境下会增加一个lock指令来对缓存或者总线去加锁,从而保证比较并替换两个操作的原子性。

2023-04-16 00:10:39 101 1

原创 MyBatis-Plus 使用拦截器实现数据权限控制

平时开发中遇到根据当前用户的角色,只能查看数据权限范围的数据需求。列表实现方案有两种,一是在开发初期就做好判断赛选,但如果这个需求是中途加的,或不希望每个接口都加一遍,就可以方案二加拦截器的方式。在mybatis执行sql前修改语句,限定where范围。当然拦截器生效后是全局性的,如何保证只对需要的接口进行拦截和转化,就可以应用注解进行识别因此具体需要哪些步骤就明确了基础只涉及 = 表达式,要查询集合范围 in 看进阶版用例如果你之前项目配插件 ,直接用下面方式就行但如果你项目之前是依赖包依赖

2023-02-07 19:43:22 7604 8

原创 MyBatis-Plus实现字段的自动填充

在日常开发中,特别是一些业务系统项目,共同发现一个规律,那就是对于诸多业务表中都包含有相同的字段,比如id主键、uuid、create_time、creator_code、update_code、update_time等。而这些字段也是对于有些表而言是必要存在的。为了避免业务开发时重复编写赋值代码,就可以利用MyBatis-Plus实现字段的自动填充,当然还有一种思路是自己编写AOP,这里就不进行追述,

2023-01-29 17:14:13 869

原创 学习Elasticsearch这一篇就够了(2)

query:查询条件from和size:分页条件sort:排序条件highlight:高亮条件。

2022-12-24 01:18:21 1331

原创 学习Elasticsearch这一篇就够了(1)

索引库操作有哪些?创建索引库:PUT /索引库名查询索引库:GET /索引库名删除索引库:DELETE /索引库名添加字段:PUT /索引库名/_mapping文档操作有哪些?创建文档:POST /{索引库名}/_doc/文档id { json文档 }查询文档:GET /{索引库名}/_doc/文档id删除文档:DELETE /{索引库名}/_doc/文档id修改文档:全量修改:PUT /{索引库名}/_doc/文档id { json文档 }

2022-12-23 18:41:30 158

原创 搭一套Socket.io 服务只需这几步

Websocket是HTML5新增的一种全双工通信协议,客户端和服务端基于TCP握手连接成功后,两者之间就可以建立持久性的连接,实现双向数据传输。Socket.io不是Websocket,它只是将Websocket和轮询 (Polling)机制以及其它的实时通信方式封装成了通用的接口,并且在服务端实现了这些实时机制的相应代码。也就是说,Websocket仅仅是 Socket.io实现实时通信的一个子集。因此Websocket客户端连接不上Socket.io服务端,当然Socket.io客户端也连接不上Web

2022-12-08 16:13:47 4616 2

原创 mybatis-plus自定义插件解决模糊查询特殊字符转义问题

背景:MySQL模糊查询时,如果前端传了特殊字符而后端没有对特殊字符转义的话,特殊字符就会被识别为SQL中的特殊字符,发挥其特殊字符的含义,如占位符’_‘、’%‘等,如需MySQL将这些字符识别为普通字符,则需要在其前面加上转义符,默认是反斜杠,即变为’_‘、’%'即可。但是每个查询的地方都加转义,又麻烦又容易遗漏,所以借鉴类似AOP的思想,加一层拦截来解决,如果你的orm框架使用的mybatis-plus,则可以通过实现一个自定义插件解决,mybatis也有类似插件规范。直接无脑上代码 复制粘贴就行。

2022-11-24 12:03:14 3027 6

原创 学会Redis这一篇就够了(2)

IO操作是同步还是异步,关键看数据在内核空间与用户空间的拷贝过程(数据读写的IO操作),也就是阶段二是同步还是异步try {// 1.建立连接 String host = "192.168.150.101";// 2.获取输出流、输入流 writer = new PrintWriter(new OutputStreamWriter(s . getOutputStream() , StandardCharsets . UTF_8));

2022-11-09 17:01:52 222

原创 学会Redis这一篇就够了(1)

Redis是一种键值型的NoSql数据库,这里有两个关键字:其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值、甚至json:而NoSql则是相对于传统关系型数据库而言,有很大差异的一种数据库。安装教程Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样:Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网( https://redis.io/commands

2022-09-21 17:04:30 1013

原创 Linux中安装Redis

大多数企业都是基于Linux服务器来部署项目,而且Redis官方也没有提供Windows版本的安装包。因此课程中我们会基于Linux系统来安装Redis.此处选择的Linux版本为CentOS 7.

2022-09-06 20:29:01 318

原创 学会Kafka这一篇就够了

Kafka是 一个开源的分布式事件流平台 (Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用,是一个分布式的基于发布/订阅模式的消息队列(Message Queue)。官方文档:学习Kafka的过程会相对于RocketMQ、RabbitMQ等消息队列简单,因为它采用最为简单且常用的发布/订阅模式,采用的思想也都大同小异................

2022-08-25 19:46:39 721

原创 学会Docker这一篇就够了

Docker是一个快速交付应用、运行应用的技术:可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统运行时利用沙箱机制形成隔离容器,各个应用互不干扰启动、移除都可以通过一行命令完成,方便快捷Docker和虚拟机的差异:docker是一个系统进程;虚拟机是在操作系统中的操作系统docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般镜像是分层结构,每一层称为一个LayerBaseImage层:包含基本的系统函数库、环境变量、文件系统。...

2022-08-22 20:52:07 126

原创 Linux中安装Docker

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。Docker CE 分为stabletest和nightly三个更新频道。官方网站上有各种环境下的,这里主要介绍 Docker CE 在 CentOS上的安装。

2022-08-22 18:07:59 130

原创 Linux中安装kafka

安装kafka之前需要JDK1.8的环境支持,配置好Java环境变量,同时本地安装zookeeper,大家只要会按就行,实际对zookeeper的操作是Kafka的内部操作,我们可以无需关心。3)进入到/usr/local/kafka_2.12-3.0.0/config目录,修改配置文件 server.properties。如果服务器集群不多,用以上方法就可以完成Kafka 的启动和关闭操作,但如果你集群数量多,想一键启动或关闭所有服务器的kafka。2 )解压并移动到 /usr/local 目录下。...

2022-08-19 00:48:17 860

原创 微服务网关gateway

基于SpringFramework5,ProjectReactor和SpringBoot2.0进行构建能够匹配任何任何请求属性可以对路由指定Predicates和Filters集成断路器集成Spring Cloud服务发现易于编写的Predicates和Filters支持请求限流支持路径重写实现 GlobalFilter , Ordered 接口,加上@Component注解即可或以@Bean的方式;} }...

2022-08-04 18:07:30 146

原创 Redis+Redisson 基础配置和使用

基于springBoot的redisson分布式锁 ,设置基础配置。

2022-08-04 12:18:56 5803

原创 RedisCacheManager + CacheManager +@Cacheable 实现注解化缓存管理

@Cacheable + RedisCacheManager

2022-08-04 01:11:00 3190

原创 Linux中安装mysql 5.7.23

Linux中安装 mysql 5.7.23

2022-07-11 15:15:05 261

原创 学会zookeeper这一篇就够了

zookeeper官网:https://zookeeper.apache.org/ZooKeeper的临时节点不允许拥有子节点。znode,兼具文件和目录两种特点。既像文件一样维护着数据、元信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分。基础命令服务端客户端curatorcurator是Netflix公司开源的一个zookeeper客户端,后捐献给apache,curator框架在zookeeper原生API接口上进行了包装,解决了很多zooKeeper客户

2022-07-05 23:46:48 115

原创 Netty之优化与源码

1. 优化1.1 扩展序列化算法序列化,反序列化主要用在消息正文的转换上序列化时,需要将 Java 对象变为要传输的数据(可以是 byte[],或 json 等,最终都需要变成 byte[])反序列化时,需要将传入的正文数据还原成 Java 对象,便于处理目前的代码仅支持 Java 自带的序列化,反序列化机制,核心代码如下// 反序列化byte[] body = new byte[bodyLength];byteByf.readBytes(body);ObjectInputStream

2022-05-30 18:07:25 173

原创 Netty之进阶

1. 粘包与半包1.1 粘包现象服务端代码public class HelloWorldServer { static final Logger log = LoggerFactory.getLogger(HelloWorldServer.class); void start() { NioEventLoopGroup boss = new NioEventLoopGroup(1); NioEventLoopGroup worker = new NioE

2022-05-30 17:18:31 88

原创 Netty之入门

二. Netty 入门1. 概述1.1 Netty 是什么?Netty is an asynchronous event-driven network application frameworkfor rapid development of maintainable high performance protocol servers & clients.Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端1.2 Netty 的优势N

2022-05-30 15:19:17 198

原创 Netty之NIO基础

1. 三大组件1.1 Channel & Bufferchannel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 stream 更为底层#mermaid-svg-ECchi1vt9cKAdyRn {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz

2022-05-30 11:48:00 199

原创 TreeNodeUtil

树形集合工具类对已有集合进行树形结构遍历,或集合分类遍历,必须存在一对规则的数据库字段,即表中必须存在父节点code。需要测试的集合entry类直接继承该类即可,mybatis-plus生产的实体记得 删掉注解 @Accessors(chain = true)@Datapublic class BaseTreeNode { /** * 子Id */ @TableField(exist = false) private String code;

2022-05-23 20:03:40 251

原创 学会Nacos应用这一篇就够了

下载地址: https://github.com/alibaba/nacos/releases/tag/2.1.0什么是NacosNacos 由Alibaba开发,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。作为这样的一个平台,核心就是两一个功能,配置管理和服务注册与发现。现在一般的Spring Cloud生态可以由 服务网关GateWay 、服务注册Nacos、服务配置Nacos、服务调用、OpenFeign、服务降级Hystrix几个部分注册启动服务Nacos默认集群模式

2022-05-19 11:35:12 242

原创 学会RocketMQ这一篇就够了

RocketMQ简介RocketMQ是由阿里捐赠给Apache的一款低延迟、高并发、高可用、高可靠的分布式消息中间件。经历了淘宝双十一的洗礼。RocketMQ既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。官方文档: https://rocketmq.apache.org/docs/quick-start/github中文主页:https://github.com/apache/rocketmq/tree/master/docs/c

2022-05-11 18:10:44 1209

原创 Linux中安装RocketMQ

Linux中安装RocketMQ

2022-05-10 09:34:18 466

原创 最终一致性分布式解决方案 (7)

概述最终一致性分布式解决方案并不要求参与事务的各个节点数据时刻保持一直,允许存在中间状态,只要一段时间后,能够达到数据的最终一致状态即可。业界居于Base理论提出了如下方案1)TCC解决方案2)可靠消息最终一致性解决方案3)最大努力通知解决方案最终一致性分布式解决方案存在4种典型的服务模式:可查操作、幂等操作、TCC操作、可补偿操作。1)可查操作:具备全局唯一标识2)幂等操作:相同参数执行同一方法时,无论执行多少次,都能输出相同结果3)TCC操作:分3各阶段, Try阶段 、confirm

2022-05-05 20:19:07 1977

原创 学会RPC原理,这一篇就够了

前言学习RPC需要会的前置知识:基于TCP的Socket、Java反射的基本使用、序列化、代理模式之动态代理(JDK就行)、多线程,都是一些Java基础知识,不会的自行补课。什么是 RPC 框架RPC 框架----- 远程过程调用协议RPC(Remote Procedure Call Protocol)-----允许像调用本地服务一样调用远程服务。言:RPC知识一种框架思想,A端等接收到B端的序列化数据,在处理好后,再能序列化给B端,我们就可以称它是PRC,以下知识只我个人对PRC的某一种实现方

2022-05-05 18:42:52 276 1

原创 强一致性分布式事务解决方案(6)

前言总体来说,分布式事务解决方案可分为强一致性分布式事务解决方案和最终一致性分布式事务解决方案本篇主要介绍强一致性分布式事务解决方案:DTP模型、2PC模型、3PC模型概述致性分布式事务解决方案主要包括DTP模型(全局事务模型)、2PC模型(两阶段提交)、3PC模型(三阶段提交),其中基于DTP模型,典型的解决方案时分布式通信协议XA规范。优点数据一致性比较高在任意时刻都能够查询到最新写入的数据缺点存在性能我呢提实现复杂牺牲了可用性不适合高并发场景(锁资源)DTP模

2022-04-27 19:17:41 574

原创 分布式事务的理论知识(5)

从某种程度上讲,同一业务中通过不同的会话操作数据库,就有可能出现分布式事务问题。解决分布式事务问题需要一定的理论支撑。CAP理论CAP是一致性(Consistency)、可用性(Availability)和分区容忍性(PartitionTolerance)在分布式系统中,不会同时具备CAP三个特性,只能同时具备其中的两个。一致性一致性是指用户对数据的更新操作(包括新增、修改和删除),要么在所有的数据副本都执行成功,要么在所有的数据副本都执行失败.一致性存在如下特点:1)存在数据同步的过

2022-04-27 15:06:25 99

arthas 服务器运行资源分析器

服务器运行资源分析器

2023-12-20

空空如也

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

TA关注的人

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