自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zems

技术成长日记,还在路上。

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

原创 Cpp Concurrency In Action(读书笔记9)——多线程程序的测试和调试

与并发相关的错误类型  测试和调试就像一个硬币的两面——测试是为了找到代码中可能存在的错误,需要调试来修复错误。如果在开发阶段发现了某个错误,而非发布后发现,这将会将使错误的破坏力降低好几个数量级。  错误类型:不必要阻塞条件竞争不必要阻塞  通常,是因为其他线程在等待该阻塞线程上的某些操作完成,如果该线程阻塞了,那那些线程必然会被阻塞。死锁,常考读书笔记2给出的指导意

2016-11-24 10:50:05 756

原创 Cpp Concurrency In Action(读书笔记8)——高级线程管理

线程池  线程池:一个预先设定的线程组,会将任务指定给池中的线程。在大多数系统中,将每个任务指定给某个线程是不切实际的,不过可以利用现有的并发性,进行并发执行。线程池就提供了这样的功能,提交到线程池中的任务将并发执行,提交的任务将会挂在任务队列上。队列中的每一个任务都会被池中的工作线程所获取,当任务执行完成后,再回到线程池中获取下一个任务。最简单的线程池  作为最简单的线程池,其拥

2016-11-23 23:14:53 979

原创 Cpp Concurrency In Action(读书笔记7)——并发代码设计

线程间划分工作的技术  决定使用多少个线程,并且这些线程应该去做什么。还需要决定是使用“全能”的线程去完成所有的任务,还是使用“专业”线程只去完成一件事情,或将两种方法混合。使用并发的时候,需要作出诸多选择来驱动并发,这里的选择会决定代码的性能和清晰度。因此,这里的选择至关重要,所以在你设计应用程序的结构时,再作出适当的决定。在线程处理前对数据进行划分  使用过MPI(Messag

2016-11-22 09:07:17 1061

原创 Cpp Concurrency In Action(读书笔记6)——无锁并发数据结构设计

定义和意义  使用互斥量、条件变量,以及“期望”来同步“阻塞”(blocking)数据的算法和数据结构。使用原子操作的“内存序”特性,并使用这个特性来构建无锁数据结构。  不使用阻塞库的数据结构和算法,被称为“无阻塞”(nonblocking)结构。不过,“无阻塞”的数据结构并非都是无锁的(lock-free)。非阻塞数据结构  使用std::atomic_flag 实

2016-11-16 23:22:38 1275 1

原创 Cpp Concurrency In Action(读书笔记5)——基于锁的并发数据结构设计

为并发设计的意义何在?  在并行程序中的数据结构:要么绝对不变,要么能够正确的同步。要能够正确的同步:一种方法是设计独立的互斥量,来锁住需要保护的数据,另外一种方法就是设计一种能够并发访问的数据结构。  指导思想:设计”线程安全“的数据结构,并减少保护区域,减少序列化操作,提高并发访问的潜力。数据结构并发设计的指导与建议(指南)  一要保证访问是安全的,二要能够真正的并发访问。

2016-11-10 12:14:09 848

原创 Cpp Concurrency In Action(读书笔记4)——C++内存模型和原子类型操作

内存模型基础基本结构,这个结构奠定了与内存相关的基础并发对象和内存位置每一个变量都是一个对象,包括作为其成员变量的对象。每个对象至少占有一个内存位置。基本类型都有确定的内存位置(无论类型大小如何,即使他们是相邻的,或是数组的一部分)。相邻位域是相同内存中的一部分。对象、内存位置和并发       所有东西都在内存中。为了避免条件竞争,两个线程就需要一

2016-11-07 14:47:12 1044

原创 进击的巨人(2017秋招总结)

进击的巨人        我是一名本科生,来自双非一本的电子信息工程专业,秋招中主要使用C++,收获自己理想的offer。     我的经历        我在大三下学期的时候便开始了秋招准备。那个时候正值暑期实习生招聘,年少轻狂的我一路狂投,几乎一无所获(仅收获三次面试机会:恒生武汉、亚信和一个初创公司,最后被亚信录用,然而由于时间原因,放弃实习,是遗憾也是惊喜)。这才发现自己实

2016-11-03 14:01:11 1201

原创 Cpp Concurrency In Action(读书笔记3)——同步并发操作

等待一个事件或其他条件第一,它可以持续的检查共享数据标志(用于做保护工作的互斥量),直到另一线程完成工作时对这个标志进行重设。第二个选择是在等待线程在检查间隙,使用 std::this_thread::sleep_for() 进行周期性的间歇:#include #include #include class wait_test { bool flag; std::

2016-10-31 10:52:26 2592

原创 Boost库的使用(Windows)

1、Boost库下载进入网页后点击download2、解压、执行脚本如解压到D:\boost_1_60_0,并执行bootstrap.bat文件。点击运行即可,直至控制台自动关闭。3、编译上一步生成b2.exe文件,点击运行既可,直至控制台自动关闭。4、VS2015试用A、添加环境变量添加D:\boost_1_60_0\stage\lib到path

2016-10-30 23:21:28 551

原创 LeetCode:414. Third Maximum Number

题目Given a non-empty array of integers, return the third maximum number in this array. If it does not exist, return the maximum number. The time complexity must be in O(n).Example 1:I

2016-10-29 18:01:38 538

原创 Cpp Concurrency In Action(读书笔记2)——线程间共享数据

前言上一篇:线程入门及管理(点击打开链接)。避免恶性条件竞争

2016-10-24 21:42:18 891

原创 google浏览器字体模糊问题(类似分辨率问题)解决办法

1、背景本人刚刚更新了win10几点几,反正最近的一次更新,将登陆和开始做了较好的更新,比较喜欢。但是常用的google浏览器打开时发现分辨率好像不对,但是其他浏览器都是对的,包括电脑,check后发现只有google这样。于是开始查找解决办法,从分辨率搜索到搜索字体模糊发现问题。原来是渲染不兼容。2、解决办法百度上面很多。 A、地址栏输入chrome://flags/回车(可以copy)。 B

2016-10-24 11:40:00 12810

原创 Cpp Concurrency In Action(读书笔记1)——线程入门及管理

线程入门、管理线程入门#include #include //1void hello() //2{ std::cout << "Hello Concurrent World\n";}int main(){ std::thread t(hello); //3:新线程的初始函数,启动线程 t.join(); //4:调用线程等待与t相关的线程 system("pause"

2016-10-21 19:46:09 952

原创 大数的运算实现(C++、字符串)、Git使用示例

前言:国庆前的好未来面试,让我写一个大数的乘法(字符串实现)。我Debug好久,竟然没有写出来。回来在自己电脑上两分钟就写出来了,感觉还是天天找工作,许久没有练手了,生疏了,何况还在Xcode上面。总结:代码必须天天写。类:#pragma once#ifndef _BIGINT_H#define _BIGINT_H#include const int N = 1024;c

2016-10-06 16:26:47 976

原创 链表的排序(CVTE一面)

来,跟我写个链表排序。将链表排序?对,你有什么要问我的吗?什么类型的值?int。要自己写链表?可以转换成别的容器再写吗?这个O(N)空间,你先尝试写O(1)的。嗯。于是写了2分钟。打扰一下,可以是双链表,还是只能是单链表。你终于问我这个问题了。可以是双链表。写完代码。下面先附上我回来再电脑上写的w后的代码。#include using na

2016-09-14 20:14:21 533

原创 2017秋招编程题小记

前言:此处只记录我遇到的部分编程题,而另一篇文章只记录知识点。 部分知识点记录 http://blog.csdn.net/bestzem/article/details/52434236百度(研发岗)给定初始值initVal,行rows,列cols,得到增量矩阵A,求出A*A’,并返回。函数如下:int **fun(int initVal, int rows, int cols){

2016-09-13 22:35:06 806

原创 2017秋招知识点小记(C/C++)

也许,现在是我为我大学前三年买单的时候了,虽有不甘,但是认了。我现在,只有一个选择,继续看书、刷题。趁着秋招才刚刚开始,我需要坚持不懈。每次笔试过后,我会在这里记录一些我的错题。多益:1、字符串相加string str{ "123" }; str += 49;//此时49表示的ASCII码,str="1231" str += 4;//str="123\x4"

2016-09-04 19:39:16 1613 1

原创 类型转换(C++)

static_cast#include <iostream>using namespace std;class A {public: int a; virtual void fun() { cout << "A:fun()" << endl; }};class B:public A {public: int b; virtu

2016-09-03 22:49:01 364

原创 排序(C++)

插入排序思想: 1、外循环遍历,记录当前索引对应值。 2、内循环:从当前索引往前,如果记录值要小,则这些值往后移动一步,否则,将记录值写入停止处的索引对应值。 代码: 注释掉的是我写的,而还在的是”c++ data structures and algorithms”里面的。别人写的果然好许多……#include <iostream>using namespace std;int mai

2016-09-03 22:36:11 440

原创 LeetCode:384. Shuffle an Array、随机数生成(C++)

标题Shuffle a set of numbers without duplicates.Example:// Init an array with set 1, 2, and 3. int[] nums = {1,2,3}; Solution solution = new Solution(nums);// Shuffle the array [1,2,3] and return its r

2016-09-03 22:01:04 1356 1

原创 三维数组使用单变量访问,类的大小

#include <iostream>using namespace std;class A {};class B { void fun() { }};int main(){ int three[2][2][3] = { {{1,2,3},{4,5,6}},{{7,8,9},{10,11,12}} }; //三维数组单变量访问,先除再取余。

2016-09-02 00:45:40 391

原创 LeetCode:50. Pow(x, n)

50. Pow(x, n)Implement pow(x, n).很好的题,让我对库函数的实现有了新的认识,原来他的实现与你想的并不一样,还是要多读书。 1、快速找到与结果接近的值; 2、进入递归; 3、符号的处理,以后一定要注意!!!class Solution {public: double myPow(double x, int n) { if(!n) ret

2016-08-23 19:51:16 345

原创 LeetCode:382. Linked List Random Node(蓄水池抽样算法C++)

382. Linked List Random NodeGiven a singly linked list, return a random node’s value from the linked list. Each node must have the same probability of being chosen.Follow up: What if the linked list i

2016-08-23 16:18:22 1575

原创 LeetCode: 341. Flatten Nested List Iterator

LeetCode: 341. Flatten Nested List IteratorGiven a nested list of integers, implement an iterator to flatten it.Each element is either an integer, or a list – whose elements may also be integers or oth

2016-08-21 19:14:01 547

原创 Farthest Point(微软2016校招笔试题)

Description Given a circle on a two-dimentional plane.Output the integral point in or on the boundary of the circle which has the largest distance from the center.Input One line with three floats whi

2016-08-19 11:18:10 1104

原创 全排列算法

递归不断与当前索引处元素交换,进入递归。字典序从尾端寻找第一个变小的数i,再从尾端寻找比他大于或等于最小数j,交换,将索引i后面数逆转。#include <iostream>#include <vector>using namespace std;//宏定义后面不要加‘;’或其他符号,会一致被替换除了连续符号‘\’#define N 4//permutation:递归写法//parame

2016-08-16 13:56:35 467

原创 今日头条2017后端工程师实习生笔试题

魔法权值给出 n 个字符串,对于每个 n 个排列 p,按排列给出的顺序(p[0] , p[1] … p[n-1])依次连接这 n 个字符串都能得到一个长度为这些字符串长度之和的字符串。所以按照这个方法一共可以生成 n! 个字符串。 一个字符串的权值等于把这个字符串循环左移 i 次后得到的字符串仍和原字符串全等的数量,i 的取值为 [1 , 字符串长度]。求这些字符串最后生成的 n! 个字符串中权值

2016-08-16 09:45:18 1374

原创 京东2015实习生笔试编程题

小米Gitgit是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: base’<–base<–A<–A’ ^ | — B<–B’ 小米工程师常常需要寻找两个分支最近的分割点,即base.假设git 树是多叉树,请实现一个算法,计算git树上任意两点的最近分割点。 (假设git树节点数为n,用邻接矩阵的形式表示git树:字符串数组matrix包含n个字符串,每个字符串由字符’0’或

2016-08-14 18:47:21 894

原创 LeetCode: Duplicate Emails

LeetCode: Duplicate EmailsWrite a SQL query to find all duplicate emails in a table named Person. +—-+———+ | Id | Email | +—-+———+ | 1 | [email protected] | | 2 | [email protected] | | 3 | [email protected] | +—-+———+

2016-08-13 21:15:18 484

原创 京东2016实习生研发工程师编程题

年终奖小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6*6的棋盘上进行,上面放着36个价值不等的礼物,每个小的棋盘上面放置着一个礼物,他需要从左上角开始游戏,每次只能向下或者向右移动一步,到达右下角停止,一路上的格子里的礼物小东都能拿到,请设计一个算法使小东拿到价值最高的礼物。 给定一个6*6的矩阵board,其中每个元素为对应格子的礼物价值,左上角

2016-08-13 14:32:05 1503

原创 剑指Offer: 数据流中的中位数;C++容器适配器之priority_queue

数据流中的中位数如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。维护一个最大堆,一个最小堆,两个堆大小差值小于等于1。class Solution {public: void Insert(int num) { if(big.em

2016-08-12 10:05:23 1529

原创 C++容器适配器之Queue

容器适配器之Queue标准库定义了三个容器适配器,使得已有类型得到改造,这里,他们都有默认实现,当然也可以自己传入别的容器类型参数。 根据在Primer中的阅读,做了如下test。 1、pop():队首元素移除,并无返回值,与C++风格一致。 2、front():返回队首元素,不删除。 3、back():返回队尾。 4、size():大小。 5、emplace():构造函数直接调用插入队

2016-08-10 17:03:24 504

原创 剑指Offer: 二叉树

二叉树的下一个结点给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。找出各种情况: 1、右孩子存在。寻找右子树的最左节点。 2、右孩子不存在,该节点为父节点的左子树,返回父节点。 3、右孩子不存在,该节点为父节点的右子树。若在右子树,则其父节点也是右孩子节点,跳出结束;若在左子树,则父节点为左孩子,追溯返回根节

2016-08-10 16:32:22 319

原创 剑指Offer: 链表中环的入口结点

链表中环的入口结点一个链表中包含环,请找出该链表的环的入口结点。方法一:维护一个哈希表 1、哈希容器set。 2、加入元素,通过返回值判断加入失败则是入口结点。 3、注意非环对空指针的判断。 空间复杂度比较大,如果链表很长,这个方法不再合适,但是这是一个思路扩展,显然对于hash,用处有很多。方法二:两个指针 1、先找汇聚点。 2、找到汇聚点后,fast比slow多跑的距离k*n和slo

2016-08-09 16:35:57 830

原创 图解TCP/IP(读书笔记)

图解TCP/IP(读书笔记)1、http属于OSI应用层,HTML属于表示层 2、电子邮件,发送协议SMTP(使用TCP),25端口号,接收POP3协议(TCP)–客户端管理邮件,附件管理–IMAP协议–服务器管理邮件。 3、发送时TCP模块处理:TCP首部包含源端口号和目的端口号(以确定两边同一应用),序号(数据编号,区分数据),校验和(损坏与否)。 接收时TCP模块处理:首先计算校验和,判

2016-08-08 18:27:00 665

原创 剑指Offer: 求1+2+3+...+n

求1+2+3+…+n求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。1、n次调用构造函数,对静态成员进行操作。 2、递归写法,根据&&短路使得递归结束。 3、不要怀疑自己对构造不理解,而是这里他确实有问题,对于已经初始化的静态成员,他变化不可控,因此我们需要在程序中对他再次进行初始化。这可能是他别的原因造成

2016-08-08 10:38:07 534

原创 剑指Offer: 数字在排序数组中出现的次数、和为S的两个数字、数组中只出现一次的数字

数字在排序数组中出现的次数统计一个数字在排序数组中出现的次数。class Solution {public: int GetNumberOfK(vector<int> data ,int k) { int sz=data.size(),count{0}; for(int i=0;i<sz&&data[i]<=k;++i){ if(da

2016-08-07 20:21:10 278

原创 剑指Offer: 翻转单词顺序列、左旋转字符串

翻转单词顺序列牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?class Soluti

2016-08-07 20:18:17 759

原创 剑指Offer: 二叉树的深度、平衡二叉树

二叉树的深度输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left

2016-08-07 20:16:13 608 4

原创 剑指Offer: 和为S的连续正数序列

和为S的连续正数序列小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!只需要确定起始位置和结束位置。clas

2016-08-07 20:12:44 488 2

空空如也

空空如也

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

TA关注的人

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