自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 十一、存储过程

1. 为什么需要使用存储过程。存储过程可以理解成函数,调用存储过程就是调用函数。 所以使用存储过程的理由有下:封装性。 通过把处理封装在容易使用的单元中,简化复杂的操作。完整性。 由于不要求反复建立一系列处理步骤,这保证了数据的完整性。防止错误。 需要执行的步骤越多,出错的可能性就越大。防止错误保证了数据的一致性。简化对变动的管理。 如果表名、列名或业务逻辑(或别的内容)有...

2019-02-13 11:39:00 142

转载 十、视图

1. 为什么使用视图?重用SQL语句。简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节。使用表的组成部分而不是整个表。保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。在视图创建之后,可以用与表基本相同的方式利用它们。可以对视图执行 SELECT操作,过滤和排序数据,将视图联结到其他视图或表,甚至能添加和更新数据。因为视图...

2019-02-13 10:55:00 152

转载 九、增、改、查数据

1. 插入记录。(1)不推荐的做法:不指定行。mysql> insert into customers-> values(NULL,-> 'Pep E.LaPew'-> ,'100 Main Street',-> 'Los Angeles',-> 'CA',-> '90046',-> 'USA',-> NULL,...

2019-02-12 12:10:00 160

转载 八、组合查询和全文本搜索

1.UNION如果我们要执行多个查询条件,比如检索price不高于5或者供应商是1001,1002的商品。我们可以使用where...or...语句:select products.vend_id,prod_id,prod_price from products where prod_price<=5 or products.vend_id in (1001,1002...

2019-02-10 20:12:00 137

转载 七、联结表

1.关系表概述背景: 假如有由同一供应商生产的多种物品,应当分为多个表存储:因为同一供应商生产的每个产品的供应商信息都是相同的,对每个产品重复此信息既浪费时间又浪费存储空间。如果供应商信息改变(例如,供应商搬家或电话号码变动),只需改动一次即可。如果有重复数据(即每种产品都存储供应商信息),很难保证每次输入该数据的方式都相同。不一致的数据在报表中很难利用。分为两个表存储:...

2019-02-10 20:12:00 142

转载 六、聚合函数、数据分组

1.AVG函数:求平均值。需要注意的是:每个字段都必须使用一个AVG函数:select avg(id) as id_avg,avg(price) as price_avg from tb2;如上,这样才能分别求出id和price的平均值。AVG函数忽略NULL。2.COUNT函数:统计数量。使用 COUNT(*) 对表中行的数目进行计数,不管表列中包含的是空值( NULL ...

2019-02-10 09:38:00 143

转载 五、字段处理

1.计算字段如果想在一个字段中既显示公司名,又显示公司的地址,但这两个信息一般包含在不同的表列中。列数据是大小写混合的,但报表程序需要把所有数据按大写表示出来。需要根据表数据进行总数、平均数计算或其他计算。存储在表中的数据都不是应用程序所需要的。我们需要直接从数据库中检索出转换、计算或格式化过的数据;而不是检索出数据,然后再在客户机应用程序或报告程序中重新格式化。简单来说,...

2019-02-09 12:33:00 258

转载 四、通配符过滤、正则表达式

LIKE谓词:为在搜索子句中使用通配符,必须使用 LIKE 操作符。 LIKE 指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。1. %:任何字符出现任意次数。select column_name1 from table_name where column_name2 like 'jet%';检索以jet开头的数据,默认不区分大小写。2. _: 下划线...

2019-02-09 10:08:00 169

转载 三、排序检索数据、过滤数据

1.排序数据(默认升序:ASC)子句: 如select * from table_name中的from就是一个子句。排序使用的是order by子句。select column_name from table_name order by column_name;2.按多列排序select column_name1,column_name2 from table_name ord...

2019-02-09 10:07:00 76

转载 二、检索数据

1.连接数据库:mysql -u username -p2.查看数据库show databases;3.进入数据库use xxxx; 其中xxxx是数据库的名字。4.查看数据库中的表show tables;5.查看表中的字段show columns from table_name;或者:desc table_name;6.查看已存在的数据库、表的信息sho...

2019-02-08 19:56:00 99

转载 一、MySQL一些简述

概述数据库(database) :保存有组织的数据的容器(通常是一个文件或一组文件)。主键(primary key):唯一标识表中每行的这个列(或这组列)称为主键。主键用表示一个特定的行。没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只涉及相关的行。应该总是定义主键,不管是否有必要。主键要求:任意两行都不具有相同的主键值。每个行都必须具有一个主键值(主键...

2019-02-08 19:55:00 92

转载 C++回调函数、静态函数、成员函数踩过的坑。

C++回调函数、静态函数、成员函数踩过的坑。明确一点即回调函数需要是静态函数。原因:普通的C++成员函数都隐含了一个this指针作为参数,这样使得回调函数的参数和成员函数参数个数不匹配。若不想使用C式函数作为回调函数呢?(破坏封装性)解决方法使用static修饰成员函数。static不含this指针。不用static修饰的成员函数,需要借助中间变量来访问。这个演示的很好...

2019-01-15 14:21:00 323

转载 信号集函数

POSIX信号集操作#include <signal.h>int sigemptyset(sigset_t *set);int sigfillset(sigset_t *set);int sigaddset(sigset_t *set, int signum);int sigdelset(sigset_t *set, int signum);int sigisme...

2018-12-05 10:40:00 135

转载 信号的产生函数和自定义捕捉函数

自定义捕捉函数函数原型:#include <signal.h>typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);参数解释signum: 需要捕获的信号。handler: 由上可以看到,handler是一个返回值为void,参数为Int的...

2018-12-05 10:40:00 249

转载 存储映射--mmap

存储映射使一个磁盘文件与存储空间中的一个缓冲区相映射。当从缓冲区中取数据,就相当于读文件中的相应字节。将数据存入缓冲区,则相应的字节就自动写入文件。使用这种方法,首先应通知内核,将一个指定文件映射到存储区域中。这个映射工作可以通过mmap函数来实现。不通过IO。直接操作内存,效率更高。mmap函数函数原型#include <sys/mman.h>void...

2018-12-04 12:27:00 437

转载 进程间通信之管道--pipe和fifo使用

匿名管道pipe函数原型:#include <unistd.h>int pipe(int fildes[2]);参数说明fildes是我们传入的数组,也是一个传出参数。fildes[0]是读端,fildes[1]是写端。返回值成功调用返回0。失败调用返回-1且设置errno.实例现在实现一个用父进程读,子进程写的管道例子。int main(int a...

2018-12-02 13:24:00 157

转载 dup和dup2函数简单使用

dup函数头文件和函数原型:#include <unistd.h>int dup(int oldfd);dup函数是用来打开一个新的文件描述符,指向和oldfd同一个文件,共享文件偏移量和文件状态。共享偏移量代码:int main(int argc, char const *argv[]){ int fd = open("testDup.txt", O_...

2018-12-01 10:07:00 200

转载 Open_Read_Write函数基本使用

先来一个小插曲,我们知道read函数等是系统调用函数,应该在第二页的手册里头,可是我man 2 read的时候却找不到,由此到/usr/sharead/man/man2目录下查看的时候发现此目录为空,所以我就重新安装一下man手册。:yum install man-pages现在man 2 read正常使用,man2目录下也有相应的东西了。进入正题,简单讲几个函数,它们的参数变化之...

2018-11-30 10:02:00 191

转载 Makefile简单编写实例

介绍一下Makefile的简单编写例子。编写Makefile的规则就是:目标文件:依赖文件(tab)编译规则现在我有一个文件目录结构为:解释一下这几个文件。首先我创建makefile目录,底下有一个include目录和src目录。include目录存放一个head.h头文件,是我们src中所有cpp文件都要引用的头文件。这四个cpp文件就是实现加减乘除的功能。把add.cp...

2018-11-29 20:15:00 397

转载 仿函数、谓词、适配器、内建对象配合常见算法的使用

在前面几篇中,已经有过好几次的仿函数结合遍历、查找等算法的使用了,这边再进行归纳一下。仿函数(函数对象)前面已经说过了,仿函数的特点有:是个类,不是个函数,可以说成是函数对象。重载()。内部可以声明一些变量,保存状态,如声明一个整型变量记录调用次数。仿函数通常不声明构造函数和析构函数,因此构造和析构时不会发生问题,避免了函数调用时的运行问题。可内联编译。 使用函数指针就不...

2018-11-23 11:01:00 169

转载 我不熟悉的map

讲map之前,其实很多都在set那篇讲过了。我不熟悉的set。很多的API都类似,不会再累述。map和set都是用红黑树实现的,但是set只能存单个值,它的key和value都是同一个,map不一样,它的每一个key都映射一个value.接下来先介绍一些map自己的东西,再把和set一样的提一下。四种插入新键值对的方式现在我们定义一个空的map:map<int,stri...

2018-11-21 16:36:00 53

转载 我不熟悉的set

同样的我着重介绍那些我不怎么用到的系列,同时,常用的我就点一下。我们都知道set底层是用红黑树实现的,红黑树是一种已排序的树,所以我们通过迭代器来访问节点元素的时候,并不可以改变它,如果随意改变,那排序规则就乱套了。讲API之前,现介绍一个 对组(pair) 的概念。对组(pair)将一对值组合成一个值,这一对值可以具有不同的数据类型,两个值可以分别用pair的两个公有属性fir...

2018-11-21 16:01:00 100

转载 我不熟悉的list

其实在日常中,链表的题目做的比较多,但是使用STL自带链表的还是比较少,所以里面的一些API不大熟悉。这边也简要介绍一些。基本的一些API先列举的这些和上面几篇用法几乎一样,所以不再累述。赋值相关list(beg,end);//构造函数将[beg, end)区间中的元素拷贝给本身。list(n,elem);//构造函数将n个elem拷贝给本身。list(const list ...

2018-11-20 21:45:00 167

转载 stack和queue小讲

由于stack和queue没有太多新的东西,故在此只把API拿出来小说一下,自己也记得比较牢靠一些。stack常用APIpush(int elem); //向栈顶添加元素pop(); //从栈顶移除第一个元素top(); //返回栈顶元素empty();//判断堆栈是否为空size(); //返回堆栈的大小注意一点就是,po...

2018-11-20 18:56:00 73

转载 我不熟悉的vector

构造函数使用迭代器构造vector的一种方式://将v[begin(), end())区间中的元素拷贝给本身vector(v.begin(),v.end());在这个构造函数中,传入普通数组也是可以的。如:int arr[] = {1,2,3,4,5};vector<int> v(arr,arr + sizeof(arr)/sizeof(int));assign...

2018-11-19 18:40:00 61

转载 我不熟悉的string类

我不常用的string函数多的不说,直接上:assign函数string& assign(const char *s); //把字符串s赋给当前的字符串string& assign(const string &s); //把字符串s赋给当前字符串string& assign(const char *s, int n);//把字...

2018-11-19 08:44:00 62

转载 GDB简单调试

最近在开始刷LeetCode,也开始在Linux上写代码,直接gcc编译,在调试的时候,需要用到gdb调试,所以在这里会不定期更新我学习到的gdb调试。先编译成可执行文件首先我们使用g++或者gcc编译成可执行文件,记得要加-g编译选项,表示生成调试信息,以便我们使用gdb调试。开始调试假设我们有一个 main.cpp文件,编译链接后生成了main这个可执行文件,进行调试:gd...

2018-10-07 18:38:00 126

转载 一、计算机系统漫游

漫游了什么第一章主要对计算机系统进行一个概述,我也提取每一个小点来进行简要的记录。作者从一个hello.c程序讲述了:从存储,编译,执行的过程,讲解了文本存储形式,并讲解了此过程所需要的硬件支撑。从执行中数据的多次复制,讲到了读取的速度以及存储器层次架构。从hello程序和shell的交互,讲到了进程,线程以及并发的概念等。对于进程,并发等我并没做出摘要,一是因为这是老生...

2018-10-04 19:22:00 65

转载 《Effective C++》结语

九月的这三周把《Effective C++》重读了一遍,尽量以自己的理解,用最简单的(其实太深入也不会写)的语言把书里面的重点都写了下来。由于之前找实习占用了大量的时间,写的博客都比较水,这个分类是正式开始比较认真地在写了,今后还会继续记录一些知识点。这十几篇文章都采用代码+文字 的方式来叙述,作者在书里列举了很多实际上我们开发时候不经意就能踩到的坑,并且倡导我们写出高质量、高效率的...

2018-10-03 11:10:00 69

转载 九、杂项讨论

条款53:不要轻忽编译器的警告编译器的作者对一些接下来可能发生的错误的理解一定胜过我们这些普通程序员,如果编译器发出警告,就表明可能存在某种情况会造成一些错误,而这些错误你可能都没想到过。所以我们不要忽略编译器的警告!class Base{public: virtual void f() const;};class Derive{public: virtu...

2018-10-03 00:02:00 78

转载 八、定制new和delete

条款49:了解new-handler的行为new异常会发生什么事?在旧式的编译器中,operator new分配内存失败的时候,会返回一个null指针。而现在则是会抛出一个异常。而在抛出这个异常之前,还会先调用一个客户指定的错误处理函数:所谓的new-handler: set_new_handler函数。 在标准程序库中有声明:namespace std{ typede...

2018-10-02 11:14:00 70

转载 七、模板与泛型编程--条款44-48

条款44: 将与参数无关的代码抽离template如果使用template不当,可能会导致代码膨胀(code bloat):其二进制码带着重复(或几乎重复)的代码、数据、或两者。但是源码看起来合身而整齐,目标码却不是那么一回事了。例如一个求逆矩阵的类:template<typename T, size_t n>class SquareMatrix{public:...

2018-10-01 21:50:00 106

转载 七、模板与泛型编程--条款41-43

条款41:了解隐式接口和编译期多态从一个函数解读隐式接口和编译期多态:template<typename T>void doProcessing(T &w){ if(w.size() > 10 && w != someNastyWidget) { T temp(w); temp.normal...

2018-09-27 10:54:00 65

转载 六、继承与面向对象设计--条款38-40

条款38:根据复合塑模出has-a或者“根据某物实现出”一、复合的概念复合,是类型中的一种关系,指个某种类型的对象内含它种类型的对象的成员变量。 复合还称为分层(layering),内含(containment),聚合(aggregation)和内嵌(embedding).二、区别is-a和has-a、is-implemented-in-terms-of“public继承”带有i...

2018-09-25 16:30:00 98

转载 六、继承与面向对象设计--条款35-37

条款35:考虑virtual函数以外的其他选择在这个条款里面讨论virtual函数的替代方案。文中主要探讨了两种方式——NVI手法(Template Method模式)和Strategy模式。一、NVI手法NVI即Non-Virtual Interface。是Template Method设计模式中特定的一种,算法骨架来自于基类,具体的实现是在子类中实现。在某个流派中,他们建议v...

2018-09-25 14:41:00 88

转载 六、继承与面向对象设计条款32-34

条款32:确定你的public继承塑模出is-a关系is-a即“是一种”的关系,比如Drive继承自Base,那么我们有:每一个Derive对象都是Base对象。Base对象可以派上用场的地方Derive照样可以。但是Derive可以派上用场的地方,Base却无法效劳。因为Derive里面有Base的成分,反之没有。例如,Student继承自一个Person类,那么:voi...

2018-09-24 10:47:00 68

转载 五、实现--条款28-30

条款28:避免返回handles指向对象内部成分通常我们说的内部成分就是它的成员变量或者非public的成员函数。一、为何要做此避免书上的例子很好的解释了为什么不返回对象内部成分。首先有一个坐标类,class Point{public: Point(int x, int y); void SetX(int x); void SetY(int y);...

2018-09-21 14:00:00 94

转载 五、实现--条款26-27

概述本章讲述代码的实现细节。包括:变量的定义时机。太快变量的定义往往会造成效率上的拖延。过度转型。过度的转可能导致代码变得又慢又难维护,以及微妙的难以理解的错误。返回对象“内部数据之号码牌”会破坏封装以及产生“虚吊的号码牌”。异常引起的资源泄漏,数据败坏。过度inlining会导致代码膨胀。过度耦合导致冗长的build time.条款26:尽可能延后变量定义式出现的时...

2018-09-20 15:39:00 103

转载 四、设计和声明--条款24-25

条款24:若所有的参数皆需类型转换,请为此采用non-member函数对于能够隐式转换的,我们要得知其危险性。否则将会发生你从未考虑到的错误。用我们一直在用的分数相乘的例子来看:class Rational{public: Rational(int numberator = 0, int denominator = 1); int numberator(); ...

2018-09-20 09:47:00 116

转载 四、设计和声明--条款21-23

条款21:必须返回对象时,别妄想返回其reference看下面这个类,是一个表现分数相乘的class:class Rational{public: Rational(int numerator = 0, int denominator = 1); const Rational operator*(const Rational& lhs, const Rat...

2018-09-18 15:46:00 114

空空如也

空空如也

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

TA关注的人

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