- 博客(243)
- 收藏
- 关注
原创 java HashMap,高效 &哈希
当进行扩容时,容量 n 变为原来的 2 倍,新的索引计算方式变为 (2n - 1) & hash。扩容后只多一个 1 位。
2025-05-01 20:12:47
301
原创 看一看 中间件Middleware
中间件(Middleware)是介于操作系统与应用程序之间的一层软件它为分布式应用程序提供了统一的通信、数据交换、服务调用、消息传递等能力。它的作用就像“胶水”,连接各个系统组件。
2025-04-24 13:52:58
1099
原创 HTTP HTTPS RSA
用摘要算法(哈希函数)来计算出内容的哈希值对方也对内容计算,比较两个哈希值。通过「私钥加密,公钥解密」的方式,保证消息不会被冒充(但是公钥仍可能是中间人冒充的 —— 中间人攻击!
2025-04-15 13:04:43
909
原创 中文编码,GB系列,UTF
UTF-8:全球使用最广泛的编码方式,支持所有语言字符,兼容ASCII。中文在UTF-8中通常用3个字节表示一个汉字。UTF-16:每个字符使用2个字节(或者4个字节)表示,空间效率高但不兼容ASCII。UTF-32:每个字符固定使用4个字节,使用简单但空间占用大。一个字节,但其实只用了一半: 128个字符。和ASCII是兼容的。
2025-04-13 19:39:52
238
原创 【c++比较器】 priority_queue初始化设置比较器 ; unordered_map 自定义哈希函数
往往算法可能需要自定义比较逻辑(如 dijkstra需要比较对应路径的长度)重写方法:注意都是子节点跟父节点比(堆一般是二叉树)template<class T,这里的 Compare 是一个类型(class),而模板本来也是类型STL是这样使用他的// 默认构造一个比较器对象if (comp(a, b)) { ... } // 用这个对象来比较像 std::pair<int, int> 这样的类型标准库没有默认的 std::hash 特化,因此需要自己提供一个哈希函数。
2025-04-10 00:00:08
487
原创 c++11新特性
类内成员初始值“委托构造函数”:允许一个构造函数在其初始化列表中调用同类中的另一个构造函数int x = 0;// 成员初始化MyClass() : MyClass(42) {} // 委托构造函数。
2025-04-08 20:28:58
1007
原创 c编译和c++编译有什么区别?
Z 是 GCC 名称修饰的前缀,3 表示函数名的长度,foo 是函数名,i 表示一个 int 类型的参数。关闭 C++ 的 name mangling,让编译器用 C 的方式处理符号名。iostream 类型安全,重载 <<, >> 运算符,无需格式字符串.C++ 程序除了链接 C 标准库外,还需要链接到 C++ 标准库。C++更严格, 不允许隐式把 void* 转成 int*尽管是运行时多态,也需要编译时生成 虚函数表和指针。C++ 支持多个同名函数(参数不同),这是。编译的符号名需要进行。
2025-04-08 18:22:41
229
原创 io_uring 异步 socket 编程
(仅通过完成队列项中的结果信息(如 cqe->res)可能无法明确这个请求对应的具体上下文;标记一个完成队列项已经被应用程序处理,允许内核回收该 CQE 所占用的资源。网络IO时,数据拷贝并不是CPU在工作,所以我们可以不阻塞recv。对于提交队列,我们想三次握手和接收数据,都要提交信息给 提交队列。获取到这个关联的信息,从而知道该请求信息(自己设计结构体)。编程中往往是去获取 entry ,即sqe和cqe。首先定义 io_uring,之后都通过其交互。两个队列位于用户态和内核态之间的共享内存区域。
2025-04-06 15:30:56
435
原创 中间人攻击,证书
不过中间人可以“偷梁换柱”,给客户端自己的私钥,自己给服务器数据时,再用服务器的公钥。服务器提供公钥,通过非对称加密的方式,加密后的内容就只有自己可以看到了。CA机构对证书明文数据进行hash,对hash后的值用私钥加密,得到。通过对证书内容进行计算,若结果为校验和,说明证书有效,没有被篡改。证书中有证书持有者信息,服务器的IP、公钥等,和一个校验和。主流浏览器/操作系统预装全球可信CA的公钥,形成信任锚点。客户端访问服务器,会先请求服务器的证书。CA机构拥有非对称加密的私钥和公钥。
2025-04-02 17:01:03
198
原创 MySQL 进阶 面经级
会用数据库,找大厂工作是远远不够的。本人2025美团暑期AI面试好几个MySQL场景问题不会答,已脏面评。遂在此整理学习!
2025-04-02 00:06:32
390
原创 protobuf编码官方文档 部分摘取翻译
读文档可知,序列化后不保存字段名 key ,解析方也必须有对应 protoc 协议才能知道字段名。易知该序列化后大小小。以及无符号整数,通过编码舍去前导0,数字占的空间就小了,如 1 本身就只需要 8个比特位,而非 int 4个比特位。
2025-04-01 19:23:22
931
原创 协程 Coroutine;Awaiter
通俗地说,cpp协程就是我函数执行一半我不执行了,一会谁觉得可以执行,就由谁接着执行如果你在做异步编程(如网络 I/O、文件 I/O),用 co_await如果你在实现生成器(如迭代器、流式数据处理),用 co_yield
2025-03-30 21:39:53
1110
原创 【RTTI】 Run-Time Type Information
当 dynamic_cast 进行向下转型(基类→派生类)或 横向转型(多重继承中的基类间转换)时,它必须检查当前对象的基类是否与目标类型匹配。指针调整:若目标类型是实际对象的其他基类(非源类型所在分支),dynamic_cast 会根据 RTTI 中存储的偏移信息调整指针,指向正确的子对象。如果类有虚函数,编译器会在内存中为每个多态类型(包含虚函数的类)生成一个 虚表,RTTI 信息通常存储在这个虚表中。在 C++ 中,只有虚函数才会生成 RTTI 信息,因为虚函数机制提供了运行时的多态支持。
2025-03-28 20:02:05
829
原创 const 底层 , 顶层/底层 const
如果 const 变量是全局/静态变量,且未涉及指针,编译器可能会将其存入 .rodata 段,禁止修改。Top-level const 顶层const, 顶层 const 直接作用于变量本身.。Low-level const 底层const: 底层 const 作用于指针指向的对象或引用。编译器会进行 const 类型检查,若有修改const变量,编译错误。顶层 + 底层 const,p3 既不能修改指向,也不能修改值。顶层 const ,p2 不能被修改,但可以修改其指向的值。
2025-03-28 14:45:32
417
原创 文件描述符,它在哪里存的,exec()后还存在吗
学过计系肯定了解 寄存器、程序计数器、堆栈这些 程序运行需要的资源。这些是。而操作系统分配一个进程资源时,分配的是。所以进程控制块还维护其他资源——程序与外部交互的资源——文件、管道、套接字。
2025-03-26 23:30:11
441
原创 SZU软件工程大学生涯 2022~2026
暑假开始搭CentOS环境,简单复习。以及MySQL数据库的学习。寒假第一次面试,背八股,写了写项目。寒假算法跟训,CF初上1200。Linux系统编程,数据结构。暑假开始入门CentOS。初来乍到,学习c语言。
2025-03-21 16:08:23
360
原创 MVCC,MySQL中常见的锁
MVCC是一种用于数据库管理系统中实现并发控制的技术,它允许在同一时间对数据进行多个事务的读写操作,同时保证数据的一致性和隔离性。假设没有意向锁,当一个事务想要对整个表加表级别的排他锁时,数据库需要逐行检查表中的每一行数据是否已经被其他事务加了行级锁。当一个事务执行写操作时,它会创建一个新的数据行版本,并将其版本号设置为当前系统的最大版本号加 1。同时,旧的数据行版本仍然保留,以便其他事务可以读取。当一个事务执行读操作时,它会根据自身的事务版本号和数据行的版本号来判断应该读取哪个版本的数据。
2025-02-28 15:17:01
1124
原创 [GitHub]SSH连接:ssh_exchange_identification: read: Connection reset by peer fatal: Could not read from
加个配置文件就好了,对于这个问题:[root@CentOS ABC]# git pushssh_exchange_identification: read: Connection reset by peerfatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.
2025-01-27 01:59:43
385
原创 C/CC 不定参函数
vasprintf 是 POSIX 标准的一部分,并不是 C 标准库的一部分,因此它在某些平台上可能不可用。它类似于 sprintf,但不同之处在于它使用了 va_list 来处理变长参数,并且它会自动为格式化后的字符串分配足够的内存。stdarg.h 是 C 语言标准库中的一个头文件,用于处理变长参数(variable arguments)。第二个参数是函数的最后一个已知的命名参数。访问变长参数中的每一个参数,需要指定要访问的参数类型。返回的是参数包中包含的元素的数量,即参数个数。
2025-01-13 00:47:41
844
原创 GoF设计模式——结构型设计模式分析与应用
适配器模式:解决不兼容接口的适配问题。桥接模式:解耦抽象与实现,增加系统的可扩展性。组合模式:通过树形结构统一处理单一对象与组合对象。装饰器模式:动态地在运行时为对象添加功能,增加系统的灵活性。外观模式:简化客户端接口,降低系统的耦合度。享元模式:优化内存和性能,适合大量相似对象的场景。代理模式:控制对象的访问,增强目标对象的功能,同时保持目标对象的独立性。这些模式的优点使它们在面对特定问题时成为非常有力的工具,能有效提升代码的可扩展性、灵活性和可维护性。
2024-11-23 16:43:36
1041
原创 Educational Codeforces Round 170 (Rated for Div. 2)D. Attribute Checks 【dp + 差分】
分析可知操作是 DP 和 提升值。而DP部分 5000^2 时间复杂度可接受;而提升值部分 是区间操作,可以优化
2024-10-28 22:37:29
729
原创 用python代码执行civitai上的模型safetensors来在本地文生图
(也算下载SD模型避雷指南,官网:https://stability.ai/)试图在3050N卡、12G显存、16G内存上跑 stable-diffusion-3.5-large 模型,结果还没load到模型,内存不足而崩溃了。(我也崩溃了)而且从HF下载用了还占了很多内存,很多流量和时间。注意下载下运行时还会下东西(下图右边的),输入Token前,改HF_HOME,不然全装C盘了而之前用过 webUI ,可以跑一些小的模型。从而做一些开发。
2024-10-27 19:40:11
828
2
原创 【计算机图形学】 a.世界坐标系 - > 相机坐标系 b.正交投影和透视投影 c.视椎体
1.标架的变换 - 世界坐标系 - > 相机坐标系2. 正交投影 透视投影 视椎体 的学习理解
2024-10-26 00:02:04
829
原创 MySQL 使用C语言链接
mysql_get_client_info() ; msql_real_connect() ; mysql_query() ; mysql_store_result() ; mysql_num_rows() ; mysql_num_fields() ; mysql_fetch_fields() ; mysql_fetch_fields() ; mysql_close()
2024-09-02 13:43:09
2074
空空如也
样例从记事本复制到cmd没换行咋办
2022-12-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人