C++
文章平均质量分 94
copy_O_move
号注册得早,实际码龄4年
展开
-
一个并发编程的系列故事
#include <iostream>#include <thread>#include <condition_variable>#include <mutex>#include <vector>#include <future>#include <queue>#include <functional>using namespace std;#if 0/*假如你要实现一个公交车系统,每十原创 2021-05-12 16:02:11 · 266 阅读 · 0 评论 -
C++标准库常用算法小结
http://www.cplusplus.com/reference/algorithm目录1.std::merge 合并序列2.std::partition 分割序列1.std::merge 合并序列#include<algorithm>#include<iostream>#include<vector>#include<functional...原创 2021-04-08 23:05:37 · 308 阅读 · 0 评论 -
借助可变模板实现观察者模式的一种替代方式
陈硕在观察者模式之缪中提到,Observe模式有本质的问题,问题的根本原因在于面向对象的设计.其中的一个问题是,observer是基类,带来了非常强的耦合,强度仅次于友元类型,这种耦合限制了成员函数的名字,参数,返回值,还限制了成员函数所属的类型(必须是observer的派生类).还有一些其他的问题,这里不细述了,C++语言可以通过function/bind绕开Observer模式的限制.书中的代...原创 2020-03-13 21:35:42 · 422 阅读 · 0 评论 -
一个简单对象池的迭代开发学习记录
目录0.前言1.版本1:无法销毁的对象附录3.参考2.版本6(7)缺陷的验证代码(即对象池的一个race condition的验证代码)1.完整代码0.前言本文仔细实践了陈硕多线程服务端编程一书中第一章对象池的例子,这个实践可以说是对shared_ptr,weak_ptr,shared_from_this,弱回调,多线程开发的一个综合应用.由简单到复杂,针对具体问题,逐步迭代优化,是一个相当不...原创 2019-12-29 19:07:46 · 229 阅读 · 0 评论 -
锁-同步-多线程-单例-《程序员的自我修养》读书笔记
第一章同步和加锁数据访问同步:指的是一个线程访问数据未结束时,其他线程不得对同一个数据进行访问同步的方法1.二元信号量(和互斥量类似)2.多元信号量(简称信号量)2.互斥量(和二元信号量类似)3.临界区4.读写锁5.条件变量过度优化即使合理加锁也不一定能保证线程安全情况一这种情况主要原因在于编译器过度优化导致变量X的值没有被即时写回。情况二第...原创 2019-12-26 23:15:32 · 153 阅读 · 0 评论 -
排序笔记-归并排序
一、 10大排序算法二、归并排序原理图:三、归并排序代码的递归实现图1需要注意的地方1.Merge函数为什么要传入这些参数呢?想一下,抛开归并,你要合并两个肩并肩的数组要怎么做呢,要知道两个数组的起点和终点,通过下面三个参数可以算出来这两个数组的起点和终点(如上图,图1所示)左边部分的起点和终点分别为 Left 和 RightLeft-1右边部分的起点和终点分别为 Ri...原创 2019-08-04 16:18:01 · 992 阅读 · 0 评论 -
排序算法-快速排序
一、10大排序算法二、快速排序原理快速排序为什么快的一个主要原因就是:选过主元,进行过子集划分后,主元一次性就被放到了正确的位置上了算法思想三、细节问题问题1关于这个问题,我一开始认为最好情况是初始就是有序的,实际上初始有序,主元要是选一端的话时间复杂度会是O(N^2),原因可见下图:(这里的时间复杂度分析是按照递推的方法进行的)问题2为什么呢?举一个极端的例子,如果一...原创 2019-08-04 16:15:49 · 925 阅读 · 0 评论 -
The Largest Generation (25)
The Largest Generation (25) 时间限制 1000 ms 内存限制 65536 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 A family hierarchy is usually presented by a pedigree tree where all the nodes on the same level belon原创 2017-02-16 20:16:12 · 280 阅读 · 0 评论 -
C++ 练习-多线程
#if 0 //CreateThread代码示例#include&lt;iostream&gt;#include&lt;windows.h&gt;using namespace std;DWORD WINAPI ThreadFun(LPVOID lpThreadParameter){ char* str = (char*)lpThreadParameter; while...原创 2018-05-27 17:16:29 · 779 阅读 · 0 评论 -
单进程的实现
简单总结下单进程的实现方法1.利用事件对象实现一个程序只允许运行一个进程#include<process.h>#include<windows.h>#include<stdio.h>int main(){ // 利用事件对象实现一个程序只允许运行一个进程 HANDLE hEvent = CreateEvent(NULL, FALSE, T...原创 2018-11-18 14:22:15 · 1067 阅读 · 0 评论 -
malloc和free实现的原理
还是要认真看深入理解计算机系统http://blog.csdn.net/llhyy17/article/details/5375298内存分配是按照堆块实现的,一个堆块是由头部和有效载荷量组成,其中的有效载荷量就是我们申请的堆的大小。头部块包括 块大小和是否可用 这两个部分组成。在内存中这些堆块以链表形势组成malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空...转载 2019-04-14 16:41:57 · 617 阅读 · 0 评论 -
重载new/delete云算符来跟踪内存分配
1.最近在阅读《C++编程思想》这本书,记录下其中的知识点直接上代码了:MemCheck.h#ifndef MEMCHECK_H#define MEMCHECK_H#include<cstddef> //for size_t//use the new operator(both scalar and array version)void *operator new(...原创 2019-04-14 18:51:37 · 196 阅读 · 0 评论 -
[转]Clion2019破解-Jetbrains系列产品2019.1.1最新激活方法[持续更新]
原文链接大家熟知Jetbrains的话应该知道:他们家的所有产品升级到2018.2.1及以上版本后,先前可用的注册服务器都失效了,无法激活升级到最新版本体验最新黑科技。这次要送的这份礼就是: Jetbrains全系列产品2019.1.1及以下版本(理论上适用于目前所有新老版本)最新注册服务器(License Server)的破解,可使用它来激活你手头上的Jetbrains IDE,具体支持产品...转载 2019-05-02 15:28:04 · 24259 阅读 · 0 评论