自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

清涵

星空不问赶路人 岁月不负有心人

  • 博客(70)
  • 资源 (8)
  • 收藏
  • 关注

原创 0x01.JVM 架构模型

由于跨平台特性的设计,Java指令集都是根据栈来设计的。不同的CPU平台架构不同,所以不能基于寄存器设计。栈的优点:跨平台,指令集小,编译器容易实现。缺点:性能比寄存器差。时至今日,尽管嵌入式平台已经不是Java程序的主流运行平台了(准确来说应该是HotSpot VM的宿主环境已经不局限于嵌入式平台了),那么为什么不将架构更换为基于寄存器的架构呢?因为基于栈的指令集架构跨平台性更好、指令集小(相对于基于寄存器架构来说),跨平台性更好。

2024-05-22 09:29:36 975 1

原创 SM2签名与验证过程

y2−x3axby2−x3axbSM2算法定义了5个默认参数,即有限域F§的规模p,椭圆曲线参数a,b,椭圆曲线的基点G(x,y),与G的阶n。牢记上面参数,在后续的运算过程中会使用到上面参数。

2023-06-26 20:34:41 5921 1

原创 证书拓展域(1)

本项列出了由颁发CA认可的证书策略,这些策略适用于证书以及关于这些证书策略的任选的限定符信息。证书策略拓展包含了一系列策略条目信息条目,每个条目都有一个oid和一个可选的限定条件。这个可选的限定条件不能改变策略的定义。qualifier 为枚举常量本项只用于CA证书。它列出了一个多个OID对,每对包括一个issuerDomainPolicy和一个subjectDomaimPolicy。

2023-03-07 20:02:12 1688

原创 数字证书格式与数据结构

数字证书是由具有权威性、可信性和公正性的第三方证书认证机构(CA)进行数字签名的一个可信的数字化文件。数字证书具有以下特性。

2023-03-07 20:00:27 1459

原创 SM2算法加密与解密过程

y2−x3+ax+by2−x3+ax+b###1.2SM2曲线参数定义SM2算法定义了5个默认参数,即有限域F§的规模p,椭圆曲线参数a,b,椭圆曲线的基点G(x,y),与G的阶n。pnabGxGy牢记上面四个默认参数与一个基础点,在后面运算过程中会用到上面的所有参数。SM2作为非对称算法拥有公钥与私钥,对于SM2中公私钥的结构如下d符合要求的32byte(256bit)随机数(x,y),实际一个坐标点,依据私钥d计算所得。...

2022-07-23 20:27:24 51884 2

原创 JVM结构模型

JVM结构​JVM由类加载器,JVM内存结构,执行引擎,本地方法接口,具体关系如下图所示​​编译器​将java源码编译成字节码文件​类加载器​装载字节码文件​JVM内存结构​JVM在运行时的数据结构分区,具体分为方法区(元空间),堆,虚拟机栈,PC计数器,本地方法栈​执行引擎​执行引擎将字节码文件变成操作系统可以执行文件,执行引擎包括解释器,即时编译器,垃圾回收器​java是半编译半解释型语言​​JVM结构JVM由类加载器,JVM内存结构,执行引擎,本地方

2021-01-25 23:14:02 199

原创 JVM类加载过程

JVM类加载过程类加载过程三个阶段加载链接初始化加载过程JVM类加载通过类加载器进行加载,类加载器分为引导类加载器,系统类加载器。通过一个类的全限定名获取此类二进制字节流将这个字节流所代表的静态存储结构转换为方法区的运行时数据结构在内存中生成一个java.lang.Class的对象,作为方法区中访问这个类的各种数据的入口链接过程类的链接过程分成三个阶段验证准备解析验证目的在于确保Class的字节码符合JVM的需求,保证被加载正确性,不会危害虚拟机的自身安全主要

2021-01-25 23:12:17 195

原创 mysql中的事务

事务的定义事物的四大特性原子性(A)一致性(C)隔离性(I)持久性(D)事物的隔离级别读未提交读已提交可重复读串行化事物隔离级别脏读不可重复读幻读读未提交(read-uncommitted)是是是不可重复读(read-committed)否是是可重复读(repeatable-read)否否是串行化(serializable)否否否脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数

2021-01-05 16:30:49 138

原创 CLH Lock 原理

背景SMP(Symmetric Multi-Processor)对称多处理器结构,它是相对非对称多处理技术而言的、应用十分广泛的并行技术。在这种架构中,一台计算机由多个CPU组成,并共享内存和其他资源,所有的CPU都可以平等地访问内存、I/O和外部中断。虽然同时使用多个CPU,但是从管理的角度来看,它们的表现就像一台单机一样。操作系统将任务队列对称地分布于多个CPU之上,从而极大地提高了整个系统的数据处理能力。但是随着CPU数量的增加,每个CPU都要访问相同的内存资源,共享资源可能会成为系统瓶颈,导致C

2021-01-05 14:10:11 725

原创 ThreadLocal原理与使用注意点

什么是ThreadLocal变量ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意:因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 使用。这是也是 ThreadLocal 命名的由来。既然每个 Thread 有自己的实例副本,且其它 Thread 不可访问,那就不存在多线程间共享的问题。ThreadLocal 提供了线程本地的实例。它与普通变量的区别在于,每个使用该变量的

2021-01-04 17:06:12 432

原创 深入浅出NIO

Java NIO由以下核心部分组成BufferChannelSelectorBufferByteBufferShortBufferFloatBufferCharBufferIntBufferLongBufferDirectByteBufferHeapByteBufferBuffer属性以及相关操作属性说明capacity 容量Buffer所能够存放的最大容量position 位置下一个被读或写的位置limit 上界可供读写的最大位置,

2021-01-04 17:04:55 128

原创 JAVA线程池的使用

Java中提供线程池newCachedThreadPool可缓存线程池,若线程池长度超过处理需要,则回收空线程,否则创建新线程,线程规模可无限大。ExecutorService cachedThreadPool = Executors.newCachedThreadPool();newFixedThreadPool定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。ExecutorService fixedThreadPool = Executors.newFixedThreadPoo

2020-12-13 14:07:44 234

原创 重入锁于不可重入锁

重入锁定义所谓重入锁,指的是以线程为单位,当一个线程获取对象锁之后,这个线程可以再次获取本对象上的锁,而其他的线程是不可以的。synchronized 和 ReentrantLock 都是可重入锁可重入锁的意义在于防止死锁不可重入锁不可重入锁与上面对应,也是以线程为单位,只能获取一次,再次获取时会产生死锁的现象。重入锁代码示例public class ReLock { boolean isLocked = false; Thread lockedBy = null;

2020-12-10 16:28:42 165 1

原创 理解CAS算法

CAS(Compare And Swap)比较交换在线程开启的时候,会从主存中给每个线程拷贝一个变量副本到线程各自的运行环境中,CAS算法中包含三个参数(V,E,N),V表示要更新的变量(也就是从主存中拷贝过来的值)、E表示预期的值、N表示新值。实现过程假如现在有两个线程t1,t2,,他们各自的运行环境中都有共享变量的副本V1、V2,预期值E1、E2,预期主存中的值还没有被改变,假设现在在并发环境,并且t1先拿到了执行权限,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次发起尝试,然后

2020-12-10 14:30:43 420

原创 过滤器,拦截器,监听器

过滤器 拦截器 监听器的区别过滤器过滤器依赖函数回调过滤器依赖servlet容器过滤器几乎对所有的请求起作用过滤器不能访问action的上下文对象过滤器只在容器初始化时调用一次拦截器拦截器依赖java的反射机制拦截器不依赖servlet容器拦截器只能对对应的action起作用拦截器可以被多次调用拦截器可以访问IOC容器监听器做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等随着web容器启动初始化,web容器停止而销毁触发时机

2020-12-10 14:08:30 132

原创 数据库分库分表插件shardingsphere

数据库分库分表插件shardingsphereshardingsphere简介Apache ShardingSphere(Incubator) 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(规划中)这3款相互独立,却又能够混合部署配合使用的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。Share-JDBC简介定

2020-07-27 22:58:45 1298

原创 springboot2国际化配置

SpringBoot2 国际化配置原来用SpringBoot1的时候,配置自定义国际化位置的时候,直接使用spring.messages.basename属性就可以,但是在使用SpringBoot2的时候发现该属性不生效了,后来经过多方查阅,发现springboot2的默认的配置不生效,无论怎么配置都会走默认的messages,这个时候就需要重新定义messageSource,定义代码如下:@...

2019-10-06 12:34:37 988 1

原创 Git常用命令列表

文章目录git常用命令仓库克隆代码更新、提交与推送分支操作代码合并修改撤销取消已经暂存的文件git常用命令仓库克隆git clone repertories url将远端的代码库clone到本地代码更新、提交与推送git pull repertoriesName branchName在更新时指定仓库的名称与分支的名称,获取指定仓库的指定分支更新,如果当前分支与指定的分支不是...

2019-03-06 09:56:18 318

原创 Go接口

接口多态是指代码可以根据类型的具体的实现采取不同行为的能力。如果一个类型实现了某个接口,所有使用这个接口的地方,,都可以支持这种类型的值。标准库里面有很好的例子如io包里实现的流式处理接口。在程序的声明和实现接口是会涉及很多细节。即便实现的是已有接口,也需要了解这些接口是如何工作的。实现接口是用来定义行为类型的,这些被定义的行为不由接口直接实现,而是通过方法由用户定义的类型实现。如果用户...

2019-02-20 13:56:48 193

原创 Go中的Map与Range

范围(Range)Go 语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对的 key 值。实例:package mainimport "fmt"func main() { //这是我们使用range去求一个slic...

2019-02-18 16:36:10 7323

原创 Go结构体

文章目录结构体定义结构体访问结构体成员结构体作为函数参数结构体指针结构体Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。定义结构体type struct_variable_type struct { member definition; member definition; ...

2019-02-18 15:56:09 588

原创 Go指针

指针Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务。接下来让我们来一步步学习 Go 语言指针。我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地址。Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。以下实例演示了变量在内存中地址:package mainimport "fmt"func main() { ...

2019-02-18 15:42:40 286 1

原创 Go数组与切片

文章目录数组与切片数组的声明数组的初始化切片(Slice)len() 和 cap() 函数空(nil)切片切片截取append() 和 copy() 函数数组与切片Go 语言提供了数组类型的数据结构。数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。相对于去声明number0, number1, …, and number...

2019-02-15 15:33:06 150

原创 Go函数

函数函数是基本的代码块,用于执行一个任务。Go 语言最少有个 main() 函数。你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。函数声明告诉了编译器函数的名称,返回类型,和参数。Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。如果我们传入的是字符串则返回字符串的长度,如果传入的是数组,则返回数组中包含的元素个数...

2019-02-15 11:31:01 189

原创 Go中的变量与常量

变量变量定义的方式Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。声明变量的一般形式是使用 var 关键字:Go语言是强类型语言,在定义变量时需要指定变量类型,有三种定义变量的方式var identifier type第一种定义变量的方式var v_name v_typev_name = value第二种定义变量的方式var v_name = value...

2019-02-15 10:16:26 179

原创 GO语言中类型介绍

类型介绍在 Go 编程语言中,数据类型用于声明函数和变量。数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。Go 语言按类别有以下几种数据类型:布尔型数字类型字符类型派生类型数字类型整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。...

2019-02-14 13:39:07 501

原创 Go语言开发环境搭建

环境配置GO 安装包下载GO 安装包的下载地址为go sdk,下载1.11.2版本进行安装GOROOT配置在window中添加环境变量 GOROOT 值为刚才GO安装的目录,在 PATH 中添加 %GOROOT%/bin, 添加完成后在cmd中输入go version出现如下显示则说明安装成功GOPATH 配置GOPATH是GO源码的所在目录,包括依赖的第三方库都在该目录下,...

2019-02-14 13:38:11 264

原创 PKCS#7填充模式

PKCS#7填充模式pkcs#7与pkcs#5填充模式的填充方法基本相同PKCS#5填充都是按照分块之后填充,区别在在于pkcs#5定长为8位,pkcs#7为非定长。pkcs#7填充的举例说明分块长度为16,数据长度为22,最后一块长度为6,则填充方式为 0x010x010x010x010x010x010x100x100x100x100x100x100x100x100x100x10最...

2018-11-29 22:17:24 7354

原创 密码的工作模式

分组密码工作模式密码学中,分组密码的工作模式允许使用同一个分组密码密钥对于一块数据进行加密,并保证安全性。历史和标准化最早出现的工作模式,ECB,CBC,OFB和CFB,CTR,XTS,HMAC等初始化向量(IV)初始化向量是许多任务作模式中用于将加密随机化的一个块位,由此同样的明文,避免了较慢的重新产生密钥的过程。初始化向量与密钥相比有不同的安全性需求,因此IV通常无须保密,然而在大...

2018-11-28 21:59:36 1954

原创 PKCS#5 填充模式

PKCS#5填充模式PKCS#5填充的定义PKCS#5填充是PKCS#7填充的一个子集,在PKCS#7填充时BlockSize为8的时候,PKCS#5与PKCS#7填充是一样的,在BlockSize不同时PKCS#5与PKCS#7填充是不同的,PKCS#5填充是将数据填充到8的倍数,填充后数据长度的计算公式是定于元数据长度为x, 填充后的长度是 x + (8 - (x % 8)), 填...

2018-09-07 17:47:45 10706 3

原创 maven插件开发----HelloWorld

maven插件开发最近在工作中遇到一个问题是在打包的过程中要对一些文件做替换签名,原来都是找到编译过后的文件,进行签名,然后导出jar包,这样每次都是重复的劳动,后来想能不能在每次打包发布的时候自动来做这件事,后来找了maven插件发现没有符合需求的插件,只能动手去写插件,下面介绍的是简单的一个插件的编写创建一个maven工程(也可以用命令直接生成)工程创建(我选择的是最笨的办...

2018-08-25 22:50:30 462

原创 JAVA中的位运算

JAVA中的位运算 >> : 左移位运算 << : 又移位运算 >>> : 忽略符号位移运算,空位补零 | : 或运算 & : 与运算 ^ : 异或运算...

2018-08-21 14:02:35 209

原创 利用python进行进程检查与保护

利用python对进程进行检查原来有一个服务直接启动的,在启动一段时间后该服务莫名其妙就挂了,可能是机器重启,也可能是服务本身不稳定,但是这个服务是第三方直接提供的执行文件,没办法调整,最后只能写一个进程守护的程序,主要实现思想是对改服务提供服务的端口进行检测,端口没有启动这个服务就是挂了,自动对这个服务进行启动就可以了,具体代码实现如下:#!/usr/bin/env python#...

2018-08-08 08:43:22 1747

原创 python进行mysql的数据库备份

python进行mysql的数据备份主要想法是利用mysqldump的方式将mysql的库或表备份成sql之后,利用ftp的方式转存到启发服务器上,实现一个简单的备份的功能。代码比较简单,主要核心代码如下。db_back.py# -*- coding:utf-8 -*-import ConfigParserimport osimport schedimport timefro...

2018-08-08 08:37:25 3175

原创 一个全新的ssh工具推荐,finalshell简介和教程

最近xshell突然不好使了,结果保存的所有服务器连接配置信息都没了,有的已经很久,结果都没了,需要一个个的去找,神烦,后来发现了一个比较好的ssh工具,在这里推荐给大家,finalshell,用着非常舒服。下面是截图这个工具能够对shell全屏使用,给一种瞬间高大上的感觉。左侧能看见服务器的相关信息下方是文件夹,能够上传和下载最后的下载地址是 finalshell官网...

2018-07-04 12:40:45 14715 1

原创 springboot1.x整合elasticsearch5.x

SpringBoot 对于 Elasticsearch的支持spring本身有对于Elasticsearch的支持,但是支持的版本比较低,要使用低版本的springboot,也只能使用低版本的ElasticSearch,但是要使用高版本的Elasticsearch就需要自己整合,本文介绍了一种集成方式。集成思路springboot支持自动配置,并且少配置,如果采用原来的配置方式的话...

2018-05-12 14:11:34 2343

原创 SpringBoot 整合redis

SpringBoot整合redis引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>SpringBoot的依赖管理引入和redis相关的依赖,然后添加xml配

2017-12-12 18:51:53 289

原创 SpringBoot自定义配置文件fatjar获取不到解决办法

SpringBoot中有一部分自定义的配置文件在打成jar包后无法获取一部分自定义配置在jar包中无法获取的问题,原来是根据classpath获取,在jar包中无法获取,在读取的时候空指针异常用spring的resouce获取后就能正常读到,介绍下spring的resourceorg.springframework.core.io.Resource |------UrlResource

2017-12-12 18:44:55 1843

原创 Mybatis物理分页插件

该代码已经开源详见https://gitee.com/moldy/mybatis-pager

2017-11-06 20:08:02 307

原创 RESTEasy底层使用Netty

为什么底层要使用Netty原来在使用RESTEasy的时候底层使用的是Tomcat,但是Tomcat的I/O性能不如Netty,一直想把Tomcat换成Netty

2017-10-30 15:59:29 5034 10

Asn1Editor,Asn1查看软件

ASN.1查看器,PKI等开发中必备神器

2023-01-01

ds-share.zip

基础ShardingSphere 实现的分库分表的实现,修改了部分bug,基于两个库,分表六张,压测试tps在2000左右

2020-07-27

maven插件的demo

maven的插件demo,包含了与maven声明周期的绑定,自定义参数等,但是这就是一个demo,只是演示了maven插件的编写方式

2018-08-25

springboot1.x整合elasticsearch5.x

springboot1.x版本整合elasticsearch5.x 版本,springboot1.x官方只支持es2

2018-05-12

mybatis物理分页插件

mybatis分页插件,非入侵式,支持mysql,orcale,sqlserver,支持其他数据库拓展

2018-01-25

resteasy使用netty

resteasy不使用tomcat使用netty实现,实现了高性能,也可以不需要tomcat的容器,一个主函数就能执行

2017-10-30

mybatis分页插件源码

mybatis分页插件源码,非入侵式

2017-04-23

计算器C#源码

C#计算器源码,VS2010下编写,能够进行加减乘除四则运算,支持小数运算,负数运算,是课程设计最佳选择

2014-06-23

jspideryunma

jspider开源代码,有完整的代码与jar包

2014-03-12

空空如也

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

TA关注的人

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