自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spring boot 使用HttpServletRequestWrapper以及AbstractHttpMessageConverter 优雅的解决数据双重加解密

最近接到一个需求,因为数据来自外来机构。数据加密要求比较严格,数据进行了双重加密。具体情况为数据在第一层加密为全数据加密,以及签名,数据格式如下其中data为全加密的数据,sign为data解密后,原始数据的签名。对数据进行第一层解密后,会得到一个数据,这个数据中还存在一些敏感的字段,这些字段进行了第二次加密。数据类似于此时数据需要二层解密。

2023-12-20 11:53:29 429

原创 Redis数据结构——String

Redis中的String是基于c语言中的字符数组构建的一种结构体。主要包含len,content,以及capacity。

2022-12-28 19:37:43 421 1

原创 MongoDb设置数据给过期时间

db.document.createIndex({“字段”: 1},{expireAfterSeconds:过期时间})MongoDb可以使用它的TTL特性设置某一条数据的过期时间。

2022-12-27 20:00:20 1369

原创 阿里云SASL_SSL连接kafka

kafkaListener的配置。

2022-12-25 22:11:00 566

原创 List<Map>转sql的Insert语句

【代码】List转sql的Insert语句。

2022-12-25 22:06:15 551

原创 spring boot自定义注解使用spel表达式

【代码】spring boot自定义注解使用spel表达式。

2022-12-23 21:09:59 449

转载 JAVA成神之路-基础篇——ConcurrentHashMap源码阅读(二) transfer()(转)

【代码】JAVA成神之路-基础篇——ConcurrentHashMap源码阅读(二) transfer()(转)

2022-12-20 21:59:55 100

原创 JAVA成神之路-基础篇——ConcurrentHashMap源码阅读(一) initTable()

【代码】JAVA成神之路-基础篇——ConcurrentHashMap源码阅读(一) initTable()

2022-12-19 22:28:13 108

原创 JAVA成神之路-基础篇——常用jvm命令(二)

该命令是用于查看jvm运行时状态的命令。他和jstack的主要区别时,jstack个重要的是栈中的情况,而jstat更看重的是jvm中的状态,例如垃圾回收的情况,每分钟回收多少次等。该命令主要是对栈中情况的判断。主要情景在我们日常使用中,程序莫名其妙的卡顿不在执行,此时可以使用jstack进行堆内情况的查询。该命令的作用主要是获取我们启动时传递给jvm的参数,或其他传递给程序的参数。jps 该命令是用来获取java中当前运行的进程,可以使用该命令获取进程Id,根据pid从而进行一些列的其他相关操作。

2022-12-18 21:08:41 477

原创 jvm参数

jps(java process status tool), 用于查看java进程及相关信息,如果你想找到一个java进程的pid,可以使用jps命令代替linux的ps命令。

2022-12-17 23:22:36 83

原创 JAVA成神之路-基础篇——常用jvm命令(一)

小阳人终于身体稍微好了一些,所以今天恢复继续。

2022-12-14 22:22:50 85

原创 JAVA成神之路-基础篇——组合和继承

今天看着思维导图想了好久封装继承和多态这里写什么。最后决定写写这个组合和继承吧。这俩货其实在日常开发中还是挺有用的。个人感觉有很多设计上的模式实际都是这两个相护配合产生的。

2022-12-10 22:43:33 365

原创 对现有动态数据源的优化

前几天其他组在使用动态数据源时因为实现的问题,在方法A中调用方法B两个方法使用不同的动态数据源,当方法B执行完成后没有恢复方法A的数据源而是使用了默认的动态数据源,通过排查发现数据源存在ThreadLoal中,当ThreadLocal为空时就会使用默认数据源,而清空方法在AOP中方法调用结束后。所以A回到了默认方法。同事解决方案是使用一个新的线程执行B但是我觉得这不太好。所以自己使用stack实现了一个。思路很简单,在ThreadLocal中存放一个stack,当遇到动态数据源时就添加。方法执行结束后对st

2022-12-09 22:41:08 268

原创 spring data jps + clickhouse缺少方言解决方法

在resources/META-INF下增加spring.factories文件。其中=的值为自定义的路径。自定义的方言解析器(使用myslq的)

2022-12-09 22:30:03 754

原创 JAVA成神之路-基础篇——面向对象

面向对象这个问题我们可以从思维和代码两个角度来说。从思维的角度来说,对象是我们生活中所能看到的一切,对象具有两个典型的特征:1.它具有自己的属性2.它具有自己的行为模式比如经常被举得例子,汽车可以在马路上跑。这时候汽车对于我们来说他就是一个对象。它拥有座椅,轮子,发动机等等属性,同时这些属性相护配合,使汽车这个整体可以实现载人,移动这些功能也就是行为模式。也许你会觉得疑惑,那座椅是不是一个对象呢?它当然也是。

2022-12-09 21:55:47 1486 2

原创 20221129

20221129记录

2022-11-29 18:32:14 345

原创 20221116

每日一记

2022-11-16 21:27:18 151

原创 20221115

spring data jdbc中存在自动配置的jpa相关内容,在使用时,他会使用DialectResolver这个类扫描方言。但是clickhouse的getDatabaseProductName方法返回数据为Clickhouse。spring data jdbc中默认的方言并不存在clickhouse。因此导致方言查找异常。clickhouse + spring data jdbc报方言无法找到错误。1.早晨在公交学习了mvcc(待深入学习)2.一种新的处理Kafka消息的方式。

2022-11-15 18:51:35 652

原创 #1024程序员节# 2021-10-25 #1024程序员节#

我就是为了要个勋章。。。水一篇文章

2021-10-25 18:24:06 100

原创 jdk17不在支持javascript解决方法

jdk在11开始就标注要取消NashornScriptEngineFactory类。在17中删除。给出的理由是因为jdk中维护不方便。所以我们可以在maven中找到对应的开发包。 // https://mvnrepository.com/artifact/org.openjdk.nashorn/nashorn-core implementation group: 'org.openjdk.nashorn', name: 'nashorn-core', version: '15.3'引入后

2021-10-21 11:12:53 4047

原创 idea2021控制台乱码

idea2021可能是为了提高速度,将很多信息缓存到了appdata目录下,其中包括了以前常修改的idea64.exe.vmoptions.如果直接修改安装目录下的他,不会生效(这个启动过的),因此需要修改用户目录下的文件,可以通过菜单栏里的help,下的Edit Custon VM Options来修改,加入 -Dfile.encoding=UTF-8 ...

2021-08-06 17:57:44 3892

原创 tomcat无法加载maven的jar包

需要手动将包添加到输出的地方

2021-06-13 21:22:52 230

原创 写一个函数,计算两个1000000位长的正整数相加的值

public String sum(String first,String second){ Map<String,char[]> firstMap = this.subString(first); Map<String,char[]> secondMap = this.subString(second); StringBuilder result = new StringBuilder(); Stack<...

2021-06-12 10:59:04 107

原创 Java双端队列给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。

public List<Integer> getMaxFromLimit(Integer[] nums, int k) { List<Integer> list = Arrays.asList(nums); Map<String, Integer> subMaxDetail; List<Integer> result = new ArrayList<>(); List<...

2021-06-12 10:54:43 1431 1

原创 快速生成dto转vo的方法

方法1.使用BeanUntils所属包org.springframework.beans.BeanUtils。demo:Entity实体类import lombok.Data;import java.util.Date;/** * @author sunyan * @version 1.0 * @date 2021/3/31 10:29 * @description */@Datapublic class User { private String id; p

2021-03-31 10:55:20 2322

原创 递归构建菜单子树

@Override public Map<String, List<SysDic>> getSysDicsByKeys(List<String> keys) { log.info("SysDicServiceImpl.getSysDicsByKeys receive {}", keys); //查询根节点的id LambdaQueryWrapper<SysDic> queryKeyWrapper =..

2021-02-24 15:40:01 140

原创 Mybatis-plus自动代码生成

依赖包 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.1</version> </dependency> <

2021-02-24 14:07:23 244

原创 关于HTTP中put方法不安全的问题

PUT方法是否安全我敢很确定的说,从http协议的角度来说,put方法并不存在是否安全的问题,它和其他的协议一样,只是标志为type不同(他们的http协议中字段是不同的,但是影响不大,只是浏览器的同源策略的问题)。HTTP他只是一个协议,一个规则。他自身没有是否安全,而不安全的只能说是设计的服务器不安全。为什么说put方法不安全我大概查了一下,之所以会说put方法不安全是因为服务设计的缺陷,导致的put方法不安全,而让大众记住的是CVE-2017-12615这个安全漏洞。他存在于Tomcat 7.0

2021-02-24 13:59:08 4196

原创 spring-cloud 2020.0.0以上版本无法连接nacos解决办法

今天使用spring-cloud+nacos无法连接。报各种错误,错误如下:Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configurationPropertiesBeans' defined in class

2021-01-30 19:39:01 3733 2

原创 Hadoop localhost: frankxulei@localhost: Permission denied (publickey,password)

该问题发生的原因是因为ssh的配置问题。可能发生在1. /etc/ssh/sshd_config中,由于自己下的ssh服务器中的配置文件全部都是注释的需要自己来手动配置。这里记录一份 #端口号 Port 22 #"ListenAddress”设置sshd服务器绑定的IP地址 ListenAddress 192.168.1.1 #"HostKey”设置包含计算机私人密匙的文件 Host

2021-01-11 17:02:42 728

原创 swagger+mybatisGenerator生成注释

配置文件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfigura

2021-01-04 12:07:38 614

原创 幻读和不可重复度的区别

幻读和不可重复度的区别对于串行化和可重复读总是分不清,今天仔细的想了想。串行化和可重复度本人理解是在技术的实现上,加了不同的锁。对于可重复度,增加的是读锁。在其读的过程中禁止进行修改。 因此避免了在操作过程中读取中出现单条数据读取的不同,不会产生不可重复度的问题,但是,你不让我修改,我却可以增加和删除。而串行化,则增加了了一个更重的锁,在加锁过程中,禁止一切方式的访问,就只能一个个操作,因此不会产生任何问题...

2020-12-14 18:58:24 311

原创 MySql基础架构

文章目录一.Mysql的基础架构1.server层结构2.存储引擎层结构二.Server层组件详解1.连接器作用连接的方式以及各自影响2.查询器3.分析器一.Mysql的基础架构MySql在架构上总体上可以分为两个部分,分别是server层和数据存储引擎层。1.server层结构Server层包括连接器,查询器,分析器,优化器,执行器。所有哦跨存储引擎的功能都在这一层实现,比如存储过程,触发器,视图等。2.存储引擎层结构存储引擎层负责数据的存储和提取。其架构是插件式。数据库支持的引擎都在这一层生

2020-12-14 16:24:28 135

原创 JMM对多线程的一些约束

多线程存在的问题1.所见非所得2.无法肉眼去检测程序的准确性。3.不同的运行平台有不同的表现4.错误难以重现。典型代码public class Demo{ int i = 0; boolean isRunning = true; public static void main(String[] args){ Demo demo = new Demo(); new Thread(){ public void run(){ while(isRunning){

2020-10-21 20:01:28 85

原创 向服务器上传文件路径变为\fakepath问题

该问题出现在IE8之后,做如下修改即可工具 -> Internet选项 -> 安全 -> 自定义级别 -> 找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”即可。

2020-10-19 19:27:18 1100

原创 java中的三种代理模式

JDK 动态代理这里记录一下自己对代理的理解,重点为JDK动态代理。首先要明确一件事情,代理这个词既可以是名字也可以是动词。要注意区分。名词时候,叫做代理商也许会更好一些。代理的目的为什么需要代理,我觉得更多的时候是为了实现对某一个切面的编程。比如,我们有一个动物类,在开发中,我们发现需要给动物类的子类进行一次扩展,这里我们可以使用继承。但是,如果是同时很多子类都需要这个方法,又不是所有的子类都需要。我们怎么做?这里我们就可以使用代理来实现扩展。对于需要扩展的子类,我们并不直接new出来,而是通过一个

2020-10-13 15:20:39 1415

原创 Spring Cloud - Config

Config ServerSpring cloud config 默认使用git作为存储仓库。它将git中的数据clone一份运行在本地的application中。远端HTTP服务器(github等)存储文件的命名规则/{application}/{profile}[/{label}]/{application}-{profile}.yml/{label}/{application}-{profile}.yml/{application}-{profile}.properties/{label

2020-10-10 14:52:06 51

原创 spec文件模板

#This is simple spec file for lighttpd%define _topdir /home/rpmubildName: lighttpdVersion: 1.4.32Release: 1%{?dist}Summary:A light http serverLicense: BSDURL: http://www.lighttpd.net/Source0: %{name}-%{version}.tar.gzGroup: Development/ToolsPrefi

2020-05-08 17:37:54 825

原创 RPM的创建

一.rpm包的基本步骤是:1.依照rpmbuid规范创建一个目录结构2.将源代码和附带文件放在目录中合适的位置3.创建spec文件4.编译rpmrpmbuid规范的目录结构五个子目录:BUILD,RPMS,SOURCES,SPECS和SRPMS.。BUILD目录用来编译源代码RPMS目录用于存放最后生成的rpm包文件,他会使用不同的子目录来区分对应不同硬件平台的rpm包SOURCES目录用于存放源代码SPECS用来存放spec文件,用于构建一个rpm包的脚本文件SRPMS目录存放着生成的

2020-05-08 17:37:20 340

原创 高级特性

1.波浪号在linux中一般情况下,~代表当前用户的home目录。如果使用~usrname,可以快速找到该用户的HOME目录2.通配符通配符说明例子*匹配0或多个字符a*b,a与b之间可以有任意长度的任意字符,也可以一个也没有?匹配任意一个单一字符a?b a与b之间只能有一个字符,可以是任意字符[list]匹配list中的任意单一字符a[xyz...

2020-05-08 10:01:39 125

空空如也

空空如也

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

TA关注的人

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