想用C++写项目,数据库是必须的,所以这两天学了一下C++操作Mysql数据库的方法。也没有什么教程,就是在网上搜的知识,下面汇总一下。 连接MySQL数据库有两种方法:第一种是使用ADO连接,不过这种只适合Windows平台;第二种是使用MySQL自己的C API函数连接数据库。我是在Linux平台下开发,所以就采用第二种方法,有很多Api函数,但是常用的就几个,我也是就用到其中的几个。 API函数 1.mysql_real_connect() 连接一个mysql服务器 MYSQL *mysql_real_connect (MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag) 如果连接成功,返回MYSQL*连接句柄。如果连接失败,返回NULL。对于成功的连接,返回 继续阅读 >>


杜肖孟 17/05/28 23:28:44
之前一直用的ubuntu系统,但是我的ubuntu突然出现了点问题,心血来潮,直接把ubuntu格掉,装上Fedora尝试一下redhat系列。用惯了ubuntu,装上Fedora后用起来感觉非常别扭,经过一晚上的折腾后,终于将自己的Fedora配置的好用了。在此记录安装完后需要配置的东西。 一.设置终端快捷键 用惯了ubuntu,装完fedora后,按ctrl+alt+t竟然不出终端窗口。原来,在fedora下,打开终端默认并没有快捷键。我们需要自己设置打开终端的快捷键。 打开桌面左上角的【活动】–>【应用程序】–>【系统工具】–>【设置】–>【键盘】 将滚动条拉到最后,点击最下面的‘+’,在弹出的自定义快捷键窗口里, 1)名称:可以随意填写 2)命令:填写/usr/bin/gnome-terminal(因为这个是终端程序的路径嘛) 3) 设置快捷键:按下ctrl+alt+t,将快捷键设置为ctrl+alt+t 填好后,点击添加,设置完毕。 二.使用sudo命令 Fedora默认没有sudo命令,每次 继续阅读 >>


冯鑫 17/05/28 23:16:51
除过正则表达式的基本概念与特性还有使用方法之外,我们在解析html的时候,如果要进行字符串的匹配,必须还要熟悉正则表达式之中量词的使用法则,今天我们就来谈谈贪婪、逐步、独吐这三种量词的使用。 贪婪量词 我们先来看一下经常使用的贪婪量词都有哪些: X?: X项目(项目也可以理解为X代表的变量,项目比较准确)出现一次或没有。 X*: X项目出现0次或多次。 X+: X项目至少出现1次。 X{n}: X项目出现n次。 X{n, }: X项目至少出现n次。 X{n, m}: X项目出现n次但不超过m次。 下来我们解释贪婪量词为何贪婪。当我们使用贪婪量词进行字符串匹配的时候,如果比较器(Matcher)看到贪婪量词,会将剩下的字符串全部吃掉,然后从字符串的末尾一个个再吐出来,在这个过程中,它还会将吐出来的字符与规则表达式进行比较,如果吐出来的字符串符合规则表达式,而吃下的字符串也符合贪婪量词那么就比较成功,我们可以预想到,贪婪量词之所以贪婪,就是因为它会尽可能的找出长度最长的符合文字。 举个例子: 文字:xf 继续阅读 >>


董恒毅 17/05/28 23:01:57
  这是一个 bash shell 脚本,其中有若干可以整蛊(结仇)你的同事的小技巧——或者说恶作剧。看完之后,感觉不寒而栗,要是谁敢这样整我,我一定和他绝交! 警告,切勿在生产环境体验,一切后果脚本作者和本文作者均不不承担! 警告,切勿在生产环境体验,一切后果脚本作者和本文作者均不不承担! 警告,切勿在生产环境体验,一切后果脚本作者和本文作者均不不承担! 这个世界怎么了? 这个脚本主要由一些别名、函数、环境变量定义组织而成,执行该脚本后,你的 shell 环境就变成了一个光怪陆离的世界。 好了,那么我们来看看都发生了什么。 注:本脚本适用于 bash 环境,其它 shell 环境有些不支持。 可怕的默认编辑器 当系统调用默认编辑器来编辑比如 crontab 时,biu 的一下,文件没了! export EDITOR=/bin/rm; 这是将 EDITOR 环境变量定义为 rm,而它原本应该是 vi、emacs 或 nano 的,体会一下,是不是很酸爽? 学习课堂: EDITOR 环境变量用于定于系统的默认编辑 继续阅读 >>


何攀 17/05/28 15:14:53
1. 什么是 LNMP?   LNMP 指的是 Linux 系统下 Nginx+MySQL+PHP 这种网站服务器架构。 Nginx优势:   (1) 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。   (2) 作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP 代理服务器对外进行服务。Nginx 用 C 编写,不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。   (3) 作为邮件代理服务器:Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。   (4) Nginx 安装非常的简单,配置文件非常简洁(还能够支持 perl 语法)。Nginx 支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。 2. 下载源码包安装 LNMP:   Linux 的安装就不介绍了,下面介绍 PHP, Mysql, 继续阅读 >>


何攀 17/05/28 14:29:37
1. 不能使用sudo命令解决方法: 解决方法(添加用户至sudoers文件): (1) 切换root用户 (2) 添加用户至 sudoers 文件(vim /etc/sudoers 或者 visudo) 输入y即可. (3) 正常使用sudo命令 2. 修改sudoers文件,让sudo在你输入错误密码时“嘲讽”你 (1) 执行 sudo visudo (或 sudo vim /etc/sudoers)命令 (2) 加入语句 Defaults badpass_message=”你不是本人吧,不要再做徒劳的尝试了~”,(输入错误密码会输出此句话,可随意设置提示语句) (3) 修改后的效果: 作者:Oscer2016 发表于2017/5/28 11:51:59 原文链接 阅读:3 评论:0 查看评论 继续阅读 >>


何攀 17/05/28 11:51:59
1. 什么是 LAMP?   LAMP 指的是 Linux(操作系统)、ApacheHTTP 服务器,MySQL(有时也指 MariaDB,数据库软件)和 PHP(有时也是指 Perl 或 Python),一般用来建立 web 应用平台。 2. 下载源码包安装 LAMP:   Linux 的安装就不介绍了,下面介绍 PHP, Mysql, Apache 的安装 (会用到解压命令, 详见 HP的博客之解压命令详解 ): (0) 安装一些必需工具或者库 sudo yum install cmake gcc gcc-c++ libxml2-devel ncurses-devel perl-Data-Dumper boost boost-doc boost-devel (1) PHP官网下载php源码包 wget http://hk1.php.net/get/php-7.1.5.tar.gz/from/this/mirror (2) 解压下载的源码包至指定目录 sudo tar zxvf mirror -C /opt/ (3) 继续阅读 >>


何攀 17/05/28 10:48:42
17题 struct node{ char a; short b; int c; }; int main(void) { struct node s; memset(&s, 0, sizeof(struct node)); s.a = 3; s.b = 5; s.c = 7; struct node *pt = &s; printf("%d\n",*(int *)pt); printf("%lld\n",*(long long *)pt); } 关键词—大小端、内存对齐、强制类型转换 内存对齐 首先我们来看这个结构体,先是1字节char,然后2字节short,然后4字节int,那么在内存中的布局应该是 大小端 什么是大小端呢,这里不具体展开,只做最简单的介绍。 我们知道 一个int 类型的数据在计算机中占4个字节(现在的大部分情况),那么如果我写下 int a = 1; 在内存中是怎么存储的呢 ? 我们知道应该是000…1, 也 继续阅读 >>


康艺杰 17/05/26 22:18:13
在做网络安全事件分析的时候,都会遇到内存寻址的知识,例如上次跟大家分享的《 空指针漏洞防护技术》,就涉及到非法访问内存地址的问题。如果这个坎儿迈不过去,你就会迷失在代码中,更无从分析了。今天绿盟科技的安全技术专家就讲讲这个内存寻址的原理,文章分为上下两篇《内存寻址原理》及《内存寻址方式》。 随着信息化发展和数据处理能力需求的提高,对计算机硬件产品的性能和容量也提出了新的挑战,要求计算机处理能力也要能随实际情况需求的变动而提升、改变。 当下,一台普通的电脑硬盘容量也要200多G,内存也有4G;如此大容量的硬盘和内存,在处理大量数据或是大型游戏面前还是显得力不从心,需要通过扩容来满足需求,比如将内存由4G提升到8G或是16G不等。扩容后对个人体验确实提升不少。对于内存容量的提升需要有相应的硬件基础支撑,需要有能消化掉这么多内存的寻址地址。比如说如果一8位单片机如果要装载16G的内存,那就是暴殄天物。 哪里有需求哪里就有市场 ;计算机从8位的51单片机,20位8086寻址,发展到32位 win2003,64位win10,都是由于信息化需求的膨胀 继续阅读 >>


李东林 17/05/25 20:01:58
原子操作和竞争条件 所有系统调用都是以原子操作方式执行的。内核保证了某系统调用中的所有步骤会作为独立操作而一次性加以执行,期间不会被其他进程或线程中断。原因是它规避了竞争状态(操作共享资源的两个进程的结果取决于CPU的先后执行顺序)。 举两个例子 一. 以独占的方式创建一个文件 对于open()创建文件时,当同时指定O_EXCL与O_CREAT作为标志位时,如果文件存在则open()将返回一个错误。这提供了一种机制,保证进程是打开文件的创建者,对文件是否存在的检查和创建文件属于同一原子操作。 假设当不以独占的方式打开文件时,会发生什么情况? 可以看到,若内核调度器判断出分配给A进程的时间片已经耗尽,并将CPU使用权交给B进程,B进程创建完后时间片耗尽CPU使用权又转交给了A进程,在这一场景下,A进程会错误的以为目标文件是由自己创建的,因为无论目标文件存在与否,进程A对open()的第二次调用都会成功。 由于第一个进程在检查文件是否存在和创建文件之间发生了中断,造成两个进程都声称自己是文件的创建者。结合O_EXCL和O_C 继续阅读 >>


王一妃 17/05/25 12:48:06