自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 C++中的inline用法

 1 引入inline关键字的原因在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数,栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足而导致程序出错的问题,如,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。 下面我们来看一个...

2018-08-12 14:55:46 28603 5

转载 设计模式C++实现(10)——(行为型)观察者模式

 软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍观察者模式的实现。        观察者模...

2018-08-05 23:52:41 284

转载 开机第四阶段:init进程对系统初始化流程图

 启动重要部分/sbin/init |--->/etc/init/rcS.conf |--->exec /etc/rc.d/rc.sysinit 执行第一个脚本系统初始化( Ubuntu中为/etc/init/rc-sysinit.conf ) |--->/etc/initt...

2018-08-05 11:39:53 1625

转载 CentOS6与CentOS7启动流程

1 简介 我们在了解了系统启动流程后,系统在启动过程中,发生的问题时候,就知道是什么阶段出现问题,从而“哪痛医哪”,就不需要重装系统了。 CentOS6和CentOS启动流程类似,不过CentOS6和7在启动后期不一样,CentOS6后期是init,CentOS7是systemd,那么细节之处呢,跟着我一块看看吧。 2 CentOS6启动流程   看到图片应该...

2018-08-05 10:43:44 1572

转载 Linux启动流程rcN.d rcS.d rc.local等

 1 环境 当前系统环境为:Linux mint mate 17.1(基于ubuntu14.04的衍生版) 备注:/etc/rc*.d文件夹中的脚本文件的链接目标为:/etc/init.d文件夹下的脚本(*为系统运行级别‘数字’和字母:S,系统优先运行rcS.d目录下的脚本,然后运行rcN.d下的脚本)。/etc/inittab: inittab为系统的PID=1的进程...

2018-08-03 23:34:44 7557

转载 linux 嵌入式启动脚本调用顺序(测试平台 ARM A9)

  第一步 :/etc/inittab 作用:系统运行级别识别 同时调用rcS脚本: si::sysinit:/etc/init.d/rcS第二步 :/etc/rcS 作用:调用 第三步 rc 脚本第三步 :/etc/rc 作用:找出系统运行级别调用运行级别对应的文件夹路径脚本(rcX.d, X=0,1,2,3,4,5,6)第四步 :/etc/rcX.d 作用:执行运行级别相关...

2018-08-03 23:26:37 840

转载 linux启动脚本和service、chkconfig

 1. 启动脚本 (1) 启动脚本的写法 case "$1" in start) do start-thing; ;; stop) do stop-thing; ;; restart) do restart-thing; ;; ...esac...

2018-08-03 23:22:36 2352

转载 linux下获取微秒级精度的时间

 使用C语言在linux环境下获得微秒级时间1. 数据结构 int gettimeofday(struct timeval*tv, struct timezone *tz);  其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果: struct timezone{int tz_minuteswest;/*格林威治时间往西方的时差*/int t...

2018-07-31 20:30:54 2593

转载 c读取按行读取文件

 c中没有getline()这个函数,该函数只存在于c++中。有些人说用gets,但是这个函数是不安全的,gets不知道字符串的大小,容易造成溢出的问题。解决方案,使用fgets函数其关键在于在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。因此,通过设置适当大小的缓冲区,即可实现读取一行的功能。  #include "stdio.h" int main...

2018-07-28 17:59:17 9053

转载 rpm命令

 rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。语法rpm(选项)(参数)选项​-a:查询所有套件;-b<完成阶段><套件...

2018-07-27 17:14:26 159

转载 ubuntu16.04桌面版开机进入命令行模式

 我们大部分个人的linux系统计算机都是使用图形界面模式的操作,有些时候我们也可以在纯命令行模式下进行操作,这里给大家介绍一个在开机启动的时候进入命令行的两种方法。    工具/原料 ubuntu 16.04LTS系统 电脑 方法/步骤 系统启动后,在BIOS引导界面按“ESC”键进入选择菜单,选择第一个“Ubuntu”,按“e”键进入编辑模...

2018-07-25 12:04:45 9508

转载 C++中的STL中map用法详解

 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们...

2018-07-23 11:51:31 198

原创 c++ md5加密函数

1. 环境系统: centos 7依赖库yum install openssl-devel (1) 代码#md5.cpp#include <string>#include <openssl/md5.h>#include <stdio.h>#include <string.h>#define MD5_SECR...

2018-07-22 22:38:53 3714

原创 C C++编程产生指定范围内的随机数

 C/C++编程产生指定范围内的随机数,直接上个小程序: #include <stdlib.h>#include <time.h>#include <stdio.h>#include <string>#include <string.h>/* * 获取随机数 * return : 随机数 */int...

2018-07-22 15:46:08 3592

转载 Centos开机启动脚本执行过程

   Centos开机启动主要过程如下:           找到系统引导分区,执行引导程序,加载内核       执行init程序       /etc/rc.d/rc.sysinit # 由init执行的第一个脚本       /etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式 ,服务器的运行级别为3      /etc/rc.d...

2018-07-18 20:13:19 3503

转载 C++删除string最后一个字符的几种方法

C++删除string最后一个字符的几种方法#include<iostream>#include<string>using namespace std;int main() { string str; str = "123456"; cout << str << endl; //方法一:使用substr() str = str....

2018-07-15 23:55:13 17343 1

转载 CentOS中命令别名的使用

    在Linux系统中,误敲错rm命令是一件很容易发生的事情能。所以,怎样避免因为rm命令带来的危害是很重要的。在Linux系统中要做到rm命令的交互其实很简单,只需要简单的使用rm -i命令就可以了。但是每次都这样输入的话会造成敲击键盘的次数增加,这里我们可以使用Linux别名的方法解决该问题。    下面首先讲一下alias命令的用法:    首先查询命令的方式有许多种,最长用的有man、...

2018-07-14 16:38:19 620

转载 Linux 链接概念

1. 概念    Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln 命令产生硬链接。硬连接    硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比...

2018-07-14 16:27:34 2753

转载 shell重定向

$ command > file 2>&1$ command >> file 2>&1这里的&没有固定的意思放在>后面的&,表示重定向的目标不是一个文件,而是一个文件描述符,内置的文件描述符如下1 => stdout2 => stderr0 => stdin换言之 2>1 代表将stderr重定向到当前路

2018-07-14 11:06:30 226

转载 shell for循环1到100

用bash shell写程序时,经常会用到for循环,特别是从1到100这种需求,这里记录几种shell中从1到100的循环方法方法(1) 类c语言for ((i=1; i<=100; i ++)) do echo $i done (2) in使用for i in {1..100} do echo $i done (3) seq使用作用seq - p...

2018-07-10 23:10:03 7350

转载 如何简单地理解Python中的if __name__ == '__main__'

 1 摘要通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明');在你自己眼中,你是你自己(__name__ == '__main__')。if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当...

2018-07-08 10:54:07 243

转载 CentOS7 常用命令集合

CentOS7 常用命令集合       这两天一直在对CentOS 7.2进行初体验,各种学习命令肿么用,不过其实大多和DOS是一样的,只是命令的表达上可能有点儿不一样,毕竟这些都不是一家出来的嘛~       废话不多说,直接上命令和解析!常用命令文件与目录操作命令解析cd /home进入 ‘/home’ 目录cd ..返回上一级目录cd ../..返回上两级目录cd -返回上次所在目录cp ...

2018-07-07 22:33:53 127

原创 ifcfg 配置文件

1 概述 在Linux中往往是通过命令修改文件的方式配置网络,因此不仅需要知道配置哪个文件,还要知道文件中每个配置参数的功能。在Redhat/Fedora等Linux中,网络配置文件一般是/etc/sysconfig/network-scripts/ifcfg-eth0;而在SLES 10中却是/etc/sysconfig/network/ifcfg-eth-id-xx:xx:xx:xx:...

2018-07-07 12:45:45 8567

转载 如何安装CentOS7 mini版

CentOS镜像下载1、CentOS版本:CentOS-7-x86_64-DVD-1611.iso。2、https://www.centos.org/download/安装步骤1、开启虚拟机,按Enter键,开始安装CentOS。安装CentOS2、按Enter键继续,耐心等待检查映像的完整性。检查映像3、进入安装界面,选择English(推荐选择)。选择语言4、耐心等待,点击选择软件配置。软件配...

2018-07-07 10:37:24 22431

转载 nmcli命令安装和查看UUID

        有时我们不小心将/etc/sysconfig/network-scripts/ifcfg-eth0(可以通过此文件进行查看UUID)删除或者损坏,要重新编辑ifcfg-eth0文件时不知道网卡的UUID是什么(当然也可以不写),那我们还有什么方法可以查看网卡的UUID呢?在这里我们使用的方法是使用nmcli命令查看,方法如下:1、首先我们查看一下nmcli是哪个软件包提供的复制代码...

2018-07-07 00:22:37 3783

转载 CentOS6 虚拟机迁移后网卡名更改问题解决

    实验过程中,我们经常需要复制虚拟机,以模仿生产过程中同等配置的条件。    但无论是初次打开,选择"我已复制该虚拟机“也好,还是在虚拟机设置>网络适配器>高级中重新生成Mac地址,开机后选择”我已移动该虚拟机“也罢。开机后查询IP时,我们都会很遗憾的发现,网卡的名字,不一样了。    这是因为原Mac地址占用旧网卡,新Mac地址只能使用新的网卡名称。复制虚拟机为了不与原虚拟机冲...

2018-07-06 23:35:10 1353

原创 安装软件的时候,记不全包名,如何查找到完整的包名

例如,查找 ssl 库文件1. 环境centosyum命令方法1:yum list | grep "ssl"        #这个根据自己会的正则表达式进行筛选方法2:yum search "ssl"2. 环境: ubuntu,apt 命令(1) apt-cache search "libssl"...

2018-06-29 22:41:53 4812

转载 C语言函数调用栈(1)

    程序的执行过程可看作连续的函数调用。当一个函数执行完毕时,程序要回到调用指令的下一条指令(紧接call指令)处继续执行。函数调用过程通常使用堆栈实现,每个用户态进程对应一个调用栈结构(call stack)。编译器使用堆栈传递函数参数、保存返回地址、临时保存寄存器原有值(即函数调用的上下文)以备恢复以及存储本地局部变量。    不同处理器和编译器的堆栈布局、函数调用方法都可能不同,但堆栈的...

2018-06-27 23:51:44 744

转载 网卡混杂模式Promiscuous与linux上混杂模式的设置

 1 网卡工作模式(1) 广播模式(Broad Cast Model):它的物理地址(MAC)地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。(2) 多播传送(MultiCast Model):多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成...

2018-06-23 16:23:11 6537

转载 网络基础知识1:集线器,网桥,交换机

最近一直在看网络方面的东东,先把基础的东西总结一下,注意:以下的概念现在已经不一定准确了,因为硬件发展相当迅速,集成电路的集成度越来越多高,拿交换机为例,现在俗称交换机的东西已经具有一定的路由器的功能了,有些时候很多概念已经混在了一起。而下面讲到的内容是最基本的概念,和你现在实际上能看到的可能不一样了,但是思想是一样的。咳咳,下面是我自己最近看资料总结的,如有错漏之处,也请大家指出:>一.集...

2018-06-23 10:50:33 470

转载 VMware虚拟机三种网络模式详解(3)

三、Host-Only(仅主机模式)Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。其网络结构如下图所示:通过上图,我们可以发现,如果要使得虚拟机能联网,我们可以将主机网卡共享给...

2018-06-23 00:07:40 193

转载 VMware虚拟机三种网络模式详解(2)

二、NAT(地址转换模式)刚刚我们说到,如果你的网络ip资源紧缺,但是你又希望你的虚拟机能够联网,这时候NAT模式是最好的选择。NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。其网络结构如下图所示:在NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。那么我们会觉得很奇怪,为什么需要...

2018-06-23 00:02:31 225

转载 VMware虚拟机三种网络模式详解(1)

由于Linux目前很热门,越来越多的人在学习Linux,但是买一台服务放家里来学习,实在是很浪费。那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有VMware Workstations和VirtualBox等。在使用虚拟机软件的时候,很多初学者都会遇到很多问题,而VMware的网络连接问题是大家遇到最多问题之一。在学习交流群里面,几乎每天都会有同学问到这些问题,写这篇详解也是因为群...

2018-06-22 23:57:00 459

转载 VMware中,该如何理解桥接网络与NAT 网络模式

首先,我在VMware学习上遇到的这几个问题,没弄明白,便不打算继续往下走了,接下来,我将把我在网上还有书上了解到的关于桥接网络以及NAT网络 的基本概念给大家分享一下,有部分附图以及资料是来着网上借鉴,大家不喜勿喷,相关学习!首先,在说到VMware的网络模型之前,先说一下VMware的几个虚拟设备:VMnet0:这是VMware用于虚拟桥接网络下的虚拟交换机;VMnet1:这是VMware用于...

2018-06-22 23:31:51 163

转载 DHCP 详解

DHCP 工作原理 一、什么是DHCP?  DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server),68(DHCP client)。DHCP通常被用于局域网环境,主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。简单来说,DH...

2018-06-22 23:15:24 707

原创 lwip 动态修改IP

一般修改IP都需要重启,下面修改方式可以动态修改IP IP4_ADDR(&ipaddr, IP_ADDRESS[0], IP_ADDRESS[1], IP_ADDRESS[2], IP_ADDRESS[3]); IP4_ADDR(&netmask, NETMASK_ADDRESS[0], NETMASK_ADDRESS[1] , NETMASK_ADDRESS[2], NET...

2018-06-13 17:39:44 3365 1

原创 printf 和 sleep 输出问题

场景:有时我们把输出放到前面,再休眠一段时间,发现程序运行没有立即输出,而是出现睡眠时间过后才会有输出,如下代码。#include <stdio.h>#include <unistd.h>void foobar(int i){ printf("it from lib.so i(%d)", i); sleep(100);}解决:p...

2018-06-13 14:09:21 1810 1

转载 可执行文件的装载与进程

首先简单说明程序和进程的区别程序就如同菜谱,人就如同cpu,其他厨具就如同计算机的其他硬件,整个炒菜的过程就是一个进程进程创建过程从操作系统的角度看,一个进程最关键的特征是拥有独立的虚拟地址空间。创建进程通常需要执行以下三个步骤:1、创建独立的虚拟地址空间虚拟地址空间是一组页映射函数将虚拟空间映射至物理内存,因此创建虚拟地址空间则是创建映射函数所需的数据结构,真正映射关系通常在后续的程序发送页错误...

2018-06-10 23:52:53 391

转载 程序员的自我修养------勘误表

谢谢你们的辛勤劳动,【程序员的自我修养】真的不错,花一周时间看完后,把以前的东西都串起来了,在看的过程中,发现一些小瑕疵,看到顺便记下,要在以后的版本中修改就更完美了。我购买的是2012年5月第9次印刷版。1. 60页  .错误: 所以内存中只须要保存一份改程序的指令部分  .正确: 所以内存中只须要保存一份该程序的指令部分  *改 -> 该2. 74页  .错误: ELF文件的段结构就是由...

2018-06-07 08:47:26 2276 2

转载 谈乱序执行和内存屏障

10多年前的程序员对处理器乱序执行和内存屏障应该是很熟悉的,但随着计算机技术突飞猛进的发展,我们离底层原理越来越远,这并不是一件坏事,但在有些情况下了解一些底层原理有助于我们更好的工作,比如现代高级语言多提供了多线程并发技术,如果不深入下来,那么有些由多线程造成问题就很难排查和理解.今天准备来聊聊乱序执行技术和内存屏障.为了能让大多数人理解,这里省略了很多不影响理解的旁枝末节,但由于我个人水平有限...

2018-06-04 23:50:11 1064

空空如也

空空如也

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

TA关注的人

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