自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

左雪菲的专栏

微信公众号:高性能服务器开发,分享超级编程技术干货。

  • 博客(297)
  • 资源 (20)
  • 收藏
  • 关注

原创 我的新书《C++服务器开发精髓》终于出版啦

一、千呼万唤始出来亲爱的各位读者,我的新书《C++ 服务器开发精髓》终于终于终于与大家见面了,图书如下:图书的封面设计很精美,当然内容一定不负众望。因出版社老师要求提供一张照片放到封面上,今年的6 月 1日儿童节去拍了一张,照片拍出来放在下面大家自己看吧。人到中年,生活不易,没有少年时代那种懵懂与青涩,多了一份厚实与坚定了。一些想做的事情却一步步把它做成了,成为现实。昔日戏言身后事,明朝都到眼前来。所以,梦想还是要有的,还是要坚持的,即使这世界有那么多不完善,生活有那么多不如意,因为万一..

2021-06-25 01:32:34 3466

原创 Linux最大文件句柄(文件描述符)限制和修改

Linux最大文件句柄(文件描述符)限制和修改_ulimt -n修改句柄-CSDN博客

2024-03-27 10:36:47 116

原创 cmake 编译时提示: Could NOT find OpenSSL

参考:cmake 编译时提示: Could NOT find OpenSSL | 要懂得舍得博客

2024-03-09 22:20:18 420

原创 Visual Studio中文注释乱码两种解决方案

在公司多人开发项目中经常遇到拉到最新代码,发现中文注释都是乱码,很是emjoy.....这是由于编码格式不匹配造成的,如果你的注释是 UTF-8 编码,而文件编码是 GBK 或者其他编码,那么就会出现乱码现象。

2023-12-11 21:00:36 2636

原创 13.纤程(Fiber)与协程(Coroutine)

13.1 纤程纤程(Fiber)是 Windows 操作系统提供的概念。什么是纤程呢?当我们需要异步执行一些任务时,常用的一种做法就是开启一个工作线程,在工作线程中执行我们的任务。但是这样存在两个问题:由于线程的调度是操作系统内核控制的,我们没法准确地确定操作系统何时会运行或挂起该线程; 对于一些轻量级的任务,创建一个新的线程去做,消耗比较大,我们不希望有这种消耗。那么有没有一种机制,既能起到新建线程执行任务,又没有新建线程消耗那么大呢?有,这就是纤程。在 Windows 中一个线程中可

2023-12-10 14:39:27 1183

原创 12.线程池与队列系统的设计

不过是一组线程而已,一般情况下,我们需要异步执行一些任务,这些任务的产生和执行是存在于我们程序的整个生命周期的,与其让操作系统频繁地为我们创建和销毁线程,我们通常需要创建一组在我们程序生命周期内不会退出的线程,为了不浪费系统资源,我们的基本要求是当有任务需要执行时,这些线程可以自动拿到任务去执行,没有任务时这些线程处于阻塞或者睡眠状态。当然,技术上除了要解决线程池的创建、往队列中投递任务、从队列中取任务处理,我们还需要做一些善后工作,如线程池的清理,即如何退出线程池中的工作线程和清理任务队列。

2023-12-10 14:37:02 1059

原创 11.C库的非线程安全函数

结构体指针类型,而我们外部并不需要释放这个指针指向的内存,因此我们断定这个函数内部一定使用了一个全局变量或函数内部的静态变量。这样的话,当再次调用这个函数时有可能前一次调用结果就被后一个结果覆盖了。是因为最初编写很多 CRT 函数时,还没有多线程技术,所以很多函数内部实现都使用了函数内部的静态变量和全局变量。随着多线程技术的出现,很多函数出现了对应的多线程安全版本,如。因此我们在实际开发中应避免在多线程程序中使用这类函数,这类函数还有如。这类 CRT 提供的具有上述行为的函数,我们称为。

2023-12-10 14:29:19 343

原创 10.线程局部存储

对于一个存在多个线程的进程来说,有时候我们需要有一份数据是每个线程都拥有一份的,也就是说每个线程自己操作自己的这份数据,这有点类似 C++ 类的实例属性,每个实例对象操作的都是自己的属性。我们把这样的数据称之为。上述程序一共创建 5 个线程,每个线程都会自己生成一个日志文件,每个线程将自己的日志写入自己的文件中,当线程执行结束时,会关闭打开的日志文件句柄。是一个线程局部变量,因此该进程中每一个线程都会拥有这样一个变量副本,由于是不同的副本,)数据,因为进程中的所有线程都可以使用返回的键,所以参数。

2023-12-10 14:24:05 903

原创 09.多线程使用锁实践经验总结

前面也说过,这种逻辑非常容易因为疏忽忘记在某个地方加上解锁代码而造成死锁,所以一般建议使用 RAII 技术将加锁和解锁代码封装起来,也就是说,我们可以定义一个锁对象包装类,其成员变量含有一个锁对象,在该包装类的构造函数中对锁对象进行加锁,在析构函数中对锁对象进行解锁,这样在函数出口处,锁对象包装类由于出了作用域被析构进而对其锁对象进行解锁。所谓减小锁使用粒度指的是尽量减小锁作用的临界区代码范围,临界区的代码范围越小,多个线程排队进入临界区的时间就会越短。请求锁,以免出现“活锁”现象,这是对资源的一种浪费。

2023-12-10 14:21:34 757

原创 08.如何确保创建的线程一定运行起来?

不知道读者注意到没有,我在介绍上述说的确保线程一定运行起来的做法时使用了两个词——“古老”和“严谨”,“严谨”不用多介绍,之所以说“古老”是因为你现在在各种新型的项目中基本上再也看不到这种确保线程运行起来的做法了,许多年以前多线程编程开始流行起来的时候,那时由于软硬件的水平限制,加之很多开发人员对多线程编程技术的不熟悉,创建新线程时确保一个线程跑起来非常必要;基于以上思路,我们创建一组线程时,可以一个一个地创建,每成功运行一个新线程再创建下一个,确保线程组中的每一个线程都可以运行起来。

2023-12-10 14:20:10 314

原创 07.C++11/14/17线程同步对象

C++ 11 标准让很多开发者诟病的原因之一是,C++ 新标准借鉴 boost 库的 boost::mutex、boost::shared_mutex 而引入 std::mutex 和 std::shared_mutex,但是在 C++11 中只引入了 std::mutex,直到 C++ 17 才有 std::shared_mutex,这让只能使用仅支持 C++11 标准的编译器(例如 Visual Studio 2013,gcc/g++ 4.8)的开发者非常不方便。

2023-12-10 14:19:13 831

原创 06.Windows线程资源同步对象

需要说明的是,临界区对象通过保护一段代码不被多个线程同时执行,进而来保证多个线程之间读写一个对象是安全的。也就是说,当其中一个线程离开临界区,即使此时有其他线程在这个临界区外面等待,由于线程调度的不确定性,此时正在等待的线程也不会有先进入临界区的优势,它和刚离开这个临界区的线程再次竞争进入临界区是机会均等的。当然,在实际开发中这种方式是靠不住的,线程调度是操作系统内核的策略,应用层上的应用不应该假设线程的调度策略是按预想的来执行,但是理解线程与临界区之间的原理有助于你编写出更高效的代码来。

2023-12-10 14:16:53 859

原创 05.Linux线程同步对象

某个线程A在条件不满足的情况下,主动让出互斥体,让其他线程去折腾,线程在此处等待,等待条件的满足;线程A之所以可以安心等待,依赖的是其他线程的协作,它确信会有一个线程在发现条件满足以后,将向它发送信号,并且让出互斥体。因为某次操作系统唤醒pthread_cond_wait时tasks.empty()可能仍然为 true,言下之意就是操作系统可能会在一些情况下唤醒条件变量,也就是说存在没有其他线程向条件变量发送信号,但等待此条件 变量的线程也有可能会醒来的情形。的,因为多个线程会同时读写之。

2023-12-10 14:10:24 924

原创 04.整型变量的原子操作

因此,如果读者想利用C++11提供的std::atomic库编写跨平台的代码,在使用std::atomic提供的方法时建议参考官方std::atomic提供的接口说明来使用,而不是想当然地认为一个方法在此平台上可以运行,在另外一个平台也能有相同的行为,避免出现上面说的这种情形。在C++ 98/03标准中,如果想对整型变量进行原子操作,要么利用操作系统提供的相关原子操作API,要么利用对应操作系统提供的锁对象来对变量进行保护,无论是哪种方式,编写的代码都无法实现跨平台操作,例如上一小介绍的。

2023-12-10 14:07:58 883

原创 03.线程函数传C++类实例指针惯用法

对于实例方法,为了保证类方法的正常功能,C++编译器在翻译时,会将类的实例对象地址(也就是this指针)作为第一个参数传递给该方法,也就是说,翻译后的。综上所述,如果不使用C++11的语法,那么线程函数只能使用类的静态方法,且函数签名必须符合线程函数的签名要求。指针作为线程函数的唯一参数传入,这样在线程函数中,可以通过线程函数参数得到对象的指针,通过这个指针就可以自由访问类的实例方法了。类就没有这个限制,即使类成员函数是类的实例方法也可以,但是必须显式地将线程函数所属的类对象实例指针(在类的内部就是。

2023-12-10 14:03:50 810

原创 02.线程基本操作

在pstack输出的各个线程中,只要逐一对照我们的程序源码来梳理下该线程中是否有大多数时间都处于空转的逻辑,然后修改和优化这些逻辑就可以解决CPU使用率过高的问题了,一般情况下,不工作的线程应尽量使用锁对象让其挂起,而不是空转,这样可以提高系统资源利用率。获取的线程ID是系统范围内全局唯一的,一般是一个不会太大的整数,这个数字也是就是所谓的LWP (Light Weight Process,轻量级进程,早期的Linux系统的线程是通过进程来实现的,这种线程被称为轻量级进程)的ID。这里可以使用Linux。

2023-12-10 13:59:53 919

原创 01.线程的基本概念

但是就一个程序本身执行的操作来说,进程其实什么也不做(不执行任何进程代码),它只是提供一个大环境容器,在进程中实际的执行体是”一般来说,每个线程都是独立执行的单位,每个线程都有自己的上下文堆栈,一个线程的崩溃不会对其他线程造成影响。错误,这个错误会产生一个信号,操作系统默认对这个信号的处理就是结束进程,整个进程都被销毁了,这样的话这个进程中存在的其他线程自然也就不存在了。系统中,如果主线程退出,工作线程一般不会受到影响,还会继续运行下去,但是此时这个进程就会变成所谓的。,我们把这个线程称之为”

2023-12-10 13:55:55 804

原创 利用 CMake 生成 Visual Studio 工程文件

对于习惯了 Visual Studio 强大的管理项目、编码和调试功能的读者来说,在 Linux 下使用 gcc/g++ 编译、使用 gdb 调试是一件何其痛苦的事情,对于大多数的开源 C/C++ 项目,如果我们不在意 Windows 和 Linux 在一些底层 API 接口上的使用差别,想熟悉该项目的执行脉络和原理,在 Windows 上使用 Visual Studio 调试该项目也未尝不可。凡是可以使用 CMake 工具编译的 Linux 程序(即提供了。

2023-12-10 13:54:54 983

原创 如何学习 CMake

对于习惯了 Visual Studio 强大的管理项目、编码和调试功能的读者来说,在 Linux 下使用 gcc/g++ 编译、使用 gdb 调试是一件何其痛苦的事情,对于大多数的开源 C/C++ 项目,如果我们不在意 Windows 和 Linux 在一些底层 API 接口上的使用差别,想熟悉该项目的执行脉络和原理,在 Windows 上使用 Visual Studio 调试该项目也未尝不可。那么是不是意味着你必须学习 CMake 的方方面面,不是的,你只要掌握 CMake 常用语法和命令即可。

2023-12-10 13:39:32 923

原创 一款远程控制软件 —— pcshare

3. 生成一个新的宿主程序,这个程序的名称叫ps.exe,然后将ps.exe与PcStat.exe一起发给要被控制的机器上。在被控制的机器上启动PcStat.exe,过一会儿被控制端就连接上控制终端了,控制终端就可以对被控制终端进行各种控制了。控制端通过寄生在被控制端的后台程序来实现控制,可以对被控制台进行文件管理、屏幕监控、键盘监控、监控管理、查看被控制端的服务和注册表,甚至是控制被控制端的摄像头。1. 启动PcShare.exe,这是控制端主程序,该程序会在8080端口上监听被控制端的连接。

2023-12-09 23:34:19 365

原创 Linux epoll 源码分析.pdf

可以看看下面关于 epoll 模型的源码分析。

2023-12-09 23:16:40 316

原创 C++学习新书单 —— 第 1 篇

自从 C++11 强化了右值语义,引入了右值引用、移动构造函数和赋值移动函数以及 std::move 等方法,右值的语义被广泛地用于各种 C++ 项目,加上 stl 库常用类都支持了移动操作,用好右值语义能让你的程序节省大量内存、运行效率更高。如果你也对 C++ 右值语义感兴趣,并想利用右值写更好更快的 C++ 代码,不妨读一读,书的篇幅也不厚,读完花不了多长时间。我学习和使用 C/C++ 开发快 13 年了,目前在大厂做 C++ 开发,我整理了一套 C/C++ 优质学习资料————

2023-12-09 23:15:28 759

原创 如何在 Visual Studio 编译调试 Windows 版本的 Nginx 源码?

根据这个帮助文档,我们需要安装如下依赖环境:其中,Mercurial 不是必需的,我们可以根据官方给的这个链接,安装 Visual Studio 2022、MSYS2、Strawberry Perl,并下载三个依赖库,我们实际下载的三个文件名和版本号是:官网。

2023-12-09 23:04:30 967

原创 阅读开源项目的一些经验分享

必看 Nginx 经典书籍(含下载方式)​mp.weixin.qq.com/s/Rgzzqvl9pik7zVzNX8n8PA​编辑以上三种方式都是不错的阅读源码的方式,读者可以根据自己的水平、目的和所处阶段去使用。

2023-12-09 22:49:10 739

原创 C++中,i=1 是原子操作吗?

在正式回答这个问题之前,我给你讲一个我的故事。我刚开始参加工作的那年,公司安排我开发一款即时通讯软件(类似于 QQ、微信这种聊天软件),在这之前我心里也知道如果多线程操作一个整型值是要加锁的,但是当时为了图代码简便,而且在实际调试的时候,没有加锁的代码也从来没出过问题。于是我就心存侥幸了,觉得对多线程操作整型值加锁真是多此一举。我们的软件有类似于微信这种单人聊天功能,每个用户都使用一个整型的 userid,问题就出在这里。

2023-12-09 22:42:09 1014

原创 推荐一些好的编程习惯

例如,定义变量时尽量给一个有效的初始值,释放指针对象指向的资源时,尽量将指针设置为 NULL(对于 C/C++ 程序排查一个空指针问题远比排查野指针问题要容易得多),使用 RAII 技术保证资源在每条出口路径上都会被释放,多线程加锁时,尽量减小锁的粒度,加多个锁时,锁的方向一致,避免死锁等等。很多同学在遇到问题时,习惯上去百度等搜索引擎上去寻找答案,解决问题后,就直接过去了,下次遇到同样的问题,可能又去搜索引擎继续搜索,这样日复一日,功能做了一个又一个,技术毫无长进。目前就想到这么多,原创不易,请给。

2023-12-09 14:30:22 1105

原创 Go语言好找工作吗?

Golang 目前的岗位相比较 Java、C/C++ 等岗位来说,不算多,但也不算少,国内一些做云原生相关的公司大量招 Go 开发,例如字节跳动、七牛云、UCloud,腾讯和美团一些业务线也开始往 Go 迁移。我目前在字节跳动做 Go 开发,需要内推的可以私信我。

2023-12-09 14:21:02 838

原创 包装开源项目作为自己的项目,来字节面试,这位同学现场翻车了......

这里存在的问题是,在网络编程中,当我们有数据需要发送时可以直接发送,但是如果数据因为对端 TCP 窗口太小发不出去时,我们应该将数据缓存起来,并注册监听 socket 可写事件,在下一次可写事件触发时,我们接着发数据,一直到数据发完为止,这个库中缺少这样的逻辑,所以程序是不健壮的。函数,由于连接已经建立,所以在这个函数中读取数据,然后解析 http 请求报文,然后根据设置的 http 路由进行处理,在路由处理函数中组装 http 响应,然后将数据发出去,如果某个路由未设置,则走默认错误处理路由。

2023-12-09 13:41:09 912

原创 C++ 内存崩溃问题应该如何调试?

C++11(Modern C++)以及之后的版本提供的智能指针使用起来确实很方便,也建议你在实际的 C++ 的项目中多多使用,可以避免很多内存泄漏问题,但是前提是我们必须充分理解每一种智能指针的用法和注意事项,尤其是在和左值、右值、移动构造、std::move 、std::forward 等特性结合使用时,需要多加小心。

2023-12-09 13:31:05 812

原创 推荐一款比 Postman 好用 20 倍的开发工具

Eolink除了API管理、自动化测试服务以外,还是全球首个API全生命周期管理的SaaS平台,提供包括API网关、API监控、API自动生成等服务。截至目前,Eolink已经为包括奇安信、深信服、泰康集团、索尼、统一企业、博时基金、圆通速递等数千家各行业领先的企业提供API管理服务,实力非常硬,口碑非常好,值得信赖!Eolink支持定时测试任务,或者将 API 自动化测试平台集成到Jenkins上,实现代码提交即触发测试,实现项目在无人值守的情况下自动测试,解放劳动力。

2023-12-09 13:17:57 1045

原创 如何设计保活机制与心跳包

当我们的服务程序与客户端之间存在代理服务,后端服务与代理服务之间是长连接,代理服务与客户端之间也是长连接,且后端服务器的业务类型是订阅类型,也就是说客户端一旦订阅某个类型的主题后,就很少或者不再给服务器发送消息了,而后端服务不断将客户端订阅的特定主题数据下发给客户端(如股票交易中的行情服务),此时使用上文介绍的更新心跳包的最新时间使用服务器的上行数据或者下行数据的发包时间,就可能无法检测到客户端是否已经断开了。但是,如果通信的两端有频繁的数据来往,此时到了下一个发心跳包的时间点了,此时发送一个心跳包。

2023-12-09 13:11:09 761

原创 一套简单通用的Java后台管理系统,拿来即用,非常方便(附项目源码)

我推荐一套简单通用的后台管理系统,主要功能有:权限管理、菜单管理、用户管理,系统设置、实时日志,实时监控,API加密,以及登录用户修改密码、配置个性菜单等。

2023-12-09 13:03:34 845

原创 Github 17K!史上最强悍!阿里谷歌字节大厂「LeetCode 刷题手册」开放下载了!

一般对于校招和工作年限不长的同学,如果算法题答不好,基本会被一票否决,大厂的算法题其实也并不难,只要认真刷一些题一般都可以答出来。国内一线大厂的面试形式慢慢和国外巨头靠拢,对算法的要求是越来越高,特别是 LeetCode 的相关算法。但是目前国内有关刷算法题的优质内容比较少,导致有些朋友错失了去大厂的机缘,最近发现了一个优质的算法神器!进大厂是很多程序员的愿望,特别是对于刚毕业的程序员来讲,进了大厂之后的发展高度与不进大厂完全不一样。每一个章节先讲概念和框架,然后进行实战演练,这种方式真的是学习的好帮手!

2023-12-07 21:24:24 876

原创 程序员面试时,如何谈年终奖不吃亏?

反过来如果你离职的当月有长假,例如 10 月份,而你是在国庆长假后离职的,那么计算你离职当月的实际收入不会算上这法定七天假日的。这是很多公司套路,请假或离职扣薪资时算日薪按按。

2023-12-07 21:19:39 880

原创 进了小公司的应届程序员如何翻身进入大公司?

我 2018 年年底从携程旅行网离职与人合作创业,项目于 2019 年 8 月正式上线运营,8 月后到 12 月初系统针对之前的一些问题做了第二版的优化和重构。从 12 月初开始工作就不是太忙,于是更新了一下简历,出去面试一下保持自己对技术的敏感度(当然,如果有合适的职位也是可以考虑的)。我求职的职位是资深开发或者系统架构师级别,开发语言优先选 Java,其次是 C/C++。老的读者应该知道,我是 C/C++ 出身,后面由于工作需要开始做 Java,并且专门去携程历练了一段时间自己的 Java 技术。

2023-12-07 21:17:32 838

原创 非计算机专业如何转行计算机开发?

这个问题太适合我了[破涕为笑][破涕为笑][破涕为笑]我就是那个非计算机专业一心想转计算机专业,但是最终没转成,但是通过自学走上开发之路的,当年也是到处求书单。目前在某大厂做资深开发,发几张目前的工作环境照吧:转眼毕业七年多了,这是 2014 年毕业的时候,在纪念日,和女朋友(现在已经是老婆了)一起拍的照片:这是去年结婚 5 周年在新家拍的照片:好啦,如果你觉得挺好的。那我就继续和你讲一讲我的故事和你要的书单。我大学学的是地理科学专业,没错,这是一个师范专业,培养的目标是高中地理老师。隔壁计算机专业的课程一

2023-12-07 21:14:17 1088

原创 学习 Java,觉得自己很难成为高手,该怎么办?

我曾在携程旅行网做过 Java 技术专家,下面就作为 Java 面试官的角度来尝试回答一波。当然,核心的问题在于缺乏主动性和方向性,不知道接下来该补充什么,培训班与科班学的好的相比,本来就先失一着,如果接下来不知道失之东隅收之桑榆,那这条路基本很难走的长远。接下来,我将从和等四个方面来说一下学习方法,并推荐一些经典书籍,书不多,都是我自己买过实体书并读过的,具有可操作性。Java 并发编程首推《》:另外《》这一本也不错。推荐的书是《

2023-12-07 21:07:29 877

原创 大学四年、硕士三年、工作七年,我都读了哪些计算机经典书籍?

作为一名过来人的老学长,我码这么多字,希望想做好开发的学弟学妹们,勿在浮沙筑高台,一定多阅读经典计算机书籍去提高内功。

2023-12-06 21:52:00 962

原创 你什么时候开始觉得你的代码能力明显上升了一个档次?

后来,我去武汉光谷软件园找实习,人家直接丢给我一个完整的 MFC 程序让我逆向,结果实习也没找到。在苦闷了好多天后,我开始硬着头皮去翻一些开源软件的源码,认真看了三四个月,一边调试,一边记笔记,最后感觉整个人都不一样了。我是地质工程专业,上学的时候,我痴迷 C++ 编程,可是呢,我学的不是计算机专业,身边没啥能交流的人,那个时间知识付费也不像现在这么流行,所以总体上来说没什么可以请教的人。

2023-12-06 21:45:00 326

原创 如何写好 Git commit log?

介绍下目前字节跳动开发中使用的 git commit log 规范,内容与下列规范基本一致。Git 每次提交代码,都要写 Commit message(提交说明),否则就不允许提交。上面代码的-m参数,就是用来指定 commit mesage 的。如果一行不够,可以只执行git commit,就会跳出文本编辑器,让你写多行。基本上,你写什么都行(和但是,一般来说,commit message 应该清晰明了,说明本次提交的目的。目前,社区有多种 Commit message 的。本文介绍。

2023-12-05 21:18:44 855

文章《用Android Studio进行NDK编程》配套资源

文章《用Android Studio进行NDK编程》配套资源,本来不想要积分的,可是现在CSDN规则改成资源至少是两分 - -!

2018-04-17

Gh0st全套源码

Gh0st是一款优秀的远程控制软件,其可以实现对被控制端诸如文件管理、远程桌面、进程管理、视频监控等操作。

2018-02-15

安卓版TeamTalk客户端源码

安卓版TeamTalk客户端源码,开发环境: IDE使用Android-studio java 1.7 gradle 2.2.1

2017-05-25

TeamTalk pc客户端源码

TeamTalk pc客户端源码,用VS2013直接打开即可编译调试。

2017-05-25

封装了WinInet的HttpClient库

封装了WinInet的HttpClient库,提供多个http接口,强大稳定。

2017-05-19

蘑菇街TeamTalk源码

蘑菇街 TeamTalk 源码 IM 即时通讯

2017-05-05

TeamTalk源码和redis-3.2.8安装程序

蘑菇街开源的即时通讯软件TeamTalk

2017-05-05

即时通讯flamingo服务器端代码

这是即时通讯flamingo服务器端代码,目前即时通讯软件实现了如下功能: 注册 登录 查找好友、查找群 添加好友、添加群 好友列表、群列表、最近会话 单人聊天功能(包括发文字、表情、窗口抖动、离线文件) 群聊功能(包括发文字、表情) 修改密码 修改个人信息(自定义昵称、签名、个性头像等个人信息) 自动升级功能 包括聊天服务器和文件服务器,同时也是一款通用的C++11网络框架。

2017-04-06

即时通讯flamingo客户端

目前即时通讯软件实现了如下功能(这里只列举网络相关的功能,其他客户端已经实现的功能不统计在列,请自行发现): 注册 登录 查找好友、查找群 添加好友、添加群 好友列表、群列表、最近会话 单人聊天功能(包括发文字、表情、窗口抖动、离线文件) 群聊功能(包括发文字、表情) 修改密码 修改个人信息(自定义昵称、签名、个性头像等个人信息) 自动升级功能

2017-04-06

myreactor项目C++11版本源代码

一个用C++写的echo服务器,运行在linux平台,使用epoll ET模式,支持多个客户端连接和收发消息,纯C11代码。包括C++11新的变量初始化方式、for循环、auto关键字、线程、互斥体、条件变量等C++11常用的技术。

2016-12-04

myreactorserver项目源码

myreactorserver项目源码,实现echo功能,使用epoll ET模式,运行在linux平台,支持多个客户端连接。

2016-12-04

第一行Android代码——.pdf

第一行Android代码——.pdf 高清 有目录

2016-11-04

CMake Practice.pdf

CMake Practice.pdf 高清 有目录 一本非常好的介绍CMake的电子书

2016-11-04

JavaScript设计模式与开发实践.pdf

JavaScript设计模式与开发实践.pdf 高清 有目录

2016-11-04

UNIX环境高级编程(中文第三版).pdf

UNIX环境高级编程(中文第三版).pdf 有目录 清晰度勉强可以看

2016-11-04

编译系统透视:图解编译原理.pdf

编译系统透视:图解编译原理.pdf 高清 但是 没有目录

2016-11-04

Linux高性能服务器编程.pdf

Linux高性能服务器编程.pdf 高清带详细目录

2016-11-04

编程格调.pdf

《编程格调》是编程惯用法和规则的实践指南。全书从表达、控制结构、程序结构、输入和输出、常见错误、效率和测试工具、文档等多个角度,概括了程序设计中若干的最佳实践或规则,并通过代码示例加以分析和阐释。 本书两位作者都是程序设计领域的大师级任务。他们四十年前在本书中给出的70多条最佳实践和规则,大多数在今天仍然适用。 本书堪称计算机专业人士和程序员的必读的经典之作,适合于不同层级的程序员和计算机相关专业的学生参考阅读。

2015-09-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除