自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Elasticsearch - 查询

QueryBuilders1、QueryBuilders.multiMatchQuery(key, field1, field2…);QueryBuilder queryBuilder = QueryBuilders.multiMatchQuery(key, "content", "title");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder()searchSourceBuilder.query(queryBuil

2022-05-14 12:06:31 333

原创 对称加密算法AES

AES分组加密算法,会讲明文以16字节分组,分组后,最后一组不够16字节则涉及到填充,填充常见有PKCS5Padding,ISO10126Padding 。不需要填充的还有NoPadding有常见几种工作模式:ECBECB 全称为电子密码本(Electronic codebook),将待加密的数据拆分成块,并对每个块进行独立加密。ECB 模式有一个致命的缺点,由于该模式对每个块进行独立加密,会导致同样的明文块被加密成相同的密文块,相对来说并不是非常安全。下图就是一个很好的例子:CBCCBC 全

2022-05-07 15:35:42 422

原创 Java-IO系列:Netty中ChannelInboundHandler(一)

ChannelInboundHandler与Channel的Inbound事件密切相关。定义了可供用户扩展的方法。主要是各种事件的回调。比如channelRegistered,Unregistered等。详细方法源码如下:public interface ChannelInboundHandler extends ChannelHandler { /** * The {@link Channel} of the {@link ChannelHandlerContext} was

2022-01-05 23:33:59 389

原创 Java-IO系列:Netty中DefaultChannelPipeline

类图DefaultChannelPipeline是一个Channel中用于处理各种入,出事件的流水线。DefaultChannelPipeline内部通过双向链表维护了一个pipeline中可以处理事件的处理器列表。每个处理器都是一个AbstractChannelHandlerContext的子类。AbstractChannelHandlerContext中有两个链表相关的属性,prev和next,分别代表该节点的前后相邻节点。而AbstractChannelHandlerContext有三个子类。分

2021-12-24 00:44:21 1445 1

原创 Java-IO系列:Netty中NioServerSocketChannel

NioServerSocketChannel类图pipeline:DefaultChannelPipeline创建NioServerSocketChannel的时候,会初始化pipeline属性,创建一个DefaultChannelPipeline(this)。看源码:AbstractChannel.java protected DefaultChannelPipeline newChannelPipeline() { return new DefaultChannelPi

2021-12-17 00:48:23 560

原创 Java-IO系列:Netty中Channel创建过程以及与操作系统系统调用的关系

应用代码public static void start() throws Exception { ServerBootstrap bootstrap = new ServerBootstrap(); EventLoopGroup boss = new NioEventLoopGroup(); EventLoopGroup work = new NioEventLoopGroup(); bootstrap.group(boss, work)

2021-12-16 00:27:39 1081 1

原创 Java-IO系列:Netty ServerBootStrap.bind过程源码解析

应用代码public static void start() throws Exception { ServerBootstrap bootstrap = new ServerBootstrap(); EventLoopGroup boss = new NioEventLoopGroup(); EventLoopGroup work = new NioEventLoopGroup(); bootstrap.group(boss, work)

2021-12-09 00:20:26 460

原创 JDK源码-IO系列:IO多路复用示例以及JDK源码解析

测试代码:Server:import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import java.nio.channels.ServerSocketChannel;import java.nio.channels.Socket

2021-12-04 11:47:14 1468

原创 Linux IO:pipe系统调用用法

pipe函数pipe函数创建一对fd,分别是读,写两端。向写fd写内容,就可以通过读fd进行内容读取演示代码#include <unistd.h>#include <stdio.h>#include <errno.h>#include <string.h>#include <stdlib.h>int main(int argc, char *argv[]){ pid_t pid; int fd[2]; //定义

2021-12-03 22:44:07 935

原创 JDK源码-IO系列:linux IO模型以及多路复用epoll

Linux Epoll模型epoll前世今生linux系统产生了下面五种网络模式的方案:最常见的是前三种。1、阻塞IO(blocking IO):对用户态应用程序来说,当调用read()系统调用的时候。如果待读取的fd没有数据的时候,就回阻塞,直到有数据回返回。2、非阻塞IO(nonblocking IO)对用户态程序来说,当调用read()系统调用的时候,如果待读取的fd没有数据的时候,就返回error,用户态程序可以根据错误码判断,根据程序设计选择继续循环调用,来获取数据。3、IO多路复

2021-12-01 00:19:14 146

原创 JDK源码-IO系列:FileInputStream与BufferedInputStream

FileInputStream和BufferedInputStreamFileInputStream:文件字节输入流BufferedInputStream:缓冲字节输入流BufferedInputStream是FilterInputStream的子类,而FilterInputStream是InputStream的子类。FilterInputStream持有一个InputStream in,而当从数据源是文件的时候,也就是InputStream是FileInputStream的时候,就是从文件读取字

2021-11-23 22:37:44 4053

原创 JDK源码-IO系列:字符流输入FileReader

字符流输入 FileReader读FileReader的时候,结合BuffedReader一起看。参考前一篇文章FileReader。先说结论BufferedReader 封装了FileReader和字符缓冲区这两个关键内容。BufferedReader通过FileReader从文件中获取字节流并decode解码成字符数组,存储再字符缓冲去。BufferedReader通过字符缓冲区给调用方获取指定位置的字符。类图FileReader继承了InputStreamReader。InputSt

2021-11-22 23:36:37 223

原创 JDK源码-IO系列:缓冲字符流

字符缓冲流类关系结合一句代码了解这个类图BufferedReader bufferedReader = new BufferedReader(new FileReader(inputFile))new了一个BufferedReader。输入是一个FileReader。也就是BufferedReader里面的in变量就是FileReader。另外几个关联的属性:cb,nchars,nextchar等看看cb的定义:char cb[],BufferedReader是缓冲字符输入流。cb就是字符

2021-11-20 11:55:19 760

原创 文件下载(四):CDN对文件下载接口的加速实践

CDN加速介绍以下图援引华为云CDN介绍图,比较清晰,不多赘述。CDN加速服务器配置CDN侧配置本案例以华为云CDN服务为例。其他云服务提供商的CDN配置类似。进入CDN管理台,选择添加域名。如下图示,加速域名填写“stacker.top”,业务类型按需选择,本案例选择“文件下载加速”。源站类型选择“源站IP”,空白框填写提供文件下载接口的服务器公网IP地址。如下图所示:添加完成后,会生成一个加速域名,对应的CNAME。DNS侧配置本案例的stacker.top域名是阿里云上买的,所以

2021-10-24 23:22:15 2155

原创 文件下载(三):wireshark抓包文件下载整个过程

Wireshark抓包TCP三次握手![在这里插入图片描述](https://img-blog.csdnimg.cn/59e3da1be12e42038bf1f6f82e4ca20a.pngManagementService进程使用58884端口,向ObjectService的8083端口发起TCP连接。握手1:58884端口发起SYN,SEQ=0,SEQ是Sequence number代表发送端本地的序号。握手2:8043端口收到请求后,发现是建链的报文,自己本地产生自己的SEQ=0,作为对握手

2021-10-24 23:14:00 6770

原创 文件下载(二):rest接口文件传输的过程

前提创建一个4G的大文件。命令如下:root@zhidong-ThinkPad-S3:/home/zhidong# dd if=/dev/zero of=/tmp/test bs=1M count=4000部署如下所示:ManagementService应用服务器,提供一个RestfulAPI,叫/management/apps。该API主要逻辑是从ObjectService文件服务器获取一个文件,按照规范重命名文件名称,并返回该文件。该API对外提供。ObjectService文件服务器,

2021-10-24 23:05:54 3309

原创 文件下载(一):浏览器从资源服务器下载资源

一、组网组网如上图所示ECS是华为云上的一台服务器。上面部署Nginx软件+Web服务器。Web服务器是基于SpringBoot框架完成开发的,测试的。二、浏览器获取服务器的文件静态资源Nginx上http 80端口配置如下:Nginx上8080服务器后端配置如下:再看下服务器的静态资源目录:从浏览器输入服务器的ip地址,登录网站,从F12的调试模式可以看到有多次静态资源的请求,包括js,css,png,svg,ico等自定义Restful的大文件下载接口前提:服务器提供一

2021-10-22 15:30:50 793

原创 2021-10-15

发自 支冬:https://appdlc-drcn.hispace.hicloud.com/dl/appdl/application/apk/ce/ced0a768618848f39703460e0bcdad22/PC00b677fbea9e41e88c23caa51c6b2444.2107311803.exe

2021-10-15 14:35:08 85

原创 CDN加速静态博客

博客形态华为云买的ECS实例,部署静态博客阿里云买的域名stacker.top,绑定博客域名先上效果测试方法:没有配置CDN加速的场景清除缓存输入stacker.top登录博客网站首页刷新出来需要12s+配置了CDN加速的场景同样的测试方法,效果如下:刷新出首页界面只需要,不到2s。满足常规体验要求。配置方法前提静态博客已部署好,使用stacker.top域名可访问步骤1、配置CDN加速域名登录CDN供应商控制台,配置CDN,本案例以华为云CDN为例:配置完成后,

2021-10-14 11:34:22 155

原创 JavaBean与内省(Introspector)

JavaBean与内省(Introspector)JavaBean是一种规范,内省是jdk提供的一系列基础API,用于对JavaBean进行操作,包括获取执行属性,方法等。JavaBean中的Property的含义,是读写方法的属性,如下Apple类,有3个字段(Filed),分别是core,colour,isSpy。但是却有class,core,colour,isSpy,zi这5个属性(Property)。@Servicepublic class Apple { private Core

2021-10-09 16:03:19 115

原创 Spring系列梳理二:SpringApplication.run()之createApplicationContext

ApplicationContext创建ApplicationContext源码如下:protected ConfigurableApplicationContext createApplicationContext() { Class<?> contextClass = this.applicationContextClass; if (contextClass == null) { try { switch (this.webApplicati

2021-09-17 16:27:24 212

原创 Spring系列梳理一:SpringApplication入口

SpringApplication一、场景SpringApplication一般作为Springboot项目中的引导启动类。调用静态方法run()即可执行,我们自己项目中的启动类;如下代码,即通过SpringApplication引导启动ShardingDbReadWriteApplication@SpringBootApplicationpublic class ShardingDbReadWriteApplication { public static void main(String[

2021-09-14 16:54:30 472

原创 常见小妙招

小妙招之notepad++换行替换crtl+F 搜索替换,选择"\r\n"代表换行符,如果需要把换行符干掉,那么"查找目标"包括换行符,"替换目标"不包括换行符,即可。删除空行查找替换里面,"查找目标"写**^\s+**,"替换为"清空行首添加固定字符串查找替换里面,"查找目标"写**^**,"替换为"写"git clone "行尾加入固定内容查找替换里面,“查找目标"写”$","替换为"写"git clone "在这里插入图片描述删除"/"前后的空格...

2021-08-17 16:41:28 87

原创 git submodule 用法

Git submodule添加git submodule add ssh://xxxxxxxxxxxxxxxxxxxxxxxxxxxx.git更新git submodule update --remote克隆包含子模块的项目递归克隆git clone https://xxxxxxxx.git --recursive

2021-08-17 14:32:40 121

原创 热量与减肥

脂肪一公斤脂肪需要消耗身体7700大卡易胖体质成人基础代谢 1200大卡热量,低于基础代谢所需热量,回分解肌肉,出现虚弱。稍微多摄入热量就胖。拒绝零食过度加工的零食都是高热量的东西,进餐时间点以外饿的话吃苹果等低热量的水果,提升饱腹感。食物热量苹果:54 大卡(每100克)香蕉:93 大卡(每100克)番茄:20 大卡(每100克)黄瓜,生菜:16 大卡(每100克)豆浆:16 大卡(每100克)...

2021-04-03 22:16:41 127

原创 H2数据库入门(一):H2项目工程的依赖

H2数据库H2项目依赖编译依赖 <!-- START COMPILE DEPENDENCIES !--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${servlet.version}</version>

2021-02-18 22:47:57 1015

原创 白话多媒体体系-视频基础知识

白话多媒体体系-视频基础知识视频相关CPU/GPU:帧率显示屏:刷新率视频相关白话之前先回顾一下小时候玩的,翻书动画的小玩意,就是在书的页脚画一些连贯的图片,然后翻书,就能看到一个简易的动画。这就是动画的原理。现代计算机系统里面,CPU/GPU是处理器,显示屏是IO外设。CPU通过执行代码,计算出来要输出的视频内容,通过IO将内容绘制在显示屏上。可见CPU/GPU和显示屏,是生产者和消费者的关系。CPU/GPU:帧率帧率,俗称fps(Frame per second),每秒的帧数,帧是一个画

2021-02-08 23:31:41 151

原创 开发者测试(未完待续)

开发者测试代码分析:以典型的微服务为例,分Controller,Service,Dao(Mybatis Mapper),适配层,每一层都有各自的特点:Controller:代表的是Restful API的出入口,Request为入数据,Response为出数据。看护好输入输出可以有效的看护好API层的能力。常规的自动化测试也在这个领域耕耘较多,如各种API Test的工具,包括PostMan等。在开发和测试团队分离的团队里面,测试主要聚焦此类的自动化测试。Service层:该层的API,定位于基于业

2020-12-25 00:35:22 873

原创 Swagger yaml定义Restful API那些事(持续更新)

一、复杂模型1、Value是一个Map<String, Map<String, String>>结构嵌套Map的数据结构,如下示意"translations": { "zh-CN": { "hello.world": "你好,世界" "hello.earth": "你好,地球" "hello.mars": "你好,火星" }, "en-US": { "hello.world": "Hello World" "hello.ear

2020-12-23 20:41:39 2867

原创 常用技巧汇总(持续更新)

一、覆盖更新本地代码git fetch --allgit reset --hard origin/master二、git push到gerrit上git push origin HEAD:refs/for/br_xxx_Master三、git 添加远程仓库到本地git remote add remoteGit ssh://[email protected] 查询远程库的结果git remote -v...

2020-12-12 18:31:26 165

原创 NIO-Reactor

NIO和BIO多路IO复用Reactor模式高性能IO的发展历程:单线程阻塞->多线程并发->事件驱动NIO单线程阻塞:最大问题是无法并发,效率太低,当前请求没有处理完,后面的请求一直排队等待,通常是一个while循环,accept,有数据后执行,执行完成后执行while下一次循环多线程并发:一个连接一个线程,缺点是:资源要求太高,系统中创建线程是需要比较高的系统资源的,如果连接数太高,系统无法承受,而且,线程的反复创建-销毁也需要代价。事件驱动NIO:reactor模型,当有事件触

2020-12-12 18:29:59 257

原创 Ubuntu 常用工具配置备忘(持续更新)

一、PageUp/PageDown联想历史命令编辑 /etc/inputrc去除如下两行注释,重启终端二、截图工具安装apt-get install flameshot配置快捷键

2020-12-12 18:21:39 246 1

原创 Ubuntu qemu调试linux内核-调试linux内核

配置根文件系统根文件系统也是一个文件系统,主要是用于linux启动的时候在内存中加载,并执行第一个启动程序init。所以思路:1、创建init可执行文件init创建init.c并写入如下代码#include <stdio.h>void main(){ printf("Hello world!");}gcc编译可执行文件:gcc init.c --static -o init2、制作根文件系统使用cpio打包包含init程序的文件系统,作为根文件系统命令列表:

2020-12-12 18:05:20 608

原创 Ubuntu qemu调试linux内核-安装qemu

Ubuntu安装qemu机器介绍Ubuntu 18.04环境检查检查机器是否支持虚拟化,以及是否支持硬件加速的kvm安装Qemuapt install qemu qemu-kvm libvirt-bin bridge-utils virt-manager启动libvirtd服务,并设置开机自动启动root@zhidong-ThinkPad-S3:/home/zhidong# systemctl start libvirtd.serviceroot@zhidong-ThinkPad

2020-12-12 18:00:27 243

空空如也

空空如也

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

TA关注的人

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