- 博客(44)
- 问答 (2)
- 收藏
- 关注
原创 SpingBoot简单限流插件开发
SpingBoot简单限流插件开发一、限流方案 1、Google的Guava工具包中就提供了一个限流工具类——RateLimiter,本文也是通过使用该工具类来实现限流功能。RateLimiter是基于“令牌通算法”来实现限流的。 2、目前返回信息是 json 格式的数据,如果需要 xml ,可以将返回的类型放到 配置文件中,根据需要定制 3、本文只给出核心代码,详细代码,前往码云查看:https://gitee.com/wsy_13926404489/spring-boot...
2021-05-24 14:47:59
295
原创 CPU 利用率高/飙升分析思路
一、常见问题: 1、频繁发生 full GC 2、死循环、线程阻塞、IO wait 二、方法(定位代码) 思路一: 1、通过 top 命令定位到 CPU 最该的进程(一般是我们的应用进程) top 2、定位使用 CPU 最高的线程 top -Hp pid 3、将线程 pid 转成 16进制 p...
2020-07-30 10:22:43
567
原创 策略模式
优点: 1.策略模式的功能就是通过抽象、封装来定义一系列的算法,使得这些算法可以相互替换, 所以为这些算法定义一个公共的接口,以约束这些算法的功能实现。如果这些算法具有公共的功能,可以将接口变为抽象类,将公共功能放到抽象父类里面。 2.策略模式的一系列算法是可以相互替换的、是平等的,写在一起就是if-else组织结构, 如果算法实现里又有条件语句,就构成了多重条件语句,可以用策略模式,避...
2019-05-05 23:30:01
277
原创 原型模式
优点: 1、如果创建新的对象比较复杂时,可以利用原型模式简化对象的创建过程,同时也能够提高效率。 2、可以使用深克隆保持对象的状态。 3、原型模式提供了简化的创建结构。缺点: 1、在实现深克隆的时候可能需要比较复杂的代码。 2、需要为每一个类配备一个克隆方法,而且这个克隆方法需要对类的功能进行通盘考虑,这对全新的类来说不是很难,但对已...
2019-05-04 22:42:08
144
原创 HashMap同步问题
一、HahMap 的同步问题 我们都知道 HashMap 是线程不安全的,多线程环境下,会造成数据脏读,其实 HashMap 还有可能发生死循环(循环链表),从而导致内存,CPU 飙升(100%)的情况,下面我们就来分析一下:该问题的出现主要是resize() 方法造成的,下面是resize() 核心代码:void resize(int newCapacity){ ...
2019-03-02 15:11:11
1582
原创 Map如何解决同步的问题
前面我们说到HashTable、Collections工具类的synchronizedMap()方法、ConcurrentHashMap 都是线程安全的,那他们是怎么保证线程安全的呢?一、HashTable 的同步原理 1、通过查看HashTable 的源码,发现HashTable 继承Dictionary。public class Hashtable<K,V>...
2019-03-02 15:10:53
1934
原创 java 集合
一、什么是java集合 java集合是用来存放java对象的容器,集合类放在 java.util 包中。 注意: 1.java 集合只能存放对象,如果存入的是基本的数据类型,会进行装箱,然后在存放到集合中 2.集合存放时是对象的引用,对象本身还是存在在堆内存中 3.集合可以存放不同类型(一般不会这么做)、不限数据的数据类型...
2019-02-28 00:29:56
209
原创 多次读取Request数据流
1.需要多次读取Request中携带的数据流,但是默认的只能读取一次;2.如果需要多次读取Request中携带的数据流,需要重写 HttpServletRequestWrapper 的getReader() 和 getInputStream()方法;3.代码:import java.io.BufferedReader;import java.io.ByteArrayInputSt...
2018-11-16 15:35:45
3028
1
原创 Redis
Redis 简介Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis与其他 key - value缓存产品有以下三个特点:· Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。· Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据...
2018-04-01 16:58:38
192
原创 Weblogic 新建服务节点、启动并安装应用
进入weblogic 控制台,找到【环境】并点击,然后点击【服务器】,进入如下图所示界面:点击【新建】,进入如下界面:然后直接点击完成即可,到这一步服务器就已经建立完成了,接下来就是启动服务节点了,如下图就是我自己建立的 服务节点修改serverMgr.sh 文件,操作步骤如下:a. 进入serverMgr.sh 文件路径, 命令:$WLS_HOME\domain\域名 ...
2018-04-01 12:04:22
20149
原创 ActiveMQ 基础
1.安装 ActiveMQ (Linux)1.上传安装包(apache-activemq-5.15.3-bin.tar.gz)2. 解压安装包 :tar xzf apache-activemq-5.15.3-bin.tar.gz3.启动 activeMQ : a)进入 $/ cdapache-activemq-5.15.3/lib b)启动mq :./activemq
2018-04-01 11:45:49
196
原创 ActiveMQ 高级
1.ActiveMQ 的持久化机制:为了防止系统意外down机丢失消息,同时能在系统恢复后能重新发送原来未发送的消息。一般消息系统都会采用持久化机制。ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB,无论使用哪种持久化方式,消息的存储逻辑都是一致的。ActiveMQ 默认消息不持久化就是在发送者将消息发送出去后,消息中心首先将消息存储到本地数据文件、内存数据库或者远...
2018-04-01 11:34:30
326
原创 Linux安装Redis
1. 下载redis 安装包(redis-2.8.17)2. 将下载之后的安装包上传到 linux 服务器上 (这一步也可以直接使用:wget http://download.redis.io/releases/redis-2.8.17.tar.gz 命令下载源文件 )3. 解压上传的文件 ,使用 tar xzfredis-2.8.17.tar.gz 命令4.
2018-03-15 10:35:00
185
原创 oracle创建用户与表空间
1.创建用户(在 sys 用户下操作)create user 用户名 identified by 密码;2.修改用户密码(在 sys 用户下操作) Alter user 用户名 identified by 新密码;3.删除用户(在 sys 用户下操作)drop user 用户名 cascade; --- 加上cascade则将用户连同其创建的东西全部删除4.用户授权(在 sys 用户下操作)gra...
2018-03-07 16:14:36
253
原创 数字签名(3):ECDSA
一.ECDSA: 椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟二.三.四.具体的实现(java):
2017-09-11 19:54:37
11471
2
原创 数字签名(2):DSA
一.DSA : Digital Signature Algorithm (DSA)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSfS(DigitalSignature Standard)。二.模型三.具体的算法,实现方,秘钥长度算法密钥长度默认长度签名长度实现的方SHA1wi
2017-09-11 19:45:22
512
原创 数字签名(1):RSA
一.数字签名:数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。数字签名是非对称密钥加密技术与数字摘
2017-09-10 12:31:29
681
原创 MD5 加密
一.MD5:Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。MD5即Mes
2017-09-09 17:22:07
300
原创 非对称加密算法(3):ElGamal
一.ElGamal:ElGamal算法,是一种较为常见的加密算法,它是基于1985年提出的公钥密码体制和椭圆曲线加密体系。既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散对数这一难题。在加密过程中,生成的密文长度是明文的两倍,且每次加密后都会在密文中生成一个随机数K,在密码中主要应用离散对数问题的几个性质:求解离散对数(可能)是困难的,而其逆运算指数运算可以应用平方-乘的方法有效地
2017-09-09 16:53:31
649
原创 非对称加密算法(2):RSA
一.RSA:RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年7月首次在美国公布,当时他们三人都在麻省理工学院工作实习。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘
2017-09-09 12:03:35
367
原创 非对称加密算法(1):DH
一.非对称加密算法:对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。二.优缺点:非对称加密与对称加密相比,其安全性更好:对称加密的通信双方使用相同的秘钥,如果一方的秘钥遭泄露,那么整个通信就会被破解。而非对称加密使用一对秘钥,一个
2017-09-07 18:03:42
710
原创 对称加密算法(4):PEB
一.PBE(Password Based Encryption,基于口令加密)是一种基于口令的加密算法,其特点是使用口令代替了密钥,而口令由用户自己掌管,采用随机数(这里称之为 盐 或者 扰码)杂凑多重加密等方法保证数据的安全性。PBE 算法并没有 真正构建新的加密/解密算法,而是对已知的对称加密算法(eg:DES算法)做了包装;使用PBE算法对数据做加密/解密操作时,其实是使用了 DES 或者
2017-09-02 18:02:29
942
原创 对称加密算法(3):AES
一.AES:AES加密算法即密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在200
2017-09-02 11:24:15
401
原创 对称加密算法(2):3DES
3DES 的实现方式:jdk 的实现 , BouncyCastle 的实现方式 /** * jdk 3DES 生成秘钥 * @return * @throws Exception */ public static byte [] JDK_3DES_GetSecretKey() throws Exception{ KeyGenerator keyGener
2017-08-31 21:49:08
293
原创 对称加密算法(1):DES
一.对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。二.对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES 等三.优缺点:对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。对称加密算法的缺点是在数据传送
2017-08-31 21:21:39
474
原创 Base64 加解密
1.产生的原因:邮件在通过网关的时候,存在不能被识别的字符,所以需要将字符转成可被识别的字符2.Base64 是基于 64 个字符的编码算法 3.常用的 Base64 加密算法,有 3 中,分别是 jdk 的实现 , commons codec 的实现 ,bouncy Castle 的实现 。4.Base64 作为一种加密的的算法,但是违反了 “”柯克霍夫原则 “” ,较容易
2017-08-30 20:12:56
416
原创 Java IO
Java IO 一.IO 分类 1.根据处理数据类型的不同分为:字符流和字节流 2.根据数据流向不同分为:输入流和输出流 3.字节流:字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。 本质其实就是基于字节流读取时,去查了指定的码表。 4.字节流和字符流的区别:
2017-06-21 13:43:18
327
原创 常用的 GC 参数
常用的 GC 参数1.串行回收器相关参数 -XX:+UseSerialGC 新生代和老年代都使用串行收集器 -XX:+SurviviorRatio 设置 eden 区大小和survivior 区大小的比例 -XX:PertenureSizeThreshold 设置大对象直接进入老年代的阈值,当对象的大小超过这个值时
2017-05-31 22:17:26
1487
原创 垃圾收集器和内存分配
垃圾收集器和内存分配1.新生代串行回收期: a.最古老的垃圾回收器,也是JDK中最基本的垃圾回收器之一 b.特点: 1.仅仅使用单线程进行垃圾回收 2.独占式的垃圾回收 c.串行收集器进行垃圾回收时,java应用程序中的线程都需要暂停,等待垃圾回收完成。 该操作会导致长时间的 STW ,如果在实时性要求较高的应
2017-05-25 23:23:33
216
原创 垃圾回收概念及基础
垃圾回收概念及基础1.清理没有被root对象引用的对象,释放内存空间,供其他对象使用2.java中有自动回收垃圾的机制,不需要程序员手动的去回收对象。3.一般为了加快内存空间的回收,把不需要使用的对象置为 null。4.垃圾回收算法:引用计数法,标记压缩算法,标记清楚法,复制算法和分代、分区思想5.引用计数法:(因为存在缺陷,java并未使用该算法) 最经典最古老
2017-05-25 01:34:53
374
原创 JDK参数总结
1.方法区 在jdk1.7以下的版本中,使用-XX:PermSize设置永久区的初始化空间,使用-XX:MaxPermSize 设置永久区的最大可用空间,但1.8之后,永久区被移除,使用了元数据区, 默认情况下元数据区的大小受系统可用内存的限制,但任可以使用-XX:MaxMetaspaceSize 指定永久区的最大使用空间2.栈 使用-Xss配置线程栈的大小3.直接内存 最大可直接使
2017-05-24 00:47:16
1034
原创 jdk常用参数
-Xmx:系统最大可使用堆空间-Xms:系统可使用堆空间(初始大小)(一般会把-Mms与-Xmx设置相同,这样可以减少程序运行时垃圾回收的次数,从而提高性能)-Xss:线程最大栈空间-XX:+PrintGC:打印GC日志信息-XX:+PrintGCDetails:打印GC日志信息-XX:+PrintHeapAtGC:打印GC日志信息-XX:+PrintGCTimeStamp:打印GC
2017-05-24 00:42:53
759
原创 SpringMVC
SpringMVC 1.需要的 jar 文件 2.在 web.xml 中配置 Springmvc 拦截器 springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc-servlet.x
2016-07-26 09:35:48
195
原创 maven
一. maven 的安装 1. 下载 maven (下载地址:https://maven.apache.org/download.cgi) 2. 将 下载的 maven 解压 3. maven 环境变量的配置 变量名值M2_HOME maven 解压路径(例如:D:\MyProgramFiles\apache-ma
2016-07-10 09:53:59
201
空空如也
SpringBoot多数据源问题
2018-12-15
xfire-servlet.xml 配置问题
2017-11-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人