自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 问答 (1)
  • 收藏
  • 关注

原创 Python学习笔记-(一)python语法

#Python标识符语法:由字母,数字,下划线组成(不能以数字开头)。 Python中的标识符区分大小写。#行和缩进

2020-08-17 23:53:09 138

原创 MySQL基本命令操作

一、MySQL基本命令操作1.MySql服务开启关闭指令服务关闭:net stop MySQL服务关闭:net start MySQL登陆:mysql -h localhost -P 3306 -u root -p mysql -u root -p root 退出:exec 查看MySQL的版本:2.MySQL的常用命令查看数据库:show database...

2019-04-14 13:19:59 1074

原创 Effective C++读书笔记(一)

    知识点一:    default构造函数:default构造函数是一个可被调用而不带任何实参的构造函数。这样的构造函数要不没有参数,要不就是每个参数都有缺省值。    例:class A{ public: A(){}; //default构造函数}class B{public: B(int x = 0,bool y = true); //defaul...

2018-07-11 22:09:19 166

转载 HTTP协议详解

转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspxAuthor :Jeffrey引言HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HT

2017-09-22 14:35:20 419

转载 分治法,动态规划及贪心算法区别

转自:http://hxrs.iteye.com/blog/1055478分治法,动态规划法,贪心算法这三者之间有类似之处,比如都需要将问题划分为一个个子问题,然后通过解决这些子问题来解决最终问题。但其实这三者之间的区别还是蛮大的。 1.分治法     分治法(divide-and-conquer):将原问题划分成n个规模较小而结构与原问题相似的子问题;递归

2017-09-19 17:11:53 1120

原创 面试题---数值的整数次方

题目:实现函数 double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时,不需要考虑大数问题。 分析:1、考虑越界问题              2、指数小于1的情况处理              3、效率问题。        提高效率的方法:如果输入的指数为32,我们在函数中需要做31次乘法,但如果我

2017-08-12 08:58:01 260

原创 链接属性

链接属性当组成⼀个程序的各个源⽂件被编译之后,所有的目标⽂件以及那些从⼀个或多个函数库中引⼊的函数链接在⼀起,形成可执⾏程序。然⽽,如果相同的标识符出现在⼏个不同的源⽂件中时,它们表示同⼀个实体还是不同实体?标识符的链接属性决定如何处理在不同的⽂件中出现的标识符。链接属性⼀共有三种:external 外部属性 标⽰符不论声明多少次,位于⼏个源⽂件

2017-08-11 14:11:45 688

原创 面试题---二进制中1的个数

题目:       请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把九表示成二进制是1001,有两位是1,因此如果输入9,该函数输出2.源码实现:         int Numberof1(int n)         {               int count = 0;               while(n)

2017-08-11 14:01:06 446

原创 C语言if语句中与0值相关的比较

布尔变量与零值⽐较【规则1】不可将布尔变量直接与TRUE、 FALSE或者1、 0 进⾏⽐较。根据布尔类型的语义,零值为“假”(记为FALSE),任何⾮零值都是“真”(记为TRUE )。 TRUE的值究竟是什么并没有统⼀的标准。例如Visual C++将TRUE 定义为1,⽽Visual Basic 则将TRUE定义为-1 。假设布尔变量名字为flag,

2017-08-11 11:20:21 3475

原创 crond与crontab

crond的概念和crontab是不可分割的。crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语chronos(χρόνος),原意是时间。而crond正是它的守护进程。基本用法        crontab -u       //设定某个用

2017-07-20 12:02:01 357

原创 循环冗余检验CRC

CRC检验也称循环冗余检验,在通讯链路中,不肯能使误码率下降到0,因此,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施,目前在数据链路层广泛使用的就是CRC的检查技术。     下面通过一个简单的例子说明循环冗余检验的原理:、     在发送端,先把数据划分为组,假定每组k个bit,现假定传输的数据M=101001(k=6)。CRC运算就是在数据M的后面添加供差

2017-07-16 01:51:23 983

原创 指针与引用的区别

指针与引用的区别:(1)引用需要初始化,指针不用(2)引用一旦被指向一个一个对象,就不能再指向其他对象,而指针可以指向任意一个同类型的对象(3)没有空引用,但有空指针(4)sizeof(引用)等于引用类型大小,sizeof(指针)等于(32位平台下始终为4)(5)引用自加改变变量值,指针自加改变指向(6)有多级指针没有多级引用(7)引用比指针用起来更安全相同点:底层

2017-07-16 00:44:12 530

原创 类型转换关键字

题目:在C++中,有哪四个与类型转换相关的关键字?这些关键字各有什么特点?应该在什么场合下使用?答:四个与类型转换相关的关键字:       const_cast::删除const属性方便赋值       dynamic_cast:将父类对象的指针转化为子类对象的指针或引用       static_cast: 静态转换,可用于任何转换,但不能用于两个不相关的类型的转换

2017-07-03 17:50:25 263

原创 shell脚本实现彩色进度条

在以前的博客中有用C语言实现的进度条,已经说明了进度条的实现原理,这里就不多说了,想看的直接点链接:  http://blog.csdn.net/eagle_1036077338/article/details/56280179本节主要讲讲如何实现彩色的进度条,也就是如何控制

2017-07-03 16:01:49 572

原创 模版

一、模版概念的引入我们都知道,一个事物的产生与存在一定有自己的独特的作用,任何东西都不会无缘无故的出现,如果一个事物的功能能完全被另一个事物代替,那么它也就没有必要出现了,今天我们要一起讨论的是模版,那么我们就先来看看在C++中引入模版的原因。在以前的学习中,实现一个加法函数是再简单不过的事了,但是如何事先一个通用的加法函数呢?方法一:通过函数重载,根据每个所需相同行为的不同类型重新实

2017-06-30 23:32:27 259

原创 左旋转字符串

在C语言中,字符串的各种操作一直是必须掌握的一部分内容,那么我们来用不同的方法讨论一下字符串操作其中之一的左旋转字符串。一、题目描述:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部,如把字符串 abcdef左旋转 2 位得到字符串 cdefab。请实现字符串左旋转的函数, 要求对长度为n的字符串操作的时间复杂度为O(n), 空间复杂度为O(1)。二、解决

2017-06-30 12:51:04 700

原创 红黑树

一、概念红黑树是一棵二叉搜索树,它在每个结点上增加了一个存储位来表示结点的颜色,可以是red或者black,通过对任何一条从根节点到叶子结点上的简单路径来约束,红黑树保证最长路径不超过最短路径的两倍,因而近视平衡。二、性质1. 每个结点不是红色就是黑色2. 根节点是黑色的3. 如果一个根节点是红色的,则它的两个叶子结点是黑色的(没有两个连续的红色结点)4.

2017-06-29 17:17:55 510

原创 I/O多路转接之poll

poll()函数:这个函数是某些Linux系统提供的用于执行与select()函数同等功能的函数,下面是这个函数的声明:#include int poll(struct pollfd fds[], nfds_t nfds, int timeout);参数说明: fds:是一个struct pollfd结构类型的数组,用于存放需要检测其状态的Socket描述符

2017-06-27 17:47:13 695

原创 eval命令

功能:重新运算出参数的内容语法:eval [参数]补充说明: eval可读取一连串的参数,然后再依参数本身的特性来执行参数:参数可以不止一个,彼此之间用分号分开1. eval command-line其中command-line是在终端上键入的一条普通命令行。然而当在它前面放上eval时,其结果是shell在执行命令行之前扫描它两次。如:pipe="|"eval l

2017-06-27 12:22:11 873

原创 shell 脚本中的命令带换

一、命令带换          先完成引号或者括号里面的命令行,然后将其结果替换出来,再组成新的命令行          Shell脚本中用来实现变量替换的命令有两种,一种是反引号‘ ’,另一种是$()二、反引号` `与$()的区别       1、反引号本身就对 \ 进行了转义,保留了其本身的意思,如果我们想在反引号中起到\的特殊意义,就必须用两个\进行表示。所以反引号中的\就表

2017-06-22 14:36:17 1485

原创 B树

一、B树的定义     1、节点至少有两个孩子     2、每个非根节点至少有M/2(上取整)个孩子,并且以升序排列     3、每个非根节点至少有M/2-1(上取整)个关键字,并且以升序排列     4、key[i]和key[i+1]之间的孩子节点的值介于key[i]和key[i+1]之间     5、所有的叶子节点都在同一层二、B树的创建过程三、实现源码

2017-06-15 14:12:05 404

原创 I/O多路转接之epoll

一、什么是epoll    epoll是什么?按照man⼿手册的说法:是为处理⼤大批量句柄⽽而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel2.5.44),它⼏几乎具备了之前所说的⼀一切优

2017-06-14 17:40:07 527

转载 进程池线程池

池的概念由于服务器的硬件资源“充裕”,那么提高服务器性能的一个很直接的方法就是以空间换时间,即“浪费”服务器的硬件资源,以换取其运行效率。这就是池的概念。池是一组资源的集合,这组资源在服务器启动之初就完全被创建并初始化,这称为静态资源分配。当服务器进入正式运行阶段,即开始处理客户请求的时候,如果它需要相关的资源,就可以直接从池中获取,无需动态分配。很显然,直接从池中取得所需资源比动态分配资

2017-06-03 17:17:12 414

原创 实现多进程多线程服务器

多进程:    客户端:#include#include#include#include#include#include#includestatic int startup(const char *_ip,int _port){  int sock=socket(AF_INET,SOCK_STREAM,0);  if(sock  {   pe

2017-06-03 17:10:12 529

原创 网络端口号,TCP定时器和TCP建立连接状态基的变更

一、网络端口号1. 什么是网络端口在网络技术中,端口(Port)大致有两种意思:    一. 物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等;    二. 逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务

2017-05-18 09:25:14 1164

原创 路由表生成算法

一、路由表1、路由表仅指定从该路由器到目的地路径上的下一步,而不知道到达目的地的完整路径,标准的IP路由表包含许多对序偶,N表示目的网络的IP地址,R表示到N路径上的下一个路由器的IP地址。2、  基本的下一站路由选择算法:RouteDatagram(Datagram, RoutingTable){  从Datagram中提取目的IP地址D,计算netid网络号N;if

2017-05-17 15:39:17 1345

原创 NAT--网络地址转化

NAT常见的NAT产品:    软的NAT产品,比如winrout、wingate,硬的NAT,典型的就是宽带路由器。NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。这种方法需要

2017-05-17 15:00:57 472

原创 HUffmanTree

构造Huffman树Huffman树构造算法:1、由给定的n个权值{w1,w2,w3,…,wn}构造n棵只有根节点的扩充二叉树森林F={T1,T2,T3,…,Tn},其中每棵扩充二叉树Ti只有一个带权值wi的根节点,左右孩子均为空。2、重复以下步骤,直到F中只剩下一棵树为止:a、在F中选取两棵根节点的权值最小的扩充二叉树,作为左右子树构造一棵新的二叉树。将新二叉树的根节

2017-05-15 20:48:50 394

原创 可重入性和线程安全的关系

一、什么是线程安全?      线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据      比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1.

2017-04-17 16:44:38 1198

原创 进程间通信-------共享空间

共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运⾏效率较低⽽设计的。往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。共享内存效率高,因为不像管道以及消息队列一样,读写时进行拷贝两次,而共享内存直接进行内存读写,不需要进行拷贝。共享内存申请的空间内存在堆栈之间。生命周期为随内核。       32位平台下一个进程认为自己的地址空间为4G,0

2017-03-21 23:02:08 767

原创 进程间通信——信号量

一、什么是信号量    信号量的本质是一种数据操作锁,它本⾝身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。当请求一个使用信号量来表示的资源时,进程需要先读取信号量的值来判断资源是否可用。⼤于0,资源可以请求,等于0,无资源可⽤,进程会进入睡眠状态直⾄资源可⽤。当进程不再使⽤

2017-03-20 20:59:10 616

原创 进程的程序替换与shell的实现

在Linux系统中,⽤用fork创建⼦子进程后执⾏行的是和⽗父进程相同的程序(但有可能执⾏行不同的代码分⽀支),⼦进程往往 要调⽤用⼀一种exec函数以执⾏行另⼀一个程序。当进程调⽤用⼀一种exec函数时,该进程的⽤用户空间代码和数 据完全被新程序替换,从新程序的启动例程开始执⾏行。调⽤用exec并不创建新进程,所以调⽤用exec前后该进程的id并未改变。Linux操作系统中的shel

2017-03-02 15:43:15 855

原创 atexit(),Linux中的粘滞位和FILE结构体

我们在这篇博客中主要讨论三个知识点:分别是atexit(),Linux中的粘滞位和FILE结构体。                    一、验证连续注册三个函数,看输出顺序(atexit) 源码:#include#include#includevoid fun(){    printf("hello fun\n");    return;}vo

2017-02-21 14:30:17 275

原创 Linux中模拟实现进度条

一、背景1、进度条实现原理   进度条的实现必须了解以下几个知识点,回车换行、缓冲区   换行:换行就是光标只从上一行行尾移至下一行行尾   回车:回车就是光标从行尾移至行首   回车换行:回车换行就是光标从行尾移至下一行行首   缓冲区:指由多个以不同速度或优先级运行的硬件或程序进程共享的数据存储区,在其中暂时保存数据。缓冲区使进程之间的相互等待变少了。先结束的进程可以把

2017-02-21 13:03:45 858

原创 Linux配置VIM

配置⽂文件的位置在⽬目录 /etc/ 下⾯面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有⽤用户都有效。而在每个用户的主目录下,都可以自己建立私有的配置⽂文件,命名为:“.vimrc”。例如,/root⽬目录下,通常已经存在一个.vimrc⽂文件。1. 切换自己的登陆名称 su XXX 输⼊入密码即可2. 设置语法高亮syntax on3. 显示行号se

2017-02-19 12:15:43 1088 1

原创 Linux进程调度算法

一、概念         操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(请求)来占用资源。这就是调度。目的是控制资源使用者的数量,选取资源使用者许可占用资源或占用资源       在操作系统中调度是指一种资源分配,因而调度算法是指:根据系统的资源分配策略所规定的资源分配算法。对于不同的的系统和系统目标,通常

2017-02-19 11:21:47 1362 1

原创 Linux中内核控制块task_struck

广义上,所有的进程信息被放在⼀一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。进程控制块:    每个进程在内核中都有⼀一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。现在我们全⾯面了解⼀一下其中都有哪些信息。    在Linux中,这个结构叫做task_struct。task_struct是Linux内核的⼀一种数

2017-02-18 14:40:12 870

原创 Lunix中三个重要时间和find命令

一、定义Chang time:简称ctime,一个文件或目录的更改时间。在Linux中,基本上无法知道一个文件的精确创建时间,更改时间是指文件或目录的属性(所有者,权限等等)被修改的时间。如果一个文件需要备份的话,dump命令需要用到ctime,你可以用ls-lc命令查看ctime。Access time:简称atime,一个文件或目录的访问时间。就是一个文件的数据最后一次被访问的时间,例

2017-02-16 07:33:29 862

原创 C++三大特性之多态

多态编译环境:VS2013一、对象类型在引入多态之前,我们先来看一下对象类型 二、多态性的概念     多态一词最初来源于希腊语,意思是具有多种形式或形态的情形,在C++中是指同样的消息被不同类型的对象接收时导致不同的行为,这里讲的消息就是指对象的成员函数的调用,而不同的行为是指不同的实现。也就是调用了不同的函数。     概念的给出总是那么的抽象,我们来通过一个具体的

2016-11-16 14:28:30 13444 3

原创 C/C++调用约定

C/C++函数调用约定在编程中,一个函数完整的执行需要经过编译链接等多个过程,而在每个过程中编译器都需要为程序提供不同的服务,那么一个函数的调用执行到底需要几个过程呢?下面我们先通过一个函数栈帧的创建看看。#define _CRT_SECURE_NO_WARNINGS 1#include#includeint Add(int left,int right){re

2016-11-13 14:55:14 454

空空如也

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

TA关注的人

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