- 博客(328)
- 收藏
- 关注
原创 函数调用
函数调用 函数调用可能引发的问题1.#include <stdio.h>#include <stdlib.h>#include <string.h>void getmemory(char *p, int num){ p = (char *)malloc(num);}...
2019-04-08 10:30:00
164
原创 字符串匹配算法
#include <stdio.h>#include <stdlib.h>#include <string.h>#define ASCII_SIZE 256/*一个字符一个字符移动比较*///暴力匹配BF算法int BF_BruteForce(char *dest, char *src){ int i,...
2019-04-04 16:49:00
114
原创 关于结构体嵌套的字节大小的问题
关于结构体嵌套的字节大小的问题 话不多说,上代码。64位系统#include <stdio.h>#include <stdlib.h>#include <string.h>struct A{ short a; char b; char c; ...
2019-04-03 15:49:00
1013
原创 二叉树编程练习
#include <stdio.h>#include <stdlib.h>typedef struct TreeNode_t{ int data; struct TreeNode_t *left; struct TreeNode_t *right;}TreeNode;/* 前序创建二叉树 */Tre...
2019-03-20 19:16:00
214
原创 结构体与类
结构体与类 转载来源:http://blog.sina.com.cn/s/blog_48f587a80100k630.htmlC++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多...
2019-03-20 10:31:00
224
原创 C语言实现面向对象(转)
1、引言面向对象编程(OOP)并不是一种特定的语言或者工具,它只是一种设计方法、设计思想。它表现出来的三个最基本的特性就是封装、继承与多态。很多面向对象的编程语言已经包含这三个特性了,例如 Smalltalk、C++、Java。但是你也可以用几乎所有的编程语言来实现面向对象编程,例如 ANSI-C。要记住,面向对象是一种思想,一种方法,不要太拘泥于编程语言。2、封装...
2019-03-20 10:00:00
116
原创 一致性哈希算法
一致性哈希算法 背景在分布式集群中,对机器的添加删除,或者机器故障后自动脱落集群这些操作是分布式集群管理最基本的功能。如果采用常用的hash(object)%N算法,那么在有机器添加或者删除后,很多原有的数据就无法找到了,这样严重的违反了单调性原则。解释使用hash(object)%N,其中N是指N个cache服务器/N个节点为啥不行:...
2019-03-12 20:40:00
122
原创 哈希表及处理冲突的方法
哈希表及处理冲突的方法 哈希法又称散列法、杂凑法以及关键字地址计算法等,相应的表称为哈希表。这种方法的基本思想是:首先在元素的关键字k和元素的存储位置p之间建立一个对应关系f,使得p=f(k),f称为哈希函数。创建哈希表时,把关键字为k的元素直接存入地址为f(k)的单元;以后当查找关键字为k的元素时,再利用哈希函数计算出该元素的存储位置p=f(k)...
2019-03-11 19:36:00
2006
原创 二分查找练习
#include <stdio.h>/*非递归二分*/int HalfSearch(int a[], int low, int high, int key){ while(low <= high) { int mid = (low + high) / 2; if(a[mid] > key)...
2019-03-11 19:14:00
142
原创 Linux中Buffer和Cache的区别
Linux中Buffer和Cache的区别 1. Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚用过的数据或循环使用的部分数据,这时从Cache中读取数据会更快,减少了CPU等待的时间,提高了系统的性能...
2019-03-06 10:37:00
123
原创 c++设计模式之单例模式
单例模式:用来创建独一无二的,只能够有一个实例的对象。 单例模式的结构是设计模式中最简单的,但是想要完全实现一个线程安全的单例模式还是有很多陷阱的,所以面试的时候属于一个常见的考点~单例模式的应用场景:有一些对象其实只需要一个,比如:线程池,缓存,对话框,处理偏好设置和注册表的对象,日志对象,充当打印机,显卡等设备的驱动程序对象。这些对象只能够拥有一个实例,如果创建出了多个实例,就会...
2019-03-05 20:10:00
76
原创 c++设计模式之工厂模式
1:简单工厂模式 简单工厂模式是属于创建型模式,又叫做静态工厂方法(static Factory Method)模式,简单工厂模式是由一个工厂对象决定创建出来哪一种产品类的实例. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一类产品类(这些产品类继承自一个父类或接口)的实例。打个比方 假设有一个工厂,他能生产出A、B两种产品。当客户需要产品的时候一...
2019-03-05 19:59:00
91
原创 C++中内存泄漏的几种情况
1. 在类的构造函数和析构函数中没有匹配的调用new和delete函数两种情况下会出现这种内存泄露:一是在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存;二是在类的构造函数中动态的分配了内存,但是在析构函数中没有释放内存或者没有正确的释放内存2.没有正确地清除嵌套的对象指针3.在释放对象数组时在delete中没有使用方括号方括号是告诉编译器这个...
2019-03-05 18:37:00
162
原创 snprintf
snprintf snprintf(),函数原型为int snprintf(char *str, size_t size, const char *format, ...)。将可变参数 “…” 按照format的格式格式化为字符串,然后再将其拷贝至str中。#include <stdio.h> int...
2019-03-05 14:20:00
1025
原创 C++中构造函数调用构造函数
C++中构造函数调用构造函数 #include <stdlib.h>#include <iostream>using namespace std;struct CLS{ int m_i; CLS( int i ) : m_i(i){} CLS() { ...
2019-03-05 11:51:00
654
原创 static和extern的作用域--题目
#include <stdio.h>int count = 3;int main(void){ int i = 0, sum = 0, count = 2; for(; i < count; i += 2,count++) // count = 2 { static int count = 4;...
2019-03-04 15:22:00
145
原创 构造函数与析构函数不能被继承
构造函数与析构函数不能被继承 不是所有的函数都能自动地从基类继承到派生类中的。构造函数和析构函数是用来处理对象的创建和析构的,它们只知道对在它们的特殊层次的对象做什么。所以,在整个层次中的所有的构造函数和析构函数都必须被调用,也就是说,构造函数和析构函数不能被继承。子类的构造函数会显示的调用父类的构造函数或隐式的调用父类的默认的构造函数...
2019-03-04 14:52:00
2716
3
原创 typedef和define混用产生的错误
typedef和define混用产生的错误 最近在写代码过程中,发现一个问题,编译总是过不去,报错如下:stdint.h:120:28: error: duplicate 'unsigned'stdint.h:120:28: error: 'long long long' is too long for GCC打开std...
2019-03-04 11:00:00
613
原创 排序练习
#include <stdio.h>/*二分非递归*/int HalfSearch(int a[], int low, int high, int key){ while(low <= high) { int mid = (low + high) / 2; if(a[mid] > key...
2019-03-02 17:47:00
84
原创 链表编程练习
深刻感觉,基础很重要,闲暇时间,做简单链表编程练习。#ifndef __LIST_H_#define __LIST_H_#include <stdio.h>#include <stdlib.h>typedef struct LinkNodeList{ int data; struct LinkNodeList...
2019-03-02 17:32:00
309
原创 父类指针指向子类内存,为什么当父类的成员函数不加virtual时,访问的还是父类的成员函数,而不是子类同名的成员函数...
父类指针指向子类内存,为什么当父类的成员函数不加virtual时,访问的还是父类的成员函数,而不是子类同名的成员函数 我认为是这样,类的成员函数都在代码区,不同的类的成员函数在代码区有自己的类名称空间限制,类的虚函数在虚函数表中,程序执行的时候,是先在虚函数表中找该成员函数,如果没有找到,就去该类在代码区的成员函数中去找。所以如果父类的成员函数...
2019-03-02 11:44:00
597
原创 2019.03.02
2019.03.02 突然发现,戴耳机听音乐,比公放更容易被感动。戴着耳机听音乐,感觉自己就是整个世界,而音乐,就是自己的心声。写于毕业半年的一个雨天。 posted @ 2019-03-02 11:23 小时候挺菜 阅读(...) 评论(...) 编辑 收藏 ...
2019-03-02 11:23:00
126
原创 new和malloc的区别
new和malloc的区别 1.属性new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持。2.参数使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸。3.返回类型new操作符内存分配成功时,返回的是对象类型的...
2019-02-28 11:01:00
1134
原创 error: expected expression before 'struct'
error: expected expression before 'struct' list_entry(pos,struct _MAC_DATA,list);编译时出现如下错误:error:expectedexpressionbefore'struct'原因是:#define list_entry(ptr,type,...
2019-02-27 10:27:00
12964
原创 where和having
where和having where可以不能使用别名作为过滤条件,而having可以使用别名作为过滤条件。在ORACLE中,select 语句的执行顺序是: 1. from语句 2. where语句(结合条件) 3. start with语句 4. connect by语句 5. where语句 6. group by语句 7. having语句...
2019-02-22 14:08:00
546
原创 在join中,on和where的区别
在join中,on和where的区别 两个表在,join时,首先做一个笛卡尔积,on后面的条件是对这个笛卡尔积做一个过滤形成一张临时表,如果没有where就直接返回结果,如果有where就对上一步的临时表再进行过滤。在使用left jion时,on和where条件的区别如下:1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,...
2019-02-20 11:29:00
449
原创 指针强制转换
指针强制转换 #include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ unsigned char a[8] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x44, 0x44, 0x43}; ...
2019-02-16 11:25:00
973
原创 invalid application of `sizeof' to incomplete type `char[] '
invalid application of `sizeof' to incomplete type `char[] ' 在写代码时,我想用extern来关联一个数组,然后利用sizeof计算数组的大小,代码如下:...extern char a[];#define b size=(sizeof(a)/sizeof(a[0]))......
2019-02-15 16:41:00
831
原创 SQL在线学习网站
SQL在线学习网站 1.在线编写网页:http://sqlfiddle.com/ 2.SQL菜鸟教程:http://www.runoob.com/sql/sql-intro.html3.SQL语句在线练习 http://sample.jimstone.com.cn/xsql/4.SQL语句测验 http://www.w3school.com...
2019-02-14 15:00:00
4685
原创 (转)C++引用
(转)C++引用 前言:引用是C++一个很重要的特性,最近看了很多有关引用的资料和博客,故在此对引用的相关知识进行总结一、什么是引用引用,顾名思义是某一个变量或对象的别名,对引用的操作与对其所绑定的变量或对象的操作完全等价语法:类型 &引用名=目标变量名;特别注意:1.&不是求地址运算符,而是起标志作用2.引用的类型...
2019-02-14 11:51:00
120
原创 一个结构体指针数组内存分配问题引发的思考
一个结构体指针数组内存分配问题引发的思考 为了在程序运行过程中,将两个结构体数组合并成一个大的结构体,在节省空间的基础上,我使用一个大的结构体指针数组,来将其元素分别指向结构体数组中的结构体。实现过程中,发现这个结构体指针数组的大小是不能确定的,所以使用变长数组来声明,由于gcc编译器未支持C99标准,所以编译无法通过。进而,我使用malloc...
2019-02-14 11:21:00
1040
原创 multiple definition of 问题解决方法
multiple definition of 问题解决方法 在编写代码时,我想让两个接口的函数从公用一个,现在分为两个来使用,但是函数的名字相同,放在两个不同的C文件中,编译后发现,在链接的时候,出现如下错误:multiple definition of `函数名'分析是因为两个函数重复定义了,我将每个函数分别加上static后,编译通过...
2019-02-14 09:40:00
25451
原创 关系型数据库与非关系型数据库
关系型数据库与非关系型数据库 当前数据库分为关系型数据库和非关系型数据库关系型数据库关系型数据库:指采用了关系模型来组织数据的数据库。关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。关系模型中常用的概念:关系:一张二维表,每个关系都具有一个关系名,也就是表名元组:二维表中的一行,在数据库中被...
2019-02-13 11:20:00
150
原创 strlen()函数对一个未初始化数组的处理
strlen()函数对一个未初始化数组的处理 今天使用strlen时 ,发现一个问题,demo代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char a[3]; printf("len...
2019-01-24 21:03:00
1190
原创 dbgview
dbgview 这两天在看一个问题,matlab打不开摄像头,总是报错。尝试抓包,打印,分析代码,一直没有找出问题,后来用dbgview打印出来调试信息,找到了问题点。不得不说,这个工具真不错,以前从来不知道。dbgview是驱动开发的调式工具,一般驱动的dbgprint调式信息都能被dbgview工具捕捉到。最新dbgview的版本是4....
2019-01-24 19:42:00
1257
原创 细节决定成败
细节决定成败 1.资源申请与合理释放2.重复代码过多,封装成函数3.for循环嵌套尽量减少4.以不变应万变 posted @ 2019-01-10 10:13 小时候挺菜 阅读(...) 评论(...) 编辑 收藏 ...
2019-01-10 10:13:00
108
原创 题目:找到重复的数
题目:找到重复的数 在 1 到 n 的数字中,有且只有唯一的一个数字 m 重复出现了,其他的数字只出现了一次,请把这个数找出来。方法解析:需要考虑不同的数量级,分两种情况:1. 内存能容纳这n个数方法1:暴力查找,两层循环遍历,时间复杂度为O(n^2),空间复杂度为O(1)方法2:用快排先进行排序,然后遍历一次,比较前一个数和后一个数,若相等,...
2019-01-05 15:45:00
201
原创 如何对某一位置0或者置1
如何对某一位置0或者置1 #define setbit(x,y) x|=(1<<y) //将X的第Y位置1#define clrbit(x,y) x&=!(1<<y) //将X的第Y位清0 posted @ 2019-01-05 15:15 小时候挺...
2019-01-05 15:15:00
6634
原创 n&(n-1)位运算的妙用
n&(n-1)位运算的妙用 一、n-1发生了什么①、二进制数n,n-1后,如果最后一位是0,将向前一位借2,2-1=1。最后一位为1。如果前一位为0,将继续向前一位借2,加上本身少掉的1.则变为1。一直遇到1。减为0.所以 二进制 xxxx10000-1 = xxxx01111②、n&n-1按照上述 n=xxxx10000,...
2019-01-05 15:14:00
430
原创 异或运算实现两个数的交换
异或运算实现两个数的交换 通常的交换两个变量a,b的过程为int temp;temp=aa=b;b=temp;需借助上面的第3个临时变量temp.采用下面的方法,对于给定两个整数a,b,下面的异或运算可以实现a,b的交换,而无需借助第3个临时变量: a = a ^ b; b = a ^ b; a = ...
2019-01-05 15:06:00
294
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅