自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mysql事务

mysql中,事务其实是一个最小的不可分割的工作单元。事务能够保证一个业务的完整性。 ----比如我们的银行转账:

2020-08-10 17:16:23 124

原创 SQL四种连接查询

SQL四种连接查询 ----内连接 inner join或者join 外链接 1、左连接 left join 或者 left outer join 2、右连接 right join 或者 right outer join 3、完全外链接 full join 或者full outer join 创建两个表; creat database testjoin; person 表 id,name,cardId create table person(id int,name varchar(20),cardI

2020-08-10 14:05:18 220

原创 数据库数据查询3

27、查询选修编号为“3-105”课程且成绩至少高于选修编号为“3-245”的同学cno、sno和degree,并按照degree从高到低次序排序。

2020-08-10 09:13:52 357

原创 数据查询练习2

11、查询每门课的平均成绩。 ----avg()查询 mysql> select avg(degree) from score where cno='3-245'; +-------------+ | avg(degree) | +-------------+ | 76.3333 | +-------------+ mysql> select cno,avg(degree) from score group by cno; +-------+-------------+ | cn

2020-08-09 08:53:26 320

原创 查询练习

1、查询student表的所有记录; ysql> select * from student; +-----+--------------+------+---------------------+-------+ | sno | sname | ssex | sbirthday | class | +-----+--------------+------+---------------------+-------+ | 101 | zenghua | na

2020-08-07 17:18:47 165

原创 查询练习-数据准备

学生表 Student 学号 姓名 性别 出生年月日 所在班级 create table student(sno varchar(20) primary key,sname varchar(20) not null, ssex varchar(10) not null, sbirthday datetime,class varchar(20)); 教师表 Teacher 教师编号 教师名字 教师性别 出生年月日 职称 所在部门 create table teacher(tno varchar(20)

2020-08-07 16:17:30 124

原创 数据库三大范式

第一范式 数据表中的所有字段都是不可分割的原子值? create table student(id int primary key,);

2020-08-07 10:33:28 78

原创 2020.6.14数据库

1、读写锁 读锁是共享的,相互不阻塞的。多个客户在同一时刻可以同时读取同一个资源,而互不干扰。 写锁是排他的,一个写锁会阻塞其他的写锁和读锁。只有这样,才能确保在给定的时间里,只有一个用户能执行写入,并防止其他用户读取正在写入的统一资源。 2、事务 事务就是一组原子性的SQL查询,或者说一个独立的工作单元。如果数据库引擎能够成功的对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有语句都不会执行。 事务四大特性:原子性、一致性、隔离性、持久性 原子性

2020-08-06 15:25:51 83

原创 定义和声明区别

定义声明最重要的区别:定义创建了对象并为这个对象分配了内存,声明没有分配内存。 register:请求编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。register变量必须是能被CPU寄存器所接受的类型,意味着register变量必须是一个单个的值,并且其长度应小于整型的长度。而且register变量可能不存放在内存中,所以不能用取址运算符“&”来获取register变量的地址。 ...

2020-08-06 15:25:31 181

原创 mysql数据库简单操作及各种约束

显示所有数据库: show databases; 创建数据库: CREATE DATABASE test; 切换数据库: use test; 显示数据库表: show tables; 创建数据表: CREATE TABLE pet(name VARCHAR(20),owner VARCHAR(20),species VARCHAR(20),sex CHAR(1),birth DATE,death DATE); 查看数据表结构: describe pet; desc pet; 查询表: selec

2020-08-06 15:24:35 99

原创 进程线程回忆笔记

进程死锁的原因:资源竞争及进程推进顺序非法 死锁4个必要条件:互斥、不可剥夺、环路、请求保持 死锁的处理:鸵鸟策略、预防策略、避免策略、检测与解除死锁 操作系统中进程调度策略有哪几种:FCFS先来先服务,优先级,时间片轮转,多级反馈 进程间同步机制:原子操作、信号量机制、自旋锁、管城,会合,分布式系统 进程之间通信的途径:共享存储系统,消息传递系统,管道:以文件系统为基础 进程与线程区别: 进程是...

2020-03-26 10:47:45 90

原创 IO复用

一个线程,通过记录I/O流的状态来同时管理多个I/O,可以提高服务器的吞吐能力 select的几大缺点: (1)每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大 (2)同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大 (3)select支持的文件描述符数量太小了,默认是1024 二、poll实现 poll的实现和selec...

2020-03-26 10:47:34 82

原创 miniftp

miniftp服务器是一个小型的文件传输服务器,用的是ftp协议,FTP工作在tcp/ip的应用层,传输层用的是tcp协议,基于C/S架构。 ftp所能支持的文件类型:ASCII、EBCDIC、图像文件、本地文件。 FTP工作原理:用户界面-用户协议解释器(服务器协议解释器)-用户数据传输进程(服务器数据传输进程)-文件系统 启动FTP-建立控制连接(客户端TCP协议层根据给出的服务器IP地址,向...

2020-03-26 10:47:06 561

原创 vector

vector vector 和 array的区别在于空间的运用灵活性。 array是静态空间,一旦配置了就无法更改,如果需要改变,则由客户端来操作: 1、首先配置一块新空间,然后将元素从旧址一一搬往新地址,再把原来的空间释还给系统。 vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。因此,vector的运用对于内存的合理利用与运用的灵活性有很大的帮助, vector的...

2019-10-14 22:00:45 85

原创 STL和容器、迭代器、算法之间的关系

程序是数据结构加算法。 STL是一个小程序库,之所以说小,是因为容器模板中常用的容器有限,其中一个个容器就是一种数据结构,算法通过迭代器对容器中的数据进行访问,即组成一个小小的程序。 使用容器之前首先要根据自己使用的数据集合将要对数据结构采取的访问模式,决定使用STL中的何种容器类型。 容器类型: 顺序容器 vector 从后面快速的插入与删除,直接访问任何元素 deque 从前面或后面快速的插入...

2019-09-15 15:30:28 841

原创 20190722剑指offer二分查找类型

二分查找方法: 根据测试用例分为三步: 1、(正常用例)两个指针,一个指向index1头,一个指向index2尾,并且初始时直接把中间值indexmid和头相等,当头大于尾时继续判断,并且当index2-index1 == 1时,index2就是所求最小值。 2、当头index1小于index2时,(整个数组循环一遍),直接返回首值 3、当首和尾相等,比如{1,0,1,1,1},此时应用循环遍历 ...

2019-09-11 15:15:10 78

原创 复习文档1

数组和指针的区别 数组:数组是用于存储多个相同类型的集合。 指针:指向相当于一个变量,但是它和普通变量不一样,它存放的是其他变量的内存中的地址。 区别 1、赋值:同类型指针变量可以相互赋值,数组不行,只能一个一个元素的赋值或拷贝。 2、存储方式 数组:数组在内存中是连续存放的,开辟一块连续的内存空间。数组是根据数组的下标进行访问的,多维数组在内存中是按照一维数组存储的,只是在逻辑上是多维的。 指针...

2019-09-11 15:14:36 157

原创 复习文档2

C++中的四种cast转换 C++四种类型的转换时:static_cast,dynamic_cast,const_cast,reinterpret_cast 1、const_cast 使用场景: A.常量指针转换为非常量指针,并且仍然指向原来的对象。 B.常量引用被转换为非常量引用,并且仍然指向原来的对象。 使用特点: A.const_cast是唯一可以对常量进行操作的转换符 B.取出常量性是一个...

2019-09-11 15:14:28 75

原创 复习3

const与#define C++语言可以用const来定义常量,也可以用#define来定义常量,但是前者比后者有更多的优点: 1、const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。 2、有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。 不能在类声明中初始...

2019-09-11 15:14:10 163

原创 复习4(顺序表和链表一点点优缺点)

顺序表:第i个位置的元素需要在第(i-1)位置取。 顺序表优缺点: 优点 缺点 1、无须为表示表中元素之间的逻辑关系而增加额外的存储空间 2、可以快速的存取表中任一位置的元素 1、插入和删除需要移动大量的元素 2、当线性表长度变化较大时,难以确定存储空间的容量 3、造成存储空间的“碎片” 头指针和头结点 头指针 头结点 1、头指针是指链表指向第一个结点的指针,若链表有头结点,则是指向头结点的指针 ...

2019-09-11 15:13:57 151

原创 解题思路

查找(特别是二分查找)和排序(快速排序和归并排序)是面试中经常考查的算法。 回溯法很适合解决迷宫及类似的问题。 如果面试官是求一个问题的最优解,可以尝试使用动态规划,假如我们在用动态规划分析问题时发现每一步都存在一个能得到最优解的选择,那么可以尝试使用贪婪算法。 还需掌握分析时间复杂度的方法,理解即使同一种思路,基于循环和递归的不同实现,时间复杂度大不相同,很多时候我们会自上而下的递归思路分析问题...

2019-09-11 15:13:31 210

原创 位运算

位运算 015-二进制中1的个数 012-数值的整数次方 040-数组中只出现一次的数字 二进制中1的个数: 一个数减一再和原来的自身做位与运算,会把原本数字最右边的1变为0. 如果一个整数是2的整数次方,那么它的二进制表示中有且只有一位是1,其他位都是0. 两个一样的数字异或之后,会变为0. 对于两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n。 1、求两个数的异或 2、统计异或结...

2019-09-11 15:13:11 69

原创 试题一以及约瑟夫环

论述C/C++程序预处理、编译、连接到执行的过程 1、从源文件到可执行文件需要经历四个步骤<预处理、汇编、编译、连接> 2、gcc -o test.i -E test.cpp 3、gcc -o test.s -S test.i 4、gcc -o test.o -c test.s 5、gcc -o test test.o 1 源文件hello.c(文本)–à预处理器----àhello....

2019-09-11 15:12:38 180

原创 数据结构算法

一、树 1、论红黑树和AVL树的定义,特点,以及二者区别? (1)平衡二叉树(AVL) 平衡二叉树又称为AVL树,是一种特殊的二叉排序树。其左右子树都是平衡二叉树,且左右子树高度之差的绝对值不超过1。 总结:以树中所有结点为根的树的左右子树高度之差的绝对值不超过1。 将二叉树上节点的左子树深度减去右子树深度的值称为平衡因子BF,那么平衡二叉树上的所有结点的平衡因子只能是-1,0,1。只要二叉树上有...

2019-09-11 10:28:12 84

原创 网络编程(IO复用)

IO复用是一种机制,一个进程可以监听多个描述符,一旦某个描述符就绪(读就绪和写就绪),能够同主程序进行相应的读写操作。 本质上这些IO复用技术是同步IO技术,在读写事件就绪后需要进程自己负责进行读写,即读写过程是进程阻塞的。 与多进程和多线程相比,IO复用技术 ...

2019-09-09 17:15:04 384

原创 进程间的通信机制

进程间的通信: 1、管道 2、信号量 3、共享内存 4、消息队列 5、套接字(socket) 6、条件变量 进程复制:fork()函数,子进程复制父进程的数据空间,堆栈的复制品。创建一个两个返回值,父进程返回子进程id,子进程返回0; system()函数调用shell的外部命令在当前进程中开始另一个进程。 exec()族函数会用更新进程代替原有的进程,新进程PID和原进程相同。 在当前系统的可执...

2019-09-09 12:07:52 198 1

原创 线程和进程

线程和进程之间的区别: 线程是指进程内的一个执行单元,也是进程内的可调度的实体。 线程与进程的区别: 1、调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。 2、并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行。 3、拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。 4、系统开销:在创建或撤销进程时,由于系统都要为之分配...

2019-09-07 11:24:38 236

原创 C++面试总结

关于map和set的区别,分别又是怎么实现的? **实现机制:**map和set都是C++的关联容器,其底层实现都是红黑树(RB-Tree),由于map和set所开放的各种操作接口,RB-Tree也都提供了,所以几乎所有的map和set的操作行为,都只是转调RB-Tree的操作行为。 map和set的区别是: 1、map中的元素是key-value(关键字-值)对:关键字起到索引的作用,值则表示与...

2019-09-06 19:47:31 99

原创 统一事件源

信号是一种异步事件:信号处理函数和程序的主循环是两条不同的执行路线。 信号处理函数需要尽可能快地执行完毕,以确保该信号不被屏蔽太久。 一种典型的解决方案是: 把信号的主要处理逻辑放到程序的主循环中,当信号处理函数被触发时,它只是简单的通知主循环程序接收到信号,并把信号值传递给主循环,主循环再根据接收到的信号值执行目标信号对应的逻辑代码。信号处理函数通常使用管道来将信号“传递”给主循环:信号处理函数...

2019-08-05 21:03:20 131

原创 20181218

c++second20181218 构造函数:(在本类对象出现时自动调用) 1.构造对象(初始化数据成员) 2.给数据成员合法值 特点:无类型(void)都不能写,函数名和类名相同,给类中的数据成员分配空间并给值。 如果一个类没有提供构造函数,类会提供一个默认构造函数(无参)。 构造函数可以重载。 构造函数调用执行顺序: 1.传参 2.根据数据成员在类里面的声明顺序进行分配空间。(private顺...

2019-07-30 17:48:54 100

原创 C-eighth

20181108 C-eighth 指针:就是一个地址。 指针变量:是一个特殊的变量,里面存放的是另外一个变量的地址。 int a[10] a(int*) a[i](int) 基类型 *指针变量名 printf("%d\n",sizeof(int*)); printf("%d\n",sizeof(char*)); printf("%d\n",sizeof(long*)); printf("...

2019-07-30 17:48:44 104

原创 C-seventh

C-seventh 20181102 递归:本质是函数的嵌套调用 两个条件: 1、必须有一个函数入口。 2、除了最后一次的操作可以不一样,其他每次操作必须一样。 递归:先找到前一次的运算,并且所有步骤都能用到统一个式子。 1.阶乘5!; int sum = 1; for(i = 1;i &amp;lt;= 5;i++) sum = sum * i; 1的阶乘加到20的阶乘。 for(i = 1;i &amp;...

2019-07-30 17:48:35 110

原创 C-sixth

C-sixth 20181101 一列数字,每到第三个数就删除,如果到末尾就从头开始: int a[] = {1,2,3,4,5,6,7,8,9,10}; itn n = sizeof(a) / sizeof(a[0]); int i = 0; int count = 0; int j = 0; while(i &amp;lt; n) { if(a[i] != 0) { count++; if...

2019-07-30 17:48:26 128

原创 20190708总复习3

C++: 共6个函数 1、构造函数 2、析构函数 3、拷贝构造函数 4、赋值语句 5、取地址操作符的重载函数6、const修饰的取地址操作符的重载函数 调用拷贝构造情况: 对象初始化对象 传参是对象 返回类型是对象,要初始化一个临时空间(对象),调用拷贝构造 析构顺序与构造顺序相反 return Test(value);节省空间 Test fun(Test &x)引用不会拷贝构造 观察是否...

2019-07-30 17:48:13 91

原创 20190705总复习第一课

1.strlen与sizeof区别 strlen求长度,到‘\0’结束,是函数。 sizeof求大小,包括‘\0’,只是运算符。 char str[] = {'h','e','l','l','o'}; cout<<strlen(str)<<end;//?为随机,因为str没有初始化,所以不会遇到'\0' cout<<sizeof(str)<<endl...

2019-07-30 17:46:47 87

原创 2010707总复习2

大小端问题: 大端:高位数据放低位地址,低位数据放高位地址。 小端:高位数据放高位地址,低位数据放低位地址。 int a = 1;// 00 00 00 01 从右往左是由低到高 存储地址从左到右是从低到高 大端:高数据放入低地址 00 00 00 01 01 02 03 04 输出时,正向输出 小端:低数据放入低地址 01 00 00 00 01 02 03 04 ...

2019-07-30 17:46:36 102

原创 20190712总复习6

auto a = 10 typeid(a).name() 可以推导出变量的类型 for(auto p : ar) { cout<<p<<" "; } alignas(16)往小调结果不准确,向大调会有影响 lambda函数语法: mutable->return-type{statement} []:捕捉列表 ():参数列表 mutable:取消常量特性,传入的参数可以...

2019-07-30 17:46:21 80

原创 字符串以及链表中倒数第k个结点问题

当遇到简单的问题时,一定要注意细节,写出完整、鲁棒的代码。 当遇到复杂问题时,可以通过画图,举例和分析复杂问题等方法先理清思路再动手编程。 除此之外,同时应不断优化时间效率和空间效率,找到最优的解法。 同时应主动提问,弄清楚题目要求,表达自己沟通能力。 当面试官前后问的问题有相关性的时候,尽量把解决前面问题的思路迁移到后面的问题中去,展示自己良好的学习能力。 养成习惯-先考虑测试用例,再写函数 函...

2019-07-30 17:46:03 70

原创 C-first

20181011首次授课 数据的类型:基本类型,构造类型,指针类型,空类型; 电脑中所存储的是二进制的补码(负数时,原码取反再+1); 函数后面需要加括号,然而sizeof则不是函数,只是运算符。 sizeof(a)运算符(操作符):计算表达式a在内存中所占的字节数; 左值必须是确定的值: ++a = b; a++ = b; 左边式子是正确的,因为无论a值运算前后,所开辟的空间是一样的,且只有一个...

2019-07-30 17:45:52 160

原创 20190607排序总结

堆排: 1、建堆:判断是否两个孩子,比较两个孩子大小,大的孩子和父结点交换,之后判断子结点是否还有孩子,如果没有,重新回到父结点。 2、排序:从中间结点开始,依次递减至第一个,之后把顶部的数字拿出来。 void CreateHeap(int a[],int root,int len) { int i,t = a[root]; i = 2 * root; while(i <= len) ...

2019-07-30 17:45:42 62

空空如也

空空如也

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

TA关注的人

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