自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

opi

不积跬步,无以至千里。不积小流,无以成江海。《荀子》

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

原创 【工具】正则匹配工具

背景正则表达式在程序员的世界里无所不在,如grep、nginx配置啊等等一旦正则表达式长了,或者很复杂,如包含分组啊、特殊字符、转义符号啊,可读性非常差,理清楚语义很困难解决方案使用工具https://regexr.com/属于表达式,和目标文本,多尝试几个text例子,就能理解正则表达式的语义,最下面一栏还会展示分组匹配结构,和解释等等信息,非常方便,学习正则明智之选~...

2020-03-19 13:01:40 712

原创 【通信】Java NIO模型

1.可伸缩的网络服务经典BIO网络服务端代码设计 thread-per-request,每个处理都可以在独立线程中执行。存在着很多问题,为了更好的可伸缩对其进行优化。1.1 可伸缩的目标负载增加时(更多客户端连接)的优雅退化 性能随着资源(CPU、内存、磁盘、带宽)不断提高 同时满足可用性和性能目标:低时延、满足高峰需求、服务质量可调控1.2 解决方案分而治之,总体服...

2020-03-19 10:54:39 258

原创 【并发编程】线程生命周期

状态流转总图0.新建状态NewThread类 实现了Runnable接口 run() Runnable接口 run(),通过Thread类或线程池来使用 Callable接口 作为FutureTask构造方法参数使用 call方法,有返回值,且可以抛出异常 call方法实际是在Runnable的run方法中被执行 1.就绪状态Runnable调用线程...

2020-03-18 15:07:48 238

原创 【工具】curl & openssl

1.curlcurl工具类似于postman,什么时候使用curl而非postman呢?当处于linux 环境或者远程登录服务器无法使用图形化工具时。当需要编程实现n次curl接口时,可以通过写shell脚本中使用curl工具。1.1 用法curl可以用于测试http/https服务,查看服务端更多的信息,如ssl协议、证书、链路等信息curl -X POST -d 'p...

2020-03-17 15:13:20 1427

原创 【数据结构】图解B树、B+树

目录1.B树1.2 性质1.3 图示 最简单3阶B树1.4 操作1.5 应用2.B+树2.1 性质2.2 图示2.3 应用1.B树1.2 性质B树的阶m:孩子节点个数(叉)的最大值 1.分支数(子树) 根节点最少可以有两个分支[2,m] 非根非叶子的分支个数为[ ceil(m/2),m] 2.key数 节点上key数量是(分叉数-1...

2020-03-13 11:10:48 2186 1

原创 【HTTPS】TLS/SSL握手失败的场景分析

0.背景知识TLS/SSL握手的过程参考SSL握手过程图解1.常见报错1.1 SSLHandshakeException handshake_failure1.1.1 TLS/SSL协议版本不匹配自从TLS 1.2版本在2008年发布以来,服务器处于安全性考虑通常也只支持较高版本TLS,比如TLS1.2及以上,如果这些客户端用低版本TLS/SSL向服务器发起握手,会因为服务器...

2020-03-12 11:49:36 4090

原创 【源码阅读】导入JDK源码

1.下载openjdkhttp://hg.openjdk.java.net/2.导入到IDEAFile->Project Structure看起JDK源码来非常带劲~

2020-03-12 11:13:46 204

原创 【bugfix】https握手失败 javax.net.ssl.SSLException: Received fatal alert: internal_error

目录1.背景2.分析过程2.1抓包2.2 控制变量3.原因4.解决方案1.背景对接外部服务使用https协议,通过浏览器和curl 7.54.0、OpenSSL 1.1.1d 10 Sep 2019都能通,但是开发机上通过commons-httpclient 3.1包通过注册ssl协议进行socket通信时,报SSLException: Received fata...

2020-03-12 10:47:39 8245

原创 【并发编程】synchronized实现

1.功能synchronized是用与线程同步,是一个重量级互斥锁,可以保证方法或者代码块在运行时,同一时刻只有一个线程可以进入到该对象的临界区(同一个对象的所有synchronized保卫的代码块)。synchronized是可重入的,即同一个线程,可以多次进入同个对象的多个synchronized块。2.锁对象synchronized修饰位置 锁对象 样例 实例...

2020-03-10 19:59:19 327

原创 【bugfix】密文传输+UrlEncode的坑

背景现象服务之间的报文传输需要进行加密改造,发现上游发送过来表单请求(application/x-www-form-urlencoded)中的SM4密文解密不了原因客户端和服务端打印密文如下:客户端打印密文:U000AAEAAAAyAAAAAgAAAEAAAADYnadFTDMUfEBTv/STdyFPyUwhDRbdI+syV3Z9yvFh/hCNCugs5FUoCs4++I...

2020-03-05 17:26:40 770

原创 【mybatis】MyBatis入门手册

1.数据库准备创建样例表,并插入样例数据CREATE TABLE STUDENTS(stud_id int(11) NOT NULL AUTO_INCREMENT,name varchar(50) NOT NULL,email varchar(50) NOT NULL,dob date DEFAULT NULL,PRIMARY KEY (stud_id)) ENGINE=I...

2020-03-03 10:42:38 254

原创 【git】.gitignore 忽略target、.idea文件夹等

1.需求:项目中如日志,临时文件,编译的中间文件等不想提交到代码仓库,2.方案:这时就要设置相应的忽略规则,来忽略这些文件的提交。在项目根路径添加.gitignore文件,内容如下,匹配规则按行从上到下#忽略所有.svn目录.svn/#忽略所有target目录target/#忽略所有.idea目录.idea/#忽略所有.iml文件*.iml语法 含义 ...

2020-02-28 14:33:37 33368 7

原创 【JVM】Java启动JVM

1.Java命令启动一个Java应用,Launches a Java application,具体可以用man java查看使用方法。java [options] classname [args]java [options] -jar filename [args]options是传递给VM的参数,args是传递给java main方法的参数,具体使用2.启动过程java...

2020-02-28 09:43:56 849

原创 【设计模式】装饰模式之servletRequest&servletRequestWrapper

1.简介装饰模式(Decorator Pattern)其定义如下:Attach additionalresponsibilities to an object dynamically keeping the same interface.Decorators provide aflexible alternative to subclassing for extending functio...

2020-02-27 19:18:47 312

原创 面试题整理(一)

线程部分1、多线程的实现方式有哪些?这个题目在一面的时候基本上都会碰到吧,继承 Thread 类、实现Runnable、callable 接口,最后调用 的是 start() 方法来启动线程。 @Test public void testStart() { Thread B = new Thread(new Runnable() { ...

2020-02-27 10:54:37 321

原创 【bugFix】ASM ClassReader failed to parse class file

现象spring容器初始化失败error日志如下:Context initialization failedorg.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component classnested exception is org.springfra...

2020-02-27 10:50:45 309

原创 【bugfix】maven deploy jar包到私服后,依赖没法传递

1.现象发布了一个新的jar包,引入到别的项目后,新jar包的依赖没有获取到,导致需要一一引入依赖2.原因maven在传递依赖时,是根据该jar包所在的仓库目录下的同名pom文件找到其依赖的。上述问题就是在发布时,没有生成这样的同名.pom文件3.解决方案在deploy时,加一个选项指定pom文件-DpomFile=pom.xmlmvn deploy:deplo...

2020-02-26 20:54:06 2010

翻译 ZooKeeper程序员指南【一】数据模型 

0.简介本文档是一篇利用ZooKeeper来协调分布式应用程序的开发指南。它包含基础概念和实战信息。本指南的前四部分介绍了各种ZooKeeper概念。这些对于理解ZooKeeper如何工作以及如何使用它们都是必要的。它不包含源代码,但它确实熟悉与分布式计算相关的问题。第一组中的部分是: The ZooKeeper Data Model数据模型 ZooKeeper S...

2020-02-26 19:53:06 223

原创 【JDK】String 字符串

1.简介String类用来表示字符串,程序中的“abc”等字符串字面量就是其实例。String是个不可变类,就是虽然它底层实现的一个字符数组,但是不能够修改字符数组的某个字符。因此它是可以多线程间共享的(线程安全的)。2.字段&构造由于String底层也是char数组,char类型在内存中是由两个字节Unicode编码(UTF-16)表示,每个字符值都在[\u0000,...

2020-02-21 08:57:45 264

原创 【Spring】Spring项目导入Idea

目录1.环境准备JDK 1.8gradle 4.6IDE:IntelliJ IDEA2.代码准备2.1 下载2.2 预编译3.导入IntelliJ IDEA4.效果附录1.环境准备JDK 1.8gradle 4.6可以网盘下载链接: https://pan.baidu.com/s/11YJFAK4ns9KlFFKTi3tn6A 提取码...

2020-02-20 09:00:33 2287

原创 【Spring】@ResponseBody

1.简介很多web接口,即控制层(controller)的方法一般会返回一个页面给客户端显示,但有的接口是Restful接口,比如客户端想要一个json串。我们可以使用@ResponseBody,标记在controller方法上,可以实现将方法的返回值以特定格式写入到response的body返回给客户端。如果返回值是字符串,那么直接将字符串写到客户端;如果是一个对象,会将对象转化为json串...

2020-02-19 19:59:31 576

原创 普通Java程序用Maven 打jar包

目录1. 需求 2. 开发环境3. Maven配置3.1 pom.xml3.2 assembly插件配置package.xml4. 使用maven-jar-plugin打可执行jar包​5. Maven使用maven-assembly-plugin装需要打包的文件打进zip包7. 解压zip,执行jar包1. 需求 普通java maven项目...

2020-02-14 09:16:02 770

原创 【mysql】SQL函数

1.算术函数函数 含义 样例 ABS 取绝对值 SELECT ABS(-1); # 结果为 1 MOD 取余 SELECT MOD(22,5); # 22%5 结果为 2 ROUND 四舍五入时指定小数点位数 SELECT ROUND(15.43,1); # 结果为 15.4 2.字符串函数函数 含义 样例 ...

2020-02-12 17:49:37 1452

原创 【HTTP】HTTP header头

目录Http请求响应​​那些年用错HTTP header的异象1.Content-length2.Content-Type3.Accept-Encoding&Content-Encoding4.ConnectionHTTP header概览本文主要关注报文首部字段(header field ),HTTP首部字段是由首部字段名和字段值构成的,中间用冒号“...

2020-02-11 11:16:18 785

原创 【算法】位运算

目录1.基础2.操作2.1 置位 set bit2.2 查位check bit2.3 切换位 toggle bit2.4 清除位 clear bit2.5 最右1位掩码2.6 最左1位掩码2.7 清除最右13.编程题3.1 leetcode 476. 数字的补数思路3.2leetcode201. 数字范围按位与思路求解方式1.基础...

2020-02-07 17:05:53 2320

原创 【shell】awk可编程过滤器

目录简介1.标准结构1.1 模式1.2 动作2.常用内置变量3.支持运算符4.例题4.1.按行逆序打印4.2.转置文件4.3.输出所有子目录信息4.4.输出第1行以后的行4.5.列出当前目录下文件名及文件大小简介awk名称由Alfred Aho (龙书作者;哥伦比亚大学教授)、 Peter J. Weinberger(原贝尔实验室科学家;现...

2020-02-04 17:26:40 413

原创 图解LinkedList

1.数据结构1.0 类图从类图可以发现LinkedList有多种角色,既是List线性顺序表,也是Queue队列,此外还可以当作栈使用。 继承自List、Queue 字段有first、last指针 双向节点,prev和next指针 1.1 链表first字段则是链表的head,last则...

2020-02-03 13:29:12 786

原创 Java并发编程

0.背景1.为什么会有并发编程的概念呢?因为硬件的发展,多核CPU的出现,为了更充分地利用多核CPU,可以让任务在多个核上并行地计算,以提升程序的计算效率。2.应用场景:如GUI程序,提升响应用户的速度;如服务端同时响应多个客户端请求,提升吞吐量和响应。异步事件的简化处理3.引入并发编程导致了哪些问题?(1)线程安全问题由于多个线程并发地访问线程共享的状态,...

2020-01-21 16:25:48 239

原创 【JVM】内存管理

2.内存管理JVM规范中指定运行时数据去分为以下几块,方法区、堆、程序计数器、虚拟机栈、本地方法栈。其中方法区、堆是所有线程共享的,而程序计数器、虚拟机栈、本地方法栈是线程私有的。 2.1 内存分配线程共享? jvm规范 hotspot实现 存放内容 可能异常 hotspot选项控制 共享 方法区 永久代 存放加载的...

2020-01-21 11:38:14 326

原创 【多线程】线程同步之wait 和 notify

需求leetcode1116. 打印零与奇偶数奇偶交替打印给出一个正整数n,打印出0102.....0n的序列3个线程共享对象ZeroEvenOdd,t1 调用其zero();t2 调用odd();t3 调用even()方法解题思路Wait-notify模型进行三个线程的同步,两个变量,一个是序列当前数字(包含0),还有一个是递增数字3个线程都有着个字的打印条件,如果不...

2020-01-08 08:36:51 591

原创 【mysql】Mysql迁移后 Unknown engine innoDB

背景将mysql 5.1.72数据库服务从一台Linux机器迁移到别的机器,是整个安装路径、数据路径、日志路径一起拷贝过去,然而服务启动后,原InnoDB的都访问不了,报错“Unknown engine innoDB”。MySQL 5.1版本默认不安装innodb引擎,允许存储引擎开发商以动态方式加载引擎,官方称为InnoDB Plugin,可将其视为InnoDB 1.0.x版本。MySQ...

2020-01-06 11:20:51 324

原创 【JVM】Java虚拟机

0.应用架构0.1 JVM VS JRE VS JDK关系0.2 JVM架构根据JVM规范,业界已有很多实现,其中最常用的是HotSpot虚拟机,1.类加载类加载机制:虚拟机把Class文件(字节码)加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被JVM直接使用的Java类型,这就是虚拟机的。2.内存管理JVM运行时用到的内存线程共享维度...

2019-12-27 11:08:36 165

原创 【Java】java命令使用

1.Java命令启动一个Java应用,Launches a Java application,具体可以用man java查看使用方法。java [options] classname [args]java [options] -jar filename [args]options是传递给VM的参数,args是传递给java main方法的参数1.1 选项options1....

2019-12-27 10:23:03 519

原创 【JVM】类加载

1.类加载类加载机制:虚拟机把Class文件(字节码)加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被JVM直接使用的Java类型,这就是虚拟机的。1.1 when触发场景前提条件:类还没有加载的时候(1) 主类(包含main(),启动入口)主类先初始化 (2) 父类递归,先触发父类的初始化,如主类加载过程中触发父类Object类的加载 (3) new、gets...

2019-12-26 12:50:39 239

原创 【面试题】面试题 问题之书

一、Java基础集合HashMap 1.7和1.8的区别 源码阅读jdk1.8 ConcurrentHashMap的实现原理以及1.7和1.8的区别 Java提供的排序算法是怎么实现的?Object序列化和反序列化底层的实现原理等相关问题 new String()一共创建了几个对象? Java Integer和String内存存储常见问题 hashCode和equals相关...

2019-12-25 13:36:21 289

原创 【通信】NIO实现+源码解析

目录1.简介2.最简demo使用2.1 网络线程模型图2.2 demo代码3 源码分析3.1 Selector选择器3.1.1 open()创建实例​3.1.2 select()遍历fd选择就绪3.2 Channel3.2.1 read读取到bufferwrite写入3.3 Buffer缓冲区3.3.1 核心字段3.3.2 demo测试3...

2019-12-24 17:54:44 1558 1

原创 【java】字符编码问题

0.常识Java的内存编码是Unicode,UTF-16 Linux 默认ISO-8859-1 Win32 默认GB2312 字符集charset:多个字符的集合。例如GB2312是中国国家标准的简体中文字符集。 字符编码(Character encoding):把字符集中的字符编码(映射)为特定的字节或字节序列的规则,以便文本在存储和在网络中传输。0.1 常用字符集&...

2019-12-24 10:07:13 368

原创 【java】一篇搞清楚JNI 本地接口

1.概念JNI(Java Native Interface)java本地接口,java声明一个native方法可以调用操作系统或者C/C++编译的动态库的方法实现。通常用于与C/C++混合开发,比如有底层基础计算类库是C/C++的,又需要Java做WEB或者其它功能,Java提供的这一机制可以解决这一类问题。此外,我们都知道java语言实现是没有办法直接操纵内存、文件、网络、锁等,所以...

2019-12-23 18:18:25 380

原创 【算法】分治法

目录1.简介2.算法模式3.样例3.1 合并排序法( Merge Sort )3.2 快速排序( Quicksort )3.3leetCode 1238循环码排列3.3.1 分析:3.3.2 源码1.简介分而治之(Divide and Conquer),分割问题、各个击破。将一个大问题,分割成许多小问题。如果小问题还是很难,就继续分割成更小的问题,直到问...

2019-12-19 12:23:50 292

原创 【bugfix】从jar包找到最低jdk、jre版本

问题背景当项目中引用高版本类库时,可能导致线程down了,由于线上(1.6)线下(1.8)jdk版本不同,引入了新的jar包,所以试着排查新jar包的类版本。排查过程1.解压jar包jar -xvf kafka-clients-0.10.0.0.jar会有一系列class文件,选择./org/apache/kafka/clients/producer路径下的一个class类文...

2019-12-18 16:51:54 301

pythonlearn.pdf

python4Everyone python最好的教材,英文,简单移动,案例丰富 网络访问、数据库、可视化

2020-07-12

seckill.zip

Java秒杀系统实现源码,传统WEB服务SSM技术栈,新手上路非常有用。 简易实现,并发思考,实战指南

2020-05-13

mysql管理.xmind

xmind文件,Mysql的学习笔记,包含innodb存储实现、索引等内容

2019-05-10

HTTP Developer's Handbook开发手册英文

HTTP 服务端、客户端开发者必备的开发手册,非常实用,所用的英文也浅显易懂,阅读无难度。

2019-04-26

最常用linux命令

工作中最常用linux命令 的脑图文件,包含文件操作、目录操作、网络查看、权限更改等等

2019-04-26

Think in C++

很专业的原文书,是C++老师强烈推荐的,看了很有帮助

2012-10-15

数据结构—清华大写严蔚敏

严蔚敏的中文版数据结构书对应的PPT,很好用

2012-10-15

C++数据结构与程序设计(译本)

是英文原文书的译本,由清华大学钱丽萍翻译

2012-10-15

空空如也

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

TA关注的人

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