自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计文件云盘管理系统的HTTP接口

方法和路径: GET /download?方法和路径: GET /list?方法和路径: GET /mkdir?方法和路径: GET /cd?方法和路径: POST /deletedir。方法和路径: POST /upload。方法和路径: POST /delete。方法和路径: POST /rename。请求体: old=旧文件名&new=新文件名。方法和路径: POST /login。方法和路径: GET /logout。

2025-05-20 22:33:01 68

原创 设计文件分块传输协议

2、每次发送一个数据包后,需要收到对方的回复包,判断回复结果后才继续。1、文件上传或者下载时,要把服务器会话的路径切换到该文件的目录。1字节方向(值为0是继续上传,1是全新上传,2是下载)是否继续(1字节,1是继续,0是暂停,2是结束)1字节是否最终块标志(1是最后1块,0不是)4字节任务ID(同一个任务的相同)标志(1字节,1是成功,0是失败)(一)请求文件分块(客户端给服务端)接收成功数(8字节,文件字节数)4字节任务ID(标识本次任务)文件块的字节序列(长度指定)(二)文件分块的格式(通用)

2025-05-20 20:20:12 239

原创 MySQL命令包

0x15: COM_REGISTER_SLAVE 注册从服务器。0x10: COM_DELAYED_INSERT 延时插入。0x1b: COM_SET_OPTION 设置选项。0x14: COM_CONNECT_OUT 退出连接。0x04: COM_FIELD_LIST 字段列表。0x05: COM_CREATE_DB 创建数据库。0x02: COM_INIT_DB 初始化数据库。0x06: COM_DROP_DB 删除数据库。0x03: COM_QUERY 查询。(一)命令类型的代号如下。

2025-05-20 01:54:28 234

原创 MySQL成功包和错误包

最后插入ID (可变字节,长度编码)影响行数 (可变字节,长度编码)类型(1字节,值为0x00)类型(1字节,值为0xFF)SQL状态标记 (1字节)服务器消息 (字符串)服务器状态(2字节)SQL状态(5字节)

2025-05-20 01:48:56 105

原创 MySQL协议字符集的代号

0x09:十进制值是9,MySQL 3.20.0-3.20.99支持。0x0A: 十进制值是10,MySQL 3.21.0+版本支持。0x08:十进制值是8,MySQL 3.19.x支持。8 : 拉丁字符集1,ISO-8859-1。9 : 拉丁字符集2,ISO-8859-2。字符集代号占用1字节。63 : utf8mb4字符集。23 : GB2312字符集。11 : ASCII字符集。33 : UTF-8字符集。46 : GBK字符集。

2025-05-19 23:17:23 44

原创 Base64编码的组成格式

把划分的4个字节的前面3个字节查表,获得3个字符,在后面拼接"="字符,凑成4个字符。把划分的4个字节的前面2个字节查表,在后面连接"==",凑成4个字符。1、如果是URL安全,用字符"-"替换"+",用"*"替换"/"。把划分的4个字节都查表,得到4个字符,把字符拼接。例如:52对应字符"0",53对应字符"1"。1、字节值 0到25对应字符"A"到"Z"2、字节值26到51对应字符"a"到"z"3、字节值52到61对应字符"0"到"9"4、62返回字符"+",63返回字符"/"

2025-05-19 21:41:37 184

原创 MySQL通信协议的密码计算方法

byte[] s2 = sha1( link(挑战值序列, sha1(s1)));说明:挑战值字节序列后面连接的是再次sha1摘要的值。也就是把s1数组再次摘要。link()是把s1的摘要值接在挑战值后面,返回字节数组。把对应字节进行异或运算,返回20个字节的数组。也就是s1的0号元素和s2的0号元素进行异或运算,存入结果的0号位置,其他的类似。

2025-05-19 16:58:58 95

原创 MySQL通信协议的数据编码格式

4、如果长度>= 216777216,并且小于2的64次方,占9字节。3、如果长度>=65535,并且<16777216,占3字节。2、如果长度>=251,并且<65535,占2字节。编码长度(1字节、3字节、4字节、9字节)1、如果长度小于251,占1字节。用固定的字节来表示。字符串(长度由前面指定)1字节(值为0xFC)1字节(值为0xFD)1字节(值为0xFE)

2025-05-19 16:35:26 73

原创 MySQL数据协议的消息结构

命令包(客户端的SQL命令)结果包(服务器返回执行结果)握手包(服务端给客户端)认证包(客户端给服务端)负载数据长度(3字节,采用小端序)

2025-05-19 16:14:32 93

原创 思考Java语言的缺点

默认提供了处理XML文档,URL转换,Base64转换的工具类。7、没有很完善的提供监控计算机各种内存、磁盘容量、网速等参数的编程接口库。例如:总线通信、USB通信、串口通信、SPI通信的驱动库。3、没有提供和操作系统有关的创建快捷方式,设置后台服务的功能库。2、没有内置音频播放、视频播放、HTML页面浏览显示的功能库。没有提供JSON转换、邮件发送等应用库。需要虚拟机的翻译才能执行,增加了步骤。10、运行稳定流畅,有清晰的异常处理逻辑。4、没有提供适合底层开发的驱动库。5、支持丰富的文件输入输出流。

2025-05-19 01:00:29 129

原创 SpringBoot的特点

把很多依赖都放到一起,测试后排除版本不兼容的问题。部署时用"java -jar 文件路径"来运行。提供框架默认配置,使用时只需要覆盖很少的配置。4、读取yml或者properties文档来覆盖默认配置。2、把类对象反射生成实例,设置在Map集合里。5、把目录下的文件和文件夹打包成jar文件。创建启动类和main方法,就能启动。用一个启动器就能提供一个功能模块。直接打包成可执行jar文件。3、把默认类用默认配置来初始化对象。1、扫描目录下存在某些注解的类。2、整合框架,提供默认配置。

2025-05-19 00:24:44 72

原创 邮件携带附件的协议格式

在HTML邮件正文中的<img>标签或者<audio>标签中,方便用"cid:内容编号"来引用资源。filename="附件1文件名"\r\n。filename="附件2文件名"\r\n。boundary="边界符"\r\n。如果是"multipart/related",代表是嵌入资源在HTML页面的模式。如果值是"base64",代表附件内容是base64格式。To: 空格 "收件人名字" 空格 <收件人邮箱>\r\n。每个部分的第一行都是"--边界符"。用"--边界符--\r\n"来结尾。

2025-05-18 23:18:31 251

原创 简单介绍版本控制的思路

当切换某个版本的分支时,可以快速的通过差异文件对上一个版本的文件进行修改,获得该版本文件的完整内容。每一行的第1个字节来记录操作方向,后面字符是修改的字符串内容。缺点:太消耗磁盘空间,可能很多文件中大部分内容都是相同的。2、需要找到旧版本行在新版本文件的位置。3、需要把两行之间被修改的内容记录下来。1、每次保存时,创建一个新文件。1、需要遍历两个文件的每一行。文档(v1.0.0).txt。文档(v1.0.1).txt。文档(v1.0.2).txt。文档(v1.0.3).txt。1、用文件来记录差异。

2025-05-18 22:34:53 243

原创 网页手风琴导航栏的思路

2、每次单击时,切换第二个内部<div>元素的display属性值为"block"或者"none"。一、用一个<div>内部嵌套两个<div>标签。四、用JavaScript控制显示和隐藏。三、第二个内部<div>放置很多选项。1、设置外部<div>的单击事件。二、第一个内部<div>显示标题。

2025-05-18 18:49:57 98

原创 设计Java权限验证的接口

boolean isMatchRole(String 角色要求规则, List<String> 用户的角色集合)boolean check(String 资源路径, String 用户名)判断列表 [user, root] 中有没有角色"root"存在。List<String> findRoles(String 用户名)String findRoleRegular(String 路径)可能角色规则是"admin",或者"root"。可能列表元素结果是:[user, root]

2025-05-16 22:32:09 192

原创 文件云盘系统的思路

文件云盘系统是为了让文件集中保存在计算机中,用网络对外提供文件上传和下载服务。2.1、如果在列表里,就把出现位置后面所有的路径都去除。避免携带硬盘,只需要一个电脑和联网就能在大范围内获得文件。服务器一般是专门保护的运行,方便文件的备份,不容易丢失。要么是数据表存放列表,要么是每次递归遍历文件夹返回。2.2、如果不在列表里,就加入列表的后面。需要实现文件的复制和文件夹的复制功能。需要给前端提供接口,返回文件列表。10、创建文件夹、删除文件、删除文件夹、重命名。只有回收站的文件被删除才是真的删除。

2025-05-16 19:52:50 263

原创 设计数据表中每一行的存储结构

如果字符串序列存在很大的字段空间里,那么用值为0字节代表字符串结尾。结构文件:记录表的一行是什么组成结构。约束条件(2字节):非空是第1字节的高1位比特为1。记录文件:存储每一行的字节值。2、每一行的字节区域在文件中连续存放。1、每一行固定长度为1000字节。2、超过容量单独指向一个文件存放。字段字节长度(2字节):记录值的长度。1、每个字段最多100字节。字段备注信息(2字节 + 字节序列)字段默认值(2字节 + 字节序列)类型(1字节):1是int整型。字段值的字节序列(长度已知)

2025-05-15 17:50:40 155

原创 设计消息队列的Java接口

Sub(String 服务器路径, String 用户名, String 密码, String 话题)Pub(String 服务器路径, String 用户名, String 密码, String 话题)Consumer(String 服务器路径, String 用户名, String 密码)Producer(String 服务器路径, String 用户名, String 密码)订阅者和发布者也是类似的。二、普通的消费者和生产者封装。

2025-05-15 17:31:15 279

原创 IMAP邮件协议格式的简单介绍

方向:"+FLAGS"代表设置状态,"-FLAGS"代表移除状态,"FLAGS"代表替换已有状态。序号:整数1代表第1条邮件,"1:10"代表第1到10条邮件,"1:*"代表全部邮件。选项:"BODY[]"代表邮件全部内容,"BODY[HEADER]"代表获取邮件头部。序号:1代表第1个邮件,1:5代表1到5个邮件,1:*代表所有邮件。分隔符:指的是路径分隔符,一般是"."或者"/"。文件夹名:支持通配符"*",也可以是完整文件夹名。/Seen 已读。LIST 空格 "分隔符" 空格 "文件夹名"

2025-05-14 22:40:55 702

原创 去除JSON字符串中空白字符的思路

有的JSON字符串中在符号{、}、[、]、:、,的左右两边有非空白字符(空格、回车换行符、tab键),需要用算法来去除。清除方向是以字符位置为中心,去左边和右边两个方向清除,遇到非空白字符时停止。如果是"{}[]:,"中的任意一个字符,就清除该字符左右两边的空白字符。

2025-05-13 23:14:58 211

原创 XML和JSON的解析思路

用一个变量来记录,遇到'{'就加一,遇到'}'就减一,只有变量是恢复到初始值才能代表这一部分读取结束。如果是双引号字符 ' " ',就一直读取到下一个' " ',作为字符串数据。3、如果是对象类型,把对象属性名作为键,把对象值作为值,存入Map散列表中。如果字符是'<',就一直读取到'>',把内容作为开始标签。如果是'{',就一直读取到第一个'}'字符,作为普通对象。如果是':',说明对象属性名读取结束,接下来是处理属性值。如果是'[',就一直读取到第一个']',作为数组对象。需要深度相等的才能读取结束。

2025-05-13 22:56:21 295

原创 TLS协议的客户端问候的格式

支持的加密套件列表(2字节长度 + 字节序列)支持的压缩方法(1字节长度 + 字节序列)会话ID(1字节长度 + 字节序列)握手类别(1字节,值为0x01)扩展(2字节长度 + 字节序列)客户端支持的版本号(2字节)客户端随机数(32字节)

2025-05-13 21:01:31 200

原创 JPEG图片文件格式的简单介绍

JPEG的图像数据的字节序列中如果某个字节值为0xFF,需要加字节值0x00到后面。JPEG图片文件由很多部分组成,每个部分的结构有些类似。JPEG文件的结构比较复杂。0xC0 基本图像信息。0xE0 JFIF数据。0xC4 霍夫曼信息表。0xDA 图像数据开始。开头代号(1字节,值为0xFF)开头代号(1字节,值为0xFF)0xD9 图像结束。0xD8 文件开始。0xE1 元数据。0xD8 量化表。1、没有数据参数的结构。2、有数据参数的结构。

2025-05-13 20:51:05 186

原创 最基本的网络协议格式

(一)二进制指定数据范围1、固定长度版本号(4字节)用固定字节来表示信息。2、前缀长度2字节数据长度数据的字节序列在前面指定后面有多少个字节。3、后缀指定数据的字节序列1字节结尾符(值为0)在后面用一个值为0的字节来说明数据结束。(二)常见的文本指定范围1、用回车和换行符来指定一行字符串\r\n案例:Hello\r\n2、指定多行*行数\r\n所有行的集合第一行指定下面有多少行。案例:*2\r\n第一行\r\n第二行\r\n3、用空行来指定位置分割。

2025-05-13 17:56:37 93

原创 设计权限管理的数据表

id int primary key auto_increment comment "主键",rule varchar(30) not null unique comment "URL规则",name varchar(10) not null unique comment "名字",user varchar(10) not null unique comment "用户名",name varchar(30) not null unique comment "用户名",

2025-05-12 18:25:04 282

原创 POP3邮件下载协议格式的简单介绍

如果是明文协议,监听在TCP的110端口。如果是加密协议,监听在TCP的995端口。下载完后会删除服务器的副本。TOP 空格 邮件ID 空格 行数\r\n。LIST 空格 [可选邮件ID]\r\n。服务器返回成功或者错误的单行结果。-ERR 空格 错误消息\r\n。RETR 空格 邮件ID\r\n。DELE 空格 邮件ID\r\n。USER 空格 用户名\r\n。+OK 空格 消息 \r\n。+OK 空格 消息 \r\n。PASS 空格 密码\r\n。最后一行是字符"."。有安全的POP3协议。

2025-05-12 09:01:37 247

原创 网页HTML文件的基础

简单介绍HTML标签的使用。

2025-05-12 00:48:40 440

原创 SMTP邮件发送协议的简单介绍

From: 空格 "发件人名字" 空格 <发件人邮箱>\r\n。To: 空格 "收件人名字" 空格 <收件人邮箱>\r\n。From: "小明" <222@qq.com>\r\n。To: "小米" <kkk@163.com>\r\n。334 空格 base64格式的字符串\r\n。MAIL FROM:<发送人邮箱号>\r\n。3位数字码 空格 消息字符串 \r\n。3位数字码 空格 消息字符串 \r\n。客户端邮箱号的base64字符串\r\n。334 空格 base64字符串\r\n。

2025-05-11 16:52:24 614

原创 证书文件中DER基本单元的格式

0x0C UTF8字符串。0x04 二进制序列。0x06 算法代号。0x13 可打印字符。0x17 UTC时间。0x30 有序序列。0x31 无序集合。类型(1字节或者多字节)长度(1字节或者多字节)数据内容(长度变化)

2025-05-11 15:39:18 417

原创 pem证书文件的格式

证书字节序列的base64字符串 \r\n。二、证书文件的后缀名。

2025-05-11 15:09:52 80

原创 TLS协议常用加密套件的代号

1、名字:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256。1、名字:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256。1、名字: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384。1、名字: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256。1、名字: TLS_DHE_RSA_WITH_AES_128_CBC_SHA。3、加密方式: AES-128-GCM。3、加密方式: AES-128-GCM。

2025-05-11 13:24:26 195

原创 TLS加密协议的记录协议格式

如果2字节负载长度的值是200,那么后面的加密数据的字节个数就是200个。记录协议用来封装TLS的握手报文和加密后的高层应用数据。2字节协议版本(值为0x0303是1.2版本,0x0304是1.3版本)1字节内容类别(0x15是警报,0x16是握手,0x17是应用数据)2字节负载长度(最大16 * 1024字节)加密的高层应用负载数据(可变长度)二、主要协议格式内容。

2025-05-11 12:03:52 65

原创 TCP通信时被缓冲阻塞输出

2、服务器输出数据给客户端时,客户端一直不读取,导致接收缓冲写满,服务端发送缓冲也写满,服务端的TCP套接字无法继续输出,只能阻塞等待。扫描线程根据线程的isWork为真,再判断当前时间和开始时间的间隔,如果发送超过5秒没有退出,就强制关闭该阻塞线程。2、输出阻塞一般不能设置超时时间,只能是被一个公共的扫描线程来发现阻塞太长时间,关闭阻塞的线程。如果服务器被这种模式的很多客户端消耗和阻塞处理,那么也会导致降低继续服务的能力。如果大量进程都被读取阻塞,会导致服务器不能处理其他的连接和请求,失去反应。

2025-05-11 10:58:54 160

原创 设计HTTP服务器的配置文件内容

说明:解析时读取每一行,忽略开头是"#"的字符串。文件名: mime.conf。解析时:读取每行,按照"="分割。文件名:server.conf。(一)文件后缀名和类型的映射文件。# 管理用户名和密码。

2025-05-10 21:44:30 155

原创 查找类路径下存在指定注解的类

介绍在某个目录中找到加了某个注解的类字节码的思路。3、如果某个文件后缀名是".class",就把它加载判断。2、用File类的list()方法来遍历每个文件。能在构造方法中输入指定目录的路径。// 判断是否出现Controller注解。1、自定义Java类加载器。指定目录是作为类路径。// 创建对象加到集合里。// 需要记录该文件的前缀。// 把路径符替换为"·"

2025-05-10 18:23:14 159

原创 计算机的层次

写入寄存器、读取寄存器、加减乘除运算、与或非运算、位与、位非、位或运算、真假判断、大小比较、赋值操作。例如:不管是微软系统还是Mac系统,都支持HTTP协议或者FTP协议的通信。例如:查看最新新闻、上传分享信息、保存文件、数学计算、数据处理。逻辑控制器主要是处理器、磁盘微控制器、网卡微控制器。封装底层的驱动程序,向高层提供方便的程序调用接口。硬件数字通信只要遵守规范,那么电信号是相通的。目的是用一个简单的命令就完成大量的功能。例如:电脑主板的总线通信、串口通信。例如:控制处理器、硬盘、网卡。

2025-05-10 02:38:53 140

原创 常见的模型设计思维

2、现实中汽车在十字路口没有通行机会就原地等待,有机会就唤醒通过路口。2、自动控制设备内部有一套传感器、处理器、机械电机组成的控制系统。1、处理器就是依靠把时间分成很多小片段,让每个进程轮流运行一次。3、网络系统中有星型的中心交换结构,也有总线类型的无中心结构。1、组织管理系统内部有垂直的上级部门管理下级部门的组织架构。1、进程依靠唤醒和休眠来实现线程的数据一致。1、把复杂的事情分工,每一层只负责一件事。2、小组织内部有直接的小团队管理架构。2、底层的向高层的提供服务。3、减少对象创建的时间。

2025-05-10 00:20:53 180

原创 关于FTP协议的简单介绍

1、地址1到地址4是把IPV4地址的点替换成逗号,例如:IPV4地址"122.22.3.1"替换成 "122,22,3,1"。1、通信时双方会建立两个TCP连接,一个用来控制和发送命令,另一个用来传输数据。PORT 空格 (地址1, 地址2, 地址3, 地址4, 端口参数1, 端口参数2)注意:每次建立TCP连接后,服务端会主动回复一次当前状态,响应码是220。如果响应结果的第一行第四个字符是'-',代表多行,后面还有字符。FTP协议使用命令来进行文件上传,下载,删除,修改的功能。使用时一般安装软件。

2025-05-09 23:40:47 896

原创 提升网络应用程序性能的个人思路

2、集群的问题是信息不一致,需要分工和信息更新一致。对一些不需要及时处理的任务可以提交给数据库或者缓存,或者消息队列里,只需要返回已接受任务,过一段时间再告知结果。1、网络应用程序会在使用过程中随着用户人数增加、数据量增加导致越来越卡顿。2、需要做出一些改进才能让旧系统满足高并发、流畅使用的要求。2、把网络线程池阻塞读写改变为非阻塞线程池读写。1、把那些复杂的功能模块拆分出很多个小的模块;1、把磁盘阻塞读写更换为非阻塞读写。1、可以适当增加线程池的核心线程个数。2、适当增加连接池的连接个数。

2025-05-09 23:25:03 258

原创 数字信号和物理信号

1、数字信号指的是用一些数字来表示的信号值。2、数字信号如何获得:从模拟信号转化获得。使用通信设备生成(晶体管的开关作用)。1、模拟信号指的是物质世界中某个物理参数的值随时间的一种变化。2、常见的模拟信号导线中随着时间变化的电流或者电压;光照随时间变化强度;随着时间变化的声音强度值;

2025-05-09 23:06:49 735

空空如也

空空如也

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

TA关注的人

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