- 博客(90)
- 资源 (3)
- 收藏
- 关注
原创 Boost.Asio 线程模型对比:单 io_context + strand vs 多 io_context + 单线程
少量线程 + 任意多虚拟串行通道”,胜在效率、灵活、API 标准、有 work stealing,输在隔离弱、心智模型重、调度不确定。适合:串行单位多、负载分布动态、追求并发吞吐的系统。典型场景:网络服务器、消息分发层。“线程数 = 关键串行单位数,各自跑各自的”,胜在强隔离、易监控、cache 友好、心智简单,输在没有 work stealing、资源开销大、扩展性差。适合:实时关键路径、负载分布稳定、需要可观测和分级 supervise 的关键服务。
2026-05-18 16:02:47
380
原创 动态规划 (Dynamic Programming) 入门到实战:状态、转移与 C++ 写法
动态规划 = 定义状态 + 写对转移 + 按正确顺序算一遍。与回溯不同:回溯重在「枚举所有解」,DP 重在「重叠子问题 + 最优或计数」。先写出暴力递归,标出参数即状态;再加memo或改成for 循环填表。0-1 背包一维要倒序,完全背包一维常要正序—— 这是面试里极高频的细节。「状态最少需要几个维度才能描述局面?答案往往就是突破口。
2026-05-07 11:16:51
229
原创 std::forward简明
`std::forward` 是 C++11 引入的一个工具,用于在**模板函数**中实现**完美转发(perfect forwarding)**:保持参数的值类别(左值/右值)不变地传递给下一个函数。
2026-04-21 14:25:20
374
原创 现代 C++ 异步编程:从零实现一个高性能 ThreadPool (C++20 深度实践)
实现一个线程池不难,但实现一个既类型安全又内存无忧的线程池需要对 C++ 的底层机制有深刻理解。解决了异质任务的存储问题。解决了异步任务的生命周期问题。解决了线程资源的回收问题。这个短小精悍的实现,正是 C++ 现代化的魅力所在。版权声明:本文采用 CC BY-SA 4.0 协议,转载请注明出处。
2026-04-17 21:47:35
481
原创 Valgrind 报错 “uninitialised value“ 与 std::optional 的隐藏陷阱
在 C++17 项目中,`std::optional` 是一个非常实用的类型,用于表示"值可能不存在"的语义。然而,在使用 Valgrind 进行内存检测时,`std::optional` 可能会触发一个令人困惑的误报:**Conditional jump or move depends on uninitialised value(s)**。
2026-03-24 17:49:31
367
原创 Ollama 本地部署编程大模型 + Zed 编辑器配置指南
隐私顾虑:核心业务逻辑或涉密代码不便上传云端。网络延迟:即时补全对延迟要求极高,网络波动影响体验。成本问题:长期订阅费用是一笔开支。Ollama作为目前最流行的本地大模型运行工具,极大简化了部署流程。配合Zed这款基于 Rust 开发、主打极致性能的编辑器,我们可以在消费级硬件上搭建一套完全免费、离线可用的结对编程环境。通过的组合,我们构建了一个零成本、低延迟、高隐私的本地 AI 编程环境。
2026-02-06 15:59:55
1558
原创 高性能网络编程终极对决:epoll vs IOCP vs io_uring(2026 更新版)
epoll是 Linux 下高性能服务器的标准配置(Nginx, Redis, Node.js)。优势:成熟、稳定、生态极其丰富。它利用红黑树管理连接,利用就绪链表返回事件,解决了轮询的 O(N) 性能问题。劣势:本质上还是Reactor。当数据量极大时,用户态和内核态之间的数据拷贝(read/write)依然占用 CPU 周期。技术的发展是一个轮回。Windows 早就使用的 Proactor 模式,Linux 终于通过 io_uring 追赶了上来,并且用更激进的“共享内存环形队列”实现了超越。
2026-02-05 17:39:33
1115
原创 连接在docker中运行的PostgreSQL数据库
背景描述随着容器化进程的加速,相比于传统虚拟机存在的巨大优势,分布式云计算的兴起,以docker为代表的容器化技术解决方案越来越流行。作为一种不算新兴技术的技术,毕竟docker所用到的技术在早很多年就存在,只是docker的出现让这些技术真正的组合在了一起,并开始发挥效用。docker相比于虚拟机的解决方案使用更少的宿主机资源,可扩展性更加优秀,相比于单独的软件安装,出现的问题更少,更容易部署...
2018-11-23 13:50:37
15333
原创 C++20/23 Ranges:从「迭代器对」到「可组合管道」
是有begin()end()(或满足概念)的对象;在管道里惰性变换;统一用整段序列调用。本文面向已经会写的读者,讲清核心心智模型、常用视图、与算法配合的写法,以及几个真实项目里最容易踩的坑。
2026-05-13 16:51:56
411
原创 std::string vs std::string_view
字符串的所有者:深拷贝、可变、自管理内存、\0结尾。字符串的"借用"视图:浅引用、只读、不管理内存、不保证\0。能用当只读形参,就不要用,这是现代 C++ 最容易拿到的性能红利之一。但绝不是"免费午餐":它是个带指针的借用语义,所有悬空、失效的规则都适用。要写入 / 要持有,用string;只读 / 只看,用。
2026-04-24 03:45:00
351
原创 C++ 内存到底分配在哪?
这是一个看似简单却能把人问倒的问题。很多人会脱口而出"new就是堆、局部变量就是栈",其实远不止这样 —— C++ 里还有。本文按""为主线梳理,这是 C++ 标准真正用的术语。
2026-04-22 11:28:32
367
原创 C++20 Concepts:让模板编程从“黑魔法”走向“契约时代”
C++20 引入的 Concepts(概念) 是模板泛型编程自诞生以来最具革命性的进化。它将模板从“黑魔法”转变为一种类型安全、语义清晰、易于调试的现代化工程工具。
2026-04-03 12:20:24
308
原创 新版本svn使用gpg-agent存储密码
自从开始使用debian11,应该是subversion版本的升级,导致不可以存储明文的密码,导致每次都要输入密码,很恼人。svn会缓冲auth的东西到~/.subversion/auth,为了使用gpg-agent,将老的东西删除。下边可以重新设置参数,当然还有其他参数,设置完成之后要重新启动gpg-agent。当第一次登录svn需要输入密码,之后密码会cache住直到失效,可以更改其配置。新版本的svn默认支持gpg-agent,那么问题演变成配置这个工具。Debian11的svn版本如下。
2023-11-30 10:06:10
1720
1
原创 C++ https server based on boost asio and beast
目前在做的项目需要一个C++版本的https server,只能求助于boost库。幸运的是确实存在。并且提供了协程版本,本着学习的精神拿来改造一下,就获得了如下成果。AsyncHttpServerV2.hpp//// Created by chuanqin on 7/5/21.//#ifndef CBRS_UT_TOOL_ASYNCHTTPSERVERV2_HPP_#define CBRS_UT_TOOL_ASYNCHTTPSERVERV2_HPP_#include <algori
2021-07-07 18:09:30
1142
原创 某读书软件书籍导出想法
读书发现用读书软件很长时间了,这是一个很不错的软件。尤其是腾讯出品,自带社交加成,能方便的知道大家在读什么书。于是,读书开始变得没有那么闭塞,也减少了很多读完一本书之后的慌张。虽然我是程序员。可是,发现最近读的技术书籍反而越来越少,文学乃至小说反而越来越多。或许是职业的缘故,或许是生活节奏的缘故,不管怎么说这算是一个好习惯。有时候一周能读10个小时,不过最近发现能保持一天读一个小时就很不错,尤其是家里还有小孩子。一个想法读书软件既然是+讯的作品,肯定天然就带有腾讯的尿性,要做任务增加免费天数,为了
2021-03-15 17:50:16
714
1
翻译 Boost.Asio翻译
最近在写自己的小应用的时候,开始涉及到boost.asio,之前在项目中也没有系统性的学习过。于是,趁着这个时间好好学习一下。最好的入门资料当然是boost的官方文档,将几篇翻译的文档放在下边。声明,我当然不会投入巨大的精力翻译这样的文档,从某种严格意义上来讲,我是在必应或者谷歌提供的翻译基础上做了一些校对,使句子不那么显得机器。Boost.asio理由(Rationale)大多数程序以...
2020-04-18 21:35:13
492
原创 解决Mac使用wine安装的软件中文显示成方块的问题
毫无疑问Mac的体验相较于Windows有之质的区别。由于,平台的差异导致很多软件不兼容,尤其是使用某个平台的特定API导致很难迁移。Wine这是一个在非Windows平台运行Windows软件成为可能的软件。这是一个开源的软件,在其基础上有很多包装了Wine的软件,比如Crossover,这也是wine官方推荐的,这是收费的。wine好像不翻墙的话,不好下载,附上自己的百度云:链接:ht...
2020-04-11 16:56:00
6409
原创 Pytest debug/C++ debug
Python/C++ debugdebug的方式有很多最简单的方式是打印log,看log,这个的缺点是比较慢,尤其是用加log的方式来缩小怀疑的范围。因为这是一个不断迭代的过程,最主要的原因,一开始不知道代码哪个地方有问题。只能在所有可能有问题的地方加打印log。然后逐步的缩小怀疑范围。下边介绍一种快速的debug方法。UT debug什么是UT一半正儿八经的公司,一定会设计UT,UT是对...
2020-03-16 16:35:44
2075
原创 百度网盘API操作
**前言:**在写自己的公众号杂谈123过程中,本意是使用python爬虫爬取bookset网站的电子书,然后保存在自己的服务器上,然后根据用于的请求,可以予以返回对应的电子书下载,或者用发送邮件的方式直接推送到用户自己的kindle上。问题引入在我的公众号还没有开发完成的情况下,bookset已然不能访问。于是,只能思考其他思路。方案考虑如下几个方案:从其他网站爬取,比如豆瓣。使用...
2019-10-01 18:38:28
5999
1
原创 leveldb中coding源文件的小分析
leveldb中coding源文件的小分析最近在尝试看leveldb的源码,这个是好久之前就选定的作为学习别人代码的一个项目,只是因为各种懒惰,才不得不一次一次的开始和丢下,为了能又一个学习的总结和继续,我打算不定时的做一下愿下的注释和分析。下边这篇文章作为第一篇。项目源码1 代码首先包括两类函数1.1 从数据的存储和获取来分类是如下:1.1.1 put系列void PutFixed...
2019-01-30 13:03:01
395
翻译 leveldb介绍
网上有很多关于leveldb的介绍文章,还不如直接看官方文档,直接上文档,希望自己以后有空翻译成中文版本。leveldbJeff Dean, Sanjay GhemawatThe leveldb library provides a persistent key value store. Keys and values arearbitrary byte arrays. The ke...
2019-01-23 18:00:36
488
转载 32个Python爬虫项目让你一次吃到撑
今天为大家整理了32个Python爬虫项目。整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心。所有链接指向GitHub,祝大家玩的愉快~O(∩_∩)OWechatSogou [1]- 微信公众号爬虫。基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典。DouBanSpider [2]- 豆瓣读书爬虫。可以爬下豆瓣读...
2019-01-04 18:09:29
387
翻译 ZooKeeper: A Distributed Coordination Service for Distributed Applications[中文]
https://zookeeper.apache.org/doc/current/zookeeperOver.html翻译这篇文档。
2019-01-02 16:45:43
386
原创 python发送带有附件的163邮件
问题背景在开发私人公众号,根据开发公众号的初衷,需要实现python脚本下发送带有附件的163邮件,实现Kindle电子书的自动化推送。参考# below original code comes from the link:https://blog.csdn.net/gpf951101/article/details/78909233# great thanks to this great...
2018-12-04 18:07:01
1915
2
原创 WeChat Official Account Development
IntroductionThis is my own Official Account for server side program. which main purpose is to learn how to develop one functional and beautiful official Account which can provide below service in pla...
2018-11-23 13:49:05
2463
原创 C++和boost实现的C/S
C++和boost实现的C/S实现概述Client 代码Server代码编译命令编译client.cpp编译server.cpp运行代码实现概述现在很多的编程语言提供拆开即用的Client/Server的框架代码,比如Java的Netty,用起来超级舒服、简单。python编程语言的更简单,忘记用的什么框架了。最近在C++上工作,想来不如用C++试验一下。代码实现的功能:首先服务器等待客户...
2018-10-25 17:45:06
1469
原创 Docker经常用到的一些命令
docker基本命令 docker run docker run -ti ubuntu bash docker run -ti --name qcq --dns ip ubuntu bash docker run -ti --name qcq --net host --dns ip ubuntu bash docker exec # 执行一个创建出来的容器 docker ...
2018-07-10 10:27:32
324
原创 Python批处理zip压缩文件
问题引入自己家的领导接了一个领导的活,要统计话费账单,话费的记录文件是一个文件夹的zip文件,每一个zip文件对应了一个月的话费,每一个zip文件下是该公司每一个号码的当月通话记录。问题描述数据存储在一个文件夹下文件夹下对应12个月的话费记录,工12个zip文件每一个zip文件,对应了很多压缩了的通话记录文件每一个通话记录文件对应了一个号码的话费 Note: 为了代码...
2018-06-08 09:57:17
1209
翻译 pytest fixtures: explicit, modular, scalable 中文版
随着编程生涯的增长,会越来越发现,基本出现在中文相关资料的相关技术文章,靠谱的太少,老外的相反,真的是有种月亮还是外国的圆的感觉,最近想闲下来事情不多的时候,翻译一些,自己用的到,然后特别有用处的一些技术文章。前边的一篇JAVA NIO是第一篇,这将是第二篇。 python是一门特别容易上手,使用的语言,并且得益于其庞大的第三方库,使其具有其他脚本语言不具有的更多能力。或许这是众多软件使用py...
2018-05-08 09:55:52
730
原创 Java使用Lambda实现字符串出现次数最多的字符查找
问题引入:给定字符串,写代码找出在字符串中出现次数最多的字符,出现次数相等的字符按照字典序输出。问题剖析:考虑错误处理(字符串为空)考虑出现最多次数的字符不是一个,也即存在出现次数相等的字符出现次数相同的字符需要按照字典顺序排序代码剖析:package com.nokia.pats;import com.google.common.base.String...
2018-04-10 18:43:27
2378
翻译 Java new I/O(NIO)--non-blocking I/O初探
这篇博客翻译自如下的链接,如有纰漏还望指正。 non-block IO NIO stands for non-blocking IO, 本文作者习惯使用new 代替non,本文依照原文进行翻译,力图完整。写在开始之前关于本教程NIO接续原始的IO在JDK 1.4版本引入,NIO为标准的Java代码提供高速,面向块的IO操作。通过定义承载数据的类,并且以块的形式处理数据,...
2018-04-04 15:33:31
910
原创 Sublime(mac/windows) with cpplint check——code-style of C++
sublime是一个轻量级的编辑器,是现在使用非常广泛的一个编辑器。可以渲染编辑很多种语言。本博客讲解使用sublime加载cpplint插件,加入代码风格的检查功能。 这篇博客是在同事的onenote的基础上写成的,感谢他。首先安装sublime3sublime跨平台,支持mac和windows,下载相应的版本即可 sublime 安装python2.7这个插件...
2018-04-04 09:44:56
1313
server:client.7z
2020-04-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅