自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 腾讯后台开发面试总结(别人的)

前段时间专心面过腾讯,经过了N轮的技术面,结果还是挂了,但没挂在技术面,比较欣慰,回来之后写一点总结,以供有梦想进入腾讯做后台服务器开发的同学参考,本文章为胡成精心总结,胡成原创,copy和转载请通知。ps:()之内的文字由作者点评,非面试题文字。linux和os:netstat tcpdump ipcs ipcrm (如果这四个命令没听说过或者不能熟练使用,基本上可以回家,通过的概率较小...

2019-09-09 23:43:12 559

转载 valgrind 工具介绍和简单的使用

最近老是遇上各种奇奇怪怪的core dump,不太会分析的情况下看到了这款工具。在这记录分享下。Valgrind 是个开源的工具,功能很多。例如检查内存泄漏工具---memcheck。Valgrind 安装:去官网下载: http://valgrind.org/downloads/current.html#current安装过程:(可以直接查看README文档来确认安装过程)...

2019-08-15 13:00:21 746

转载 C++声明和定义区别

C++声明和定义的区别收藏《C++Primer》第四版2.3.5节中这么说到:①变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。②变量声明:用于向程序表明变量的类型和名字。③定义也是声明:当定义变量时我们声明了它的类型和名字。④extern关键字:通过使用extern关键字声明变量名而不定义它。1.定义也是声明,e...

2019-07-29 22:21:53 203

转载 static及其作用域

一、面向过程设计中的static 1、静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1#include <iostream.h>void fn();static int n; //定义静态全局变量void main()void fn() 静态全局变量有以下特点: 该变...

2019-07-29 21:59:35 1807

转载 KVM虚拟化:使用qemu-kvm创建和管理虚拟机

CentOS 6加载了KVM模块后,我们是无法进行虚拟机的管理的,如果需要管理KVM虚拟机,还需要管理工具才可以。先看一下KVM的管理工具栈。yum grouplist |grep -i "virtualization" Virtualization: qemu-kvm Virtualization Client: python-virt...

2019-04-09 17:22:44 2633

原创 shell 监控CPU、内存和硬盘利用率

1)CPU借助vmstat工具来分析CPU统计信息。#!/bin/bashDATE=$(date+%F""%H:%M)IP=$(ifconfigeth0|awk-F'[:]+''/inetaddr/{print$4}')#只支持CentOS6MAIL="[email protected]"if!whichvmstat&>/dev/nu...

2019-04-07 15:31:20 1183

原创 shell批量创建用户

#!/bin/bashDATE=$(date+%F_%T)USER_FILE=user.txtecho_color(){if[$1=="green"];thenecho-e"\033[32;40m$2\033[0m"elif[$1=="red"];thenecho-e"\033[31;40m$2\033...

2019-04-07 15:29:09 386

转载 lvs+keepalive 比较详细的安装配置文档

lvs说明:目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。在 调度器的实现技术中,IP负载均衡技术是效率最高的。在已有的IP负载均衡技术中有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(V...

2019-03-28 11:26:07 998

转载 【LVS+Keepalived】 LVS+Keepalived实现tcp、udp负载均衡及HA高可用

LVS 安装下载http://www.linuxvirtualserver.org/software/index.html编译安装yum install -y kernel-devel gcc gcc-c++yum install libnl* libpopt* popt-static -y解压完之后进入解压目录执行make && make install编译成功...

2019-03-28 09:26:43 272

转载 避免死锁的几种方式

避免死锁的几种方式:设置加锁顺序设置加锁时限死锁检测设置加锁顺序(线程按照一定的顺序加锁):死锁发生在多个线程需要相同的锁,但是获得不同的顺序。假如一个线程需要锁,那么他必须按照一定得顺序获得锁。 例如加锁顺序是A-&gt;B-&gt;C,现在想要线程C想要获取锁,那么他必须等到线程A和线程B获取锁之后才能轮到他获取。(排队执行,获取锁)缺点: 按照顺序加锁是一种有效的...

2018-12-26 12:55:40 14295

转载 面试总结

问1:构造和析构函数构造函数允许重载,所以在实例化对象的时候,可以根据传入参数的不同选择不同的构造函数,但是只会执行其中的一个,具体执行哪一个,按照传入的参数。默认构造函数。注意默认构造函数与默认拷贝构造函数不同,默认构造函数是无参函数,但是默认拷贝构造函数需要传参,形参是类对象,且需要完成所有成员的逐个复制。析构函数不允许重载,并且析构函数无参new 的地方分配内存,会自动调用类...

2018-12-24 11:36:40 150

转载 50个多线程面试题,你会多少?

下面是Java线程相关的热门面试题,你可以用它来好好准备面试。什么是线程? 什么是线程安全和线程不安全? 什么是自旋锁? 什么是Java内存模型? 什么是CAS? 什么是乐观锁和悲观锁? 什么是AQS? 什么是原子操作?在Java Concurrency API中有哪些原子类(atomic classes)? 什么是Executors框架? 什么是阻塞队列?如何使用阻塞队列来...

2018-12-17 23:06:46 176

转载 线程的查看以及利用gdb调试多线程

1. 线程的查看首先创建两个线程:#include &lt;stdio.h&gt;#include &lt;unistd.h&gt;#include &lt;pthread.h&gt;#include &lt;stdlib.h&gt;#include &lt;string.h&gt;void* pthread_run1(void* arg){    (void)arg;...

2018-11-29 19:34:04 772

转载 linux下抓包工具tcpdump详解

简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 实用命令实例默认启动tcpdump普通...

2018-11-29 19:32:57 448

转载 RSA密钥长度、明文长度和密文长度

本文介绍RSA加解密中必须考虑到的密钥长度、明文长度和密文长度问题,对第一次接触RSA的开发人员来说,RSA算是比较复杂的算法,天缘以后还会补充几篇RSA基础知识专题文章,用最简单最通俗的语言描述RSA,让各位了解RSA算法本身其实也很简单,RSA的复杂度是因为数学家把效率和安全也考虑进去的缘故。本文先只谈密钥长度、明文长度和密文长度的概念知识,RSA的理论及示例等以后再谈。提到密钥,我们不得...

2018-11-29 19:31:16 22916

转载 同一进程中同一端口如何区分不同的Socket

为了区分不同应用进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP 或 UDP)和使用的端口号。    Socket的原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。    accept()产生的Socket端口号是多少?  ...

2018-11-29 19:30:30 882

转载 Linux下redis 的安装以及C++操作redis

安装Redis打开Redis官网,进入下载页面,选择一个适合自己电脑的版本下载即可,下载飞机票http://redis.io/download,下载完成后解压、编译、安装,依次在终端下执行如下命令: tar -zxvf redis-2.8.7.tar.gz cd redis-2.8.7 sudo apt-get install tcl(redis测试程序需要tcl版本至少为8....

2018-11-02 17:55:38 303

转载 linux下使用自带mail发送邮件

linux 发邮件最简单的办法最近想通过linux监控系统状况并自动报警,一般Linux发送报警邮件通过本地邮箱或外部邮箱服务器,这里用最简单的方法实现linux 使用外部邮箱即可实现发送邮件功能,你只需简单注册个国内的邮件服务商邮箱,如163,也可以使用公司邮箱,需要安装mailx工具,mailx是一个小型的邮件发送程序。 具体步骤如下:1、安装[root@001 ~]# y...

2018-10-23 20:58:51 1139

转载 shell脚本限制日志文件大小和行数

背景: 项目server在后端持续运行,日志文件不断变大,需及时进行清空。解决方案:编辑sh脚本,指定时间间隔轮询;将超出限制的日志文件,先备份,再清空原日志文件内容。清空日志文件内容的方法有:            1.  echo "" &gt; test.log            2. cat /dev/null &gt; test.log            3....

2018-10-22 16:00:14 3805

转载 linux 下shell中if的“-e,-d,-f”是什么意思

文件表达式-e filename 如果 filename存在,则为真-d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真-L filename 如果 filename为符号链接,则为真-r filename 如果 filename可读,则为真 -w filename 如果 filename可写,则为真 -x f...

2018-10-22 15:59:48 6386

转载 RSA算法原理及其Openssl库函数

原理见:http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.htmlhttp://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.htmlOpenssl库函数:http://blog.chinaunix.net/uid-23069658-id-42829...

2018-10-17 14:27:10 6086

转载 linux上安装Openssl步骤详解

 1,查看原有系统是否已安装Opensslopenssl version -a1系统已经安装了openssl,我们先安装新的版本,然后将环境配置成最新的版本。2,从openssl官网下载最新的稳定版本,https://www.openssl.org/source/ 当前的稳定版是 openssl-fips-2.0.16.tar.gz(联邦信息处理标准(Federal Infor...

2018-10-12 15:11:36 1733

转载 RSA算法

RSA算法的安全性我们知道像RSA这种非对称加密算法很安全,那么到底为啥子安全呢?我们来看看上面这几个过程产生的几个数字:- p,q:我们随机挑选的两个大质数;- N:是由两个大质数p和q相乘得到的。N = p * q;- r:由欧拉函数得到的N的值,r = φ(N) = φ(p)φ(q) = (p-1)(q-1)。- e:随机选择和和r互质的数字,实际中通常选择65537;- d...

2018-10-12 15:11:31 837

转载 C++程序代码优化的方法

1、选择合适的算法和数据结构    选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。    在许多种情况下,可以用指针运算代替数组索引,这样做常常能产生又快又短的代码。与数组索引相...

2018-10-08 16:18:06 2041

转载 线程同步之信号量(sem_init,sem_post,sem_wait)

信号量和互斥锁(mutex)的区别:互斥锁只允许一个线程进入临界区,而信号量允许多个线程同时进入临界区。不多做解释,要使用信号量同步,需要包含头文件semaphore.h。主要用到的函数:int sem_init(sem_t *sem, int pshared, unsigned int value);,其中sem是要初始化的信号量,pshared表示此信号量是在进程间共享还是线程间共...

2018-09-12 11:25:11 2277

转载 Big-Endian & Little-Endian

大端模式Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。小端模式Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 小端模式 :强制转换数据不需要调整字节内容。大端模式 :符号位的判定固定为第一个字节,容易判断正负。采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。...

2018-09-12 11:22:16 4292

转载 Linux IPC总结

IPC进程间通信(Inter-Process Communication)就是指多个进程之间相互通信,交换信息的方法。Linux IPC基本上都是从Unix平台上继承而来的。主要包括最初的Unix IPC,System V IPC以及基于Socket的IPC。另外,Linux也支持POSIX IPC。System V,BSD,POSIX    System V是Unix操作系统最早的商业发...

2018-08-29 20:21:52 2230

转载 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例

消息队列函数由msgget、msgctl、msgsnd、msgrcv四个函数组成。下面的表格列出了这四个函数的函数原型及其具体说明。1.   msgget函数原型 msgget(得到消息队列标识符或创建一个消息队列对象) 所需头文件 #include &lt;sys/types.h&gt; #include &lt;sys/ipc.h...

2018-08-29 19:22:50 394

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

读写锁特点:1)多个读者可以同时进行读2)写者必须互斥(只允许一个写者写,也不能读者写者同时进行)3)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者) 互斥锁特点:一次只能一个线程拥有互斥锁,其他线程只有等待 互斥锁pthread_mutex_init()thread_mutex_lock()pthread_mutex_unlock(...

2018-08-10 08:08:00 304

转载 gdb 调试

一般步骤1) g++/gcc -g **.cpp -o  ** (需加上-g参数,编译阶段将调试信息添加到可执行文件中)2) gdb  -se -c ** (可执行文件或者dump文件)3)  进入gdb模式后,设置断点 break(b) 行号/函数名,info b 查看断点,clear 行号/函数清除断点  (a)run(r) 开始运行,  (b)next(n)单步调试不进入...

2018-08-08 22:43:28 130

转载 epoll模型详解

什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 转自:http://bl...

2018-08-07 23:49:05 8414 2

转载 负载均衡实现原理

负载均衡有硬件和软件两种.硬件层的比较牛逼,将4-7层负载均衡功能做到一个硬件里面,如F5,梭子鱼,据说yahoo中国!早些时候只用了两台F5做双活.目前主流的软件负载均衡分为四层和七层,LVS属于四层负载均衡,工作在tcp/ip协议栈上,通过修改网络包的ip地址和端口来转发, 由于效率比七层高,一般放在架构的前端.七层的负载均衡有nginx, haproxy, apache等, 工作在应用层,因...

2018-08-07 23:37:09 8534

转载 数据库中长连接和短连接的区别分析

什么是长连接?其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。通常的短连接操作步骤是:连接-》数据传输-》关闭连接;而长连接通常就是:连接-》数据传输-》保持连接-》数据传输-》保持连接-》…………-》关闭连接;这就要求长连接在没有数据通信时,定时发送数据包,以维持连接状态,短连接在没有数据传输时直接关闭就行了什么时候用长连接,短连接?长连接主要用于...

2018-08-07 23:32:26 10812

转载 Redis面试题及分布式集群

1. 使用Redis有哪些好处?(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持string,list,set,sorted set,hash (3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行 (4) 丰富的特性:可用于缓存,消息,按key设置过期...

2018-08-06 07:54:37 208

转载 HashMap实现原理及源码分析

哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。目录  一、什么是哈希表  二、Ha...

2018-08-05 23:32:48 75

转载 C++内存管理

在c++中内存主要分为5个存储区:栈(Stack):局部变量,函数参数等存储在该区,由编译器自动分配和释放.栈属于计算机系统的数据结构,进栈出栈有相应的计算机指令支持,而且分配专门的寄存器存储栈的地址,效率分高,内存空间是连续的,但栈的内存空间有限。堆(Heap):需要程序员手动分配和释放(new,delete),属于动态分配方式。内存空间几乎没有限制,内存空间不连续,因此会产生内存碎片。...

2018-08-03 12:01:42 132

转载 进程和线程的区别?什么时候用进程?什么时候用线程?为什么你的项目中用的是线程?为什么不用进程?如果只有进程,对你这个项目有没有影响?

答:首先得知道什么是进程什么是线程?我的理解是进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的一个实例。线程是进程的一个实体。进程——资源分配的最小单位,线程——程序执行的最小单位。 线程进程的区别体现在几个方面:第一:因为进程拥有独立的堆栈空间和数据段,所以每当启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表...

2018-08-03 10:55:24 863

转载 C++中模板使用详解

转自:http://www.360doc.com/content/09/0403/17/799_3011262.shtml1. 模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。...

2018-08-03 00:02:42 158

转载 C/C++之宏、内联函数和普通函数的区别

内联函数的执行过程与带参数宏定义很相似,但参数的处理不同。带参数的宏定义并不对参数进行运算,而是直接替换;内联函数首先是函数,这就意味着函数的很多性质都适用于内联函数,即内联函数先把参数表达式进行运算求值,然后把表达式的值传递给形式参数。    内联函数与带参数宏定义的另一个区别是,内联函数的参数类型和返回值类型在声明中都有明确的指定;而带参数宏定义的参数没有类型的概念,只有在宏展开以后,才由...

2018-08-02 23:24:57 224

转载 虚函数和纯虚函数的用法和区别

1. 虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(class)不能被称为抽象类(abstract class)。  2. 虚函数可以被直接使用,也可以被子类(sub class)重载以后以多态的形式调用,而纯虚函数必须在子类(sub class)中实现该函数才可以使用,因为纯虚函数在基类(base c...

2018-08-02 11:54:44 8966

空空如也

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

TA关注的人

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