自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (4)
  • 收藏
  • 关注

原创 Shell 中的 here 文档详解

我们知道平常在linux命令行的操作都可以放到文件里面,赋予可执行权限后,就可以将这文件变成一个shell脚本。但是如果我们跟有些程序交互时,shell脚本却帮不了我们太多。比如编辑一个文件和操作数据库。编辑一个文件一般用vi,进去后hjkl的aio的操作什么的,脚本怎么执行?mysql登陆输入mysql -u 用户 -p 密码后,就跟mysql进行一串交互,shell怎么执行?Here Docum

2015-04-27 15:34:59 1535 1

原创 C++ 中 strcpy、strcpy_s、strncpy、strlcpy的异同

strncpy的用法:它与strcpy的不同之处就在于复制n个字符,而不是把所有字符拷贝(包括结尾'\0')。函数原型:char * strncpy(char *dst,const char * src, int n)当src的长度小于n时,dst内的未复制空间用'\0'填充。否则,复制n个字符到dst,没有加'\0'。这里就要注意在字符串dst结尾处理加'\0'的情况了strcpy ,strncp

2015-04-25 14:53:44 1639 1

原创 transform使用详解

文件原型及可能的实现:版本一:template<class InputIt, class OutputIt, class UnaryOperation>OutputIt transform(InputIt first1, InputIt last1, OutputIt d_first, UnaryOperation unary_op){ while (first1 != last1)

2015-04-25 14:37:16 1358

原创 MySQL索引背后的数据结构及算法原理(下)

为了讨论索引策略,需要一个数据量不算小的数据库作为示例。本文选用MySQL官方文档中提供的示例数据库之一:employees。这个数据库关系复杂度适中,且数据量较大。下图是这个数据库的E-R关系图(引用自MySQL官方手册):下载文件后使用下面的语句将数据库导入: tar -xjf $HOME/Downloads/employees_db-full-1.0.4.tar.bz2 //解压缩,进入

2015-04-22 21:13:30 832

原创 MySQL索引背后的数据结构及算法原理(上)

本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第一部分主要从数据结

2015-04-22 17:15:18 774

原创 B树、B-树、B+树、B*树

声明:本文只是介绍了这几种树的定义和相互之间的比较介绍。并没有涉及到它们的插入、删除、分裂、整合等操作。这些会在后面的文章中有介绍。B 树即二叉搜索树: 1.所有非叶子结点至多拥有两儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如:B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等

2015-04-22 16:24:16 825

原创 理解Python中的with…as…语法

先说明一个常见问题,文件打开:try: f = open('xxx') do somethingexcept: do somethingfinally: f.close()其实我个人不止一次在网上看到有这么写的了,这个是错的。 首先正确的如下:try: f = open('xxx')except: print 'fail to open'

2015-04-21 20:29:58 675

原创 bind-函数调用包装器-详解

在头文件functional中定义,函数模板生成函数调用包装器。template< class F, class... Args >/*unspecified*/ bind( F&& f, Args&&... args ); (1) (since C++11)template< class R, class F, class... Args >/*unspecified*/ bind( F&&

2015-04-18 09:35:03 848

原创 lambda表达式详解

表达式定义:[ capture-list ] ( params ) mutable(optional) exception attribute -> ret { body } (1) [ capture-list ] ( params ) -> ret { body } (2) [ capture-list ] ( params ) { body } (3)

2015-04-17 17:02:05 700

原创 function对象使用使用详解

模板类function是一个通用的多态函数包装器,它的实例可以存储、拷贝并调用任何可调用对象- 函数、lambda表达式、bind表达式等其他函数对象。还可以是成员函数指针或数据成员的指针。对空的function实例调用将会抛出std::bad_function_call异常。#include <iostream>#include <functional>int main(){ std:

2015-04-16 21:01:17 794

原创 STL 中的 set 使用自定义比较运算符

set 容器模版需要3个泛型参数,如下:template<class T, class C, class A> class set;第一个T 是元素类型,必选; 第二个C 指定元素比较方式,缺省为 Less<T>, 即使用 < 符号比较; 第三个A 指定空间分配对象,一般使用默认类型。因此: (1) 如果第2个泛型参数你使用默认值的话,你的自定义元素类型需要重载 < 运算操作; (2) 如果

2015-04-15 20:34:09 1692

原创 STL 之 set 使用详解

使用set和multiset前包含头文件<set>set、multiset都是集合类,差别在与set中不允许有重复元素,multiset中允许有重复元素。他们都是有序集合。 std::set is an associative container(关联容器) that contains a sorted set of unique objects of type Key. Sorting is

2015-04-15 19:57:56 1407

原创 快速排序中的partition函数详解

快速排序的精髓就在partition函数的实现。我们构建两个指针,将数组分为三部分,黑色部分全部小于pivot,中间蓝色部分都大于pivot,后面红色部分未知。i指针遍历整个数组,只要它指向的元素小于pivot就交换两个指针指向的元素,然后递增。// arr[]为数组,start、end分别为数组第一个元素和最后一个元素的索引// povitIndex为数组中任意选中的数的索引 int part

2015-04-14 23:13:14 2928

原创 使用shell进行数学运算

可以利用 let、(())、[]进行基本的算术操作,高级操作使用bc更加高效。直接看代码把,输出很清楚。let[zhengweiwu 22:17 ~]$ no1=4[zhengweiwu 22:24 ~]$ no2=5[zhengweiwu 22:24 ~]$ let result=no1+no2[zhengweiwu 22:24 ~]$ echo $result9[zhengweiwu

2015-04-13 22:36:59 895

原创 深入理解二进制补码

文章来源背景大家都知道计算机内部采用补码表示整数的,但是具体到补码的内在含义,很多人不能理解,故我们分享自己的理解。首先说下补码的定义以及基本性质: 1) 正数的补码和原码相同; 2) 负数的补码等于取反后加1; 3) 0的正负两种补码相同; 4) 对一个补码再求补码等于自己; 5) 一个正数的原码和其对应的负数的补码相加等于模;针对本文,我们其实只关心规则1)和2)即可。实例为

2015-04-12 10:21:01 1127

原创 RAII(资源获取即初始化)详解

概念使用局部对象管理资源的技术通常称为“资源获取就是初始化”Resource Acquisition Is Initialization 机制是Bjarne Stroustrup首先提出的。要解决的是这样一个问题:在C++中,如果在这个程序段结束时需要完成一些资源释放工作,那么正常情况下自然是没有什么问题,但是当一个异常抛出时,释放资源的语句就不会被执行。于是Bjarne Stroustrup就想到

2015-04-10 16:05:42 1887

原创 MySQL InnoDB 共享表空间和独立表空间

共享表空间某一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下。 默认的文件名为ibdata1, 初始化为10M。由于是默认的方式,就暂且理解为Mysql官方推荐的方式。相对而言所有的数据都在一个(或几个)文件中,比较利于管理,而且在操作的时候只需要open这一个(或几个)文件即可,相对来说代价很低。但问题是在数据达到以G为单位来计算的时候优劣逆转。一

2015-04-09 21:23:58 729

原创 linux下mysql的root密码忘记解决方法

1. 首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对 外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。 2.修改M

2015-04-09 18:48:35 683

原创 教你怎样知道C++类库中,各种各样的类的功能和用法

cppreference.com涉及主流编译器对C++11和C++14新特性的支持分析,各种语言特性、各种头文件,概念、容器、类库、STL、原子操作、线程库和正则等。重度推荐 — cppreference.comcplusplus.com这个主要偏重与对示例代码的展示,上面的偏重库的说明,这里注重实用。cplusplue.com对不熟悉的库或者函数,有这两个网站,应该足够了。标准库头文件(中文)

2015-04-08 23:27:40 1385

原创 OLTP(联机事务处理)和OLAP(联机分析处理)的概念和优化

OLTP,也叫联机事务处理(Online Transaction Processing),表示事务性非常高的系统,一般都是高可用的在线系统,以小的事务以及小的查询为主,评估其系统的时候,一般看其每秒执行的Transaction以及Execute SQL的数量。在这样的系统中,单个数据库每秒处理的Transaction往往超过几百个,或者是几千个,Select 语句的执行量每秒几千甚至几万个。典型的O

2015-04-05 15:07:25 1492

原创 关于CPU Cache -- 程序猿需要知道的那些事

文章欢迎转载,但转载时请保留本段文字,并置于文章的顶部 作者:卢钧轶(cenalulu) 本文原文地址:http://cenalulu.github.io/linux/all-about-cpu-cache/先来看一张本文所有概念的一个思维导图为什么要有CPU Cache随着工艺的提升最近几十年CPU的频率不断提升,而受制于制造工艺和成本限制,目前计算机的内存主要是DRAM并且在访问速

2015-04-04 10:03:44 651

原创 C++ 新标准下的强制类型转换详解

使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast。static_cast用法:static_cast<type_id> (expression)该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:用于类层次结构中基类和派生类之间指针或引用的转换 进行

2015-04-01 16:33:28 716

SSH框架整合实例

完整的ssh框架整合实例,真的是完整的,不要积分

2014-08-28

阿里巴巴2014名企实习

包括笔试面试的经验分享,有笔试题目和面试题目的分享,看一下收获很大的

2014-05-29

排列生成算法

对排列生成算法的很好的总结,很详细,有着丰富的例子,理解起来不是问题

2013-11-23

数据库 分析了解图书信息管理的创建过程

库表的建立,这是很容易实现的,希望对大家会有作用,谢谢

2011-06-03

空空如也

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

TA关注的人

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