笔记
花要开了
这个作者很懒,什么都没留下…
展开
-
mysql事务
mysql中,事务其实是一个最小的不可分割的工作单元。事务能够保证一个业务的完整性。----比如我们的银行转账:原创 2020-08-10 17:16:23 · 115 阅读 · 0 评论 -
SQL四种连接查询
SQL四种连接查询----内连接inner join或者join外链接1、左连接 left join 或者 left outer join2、右连接 right join 或者 right outer join3、完全外链接 full join 或者full outer join创建两个表;creat database testjoin;person 表id,name,cardIdcreate table person(id int,name varchar(20),cardI原创 2020-08-10 14:05:18 · 187 阅读 · 0 评论 -
数据库数据查询3
27、查询选修编号为“3-105”课程且成绩至少高于选修编号为“3-245”的同学cno、sno和degree,并按照degree从高到低次序排序。原创 2020-08-10 09:13:52 · 341 阅读 · 0 评论 -
数据查询练习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 · 302 阅读 · 0 评论 -
查询练习
1、查询student表的所有记录;ysql> select * from student;+-----+--------------+------+---------------------+-------+| sno | sname | ssex | sbirthday | class |+-----+--------------+------+---------------------+-------+| 101 | zenghua | na原创 2020-08-07 17:18:47 · 137 阅读 · 0 评论 -
查询练习-数据准备
学生表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 · 114 阅读 · 0 评论 -
数据库三大范式
第一范式数据表中的所有字段都是不可分割的原子值?create table student(id int primary key,);原创 2020-08-07 10:33:28 · 66 阅读 · 0 评论 -
2020.6.14数据库
1、读写锁读锁是共享的,相互不阻塞的。多个客户在同一时刻可以同时读取同一个资源,而互不干扰。写锁是排他的,一个写锁会阻塞其他的写锁和读锁。只有这样,才能确保在给定的时间里,只有一个用户能执行写入,并防止其他用户读取正在写入的统一资源。2、事务事务就是一组原子性的SQL查询,或者说一个独立的工作单元。如果数据库引擎能够成功的对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有语句都不会执行。事务四大特性:原子性、一致性、隔离性、持久性原子性原创 2020-08-06 15:25:51 · 73 阅读 · 0 评论 -
定义和声明区别
定义声明最重要的区别:定义创建了对象并为这个对象分配了内存,声明没有分配内存。register:请求编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。register变量必须是能被CPU寄存器所接受的类型,意味着register变量必须是一个单个的值,并且其长度应小于整型的长度。而且register变量可能不存放在内存中,所以不能用取址运算符“&”来获取register变量的地址。...原创 2020-08-06 15:25:31 · 175 阅读 · 0 评论 -
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 · 90 阅读 · 0 评论 -
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 · 72 阅读 · 0 评论 -
进程线程回忆笔记
进程死锁的原因:资源竞争及进程推进顺序非法死锁4个必要条件:互斥、不可剥夺、环路、请求保持死锁的处理:鸵鸟策略、预防策略、避免策略、检测与解除死锁操作系统中进程调度策略有哪几种:FCFS先来先服务,优先级,时间片轮转,多级反馈进程间同步机制:原子操作、信号量机制、自旋锁、管城,会合,分布式系统进程之间通信的途径:共享存储系统,消息传递系统,管道:以文件系统为基础进程与线程区别:进程是...原创 2020-03-26 10:47:45 · 79 阅读 · 0 评论 -
miniftp
miniftp服务器是一个小型的文件传输服务器,用的是ftp协议,FTP工作在tcp/ip的应用层,传输层用的是tcp协议,基于C/S架构。ftp所能支持的文件类型:ASCII、EBCDIC、图像文件、本地文件。FTP工作原理:用户界面-用户协议解释器(服务器协议解释器)-用户数据传输进程(服务器数据传输进程)-文件系统启动FTP-建立控制连接(客户端TCP协议层根据给出的服务器IP地址,向...原创 2020-03-26 10:47:06 · 516 阅读 · 0 评论 -
vector
vectorvector 和 array的区别在于空间的运用灵活性。array是静态空间,一旦配置了就无法更改,如果需要改变,则由客户端来操作:1、首先配置一块新空间,然后将元素从旧址一一搬往新地址,再把原来的空间释还给系统。vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。因此,vector的运用对于内存的合理利用与运用的灵活性有很大的帮助,vector的...原创 2019-10-14 22:00:45 · 78 阅读 · 0 评论 -
位运算
位运算015-二进制中1的个数012-数值的整数次方040-数组中只出现一次的数字二进制中1的个数:一个数减一再和原来的自身做位与运算,会把原本数字最右边的1变为0.如果一个整数是2的整数次方,那么它的二进制表示中有且只有一位是1,其他位都是0.两个一样的数字异或之后,会变为0.对于两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n。1、求两个数的异或2、统计异或结...原创 2019-09-11 15:13:11 · 59 阅读 · 0 评论 -
统一事件源
信号是一种异步事件:信号处理函数和程序的主循环是两条不同的执行路线。信号处理函数需要尽可能快地执行完毕,以确保该信号不被屏蔽太久。一种典型的解决方案是:把信号的主要处理逻辑放到程序的主循环中,当信号处理函数被触发时,它只是简单的通知主循环程序接收到信号,并把信号值传递给主循环,主循环再根据接收到的信号值执行目标信号对应的逻辑代码。信号处理函数通常使用管道来将信号“传递”给主循环:信号处理函数...原创 2019-08-05 21:03:20 · 103 阅读 · 0 评论 -
试题一以及约瑟夫环
论述C/C++程序预处理、编译、连接到执行的过程1、从源文件到可执行文件需要经历四个步骤<预处理、汇编、编译、连接>2、gcc -o test.i -E test.cpp3、gcc -o test.s -S test.i4、gcc -o test.o -c test.s5、gcc -o test test.o1 源文件hello.c(文本)–à预处理器----àhello....原创 2019-09-11 15:12:38 · 170 阅读 · 0 评论 -
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 · 89 阅读 · 0 评论 -
线程和进程
线程和进程之间的区别:线程是指进程内的一个执行单元,也是进程内的可调度的实体。线程与进程的区别:1、调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。2、并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行。3、拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。4、系统开销:在创建或撤销进程时,由于系统都要为之分配...原创 2019-09-07 11:24:38 · 209 阅读 · 0 评论 -
进程间的通信机制
进程间的通信:1、管道2、信号量3、共享内存4、消息队列5、套接字(socket)6、条件变量进程复制:fork()函数,子进程复制父进程的数据空间,堆栈的复制品。创建一个两个返回值,父进程返回子进程id,子进程返回0;system()函数调用shell的外部命令在当前进程中开始另一个进程。exec()族函数会用更新进程代替原有的进程,新进程PID和原进程相同。在当前系统的可执...原创 2019-09-09 12:07:52 · 149 阅读 · 1 评论 -
网络编程(IO复用)
IO复用是一种机制,一个进程可以监听多个描述符,一旦某个描述符就绪(读就绪和写就绪),能够同主程序进行相应的读写操作。本质上这些IO复用技术是同步IO技术,在读写事件就绪后需要进程自己负责进行读写,即读写过程是进程阻塞的。与多进程和多线程相比,IO复用技术...原创 2019-09-09 17:15:04 · 370 阅读 · 0 评论 -
数据结构算法
一、树1、论红黑树和AVL树的定义,特点,以及二者区别?(1)平衡二叉树(AVL)平衡二叉树又称为AVL树,是一种特殊的二叉排序树。其左右子树都是平衡二叉树,且左右子树高度之差的绝对值不超过1。总结:以树中所有结点为根的树的左右子树高度之差的绝对值不超过1。将二叉树上节点的左子树深度减去右子树深度的值称为平衡因子BF,那么平衡二叉树上的所有结点的平衡因子只能是-1,0,1。只要二叉树上有...原创 2019-09-11 10:28:12 · 72 阅读 · 0 评论 -
解题思路
查找(特别是二分查找)和排序(快速排序和归并排序)是面试中经常考查的算法。回溯法很适合解决迷宫及类似的问题。如果面试官是求一个问题的最优解,可以尝试使用动态规划,假如我们在用动态规划分析问题时发现每一步都存在一个能得到最优解的选择,那么可以尝试使用贪婪算法。还需掌握分析时间复杂度的方法,理解即使同一种思路,基于循环和递归的不同实现,时间复杂度大不相同,很多时候我们会自上而下的递归思路分析问题...原创 2019-09-11 15:13:31 · 184 阅读 · 0 评论 -
字符串以及链表中倒数第k个结点问题
当遇到简单的问题时,一定要注意细节,写出完整、鲁棒的代码。当遇到复杂问题时,可以通过画图,举例和分析复杂问题等方法先理清思路再动手编程。除此之外,同时应不断优化时间效率和空间效率,找到最优的解法。同时应主动提问,弄清楚题目要求,表达自己沟通能力。当面试官前后问的问题有相关性的时候,尽量把解决前面问题的思路迁移到后面的问题中去,展示自己良好的学习能力。养成习惯-先考虑测试用例,再写函数函...原创 2019-07-30 17:46:03 · 65 阅读 · 0 评论 -
20190608链表思路
链表:由两部分组成,数据和地址(指向下一个结点),有头结点即可找到后续元素。包含头结点,尾结点。链表的操作:1、创建如果链表为空,创建一个结点,并把头給之,并且每创建一个结点,头赋予尾,重新开辟空间,依次循环,最后释放空间,并把头结点返回。2、插入插入过程要观察链表是否为空,如果为空,把结点(声明为一个指针)插入,并赋予头,否则观察要插入的值。3、删除判断链表是否为空,4、排序...原创 2019-07-30 17:44:07 · 85 阅读 · 0 评论 -
20190607miniftp
为什么绝对不能使用多线程来实现。因为多个线程共享同一个工作目录。而进程之间是相互独立的。IO复用也不允许。IO复用是用单线程处理多个线程的连接,所以使用的是多进程来实现的。...原创 2019-07-30 17:44:52 · 90 阅读 · 0 评论 -
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 · 57 阅读 · 0 评论 -
20190613两个栈实现队列
两个队列实现一个栈思想:1、借用一个辅助队列temp,先在辅助队列中输入一个数12、判断主q队列是否为空,不空时,把队列中数字全push进辅助队列temp中3、判断辅助队列temp是否为空,不空时,把队列中数字全部push进主队列q中。两个栈实现一个队列思想:1、先判断主栈中是否为空,不空时,把所有数字push进辅助栈temp中2、在辅助栈temp中输入一个数3、判断辅助栈tem...原创 2019-07-30 17:45:23 · 53 阅读 · 0 评论 -
20181218
c++second20181218构造函数:(在本类对象出现时自动调用)1.构造对象(初始化数据成员)2.给数据成员合法值特点:无类型(void)都不能写,函数名和类名相同,给类中的数据成员分配空间并给值。如果一个类没有提供构造函数,类会提供一个默认构造函数(无参)。构造函数可以重载。构造函数调用执行顺序:1.传参2.根据数据成员在类里面的声明顺序进行分配空间。(private顺...原创 2019-07-30 17:48:54 · 86 阅读 · 0 评论 -
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 · 92 阅读 · 0 评论 -
C-seventh
C-seventh 20181102递归:本质是函数的嵌套调用两个条件:1、必须有一个函数入口。2、除了最后一次的操作可以不一样,其他每次操作必须一样。递归:先找到前一次的运算,并且所有步骤都能用到统一个式子。1.阶乘5!;int sum = 1;for(i = 1;i &lt;= 5;i++) sum = sum * i;1的阶乘加到20的阶乘。for(i = 1;i &...原创 2019-07-30 17:48:35 · 101 阅读 · 0 评论 -
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 &lt; n){ if(a[i] != 0) { count++; if...原创 2019-07-30 17:48:26 · 118 阅读 · 0 评论 -
C-third
C-third 20181019循环一共有5个:if...goto,需要设定一个goto点,比如(loop),loop一般定在循环条件处。而且当有多层内循环时,一旦有条件不满足处,直接goto末尾。for(a;b;c) d,括号内可以不写a,b,c但是分号不能省略。a:赋初值 b:判断条件 c:自加自减while(a)b;{d,c}do{}while(a),此种是运行一次再判断条...原创 2019-07-30 17:43:34 · 78 阅读 · 0 评论 -
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 · 94 阅读 · 0 评论 -
20190708总复习3
C++:共6个函数1、构造函数 2、析构函数 3、拷贝构造函数 4、赋值语句 5、取地址操作符的重载函数6、const修饰的取地址操作符的重载函数调用拷贝构造情况:对象初始化对象传参是对象返回类型是对象,要初始化一个临时空间(对象),调用拷贝构造析构顺序与构造顺序相反return Test(value);节省空间Test fun(Test &x)引用不会拷贝构造观察是否...原创 2019-07-30 17:48:13 · 81 阅读 · 0 评论 -
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 · 70 阅读 · 0 评论 -
复习4(顺序表和链表一点点优缺点)
顺序表:第i个位置的元素需要在第(i-1)位置取。顺序表优缺点:优点 缺点1、无须为表示表中元素之间的逻辑关系而增加额外的存储空间2、可以快速的存取表中任一位置的元素 1、插入和删除需要移动大量的元素2、当线性表长度变化较大时,难以确定存储空间的容量3、造成存储空间的“碎片”头指针和头结点头指针 头结点1、头指针是指链表指向第一个结点的指针,若链表有头结点,则是指向头结点的指针...原创 2019-09-11 15:13:57 · 127 阅读 · 0 评论 -
复习3
const与#defineC++语言可以用const来定义常量,也可以用#define来定义常量,但是前者比后者有更多的优点:1、const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。2、有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。不能在类声明中初始...原创 2019-09-11 15:14:10 · 133 阅读 · 0 评论 -
复习文档2
C++中的四种cast转换C++四种类型的转换时:static_cast,dynamic_cast,const_cast,reinterpret_cast1、const_cast使用场景:A.常量指针转换为非常量指针,并且仍然指向原来的对象。B.常量引用被转换为非常量引用,并且仍然指向原来的对象。使用特点:A.const_cast是唯一可以对常量进行操作的转换符B.取出常量性是一个...原创 2019-09-11 15:14:28 · 70 阅读 · 0 评论 -
复习文档1
数组和指针的区别数组:数组是用于存储多个相同类型的集合。指针:指向相当于一个变量,但是它和普通变量不一样,它存放的是其他变量的内存中的地址。区别1、赋值:同类型指针变量可以相互赋值,数组不行,只能一个一个元素的赋值或拷贝。2、存储方式数组:数组在内存中是连续存放的,开辟一块连续的内存空间。数组是根据数组的下标进行访问的,多维数组在内存中是按照一维数组存储的,只是在逻辑上是多维的。指针...原创 2019-09-11 15:14:36 · 136 阅读 · 0 评论