avatar
文章
79
标签
79
分类
27
Home
File
Label
Classification
List
  • Music
  • Movie
  • Picture
Message board
Link
About
JasmineRain's blog
搜索
Home
File
Label
Classification
List
  • Music
  • Movie
  • Picture
Message board
Link
About

JasmineRain's blog

多线程
发表于2025-11-03|多线程|多线程
概要线程:进程内的执行单元,拥有自己的栈、寄存器、程序计数器,但与同一进程的其他线程共享地址空间 目的:并发执行以提高吞吐、利用多核、改善响应性、表达并发逻辑。 线程实现层次内核线程:由OS内核调度。线程创建/切换开销大,但能利用多核。 用户级线程:由用户态库调度,切换快但不能利用多个CPU(除非映射到内核线程)。 混合模型:库把用户线程映射到多个内核线程。 线程生命周期创建、可运行、运行、阻塞/等待、终止 主要同步原语(及用途)互斥锁(Mutex/Lock):保护临界区,确保同时只有一个线程访问共享资源 自旋锁(Spinlock):短期等待适用,忙等而不阻塞内核调度 读写锁(RWLock):允许多个读者并行、写者独占。适合读多写少的场景 信号量(Semaphore):计数资源控制 条件变量(Condition Variable):线程A等待某条件,线程B改变条件并通知 屏障(Barrier):多线程在屏障处同步,全部到达后继续 原子操作(Atomic):无需锁的原子读写/更新 内存栅栏/屏障(Memory Barrier):强制...
LeetCode Question Solve Trip
发表于2025-10-28|Algorithm|Algorithm
1.Two SumDescription of the problem 双循环遍历 时间复杂度:O(n2)O(n^2)O(n2) 空间复杂度:O(1)O(1)O(1) 12345678910111213141516class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int>ans; for(int i=0;i<nums.size()-1;i++){ for(int j=i+1;j<nums.size();j++){ if(nums[i]+nums[j]==target){ ans.push_back(i); ans.push_back(j); break; ...
Go常见函数
发表于2025-10-20|Go
删除字符串首尾所有的空白字符(包括空格、制表符、换行符) strings.TrimSpace(s) 12345678910111213package mainimport ( "fmt" "strings")func main() { s := "Hello World " // 末尾有空格 result := strings.TrimSpace(s) fmt.Printf("[%s]\n", result)} 删除字符串右边的空格 strings.TrimRight(s,” “) 1234s := " Hello World "res := strings.TrimRight(s, " ")fmt.Printf("[%s]\n", res) 删除字符串开头的空格 strings.TrimLeft(s,” “) 1234s := " Hello Wo...
Go命令行操作
发表于2025-10-20|Go
123456789101112131415161718192021222324252627282930313233343536373839404142434445go version//检查Go是否安装go env//查看环境配置mkdir myapp//新建文件夹cd myappgo mod init myapp//初始化模块go list -m all//查看依赖go get -u github.com/gin-gonic/gin//更新依赖go run main.go//运行程序go build//生成可执行文件go build -o server.exe main.go//编译并指定输出文件名server.exe//执行二进制文件(Windows)go list//查看当前包依赖go mod tidy//下载依赖包go test//测试go test -v//带详细输出的测试go doc fmt//查看包文档go doc fmt.Println//查看函数文档go get <pkg>//下载依赖包go install//编译并安装包到GOBINgo clean...
TCP中何时会出现RST(reset)报文?
发表于2025-10-10|计算机网络•八股
什么是TCP RST报文?RST报文段是TCP协议中的一个控制标志位,代表: 连接出现异常,立即中断当前连接 也就是说,RST=强制断开连接它不经过四次挥手,而是直接告诉对方:别再发了,这个连接无效 RST报文是TCP协议中用来终止一个连接的报文。当一个TCP连接出现异常时,比如主机崩溃、网络中断、连接超时等,TCP会向另一端发送一个RST报文来终止连接。 RST报文的常见触发时机我们可以分为三大类:无效连接、异常关闭、应用层拒绝 对方不存在的连接场景:收到非预期的TCP报文 服务器端口没在监听(没有listen()) 客户端乱发了一个SYN以外的数据包 收到数据的连接在本地不存在(比如已经被关闭) 常见原因: 程序没启动,端口没监听 应用崩溃,socket已释放 收到过期的包(老连接的残余包) 非正常关闭连接时场景:进程提前关闭socket,但仍有数据到达 应用层超时关闭,但对方还在发包 系统异常断开连接(如kill进程) 应用层主动拒绝连接(listen拒绝)场景:服务器正在运行,但明确拒绝连接 例如: 防火墙策略拒绝某个源IP 内核backlog...
两个进程间需要交换大量数据时,有哪些合适的进程间通信手段?
发表于2025-09-25|操作系统|八股•c++
共享内存(首选)两个进程通过mmap、shmget/shmat或POSIXshm_open共享一块物理内存。常用于数据库缓冲区、视频播放器编解码和渲染器之间。 优点: 直接在同一块内存区读写,不需要内核反复拷贝,最快。 特别适合大文件传输、大矩阵/图像/音视频流 缺点: 需要额外同步机制(信号量/互斥锁/自旋锁)来保证读写有序 内存映射文件两个进程通过mmap将同一文件映射到自己的虚拟地址空间。常用于日志文件共享、大规模只读数据加载 优点: 适合大文件共享,只在缺页时才加载,减少不必要的拷贝 在文件系统支持下可实现持久化 缺点: 需要磁盘I/O(虽然有页缓存优化) 管道数据通过内核缓冲区传输,单向流式通信。常用于命令行进程链ls | grep | sort 优点: 简单,使用方便 缺点: 内核态到用户态有拷贝,效率远低于共享内存 缓冲区有限,不适合超大数据 嵌套字(Socket,本地Unix Domain Socket)两个进程通过socketpair或AF_UNIX通信。常用于Nginx、数据库客户端与服...
质数查找算法
发表于2025-09-23|algorithm|质数
朴素判断查找。。。略 埃拉托斯特尼筛法(埃式筛,Sieve of Eratosthenes)核心思想从小到大标记合数,未被标记的就是质数 实现竞赛常用范围n<=1e7 123456789101112131415161718192021const int N=1e7;bool isPrime[N+1];vector<int>primes;void sieve(int n){ fill(isPrime,isPrime+n+1,true); isPrime[0]=isPrime[1]=false; for(int i=2;i*i<=n;++i){ if(isPrime[i]){ for(int j=i*i;j<=n;j+=i){ isPrime[j]=false; } } } for(int i=2;i<=n;++i){ if(...
位运算
发表于2025-09-23|algorithm|位运算
常见用途 用整型得每一位表示集合/状态(状态压缩/子集枚举) 用异或解决[成对出现]类问题、前缀异或或计数子数组异或 用lowbit在树状数组、枚举子集优化中快速操作 用bitset做超快的背包/集合操作,常把o(n*S /word)变成非常快的位并行 用位技巧做常数优化、逻辑判断(奇偶、是否是2的幂等) tips12345678// 记得:对于超过 31 位的位运算用 1LL 或 1ULLint test = (mask & (1 << k)); // 测试第 k 位 (0-indexed)mask |= (1 << k); // 将第 k 位置 1mask &= ~(1 << k); // 将第 k 位清 0mask ^= (1 << k); // 切换(toggle)第 k 位int lowbit = mask & -mask; // 取最低位 1(lowbit),m...
排序算法有哪些,哪些是稳定的排序算法
发表于2025-09-15|排序|go•c++•sort•java
常见排序算法及稳定性 排序算法 平均时间复杂度 最坏情况 稳定性 适用场景 冒泡排序 O(n2)O(n^2)O(n2) O(n2)O(n^2)O(n2) 稳定 小数据量,教学 选择排序 O(n2)O(n^2)O(n2) O(n2)O(n^2)O(n2) 不稳定 小数据量 插入排序 O(n2)O(n^2)O(n2) O(n2)O(n^2)O(n2) 稳定 小数据量,几乎有序 希尔排序 O(nlognO(n lognO(nlogn~n2)n^2)n2) O(n2)O(n^2)O(n2) 不稳定 中小规模数据 归并排序 O(nlogn)O(n logn)O(nlogn) O(nlogn)O(n logn)O(nlogn) 稳定 大数据量,链表排序 快速排序 O(nlogn)O(n logn)O(nlogn) O(n2)O(n^2)O(n2) 不稳定 大数据量,数组排序 堆排序 O(nlogn)O(n logn)O(nlogn) O(nlogn)O(n logn)O(nlogn) 不稳定 大数据量,数组排序 计数排序 O(n+k)O(n+k)O(n+...
红黑树与AVL树的区别
发表于2025-09-15|Java|红黑树•AVL树
定义 定义 平衡方法 AVL树 一种严格自平衡二叉搜索树(BST) 节点的左右子树高度差<=1 红黑树 一种弱平衡的自平衡BST 节点染色(红/黑),保证从根到叶子每条路径黑色节点数量相同,并不严格要求高度差<=1 平衡策略 AVL树 高度严格平衡 插入/删除节点后,如果高度差>1,需要通过单旋转或双旋转来恢复平衡 优点:查找/删除效率非常高,平均复杂度O(logn) 红黑树 高度弱平衡(通过颜色约束维持) 每条从根到叶子的路径黑色节点数相同(黑高相等),并不能有两个连续红色节点 插入/删除时通过变色+左右旋转调整 优点:插入/删除效率较稳定,旋转次数少 性能对比 性能指标 AVL树 红黑树 查找 高速,平均O(logn),比红黑树略快 较快,O(logn),查找略慢于AVL树 插入/删除 平衡严格,旋转次数多->相对慢 平衡较松,旋转次数少->插入/删除快 空间开销 每个节点存储高度信息 每个节点存储颜色信息...
1…5678
avatar
JasmineRain
Better Call JasmineRain
文章
79
标签
79
分类
27
Follow Me
公告
Welcome to my Blog
最新文章
Cookie和Session的区别2026-01-13
HTTP和HTTPS的区别2026-01-13
乐观锁和悲观锁2026-01-12
HTTP状态码2026-01-12
python中的深拷贝和浅拷贝2026-01-12
分类
  • Algorithm3
  • DataStruct2
  • Go3
  • Java2
  • Linux1
  • MySQL2
  • Redis2
  • SQL2
标签
Merge sort 红黑树 突变测试 MySQL 位运算 网络安全 ssl 白盒测试 tls 马原 契约测试 测试类型 数据库 压力测试 黑盒测试 数字图像处理 锁机制 LRU 计算机网络 JUnit https 网络协议 JaCoCo DomReady 并发 99分位响应时间 质数 多线程 指针和引用 八股 计网 测试 冒烟测试 Array 浸泡测试 java python go 健全性测试 拷贝
归档
  • 一月 2026 6
  • 十二月 2025 8
  • 十一月 2025 37
  • 十月 2025 4
  • 九月 2025 16
  • 八月 2025 8
网站信息
文章数目 :
79
本站总字数 :
86.2k
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By JasmineRain框架 Hexo 7.3.0|主题 Butterfly 5.4.3
搜索
数据加载中