自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Code Young 的博客

code by code ,code a word!

  • 博客(89)
  • 资源 (3)
  • 收藏
  • 关注

原创 find | grep | find & grep

find / -name file-namegrep "string" file-namefind . | xargs grep -ri "OSSECHIDS"

2017-03-29 19:11:51 623

原创 linux下编译动态加载库,静态库等

干货直接来:Linux下静态库、动态库的makefile建立。动态库建立gcc -fPIC  -c add.c ../include(放头文件) 生成add.o目标文件gcc -shared -o libadd.so add.o 生成libadd.so动态库 这个库的名是add将这个库放在根目录的lib文件里gcc -o main main.c –l add ../in

2017-03-10 09:32:46 777

原创 CGI详解(原理,配置及访问)

一.基本原理CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口。通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端。组成CGI通信系统的是两部分:一部分是html页面,就是在用户端浏览器上显示的页面。另一部分则是运行在服务器上的Cgi程序。它们之间的通讯方式如

2017-03-09 18:36:53 30292 2

原创 gcc编译生成动态链接库,静态库步骤

废话不说,直接干货:首先touch三个文件test.h,test.c,main.ctest.c文件内容:int add(int a, int b){ return a + b;}int sub(int a, int b){ return a - b;}int mul(int a, int b){ return a * b;}int div(int a,

2017-03-09 14:28:04 2080

原创 linux下多线程之生成者与消费者模型(互斥,读写锁,条件变量)

线程间的同步方法大体可分为两类:用户模式和内核模式。顾名思义,内核模式就是指利用系统内核对象的单一性来进行同步,使用时需要切换内核态与用户态,而用户模式就是不需要切换到内核态,只在用户态完成操作。用户模式下的方法有:原子操作(例如一个单一的全局变量),临界区。内核模式下的方法有:事件,信号量,互斥量。下面我们来分别看一下这些方法:一、互斥锁或互斥量(mutex)下面是用互斥量来

2017-02-21 18:58:51 624

原创 linux下运用c实现队列调度

头文件Queue.h #ifndef Queue_H #define Queue_H typedef int Item; typedef struct node * PNode; typedef struct node { Item data; PNode next;

2017-02-21 18:46:16 1081

原创 linux下8中进程间通信方式

1,无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系2,高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式3,有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。4

2017-02-07 19:16:45 303

原创 个人面试经历题

1,进程的堆栈结构。2,进程的地址结构。3,栈溢出问题定位。4,线程CPU使用率过高问题定位。5,进程内存泄露问题定位。6,线程阻塞问题定位。7,进程间通讯方式。8,线程同步方式。9,linux协议栈。10,实现一种协议完成数据传输。11,线程间的生产者与消费者模型。12,用户态到内核态的通信方式。13,实现一种高效的用户态到内核态的数据传输方式。

2017-02-06 19:52:03 459

转载 Mysql 工作原理

刚开始接触一个新的事物的时候,我觉得很有必要从其工作原理入手,弄清楚这个东西的来龙去脉,为接下来的继续深入学习做好铺垫,掌握好其原理有助于我们从整体上来把握这个东西,并且帮助我们在排错过程中理清思路。接下来,还是从mysql的工作原理开始入手,下面先来一张经典的图:上面的图就是mysql的内部架构,可以清楚的看到Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。

2017-01-23 09:27:24 516

原创 CenterOS下的apache下开启ssl访问,即https

lamp开启ssl首先需要安装openssl和apache的ssl模块,执行:yum install openssl mod_ssl -y即可,接下来的配置方法和以下内容类似wamp开启SSL1.#修改httpd.conf文件LoadModule ssl_module modules/mod_ssl.soInclude conf/extra/httpd-ss

2017-01-12 16:17:32 1409

原创 Mysql单字段容量过大insert导致segfault问题。

问题原因:导入或者插入的数据超过了mysql默认单个字段最大容量#查看数据库中最大的单个文件容量SHOW VARIABLES LIKE '%max_allowed_packet%';#设置最大单个文件容量为10M,单次有效SET GLOBAL max_allowed_packet=20*1024*1024通过这个命令来修改单字段默认最大容量。

2017-01-11 14:49:07 1258

原创 ubuntu及CenterOS下的easy_install安装(python)

Ubuntu下:sudo apt-get install python-setuptoolsCenter OS下:yum apt-get install python-setuptools然后既可以不区分ubuntu或者centeros进行python组件安装了例如:sudo easy_install MySQL-python

2017-01-10 15:50:46 2496

原创 CenterOS下的mysql安装及初始化:

CenterOS安装步骤:查看CentOS自带mysql是否已安装。输入:yum list installed | grep mysql输入:yum -y install mysql-server mysql mysql-devel ,命令将:mysql-server、mysql、mysql-devel都安装好,当结果显示为“Complete!”即安装完毕。

2017-01-10 15:38:34 1357 1

原创 ubuntu及Center OS下的python mysql组件安装。

Ubunt安装步骤:1、sudo apt-get install python-setuptools2、sudo apt-get install libmysqld-dev3、sudo apt-get install libmysqlclient-dev4、sudo apt-get install python-dev5、sudo easy_install mysql-pyth

2017-01-10 15:37:11 471

原创 Ubuntu及Center OS下的tornado安装。

下载tornado组件包http://www.tornadoweb.cn/手动安装: 下载 tornado-1.2.1.tar.gztar xvzf tornado-1.2.1.tar.gzcd tornado-1.2.1python setup.py buildsudo python setup.py install安装需求Ubuntu Linux (Pyt

2017-01-10 15:02:00 839

原创 Center OS下的apache及openssl-cgi-bin访问实例。

环境需要安装openssl、apache的mod_ssl扩展,iptables中开放443的访问。同时配置好httpd支持mod_ssl模块。在目录/etc/httpd/conf打开httpd.conf。ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"。会看到cgi访问目录,也可以把这个目录改为自定义目录。在cgi目录下添加a.cgi#!/

2017-01-10 12:04:26 536

原创 Center OS下的apache及openssl-cgi-bin访问。

环境需要安装openssl、apache的mod_ssl扩展,iptables中开放443的访问。不同于ubuntu,在centeros下配置apache实际配置的是httpd安装openssl模块yum install opensslyum install openssl-devel在目录/etc/httpd/conf在httpd.conf中取消#LoadModule

2017-01-10 11:58:26 520

原创 Ubuntu下的apache及openssl-cgi-bin访问。

在ubuntu下安装好apache2后安装opensslsudo apt-get install openssl sudo apt-get install libssl-dev目录:/etc/apache2/mods-enabled增加软链接cgi.load -> ../mods-available/cgi.loadsocache_shmcb.load ->

2017-01-10 11:45:26 542

原创 ssh localhost :connect refused

错误原因1.sshd 未安装2.sshd 未启动3.防火墙4需重新启动ssh 服务解决方法:1.确定安装sshd:  sudo apt-get installopenssh-server2.确定启动了SSH服务: sudo net start sshd  3.关闭本地防火墙:sudo ufw disable 4.重新启动SSH服务:sudo

2016-12-26 14:02:43 669

原创 ubuntu14.04下mysql5.5支持utf-8编码格式配置文件修改步骤

首先进入终端打开文件     sudo vi /etc/mysql/my.cnf  1,在[client]下追加:     default-character-set=utf8  2,在[mysqld]下追加     character-set-server=utf8  3,在[mysql]下追加:     default-character-s

2016-12-13 08:29:00 1345

原创 ubuntu16.04下mysql5.7支持utf-8编码格式配置文件修改步骤

1,打开终端sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf 在文件的 [mysqld] # # * Basic Settings # user            = mysql pid-file        = /var/run/mysqld/mysqld.pid socket          = /var/ru

2016-12-13 08:13:55 3622 2

原创 指针和数组(第六节 指针数组和数组指针)

初学者总是分不出指针数组与数组指针的区别。其实很好理解:指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。数组指针:首先它是一个指针,它指向一个数组。在32位系统下永远是占4个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。下面到底哪个是数组指针,哪个是指针数组呢:A),int*p1[10];B),

2016-12-08 19:04:46 321

原创 指针和数组(第五节 定义与声明)

文件1中定义如下:chara[100];文件2中声明如下:externchar*a; (关于extern的用法,以及定义和声明的区别,请复习第一章)这里,文件1中定义了数组a,文件2中声明它为指针。这有什么问题吗?平时不是总说数组与指针相似,甚至可以通用吗?但是,很不幸,这是错误的。通过上面的分析我们也能明白一些,但是“革命尚未成功,同志仍需努力”。你或许还记得我上面说过的话:数组就是数组

2016-12-08 18:59:37 360

原创 指针和数组(第四节 指针与数组之间的恩恩怨怨)

很多初学者弄不清指针和数组到底有什么样的关系。我现在就告诉你:他们之间没有任何关系!只是他们经常穿着相似的衣服来逗你玩罢了。指针就是指针,指针变量在32位系统下,永远占4个byte,其值为某一个内存的地址。指针可以指向任何地方,但是不是任何地方你都能通过这个指针变量访问到。数组就是数组,其大小与元素的类型和个数有关。定义数组时必须指定其元素的类型和个数。数组可以存任何类型的数据,但不能存函

2016-12-08 18:54:34 315

原创 指针和数组(数组名a作为左值和右值的区别)

简单而言,出现在赋值符“=”右边的就是右值,出现在赋值符“=”左边的就是左值。比如,x=y。左值:在这个上下文环境中,编译器认为x的含义是x所代表的地址。这个地址只有编译器知道,在编译的时候确定,编译器在一个特定的区域保存这个地址,我们完全不必考虑这个地址保存在哪里。右值:在这个上下文环境中,编译器认为y的含义是y所代表的地址里面的内容。这个内容是什么,只有到运行时才知道。C语言引入一

2016-12-08 18:40:47 1157

原创 指针和数组(第二节 数组的内存布局 )

先看下面的例子:inta[5];所有人都明白这里定义了一个数组,其包含了5个int型的数据。我们可以用a[0],a[1]等来访问数组里面的每一个元素,那么这些元素的名字就是a[0],a[1]…吗?当我们定义一个数组a时,编译器根据指定的元素个数和元素的类型分配确定大小(元素类型大小*元素个数)的一块内存,并把这块内存的名字命名为a。名字a一旦与这块内存匹配就不能被改变。a[0],a[1]等

2016-12-08 18:38:45 270

原创 ubuntu 设定永久dns

ubuntu重启后增加DNS地址修改的问题件是/etc/resolv.conf增加 nameserver 8.8.8.8但是重启后,这个修改会被清除但是可以通过修改:sudo vi /etc/resolvconf/resolv.conf.d/base(这个文件默认是空的)在里面插入:nameserver 8.8.8.8如果有多个DNS就一行一个修改好保存,然后执

2016-12-08 18:26:47 591

原创 异步交互的优势-解决C10K问题

不同于那些最多只能达到10,000个并发连接的传统网络服务器,Tornado在设计之初就考虑到了性能因素,旨在解决C10K问题,这样的设计使得其成为一个拥有非常高性能的框架基于线程的服务器,如Apache,为了传入的连接,维护了一个操作系统的线程池。Apache会为每个HTTP连接分配线程池中的一个线程,如果所有的线程都处于被占用的状态并且尚有内存可用时,则生成一个新的线程。尽管不同的操作

2016-11-23 09:24:32 540

原创 通过socket连接获取本机IP地址

#include  #include  #include  #include  #include  #include  #include  #include  #include  #include    #define PORT 443  #define MAXDATASIZE 1024    int main()  

2016-11-17 18:33:15 3559

原创 获取本机接口IP地址

#include #include #include #include #include int get_local_ip(char *ips) {        struct ifaddrs *ifAddrStruct;        void *tmpAddrPtr=NULL;        char ip[INET_ADDRSTRLEN];  

2016-11-17 18:32:07 2979

原创 获取本机网卡IP及对应的mac

#include #include #include #include #include #include #include #include #include #include #include   typedef long LONG;typedef char CHAR;#define CONST const #ifndef 

2016-11-17 18:30:47 1042

原创 获取本机mac地址

#include #include #include int main (int argc, const char * argv[]){    struct ifaddrs * ifAddrStruct=NULL;    void * tmpAddrPtr=NULL;    getifaddrs(&ifAddrStruct);    while (i

2016-11-17 18:29:22 602

原创 获取数组长度

#include "stdio.h"#define ARRAY_SIZE(x) (sizeof(x)/sizeof(*(x)))static char *newargv[255];int main( void ){    int num = 0;        num  = ARRAY_SIZE(newargv);    printf("num = %d\n

2016-11-17 18:28:11 556

原创 获取本机hostname

#include #include #include #include #include #include #include #include #include #include  int main(int argc ,char **argv){    char hostname[32 + 1];        if(gethostnam

2016-11-17 18:27:24 2458

原创 获取本机uname

#include #include int main( int argc ,  char ** argv){        struct utsname  utsname;                if( uname(&utsname) ) {            printf("111\n");        }              

2016-11-17 18:26:10 275

原创 Vi||Vim显示行号,自动缩进,调整tab键宽度技巧

工作中嫌vim 中一个tab的宽度太大,debian系统,没改之前是宽度是8个字符,想改成4,如下:cd ~vim  .vimrc添加如下几行:(括号中的不是,是我添加的)set shiftwidth=4          (表示每一级缩进的长度)set softtabstop=4      (表示在编辑模式的时候按退格键的时候退回缩进的长度)set nu      

2016-11-17 10:08:07 4016

原创 ubuntu添加静态IP地址信息。

jerry@ubuntu:/etc/network$ cat /etc/network/interfaces# interfaces(5) file used by ifup(8) and ifdown(8)auto loiface lo inet loopback auto eth0iface eth0 inet staticaddress 192.168.2.100

2016-11-15 09:59:57 347

原创 指针和数组(分节1-指针的内存布局)

指针是C语言和C++语言的精华如果未能很好地掌握指针,那 C/C++也基本等于没学。可惜,对于刚毕业的计算机系的学生,几乎没有人真正完全掌握了指针和数组、以及内存管理,那么什么是指针,什么是数组。数组和指针之间有什么样的关系?int*p;大家都知道这里定义了一个指针 p。但是 p到底是什么东西呢?还记得第一章里说过,“任何一种数据类型我们都可以把它当一个模子”吗?p,毫无疑

2016-11-15 09:51:10 293

原创 预处理-分节8(#运算符)

#也是预处理?是的,你可以这么认为。那怎么用它呢?别急,先看下面例子#defineSQR(x) printf("Thesquareof x is%d.\n",((x)*(x)));如果这样使用宏: SQR(8);则输出为: Thesquareof x is 64.注意到没有,引号中的字符 x被当作普通文本来处理,而不是被当作一个可以被替换的语言符号。假如你确实希望在字符

2016-11-15 09:34:25 280

原创 linux下的OPENSSL编程- 简单函数介绍

OpenSSL是一个开放源代码的SSL协议的产品实现,它采用C语言作为开发语言,具备了跨系统的性能。调用OpenSSL的函数就可以实现一个SSL加密的安全数据传输通道,从而保护客户端和服务器之间数据的安全。头文件:#include #include 基于OpenSSL的程序都要遵循以下几个步骤:(1 ) OpenSSL初始化在使用OpenSSL之前,

2016-11-08 18:23:11 8985

SecureCrt7.3.4注册机及安装程序-内含教程

SecureCrt7.3.4注册机及安装程序-内含教程

2016-12-04

linux主机安全

主机安全

2016-11-12

网络安全之DDoS攻击防护

详细阐述DDoS攻击防护原理,列举常见的DDoS攻击(deny型,FLood型,放大型),列举常见的引流回注方式,说明防护及引流回注涉及的网络技术及防护技术。

2016-11-12

空空如也

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

TA关注的人

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