自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分布式锁-redis、zookeeper优缺点

redis分布式锁优缺点缺点:获取锁的方式简单粗暴,获取不到锁直接不断尝试获取锁,比较消耗性能; redis的设计定位决定了它的数据并不是强一致性的,在某些极端情况下,可能会出现问题。锁的模型不够健壮; 使用redlock算法来实现,在某些复杂场景下,也无法保证其实现100%没有问题,关于redlock的讨论可以看 How to do distributed locking; redis分布式锁,其实需要自己不断去尝试获取锁,比较消耗性能。zookeeper分布式锁优缺点优点zook

2022-02-11 17:08:31 2111 1

原创 SpringBoot整合Seata

谢谢谢谢谢寻寻

2021-12-17 09:41:58 622

原创 雪花算法的实现原理

第一部分1bit:0没有任何意义(因为二进制里第一个bit如果为1,那么都是负数,但是我们生成的ID都是正数,所以第一个bit统一都是0); 第二部分41bit:表示时间戳(毫秒)(41bit可以表示的数字多达2^41 - 1,也就是可以标识2^41 - 1个毫秒值,换算成年就是表示69年的时间); 第三部分5bit:表示机房ID(最多可以代表2^5=32个机房); 第四部分5bit:表示机器ID(最多可以代表2^5=32台机器); 第五部分12bit:表示序号,就是某个机房某台机器上这一毫...

2021-11-22 16:05:14 566

原创 【MySQL】常用网站

官方网站:MySQLhttps://www.mysql.com/

2021-11-17 16:36:02 975

原创 Centos7安装Redis

安装GCC依赖yum install -y gcc下载redis安装包wget http://download.redis.io/releases/redis-5.0.9.tar.gz解压安装包tar -xvf redis-5.0.9.tar.gz编译并安装cd /usr/local/redis-5.0.9make && make install启动Redis服务前台启动cd /usr/local/redis-5.0.9/bin./redi

2021-11-04 14:38:13 519

原创 java学习导航

目录JAVA加密、解密消息摘要算法对称加密算法非对称加密算法数字签名算法JAVA加密、解密 消息摘要算法 对称加密算法 非对称加密算法 数字签名算法

2021-10-25 17:52:55 277

原创 分组密码五种工作模式

电子密码本模式(Electronic Code Book,缩写ECB) 电子密码本模式是最基本、最易理解的工作模式。每次加密均产生独立的密文分组,每组的加密结果不会对其他分组产生影响

2021-10-13 14:08:22 7357 3

原创 【MySQL】锁介绍

一、锁粒度分类1.1 行级锁1.2 表级锁1.3 页级锁

2021-10-09 17:23:17 83

原创 SpringBoot2启动流程源码分析 - run()方法

SpringApplication实例run()方法源码/** * Run the Spring application, creating and refreshing a new * {@link ApplicationContext}. * @param args the application arguments (usually passed from a Java main method) * @return a running {@link ApplicationContext}

2021-09-28 11:36:11 135

原创 SpringBoot2启动流程源码分析(一) - 入口类

1、启动入口代码@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}2、进入run方法public static ConfigurableApplicationContext run(Class<?>[] prima

2021-09-27 11:41:23 199

原创 Kevin读书会

专业《图解HTTP》·上野宣 - 微信读书《HTTP权威指南》·David Gourley Brian Totty - 微信读书课外《进入空气稀薄地带》《自卑与超越》

2021-09-22 11:36:07 88

原创 安全中心设计

背景 随着系统SAAS化,需要保证租户订单数据在互联网传输过程中的安全性。设计要求敏感信息的不可见性 防止数据被篡改 http请求的真实性功能加密流程

2021-09-09 18:03:08 119

原创 专业知识总结

@RestController与Controller区别?1、如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是return里的内容。2、如果需要返回到指定页面,则需要用@Controller配合视图解析器InternalResourceViewResolver才行。如果需要返回json、xml或自定义mediaType内容

2021-09-08 22:30:21 89

原创 安全篇 - 散列算法

简介 散列(英语:Hashing)是电脑科学中一种对数据的处理方法,通过某种特定的函数/算法(称为散列函数/算法)将要检索的项与用来检索的索引(称为散列,或者散列值)关联起来,生成一种便于搜索的数据结构(称为散列表)。旧译哈希(误以为是人名而采用了音译)。它也常用作一种信息安全的实现方法,由一串数据中经过散列算法(Hashing algorithms)计算出来的数据指纹(data fingerprint),经常用来识别文件与数据是否有被窜改,以保证文件与数据确实是由原创者所提供。算法...

2021-09-08 15:27:05 574

原创 非对称加密算法

简介 非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反...

2021-09-08 14:57:52 368

原创 安全 - 对称加密篇

简介 对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为私密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息进行解密,所以密钥的保密性对通信的安全性至关重要。算法DES(Data Encryption ...

2021-09-08 11:45:20 661

原创 Wireshark抓包Https报文

Https请求完整流程Client HelloTLS版本 TLSv1.2也是SSLv3.2.这是SSL客户端能够支持的SSL最高版本,主版本号3,次版本号2。TLS当前的版本如下:MajorVersion Minor Version Version Type 3 0 SSLv3 3 1 TLS1.0 3 2 TLS1.1 3 3 TLS1.2 最后使用什么版本,得由服务端决定。...

2021-08-27 09:21:50 514

原创 Http响应状态码

HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码。它由RFC 2616规范定义的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774与RFC 4918等规范扩展。所有状态码被分为五类,状态码的第一个数字代表了响应的五种状态之一。所示的消息短语是典型的,但是可以提供任何可读取的替代方案。 除非另有说明,状态码是HTTP/1.1标准(RFC 7231)的一部分。[1]HTTP状态码的官方注册表由互联网号码...

2021-08-25 14:35:24 92

原创 Http请求、响应报文结构

简介 用于http协议交互的信息被称为http报文。请求端(客户端)的http报文叫做请求报文,响应端(服务端)的叫做响应报文。http报文本身是由多行数据构成的字符串文本。http报文大致可分为报文首部和报文主体两块。两者由最初出现的空行来划分。通常,并不一定要有报文主体。请求报文http请求报文有请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。如下图:...

2021-08-25 10:58:49 1391

原创 数字签名算法及JAVA实现案例

目录简介特征鉴权完整性不可抵赖简介 数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者信息真实性的一个有效证明。特征鉴权 公钥加密系统允许任何人在发送信息时使用公钥进行加密,接收信息时使用私钥解密。当然,接受者不可能百分之百确信发送者的真实身份,而只能在密码系统未被破译的情况下才有理由确信。 鉴权的重要性在财务数据上表现得尤为突出。举个例子,假设一家银行将指令由它的...

2021-08-24 11:29:21 1280

原创 AES加密算法

密钥类型AES-128:128位比特(16字节) AES-192:192位比特(24字节) AES-256:256位比特(32字节)一般简短数据采用AES-128,也就是16字节,少部分采用AES-256。填充方式NoPadding:不填充,只能加密长度为16倍数的数据,一般不适用; Zeros:补0,如果原数据长度恰好是16的倍数,也要补16个0; ISO10126:最后一个字节是填充的字节数(包括最后一字节),其他全部填随机数1 2 3 4 5 6 7 8 9 10 –..

2021-08-18 11:22:07 2222

原创 加密常用网站

MD5解密:https://md5.cc/

2021-08-16 16:13:16 11349

原创 JVM指令

一、栈和局部变量操作1.1 将常量压入栈的指令aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_0 将int类型常量0压入栈 iconst_1 将int类型常量1压入栈 iconst_2 将int类型常量2压入栈 iconst_3 将int类型常量3压入栈 iconst_4 将int类型常量4压入栈 iconst_5 将int类型常量5压入栈 lconst_0 将long类型常量0压入栈 lconst_1 将long类型

2021-08-13 15:26:06 197

原创 Arthas命令详解

[arthas@1654]$ dashboardID NAME GROUP PRIORITY STATE %CPU DELTA_TIME TIME INTERRUPTED DAEMON 19 rpc...

2021-08-06 16:00:25 837

原创 第一篇 - 生产运维之jstat命令详解

类加载统计jstat -class 进程号Loaded Bytes Unloaded Bytes Time 17971 34945.7 83 87.4 35.42Loaded:加载class的数量 Bytes:所占用的空间大小 Unloaded:未加载的数量 Bytes:未加载占用的空间大小 Time:时间...

2021-08-05 14:29:58 140

原创 分布式事务Seata-AT模式源码解析

客户端初始化Seata在GlobalTransactionScanner中进行了TM和RM初始化private void initClient() { if (LOGGER.isInfoEnabled()) { LOGGER.info("Initializing Global Transaction Clients ... "); } if (StringUtils.isNullOrEmpty(applicationId)

2021-08-02 16:06:54 196

原创 第二篇 - Maven的settings.xml文件详解

概要 settings.xml文件是maven的全局配置文件,pom.xml文件是所在项目的局部配置。settings.xml中包含了本地仓储位置、修改远程仓储服务器、认证信息等配置。配置优先级 局部配置优先于全局配置。配置优先级从高到低:pom.xml > user settings > global settings,如果这些文件同时存在,在应用配置时,会合并它们的内容,如果有重复的配置,优先级高的配置会覆盖优先级低的。settings.xml配置元素...

2021-07-30 09:57:59 995

原创 第五篇 - 分布式事务解决方案之2PC提交协议

常见两阶段提交(2PC) 两阶段提交又称为2PC,2PC是一个非常经典的强一致、中心化的原子提交协议。这里所说的中心化是指协议中有两类节点:一个是中心化协调节点(coordinator)和N个参与者节点(partcipant)。举例:订单服务A,需要调用支付服务B进行支付,支付成功则处理购物车订单为待发货状态,否则就需要将购物车处理为失败状态。那么看看2PC阶段是怎么处理的。第一阶段:投票阶段事务询问 执行本地事务 各参与者向协调者反馈事务询问的响应第二阶段:提...

2021-07-27 11:26:11 143

原创 第四篇 - 分布式事务及其产生的场景

概念场景微服务之间通过远程调用完成事务操作。例如:订单服务和库存服务,下单的同时订单服务请求库存服务扣减库存。因跨JVM进程产生了分布式事务。 单体系统访问多个数据库实例。例如: 多个服务访问同一个数据库实例。例如:订单服务和库存服务访问同一个数据库也会产生分布式事务,原因就是跨JVM进程,两个服务持有了不同数据库链接进行数据库操作,因此产生了分布式事务。...

2021-07-27 10:57:48 194

原创 第三篇 - 事务类型

本地事务 在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于应用主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器,所以基于关系型数据库的事务又被称为本地事务。分布式事务 分布式系统把一个应用系统拆分成多个可独立部署的服务,因此需要服务与服务之间远程协作才能完成事务操作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务。...

2021-07-27 10:40:04 136

原创 第二篇 - 事务的隔离级别及传播机制

事务的隔离级别读未提交 读已提交 可重复度 串行化事务的传播行为 与事务的隔离级别不同,传播特性是指一个事务开启后,如果在事务内涉及到其他事务的调用,是沿用主事务,还是开启新事务,亦或是不接受事务。REQUIRED:如果存在一个事务,支持当前事务。如果没有则开启一个新的事务。 SUPPORTS:如果存在一个事务,支持当前事务。如果没有则按照非事务的执行。 MANDATORY:如果已经存在一个事务,支持当前事务。如果没有则抛出异常。 REQUIRES_NEW:总是开启一个...

2021-07-27 10:19:23 81

原创 事务学习导航

《第一篇 - 事务及事务四大特征》 《第二篇》

2021-07-27 09:47:50 63

原创 第一篇-事务及事务四大特征

概念 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所做的所有更改都会被撤销。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。四大特征原子性(Atomicity):事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 一致性(Consistency):事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须...

2021-07-26 15:11:29 120

原创 HTTP协议

简介 超文本传输协议(Hyper Text Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。概述 HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTM...

2021-07-26 14:46:59 84

原创 设计模式之责任链模式

什么是责任链模式? 客户端发出一个请求,链上的对象都有机会来处理这一请求,而客户端不需要知道谁是具体的处理对象。这样就实现了请求者和接受者之间的解耦,并且在客户端可以实现动态的组合职责链。使编程更有灵活性。 定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。其过程实际上...

2021-07-13 10:35:59 67

原创 深入理解JVM(一)- 对象内存分配策略

堆内存分配策略 堆空间在JVM启动的时候即根据设置创建,是java程序中最重要的内存工作区域。堆空间是所有线程共享的。 JVM分配对象,一般来说,new一个新对象,都是分配在堆空间的,其实这也不是绝对的,存在部分对象是分配在栈上以及TLAB(全称:Thread Local Allocation Buffer,线程本地分配缓存区,是一个为线程分配的专用内存区域。在使用参数 -XX:UseTLAB打开设置的时候,在进行线程初始化的时候,会去分配一小块的内存区域供线程使用,如果这样...

2021-07-13 10:35:38 145

原创 RocketMQ物理架构

消息队列RocketMQ是阿里巴巴集团基于高可用分布式集群技术,自主研发的云正式商用的专业消息中间件,即可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性,是阿里巴巴双11使用的核心产品。 RocketMQ的设计基于主题的发布与订阅模式,其核心功能包括消息发送、消息存储(Broker)、消息消费,整体设计追求简单与性能第一。核心概念1、NameServerNameServer是整个RocketMQ的...

2021-07-06 16:01:32 269

原创 Oauth2.0的几种授权模式及应用场景

2012年10月,Oauth2.0协议正式发布为RFC 6749。现在百度开放平台、腾讯开放平台等大部分的开放平台都是使用的Oauth2.0协议作为支撑。概述 Oauth是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名、密码提供给第三方移动应用或分享他们数据的所有内容。 在Oauth2.0的认证和授权的过程中主要包括以下角色定义:Resource Owner:资源所有者(通常指用户或者提供资源服务的平台...

2021-07-06 11:26:33 615

原创 SpringSecurity工作流程

工作原理SpringSecurity过滤器链SpringSecurity采用的是责任链的设计模式,它有一条很长的过滤器链。SecurityContextPersistenceFilter会在请求开始时从配置好的SecurityContextRepository中获取SecurityContext,然后把它设置给SecurityContextHolder。在请求完成后将SecurityHolder持有的SecurityContext再保存到配置好的SecurityContextReposit

2021-07-02 15:42:19 720

原创 安全框架-Shiro、Spring Security对比

Shiro Shiro是一个强大而灵活的开源框架,能够非常清晰的处理认证、授权、管理会话以及密码加密。它有如下特点:易于理解的Java Security API; 简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos、ActiveDirectory等); 对角色的简单鉴权(访问控制),支持细粒度的鉴权; 支持一级缓存,以提升应用程序的性能; 内置的基于POJO企业会话管理,适用于Web以及非Web的环境; 异构客户端会话访问; 非常简单的加密API;...

2021-07-02 10:18:53 386 1

windows下自动备份oracle数据dmp文件并压缩

windows下自动备份oracle数据dmp文件并压缩成rar文件。

2014-11-25

空空如也

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

TA关注的人

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