自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yuejiewc的专栏

new world!

  • 博客(48)
  • 资源 (4)
  • 收藏
  • 关注

原创 对象生命周期管理

对象生命周期管理先定义什么叫线程安全:就是能够在多线程环境下使用,不需要通过额外的同步代码。对象构造的线程安全要保证对象的构造线程安全,我们需要做到在构造期间不将this指针泄露出去,因为在多线程环境下,有可能其他线程会使用到未构造完成的this指针。即使我们在构造函数的最后一行,也不应该将this指针传递给其他线程,因为c++中基类早于派生类进行构造,此时有可能还要进行派生类...

2018-05-24 16:38:18 1431

原创 pagerank 算法 快速入门

背景pageRank 是Google CEO 拉里佩奇提出的一种算法,来计算互联网里的网站的重要性,以对搜索进行排名。此处为啥算法叫pagerank,因为是以Google公司创办人拉里·佩奇(Larry Page)之姓来命名。所以为了出名,大家努力的,发明个算法,以自己名字来命名的。pagerank 基本思想数量假设:一个页面越被其他页面链接,说明他越重要(ps:难怪好多技术博客的都互相链接)质量...

2018-05-23 13:55:55 749

原创 The smallest free number

The smallest free number介绍    假设给定了一个自然数的集合Set X,现在要求找出最小的一个不在集合Set X中的自然数。    现在我们假设如果集合Set X中的数据是按非降序给定的,那此时解法也非常的直观,我们只要从头开始比较X和集合[0..],第一个不同的数即为所求,但是,当Set X是以一个无序给定时,例如:[08,23,09,0

2013-12-16 21:27:20 1092

原创 Modern C++ design 第5章 Command 设计模式

Modern C++ design 第5章 Command 设计模式命令模式将发出命令的责任和执行命令的责任分离开来 Command模式两个特点接口分类;时间分离。Command保存了一个整装待发的处理请求,供将来运用。Command模式中,收集“某处理动作所需环境”的时刻和执行该动作的时刻并不相同。 可以将Command分为两类1.转发式命令forwardin

2013-10-24 20:49:48 1170

原创 C++实践之路----容器的综合运用

阅读C++ Primer第十章需求:文本查询程序需要提供的功能:(1)提供查询功能,能够根据用户输入的单词,查询到所在的行(2)根据行号,返回对应行的文本(3)根据用户输入的文件名,读入文件         这是对外的的3个功能。然后现在抽象下名字Text_Query{         Setquery(word);         Stringtext

2013-10-05 20:48:32 801

原创 C++实践之路-----计算器(1)

计算器的设计需求说明         计算器主要功能是根据用户的输入,进行适当的计算。里面需要有内置函数、变量记录功能。功能、对象         根据需要,我们可以大致抽象出一些对象来:解析器:负责解析式子,目标是将输入的字符串转换成一个算术树,逆波兰序符号表:记录出现过的符号(符号包括:变量名、内置函数、内置常量)扫描器:从左往右的扫描缓冲器并将它们转换成记号存

2013-10-01 19:22:30 1943

转载 缓存穿透、缓存并发、缓存失效

一、缓存穿透我们在项目中使用缓存通常都是APP先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果返回。这个时候如果我们查询的某一个数据在缓存中一直不存在,就会造成每一次请求都查询DB,这样缓存就失去了意义,在流量大时,可能DB就挂掉了。这个问题其实经常遇到,只是没有引起足够的重视,在我想来,如果碰到这样的问题可以在封装的缓存SET和GET部分增加个

2013-09-22 20:34:16 1270

原创 图论

今天笔试碰到几个图论的问题,以前一直没有写过,所以今天写下:1.拓扑排序多个任务,有依赖关系,求任务执行的顺序

2013-09-21 18:40:00 834

原创 百度2013校招题解

程序设计题:3:有20个数组,每个数组有500个元素,并且是有序排列好的,现在在这20*500个数中找出排名前500的数思路:可以先选出20个数组中最大的数,进行比较,选出其中最大的数,然后再从选出最大的那个数组中选出数放入20个数中比较,每次都重复步骤,直到最终选出500个数,这个复杂度是多少呢?20个数的比较可以用堆,插入一个数lgn,故总的复杂度是500lg20用这个思路写出

2013-09-20 18:13:23 963

转载 栈和堆的区别【总结】

http://www.blogjava.net/zhaojianhua/archive/2011/05/10/349900.html1.1内存分配方面:堆:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。栈:由编译器(Compiler)自动

2013-09-16 21:48:28 977

转载 STL中map、set的数据结构及底层实现

摘要:本文列出几个基本的STL map和STL set的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map, set选择问题,并分析了map, set的优势之处。对于希望深入学习STL和希望了解STL map等关联容器底层数据结构的朋友来说,有一定的参考价值。vector(向量)——STL中标准而安全的数组。只能在vecto

2013-09-15 20:53:56 1284

原创 一道渡口模拟题

一个港口上有N辆车排队,有卡车和货车,用0代表卡车,1代表货车,现在有如下规则,当同类型的车排队时,先来的车在前面,而卡车和货车来时,卡车先,除了以上规则外,还有如下规则:当有4辆卡车时,必须有一辆货车,当没有货车时,卡车可以排上,当卡车不到4量时,可以用货车补上,下面是一个例子7输入:0 0 1 0 1 0 0输出:0 1 3 5 2 6 4下面讲下思路:对于输入我们可以编号

2013-09-15 16:25:19 1908

转载 select,poll,epoll区别

select的本质是采用32个整数的32位,即32*32= 1024来标识,fd值为1-1024。当fd的值超过1024限制时,就必须修改FD_SETSIZE的大小。这个时候就可以标识32*max值范围的fd。对于单进程多线程,每个线程处理多个fd的情况,select是不适合的。1.所有的线程均是从1-32*max进行扫描,每个线程处理的均是一段fd值,这样做有点浪费2.1024上限问

2013-09-14 22:38:19 850

转载 数据库索引的实现原理

强烈建议参阅链接:http://www.linezing.com/blog/?p=798#nav-1说白了,索引问题就是一个查找问题。。。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在

2013-09-14 21:24:41 853

原创 一道智力题

一块矩形的巧克力,初始时由N x M个小块组成。每一次你只能把一块巧克力掰成两个小矩形。最少需要几次才能把它们掰成N x M块1x1的小巧克力?   我们可以这么想,因为题中只允许每次都掰一块巧克力,那我们从简单的情形考虑,当是一条1x M的巧克力时,最少需要M-1次,故对N x M的巧克力,我们可以先掰成 N条1XM的巧克力,则此时需要N-1次,再对每个1x M掰M-1次,则

2013-09-14 15:42:18 6136

原创 一道TOPK问题

今天遇到一道TOP k的变形题,题目大概意思是有10W个随机整数,然后对这些数进行如下操作:1.当能被3整除时,将此数替换为此数和其它数两两相加的数,包括数本身2.当不能被3整除时,将此数替换为原数的两倍问当变换后的数中,输出最小的K个数,复杂度尽可能低解:     此题可以先对10W个数用partition的思想,找出最小的K个数,然后对K个数进行排序,接着开始遍历K个数

2013-09-14 15:33:20 995

原创 环形缓冲区

今天笔试的时候遇到一个唤醒缓冲区问题,然后当时很多函数名都不记得了,所以写的不好,回来后写了下。 环形缓冲区实现的时候可以用数组实现,一个读和写的index,实现的时候要如何判断空间已满?空?方法1:废弃一个缓冲空间不用,当写指针+1等于读指针的时候(意思是写指针多跑一圈快要赶上读指针),此时表明空间已满。方法2:维护一个变量记录缓冲区使用大小,当大小等于缓冲区大小,则为满;当

2013-09-12 13:08:55 1333

转载 嵌入式Linux操作系统学习规划

ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2)必须掌握一个嵌入式操作系统(初步定为uclinux或linux,版本待定) (3)必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专

2013-09-12 09:54:34 1051

转载 C++ 线程安全的单例模式

废话不多说,常用的代码积淀下来。一、懒汉模式:即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread safety.使用double-check来保证thread safety.但是如果处理大量数据时,该锁才成为严重的性能瓶颈。1、静态成员实例的懒汉模式:

2013-09-12 09:08:37 1314

原创 C++单例模式

今天面试的时候问到一个单例的问题,以前看设计模式的时候看过了,当时也看懂了,但是今天自己写的时候,还是发现有很多问题,于是总结一下:定义:        单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接

2013-09-11 22:11:58 808

原创 一道谷歌面试题

今天在网上看了一道面试题:给定三个整数a,b,c,实现函数int median(int a, int b, int c),返回三个数的中位数。不可以使用sort,要求整数操作(比较,位运行,加减乘除等)次数尽量少。 并分析说明程序最坏和平均情况下使用的次数。      看到这道题,第一想法是什么是中位数?于是百度了下:中位数(Medians)统计学名词,是指将统计总体当中的

2013-08-12 10:34:59 1233

原创 二分搜索总结

编程之美上有节说各种二分的查找,于是便写了下,并给出了一些测试代码1)二分查找元素key的下标,如无 return -12)二分查找返回key(可能有重复)第一次出现的下标,如无return -13)二分查找返回key(可能有重复)最后一次出现的下标,如无return -14)二分查找返回刚好小于key的元素下标,如无return -15)二分查找返回刚好大

2013-08-11 09:54:06 1167

原创 看原理图之UART

UART原理         协议类之间的通信就跟人之间交流一样,要遵守一定的原则:1.你说的话别人得听得懂,不能有语言障碍;2.你不能说的太快,别人都来不及反应。         对上面的话用专业点的语句描述下就是:1.双方约定规则,即信号传输的协议2.双方满足时序要求                 接着我们看看简单的原理图:上面是2440和PC之间通信的示意图

2013-08-09 09:36:15 3421

原创 看原理图之GPIO

原理图之GPIO

2013-08-08 21:51:24 4930 2

原创 华为读写者面试题

题目概述:1.A,B,C,D四个进程,A向buf里面写数据,B,C,D向buf里面读数据,当A写完,且B,C,D都读一次后,A才能再写。用P,V操作实现。题目中有4个进程,然后一个写者,三个读者,对写者来说,写完一个数据后,必须等待3个读者都读完后才能继续写。此处有A和B、C、D分别互斥,然后A写完后,必须等待BCD都读完后,才能继续写,这是一个同步问题,所以总结起来就是3个互

2013-08-07 21:09:53 1499

转载 二分查找程序

地址http://blog.163.com/yuwei_1_yw/blog/static/1751722220083932157623/《编程珠玑》(第二版)一书第四章中提及过100多名专业程序员使用两个小时的充足时间编写一个简单的二分查找程序,结果发现90%的人编出的代码都有BUG,Knuth也在他的《Sorting and Searching》一书中提过,第一个二分查找程序在1946年已经

2013-08-05 21:54:11 1777

原创 二分查找

二分查找       编程珠玑第4章中提到:虽然第一篇二分搜索论文在1946年就发表了,但是第一个没有错误的二分搜索策略却直到1962年才出现,由此可见二分查找思想虽然简单,但是要写好还是很难的。       那二分查找会出现那么多错误,主要是因为什么原因呢?边界问题         在二分查找的时候,边界很重要,需要理解查找的边界是什么?         边界主要可以分为[l

2013-08-05 21:45:41 1054 1

原创 Cracking the coding interview Q1.2

题目描述 Write code to reverse a C-Style String  (C-String means that “abcd” is represented as five characters, including the null character  )写一段代码对字符串进行翻转char* reverseStr(char *str ){ if ( str

2013-08-05 18:44:47 760

原创 Cracking the coding interview Q1.1

题目描述Implement an algorithm to determine if a string has all unique characters   What if you can not use additional data structures?在不使用额外数据结构的情况下,实现一个算法判断一个字符串中的字符是否都没有重复?解析:初看到这道题的时候,脑中第一印象是前

2013-08-05 18:09:57 728

原创 编程珠玑-第二章问题A

题目:给定一个包含40亿个随机排列的顺序文件,找到一个不在文件中的32位整数,在有足够内存的情况下应该如何解决该问题?如果有几个外部的临时文件可用,但是仅有几百字节的内存,又该如何解决?首先40亿=40X10^8 = 4X10^9 ~= 4G,故40亿个随机数,即使数字都不同,也是少于32位的能表示的最大不同数字的个数的,所以必然是缺少数字的。(1)有足够内存的情况对于有足够内存的情况

2013-08-04 15:58:48 926

原创 根据前序和后序构建二叉树

编程之美上有道题是根据前序和中序来构建二叉树,当元素不同时,此树是唯一的。当要根据前序和后序来构建二叉树时,此时即使元素都不同,也不是唯一的,举个例子//    1     1//   /         \//  2         2// /             \//3             3// preorder  1 2 3// postord

2013-08-03 20:09:10 1550

原创 数组中逆序对

// 对一个数组,求其逆序数。采用归并的求法,复杂度为0(nlgn)#include bool g_InvalidInput = false;int InversePairsCore( int *data, int *copy, int first, int last ){ if ( first < last ) { int m = first + (last - first

2013-07-29 20:56:55 612

原创 字符串匹配问题

KMP算法         字符串比较算法中KMP算法大名鼎鼎,其主要思想是先进行预处理,对模式字串提取出一些有用的信息,然后再进行字符串比较,就可以减少比较的次数。         而KMP的关键是对模式串的有用信息的提取,即提取什么特征值,提取出来后可以加速字符匹配的过程。         下面举个例子来说明究竟应该提取什么特征值。字符串:abcabaabc模式串:abaa

2013-07-16 16:45:22 668

原创 微软面试题:编程实现两个正整数的除法

题目描述题目就是求两个整数的除法,不能用除号。分析:   第一眼看到这个题目的时候,想法是这个题主要考察的是代码的鲁棒性,得考虑好输入的各种情况,容错性得做好了  先搞清楚输入是什么?两个32位?的有符号、无符号整数?返回的是什么?是float型?还是int型,这都是需要先搞清楚的。 此处假定输入是两个32位的有符号整数(int),返回是int。接下去,想下测试用例

2013-07-16 10:05:41 1909

原创 输出字符串子集

问题描述/* * 列出所有的子集 * 列如:输入:ABC *  输出:ABC,AB,AC,BC,B,C,A,{}表示空集合 *    */思路:解决上述问题可以用递归的思想,对于一个ABC字符串,要输出其所有的子集,那当选择第一个字符A时,有两种选择,一种选择,一种不选,此时剩下的问题就是在余下的BC中继续输出子集,这是一个相同形式的问题,但是规模变小了,由原先的3

2013-05-13 16:55:38 1509

原创 约瑟夫环问题

问题描述,100个猴子,排好队后,从1开始编号,然后开始报数,从1开始数到7的猴子退出,一直循环,问剩下的猴子是哪个?这个问题就是一个简单的队列,入队出队问题,下面是代码实现void monkeyTest(){ node *head,*p,*tail; head = (node *)malloc(sizeof(node)); head->data = 1; head->next =

2013-05-01 10:40:09 703

原创 编程之美-电话号码

电话号码的问题,书中递归方法有问题,主要是当执行过程中,如果发现有数字没有对应号码,那此时就不会进行递归,则此时是错误的,所以在进入递归之前,应该先进行判断,代码如下:void recursivePrint(int *number, int *answer, int index, int n){ if( index == n ){ for (int i = 0; i < n; i

2013-04-30 19:53:19 739

原创 linux移植

以前一直都是只移过u-boot没有移过linux,这次尝试下。       现在能够启动的是barebox,我现在准备先做的事情是在天嵌科技提供的u-boot的基础上,启动linux内核。 一、关于机器码       u-boot在启动linux内核的时候,会传过去3个参数,r0,r1,r2.分别是r0=0r1=平台编号r2=参数地址

2012-06-11 15:55:38 1698

原创 barebox分析

启动分析arch\arm\目录下是对应构架的目录Makefile文件lds-$(CONFIG_GENERIC_LINKER_SCRIPT)   :=arch/arm/lib/barebox.ldslds-$(CONFIG_BOARD_LINKER_SCRIPT) := $(BOARD)/barebox.lds配置时使用arch/arm/lib/barebox.lds链接

2012-06-08 11:06:03 2322

原创 barebox简要分析

Barebox分析        以前看程序的时候没有仔细看过Kconfig文件,这次分析barebox的时候仔细看了下,我们首先看根目录下的Kconfig文件:config SRCARCH        string        option env="SRCARCH" source "arch/$SRCARCH/Kconfig"        里面配置了构

2012-06-07 21:12:50 1663

贝叶斯方法 中文版

贝叶斯方法 概率编程与贝叶斯推断 中文版。本书基于 PyMC 语言以及一系列常用的 Python 数据分析框架,如 NumPy、SciPy 和 Matplotlib,通过概率编程的方式,讲解了贝叶斯推断的原理和实现方法

2018-01-17

c程序设计抽象思维

c程序设计抽象思维抽象设计思维一书的源代码,在网上找了好久终于找到了

2013-05-13

uC/OS-II原理与ARM应用程序设计一书的源码

uC/OS-II原理与ARM应用程序设计一书的源码,此时以iar arm为平台,进行了ucos的介绍。

2011-12-09

先进PID控制及其MATLAB仿真

详细介绍了哥各种pid的控制方法,有助于理解各种控制算法

2011-11-10

空空如也

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

TA关注的人

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