- 博客(328)
- 收藏
- 关注
原创 密码的哈希校验
特点:每次都加一个随机值,那么密码哈希值在传输中被截获也不能下次使用。哈希值 = sha1(随机值的sha1哈希值 + 密码的sha1哈希值)3、客户端返回对随机数哈希值和密码哈希值拼接的字节序列的哈希值。2、客户端用这个随机数的序列转成哈希值,再获得密码的哈希值。4、服务端也进行同样的操作,得到结果后和客户端传来的比较。数据库需要用密码的哈希值来保存,防止泄露。1、获得密码的md5或者sha1格式的数字摘要值。网页的JS无法创建密码的SHA1哈希值。2、客户端发送给服务端的密码需要是哈希值序列。
2025-06-04 14:55:19
313
原创 验证码重设密码的思路
验证错误码时,需要判断次数,大于5次就拒绝验证。1、避免暴力破解验证码,需要给验证码设置错误次数。// 把验证码用短信发给手机号或者邮件发给邮箱。也需要在context域中添加次数的字段。1、用户从手机短信或者邮箱里收取验证码。申请修改时判断每天累积的次数在范围内。1、用户在页面中输入手机号或者邮箱号。// 回复不存在密保手机号或者邮箱号。// 如果存在,生成一个6位验证码。// 设置会话域中验证成功的标志。// 相等就设置数据库里的密码,返回成功。// 不相等,记录错误次数。// 回复需要验证码验证。
2025-06-04 13:44:58
746
原创 层次遍历二叉树
每次出队一个节点,访问后都要把它所有的非空子节点入队。二叉树有前序遍历、中序遍历、后序遍历、层次遍历。// 把该节点的左节点和右节点入队。// 右节点不为空,入队。指的是从根节点开始,访问每一层的节点。需要队列来存放每一层的所有节点。// 循环,如果队列不空。
2025-06-02 19:11:39
209
原创 括号表达式生成二叉树
如果栈不为空,把节点设为栈顶节点的子节点。2.2、如果是字符",",出栈一个节点。2.3、如果是字符")",出栈一个节点。3、遍历完毕后,栈顶就是根节点的指针引用。2.4、如果是字符"(",忽略。2、用括号()来包括子节点,逗号隔开。节点A和它的两个子节点B和C。1、节点值用1个字符代表。子节点可以有子节点。
2025-06-02 18:33:01
161
原创 简单说明字符串匹配算法
1、建立一棵树来说明字符串的前后关系。例如: 节点a的前面必须是c,节点a允许出现h、k、y三个字符节点。并列关系就设为节点的多个子节点。2、样本字符串按顺序来去语法树中查询看有没有存在一条遍历路径。3、难题当出现重复的规则,需要快速的跳转到前面的节点。例如:规则是"abc{3,6}",样本字符串是"abcabcabcabc"。可能还需要记录跳转的次数,是否在范围内。
2025-06-02 16:04:43
127
原创 设计简单的网络打印协议
打印机的回复中有打印机的信息,同时得到了打印机的IP地址和端口号。广播包中有发送人的IP地址和UDP套接字的端口。2.2、获取发起广播的那个设备的IP地址和端口。主机给网络广播后,就收到打印机的回复。1、给当前网络的9696端口发送广播UDP包。2.1、打印机在网络上收到UDP广播包。种类(4字节,1代表黑白,2代表彩印)打印类别(2字节,1是黑白,2是彩印)2、打印机收到广播包,进行回复。代号(2字节,值是0xAAAA)代号(2字节,值是0xBBBB)类型(2字节,1代表请求打印)
2025-05-31 21:12:47
172
原创 设计简单的ARP协议
回复包是当收到广播包,发现目标ip和自己的相同,就回复自己的MAC地址给发起查询请求的设备。把一个数据包发给指定某个IP地址的主机,该主机返回对应的物理网卡MAC地址。IP地址类型(1字节,1是IPv4,2是IPv6)发送方IP地址(4字节或者16字节)目标IP地址(4字节或者16字节)类型(1字节,值为2,代表回复)任务ID(2字节,和请求包相同)类型(1字节,值为1代表请求)发送方MAC地址(前缀指定)发送方MAC地址(前缀指定)MAC地址长度(1字节)MAC地址长度(1字节)一、ARP协议的作用。
2025-05-31 20:52:49
154
原创 个人的电路知识
用周期性的电流来控制三极管,电感的接通时因为电流增加产生相反的自感电动势,阻碍电源的电压。调制指的是:把低频信号加到高频信号上,用低频信号影响高频振荡波的频率、相位、振幅。当电感接通一段时间,又断开给电感的供电电路,让产生的自感电动势对应供电。1、串联二极管,利用单向导电的特性来放行导通方向的电流,阻止相反的电流。外界的交流电频率和石英的自带的频率相同时,电阻最小,振荡的幅度最大。用输入电源的电压加上自感电动势,来达到升压的目标。1、电感大小一定,电流振荡频率越高,阻碍作用越大。
2025-05-31 17:05:29
880
原创 Java web登录逻辑的案例
input type="password" name="pass" pattern="\S{6, 18}" placeholder="密码" required /><input type="text" name="user" pattern="\S{6, 18}" placeholder="用户名" required /><input type="submit" value="登录" />// 把用户信息设置到会话域。// 跳转到登录页面。// 设置请求域的属性。// 获取用户名和密码。
2025-05-31 00:01:02
601
原创 网页富文本编辑器的设计实现难点
2、有设置属性contentEditable="true",来开启对标签<p>或者<div>标签内部内容的编辑。4、重做时,出栈"重做记录栈",执行重做记录,入栈到"记录栈"。1、HTML标签本身有<span>标签来单独设置文字的样式。3、撤销时出栈"记录栈",然后入栈到"重做记录栈"。1、用DOM接口很容易获取标签对象的属性值和内容。2、有<ul>和<ol>来设置列表序号。操作的属性:对象,操作,修改的属性值。设置记录栈当前栈顶的操作。1、需要有栈来记录操作。2、修改时入栈记录操作。
2025-05-30 23:18:38
223
原创 Java Web定时更新信息
目标:不断定时10秒扫描,把那些超过7天的已经申请注销的用户,设为注销状态。// 查询申请注销,超过7天的用户ID。// 如果记录个数大于0。1、用Java Web的Listener来开启线程定时处理。// 设置为注销状态。把项目打包成war文件,放入Tomcat容器中。// 获得那些申请注销后超过7天时间的用户ID列表。2、容器停止时关闭定时线程。// 初始化时,启动扫描线程。// 创建运行的标志变量。3、部署项目运行,查看结果。// 设置多个用户为注销状态。// 销毁时,停止线程。
2025-05-30 22:22:29
382
原创 设计全文搜索的索引文件格式
起始位置是关键字出现的字符偏移量(第几个字符)。2、每个索引文件存放拥有同一个关键字的文件路径。D:/学生的调查报告.txt=588\r\n。D:/学生报名信息.txt=444\r\n。D:/学生注册信息.txt=668\r\n。路径是关键字出现的文件的存放路径。D:/学生报告.txt=88\r\n。1、每个关键字建立一个索引文件。每个文件的内容都是相关的。1、可以用二进制格式存放。2、需要分词才能建立索引。每个文件是首字符命名。文件路径=起始位置\r\n。相关的关键字放一起。
2025-05-30 21:56:56
195
原创 设计表格的文件存储格式
A1A1</td><td width="宽度值"></td><td width="宽度值"></td><td width="宽度值"></td><td width="宽度值">
2025-05-30 18:05:27
183
原创 TCP协议的可靠机制
1、双方是开启了连接,并且是正常工作(因为对方有对数据包的确认回复)。1、如果发送方发送数据包后,在一定时间内没有收到对方的确认包。2、发送方每次给数据包编号,接收方收到每个数据包后需要排序数据包。1、如果对方缓存满了,发送方需要定时询问有没有腾出空间。1、接收方回复确认的时候,告诉对方剩余多少缓存空间。2、出现超时后,发送方需要再次发送相同的数据包。2、发送方只能发送不超过对方缓冲空间的数据包。2、对方收到关闭信号包,需要回复一个确认关闭。1、发送方发送一个数据包,对方要回复确认。
2025-05-30 12:43:04
243
原创 迪菲赫尔曼算法的参数
如果只知道除数2和余数0,那么不知道是哪个被除数,因为有很多种可能性。3、用对方的余数作为底数,再次运算,获得相同的密钥。2、各自计算第1次的余数后,交换彼此的余数。例如: 2、6、20、100等等。用"mod(被除数, 除数)"来表示。用"pow(底数, 指数)"来表示。很多偶数除以2的余数都是0。每次都是随机选择,不对外泄露。指数运算的指数需要各自保密。3、各自第1次计算后的余数。1、双方明文交换底数、除数。(一)双方各自保密的参数。(二)需要明文传递的参数。2、取余运算的除数。
2025-05-30 01:06:56
396
原创 设计简单的代码生成模板
3、用String类的replaceAll()方法来替换。占位符的格式:"#{名字}"// 1、把模板文件的内容全部读取。1、用占位符来代表填充位置。2、读取全部模板字符串内容。4、把替换结果输出为新文件。// 2、替换成想要的结果。// 3、输出到文件中。
2025-05-30 00:24:54
176
原创 设计一个简单的便携文件格式
指的是格式固定和显示界面一致的文件。例如:pdf文件和HTML文件,不管是哪个操作系统的编辑器或者浏览器,打开后都是获得相同的画面。
2025-05-29 22:03:45
379
原创 猜测数字摘要算法的思路
第二组: 34 67 98 92。第一组:123 45 255 21。以上只是个人对摘要算法的猜测,不是实际的情况。注意:猜测摘要算法的相加允许出现溢出。不足的可能需要在对应位置填充为0。每一组的第1个数都相加成一个数。每一组的第2个数都相加成一个数。那么摘要值应该就是这种固定的序列。依次类推,直到第4个数。
2025-05-28 23:59:04
189
原创 结果集的读取方式
把所有行读取后,写入文件中,返回文件的输入流或者文件路径。1、当在同一个连接中,第一个结果集没有读取完,又查询获取一个结果集。每次调用一次方法就获取数据库记录的一行。2、如果数据行数在1000行以内,存入内存里。1、把查询结果全部读取,保存在内存或者文件里。例如:用数组或者列表来存放在内存里。3、超过1000行,用文件存放。
2025-05-28 23:19:09
126
原创 远程网络命令控制的难题
例如:C语言的exec()函数,Java的Process子进程类。2、需要把子进程的输出数据发给客户端。2、设计一套命令协议,结果协议。3、子进程的环境变量很难有效设置。1、子进程一旦执行就很难停止。实际很容易阻塞网络进程。1、TCP网络通信接口。
2025-05-28 23:07:31
310
原创 依赖注入、事件的队列、MVC模式
用Class类的isInstance()或者isAssignableFrom()方法来判断。MVC指的是把图形应用程序的功能划分为三个部分,简化逻辑,减少修改,增强可靠性。// 调用监听事件的监听器的onClick()处理单击的方法。例如:创建一个User类,设置用户上传的用户名和密码,传递给控制器处理。M指的是Model模型,也就是用类来封装数据。V指的是View视图,用来显示的页面或者组件。指的是用反射来加载对象,设置在Map中。指的是用一个Map散列表,存放对象。根据事件的类别执行对应的方法。
2025-05-26 15:17:05
900
原创 代理模式和迭代器模式
System.out.println("元素如下:");// 判断指针不是指向最后一个元素。具体是:把一个对象传入,调用对象固定的方法。指的是返回一个对象,方便遍历每个元素。主要是把一个对象委托给别人办理某个事情。指的是帮其他对象执行某个方法的类。// 前置处理(打印日志)// 后置处理(打印日志)// 重新设为初始值。// 执行目标对象方法。// 构造方法,传入容量。// 取出指定位置元素。// 是否有下一个元素。// 获取下一个元素。// 是否有下一个元素。// 获取下一个元素。
2025-05-26 11:32:01
706
原创 输入法的难题
每输入一个字符,需要到字库中根据编码规则找出对应字符的像素阵列。需要监听a 到 z键,敲击一次就在输入法窗口中添加字符。需要监听enter键,触发时把选择的字符设置到输入框中。把当前所有可能的像素阵列绘制到一行,给用户显示和选择。当鼠标点击输入框,就需要弹出输入法的显示框。需要监听esc键,触发时消失输入弹窗。一、需要创建窗口悬浮在最高层。二、监听鼠标点击事件。
2025-05-24 21:26:10
152
原创 代理服务器的逻辑
只负责把客户端输出的每个字节都原样输出给目标服务器。只负责把服务器输出的每个字节都原样输出给客户端。1、充当桥梁,把客户端的请求读取,发给目标服务器。// 3、读取客户端的请求数据,输出给目标服务器。// 4、读取目标服务器的响应,输出给客户端。2、难处是需要知道客户端什么情况下会结束请求。2、把目标服务器的响应读取,发给客户端。// 2、获得和目标服务器的连接。// 6、关闭和目标服务器的连接。// 1、获得客户端的连接。// 5、关闭和客户端的连接。读取客户端请求的线程。读取服务器响应的线程。
2025-05-24 19:36:04
124
原创 在多个数据库连接下的事务控制
PrepareStatement state1 = con1.prepareStatement("语句1");PrepareStatement state2 = con2.prepareStatement("语句2");PrepareStatement state3 = con3.prepareStatement("语句3");// 执行各自数据库的SQL语句。// 出现异常,回滚每个事务。// 创建各自的语句对象。// 获得第1个连接。// 获得第2个连接。// 获得第3个连接。
2025-05-24 19:22:13
217
原创 常见的远程调用
需要使用Remote类、Naming、LocateRegistry类的方法。1、 Dubbo和Java官方RMI类似,也通过抽象接口类来调用远方的实现类。需要把方法名、参数列表通过网络传输,发给服务提供方。1、把接口类和实现类分开,部署在各自的Java虚拟机中。需要每次固定的选择服务器来调用对象方法。1、怎么把接口类的方法调用转换成网络数据?把方法调用的参数列表转成二进制序列。把二进制序列用网络发给服务提供方。接收服务提供方回复的结果数据。服务的每个方法和HTTP路径绑定。把对象返回给方法调用者。
2025-05-24 17:17:03
113
原创 适配器模式
3、具体使用时继承该类,只重写需要的方法。1、接口M有两个抽象方法test1和test2。只重写想要的方法,不需要实现全部方法。2、实现的方法内部逻辑大部分是空的。1、用一个类实现接口所有的方法。实现的方法内部逻辑都是空的。
2025-05-23 06:33:41
113
原创 单例模式和工厂模式
/ 如果对象引用为null,创建对象。1、已知F是父类,它有子类A、B、C。2、提供一个静态方法,返回对应的对象。1、构造方法私有,创建静态同类型变量。// 返回静态变量指向的对象。用一个方法,返回多种子类对象。传入代号a,就创建A类型对象。// 构造方法不准外部调用。// 创建对象,m是代号。传入代号,就创建对应的对象。2、用静态方法创建对象返回。
2025-05-23 06:25:09
202
原创 装饰模式和观察者模式
需要一个线程来监听事件,然后调用观察者的通知方法,通知所有对象。说明:重写后的read()方法内部可以增加缓冲机制,添加日志,修改原有的逻辑。目的:继承一个接口,增加某些操作,重新实现某些方法的逻辑。让一个对象不断地监听事件,然后事件发生时通知多个对象。// 遍历集合,调用每个对象的onWork方法。说明:当通知对象被注册到观察者后,就能有机会收到通知。用一个类继承接口,接收外部同类型的对象。// 存放所有被通知对象的集合。// 返回调用的结果。用集合保存所有的被通知对象。// 发出通知给所有对象。
2025-05-23 06:11:31
289
原创 定位坐标的属性设计
/ 运动速度,单位是米每秒。// 运动速度,单位是米每秒。// 水平坐标值,单位是米。// 垂直坐标值,单位是米。// 水平面海拔,单位是米。// 运动方向,单位是角度。// 水平角度值,单位是度。// 垂直角度值,单位是度。// 球的半径,单位是米。// 运动方向,单位是度。// 俯仰角度,单位是度。
2025-05-23 04:18:45
143
原创 猜测电子地图导航的逻辑
道路是否存在、两点的距离都需要遥感测量或者实地测量。// 根据运动方向和最短路径,得出行动方向和下一次变更方向的路径。4、确定起点和终点的最短路径时,要把这每一条线段都输入图的数据结构中。把十字路口、拐弯点、站点、起点当做图的节点。2、需要实地测量一个直线单向车道的起点坐标和终点坐标。// 通过卫星定位系统,获取一次坐标。// 更新一次在电子地图上的位置图标。1、需要实地测量十字路口的卫星经纬度坐标。// 获取起点和终点中的最短路径。while(运行为真){// 初始化起点和终点。
2025-05-23 03:52:49
163
原创 猜测TCP协议内部工作线程的逻辑
/ 从发送数据阻塞队列里获取min(q.size(), 1024, 对方剩余空间)个字节。// 负责接收每个来自对方的数据包、确认包、询问剩余空间包、主动关闭包。// 生成IP确认包 确认号为序号+1。// 把IP包再次入队到任务队列里。// 把确认包入队到发送任务队列里。// 把负载数据入队到接收队列里。// 生成发送IP数据包,设置序号。// 获取我方剩余接收空间。// 设置接收成功sendOk为真。// 循环判断直到对方接收成功。// 设置接收成功requireOk为真。
2025-05-23 03:25:04
675
原创 设计B+树的存储结构
1、索引节点索引项:// 主键int id;// 索引节点指针索引节点:// 主键IDint id;// 子节点个数int k;// 节点类型int type;// 子节点索引集合// 数据节点指针2、数据节点// 主键int id;// 名字// 年龄int age;// 上一个数据节点// 下一个数据节点每个数据节点会用指针互相连接,构成一个双向链表。
2025-05-22 20:31:10
194
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人