- 博客(10)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注
原创 白话跨平台C++线程池实现
线程池在一个C++项目中是必不可少的。去看任何一个C++开发框架,绝大部分都会实现一个线程池。而如今C++11已经成熟,借助C++标准库中的线程库std::thread,以及标准库提供的多线程同步神器std::condition_variable(这个已经被我封装成了Event,详情见C++中的事件Event(基于条件变量的封装))和std::future,互斥变量以及锁std::mutex(这个...
2018-09-28 17:59:15 1872 9
原创 C++互斥变量对象的包装(基于C++的特性)
在多线程编程中,对一个对象或者多个对象加锁非常常见(保证临界区的互斥访问),其中std::mutex是用的最多的,用互斥量保持互斥访问。假如有五个需要互斥访问的变量,你就需要定义这五个变量,同时,为它们分别定义五个std::mutex。这样子会很凌乱。那么C++中可以把变量和锁绑定在一起作为一个对象,使得这个对象平时使用起来和变量无异,只不过这个对象带了一把锁。C++的语法特性可以很方便地搞定,...
2018-09-26 14:05:10 821 1
原创 C++中的事件Event(基于条件变量的封装)
考虑这样一个场景,现在有两条线程,一条线程负责往队列中塞元素,另一条线程负责从队列中取元素。其实就是简单的生产者消费者队列,取元素的这个线程需要注意队列中是否有元素,如果没有元素就不能取,于是我就搞一个循环,一直取看队列是否为空:for( ; !que.empty(); ) {}这样子确实可以实现没有元素就等待,有元素就取元素,但是这样搞,这条形成一直处于CPU100%运行的状态,好像这种情...
2018-09-25 18:47:33 6740 1
原创 C++中字符编码的转换(Unicode、UTF-8、ANSI)
C++的项目,字符编码是一个大坑,不同平台之间的编码往往不一样,如果不同编码格式用一套字符读取格式读取就会出现乱码。因此,一般都是转化成UTF-8这种平台通用,且支持性很好的编码格式。Unicode、UTF-8的概念不做过多解释,这里说一下ANSI,我第一次看到这个名词,我看成了ASCII。被Mentor狠批一顿。ANSI是一种字符代码,为使计算机支持更多语言,通常使用 0x00 ~ 0x7...
2018-09-25 14:11:09 63606 17
原创 C/C++笔试面试手撕代码注意事项
算法思想是否正确代码逻辑是否清晰明了代码风格是否美观简洁注释和变量命名STL/C++11不要雷同!算法正确这是最主要的点,如果算法都不对,就是直接0分了;代码逻辑要清晰明了,考虑问题要全面,逻辑一混乱,基本就是60分左右了;如果你的代码风格很丑,我基本是不会看的,又或者很简单的一个题,你写了一百多行代码,这我也是不会看的;如果你的算法不是常规的算法,建议最好写出注释,不然有些面试...
2018-09-24 01:03:52 4172
原创 二叉搜索树的前驱与后继的查找
二叉搜索树的中序遍历是升序的。那么现在给你树中的任意一个结点,要你求这个结点的前驱和后继。你该怎么搞?这个问题不是那么简单的,分下面几种情况结点数据结构是否包含父节点的指针有没有给你根节点如果结点的数据结构没有给父节点指针也没有告诉你根节点,那么是不可能求出该结点的前序与后继的;其次结构中包含父节点指针,那么也就相当于给了你根节点。这里我们主要讨论结点中不包含父节点指针但是告诉你根节点...
2018-09-23 14:48:44 4313 2
原创 SHA1散列算法及其C++实现
这里重点说一下SHA1算法的实现步骤与代码,由于本人水平有限,不过多讨论SHA1的数学原理以及应用场景。SHA1简介In cryptography, SHA-1 (Secure Hash Algorithm 1) is a cryptographic hash function which takes an input and produces a 160-bit (20-byte) has...
2018-09-19 16:21:33 9295 3
原创 Base64编解码及其C++实现
这两天在为公司的框架添加一个Base64加解密的模块,于是就想分享一下Base64的原理及自己的C++实现,借鉴了poco库。博文中的代码都是这两天写的代码的简洁版,可以完成Base64的编解码,方便易用。不推荐造轮子,但是轮子在别的车上,你得自己拆下来,然后根据自己车的尺寸DIY你的轮子,安在自己的车上,当然,你还需要了解这个轮子的原理,万一哪天轮子坏了要你来修呢。Base64简介B...
2018-09-07 23:07:13 27427 7
原创 右移一位和除二的区别
首先看一下下面这个代码,然后判断两个结果是一样的吗#include <bits/stdc++.h>using namespace std;int main(){ for (int n; EOF != scanf("%d", &n); ) { printf(">> 1 : %d\n",
2018-09-07 13:40:52 25913 3
原创 二分以及编程过程中求中点各种写法思想解析以及完美写法
在你真的理解二分的写法吗 - 二分写法详解这篇博客中,有几个朋友给二分求中点mid = (l + r) / 2提出了一些疑问和改进。自己最近也对这个问题有过一些思考,因此在这里系统详细地聊聊自己的看法,看看程序中求区间终点到底应该怎么写才是完美的。先公布程序中求区间中点的完美写法:mid = l + (r - l) / 2。在数学上,mid = l + (r - l) / 2和mid = ...
2018-09-02 22:42:13 4190 2
gdb官方使用手册
2016-12-01
算法题目,求解,赶时间,在线等!
2016-04-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人