自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

关于程序员的那些事儿

一些知道的不知道的阐述。

  • 博客(35)
  • 收藏
  • 关注

原创 闻泰面经

一面:自我介绍 在校经历 黑盒和白盒 4g和5g的区别 Tcp与网络模型 日历测试用例 自身优势 反问综合面:自我介绍 介绍项目 安卓和苹果手机的区别 对测试的理解 黑盒测试和白盒测试 测试得方法 反问面试官很温柔,就像朋友之间聊天,讨论知识点。面试感觉还不错,就不知道能不能过,祈祷offer。...

2020-10-18 21:12:33 1231 1

原创 腾讯笔试总结

作为菜鸟的我,居然投腾讯,是谁给我的勇气?是谁。最终我还是去了,成功的意识到了自己是有多菜。腾讯笔试总共有五道编程题,一共两小时。那个题看起来简单,然后细思极恐。1.删除倒数第K个节点。...

2020-08-24 15:40:37 391 1

原创 进程调度算法

1.定义: 所谓进程调度算法就是说在所有进程中,哪个先执行,哪个后执行。是基于优先级的算法。优先级相同的进程按照轮转方式运行(一个接一个,重复进行)。优先级高的进程使用时间长,调度程序选择选择时间片未用完而且优先级最高的进程运行。我们可通过设置优先级影响进程调度。时间片:进程被抢占前所能持续运行的时间,系统有默认的时间片。时间片过长会让人觉得系统无法并发执行应用程序;时间片过短会增大进程切换的时长,相当大的时间用在系统切换上,运行时间就很短。...

2020-08-14 11:17:34 1101

原创 fork与vfork的使用

1.fork 创建进程 函数原型为pid_t fork(void). 函数返回类型为pid_t实质为int 类型。 fork函数会生成一个新进程,该进程为子进程,调用fork函数的进程为父进程。fork函数调用一次,返回两次。若调用成功,子进程返回0,父进程返回子进程的pid.失败返回-1.fork在生成子进程时用到了写时拷贝技术;不执行一个父进程数据段、堆和栈的完全复制,因为fork之后父子进程共享这些区域,内核将他们的权限设为只读的。如果父子进程中任何一个试图修改这些区域...

2020-08-12 19:40:27 468

原创 C语言中的小知识

1.sizeof与strlen的区别sizeof是关键字,strlen是函数;sizeof操作符的结果类型是size_t,在头文件中的typedef中为无符号int类型。该类型能保证容纳实现所建立的最大对象的字节大小;sizeof可以用类型做参数,还可以用函数做参数。strlen只能用char *做参数,且必须是以\0结尾的;数组sizeof参数不会退化,传给strlen退化伟指针;当使用结构体变量时,sizeof返回实际大小。当使用静态的空间数组时,sizeof返回全部数组的尺寸。sizeof

2020-08-10 22:15:25 132

原创 我与C/C++之间的相爱相杀

前沿: 到今天为止,仔细算算我学习C和C++语言也有三年了。现在回想自己学习历程,从迷茫到懵懂,再到熟练,其中痛并快乐着。想想自己掉入这坑就不想在爬起来了。就让我继续遨游在知识的海洋中吧。今天我来浅析以下C和C语言。C与C++:C是面向过程的语言,C++是面向对象的语言。C++中有类和对象以及OPP思想必备的内容,而且C++支持模板、运算符重载、异常机制处理以及强大的标准模板库。 C语言只能写面向过程的代码,C++不仅能写面向过程的代码,也可实现面向对象的代码;C++是面向对象...

2020-08-09 16:59:12 149

原创 关于堆和栈

1.栈和堆有什么区别我们可从4G的地址空间上看,他们完全不同的两块内存。栈是由系统开辟,系统释放。堆是由人为开辟,人为释放。栈是由C语言中的malloc/free开辟释和放,堆是由C++中的new/delete开辟和释放。因为堆是由人员分配管理的,所以很有可能造成内存泄漏。 栈的开辟释放效率快,申请的内存是连续的。堆申请的内存不一定连续,相对于栈效率低。堆容易产生内存碎片,灵活度高。 栈是由高地址向低地址扩展的连续内存,堆是低地址向高地址扩展的非连续内存。在window下,栈的大小默认为1M;li.

2020-08-09 15:16:45 328

原创 一些排序的简单归纳

一、排序的分类 1.排序算法从存储位置分为:内排序(在内存上存储)和外排序(在磁盘上存储)2.八大排序: (1)插入排序:直接插入、希尔排序 (2)选择排序:简单选择排序、堆排序 (3)交换排序:冒泡排序、快速排序 (4)归并排序 (5)基数排序二、各个排序具体的算法思想及代码实现 1.插入排序中的直接插入排序和希尔排序...

2020-08-05 19:35:07 117

原创 关于三挥手四握手的介绍及tcp协议可靠机制说明

TCP是一个可靠的、面向连接的、基于字节流的服务。1.确保TCP可靠连接机制超时重传: TCP协议在发送数据后,每一个报文段有一个定时器,若在定时器指定时间内接收端对这个报文段的确认报文没有到达,则会在发一次,而且这次的时间是上次时间的两倍。滑动窗口: TCP流量控制的一种手段。这里的窗口指的是接受通告窗口(Receiver Window,RWND)。他会告诉对方本端的TCP接收缓冲区还能容纳多少个字节,对方可控制发送数据的速度.对于流量控制,TCP中有一个对端通告的接收窗口(rwn...

2020-07-30 16:54:35 306

原创 被协议绕晕的我!!

一、相关概念 1.网络:是由若干结点的连接这些结点的链路组成,网络结点可以是计算机、交换机等设备。 传输介质:同轴电缆、双绞线、光纤。 网络设备:交换机、路由器、集线器等。 2.互联网:把多个网络连接起来就构成了互联网。最大的互联网为Inter网。 3.IP:结合Inter网的每个主机的每个接口分配的一个在全世界的唯一标识符。可以方便我们寻址。有PV4和IPV6两种类型。 类型: IPV4类似“A、B、C、D”的格式,是32位的,用“.”分成四个段,每个...

2020-07-28 16:25:35 217

原创 进程中的线程

一、线程:1. 定义:是进程中的一条执行序列(执行流)。而且一个进程至少有一个线程,我们将它称为主线程(main线程) main函数的执行过程,可以通过线程库创建其他的多条线程。 函数线程:从指定的函数入口开始运行,到此函数结束停止。2.进程与线程的区别线程是进程内部的执行序列,一个进程至少包含一条线程,线程必须依赖于进程; 进程与进程之间相互独立的,而进程中的线程共享进程内的资源(.data .bass .heap PCB); 进程是系统内部资源分配的单位,线程是系统调度...

2020-07-26 15:54:14 629

原创 我们知道的进程间通讯方式

一、信号量 1.定义:用来进程同步的特殊变量,一个特殊计数器。 大于0时,记录资源的数量,而且进程可以获取资源并利用; 小于0时,记录等待资源的进程的数量,进程必须阻塞等待有其他进程释放资源。 信号量集:多个信号量的集合 ——>内核维护的一般是一个信号量集。 内核对象:key 用户标识 ID 内核标识2.相关操作 PV操作: P:获取资源,信号量的值-1 P在占据资源前会阻塞;...

2020-07-23 15:02:38 113

原创 管道,你造吗??

前言:进程间通讯方式有:消息队列、管道、信号量、共享内存、信号(信号值)、套接字(socket)。管道:在多个进程之间传递数据的通道。分为无名管道和有名管道,他们都是一种半双工通讯方式。这种方式效率低,进程操作文 件相互独立,不能实现同步通讯。一、有名管道1. 定义: 在磁盘上会存在一个管道文件,但在进程通讯时,数据不会保存到磁盘上。(管道文件并不会占用磁盘的block空间)2.相关操作: 创建: 命令方式: mkfifo filename ...

2020-07-22 16:42:15 186

原创 你知道进程吗???

1.定义;对于用户而言,执行的运用程序(任务);于操作系统来说,系统控制对应的进程运行中的程序,是一个动态执行的概 念。程序:存储在磁盘上的一个可执行的二进制文件。2.有关进程的操作 启动进程: 路径/可执行文件name ./main 路径/可执行文件name & ./main & 表示在后台执行 查看正在运行进程: ps 仅显示与当前终端有关的进程 -c 显示系统...

2020-07-22 10:02:50 123

原创 关于文件那些事儿

一、库文件:1.定义: 库文件指事先将写好的预编译指令封装成库,在使用某些功能时就不需要重新写入,调用库文件就行。2.分类:库文件可分为静态库和动态库。在window下,静态库的扩展名为.lib文件,动态库(共享库)为.DDL文件;Linux下静态库文件扩展名为.a,动态库文件的扩展名为.so文件。3.静态库 特点:程序在链接时,链接器在库文件获取需要的代码,复制到生成的文件中。所以在程序链接阶段被复制到程序中,和程序的执行过程没有关系。 创建步骤: eg: 有...

2020-07-20 15:37:02 173

原创 编译运行那些事儿

前沿: 计算机语言分为机器语言、汇编语言、高级语言。 高级语言有C/C++、Java、python等; 阅读性高 机器语言是由0、1编码组成,是一个二进制文件; 汇编语言:用一些简单的英文字母符号代替一些特定指令的二进制串,是第二代计算机语言。汇编语言移植性不好,但使用效 率很高。 我们编写一个程序一般使用高级语言,而计算机执行的时候只能识别机器码。所以在编译运行的时候,就是高级语言向机器码的转换。一、编译运行过程: 1.预编译 在预编译阶...

2020-07-19 13:40:54 112

原创 不简单的线性表

一、分类 按照性质划分,可分为为顺序表与线性表。 顺序表:逻辑相邻,物理也相邻。线性表:逻辑相邻,物理不一定相邻。 按照实现方式划分,可分为单链表、循环链表、双向链表。二、基本原理与实现过程...

2020-07-19 13:11:54 73

原创 一些linux命令的集合

1.chomd(修改文档属性) chomd可以修改文件owner/group/other的read(可读)/write(可写)/exectue(可执行)九个属性。 chomd改变文件属性有符号和数字两种方式,r、w、x、-,分别对应数字中的4、2、1、0。 chomd u(user)/g(group)/o(other)/all(所有用户)+(加入)/-(除去)/=(设定) -rwx 文件名称 x代表用户能否进入该目录成为工 作目录eg: chomd 45 ....

2020-07-18 14:13:02 86

原创 c/c++中new与malloc的解法

1.我们先来讲述一下new和delete? 在C++中new/delete是开辟/释放内存的,那他们与C语言中的malloc/free有什么区别呢?(1)new的底层是通过malloc来开辟内存的,但new比malloc多一项功能,那功能就是开辟完内存还要进行初始化操作。 比如:new的基本操作为:int *p=new int(10);10代表堆上开辟的整型内存...

2020-02-27 20:00:17 549

原创 MySQL的基本使用及数据库创建

一、MySql的基本使用 1.启动Mysql: service mysqld start (首先要进入root用户状态); 2.mysql的root用户:初始没有密码,可以直接执行mysql命令进到数据库; 3.给root用户设置密码并登录数据库 (1)修改密码:mysqladmin -u root -p 原密码 password 新密码...

2020-02-25 17:00:07 1477

原创 让人头大的位运算

1.定义:位运算通常是指对二进制数的运算。常见的位运算符有(1)& 按位与 全一则一(2)| 按位或 有一则一(3)^按位异或 相同位上不一样则为1(4) ~取反,将0变成1,将1变成0.(3)<< 左移 M<<1是将M转化成2进制数,向左移动一位 丢弃高位,低位补零。 左...

2019-03-30 20:06:32 279

原创 动态内存及有关动态内存的函数

前言:为什么要使用动态内存??? 通常在我们声明一个数组时必须要指定数组的长度,但数组的长度只有程序运行的时候知道,而且数组的所需的内存空间取决于输入数据的类型。这种方法虽然很简单,但它的缺点是显而易见的。他极大的限制了程序的灵活性和健壮性。一旦我们输入的元素超过了数组的长度时(越界),程序就很容易崩溃。如果数组很大,我们输入的数据的元素很少,这样就浪费了内存空间。最重要的是...

2019-03-23 22:23:06 205

原创 满屏的变量的介绍

1.变量的储存方式分为静态储存和动态储存(1)静态储存: 静态储存是指变量在定义的时候就被就被分配储存空间,直到整个程序结束。比如全局变量,静态局部变量。(2)动态储存 变量的动态储存是指变量只有在使用的时候才会被分配储存空间,使用结束时又马上释放掉。比如函数的形参,动态的局部变量。2.动态全局变量与静态全局变量的区别 (1)若程序...

2019-03-23 19:17:49 104

原创 递归及递归的特例

递归:1.定义:在一个函数过程中出现直接或间接调用函数本身,称为函数的递归调用。eg:有一个学生在一起,问第五个学生有多少岁,他说比第4个学生大2岁。问第四个人多少岁,他说比第三个人大两岁。问第三个人有多少岁,第三个人说他比第二个人大两岁。问第二个人多少岁,第二个人说他比第一个人大两岁。第一个人10岁。第一种解法:用循环第二种解法:首先我们要了解递归的两大要素:...

2019-03-13 19:53:37 287

原创 二维数组与一维数组

1.二维数组与二维数组的初始化定义: 二维数组本质为以数组作为数组元素的数组,即“数组的数组”。表达式: 类型说明符 数组名【常量表达式】【常量表达式】在二维数组中,二维数组行优先。2.二维数组与一维数组的比较首先我们先定义一个一维数组和一个二维数组。 int arr[3][4]={{1,2,34,4},{5,6,7,8},{0,11,9,...

2019-03-04 14:36:01 2505

原创 不得了的const

1.const定义常变量,不允许修改其他值。将变量变成只读,不能改写。eg:int const ca=10;ca=20;//errorca=10;//errorint const cb;//error 局部变量默认随机值2.基本的数据类型对const是透明的eg;int const ca=0;const int cb=0;//ca和cb是等价的const ...

2019-03-02 09:24:08 218

原创 让人恶心的指针

指针的运算这里讲述了指针加1个单元格的由来,并讲述了指针的运算方法。并附上一些例子让人容易理解欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown...

2019-02-27 21:21:03 254

原创 分工清晰的功能函数

例1:求两数的大小#include&lt;stdio.h&gt;int main(){int a,b;scanf("%d %d",&amp;a,&amp;b);if(a&gt;b){printf("%d",a);}else{printf("%d",b);}return 0;}1.为了使主函数更加的简洁以及实现更多的功能,所以要写功能代码。2.功能代码不能写在主函...

2018-11-17 19:53:12 445

原创 字符串的安全问题

字符串函数的安全:数组越界,缓冲区溢出。比如说:定义长度为10 一个数组,arr[10],设拷贝一个数组arr[10]=“abcdefghijk”,但数组的长度为10,存在越界问题。所以为了解决这个问题,定义一个数组长度size.拷贝数组arr[10]=“abcdefghijk”,定义一个size后拷贝结果是"abcdefghi "void Mystrcpy_s(char *des,con...

2018-11-04 18:24:10 670

原创 你知道素数的算法吗??

#include&lt;stdio.h&gt;bool IsPrimer(int n){if(n &lt; 2) //边界return false;for(int i=2;i&lt;=sqrt(n*1.0);i++){if(n%i == 0){return false;}}return true;}//法2:int Is_prime(int n){for(int ...

2018-11-02 22:15:08 250

原创 汉诺(Hanoi)塔问题(用递归解决)

#include&lt;stdio.h&gt;int g_count = 0;void Move(char x,char y){g_count++;printf("%c-&gt;%c\n",x,y);}void Hanoi(int n,char a,char b,char c){if(n == 1){Move(a,c);}else{Hanoi(n-1,a,c,b);/...

2018-11-02 22:09:57 1836

原创 递归与非递归的斐波那契

#include&lt;stdio.h&gt;//斐波那契://法1:int Fibon(int n){if(n1||n2){return 1;}else{return Fibon(n-1)+ Fibon(n-2);}}//法2:int Fibon1(int n){int f1=1;int f2=1;int f3=1;if(n&lt;3){retur...

2018-11-02 21:45:51 159

原创 字符串的链接 、比较

#include&lt;stdio.h&gt;#include&lt;assert.h&gt;//字符串链接//字符串比较void Mstrcat(char *des,const char *src){assert(NULL != des &amp;&amp; NULL != src);int i = 0;while ('\0' != des[i]){ i++;}int ...

2018-11-02 21:21:44 133

原创 字符串的赋值,字符与数字之间的转换

#include&lt;stdio.h&gt;//法1:字符串赋值void Mystrcpy(char des,charsrc){int i;for(i=0;src[i]!=’\0’;i++){des[i]=src[i];}des=’\0’;}//法2:void Mystrcpy2(char des,charsrc){for(;*src!='\0';src++,des++...

2018-11-02 21:18:46 1397

原创 逆/顺序输出,统计一个数的位数

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入给出一个不多...

2018-10-14 22:22:05 341

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除