C_C++ Learning
WA说
喜欢折腾,对微服务实践有自己深入的了解。
涉猎语言Java,Python
涉猎框架Spring Cloud/Dubbo/Spring Framework
展开
-
c_c++基础问题(平时读书时笔记)
1 IP私有地址:10.0.0.0 -- 10.255.255.255172.16.0.0 -- 172.31.255.255192.168.0.0 -- 192.168.255.2552OS中页面调入调出顺序:好比上地铁,旧的人先下来,新的人才能上去,所以页面调出为先,再是页面调入。页面调出之前又必须决定哪些页面需要调用。3 数据库是的记录可以重复,主键要求既原创 2013-07-28 11:39:15 · 1125 阅读 · 0 评论 -
C++中cin函数深入分析
很多初学者都认为cin函数是一个很简单的函数,其实不然!cin函数有很多需要了解的知识(比如:cin的返回值是什么,cin提供了哪些成员函数且分别是什么作用,如cin.clear(), cin.ignore(), cin.fail(), cin.good()等等),如果没有很好的掌握,在使用的时候很可能会出问题却不知其原因!而且很多人也确确实实遇到过不少问题,以下是几个简单的例子:程序1:转载 2013-08-25 11:43:52 · 1657 阅读 · 0 评论 -
C++中delete, new以及new [], delete[]操作符内幕
人们有时好像喜欢故意使C++语言的术语难以理解。比如说new操作符(new operator)和operator new的区别。 当你写这样的代码:string *ps = new string("Memory Management"); 你使用的new是new操作符。这个操作符就象sizeof一样是语言内置的,你不能改变它的含义,它的功能原创 2013-08-25 14:39:13 · 690 阅读 · 0 评论 -
最长递增子序列的求解--动态规划求解
动态规划的基本思想(百度百科) 动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治原创 2013-08-15 21:56:56 · 1486 阅读 · 0 评论 -
两个整数集合A和B,求其交集
两个整数集合A和B,求其交集。 1. 读取整数集合A中的整数,将读到的整数插入到map中,并将对应的值设为1。 2. 读取整数集合B中的整数,如果该整数在map中并且值为1,则将此数加入到交集当中,并将在map中的对应值改为2 通过更改map中的值,避免了将同样的值输出两次。下面为源码:#include #include using namespace std;原创 2013-08-28 22:15:00 · 9609 阅读 · 0 评论 -
volatile详解
1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内存变量缓原创 2013-08-18 02:40:49 · 996 阅读 · 0 评论 -
归并排序的递归实现与非递归实现
归并排序归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。值得注意的是归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。算法描述归并操作的工作原理如下:第一步:申请空间,使其大小为两个已原创 2013-07-25 22:11:23 · 2110 阅读 · 0 评论 -
二叉搜索树的详解(算法导论读书笔记)
什么是二叉搜索树?一棵二叉树的节点x,如果y是x左子树中的一个节点,那么y.keyx.key二叉树的数据结构typedef int data_t;typedef struct BST{ data_t data; struct BST *left; struct BST *right; struct BST *parent;}BST;二叉搜索树的遍历我们可以通过原创 2013-08-18 10:30:47 · 1333 阅读 · 0 评论 -
守护进程的详解与创建
守护进程守护进程是一种后台运行并且独立于所有终端控制之外的进程。为什么需要有独立于终端之外的进程呢?首先,处于安全性的考虑我们不希望这些进程在执行中的信息在任何一个终端上显示。其次,我们也不希望这些进程被终端所产生的中断信号所打断。最后,虽然我们可以通过&将程序转为后台执行,我们有时也会需要程序能够自动将其转入后台执行。因此,我们需要守护进程。守护进程的启动要启动一个守护进程,原创 2013-08-18 00:20:53 · 1393 阅读 · 0 评论 -
c++内存布局
一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。2、堆区(heap) — 在内存开辟另一块存储区域。一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。原创 2013-09-29 14:05:15 · 991 阅读 · 0 评论 -
栈的push、pop序列
题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push 1,push 2,push 3,push 4,pop,push 5,pop,pop,原创 2013-08-12 22:31:54 · 1820 阅读 · 0 评论 -
释放对象数组:delete与delete[]
>练习 14.11 中提到: Account *parray=new Account[100]; delete parray; delete [] parray; 方括号的存在会使编译器获取数组大小(size)然后析构函数再被依次应用在每个元素上,一共size次。否则,只有一个元素被析构。 无论哪种情况,分配的全部空间被返还给自由存储区。 我转载 2013-08-25 14:37:59 · 2054 阅读 · 0 评论 -
一段简单c程序的汇编语言学习(ubuntu+x86)
c程序代码:#include int main(void){ int i=0, j=0; for(i=0; i<8; i++) j=j+1; return 0;}汇编代码如下:.file "test_asm.c" 2 .text 3 .globl main 4 .type main, @fun原创 2013-07-28 17:02:05 · 1490 阅读 · 0 评论 -
库函数与系统调用的区别
系统调用和库函数的关系 系统调用通过软中断int 0x80从用户态进入内核态。 函数库中的某些函数调用了系统调用。 函数库中的函数可以没有调用系统调用,也可以调用多个系统调用。 编程人员可以通过函数库调用系统调用。 高级编程也可以直接采用int 0x80进入系统调用,而不必通过函数库作为中介。 如果是在核心编程,也可以通过int 0x80进入系统调用,此时不能使用函数库。因为函数库中的原创 2013-07-28 11:15:20 · 939 阅读 · 0 评论 -
找出二叉树中和为n的路径
题目描述:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。二叉树中的路径从二叉树的根节点出发,至二叉树的叶子节点的一条直线,称为二叉树的一条路径例如:输入整数22和如下二元树10/ \5 12/ \4 7则打印出两条路径:10, 12和10, 5, 7。思路:原创 2013-08-05 22:25:03 · 2826 阅读 · 0 评论 -
有向图的遍历算法
有向图基本算法 -- 遍历算法1. 图的表示2. 有向图的遍历算法:深度优先3. 有向图的遍历算法:广度优先4 代码反思5. 下载 1. 图的表示 1.1 图的定义图G定义为V和E的集合G={V, E},其中V表示图中的所有的顶点集合,E表示的是G中的所有的边的集合。图按照E中的元素是否有方向,分为有向图和无向图。 1.转载 2013-08-19 20:43:55 · 2803 阅读 · 0 评论 -
求两个字符串的最长公共字串(连续)
题目描述:输入两个字符串,求其的最长的公共的字串,这与最长公共子序列不一样输出两字符串的最长公共字串思路一:从字符串A开始遍历,同时遍历字符串A,找到第一个与当前字符串A相同的字符,此时记下当前的pos,并同时遍历两字符串,直到找到两字符串不相同的字符,记下其长度,与max比较,大则则将相同的子串copy到max_str中C++实现#include #include原创 2013-07-27 22:34:44 · 1480 阅读 · 0 评论 -
C++中const的实现机制深入分析
问题 C语言以及C++语言中的const究竟表示什么?其具体的实现机制又是如何实现的呢? 本文将对这两个问题进行一些分析,简单解释const的含义以及实现机制。 问题分析 简单的说const在C语言中表示只读的变量,而在C++语言中表示常量。关于const在C与C++语言中的使用以及更多的区别,以后有时间另开一贴说明。那么const究竟是如何实现的呢? 对于声明为const转载 2013-08-23 10:24:35 · 954 阅读 · 0 评论 -
C++的类型转换符
使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。 1 static_cast用法:static_cast ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类和子类之转载 2013-08-22 23:41:01 · 701 阅读 · 0 评论 -
虚函数详解
C++ 虚函数表解析前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议转载 2013-08-23 01:42:18 · 2075 阅读 · 0 评论 -
标准I/O的缓冲机制的实例讲解
标准I/O库对每个I/O流自动进行缓冲,从而避免了应用程序为了减少read和write系统调用而设置合适的缓冲区长度。标准I/O提供了三种类型的缓冲我们下来看一个《unix环境高级编程》上的一个输出标准输入,标准输出,标准出错和普通文件的缓冲信息的例子 4 void pr_stdio(char *,FILE *); 5 6 int main(void){转载 2013-08-23 22:54:13 · 1029 阅读 · 0 评论 -
c++中static_cast与dynamic_cast用法小结
static_cast: 1. 可用与基本数据类型之类型之间的转化, 但不可用与不同基本数据类型指针之间的转换 2. 可用于基于继承的指针对象或引用之间的转换,但是不是用动态类型识别机制dynamic_cast: 用于基于继承的指针对象或引用之间的转换,基于动态类型识别机制,若两个指针对象类型不一致,则返回空指针。基于引用转换时,类型不一致则抛出bad_cast异常原创 2013-10-03 00:05:08 · 1215 阅读 · 0 评论