avatar
Articles
65
Tags
48
Categories
17

梦之痕

梦之痕

Java--进阶篇
Created2023-12-29|Java & Lua
1 注解(Annotation)1.1 注解概述注解(Annotation)是从JDK5.0开始引入,以“@注解名”在代码中存在。例如: 123@Override@Deprecated@SuppressWarnings(value=”unchecked”) Annotation 可以像修饰符一样被使用,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量的声明。还可以添加一些参数值,这些信息被保存在 Annotation 的 “name=value” 对中。 注解可以在类编译、运行时进行加载,体现不同的功能。 未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,Struts2有一部分也是基于注解的了。注解是一种趋势,一定程度上可以说:框架 = 注解 + 反射 + 设计模式。 1.2 常见的Annotation的作用1.2.1 生成文档相关的注解1234567@author 标明开发该类模块的作者,多个作者之间使用,分割@version 标明该类模块的版本@see 参考转向,也就是相关主题@ ...
Java--基础篇
Created2023-12-22|Java & Lua
0 参考资料 JAVA各版本安装包下载路径:https://www.injdk.cn/?spm=a2c6h.12873639.article-detail.22.b53720bdMO7XUf 依赖包网站:https://mvnrepository.com/ 1 编程基础1.1 Main方法 class 在Java语言中的一等公民,Java程序就是一个一个的类组成的类由修饰符,类名和类的内容组成类名必须与保存类源文件的文件名相同 main方法 Main方法是Java程序执行的入口方法由方法修饰符,方法名,参数列表和方法体等组成 1.2 基本数据类型 整数类型 byte 占用1个 byte,值域是 -128 ~ 127 short 占用2个 byte,值域是-32768~ 32767 int占用4个 byte,值域是 -2147483648 ~ 2147483647。Java 中整数缺省是 int 类型 long 占用8个 byte,值域是-9223372036854774808 ~ 9223372036854774807 浮点类型 float-有精度,值域复杂 340 ...
基于 Tongsuo(铜锁)实现国密通信
Created2023-12-14|信息安全
1 Tongsuo(铜锁)的编译12345git clone https://github.com/Tongsuo-Project/Tongsuo.gitcd Tongsuo./config --prefix=/opt/tongsuo enable-ntls no-sharedmake -jsudo make install 2 生成服务端测试证书 生成一个 EC 密钥对(私钥和公钥),使用 SM2 曲线参数,保存私钥为 server_sign.key 文件: 1openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:sm2 -out server_sign.key 使用私钥生成一个证书签名请求(CSR),并将其保存为 server_sign.csr 文件。该请求使用 SM3 散列算法,并且采用给定的主题信息: 1openssl req -config $CONF_DIR/subca.cnf -key server_sign.key -new -out server_sign.csr -sm3 -nodes -subj ...
国密介绍
Created2023-12-11|信息安全
1 简介铜锁/Tongsuo是一个提供现代密码学算法和安全通信协议的开源基础密码库,为存储、网络、密钥管理、隐私计算等诸多业务场景提供底层的密码学基础能力,实现数据在传输、使用、存储等过程中的私密性、完整性和可认证性,为数据生命周期中的隐私和安全提供保护能力。 铜锁应用场景: 存储加密 网络传输:支持 TLS 、QUIC 、RFC8998、TLCP安全传输协议 密码合规 密钥管理 隐私计算:支持同态加密、零知识证明等算法 铜锁与OpenSSL对比: 2 国密算法介绍国密常见的算法有 SM2 、SM3、SM4、SM9,具体分类如下: 对称加密算法: SM1算法:对称加密算法,用于替代国际标准的DES算法。 SM4算法:对称分组密码算法,被用于替代国际标准的AES算法。 非对称加密算法: SM2算法:非对称加密算法,用于数字签名、密钥协商等。 SM9算法:基于椭圆曲线密码体制的身份认证密码学算法。 哈希算法: SM3算法:密码哈希函数,用于替代MD5、SHA-1等哈希算法。 2.1 SM4 算法2.1.1 简介SM4是对称算法,与国际上的算法 如:AES 对 ...
Nginx支持国密实践
Created2023-12-03|信息安全
1 简介我国密码行业中有两个主要的通信协议相关的技术标准: 《信息安全技术 传输层密码协议(TLCP)》:即GB/T 38636-2020 《SSL VPN 技术规范》:即GM/T 0024-2014 上述协议关联标准:如数字证书标准GB/T 20518, SM2密码算法标准GB/T 35275等 《SSL VPN技术规范》作为行业标准,部分内容已上升为《信息安全技术 传输层密码协议(TLCP)》国密标准。 国密TLS,又称GMTLS1.1,GMTLS1.1中的1.1代表国密TLS的版本号: _0x0101_。众所周知,目前TLS协议支持的版本: 1234VersionTLS10 = 0x0301VersionTLS11 = 0x0302VersionTLS12 = 0x0303VersionTLS13 = 0x0304 目前主流的TLS软件程序实现中,通信实体在建立TLS连接时,会优先协商使用最大版本号TLS协议 _(版本号越大意味着安全性越高、性能越好)_,因此VersionGMSSL = 0x0101 版本号的设定增加了软件支持的复杂度,这也是阻碍GMTLS1.1广泛应 ...
OpenResty 性能优化
Created2023-11-21|后端&架构
1 性能下降10倍的真凶:阻塞函数OpenResty 之所以可以保持很高的性能,简单来说,是因为它借用了 Nginx 的事件处理和 Lua 的协程机制,所以: 在遇到网络 I/O 等需要等待返回才能继续的操作时,就会先调用 Lua 协程的 yield 把自己挂起,然后在 Nginx 中注册回调; 在 I/O 操作完成(也可能是超时或者出错)后,由 Nginx 回调 resume,来唤醒 Lua 协程。 这样的流程,保证了 OpenResty 可以一直高效地使用 CPU 资源,来处理所有的请求。在这个处理流程中,如果没有使用 cosocket 这种非阻塞的方式,而是用阻塞的函数来处理 I/O,那么 LuaJIT 就不会把控制权交给 Nginx 的事件循环。这就会导致,其他的请求要一直排队等待阻塞的事件处理完,才会得到响应。 下面,我再来介绍几个常见的坑,也就是一些经常会被误用的阻塞函数; 1.1 执行外部命令在业务中通常可以执行一些外部的命令和工具,来辅助完成一些操作。比如杀掉某个进程: 1os.execute("kill -HUP " ...
OpenResty API篇
Created2023-11-21|后端&架构
2 OpenResty开发平台2.1.1 协程和事件驱动在 OpenResty 层面,Lua 的协程会与 NGINX 的事件机制相互配合。如果 Lua 代码中出现类似查询 MySQL 数据库这样的 I/O 操作,就会先调用 Lua 协程的 yield 把自己挂起,然后在 NGINX 中注册回调;在 I/O 操作完成(也可能是超时或者出错)后,再由 NGINX 回调 resume 来唤醒 Lua 协程。这样就完成了 Lua 协程和 NGINX 事件驱动的配合,避免在 Lua 代码中写回调。我们可以来看下面这张图,描述了这整个流程。其中,lua_yield 和 lua_resume 都属于 Lua 提供的 lua_CFunction。 下面是 ngx.sleep 的一段源码,可以帮你更清晰理解这一点。 这段代码位于 ngx_http_lua_sleep.c 中,你可以在 lua-nginx-module 项目的 src 目录中找到它。在ngx_http_lua_sleep.c 中,我们可以看到 sleep 函数的具体实现。你需要先通过 C 函数 ngx_http_lua ...
OpenResty 基础篇
Created2023-11-21|后端&架构
0 参考资料 nginx-lua-module 中文版 nginx-lua-module 原版 API网关: KONG基于nginx+OpenResty Envoy APISIX 0.1 课程目录 1 入门篇1.1 初探OpenRestyOpenResty的三大特性: 详尽的文档和测试用例 同步非阻塞 动态 传统的Web服务器,比如NGINX,如果发生任何的变动,都需要去修改磁盘上的配置文件,然后重新加载才能生效,这是因为没有提供API,来控制运行时的行为。但OpenResty可以使用脚本语言lua来控制逻辑的,动态时Lua天生的优势。 1.2 第一个程序 下边通过使用Lua语言,使用OpenResty启动服务,然后响应打印出“hello world” 安装OpenResty 可以取官网下载源码进行编译安装(enter link description here) 2. 创建工作目录 创建工作目录,然后目录下创建日志和配置文件保存地方 123mkdir geektimecd geektimemkdir logs/ conf/ 编写nginx.conf 下边编写一个 ...
Go--基础篇
Created2023-11-20|Go & Python
0 参考资料GO开源项目收集:https://github.com/avelino/awesome-go 01 第一章 Go语言简介1.1 工作区和GOPATH工作区是放置Go源码文件的目录工作区下边有pkg、src、bin三个目录 pkg目录 用于存放归档文件(名称以.a为后缀的文件),所有归档文件都会被存放到该目录下的平台相关目录中,同样以代码包为组织形式 bin目录 用于存放当前工作区中的Go程序的可执行文件 当环境变量GOBIN已有效设置时,该目录会变的无意义 当GOPATH的值中包含多个工作区的路径时,必须设置GOBIN,否则无法成功安装Go程序的可执行文件 1.2 代码包的导入 本地化导入 123import . "strings"HasPrefix("abc", "a") //导入后使用函数不需要加包名 1.3 包管理1.3.1 Go的依赖管理 1.3.2 go mod12345678go mod init mod名称go build 源码文件go mod download 下载依赖包go mod ...
Python--常用工具包
Created2023-11-16|Go & Python
0 参考资料 Pandas中文文档 NumPy中文文档 1 Pandas 数据处理1.1 Pandas 数据结构 - SeriesPandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。 Series 由索引(index)和列组成,函数如下: 1pandas.Series( data, index, dtype, name, copy) 参数说明: data:一组数据(ndarray 类型)。 index:数据索引标签,如果不指定,默认从 0 开始。 dtype:数据类型,默认会自己判断。 name:设置名称。 copy:拷贝数据,默认为 False。 示例: 1234567891011121314151617181920212223242526272829# 从列表创建Series pd.Series(['a', 'b', 'c']) # 0 a # 1 b # 2 c # dtype: object # 自动创建索引 # 通过字典创建 ...
1…567
avatar
梦之痕
Articles
65
Tags
48
Categories
17
Follow Me
Announcement
个人笔记迁移中ing....
Recent Post
eBPF核心技术与实战2025-07-25
10 - 大模型RAG进阶实战营2025-05-28
大模型 RAG 的应用和开发2025-04-29
06 - WASM 插件开发2025-02-12
记录访问 HTTPS 网站报错问题2024-09-28
Categories
  • AI大模型2
  • Go & Python6
  • Java & Lua7
  • Linux 内核1
  • 人工智能&大数据4
  • 信息安全3
  • 后端&架构8
  • 工具使用3
Tags
MySQL 云原生 系统优化 系统架构设计师 Maven 杂文 Git 深度学习 程序设计 算法 Flink 设计模式 HTTP3 HTTP2 Tongsuo ebpf OpenResty wasm 大模型微调 流量控制 Nginx 国密 Istio Linux内核 LVS 算法题解 数据库 Kubernetes 微服务架构 DPDK Calico LangChain Redis 铜锁 TLCP Java Python RAG Helm VPP
Archives
  • July 20251
  • May 20251
  • April 20251
  • February 20251
  • September 20242
  • August 20244
  • July 20244
  • June 20244
Info
Article :
65
UV :
PV :
Last Update :
©2020 - 2025 By 梦之痕
Framework Hexo|Theme Butterfly