- 博客(68)
- 收藏
- 关注
原创 动态库的创建和调用
一、动态库的创建动态库是Microsoft Windows组件模型的核心,动态库是一个可执行的模块,包含一些独立的文件,但是额应用程序不同,动态链接库没有自己的消息循环,且不能单独执行,需要通过应用程序或者其他发动态库调用才能被执行,动态库一般是封装了一些函数的功能的函数集合,用来提供给其他的函数来调用;文件1:主要是输出函数 文件名:sample_01.def (名字以.def后缀
2017-11-15 15:24:40 1175
原创 面试的经典问题--函数中开空间
查看运行结果 1.void GetMemory(char *p){ p = (char *) malloc(100);}int main(){ char *str = NULL: GetMemory(str); strcpy(str,"hello world"); printf("%s",str);}运行结果:崩溃:p的地址没有带出来;2.char * GetMe
2017-10-29 21:34:41 353
原创 tcp和udp的区别
tcp和udp都是传输层的协议,可是区别;1.面向连接:tcp是面向连接的,udp是无连接的; 2.通讯结束:tcp需要靠四次挥手关闭连接,udp不需要 3.连接数 : tcp是一对一的,udp是一对多的 4.可靠性: TCP是全双工可靠的,采用的超时重传来实现的; UDP是不可靠的,可能存在丢包现象,需要程序员自己确定; 5.TC
2017-10-29 21:11:59 466
原创 笔试面试---不经意的strcpy
1.strcpy 我们在笔试还是面试的过程中,还容易被问道strcpy的实现;我们一看很简单,往往忽视了很多方面的细节,导致实力 注意点: 1.src的地址为空 2.src和dest的地址相同的时候; 3.返回值 4.const 的src 我们要写简洁的、正确率高的代码char *strcpy(char *dest,const char* src) { if(src =
2017-10-29 20:42:55 353
原创 修改数据 -修改+添加+删除
1.修改数据 UPDATE(1)修改一行数据: 例子:把刘伟老师转到信息系 UPDATE T SET Dept=’信息’ WHERE TN =’刘伟’(2)修改多行 例子:把所有的学生年龄加一岁 UPDATE S SET Age = Age +1 例子:将教师表中所有工资小于或等于1000元的讲师的工资
2017-10-29 14:43:50 4610
原创 查询数据
数据的查询是一个非常庞大,繁琐的,先从关键字开始检索,介绍。1.基本查询:WHERE 根据WHERE的子句检索条件; FROME 指定视图所满足的原祖; SELECT 指定列 GROUP 对查询的结果进行分组; ORDER 查询结果按照ORDER子句进行排序;多表时,WHERE是连接的条件;SELECT *FROM S;//列出s表的全部列名; SELECT DIST
2017-10-23 19:41:27 943
原创 数据库的修改+删除
修改数据表 1.ADD方式:增加新列和完成性的约束,定义和CTREATE TABLE一样; 2.2.ALTER方式:修改某些列3.DROP方式: 只删除完整性约束的定义;
2017-10-23 17:27:59 350
原创 数据库的学习--概要
sql:是一个基本的虚表;是一个相互之间独立的表,是一个存储文件,有三层模型:外模型、模式、内模型;SQL语句的特点:1.语法简单、简单易用; 2.是一个一体化的语言,可以完成数据的定义、查询、操纵、控制等方面的功能; 3.SQL是一个一体化的语言,用户不需要知道内部发生了什么,只需要知道子啊做什么就行; 4.SQL是一个集合语言,是含有很多的关系; 5.是一个即使嵌入式语言优势一个自含式语
2017-10-23 17:06:34 384
原创 多进程编程
1.fork调用pid_t fork(); 这个函数的每次调用都会返回两次,在父进程中返回子进程的pid,在子进程中返回0;失败返回-1; fork在复制的时候,在内核进程中创建一个新的进程表项,新的表项很多东西和原来的进程是相同的,比如:堆指针、栈指针、标识寄存器的值。但是也有很多属性是不相同的,例如PPID,信号位图被清除。 子进程的代码和源代码完全相同,它复制了父进程的数据(堆数据、栈
2017-08-03 19:15:26 272
原创 I/O复用及它们之间的区别
1.select用途:在指定的时间内,监听用户感兴趣的读事件、写事件和异常事件。1.1 select API int select( int nfds , fd_set readfds, fd_set writefds, fd_set *exceptfds , struct timeval *timeout); 参数介绍: nfds :指定被监听的文件描述符的总数,通常是最
2017-07-31 18:25:37 1283
原创 服务器编程框架
服务器基本框架 I/O处理单元:单个服务器: 用于连接新的客户端,接受客户端信息,并将服务器的消息返回给客户端;服务器集群: 实现负载均衡,选取负载最少的服务器为新的客户端服务;请求队列:单个服务器:选择一种方式通知逻辑单元处理该请求;服务器集群:请求队列之间预先建立的、静态的TCP连接,这种TCP连接可以增加服务器之间交换数据的效率。逻辑单元:单个服务器:通常是一个进程或者
2017-07-31 10:08:33 224
原创 C++面试宝典
1.函数重载和覆盖的区别?2.模板为什么不能分离编译?3.虚函数如何内存分配?4.如何防止构造函数隐士提升?5.malloc底层实现?6.malloc底层如何防止内存碎片?7.const修饰的成员函数,是否可以修改它的成员变量?8.new[1]可否用delete?9.空的vector,求sizeof?
2017-07-11 22:52:50 314
原创 编译--链接--被执行
一串代码从写入编译器到最后被执行,到底中途经历了什么?c语言中有一个经典的例子helloworld,这是每一个程序员踏入编程之路的第一步,哈哈,一入佛门深似海,从此节操是路人。刚开始我们很懵,不知道什么,也不敢多问,可是学习了很久之后,你发现你的问题变得多了,为什么就会被编译器给打印出来hello world?为什么必须这样子写才能被执行出来hello world?怎么存放,怎么执行?等等,你就是
2017-07-09 20:28:44 347
原创 【源码剖析】LINUX下的系统调用
LINUX下的系统调用注: 我这里看到源码是linux 2.6.11版本的源码;系统调用是什么东西,这个才能开始后续工作。系统调用举个例子更容易理解,假如你想找个“铁饭碗”,你是不是得托人给领导送礼呀。你个平头百姓怎么会平时接触到那些大领导呢,你肯定是费尽心机地找到了一个“铁关系”,这个“铁关系”作为中间人,将你的意思传达给大领导,大领导帮你开个后门,你是不是就有了一个”铁饭碗
2017-07-09 14:51:51 1439
原创 单例模式--改进版
C++讲究的是代码的封装和复用,那么今天学习的设计模式,就是为了提高代码的可重用性。单例模式是最常见,最基本的设计模式。 单例模式特点:保证系统中一个类只能有一个实例而且易于被外界访问。 为什么会有单例模式? 对于一个系统来说,只有一个实例很重要,例如,一个系统中可以存在多个打印机,但是只能有一个正在工作的任务;windows只能打开一个任务管理器,如果你不这些窗口进行控
2017-07-08 16:32:24 335
原创 C++知识库
C++刚学习阶段。相信大家一定也是也是区分了c/c++的区别,那么C++的知识库就先从c和c++的区别开始;1.指针和数组的区别2.指针和引用的区别3.函数重载4.静多态和动多态5早绑定和晚绑定(静态绑定和动态绑定)6.内存泄露7.malloc底层的实现8.STL的容器9.常用的设计模式10.一个程序从开始编写到最后执行,都发生了什么 分
2017-07-06 19:06:38 446
原创 LINUX系统常用的文件操作命令
linux系统下常用的文件操作命令 1.查看当前的路径(pwd) 直接一个pwd,就可以知道你现在所处的绝对路径; 可以看出当前处于桌面状态,是绝对路径。 2.改变目录(cd ..) LIinux下一切皆文件,那么想要切换目录,就是很频繁的操作。 cd .. 进入上一层目录。 cd ./tmp
2017-06-01 10:35:44 570
原创 TCP/IP协议族(TCP/UDP的区别)
TCP/IP协议族 介绍一下概念,TCP/IP协议是一个分层、多协议的通讯体系。 结构:TCP/ip协议族是一个四层协议系统,包括了数据链路层、网络层、传输层和应用层。 分层分析: 1、数据链路层:常用的协议是ARP协议(地址解析协议)和RARP协议(逆地址解析协议)。 2、网络层(两台通讯设备之间通讯的路由器):
2017-04-30 21:21:06 2406
原创 AVL树的基本旋转和调平
AVL树的基本旋转和调平 概念:什么是AVL树,简单的来说,就是一颗排序并且是高度平衡的一棵二叉树。 那么二叉树是怎么做到的呢?肯定是不断的插入不断调节。 结构: struct AVLNode { AVLNode *parent; AVLNode *leftchild; AVLNode *rightchild; int balance;
2017-04-18 22:22:08 493
原创 两个栈实现一个队列
//两个栈实现一个队列/*两个栈实现一个队列,也要满足队列的基本操作,就是先进先出思想:1号栈(负责打印),2号栈(数据中转) 1.先让数据进入1号栈,此时数据都是逆的。 2.然后往2号栈里入,入到1号栈里面只有一个元素的时候在打印; 3.1号栈出栈打印,当1号栈出栈尾空的时候,吧2号栈里面的所有元素都转入1号栈中 4.重复2,*///1号栈(负责打印)void
2017-04-17 11:21:27 207
原创 线索二叉树的建立和中序遍历
#includeusing namespace std;typedef char Elemtype;typedef enum{LINK=0,THREAD=1}linktype;typedef struct BiThNode{ Elemtype data; BiThNode *leftchild; BiThNode *rightchild; linktype ltag;
2017-04-11 20:23:25 839
原创 二叉树的遍历你会几种方法
二叉树的遍历 一棵二叉树的基本操纵,在这片博客里有记录:点击打开链接 一棵二叉树的多种建树方法也在这篇博客中:点击打开链接 今天这篇博客就是教你多种遍历的方法。咋们平时都知道一棵树的基本遍历就是先序,中序,后序。那么你也许会直接想起递归的实现遍历,那么你到底还会不会其他的方法。 今天这里教你三种方法。第一种:递归的二叉树遍历。第二种:用栈实现二叉树的遍历第三
2017-04-05 15:26:36 479
原创 一棵二叉树的基本操作
#include#include#includeusing namespace std;typedef char Elemtype;typedef struct BtNode{ struct BtNode *leftchild; struct BtNode *rightchild; Elemtype data;}BtNode;int Depth(BtNode *p);
2017-04-04 18:24:08 1206
原创 二叉树的建立方法,你都懂吗?
二叉树的建立方法,你都懂吗? 二叉树是很简单,但是你真的会所有的建树方法吗?这里将会给你提供7种建树方法。 第一种:就是只利用先序建树,递归建树(但是先序必须是完整的,用#表示NULL) 第二种:利用先序传引用建树。 第三种:利用先序和二级指针建树。 第四种:给定某一个节点(这个节点是引用传进去)左右孩子。 第五种:给定某一个节点(这个节点是指针
2017-04-04 18:22:09 4930 1
原创 C很简单,但是你真的这些都会吗?
对于学计算机的孩子来说,c语言是最简单的,基础学科,但是往往在学习的过程中,你忘了很多细微的知识点,下面的知识点是我复习的过程中总结出来的,你真的全会吗? 1.sizeof的理解; int i = 0;printf("%d\n",sizeof(++i));printf("%d\n",i); 大家觉得这个代码的输出是什么呢?也许你很自信的觉得是4,1.但是你好
2017-03-21 18:27:54 246
原创 心理战
我今天想在这里不是告诉别人,而是写给自己的一段话,如果你和我有相同的感受,你可以看看的我的经验之谈,希望对你有帮助。 我从小就是老师学生眼里的好学生,小学的时候,我是我们班的学习委员,成绩在我们班从来不会出前三名的那种,抱这种被别人羡慕的心理。我上了初中,刚上初中那会,还是超自信的那种,但是我慢慢发现我身边总有那么一个人,跟我奇虎相当,但是我永远也超越不了的人,往往那个人都是我最好
2017-03-01 16:34:59 282
原创 C++所有容器的共同操作
C++库中还有很多的容器:vector,list (双向链表),queue,stack,set,map,等等。但是他们都有一些共有的操作。 1.== 和 != 运算符,都是返回true和false; 2.赋值(=),是将一个容器赋值给另一个容器。 3.empty都是返回的true和false; 4.size都表示,容器内部,现在持有的元素个数。 5.cl
2017-01-03 18:36:26 407
原创 作为程序员,也许其他的也许可以不看,但是这些你值得一看(细节决定成败)
1、静态变量的初始值为什么是0; 答:全局变量和静态变量都在静态数据区,他们是在main函数之前就已经创建了,在main函数结束后,才销毁,在代码中根本没有机会初始化他们(万一在函数中使用,他们的值就有可能是随机数,而且在你不赋值的情况下,一直是原来那个值),于是语言及其实现就提供了一个默认的全局初始化器0。2.什么是初始化,什么是赋值: 答:初始化是在对象(变量)创建的同时,
2016-12-26 20:42:28 380
原创 二维数组中的查找
查找,这个次对于初学的程序员来说,就是很常见的字眼。那么简单的说就,在一堆数中寻找你要找的那个数,很简单就是挨个排查。那么c最讲究的局势效率,那么效率多少呢。 先简单的说一说以为数组,为了提高效率,引出了二分查找,那么二维数组有么有这么类似的二分查找。来提高二位数组的效率呢? 今天来介绍一个在二维数组中的“二分查找”。
2016-12-16 14:12:43 1922
原创 mysu的实现
命令解释器:http://blog.csdn.net/qq_35256722/article/details/53316066ls的实现: http://blog.csdn.net/qq_35256722/article/details/53323238pwd和clear 的实现:http://blog.csdn.net/qq_35256722/article/details/533226
2016-11-24 23:32:34 565
原创 ls基本功能的实现
要说我们的命令,那不可少的就是ls,那么ls就是列出当前目录下的文件。这里有命令解释器的实现:http://blog.csdn.net/qq_35256722/article/details/53316066包含pwd和clear命令:http://blog.csdn.net/qq_35256722/article/details/53322604函数介绍: 1.struct d
2016-11-24 18:47:17 573
原创 pwd和clear 基本功能的实现
在上一篇博客里面我自己实现了一个命令解释器,那么这个我们先看看最常用的命令,在这片博客里面我们将会看到,两个简单命令的实现,pwd和 clear 。第一个:pwd#include#include#include#includeint main(){ char path[128] = {0}; getcwd(path,128); printf("%s\n",path);
2016-11-24 17:59:18 758
转载 printf 输出格式设置
printf 输出格式设置摘要:在使用Linux终端命令的时候,我们可以看到像more命令,它的显示方式与一般的字符串不同,是用了反显。同样,linux C下printf还有很多其他不常见的格式化输出形式。本文主要为你盘点这些形式。/*linux下gcc测试可用*/printf("\033[47;31mhello world\033[5m");47是字背景颜色, 3
2016-11-24 17:53:00 517
原创 自己的shell
相信接触过linux过,听过的人都知道linux的源代码是公开的,那么我们是不是可以看看我们平时最常用的命令是怎么实现的吧!看其实没那重要,重要的是你要裂解,然后根据自己的理解自己实现,然后和源代码做对比,学习借鉴,取长补短,那应该是一种比较好的学习方式了吧! 那我今天就来把我自己的想法写在这里!在写命令之前,我们都知道,命令必须在命令解释器下,才能完美的运行起来,脱离这个平台,那
2016-11-24 17:12:08 349
转载 Linux下vim配置IDE
我的vim IDE界面: 1、安装Vim和Vim基本插件首先安装好Vim和Vim的基本插件。这些使用apt-get安装即可:lingd@ubuntu:~/arm$sudo apt-get install vim vim-scripts vim-doc其中vim-scripts是vim的一些基本插件,包括语法高亮的支持、缩进等等。vim中文帮助文档tar包下载地址:
2016-10-31 23:17:52 1323
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人