- 博客(147)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 Thinkpad T480s/X1c 2018 Manjaro Sway(ArchLinux)安装指纹(ID 06cb:009a)
我给旧的设备安装了Thinkpad X1C 2018安装了Manjaro Sway(Manjaro是基于ArchLinux的发行版,Sway是基于Wayland的平铺桌面)操作系统,但是指纹模块一直不能够正常工作,后来按照教程安装了fprintd,但是并不支持这款机器。
2025-02-07 21:18:03
1039
原创 整活向:使用一个64位整型来存储电话号码
今天在吃饭的时候刷着一条提问,说是电话号码用整形存储好还是字符串String类型存储好。许多人都是采用字符串类型进行存储,因为int32长度范围不够,即使用int64存储有些特殊符号也不好办。于是我想整个活,用编码的方式将电话号码存储到一个整形中去。
2024-12-04 20:37:34
366
原创 XCaptcha-for-Typecho 新一代的Typecho验证插件
之前由于博客垃圾评论过多,想要找一个验证码插件来给评论提交添加验证。一开始我用的是本地的数字图片验证码,后来在别人项目的基础上改进了。但是这个仅支持极验证,如果需要用Google reCaptcha等还需要重新上传,于是便打算自己写一个支持多种验证码的插件。Github项目地址。
2024-11-16 03:13:34
448
原创 Typecho登陆与评论添加Geetest极验证,支持PJAX主题(如Handsome)
最近垃圾评论比较多,为了防止一些机器人,我给博客添加了一些评论过滤机制,并为评论添加了验证码。原本使用的插件是noisky/typecho-plugin-geetest,这个插件是只有在页面刷新的时候才初始化Geetest验证码。由于我用的主题是Handsome并且开启了PJAX回调,进入页面和文章是不进行刷新的,这就导致Geetest无法加载。因此我改进了这个插件,使其能够支持启用了PJAX的主题。
2024-11-13 18:18:50
573
原创 计算机组成原理——CPU数据通路与控制器
数据通路,即数据在功能部件之间的传输路径。内部总线是指同一部件,如CPU内部连接各寄存器及运算部件之间的总线。系统总线是指同一台计算机系统各部件连接的总线,如CPU、内存、通道和各类IO接口之间互相连接的总线。
2024-11-11 13:49:11
1142
原创 计算机组成原理——CPU
每一个子工作(如取指令等)要占用一定的节拍,如果每个子工作所占用的节拍数相同,也就是所有机器周期长度也相同,那么我们就说机器周期是定长的,反之机器周期不定长。,当R0寄存器输出时,其值保存到暂存寄存器中,然后撤销R0到输出控制信号,然后激活R1的输出控制信号,其数据通过总线直接输送到ALU的一端,此时ALU两端的值就有了差异。4个工作周期都有可能进行访存操作,只是访存的目的不同,取指周期是为了取指令,间址周期是为了取有效地址,执行周期是为了取操作数,中断周期是为了保存程序断点。
2024-11-08 18:37:54
1095
原创 计算机组成原理——指令系统
指令是指计算机执行某种操作的命令,是计算机运行的最小功能单位。一台计算机的所有指令的集合构成该计算机的指令系统,也称为指令集。一台计算机只能够执行自己的指令集中的指令,通常不能执行其他架构的指令。如ARM的机器只能执行ARM指令集的指令,而不能执行X86架构指令集的指令,但是一些工程师会设计一些转译器,将X86的某些程序翻译成ARM指令的,从而实现在ARM机器上跑X86应用程序。一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。一条指令通常包括操作码OP和地址码A两个部分。操作码指明了用户要干什么
2024-10-29 09:40:38
1194
原创 DNS域名解析服务
我们在平时访问网站时,IP地址并不好记忆,一般需要输入一个域名,例如。而DNS就是负责域名向IP地址转换的系统。注意,浏览器上方的输入框里一般为URL,包含协议头和资源定位,例如,其中https表示协议,才是域名。我们可以在命令行使用ping命令来查询域名对应的服务器的IP。但需要注意的是,IP地址可能不唯一,这是因为大部分厂商会使用CDN,将域名解析道CDN服务器,CDN服务器会缓存一个源服务器站点的副本,用户请求的时候实际上是从最近的CDN服务器获取的。
2024-09-25 14:35:04
1003
原创 计算机组成原理——存储系统
按照上述层次结构,自下而上速度依次增快、容量相对依次渐小、造价越来越高昂。有的书上把计算机内部的磁盘统称为“辅存”,把U盘、光盘等成为外存。但是也有部分书籍将磁盘、U盘、光盘等统称为“辅村”或者“外存”。本文按照后者进行描述。我们平常安装的应用程序一般是放在辅存中的,辅存容量大,但是读写较慢。如果CPU直接访问辅存的话,那么CPU就会被辅存的速度拖累,因此CPU想要运行应用程序,需要将辅存中的程序与数据放到内存中去才行。主存中的数据被放到缓存中,CPU可以直接往缓存里写数据和读数据。
2024-09-22 14:55:27
2528
原创 计算机组成原理——进制与编码
定点小数的小数点位置是固定的。我们之前所说的带符号整数,其实也可以叫做定点整数,因为其小数点实际上是隐含的。我们之前在带符号整数的移码部分提到过,带符号整数可以用原码、反码、补码、移码来表示,而定点小数的表示方式只有原码、反码、补码。
2024-09-19 16:01:29
952
原创 计算机组成原理——计算机硬件组成与原理
计算机系统由和来组成。软件分为系统软件和应用软件两种,系统软件如操作系统、数据库管理系统;而应用软件如QQ、微信之类的。计算机组成原理主要探讨硬件部分。
2024-09-17 11:05:29
1386
原创 操作系统——OS概述
操作系统(Operation System,OS)是管理计算机硬件与软件资源的计算机程序。由此来看,OS是一种特殊的软件,它给用户和其他软件提供接口和环境,是计算机系统中最基本的系统软件。常见的OS有Linux、MacOS、Windows。
2024-09-16 03:30:48
4942
原创 OpenSSL自签证书并基于Express搭建Web服务进行SSL/TLS协议分析
最近在学习安全协议,大多数实验都是基于Windows下IIS,或者Linux下nginx搭建的Web服务,搭建环境和编写配置文件比较麻烦。而且我有多个不同环境的设备,折腾起来也比较麻烦,最好是开箱即用。所以我就用nodejs + express写了个的项目专门用于对比没有使用SSL/TLS的http与使用了的https协议。如果你对代码不感兴趣,仅是想要分析协议,可以到文章末尾的Github仓库中去下载该项目运行即可。
2024-05-14 01:52:50
844
原创 链路层安全扩展——L2TP协议
说到数据链路层的安全协议,我们不得不先提一下PPP协议,后面的PAP、CHAP与L2TP协议都是围绕它展开的。(PPP不是本文重点,很多细节没有提到,到时候会专开一篇文章讲PPP)PPP(Point-to-point Protocol,点到点协议)协议是为同等单元之间传输数据包设计的,主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接到一种共同的解决方案。点对点网络中,一个数据帧的接收者就是固定的对等端。
2024-04-25 15:11:04
2834
原创 IPv4 NAT(含Cisco配置)
10.0.0.0172.16.0.0这些私有地址可在企业或站点内使用,允许设备进行本地通信。但是,由于这些地址并不代表任何公司或组织机构,因此私有IPv4地址不能在互联网上路由。为了使具有私有 IPv4 地址的设备能够访问本地网络之外的设备和资源,必须首先将私有地址转换为公有地址。NAT 提供了私有地址到公有地址的转换,NAT的类型。这样做可以使拥有私有IPv4地址的设备可以访问私有网络外部的资源,比如互联网上的资源。
2024-04-25 01:16:44
1037
1
原创 TileIndex一个Win10磁贴风格的个人索引页
随着所用平台的增多,于是突发奇想写了一个个人索引页,来部署到服务器或者Github Page。在Github上也有很多类似的项目,但对于我个人而言都不太喜欢。在设计的时候也十分纠结,到底要写一个什么样式的索引页,然后就想到了被微软砍掉的动态磁贴(有的人讨厌这东西,但我觉得挺好看的)。
2024-04-23 15:39:33
328
原创 Linux下基于Electron的ZeroTier客户端GUI
在使用Zerotier组网的时候,我发现官方客户端GUI只有Windows版本和MacOS版本的,在Linux下加入网络等操作依然要靠命令实现,因此我干脆自己动手写了个GUI,其原理还是通过调用命令实现的。
2024-04-23 15:20:12
661
原创 IPSec协议簇(含Cisco实验配置)
早期的网络并不像现在这样,使用者大部分都是科学家并且一般是组织内部成员进行通信,所以在设计之初并没有考虑其安全性。但对于现在的网络,保障通信安全是非常重要的,而IPSec协议簇可以保障网络层的安全性。**IPSec是一组基于网络层的应用密码学的安全通信协议簇。**它是VPN中常用的一种技术。设计目标:为IPv4和IPv6提供客户操作的、高质量的、基于密码学的安全保护。功能:工作在网络层,提供三个安全服务,并和提供有限通信流机密性保护。IP协议是唯一一个由所有高层协议共享的协议。
2024-04-20 01:36:41
1243
原创 Cisco路由器配置IPv6 Manual隧道
在现有 IPv4 网络上创建覆盖型 IPv6 隧道,隧道的起点和终点都使用了 IPv4 地址来定义,然后要使隧道运行正常,使隧道具有路由协议的连接功能,需要赋予隧道两端 IPv6 地址,从而提供 IPv6 的连通性,而隧道两端的 IPv6 地址可以不属于同一网段,当然属于同一网段是最好的选择。把 IPv6 的数据全部封装在 IPv4 中,将 IPv4 当作链路层来传递的隧道形式,称为。更多的是,点对点隧道必须要有 IPv6 地址。以上隧道中,所有隧道的源均为 IPv4 地址,但是。
2024-04-04 22:41:21
2496
原创 SSM框架学习——Spring MVC核心类、常用注解与RESTful
DispatcherServlet并不直接处理请求,它只负责根据请求的信息把请求转发给合适的处理器,然后由处理器来执行实际的处理过程并生成响应,它是Spring MVC框架的入口点,它将所有这些步骤组合在一起,使得开发者可以更轻松地构建Web应用程序并处理客户端请求。每个Spring MVC应用程序通常只有一个。我们可以在web.xml里进行配置:
2024-04-02 11:06:55
746
原创 SSM框架学习——JSP语法入门
在前一节中我们已经写过JSP的代码了,这一节将单独介绍JSP一些基础语法。当然,你可以跳过这一节,当后面有代码不太理解的时候再回来阅读。
2024-04-01 18:49:27
1025
原创 SSM框架学习——Eclipse创建Spring MVC maven项目
Spring MVC是Spring内置的,实现了Web MVC设计模式的框架。它解决了Web开发过程中很多的问题,例如参数接收、表单验证等。另外它采用松散耦合可插拔组件等结构,具有相对较高的灵活性和扩展性。可参考。
2024-04-01 18:48:54
1549
原创 SSM框架学习——SqlSession以及Spring与MyBatis整合
我们在之前的项目中,几乎每次都会创建这个文件夹,然后,那么这个文件夹到底是用来干啥的,凭什么使用它里面的文件是直接写文件名?实际上这个文件夹是专门存放你的应用所需资源的,如XML等配置文件。这个文件夹被标记为后,在编译后,里面的文件会放到与编译好的文件相同目录里,所以你读取的直接使用文件名实际上是相对路径。
2024-04-01 18:47:14
906
原创 SSM框架学习——MyBatis关联映射
实际开发中,对数据库操作常常会涉及多张表,所以在OOP中就涉及对象与对象的关联关系。针对多表操作,MyBatis提供关联映射。嵌套查询是通过执行另外一条SQL映射语句来返回预期复杂类型:嵌套结果是使用嵌套结果映射来处理的联合结果子集:对于嵌套查询有一个问题,那就是执行多条SQL语句导致性能开销很大。于是就有了MyBatis的延迟加载——fetchType。我们还是用之前的账户连接数据库,终端命令可以如下输入密码敲击回车,然后切换数据库到Windows用户可以用终端或者执行下面语句如果你没有这个数据库请回到
2024-04-01 18:46:40
1199
原创 SSM框架学习——MyBatis动态SQL
动态SQL是MyBatis强大特性之一,MyBatis3采用了功能强大的基于OGNL的表达式来完成SQL。常用的动态SQL主要元素如下:如果单独对以上元素解释理解起来还是比较费力的,接下来还是以代码的形式展现。我们还是用之前的项目,我们把目录下的包中的文件里的中间的内容全部删除,最终效果看上去应该与下面一致:然后把目录下的中的测试类里面的测试方法也删除掉我们先来编写表与对象的映射关系,在的元素之间填写如下内容(注意包名与你的一致):看起来效果应该跟下面一样,不过在后文中这个文件会越写越长,由于篇幅有限
2024-04-01 18:46:09
1001
原创 SSM框架学习——了解MyBatis
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。可参考。
2024-04-01 18:45:23
1290
原创 SSM框架学习——Spring事务管理
如果多个事务同时操作同一批数据,则会引发并发异常,设置不同的隔离级别可以解决这些问题。事务的隔离级别如下隔离界别从小到大,安全性越高,但效率就越低。事务的传播行为是指在同一个方法中,不同操作前后所使用的事务。传播行为可以控制是否需要创建事务以及如何创建事务,Spring默认传播行为是REQUIRED。为了解耦,我们一般用后者。
2024-04-01 18:44:33
1030
原创 SSM学习——Spring JDBC
Spring的JDBC模块负责数据库资源管理和错误处理,简化了开发人员对数据库的操作。Spring JDBC通过和来配置。针对数据库操作,Spring框架提供了类,它是Spring框架数据抽象层的基础,是Spring JDBC的核心类。提供了访问数据库使用的公共属性,例如Data Source,DataSource主要功能是获取数据库连接,还可以引入对数据库连接的缓冲池和分布式事务的支持;定义了可以使用的操作集合,例如增删改查(CURD)。
2024-04-01 18:43:51
872
原创 SSM学习——Spring AOP与AspectJ
的全称为,即面向切面编程。想象你是汉堡店的厨师,每一份汉堡都有好几层,这每一层都可以视作一个切面。现在有一位顾客想要品尝到不同风味肉馅的汉堡,如果按照传统的方式,你需要做多个汉堡,每个汉堡只有肉馅是不一样的,但是你每做一个汉堡都要重新制作面包。而聪明的厨师只需做一个汉堡,仅将肉饼那一层分成不同口味的几个区域,这样你就不需要再重复制作面包了。对于程序员也是一样的,有多少个接口就要写或复制多少代码那一定是无法忍受的,我们只想关心不同的那部分。
2024-04-01 18:42:58
1006
原创 SSM框架学习——工厂模式、Spring核心容器与Bean
是Java中常用的一种设计模式,这种类型的设计模式属于创建型模式。说白了在代码层面就是取消了new的使用。举个例子,我们去买手机,假设手机品牌有两种,分别是Xphone和Luwei,你显然不用关心手机是怎么生产的,手机零件怎么组装的,这都是工厂干的活。下面我们以这个例子来讲解三种工厂模式。
2024-04-01 18:42:18
883
原创 SSM框架学习——Spring的控制反转IoC与依赖注入DI
提到Spring首先想到的肯定是Spring的IoC容器了。在了解Spring的用法之前我们必须了解什么是和。**控制反转(Inversion of Control)**是面向对象编程中的一种设计原则,它建议将不需要的职责移出类,让类专注于核心职责,从而提供松散耦合,提高优化软件程序设计。简单一点来说,我原来需要一个对象需要自己手动去new,我必须知道哪些类实现了相应的接口,而有了控制反转,我只需要向框架的容器要一个,由它实现装配,对对象组件的控制权也就由代码转移到了外部容器。其中依赖查找又可以分为。
2024-04-01 18:41:29
729
原创 SSM框架学习——了解Spring与Eclipse创建Maven项目
Spirng是分层的JavaSE/EE全栈轻量级开源框架,以和为内核,使用基本的JavaBean来完成EJB的工作。Spring框架采用分层架构,它的一些列功能被分为若干个模块。上图中的红色背景模块为本课程涉及模块。对于上述各个模块的功能,我并不想在此处多写,而是在接下来的代码中来体会。(应该没有人刚开始学就想看这么冗长的文字吧,绝大多数人都是想快速构建项目,那些东西熟悉了再回过头来看)
2024-04-01 18:40:10
901
原创 JavaEE SSM框架学习——MacOS Eclipse环境搭建
Homebrew是一个包管理器,我们可以通过它来安装许多软件首先打开如图所示,复制下面那行命令到你的Macbook终端$(curl-fsSL这个可能会由于网络导致失败,可以替换成以下命令$(curl-fsSL完成后使用以下命令检验是否安装成功如果出现下图则安装成功我在写这篇文章的时候是这个版本,你的版本号可能比我更高,这一般没啥问题。接下来还是因为网络问题我们更换为国内的下载源,同样在终端中执行以下命令git -C "$(--repo然后更换homebrew-bottles让配置文件生效。
2024-04-01 18:38:14
1487
原创 Cisco交换机安全配置
DHCP攻击针对的目标是网络中的DHCP服务器,原理是耗尽DHCP服务器所有的IP地址资源,使其无法正常提供地址分配服务。然后在网络中再架设假冒的DHCP服务器为客户端分发IP地址,从而来实现中间人攻击。DHCP耗竭攻击可以使用端口安全来得到有效地缓解,因为每个发送的DHCP请求消息中使用一个唯一的源MAC地址。但是,缓解 DHCP欺骗攻击需要采取更多保护措施。使用真实的接口 MAC地址作为源以太网地址,在DHCP负载中使用一个不同的以太网地址。
2024-04-01 18:12:41
4170
原创 开放路径最短优先协议OSPF基础
停止Down:OSPF没有与任何路由器交换信息尝试Attempt: 仅存在NMBR环境中初始Init:路由器接收到一个Hello分组后进入该状态双向Two-way:在邻居报文中看到自己的ID后进入该状态准启动Exstart:通过第一次DBD报文来确定邻居间的主从关系交换Exchange:通过DBD交换LSA的头部信息加载Loading:发送LSR和LSU完全邻接Full adjacency:完成了邻接关系的完整建立OSPF状态过渡流程如下图所示。
2024-01-01 19:34:56
1123
原创 扫描转换椭圆与圆的绘制
我们先来设计一种数据类型注意此处的类型为这一点很重要,因为在某些迭代过程中设置为会导致坐标数值不变,然后进入死循环或者绘制不出来。如果需要类型,那么无需担心,到之间会有一个隐式转换,直接将Point类型中属性值赋给对应的变量即可。(如果你想知道哪些情况下使用会无法绘制请参考椭圆部分的DDA算法)在直角坐标系中,圆心在原点上的圆有如下方程:x2+y2=R2x^2+y^2 = R^2x2+y2=R2其中R为圆的半径。若圆心不在原点上,则有更一般形式的方程。假设圆心为(a,b)则圆的方程为:(x−a)
2023-09-27 20:09:07
620
原创 距离矢量路由协议RIP(含Cisco模拟器实验命令配置)
距离矢量路由协议(Routing Information Protocol, RIP)是一种内部网关协议,它位于应用层,使用520 UDP端口。RIP基于距离矢量算法(Bellham-Ford)根据metric来衡量目的地址的距离。
2023-09-26 19:56:01
1980
C++带有模板的结构体指针如何作为函数参数
2021-10-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人