3 chenm1xuexi

尚未进行身份认证

我要认证

虚心求教,砥砺前行

等级
TA的排名 7w+

记录下java RSA非对称加密 解密工具类

/** * 飞飞 实现rsa 的非对称加密解密 工具类 * * @author xiaofeifei */@Slf4jpublic final class RSAUtils { /** * 加密解密算法 */ private static final String ALGORITHM = "RSA"; /** * 1024 bit 生成公钥 私钥 */ private static final Integer KEY_S

2020-10-13 15:18:42

记录一下https中的混合加密机制

针对于混合加密机制的了解:共享密钥加密方式: 也就是我们常说的对称加密,加密和解密都是采用同一个密钥来完成,类似算法比如是AES,一般用于对于传输文本的加密,效率较高公开密钥加密方式: 公开密钥加密方式就是我们常说的非对称加密,持有一把私有密钥和多把公开密钥,公开密钥加密的密文只能私有密钥才能解密,相反,私有密钥加密的密文可以由发布的所有公开密钥进行解密,这种加密方式安全性高,但是执行效率低下,不适用于对长文本内容进行加密,一般用于对对称加密的密钥进行加密。混合加密机制:因为共享密钥加密

2020-09-11 16:11:08

记录下centos7.3安装elasticsearch7.9.0注意事项

安装elasticsearch7.9.01. 从官网上下载elasticsearch7.9.0下载链接地址:elasticsearch7.9.0也可进入centos系统直接采用wget下载,命令如下(切记:下载的目录不可在root目录下,否则es后续无法启动,会提示找不到jdk的错误): wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.0-linux-x86_64.tar.gz2. 进入

2020-09-01 11:30:17

记录下velocity模版引擎#foreach获取索引下标

获取方式使用${velocityCount} 来获取使用${foreach.index} 来获取(推荐)最近在网上看到很多文档说的获取索引下标通过${velocityCount} 来获取,但是这个在velocity.properties中配置的初始值是从1开始的,我们需要在初始化vm引擎后,对其初始值进行配置,配置如下: // 设置 $velocityCount 初始值为0 // 已过时,采用$foreach.index 来代表索引下标 $foreach.count 来代表长度

2020-08-24 17:27:01

记录一下MessageDigest消息摘要的使用

MessageDigest 基本使用备注: 这里只演示encrypt algorithm为md5的算法展示MessageDigest主要方法简要说明:MessageDigest.getInstance(“MD5”) 创建一个消息摘要实例。MessageDigest.update(byte[] bytes) 更新当前摘要。MessageDigest.digest() 对摘要进行hash获取结果字节数组。MessageDigest 实例/** * 对字节数组转换为16进制字符串

2020-08-19 20:10:48

记录一下线上数据cpu100%的问题

记录一下线上数据cpu100%的问题重现准备:创建表:ps: 其中name + telephone字段创建索引CREATE TABLE `t_test_index` ( `id` int(20) DEFAULT NULL COMMENT '资源主键', `name` varchar(255) DEFAULT NULL, `address` varchar(255) DEFAULT NULL, `age` int(12) DEFAULT NULL, `telephone`

2020-07-09 19:57:38

记录一下对B+ TREE的简单理解

mysql索引笔记:常用的索引模型有hash表 有序数组和搜索树hash表就是数组 + 链表的散列接口 对指定的列进行hash查询到其在数组上的索引下标,然后value用于存储列名 + 主键id? hash表适用于只有等值查询的场景,不适合返回检索有序数组在等值查询和范围查询场景中的性能都很优秀如果仅仅看查询效率,有序数组就是最好的数据结构了。但是,在需要更新数据的时候就麻烦了,你往中间插入一个记录就必须得挪动后面所有的记录,成本太高。所以有序数组索引只适用于静态存储引擎,比如你要保存的是2

2020-07-09 11:39:30

记录一下 csv 文件上传下载至 oss 工具类

import java.io.*;import java.nio.charset.StandardCharsets;import java.util.List;import com.alibaba.enterprise.cash.common.exception.SystemException;import com.opencsv.CSVWriter;import com.opencsv.bean.*;import lombok.extern.slf4j.Slf4j;/** * Csv

2020-06-29 19:20:39

根据spring事务注解 + spring事件驱动来联合测试spring事务的传播机制

transaction-propagation-demo这里仅仅只是对隔离级别为mysql默认的隔离级别的测试,如果要联合隔离级别 + 传播机制测试,请自定义测试github地址

2020-03-23 17:25:24

记录下mybatis-3源码中文注释

概述说明:针对mapper.xml进行了源码注释针对mapper接口中的注解进行了源码注释,注意,这里仅仅是针对mybatis,不要把spring-mybatis整合混淆进来针对语句执行的全流程进行了源码注释(暂时只针对query),其他的原理差不多,也就没加了mybatis大量使用了构造器模式和动态代理模式,还有责任链模式,委托模式,门面模式等。github地址...

2020-03-20 13:04:31

记录下HashMap下的putVal()和resize()方法的底层源码中文注释

/** * Implements Map.put and related methods * * @param hash hash for key * @param key the key * @param value the value to put * @param onlyIfAbsent if true, don't chan...

2020-03-17 16:14:28

记录一下springboot + jwt作为认证授权框架,顺便加了一下spring事件驱动作为业务逻辑解耦

采用springboot + jwt作为认证授权框架,spring事件驱动作为业务逻辑解耦jwt用户验证流程:用户使用账号和密码发出POST登录请求;服务器使用私钥创建一个JWT;服务器返回这个JWT给浏览器;浏览器将该JWT串放在请求头中向服务器发送请求;服务器验证该JWT;返回响应的资源给浏览器。服务启动说明:创建数据库jwt_user执行resources/db...

2020-03-16 21:42:37

记录一下基于hashmap + 双向链表实现LRU 算法

package com.feifei.demo.arithmetic;import lombok.AccessLevel;import lombok.Getter;import lombok.Setter;import lombok.experimental.FieldDefaults;import java.util.Objects;import java.util.concu...

2020-03-15 16:26:20

记录一下ReentrantLock + Condition的组合使用

/** * 可重入锁 + Condition组合测试 * <p> * 实现张三说1 ,李四说2 ,王五说3,赵六说4,然后轮询 * * @author xiaofeifei * @date 2020-03-12 * @since */@FieldDefaults(level = AccessLevel.PRIVATE)public class ReentrantL...

2020-03-12 20:24:02

记录一下jvm的相关知识点

java 运行时数据区域:1.程序计数器 => (每个线程都包含一个程序计数器)用来记录字节码执行的行号,字节码指令的循环,跳转,异常处理,线程恢复等需要依靠计数器。2.Java虚拟机栈 => 主要用来描述Java方法执行的内存模型,(每个线程都包含一个虚拟机栈)主要用来处理方法的调用,虚拟机栈中的存储单元是栈帧,方法在执行的同时都会在虚拟机栈中创建一个栈帧,栈帧包含操作数栈,局部...

2020-03-11 10:59:50

记录一下改写mybatis-plus租户插件,实现多个字段来确定一个租户,实现租户数据隔离

mybatis-plus-tenantgithub地址考虑到很多企业的租户隔离并非就是通过一个字段来做区分,存在最初设计的缺陷或者是业务场景导致多个字段来确定一个租户类型的情况,随着项目或者产品不断的更新迭代,多个字段来确定租户也便成为了某些企业的租户定义标准。mybatis-plus对多个字段来确定一个租户来实现租户数据隔离是不支持的,好在mybatis-plus提供了我们自定义拓展的方...

2020-03-03 13:31:50

记录一下springboot + flyway的集成

flyway-demo主要用于记录flyway + springboot整合使用针对springboot的版本和flyway的版本建议如下:springboot2.0.x 推荐使用flyway5.2.4的版本(如果强制采用6.0版本及以上会出现文件无法找到的错误)springboot2.1.x ~ 最新版本 推荐使用flyway6.2.4的版本这是一个使用flyway的小d...

2020-02-28 10:28:40

记录一下采用java来实现异步的事件驱动模型

1. node.js中基本上都是采用异步的事件驱动模型来实现的,如何采用Java代码实现一个异步的事件驱动模型呢?下面的例子的场景是模拟借阅者向图书管理员借书。/** * 图书借阅者 * <p> * 图书借阅者的行为便是借书,其中需要与图书管理员交互 * 所以需要持有管理员的引用 * * @author xiaofeifei * @date 2020-02-13...

2020-02-13 22:05:18

记录一下IDEA2019.1中采用自己的gradle后,出现服务启动错误的问题解决方案

构建gradle项目的时候需要将gradle中的Delegate settings两个选项设置为IntelliJIDEA即可。

2020-02-12 22:36:12

记录一下mac 安装Oh My Zsh后, 配置gradle环境变量,terminal不生效的解决方案

因为安装了zsh了,所以原先的terminal终端使用source ~/.bash_profile后只对当前终端界面生效;解决方案:1. 进入iterm2,输入命令:vim ~/.zshrcvim ~/.zshrc2.使用control + F快捷键跳转到最后一位,输入 source ~/.bash_profile3. 使用wq保存并退出4. 输入 source ~...

2020-02-12 22:02:28

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。