自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot2.7.0版本变动

【代码】SpringBoot2.7.0版本变动。

2023-11-28 13:35:31 520

原创 SpringBoot2升级SpringBoot3注意事项

javax.annotation.PostConstruct 变为 jakarta.annotation.PostConstruct。javax.annotation.Resource 变为 jakarta.annotation.Resource。javax.validation包 统一变为 jakarta.validation包。因此,如果我们通过从spring-boot-starter。依赖项中排除它们来管理这些依赖项,我们应该确保更新它们。因此,在我们更新依赖项之后,我们可能需要更新。

2023-05-22 14:14:02 2260

原创 sh 读取不到/etc/profile的环境变量

文件,并将其中定义的环境变量添加到当前 shell 的环境中。接下来,您可以在脚本中使用这些环境变量。这些文件通常用于设置特定应用程序的环境变量和其他配置,可以在系统上共享和重复使用。这是因为在 sh shell 中,它不会像 Bash 一样自动加载。文件中的环境变量,您需要在脚本中手动加载该文件。另外,如果您需要在每次启动 sh shell 时都自动加载。当在 sh shell 中运行脚本时,它不会自动加载。文件中的环境变量,您可以将以下行添加到。这会在当前 shell 中加载。

2023-04-04 15:21:44 1346

原创 Javassit使用总结

参考:https://blog.csdn.net/zhaohongfei_358/article/details/101267843自动装箱和拆箱使用javassit插入代码时,需要编写装箱和拆箱的操作,比如int->Integer需要这么写:Integer i = new Integer(3);

2021-08-25 15:05:24 214

原创 怎样在服务器端防止cookie被复制后的自动登录

软件设计开发时,安全永远排在第一位,那么如何防止一个url携带cookie被复制后的自动登录,我总结一下几点:记录ip地址,当ip更换时,调整登录页 cookie添加有效期 修改密码后要重新登录 防止XSS攻击,可以将Http-Only设置为True。可以参考:https://tech.meituan.com/2018/09/27/fe-security.html 什么是Http-Only:https://blog.csdn.net/qq_43348375/article/details/...

2021-08-19 23:11:38 1133

原创 node运行时指定node_modules

参考:https://segmentfault.com/q/1010000011134695NODE_PATH=xxx npm start

2021-08-13 23:34:37 1888

原创 YAPI安装二次开发

高级mock接口支持open token方式请求位置:/vendors/server/controllers/base.js,方法async init ,54行变量openApiRouter新增:'/api/plugin/advmock/save'此时就可以通过设置token的方式调用更改高级Mock中的脚本了,也就是/api/plugin/advmock/save let openApiRouter = [ '/api/open/run_auto_test', '

2021-08-13 23:28:02 1072

原创 Nginx部署https(自己生成证书)

ssl证书生成openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/ssl/nginx.key -out /usr/local/ssl/nginx.crtnginx配置server { listen 443 ssl; server_name www.a.com; ssl_certificate ../ssl/nginx.crt

2021-08-13 22:29:24 1326

原创 Fastjson 反序列化处理泛型参数

参考:https://blog.csdn.net/u010999809/article/details/90301626

2021-06-04 11:15:48 145

原创 RocketMQ的一点总结

消息可靠性RocketMQ支持消息的高可靠,影响消息可靠性的几种情况:Broker非正常关闭 Broker异常Crash OS Crash 机器掉电,但是能立即恢复供电情况 机器无法开机(可能是cpu、主板、内存等关键设备损坏) 磁盘设备损坏1)、2)、3)、4) 四种情况都属于硬件资源可立即恢复情况,RocketMQ在这四种情况下能保证消息不丢,或者丢失少量数据(依赖刷盘方式是同步还是异步)。5)、6)属于单点故障,且无法恢复,一旦发生,在此单点上的消息全部丢失。RocketMQ在

2021-04-07 12:06:41 115

原创 Redis知识整理

Redis不同数据类型底层数据结构stringhashlistsetzsetRedis集群一致性hash算法:一般是0~2的32次方-1,然后每个节点2的32次方进行取模,得到当前节点在环中的某一位置,参考:https://www.jianshu.com/p/528ce5cd7e8f在redis集群中,一共会虚拟出16384个槽位来存储数据集,这16384个槽位分别映射到各个节点上。方便集群的水平扩容关键点:这些槽位,需要通过命令手动来分配 redis集群默认采用无

2021-03-30 15:17:06 81

原创 Spring @Transactional 内部调用的失效问题

须知@Transactional 底层使用TransactionInterceptor类在方法执行前后开启事务和关闭事务spring的动态代理,分为两种:jdk自身代理和cglib代理方式参考:https://blog.csdn.net/a837199685/article/details/68930987场景case1接口和实现类,test1中不加@Transactional,test2加@Transactional,外部调用test1()方法结果:test2方法失败时,事务并

2021-03-16 18:08:38 664

原创 RocketMQ如何保证消息有序消费

顺序消费消息有序指的是可以按照消息的发送顺序来消费(FIFO)。RocketMQ可以严格的保证消息有序,可以分为分区有序或者全局有序。顺序消费的原理解析,在默认的情况下消息发送会采取Round Robin轮询方式把消息发送到不同的queue(分区队列);而消费消息的时候从多个queue上拉取消息,这种情况发送和消费是不能保证顺序。但是如果控制发送的顺序消息只依次发送到同一个queue中,消费的时候只从这个queue上依次拉取,则就保证了顺序。当发送和消费参与的queue只有一个,则是全局有序;如果多

2021-03-15 15:55:14 2613

原创 分布式事务解决方案

分布式事务解决方案基于数据库XA解决方案 Seata基于2PC的AT模式 TCC模式 消息最终一致性 最大努力通知方案基于数据库XA解决方案2PC的传统方案是在数据库层面实现的,如Oracle、MySQL都支持2PC协议,为了统一标准减少行业内不必要的对 接成本,需要制定标准化的处理模型及接口标准,国际开放标准组织Open Group定义了分布式事务处理模型 DTP(Distributed Transaction Processing Reference Model)。DTP模型定义如

2021-03-15 14:53:20 113

原创 服务降级和服务熔断的一点总结

Hystrix和Sentinel的区别隔离设计上的对比隔离是 Hystrix 的核心功能之一。Hystrix 提供两种隔离策略:线程池隔离(Bulkhead Pattern)和信号量隔离,其中最推荐也是最常用的是线程池隔离。Hystrix 的线程池隔离针对不同的资源分别创建不同的线程池,不同服务调用都发生在不同的线程池中,在线程池排队、超时等阻塞情况时可以快速失败,并可以提供 fallback 机制。线程池隔离的好处是隔离度比较高,可以针对某个资源的线程池去进行处理而不影响其它资源,但是代价就是线程

2021-03-10 18:17:35 96

原创 ThreadPoolExecutor代码总结

简介线程池使用方法corePoolSize:核心线程数maximumPoolSize:最大线程数keepAliveTime:当总线程数大于核心线程数时,多余的空闲线程的最长停留时间unit:对应上面的时间单位workQueue:任务等待队列,超出核心线程数时,新任务会加入这个队列,常用的有ArrayBlockingQueue、LinkedBlockingQueue和SynchronousQueue(无界队列)等handler:饱和策略,超出最大线程数和队列都无法存放时的饱和策

2021-03-10 17:48:06 168 1

原创 RocketMQ架构设计

摘自官方:https://github.com/apache/rocketmq/blob/master/docs/cn/design.md1 消息存储消息存储是RocketMQ中最为复杂和最为重要的一部分,本节将分别从RocketMQ的消息存储整体架构、PageCache与Mmap内存映射以及RocketMQ中两种不同的刷盘方式三方面来分别展开叙述。1.1 消息存储整体架构消息存储架构图中主要有下面三个跟消息存储相关的文件构成。(1) CommitLog:消息主体以及元数据.

2021-03-09 18:50:13 92

原创 Rocketmq事务消息设计

摘自官方:https://github.com/apache/rocketmq/blob/master/docs/cn/design.mdApache RocketMQ在4.3.0版中已经支持分布式事务消息,这里RocketMQ采用了2PC的思想来实现了提交事务消息,同时增加一个补偿逻辑来处理二阶段超时或者失败的消息,如下图所示。转存失败重新上传取消5.1 RocketMQ事务消息流程概要上图说明了事务消息的大致方案,其中分为两个流程:正常事务消息的发送及提交、事务消息的补偿流程。1.事

2021-03-09 18:01:12 128

原创 AbstractQueuedSynchronizer相关总结

介绍提供了一个基于FIFO队列,可以用于构建锁或其他相关同步装置的基础框架。核心成员变量如下:该同步器使用了一个state(int类型)来表示状态,期望它能成为大部分同步需求的基础。 提供了一个FIFO队列,Node元素保存着线程引用和线程状态的容器,每个线程对同步器的访问,都可以看做是队列中的一个节点。//等待队列的头,延迟初始化。除了初始化,只能通过setHead方法进行修改。//如果head存在,则保证其waitStatus不会取消Node head;//等待队列的尾,延迟初始

2021-03-09 11:33:34 175

原创 CountDownLatch源码分析

A synchronization aid that allows one or more threads to wait untila set of operations being performed in other threads completes.主要有await()、countDown()这两个使用方法1、await(),底层调用AbstractQueuedSynchronizer的方法 /** * Acquires in shared mode, abor...

2021-03-09 11:32:12 63

原创 守护线程setDaemon的理解

守护进程就是守护主线程的一个独立线程,作为辅助线程,跟随主线程。主线程停止,守护线程也就跟随停止。主要作用是提供计数等功能,如gc内存清理就是跟随的守护线程,GC (垃圾回收器),它就是一个很称职的守护者。如:public class C { public static void main(String[] args) throws Exception { DaemonTh...

2018-03-21 12:07:41 83

原创 int和Integer的比较

1、int和integer比较时,integer会自动拆箱成int,然后比较值2、integer和integer比较时,如果在-128到127之间,则相等,否则不相等private static class IntegerCache { static final int low = -128; static final int high; stati...

2018-03-21 08:21:56 80

原创 java导出可执行jar文件

1.Eclipse执行导出操作,项目>

2014-07-03 22:21:49 654

空空如也

空空如也

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

TA关注的人

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