08 2017 档案

摘要:丑数 因子只含2,3,5的数称为丑数。 怎么求第K大的丑数呢。K可以为10^7 最简单的做法是,对每个数判断是否为丑数。 复杂度为O( n * log(n) ),理论上是不行的。 uglys[i] 来保存所有丑数,uglys[0] = 1 因为要按从小到大产生一个新的丑数。这个丑数必然为之前某个丑数 阅读全文
posted @ 2017-08-30 18:22 chenhuan001 阅读(154) 评论(0) 推荐(0) 编辑
摘要:1. c++在调用构造函数时,才会把最开始的虚表指针指向虚表。 2.在构造函数或者析构函数中调用虚函数。 编译上没有问题。 运行时,调用虚函数不会发生多态行为,会调用正在构造的类的虚函数。 详细可见c++中的说明: //大意就是上面提到的运行时,因为子类没有构造好(指向虚表的指针都还没有初始化),所 阅读全文
posted @ 2017-08-30 12:24 chenhuan001 阅读(2233) 评论(0) 推荐(0) 编辑
摘要:1. 简单的介绍下红黑树? a. 红黑树是一种平衡二叉查找树(简称平衡树,常见的平衡树有AVL,红黑树。AVL树的性质为:每个结点的左右子树的高度之差的绝对值最多为1。) b. Java集合中的TreeSet和TreeMap,C++ STL中的set、map,以及Linux虚拟内存的管理,都是通过红 阅读全文
posted @ 2017-08-29 22:42 chenhuan001 阅读(1952) 评论(0) 推荐(0) 编辑
摘要:虽然现在已经不需要写汇编代码。 但是通过汇编代码理解C++语言的详细设计是很有必要的。 各种寄存器的意义: 1. esp 与 ebp esp是栈指针,是cpu机制决定的,push、pop指令会自动调整esp的值; ebp只是存取某时刻的esp,这个时刻就是进入一个函数内后,cpu会将esp的值赋给e 阅读全文
posted @ 2017-08-29 13:33 chenhuan001 阅读(476) 评论(0) 推荐(0) 编辑
摘要:c++11添加了delete关键字。 不想用那个函数,在那个函数后面加 = delete就可以了; 比如: 上述功能看似没啥作用,都delete为啥还要写。 但是,因为c++对每个类都会默认生出6个函数。有时间后我们不想我们的类被拷贝或赋值。我们可以把拷贝构造函数,重载赋值函数定义为私有。 但是定义 阅读全文
posted @ 2017-08-24 22:49 chenhuan001 阅读(1498) 评论(0) 推荐(1) 编辑
摘要:VA_LIST是在C语言中解决变参问题的一组宏他有这么几个成员: 1)va_list型变量: #ifdef _M_ALPHA typedef struct{ char* a0; /*pointertofirsthomedintegerargument*/ int offset; /*byteoffs 阅读全文
posted @ 2017-08-24 22:25 chenhuan001 阅读(666) 评论(0) 推荐(0) 编辑
摘要:转自:here 这里以一个简单的C语言代码为例,来分析函数调用过程 代码: 首先说明,在堆栈中变量分布是从高地址到低地址分布,EBP是指向栈底的指针,在过程调用中不变,又称为帧指针。ESP指向栈顶,程序执行时移动,ESP减小分配空间,ESP增大释放空间,ESP又称为栈指针。 下面来逐步分析函数的调用 阅读全文
posted @ 2017-08-24 22:08 chenhuan001 阅读(761) 评论(0) 推荐(0) 编辑
摘要:突然想到了,引用的大小是多少。按照原先的理解因为引用是别名嘛,应该和引用指向的那个变量一致吧。 但是今天在实验的时候发现却不是这样的。 结果: 阅读全文
posted @ 2017-08-24 21:18 chenhuan001 阅读(501) 评论(0) 推荐(0) 编辑
摘要:1.linux下printf是原子操作,cout不是原子操作。 阅读全文
posted @ 2017-08-24 18:25 chenhuan001 阅读(164) 评论(0) 推荐(0) 编辑
摘要://TO DO 1. 有哪些平衡树,讲下红黑树特性 2.自旋锁 c++ 3.操作系统分页与分段 4.宏实现求两个数的最小值 5.c++的锁,有几种 6.操作系统的锁 答对了 1.c++多态 2.实现strlen 3.new 和malloc的区别 项目相关: 无关键信息。 阅读全文
posted @ 2017-08-24 15:18 chenhuan001 阅读(239) 评论(0) 推荐(0) 编辑
摘要:-> 平时是对指针对象的基本操作。 A* a = new A(); a->do_something(); 直接就可以调用类内部函数。 而如果: A a;//a直接为对象时 a->func();//这个又是怎样的呢 这是由 C++ 标准规定的,对于a->mem根据a类型的不同,操作符->的解释也不同: 阅读全文
posted @ 2017-08-21 10:35 chenhuan001 阅读(144) 评论(0) 推荐(0) 编辑
摘要:结果: 首先看上述的代码,print函数是带有默认参数的。 所以调用print(), print(-1)都可以准确的输出。 这种默认参数的情况会带来有些便利。(比如初始化一个商品对象,在99%的情况在都是正常的,那么这个商品是否正常的标记就可以默认为1,特殊的1%情况,再加上) 但是有以下三个要注意 阅读全文
posted @ 2017-08-20 16:18 chenhuan001 阅读(14865) 评论(1) 推荐(2) 编辑
摘要:空类默认会产生6个函数。 空类的大小为1,为了能有一个唯一的地址标识空类对应的对象。 阅读全文
posted @ 2017-08-19 17:28 chenhuan001 阅读(246) 评论(0) 推荐(0) 编辑
摘要:我们都知道C++中有三种创建对象的方法,如下: 第一种和第二种没什么区别,一个隐式调用,一个显式调用,两者都是在进程虚拟地址空间中的栈中分配内存,而第三种使用了new,在堆中分配了内存,而栈中内存的分配和释放是由系统管理,而堆中内存的分配和释放必须由程序员手动释放,所以这就产生一个问题是把对象放在栈 阅读全文
posted @ 2017-08-19 15:34 chenhuan001 阅读(456) 评论(0) 推荐(0) 编辑
摘要://TO DO 1. std::auto_ptr源码分析 上述源码很清晰的说明了auto_ptr的原理。 auto_ptr是在普通的指针上封装了一层,用于管理指针。 构造时传入一个指针,析构是将这个指针delete。 在进行赋值,或者函数参数传递的过程中。会立即把自身保存的指针release掉。 而 阅读全文
posted @ 2017-08-19 12:11 chenhuan001 阅读(194) 评论(0) 推荐(0) 编辑
摘要:剑指offe第19题,很经典。 如果不用递归的思维做,会很麻烦。 因为对于.*、*.、*..等一些特殊情况处理会非常麻烦。 所以采用递归的思路。(如果加上的动态规划思想,记录dp[m][n]表示str + m与pattern + n是否能正确匹配。就可以把复杂度控制在O(n*n)。 阅读全文
posted @ 2017-08-19 10:04 chenhuan001 阅读(202) 评论(0) 推荐(0) 编辑
摘要:如何快速的求一个数二进制表示时1的个数呢。 除了用n&(n-1)外,还可以用下面的这种方法。 1. 最开始把相邻奇数位和偶数位相加 2. 然后相邻4位相加,相邻8为相加,相邻16为的相加。得到最后1的个数。 这种做法的复杂度的是log(位数) 阅读全文
posted @ 2017-08-16 17:50 chenhuan001 阅读(256) 评论(0) 推荐(0) 编辑
摘要:from here 阅读全文
posted @ 2017-08-16 15:08 chenhuan001 阅读(5924) 评论(0) 推荐(1) 编辑
该文被密码保护。
posted @ 2017-08-14 15:29 chenhuan001 阅读(7) 评论(0) 推荐(0) 编辑
摘要:原文地址:find中的-print0和xargs中-0的奥妙作者:改变自己 默认情况下, find 每输出一个文件名, 后面都会接着输出一个换行符 ('n'), 因此我们看到的 find 的输出都是一行一行的: [bash-4.1.5] ; ls -l total 0 -rw-r--r-- 1 ro 阅读全文
posted @ 2017-08-12 13:16 chenhuan001 阅读(187) 评论(0) 推荐(0) 编辑
摘要:以下命令是平时经常用到的命令。 而且这些用法也是很常见的用法。 1. 将当前目录下的所有.c、.h文件中的str1字符串替换为str2字符串。 阅读全文
posted @ 2017-08-10 12:52 chenhuan001 阅读(213) 评论(0) 推荐(0) 编辑
摘要:书中讲:以下情况,Session结束生命周期,Servlet容器将Session所占资源释放:1.客户端关闭浏览器2.Session过期3.服务器端调用了HttpSession的invalidate()方法。 "一个浏览器就是一个新session,关了浏览器session就结束了"session 是 阅读全文
posted @ 2017-08-09 22:21 chenhuan001 阅读(438) 评论(0) 推荐(0) 编辑
摘要:1. 计算机网络 三次握手 第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生 阅读全文
posted @ 2017-08-05 00:19 chenhuan001 阅读(208) 评论(0) 推荐(0) 编辑
摘要:map经常把指针作为key,这种情况下。 我们经常会很自然的以为,如果要取元素时,会按照我们存的顺序拿到元素。 但是事实上不是这样的,因为map取得时候是按key的大小排序的,而如果用指针作为key,那么指针的大小就是很难预估的。 所以在用指针做为容器key时要额外注意。 阅读全文
posted @ 2017-08-04 15:24 chenhuan001 阅读(233) 评论(0) 推荐(0) 编辑
摘要:转载自:http://hi.baidu.com/klcdyx2008/blog/item/5adbf77b79f316f90bd1873c.html 1.引言C++中的模板分为类模板和函数模板,虽然它引进到C++标准中的时间不是很长,但是却得到了广泛的应用,这一点在STL中有着充分的体现。目前,ST 阅读全文
posted @ 2017-08-02 22:36 chenhuan001 阅读(5211) 评论(0) 推荐(0) 编辑
摘要:【转自】here 编写程序不容易,编写多线程的程序更不容易。相信编写过多线程的程序都应该有这样的一个痛苦过程,什么样的情况呢?朋友们应该看一下代码就明白了, 上面的代码说明了一种情形。这种多线程的互斥情况在代码编写过程中是经常遇到的。所以,每次对共享数据进行操作时,都需要对数据进行EnterCrit 阅读全文
posted @ 2017-08-02 21:50 chenhuan001 阅读(2244) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示