自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小熊糖否——木子兮的自留地

True mastery of any skill takes a lifetime.

  • 博客(79)
  • 收藏
  • 关注

原创 如何设计高效的C++类

一直以来,使用C++面向对象机制,主要是为了其封装和多态特性。往往设计类时,只是为了功能的堆砌,没有考虑的更加深入。之前也阅读过《Effective C++》,只是那时是在学生时代。如今工作了,重新阅读,有不少新的感悟。最关键的是,能从更高的视角去设计程序,之前杂乱无序的点与点,逐渐连接成一条条线。希望后续能够成面、成立体。回到正题:如何设计C++类?

2017-09-26 19:48:15 3180 1

原创 C++并发编程2——为共享数据加锁(四)

本节会阐述保护共享数据的替代方案,很多情况下,使用互斥量并不合适,会带来性能消耗。下文会详细讲解集中通用的场景。

2016-09-29 08:37:45 1050

原创 C++并发编程2——为共享数据加锁(三)

死锁的概念略去不说,死锁有可能发生在使用多个互斥量的场景下,也可能存在没有使用互斥量的场景

2016-09-29 08:33:10 2897

原创 C++并发编程2——为共享数据加锁(二)

上一节说到,std::mutex并不能完全解决保护数据的问题。存在好几种情况,即使我们已经使用了互斥量,数据还是被破坏了。

2016-09-29 08:30:31 1559 1

原创 C++并发编程2——为保护数据加锁(一)

在应届生面试的时候,很多面试官都会问——“多线程如何共享资源”。在操作系统层面上可以给出若干关键词答案,但是在语言层面,这个问题考虑的就没有那么简单了。

2016-09-29 08:26:55 6053

原创 C++并发编程1 - 让我们开始管理多线程

C++11中引入了多线程编程,一般教科书中都没有涉及到这个概念,但是在工作中多线程却又是必不可少的。本文会从最简单的hello world入手,细述如何创建管理线程。

2016-09-27 11:51:52 5076

原创 C++并发编程0 - 欢迎来到多线程的世界

博客原文:www.freehacker.comC++11中引入了多线程编程,一般教科书中都没有涉及到这个概念,但是在工作中多线程却又是必不可少的。本文会展示最基本的Hello World, Concurrency程序。

2016-09-27 11:48:55 760

原创 Git自动换行符

Welcome to my personal blog: www.freehacker.cn不同的操作系统有不同的换行符格式,跨平台协作时需要考虑版本工具(git)对换行符的处理回车和换行回车(Carriage Return)和换行(Line Feed)概念:回车CR:将光标移动到当前行开头;换行LF:将光标“垂直”移动到下一行,并不

2016-07-21 22:50:09 4313

原创 操作系统引导过程

所谓操作系统的引导过程是将存放在硬盘上的静态的操作系统装载到内存中,并开始执行操作系统的过程。Welcome to my personal website: www.freehacker.cn第一阶段:BIOS1.1 何为BIOS?BIOS,英文“Basic Input Output System”,中文“基本输入输出系统”。百度百科中的解释如下:

2016-07-21 22:33:07 11781 2

原创 Cmake使用心得

Welcome to my personal blog: www.freehacker.cnCMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。CMake 使用方法CMake的所有的语句都写在一个叫:CMa

2016-07-21 22:27:35 5152

原创 Win32多线程编程学习心得

博客原文地址:http://jerkwisdom.github.io/study/thread/thread-Summary/此处博客不再更新。为什么多线程?其实不想写这一点,多线程并不一定是最好的,合适才是最好的。多线程主要的优点是价廉物美,启动快、退出快、与其他线程共享核心对象,很容易实现共产主义的伟大梦想。但是其又有不可预期、测试困难的缺点。使用好多线程,就是要知

2016-03-02 20:26:46 2779

原创 Unicode编码和ANSI编码

之前一直对Unicode、ANSI、ASCII、UTF-8、string、wstring的概念混淆不清,今天特地查询资料整理下。ANSI编码ANSI编码和Unicode编码都是字符代码的一种表现形式。也就是一个字符既可以编码ANSI也可以编码成Unicode,只是表现形式不一样罢了。首先来看下ANSI的全称:American National Standard Institute,美国国家标准协会。

2016-01-25 20:06:11 667

转载 用C写一个简单病毒

[摘要]在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现. [Abstract] This paper introduce the charateristic of the computer virus,then show a simple example written by TURBOC2.0.一、什么是病毒        恶意软件可能是第一

2014-09-05 21:13:15 1028

转载 程序健壮性

//腾讯QQ2008年笔试题中的附加题(30分)//从程序健壮性进行分析,下面的FillUserInfo函数和main函数分别//存在什么问题?#include #include #include #define MAX_NAME_LEN 20struct USERINFO{ int nAge; char szName[MAX_NAME_LEN];};void Fi

2014-09-03 16:57:23 403

原创 Leetcode - Array - Merge Sorted Array

Given two sorted integer arrays A and B, merge B into A as one sorted array.Note:You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements fro

2014-08-17 19:56:09 338

原创 华为机试 - 火星计算器

火星计算器:   火星人使用运算符:@ # $ &   优先级为:@ > # > $ > &      X@Y = (X+1)*(Y+2)   X#Y = (2X+3)*(3Y+4)   X$Y = (3X+11)*(2Y+7)   X&Y = (5X+20)*(4Y+1)      X#Y@Z = X#(Y@Z)      编写火星计算器程序,计算火星

2014-08-15 22:32:45 4536 3

原创 华为机试 - 一串正整数相加

输入一串正整数字符,各正整数之间用空格分开,只有数字字符和空格有效,其他字符均为无效;   输入正整数个数不超过32个(即:正整数个数   若出现无效字符,输出ERROR;若输入正整数个数超过32个,输出ERROR。   若有效,则求出总和;      例子:   输入:12 a34   输出:ERROR   输入:12 34    输出:46

2014-08-15 21:08:06 604 2

原创 华为机试 - 8bitBCD码输出

将输入的数字字符串以8bit,BCD编码输出。   如果输入字符串的位数为奇数,则在最高位补零。      “1234”     4bit位表示:  0001 0010 0011 0100 BCD编码为 1 2 3 4   若以8bit表示:0001 0010 0011 0100 BCD编码为 18 52      “123”   4bit位表示:       00

2014-08-15 20:17:50 1530 2

原创 华为机试 - 9进制和11进制转10进制

#include #include using namespace std;int main(){ string str; cin>>str; string strBegin=str.substr(0,2); int result=0; if (strBegin=="0V"||strBegin=="0v") //九进制 { bool strZero=true; int

2014-08-15 19:50:13 1579 1

原创 华为机试 - 链表翻转

链表翻转。给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现#include #include #include using namespace std;struct ListNode{ int val; ListNode *link; Li

2014-08-15 17:54:13 621

原创 华为机试 - 将整数倒序输出,剔除重复数据

输入一个整数,如12336544,或1750,然后从最后一位开始倒过来输出,最后如果是0,则不输出,输出的数字是不带重复数字的,所以上面的输出是456321和571。如果是负数,比如输入-175,输出-571#include #include #include using namespace std;int main(){ string str; cin>>str; re

2014-08-15 16:01:33 621

原创 华为机试 - 判断if语句括号是否匹配

编程的时候,if条件里面的“(”、“)”括号经常出现不匹配的情况导致编译不过,请编写程序检测输入一行if语句中的圆括号是否匹配正确。同时输出语句中出现的左括号和右括号数量,如if((a==1)&&(b==1))是正确的,而if((a==1))&&(b==1))是错误的。注意if语句的最外面至少有一对括号。提示:用堆栈来做。输入:if((a==1)&&(b==1))输出:RIGTH 3 3

2014-08-15 15:49:15 590

原创 华为机试 - 身高差最小身高

输入一组身高在170到190之间(5个身高),比较身高差,选出身高差最小的两个身高;若身高差相同,选平均身高高的那两个身高;从小到大输出;如 输入 170 181173 186 190   输出 170 173

2014-08-15 15:27:18 1689

原创 华为机试 - 求字符串中最大最小值

输入一串字符,只包含“0-10”和“,”找出其中最小的数字和最大的数字(可能不止一个),输出最后剩余数字个数。如 输入 “3,3,4,5,6,7,7”#include #include #include using namespace std;int main(){ map strMap; string str; cin>>str; for(size_t i=0;i<s

2014-08-15 14:57:10 1125

原创 华为机试 - 约瑟夫问题

约瑟夫问题2输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止。如果计数到达数列尾段,则返回数列首位置继续计数。请编程实现上述计数过程,同时输出数值出列的顺序比如:输入的随机数列为:3,1,2,4,初始计数值m=

2014-08-15 14:42:59 528

原创 华为机试 - 统计出现最多次数的数字

#include #include using namespace std;int main(){ string str; getline(cin,str); int num[10]={0}; for(int i=0;i<str.size();i++) { num[str[i]-'0']++; } int maxNum=0,maxTime=num[0]; for (i

2014-08-15 10:35:35 389

原创 华为机试 - 字符串首字母转换成大写

#include #include #include using namespace std;int main(){ string str; getline(cin,str); bool capital=1; for(int i=0;i<str.size();i++) { if(capital) str[i]=toupper(str[i]),capital=0;; i

2014-08-15 10:07:10 520

原创 华为机试 - 子串分离

题目描述:   通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。  如果输入“abc def gh i        d”,结果将是abc,def,gh,i,d, 要求实现函数:   voidDivideString(const char *pInput

2014-08-15 09:58:26 428

原创 华为机试 - 计算字符串表达的运算

通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。补充说明:1. 操作数为正整数,不需要考虑计算结果溢出的情况。2. 若输入算式格式错误,输出结果为“0”。要求实现函数: void arithmetic(const char *pInpu

2014-08-14 22:10:07 369

原创 华为机试 - 字符串去重复字节/字符串去连续重复字节

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。要求实现函数:void stringFilter(const char *pInputStr,long lInputLen, char *pOutputStr);【输入】 pInputStr:输入字

2014-08-14 20:23:02 556

原创 华为机试 - 最小最大数之和

输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50

2014-08-14 19:54:10 742

原创 华为机试 - 大数之和

求两个长长整型的数据的和并输出,例如输入1233333333333333 。。。 3111111111111111111111111.。。。,则输出。。。。#include #include using namespace std;int main(){ string num1; string num2; string result; cin>>num1; cin>

2014-08-14 19:51:00 449

原创 Leetcode - Tree - Symmetric Tree

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).For example, this binary tree is symmetric: 1 / \ 2 2 / \ / \3 4 4 3But the f

2014-08-14 17:32:53 344

原创 Leetcode - Tree - Convert Sorted Array to Binary Search Tree

Given an array where elements are sorted in ascending order, convert it to a height balanced BST./** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; *

2014-08-14 16:40:14 330

原创 Leetcode - Tree - Balanced Binary Tree

Given a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never diffe

2014-08-14 16:18:33 438

原创 Leetcode - Tree - Binary Tree Traversal

1、Binary Tree Preorder Traversal

2014-08-14 15:29:58 416

原创 Leetcode - Tree /Dynamic Programming- Unique Binary Search

Given n, how many structurally unique BST's (binary search trees) that store values 1...n?For example,Given n = 3, there are a total of 5 unique BST's. 1 3 3 2 1 \

2014-08-14 15:05:39 422

原创 Leetcode - Tree - Same Tree

Given two binary trees, write a function to check if they are equal or not.Two binary trees are considered equal if they are structurally identical and the nodes have the same value.

2014-08-14 15:01:02 429

原创 Leetcode - Tree - Maximum Depth of Binary Tree

Given a binary tree, find its maximum depth.The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node./** * Definition for binary tree *

2014-08-14 14:56:56 401

原创 LeetCode - Array - Maximum Subarray

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [−2,1,−3,4,−1,2,1,−5,4],the contiguous subarray [4,−1,2,1] 

2014-08-13 21:48:24 280

空空如也

空空如也

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

TA关注的人

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