自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(204)
  • 资源 (4)
  • 收藏
  • 关注

原创 Java Runtime 类详解

Java Runtime 类详解Java Runtime 类使用Java Runtime.exec 方法的使用Java Runtime.getRuntime().exec() 的使用Java Runtime.exec 详解

2022-11-18 10:59:34 6924 1

原创 Java 生成X.509 V3证书

Java 生成 X509 V3证书使用Java 语言生成 X.509 V3证书pem格式证书生成使用Java 语言生成 X.509 V3 pem格式证书

2022-10-24 17:07:45 5248 6

原创 nginx热升级

nginx热升级nginx热升级流程nginx热升级步骤nginx热升级以及回滚nginx版本热升级

2022-08-27 21:27:40 2434 2

原创 Linux Shell 实现密码掩码输入

Linux Shell 实现密码掩码输入密码*号掩码

2022-08-13 16:07:19 1014

原创 IDEA中强大的Maven依赖管理工具

IDEA中强大的maven依赖管理工具“Denpendencies”点击一下IDEA底部工具栏的“Dependencies”按钮,出现下面的标签视图:注意:只有是maven项目才有这个按钮第1部分:maven项目的modules,点击不同的“module”,在视图第2部分会切换对应“module”的依赖。第2部分:对应maven项目“module”的依赖列表。列表分为4列,分别为依赖名称、依赖scope(test,compile等)、依赖版本号和升级操作。...

2022-08-09 18:28:24 4681 8

原创 Spring Boot+Spring Security+JWT实现系统认证与授权

Spring Boot+Spring Security+JWT实现系统认证与授权Spring Boot整合Spring Security实现JWT认证Spring Boot项目使用JWT认证JWT认证OAuth2 JWT认证

2022-08-03 22:37:22 2824

原创 使用CLion+WSL debug nginx源码

使用CLion 调试nginx源码。使用WSL Ubuntu和CLion调试nginx源码。nginx源码调试。使用cmake在CLion中调试nginx源码。

2022-07-17 09:46:50 1258

原创 启用Docker对ipv6的支持

要想在Docker容器或者Swarm服务中使用ipv6,首先需要在Docker守护进程中启用对ipv6的支持,具体做法如下:编辑docker守护进程的配置文件 (若不存在需要手动创建该文件)设置为true,启用对ipv6的支持,配置ipv6子网。重载配置文件现在你可以使用 创建一个支持ipv6的网络了。另外你也可以在启动容器时使用参数来使容器支持ipv6。审查默认网络可以看到已经配置成功!接下来就可以在容器中使用ipv6了!使用nginx做演示:启动一个容器,此处并没有指定网络所以默认使用名为的

2022-06-28 14:13:34 8893 1

原创 使用Wireshark抓取Http2协议报文

Http2是一个二进制协议,并且所有的主流浏览器仅支持http2 over TLS即,所以直接通过wireshark是看不到http2的数据包的,只能看到经过TLS加密后的数据。如下图:Wireshark支持在TLS协议中配置密钥日志文件,然而Chrome浏览器支持将 TLS 会话中使用的对称密钥保存在外部文件中,可供 Wireshark 加密使用。Chrome浏览器会自动读取环境变量,将TLS握手时使用的密钥保存到对应的文件中。记得重启浏览器点击,输入上一步环境变量对应的路径:点击OK,使用浏览

2022-06-20 17:23:22 2917

原创 使用Netty实现静态Web服务器

以学习为目的,基于Netty实现一个简单的静态web服务器。使用到的技术及开发环境:基于netty实现静态web服务器。能够提供基本的http服务,仅支持静态资源服务即可。支持静的态资源包括:HTML、JS、CSS、常见的图片(包括但不限于jpeg、png、svg、webp、gif等格式)、字体文件以及其他文件。以上资源在响应到客户端时必须给与正确的MimeType(http中称MediaType),例如:html文件响应时,必须指定响应头。其他资源文件:非web资源文件,例如压缩文件,返回响应头。

2022-06-09 21:56:26 1117

原创 使用JS校验身份证号

JS 校验身份证号,支持一代15位和二代18位身份证号

2022-06-02 21:33:01 1527

原创 在Ubuntu上一键安装docker-ce

说明该脚本能够一键安装docker-ce,过程中出现任何询问的(Y/n)均输入Y即可。该脚本需要联网下载docker相关组件,请先确保机器能够上网该脚本仅支持Ubuntu以下版本:Ubuntu Jammy 22.04 (LTS)Ubuntu Impish 21.10Ubuntu Focal 20.04 (LTS)Ubuntu Bionic 18.04 (LTS)脚本#!/bin/sh# Uninstall old versionsudo apt-get remove doc

2022-05-22 15:21:25 1271

原创 Spring Boot整合WebSocket实现客户端与服务器之间的双向通信

在之前浏览器还不支持WebSocket的时候,Web开发者大多使用轮询接口的方式来实现近实时的数据更新。这种单方向通信的方式,由于服务器是被动接受查询,只能实现近实时的消息更新,且轮询的频率很难准确确定,如果频率高势必会增加服务器的负担;如果频率低,服务器端的消息可能很有很长的延迟才能达到客户端。如今,web3.0时代的到来,几乎所有的浏览器和Web服务器均支持了WebSocket。WebSocket的产生正式为了解决客户端与Web服务器之间单向通信的问题。WebSocket实现了浏览器(客户端)与Web

2022-04-04 22:03:32 7329 8

原创 HTTP请求方法的安全性

首先,本文所说的HTTP方法的安全性是RFC 7231规范中定义的一种方法公共属性,它并不是说能够防止外部的攻击,而是一种语义。什么是HTTP方法的安全性?HTTP方法的安全性是HTTP方法的一种属性,并不代表“安全”的方法就不会遭受外部的攻击,这种“安全”针对的是服务器上的资源。一般的,请发方法对服务器上的资源是只读的,我们就认为这种方法就是安全的。哪些方法是安全的RFC7231规范中定义了HTTP协议支持的8个标准方法,分别为GET,HEAD,POST,OPTIONS,PUT,DELETE,C

2022-04-03 22:06:59 1628

原创 Elasticsearch索引生命周期

索引生命周期阶段定义Elasticsearch在ILM(Index Lifecycle Management)中定义了索引生命周期的5个阶段:Hot(热):索引处于活动状态,能够更新(增改删)和查询。Warm(暖):处于该阶段的索引不再支持更新,但是能够被查询。Cold(冷): 该阶段的索引不再支持更新,只能支持很少的查询,查询较慢!Frozen(冻结):该阶段的所有不再支持更新,也很少查询,查询很慢!Delete(删除):索引不再需要可以被安全删除。索引中生命周期策略管理索引何时处于哪

2022-03-28 14:53:22 3608

原创 生产环境下Elasticsearch重要的系统配置

在生产环境下,Elasticsearch最好单独运行在服务器中。为了能够使其使用系统所有可用的资源,你需要配置你的操作系统以允许运行Elasticsearch的用户使用比默认情况下更多的资源。在部署生成环境之前需要考虑以下设置:配置(修改)你的操作系统设置禁用swapping提高文件描述符个数确保有充足的虚拟内存确保有充足的线程可用JVM DNS缓存设置不要使用noexec挂载临时目录TCP重传超时那么开发环境和生产环境有何区别?开发模式VS生产模式默认情况下,Elasticse

2022-03-26 22:04:05 4229

原创 Elasticsearch生产环境下系统配置

ES生产环境下的操作系统配置的作用是为了解除系统资源使用上的限制。ulimit在Linux操作系统中,ulimit可以临时解除可以使用资源的限制。要配置ulimit需要切换到root用户。例如临时设置可以打开的文件句柄数:sudo su #切换到root用户ulimit -n 65535 #设置可打开的最大文件句柄数su elasticsearch #切回elasticsearch用户这只在当前会话有效!你可以使用命令ulimit -a查看是否设置成功!$ ulimit -a..

2022-03-26 22:03:15 2511

原创 浏览器form表单的行为及其http原理

1. html form语法DTD定义<!ATTLIST form %attrs; action %URI; #REQUIRED method (get|post) "get" name NMTOKEN #IMPLIED enctype %ContentType; "application/x-www-form-urlencoded" onsubmit %Script; #I

2022-03-25 14:31:55 667

原创 HTTP协议规范

HTTP协议规范1. HTTP, HTTP/22. 其他HTTP相关协议规范3. IETF网站1. HTTP, HTTP/2版本RFC/链接地址发布日期维护者HTTP 0.9The Original HTTP as defined in 1991 at W3.org1991W3.orgHTTP/1.0RFC 19451996.5Network Working GroupHTTP/1.1RFC 2068 (1997.1) - 废弃, 被RFC 2616替代

2022-03-23 11:31:08 4368

原创 Spring Boot项目同时使用http和https

有些时候项目需要同时监听在不同的端口上,比如同时监听http80和https 443端口,这时我们需要自定义web server。假设我们需要项目同时使用http和https两种协议提供服务,分别使用端口80和443。我们知道Spring Boot内置了tomcat,jetty,undertow和响应式的netty4中web server,默认使用tomcat,所以这里使用tomcat要演示如何让项目同时支持使用http和https协议。WebServerFactoryCustomizer接口很明显

2022-03-12 17:22:12 4795 1

原创 Spring Boot 使用Redis发布订阅模式处理消息

Spring Boot 使用Redis发布订阅模式1. Redis发布订阅模式2. Spring Boot中订阅消息2.1 Redis监听器容器配置2.2 创建通道监听器2.3 测试订阅功能3. 借助RedisTemplate发布消息4. 更多参考文档1. Redis发布订阅模式自Redis 2.0.0起支持消息的发布订阅模式,命令行语法:PUBLISH channel massage2. Spring Boot中订阅消息此处不再介绍Spring Boot与Redis的整合,可以参考 Sprin

2022-01-29 17:57:10 2432

原创 Elasticsearch中的Mapping

1.什么是Mapping?Mapping用于定义文档的结构以及文档所包含属性(fields)如何被存储和索引。被ES索引的文档本质就是一些域或者称为属性的集合,每一个域都可以有自己的数据类型。每一个mapping都包含了一个文档必要的属性列表,还可以包含元数据属性(metadata fields),例如_source,它用于自定义如何处理文档的关联元数据。一句话概括,Mapping用于定义要索引文档的结构及如何被索引。ES支持两种Mapping的创建方式:Dynamic Mapping:动态M

2021-08-21 18:55:30 573

原创 Spring Boot自定义参数校验器

在Spring Boot中自定义参数校验器当我们在项目中引入spring-boot-starter-validation的starter依赖后就直接可以在Controller的请求方法上使用诸如@NotNull、@Length等注解进行参数校验了。该starter底层是使用hibernate-validator提供的校验器做校验,虽然它提供了丰富的校验器,但是有些时候为了更方便的对参数进行校验,需要我们自己定义参数校验器。准备环境项目中必须有spring-boot-starter-validation

2021-08-08 14:48:48 2700

原创 Docker 容器启动报错的解决方法

docker: Error response from daemon: OCI runtime create failed: unable to retrieve OCI runtime error (open /run/containerd/io.containerd.runtime.v2.task/moby/40b48d6f9ea6c0bbcbaa9413adb1914b41e4750465125742203b5d2cb72d3c06/log.json: no such file or director

2021-08-04 10:07:01 13233 5

原创 基于Servlet的web应用如何防止XSS攻击

Servlet 使用jsp作为视图模板,jsp本身存在XSS漏洞,如果Web应用是基于Servlet技术并且使用jsp作为视图模板,也没有引入任何安全框架,那么你的应用就存在XSS漏洞。本文主要介绍了基于Servlet的web应用如何防止XSS攻击。1. XSS漏洞的类型反射型XSS:<非持久化> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。存储型XSS:<持久化> 代码是存储在服务

2021-07-31 12:55:06 954 1

原创 Docker服务启动报错的解决方法

Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: failed (Result: start-limit) since 四 2021-07-29 10:20:32 CST; 8s ago Docs: https://docs.docker.com Process: 2656 ExecStart=/usr/bin/dockerd -H fd://

2021-07-29 10:57:25 8324

原创 源码编译安装OpenJDK

源码编译安装OpenJDK1. 前置条件1.1 操作系统要求1.2 构建必要工具及库安装1.2.1 autoconf1.2.2 zip&unzip1.2.3 gcc&g++1.2.4 X111.2.5 FreeType1.2.6 CUPS1.2.7 ALSA1.2.8 libffi1.2.9 Boot JDK2. 构建OpenJDK2.1 执行configure2.2 make2.3 校验构建的JDK拉取源码,执行命令:get clone https://github.com/open

2021-07-18 22:00:05 1215

转载 什么是 JWT -- JSON WEB TOKEN

什么是JWTJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。起源说起JWT,我们应该来谈一谈基于token的认证和传统的session认证的区别。

2021-07-10 17:03:06 78

转载 HTTP 之chunked 编码

HTTP 之chunked 编码什么是分块传输?分块传输编码的使用场景分块传输编码的编码格式分块编码传输的译码过程什么是分块传输?分块传输编码(Chunked transfer encoding)是超文本传输协议(HTTP)中的一种数据传输机制,它允许HTTP由WEB服务器发送给客户端应用的数据可以分成多个部分。使用限制:分块传输编码只在HTTP协议1.1版本(HTTP/1.1)中提供。通常情况下,HTTP应答消息中发送的数据是整个发送的,Content-Length消息头字段表示数据的长度。数据的

2021-07-05 13:36:29 1066

原创 Elasticsearch 内置分词器

Elasticsrarch 提供了8中内置分词器,它们可以无需任何配置即可使用。每一个分词器都由3部分组件组成:Character Filters、Tokenizer和Token Filters,这3个组件就像一个流水线一样对输入的文本进行分词处理。Character Filters: 对输入的文本进行第一次处理,例如去除文本中html标签符号Tokenizer:对上一步处理后的结果按照规则进行单词拆分。Token Filters:将切分后的单词进行二次加工,例如转小写、删除stop words、增

2021-07-03 19:58:37 1017 1

原创 计算机网络传输协议UDP和TCP

计算机网络传输协议UDP用户数据包协议UDP协议的特点UDP数据报格式UDP首部TCP传输控制协议TCP的特点TCP报文段的首部格式TCP实现可靠传输的原理TCP连接管理TCP连接的建立TCP为何要采用三报文握手?TCP连接的释放在计算机网络的传输层主要有两个传输协议:UDP和TCP。UDP用户数据包协议UDP(User Datagram Protocol)称为用户数据报协议相对于TCP协议要简单的多,它只在IP数据报之上添加少许的功能。UDP协议的特点面向数据报无连接,在传输之前无需建立连接

2021-06-14 16:20:56 1180 8

原创 JVM类加载机制

JVM类加载机制类的生命周期类的加载时机类的加载过程类加载器类的生命周期一个类被加载到内存到拆卸出内存为止,它的整个生命周期包括7个阶段:加载–>验证–>准备–>解析–>初始化–>使用–>拆卸。其中验证、准备和解析3个阶段称为连接(Linking)。类的加载时机什么时候触发类的加载?其实JVM规范并没有严格规定类加载的时机,而是由具体的虚拟机实现自由把我时机。但是虚拟机规范严格规定了有且只有5中情况必须立即对类进行“初始化”(加载、验证、准备自然在此之前)。遇

2021-06-11 16:06:36 1053 3

原创 Spring Boot配置元数据“metadata”

本文对应Spring Boot 2.2.6.RELEASE版本。Spring Boot配置元数据“metadata”1.什么是配置元数据metedata?2.配置元数据(Metadata)的格式3.使用注解处理器生成自己的配置元数据3.1 嵌套的属性3.2 添加额外的元数据配置1.什么是配置元数据metedata?在Spring Boot的jar包中包含了metadata文件,提供了所有支持的配置属性的详情(例如属性名称、类型等)。这些文件旨在让IDE在开发者使用application.propert

2021-05-25 22:21:48 3877 2

原创 使用JDK9提供的模块化系统,来定义自己的模块

JDK9提供的模块化系统Java模块化系统的背景模块是什么模块化的目标可靠的配置强封装增强可扩展性能和可维护性可定制的运行环境模块的类型1.具名模块(Named Module)2.无名模块(Unnamed Module)3.自动模块(Automatic Module)查看JDK划分的所有模块如何模块化自己的项目模块相关指令requires 指令exports 和 exports to 指令use 指令provides…with 指令open, opens, opens…to 指令自从JDK9开始,Java

2021-05-16 14:55:08 1111

原创 mysql中的内置函数总结

mysql中的内置函数1 数学函数2 字符串函数3 日期和时间函数4 条件判断函数5 系统信息函数6 加密和压缩函数7 聚合函数8 格式或类型转化函数mysql内置函数列表可以从mysql官方文档查询,这里仅分类简单介绍一些可能会用到的函数。所有内置函数均可使用sql语句select <function>;的方式直接调用。1 数学函数函数解释abs(x)x的绝对值pi()返回pi的近似值常量3.141593mod(x,y)模运算sqrt(x)

2021-05-09 14:58:42 259

原创 JS中的数据类型

JS中数据类型undefined数据类型null数据类型boolean数据类型number数据类型string数据类型object数据类型Symbol类型if对undefined、null和NaN的判断JS中共有7种数据类型:undefined、null、boolean、Number、String、Object和Symbol(ES6新增)。JS是一种弱类型语言,变量根据其值来动态决定数据类型。undefined数据类型当定义一个变量没有为其赋值时,该变量的类型就是undefinedvar atyp

2021-05-02 11:15:11 255

原创 Java 中的enum类

在Java中可以使用enum来定义一个枚举类。枚举类属于类,是一种特殊的类。enum类的基类enum还有基类?是的!每一个enum类都默认有一个基类java.lang.Enum,通过javap -v反编译enum类的class文件可以得到验证:> javap -v com.company.TestEnumClassfile /C:/Users/gyb_c/IdeaProjects/test/out/production/test/com/company/TestEnum.class Las

2021-04-13 12:06:03 5395

原创 将maven项目打包并发布到maven中央仓库

为什么要把我们的项目打包发布到maven中央仓库?开源,为了将我们的项目(作为开源组件)开源出去,让全世界的开发者都可以使用maven将我们的组件引入到他们自己的项目中使用。项目打包发布到maven中央仓库基本流程项目打包发布到maven中央仓库需要经过以下步骤:项目编译-->打jar包-->生成javadoc并打成jar-->源码打成jar-->使用gpg生成各jar包的签名文件asc-->部署到OSSRH-->OSSRH自动将组件同步到maven 中央仓库什

2021-04-06 11:03:21 2554 1

原创 使用Sharding-JDBC实现分库分表

环境说明使用Spring Boot +Sharding JDBC实现分库分表。使用MyBatis作为持久化框架,MySQL作为数据库。MySQL节点:2个节点,db0和db1Spring Boot版本:2.4.4Sharding JDBC版本:4.1.1MyBatis版本:2.1.4需求说明数据库中使用user表来存储用户的信息,当注册的用户量超过一定阈值时,user表的查询效率将下降,为了提高用户信息的查询效率,必须对user表进行水平分片。user表字段信息如下:字段类型

2021-04-04 16:50:18 469

原创 在IDEA中使用Docker构建打包并部署项目

在IDEA中使用Docker构建打包并部署项目借助于IDEA中Docker插件,可以非常方便的将我们本地项目打包部署到Docker engine中。IDEA 默认已经安装了Docker 插件,所以无需另外安装!开启Docker Engine的远程连接默认Docker是不能通过外部连接的,所以需要对远程Docker做一些配置:修改Docker的配置文件/etc/docker/daemon.json(如果不存在手动创建):{ "hosts": [ "tcp://0.0.0.0:237

2021-03-31 15:23:42 1906

refman-8.0-en.a4.pdf

MySQL 8.0 参考文档,官方文档,英文

2021-05-10

spring-cloud.pdf

Spring Cloud最新官方文档,版本3.0.1

2021-02-20

Maven 实战(高清完整带书签).pdf

Maven 实战(高清完整带书签).pdf 电子书 本书是国内社区公认的Maven专家Juven Xu所著。它内容新颖,基于Maven 3.0。

2017-09-28

java 1.8源码

Java 1.8源码

2017-05-15

空空如也

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

TA关注的人

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