- 博客(8)
- 资源 (2)
- 收藏
- 关注
原创 c++11 那些事 (1)
花褪残红青杏小,燕子飞时,绿水人家绕。枝上柳绵吹又少,天涯何处无芳草。 墙里秋千墙外道,墙外行人,墙里佳人笑。笑渐不闻声渐悄,多情总被无情恼。 ——《蝶恋花 春景》苏轼缘起C++11 为我们带来了很多耳目一新的特性,这些特性能在很大程序上提升我们的开发效率。那么,本系列文章就是介绍C++11 的这些特性的C++ 向来以复杂著称,据说没有人能真正的精通 C++,这就是...
2018-04-02 20:39:21 834
原创 机器学习基础
少年听雨歌楼上。红烛昏罗帐。壮年听雨客舟中。江阔云低、断雁叫西风。 而今听雨僧庐下。鬓已星星也。悲欢离合总无情。一任阶前、点滴到天明。 ——虞美人·听雨 蒋捷缘起机器学习是当前最为热门的话题之一。自动驾驶、神经网络、人工智能等一个个”高大上“ 的词语不禁让我们眼花缭乱。抽丝拔茧后不难发现,这些技术都是与机器学习相关的。实际上,机器学习并不像我们相像中的...
2018-04-02 20:35:58 874
原创 删除正在使用的文件——釜底抽薪?
彩袖殷勤捧玉钟。当年拚却醉颜红。舞低杨柳楼心月,歌尽桃花扇底风。 从别后,忆相逢。几回魂梦与君同。今宵剩把银釭照,犹恐相逢是梦中。缘起预备知识删除正在被读写的文件删除正在运行的可执行文件删除正在使用的动态链接库结语缘起在linux 系统中上线时经常会遇到需要替换原有可执行程序的操作,我通常的做法是:删除原有可执行文件。例如:rm a.out以相同的文件名把新的可执行文件放到原文
2017-03-09 00:36:39 4746 5
原创 文件操作命令 cp、mv、rm 底层原理
文件操作命令 cp、mv、rm 底层原理文件操作命令 cpmvrm 底层原理缘起inode 结构硬链接符号链接unlink 命令rm 命令rename 命令mv 命令cp 命令结语缘起在linux 系统中上线时经常会遇到需要替换原有可执行程序的操作,我通常的做法是:删除原有可执行文件。例如:rm a.out以相同的文件名把新的可执行文件放到原文件的位置:mv b.out
2017-03-06 22:45:41 14783 3
原创 Linux 多线程 ”一写多读” 模式下的无锁设计
缘起双buffer “无锁” 设计指针的切换ptr 竞争条件的解决指针访问丢失延伸结语缘起在linux多线程环境下对同一变量进行读写时,经常会遇到读写的原子性问题,即会出现竞争条件。为了解决多个线程对同一变量访问时的竞争条件问题,操作系统层面提供了锁、信号量、条件变量等几种线程同步机制。如果对变量的每次访问都使用上述机制,由于系统调用会陷入内核空间,需要频繁...
2017-02-13 22:15:25 10057 2
原创 libco协程库上下文切换原理详解
念桥边红药,年年知为谁生 —— 杨州慢 姜夔缘起libco 协程库在单个线程中实现了多个协程的创建和切换。按照我们通常的编程思路,单个线程中的程序执行流程通常是顺序的,调用函数同样也是 “调用——返回”,每次都是从函数的入口处开始执行。而libco 中的协程却实现了函数执行到一半时,切出此协程,之后可以回到函数切出的位置继续执行,即函数的执行可以被“拦腰斩断”,这种在函数任
2017-06-15 14:31:36 11609 2
原创 x86-64 下函数调用及栈帧原理
一蓑一笠一扁舟,一丈丝纶一寸钩。 一曲高歌一樽酒,一人独钓一江秋。 ——题秋江独钓图缘起在 C/C++ 程序中,函数调用是十分常见的操作。那么,这一操作的底层原理是怎样的?编译器帮我们做了哪些操作?CPU 中各寄存器及内存堆栈在函数调用时是如何被使用的?栈帧的创建和恢复是如何完成的?针对上述问题,本本文进行了探索和研究。通用寄存器使用惯例函数调用时,在硬件层面我们
2017-06-10 19:06:32 12541 6
原创 被遗忘的桃源——flock 文件锁
缘起文件锁 flock共享锁与排他锁阻塞与非阻塞flock 实现细节调用dup forkexecve 时的文件锁使用 dup 复制文件描述符通过 fork 产生子进程子进程重复加锁execve 函数族中的文件锁文件锁的解除用 LOCK_UN 解锁关闭文件时自动解解锁常规使用示例flock 命令结语缘起在后台开发中,随着多线程应用日益增多,人们对多进程的关注也在逐渐减弱
2017-01-18 23:00:26 5404 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人