- 博客(21)
- 收藏
- 关注
原创 C语言struct定义新类型
定义和使用struct NewType1 {int a;}; //定义新类型struct NewType1 variable1; //使用,用新类型定义变量-》注意:C中必须加struct,struct NewType1才可以认为是类型名;C++中则不用特别用法:直接使用新类型中定义变量,无名字结构体(1)struct NewType2 {int a;}variable2; 直接在定义新类型中定义变量(2)struct {int a;}; //没有名字的结构体,语法虽然没有错,但没有意义,无法去.
2020-06-06 17:06:26
1041
原创 构造的优化
C++比C语言开销大的原因之一就是,不经意间构造函数中的反复调用,但我们可以人为的控制这一点。1. 编译器的自动优化;2. 程序员编程规范;3. 右值引用
2019-09-24 09:28:21
228
原创 跨平台开发集群聊天项目零——大纲
项目由三个:服务器、客户端、负载均衡器服务器分为四层:socket、service、model、mysql,除此之外还main.cpp、json.cpp、public.cpp等文件service层有三个文件:基类(BaseService)、单服务器(SingService)、多服务器(ClusterService)
2019-09-23 19:53:26
196
原创 #define与typedef、cosnt、using、inline
#define在预编译时宏替换,容易出错,那么有什么方法可以改善呢?答案肯定时有,我们从替换类型、替换常量、替换表达式三个方面分析。
2019-09-12 13:06:43
143
原创 跨平台开发集群聊天项目三——TCP编程(epoll和线程池)
项目中直接用的moduo库,但我这里想要自己写一下简单epoll和线程池,但结果并没有写出来,这里记录下学习进度,以后有能力再完成吧。一、TCP编程TCP编程协议是面向链接的,可靠的,字节流服务,这个在编程中就有体现(socket bind listen accept connect),头文件#include <sys/socket.h> 。int socket...
2019-09-02 16:15:54
364
原创 跨平台开发集群聊天项目一——环境配置
环境配置:安装VS在工作负载中需要选择C++的Linux开发安装虚拟机安装Ubuntu安装open-vm-tools(1)让ubuntu的界面和虚拟机界面相适应(2)共享文件 -》 :D/share安装mysql(1)apt-get install mysql-server 安装mysql服务器(2)apt-get install libsqlclient-dev 安装开发...
2019-08-29 20:32:24
173
原创 动态规划
动态规划:(1)将大问题变为小问题,大问题的解决依赖小问题的答案,但集合间重合。这一点比较像分治算法,不过分治算法的各个区间互相独立,递归深度遍历时间复杂度(log2n)。(2)先找出小问题的最优子集,继而找出大问题的最优子集 。这一点像回溯算法子集树,子集树也是寻找最优子集,不过子集树是通过递归,穷举出所有情况(2^n)然后再判断(虽然也有剪枝操作)。(3)分析问题的方式:a.可以从上往下...
2019-08-24 16:44:43
142
原创 排序
主要内容:1.冒泡、选择、希尔、插入、快速、堆排、归并;2.排序间的比较;3.时间复杂度的优化思想;一、七种排序冒泡排序BubbleSort:从头开始遍历,每次向前冒时,都要与下一个数比较,如果当前小就交换两者,这样最大的数就冒到最后了。选择排序SelectSort:从剩余集合中选择除最大的元素与首位交换,代码min是选择的最小元素。直接插入排序InsertSort:不断地将第n...
2019-07-13 12:45:48
108
原创 gcc/g++/gdb
目录一、基础部分1. gcc和g++的区别2. makfefile的编写二、gdb调试1.启动gdb2.设置断点b3.开始调试r4.打印s/display5.下一步n/s6.退出q三、调试问题1. Segmentation fault (core dumped)四、gcc与VS的区别1. void fun(a){}2. int ar[n];3. nullptr;...
2019-07-08 14:37:15
2491
原创 vim基础操作
本文分三章:vim基础、单文件操作、分屏操作、分页操作一、vim基础基础部分vim操作分三种模式:编辑模式、命令模式、末行模式其中莫行模式的很多命令可以写入vimrc文件中,区别:末行下输入:mouse=a ,仅在当前文件当前编辑下有效,退出再重进就无效了再vim得配值文件vimrc中添加 set mouse=a , 所有文件永久有效vimrc的配值安装vim时会自动安装在...
2019-07-05 10:44:05
260
原创 学习笔记:栈的使用
首先,栈是什么?不就是削减了功能的容器,相比vector,栈只能对栈顶元素增删查,那么不就是一个弱化版的vector吗,很多原有的功能都不能用了,我刚开始就觉得,还不如直接用vector或list呢!但,功能的简化反而使我们的思考聚焦于要解决问题的核心,听起来没什么道理,不是功能多才利于解决问题吗?功能多让我在解决问题时有更大的操作空间,相反不久自缚手脚了吗?注意上面这句话重点在聚焦于解决问题...
2019-07-04 21:29:30
164
原创 signal修改信号的响应方式
信号:系统预先定义好的特定事件,信号可以被产生,也可以被接收,产生和接收信号的主体是进程。signal——修改信号的相应方式typedef void (*Fun) (int);Fun signal(int signum, Fun fun);参数int signumsignum代表信号类型,类型是整型int。举例:SIGINT 、 SIGCHLD、 SIGKILL、 SIG...
2019-03-12 15:55:05
638
原创 汇编指令与函数调用
核心内容:(1)简单函数调用所用的反汇编(2)反汇编语言命令:mv、push、pop、call、add、sub;(3)寄存器:ebp、esp、eax、ecx、eip;通过下面的例子说明:5.1 int sum(int a, int b)5.2 {5.3 int c=a+b;5.4 return c;5.5 }1.0 int main()2.0 {3.0 int ...
2019-03-11 10:24:53
3178
原创 C与C++的const
变量的读写权限const:将将变量变为只读const修饰指针:const可以修饰指针时有两种情况,即p和*p,同时,指针可以通过解引用来改变原变量的值,面对此情况,遵循:权限可以同等或者缩小传递,但不能放大传递。上面代码红色波浪线代表编译不通过,重点分析:p1=&b;//错误:权限不能放大传递,为什么不能放大传递呢?(1)因为:如果p1=&b成立,那么p1就可以通...
2019-01-15 23:10:28
164
原创 Linux初学-文件的权限
本文是在,VMware虚拟机上Red Hat操作系统,操作。权限是文件的属性,是在文件上设置的,它对不同的用户有不同的权限。在Linux中,一切皆文件,而对文件的分类有5种(1)普通文件:除了以下四类的都是文件,对应于window意义上文件,包括.c、.txt、.pdf、.doc等等。(2)目录文件:window意义上的文件夹。(3)链接文件:window意义行的快捷方式。(4)官道...
2019-01-11 21:22:07
176
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人