自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 C++中静态成员变量要在类外部再定义或初始化的原因

**C++中静态成员变量要在类外部再定义或初始化,否则会产生错误**。示例:class A{public:static int a;};int A::a=0;为什么要在类的外部进行定义的原因:在类中,只是声明了静态变量,并没有定义。声明只是表明了变量的数据类型和属性,并不分配内存;定义则是需要分配内存的。 注意:如果在类里面这么写int a; 那么是既声明了变...

2019-02-20 22:43:48 1254

原创 TCP拥塞控制机制

产生的原因∑对资源的需求>可用资源注意 单纯的增加网络资源无法解决问题 例如:把结点的存储空间扩大,更换更高速率的链路,提高结点处理机的运算速度,不仅不能解决问题,而且可能使网络性能更坏。 原因:网络拥塞是许多因素引起的,单纯的解决一个可能会使上述情况得到一些缓解,但是会把拥塞转移到其他地方。 扩大结点存储空间——>由于输出链路的容量和处理机的速度并未提高,增大排队等待时间...

2019-01-14 13:19:20 392

转载 mysql数据库优化大全--sql语句优化大全

一,SQL语句性能优化1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认值。3,应尽量避免在 where 子句中使用!=或<>操作符, MySQL...

2018-11-13 11:17:46 600

转载 Linux中进程的状态与转换

进程在其生命周期内,由于系统中各进程之间的相互制约关系及系统的运行环境的变化,使得进程的状态也在不断的发生变化,即一个进程会经历若干种不同的状态。通常进程有以下五种状态,前三种是进程的基本状态。1)运行状态进程正在处理机上运行。在单处理机环境下,每一时刻最多只有一个进程处于运行状态。2)就绪状态进程已处于准备运行的状态。即进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行。3...

2018-10-06 22:10:33 1923

转载 计算机基础之流水线

指令控制方式为:顺序方式、重叠方式和流水方式流水方式流水方式是模仿工业生产过程的流水线而提出的一种指令控制方式。流水技术是把并行性或并发性到计算机系统里的的一种形式,它把重复的顺序处理过程分解为若干子过程,每个子过程能在专用的独立模块上有效的地并发工作。练习一条指令分为取指、分析、执行,分别执行的时间为:取指:2ns、分析2ns、执行1ns。流水线周期取该指令最大的耗时时间,为:2n...

2018-10-06 20:58:08 431

原创 new和malloc的区别

new和malloc的区别是C/C++一道经典的面试题,我也遇到过几次,回答的都不是很好,今天特意整理了一下。1.属性new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持。2.参数使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸。3.返回类型new操作符内存分配...

2018-10-05 15:35:47 103

原创 TCP滑动窗口机制简化模型

模型图:我们可以大概看一下上图的模型:1.首先是AB之间三次握手建立TCP连接。在报文的交互过程中,A将自己的缓冲区大小(窗口大小)3发送给B,B同理,这样双方就知道了对端的窗口大小。2.A开始发送数据,A连续发送3个单位的数据,因为他知道B的缓冲区大小。在这一波数据发送完后,A就不能再发了,需等待B的确认。3.A发送过来的数据逐渐将缓冲区填满。4.这时候缓冲区中的一个报文被进程读...

2018-10-05 14:59:03 392

转载 数据库常见面试题

1.事务四大特性原子性,要么执行,要么不执行隔离性,所有操作全部执行完以前,其它会话不能看到过程一致性,事务前后,数据总额一致持久性,一旦事务提交,对数据的改变就是永久的2.数据库隔离级别,每个级别会引发什么问题,mysql默认是哪个级别脏读:事务B读取事务A还没有提交的数据不可重复读:两次事务读的数据不一致幻读:事务A修改了数据,事务B也修改了数据,这时在事务A看来,明明修改了数...

2018-10-04 19:38:44 1736

转载 Oracle中的数据字典

数据字典定义:数据字典是oracle数据库中最重要的组成部分,记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为sys用户;用户只能在数据字典上执行查询操作,而其维护和修改是由系统自动完成的!数据字典的组成:包括数据字典基表和数据字典视图 ,其中基表存储数据库的基本信息,普通用户不能直接访问数据字典的基表,数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字...

2018-10-03 21:11:48 1986

转载 Oracle常见数据类型

1、字符类型• CHAR:一个定长字符串,当位数不足自动用空格填充来达到其最大长度。如非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。• VARCHAR2:目前这也是VARCHAR 的同义词。这是一个变长字符串,与CHAR 类型不同,它不会用空格填充至最大长度。VARCHAR2(12)可能包含0~12字节的信息。VARCHAR2最多可以存储4,0...

2018-10-03 19:46:31 1392

转载 信号量、互斥锁、读写锁和条件变量之间的区别

信号量强调的是线程(或进程)间的同步:“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在sem_wait的时候,就阻塞在那里)。当信号量为单值信号量是,也可以完成一个资源的互斥访问。有名信号量:可以用于不同进程间或多线程间的互斥与同步创建打开有名信号量sem_t *sem_open(const char *name, int ...

2018-10-03 14:51:02 122

原创 Bootloader作用的补充

1、Bootloader的作用简单的说,BootLoader就是在操作系统运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备。对于Bootloader的启动过程又分为两个阶段stage1和stage2。stage1全部由汇编编写,它的主要工作是:(1)初始化硬件设备;(2)为加载Bootlodader的st...

2018-10-03 11:34:29 217

原创 Bootloader的作用

一、Bootloader的介绍1.什么是BootloaderBootloader是硬件启动的引导程序,是运行操作系统的前提。在操作系统内核或用户应用程序运行之前运行的一段小代码。对硬件进行相应的初始化和设定,最终为操作系统准备好环境。2.Bootloader的特点Bootloader不属于操作系统,一般采用汇编语言和C语言开发。需要针对特定的硬件平台编写。在移植过程时,首先为开发板移植Bo...

2018-10-03 11:29:59 5889

原创 Linux中进程间通信机制----消息队列

一、什么是消息消息(message)是一个格式化的可变长的信息单元。消息机制允许由一个进程给其它任意的进程发送一个消息。当一个进程收到多个消息时,可将它们排成一个消息队列。1、消息机制的数据结构(1)消息首部记录一些与消息有关的信息,如消息的类型、大小、指向消息数据区的指针、消息队列的链接指针等。(2)消息队列头表其每一项作为一个消息队列的消息头,记录了消息队列的有关信息,如指向消息队...

2018-10-03 10:55:00 1470 1

原创 Linux中的进程通信-------共享内存

一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到可...

2018-10-02 15:07:11 188

原创 strcpy和memcpy的区别

strcpy和memcpy主要有以下3方面的区别。1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符”\0”才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般...

2018-10-02 09:21:31 216

原创 C++常见崩溃问题分析

一、前言从事自动化测试平台开发的编程实践中,遭遇了几个程序崩溃问题,解决它们颇费了不少心思,解决过程中的曲折和彻夜的辗转反侧却历历在目,一直寻思写点东西,为这段难忘的经历留点纪念,总结惨痛的教训带来的经验,以期通过自己的经历为他人和自己带来福祉:写出更高质量的程序;由于 C 和 C++ 这两种语言血缘非常近,文本亦对 C 编程语言有借鉴作用;二、C++ 崩溃分类在编程实践中,遭遇到了诸如内...

2018-10-01 19:32:58 4110

原创 线程之间共享的资源有哪些

同一进程间的线程究竟共享哪些资源呢,而又各自独享哪些资源呢?共享的资源有a. 堆 由于堆是在进程空间中开辟出来的,所以它是理所当然地被共享的;因此new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)b. 全局变量 它是与具体某一函数无关的,所以也与特定线程无关;因此也是共享的c. 静态变量 虽然对于局部变量来说,它在代码中是“放”在某一函数中的,但是其存放位置和全局变量...

2018-10-01 15:52:43 715

原创 解决Hash冲突方法总结

Hash碰撞冲突我们知道,对象Hash的前提是实现equals()和hashCode()两个方法,那么HashCode()的作用就是保证对象返回唯一hash值,但当两个对象计算值一样时,这就发生了碰撞冲突。如下将介绍如何处理冲突,当然其前提是一致性hash。1.开放地址法开放地执法有一个公式:Hi=(H(key)+di) MOD m i=1,2,…,k(k<=m-1)其中,m为哈希表...

2018-10-01 14:49:48 342

原创 linux 下的五种I/O模型

Linux下的五种I/O通信模型同步,异步,阻塞,非阻塞的概念首先,需要明确的一个问题就是,通常程序是运行在用户态下,如果需要进行I/O操作,那么就会发出系统调用(System call),由用户态转变为内核态,由操作系统去完成I/O操作,实际上应用程序本身没有权利操作I/O。同步和异步:都是针对应用程序和操作系统之间交互而言的。同步的话,如果上层应用程序不主动询问操作系统的话,操作系统不会...

2018-10-01 10:38:32 267

原创 并查集的使用及其实现

概述:并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。使用并查集时,首先会存在一组不相交的动态集合 S={S1,S2,⋯,Sk},一般都会使用一个整数表示集合中的一个元素。每个集合可...

2018-08-25 15:00:53 235

空空如也

空空如也

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

TA关注的人

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