自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 问答 (1)
  • 收藏
  • 关注

原创 牛客网JAVA开发面经总结—JavaSE部分基础(一)—Java基础(2)

8.面向对象8.1 类与对象的区别1)类是对一类事物的描述,是抽象的;类是一组函数、变量的集合体,即一组具有相同属性的对象集合体。2)对象是一个实实在在的个体,是类的一个具体实例。对象是函数、变量的集合体。比如:“人”是一个大类,而“我”是“人”的一个具体的实例;8.2 wait()方法底层原理(notify()、notifyAll())wait()方法会将当前线程放入wait set中等待被唤醒。1)使用wait()时,需要先对调用对象加锁;2)ObjectSynchronizer::w

2020-08-10 14:32:21 196 1

原创 牛客网JAVA开发面经总结—JavaSE部分基础(一)—Java基础(1)

1.Java8新特性1)Lambda表达式 - 允许把函数作为另一个函数的参数;优缺点:I.优点,代表了未来编程的趋势①简洁;②非常容易并行计算;II.缺点①没学过的看不懂,不易调试;②不使用并行计算的情况下,一般没有传统的for循环速度快;2)方法引用——直接引用java已有类或对象的方法或构造器,配合Lambda使用;3)默认方法——接口里多一个默认的实现方法;4)新工具——编译器:Nashorn引擎-JJS用于运行JS程序,也可以在Java程序中嵌入Nashorn引擎,运行特定的

2020-08-09 01:40:43 338

原创 MySQL必知必会-第30章 改善 性能

改善性能1)MySQL默认配置通常开始是很好的,但过段时间可能需要调整【内存分配】、【缓冲区大小】等;可以使用如下两个命令查看当前的设置;show variables;show status;2)MySQL是多用户多线程的DBMS,可以使用如下命令查看所有活动进程以及它们的线程ID和执行时间,可以使用kill命令杀死异常的线程;show processlist;3)可以使用如下explain 语句让MySQL解释一条select语句是如何执行的explain select ....;

2020-08-07 01:52:53 104

原创 MySQL必知必会-第29章 数据库维护

数据库维护1. 备份数据库1)常用的mysqldump命令,在系统终端键入命令:1.备份整个数据库mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql2.备份同一个数据库中的多张表mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 表1 表2 .... > 文件名.sql3.备份多个数据库mysqldump -h主机名 -P端口 -u用户名 -p密码 --databases

2020-08-07 01:32:16 105

原创 MySQL必知必会-第28章 安全管理

安全管理1.访问控制1)提供且仅提供用户所需的访问权限;2)需要【创建】和【管理用户账号】,关于账号a.尽量避免使用root账号;b.应该创建多种账号,供【管理人员】、【开发人员】、【用户】使用;3)目的不仅仅是防止用户恶意企图,也防止用户无意识的错误;2.管理用户2.1 查看用户所有用户的信息都存储在名为“mysql”的数据库中;-- 1.切换数据库use mysql;-- 2.查看当前所有用户 这里前一个user是列名 后一个user是表名select user from us

2020-08-07 00:47:33 102

原创 MySQL必知必会-第27章 全球化和本地化(字符集和校对)

全球化和本地化1.重要术语1)字符集:字母和符号的集合;2)编码:字符的内部表示;3)校对:规定字符如何比较的指令;2.字符集和校对可以在哪些等级设置1)列级、表级、数据库级、服务器级;2)字符集很少是在数据库级和服务器级指定的,因为不同的表、不同的列都可能需要不同的字符集;3.使用字符集和校对顺序3.1 一些常用的语句-- 1. 查看MySLQ支持的所有字符集的完整列表-- 以及每个字符集对应的【描述】和【默认的校对】show character set;-- 2. 查看M

2020-08-06 23:29:53 136

原创 MySQL必知必会-第26章 管理事务处理

管理事务处理1.相关概念1.1 支持引擎InnoDB支持事务处理管理;MyISAM不支持事务处理管理;1.2 事务处理1)事务处理用来维护数据库的完整性,它保证成批的MySQL操作,要么完全执行,要么完全不执行;2)成批的MySQL操作如果没有错误发生,整租SQL语句提交给(写到)数据库表;3)如果发生错误,则进行回退或撤销,恢复到某个已知且安全的状态;1.3 关键术语1)事务(transaction):一组SQL语句;2)回退(rollback):撤销指定SQL语句的过程;3)提交

2020-08-06 22:50:47 102

原创 MySQL必知必会-第25章 使用触发器

使用触发器1. 相关概念1.1 版本支持:MySQL5以及之后版本;1.2 定义触发器是MySQL响应以下任意语句,自动执行的位于BEGIN 和 END之间的一组SQL语句;1)INSERT;2)DELETE;3)UPDATE;以上都是针对表内容的操作,视图和临时表都不支持触发器;其他MySQL语句不支持触发器2.使用触发器2.1 创建触发器1)给出唯一的触发器名;这里的唯一指的是在“表”上唯一,即,不同的表的触发器名字可以相同;但是尽量在同一个数据库里唯一,不同的表触发器名字都

2020-08-06 21:51:28 341

原创 MySQL必知必会-第23章 使用存储过程(CREATE PROCEDURE、CALL、DROP PROCEDURE、SHOW PROCEDURE STATUS)

存储过程1.存储过程相关概念1.1 存储过程的定义1)存储过程实际上是一种函数,使用MySQL语言进行编程,内部可以封装SQL语句以及各种运算;2)区别于视图:存储过程和视图有很大的差别。视图只能封装单个SQL语句(这个SQL语句可以很复杂),是为了避免重复使用复杂的SQL语句;存储过程内部可以封装多个SQL语句,同时还能运行复杂的计算逻辑;1.2 存储过程的意义优点:1)简化复杂的操作;2)把一系列处理步骤都封装在同一存储过程中,就可以用反复建立这一系列处理步骤,防止错误,保证数据的一

2020-08-06 18:26:07 1001

原创 MySQL必知必会-第22章 使用视图

使用视图1. 视图的概念1.1 视图的支持MySQL5添加了对视图的支持,因此视图只适用于MySQL5及之后的版本;1.2 视图的概念视图可以看做是虚拟的表,包含的数据跟表不一样,视图只包含【使用数据库的时候】动态检索数据的查询;相当于说,视图就是已经使用某些条件过滤出来的数据的集合,也就是一个SQL查询的结果;1.3 视图的好处1)可以重用一些复杂的SQL语句,简化SQL操作;2)视图检索的数据是表的一部分数据,而不是整张表的数据,因此可以给用户授予表格部分数据的访问权限,而不是整张表的

2020-08-06 15:55:30 121

原创 MySQL必知必会-第21章 创建和操作表【CREATE、ALTER、DROP】

创建和操作表MySQL不仅用于表数据的操纵,还用于执行数据库和表的所有操作,包括表本身的【创建】和【处理】1)使用具有交互式创建和管理表的工具;2)使用MySQL语句操作。1.创建表1.1 表创建基础-- 创建表的总体语法CREATE TABLE 新表名 [IF NOT EXISTS]( 列名1 类型 其他要求, 列名2 类型 其他要求, ...)ENGINE=InnoDB; // 要指定创建表使用的数据库引擎-- 创建表的具体例子CREATE TABLE customers(

2020-08-06 12:37:37 323

原创 MySQL必知必会-第19章 增删改数据

数据的增删改1.插入数据1.1 插入方式1)插入完整的行;2)插入行的一部分;3)插入多行;4)插入某些查询的结果。1.2 插入完整的行-- 方式1.INSERT INTO 表名VALUES (NULL, 列值1, 列值2, 列值3, ....);-- 方式2.INSERT INTO 表名(列名1,列名2,列名3, ....)VALUES (列值1, 列值2, 列值3, ....);-- 降低INSERT语句的优先级,保证其他select语句的性能INSERT LOW_PRIO

2020-08-06 00:52:57 77

原创 MySQL必知必会-第18章 全文本搜索

全文本搜索1.理解全文本搜索1)MySQL支持几种基本的数据库引擎,如:MyISAM(咪森),InnoDB;2)MyISAM支持全文本搜索,而InnoDB不支持;3)与通配符和正则表达式不同,使用全文本搜索是,MySQL不需要分别查看每个行,不需要分别分析和处理每个词;MySQL【创建指定列中各个词的一个索引】,搜索可以针对这些词进行;2.启用全文本搜索支持在创建表格的时候启用create table 表名( note_id int not null auto_increment, not

2020-08-05 23:45:01 214

原创 MySQL必知必会-第17章 组合查询

组合查询1.创建组合查询 UNION 关键字使用union关键字将多条select查询语句的查询结果合并起来select 列名1, 列名2, 列名3, ... from 表where 条件1UNION [ALL] -- ALL不消除重复的行,保留全部的行select 列名1, 列名2, 列名3, ... from 表where 条件2UNION....ORDER BY ...; -- 使用UNION进行组合查询的时候 只能使用一条ORDER BY语句----------------

2020-08-05 22:04:53 104

原创 MySQL必知必会-第15章 连接表

连接表连接表的关键在于:1)规定要连接起来的所有表;2)表之间如何关联。Student表如下所示:Scoretable如下所示:1.使用最简单的where子句构造连接条件-- 1.通过两个表的id number字段将两个表连接起来select student.id, student.name, scoretable.scorefrom student, scoretablewhere student.id=scoretable.number; -- 连接条件返回结果如下所示:

2020-08-05 21:40:51 287

原创 MySQL必知必会-第14章 使用子查询

使用子查询1.子查询进行过滤select 列名 as 列名别名 from 表名 as 表名别名where 字段1 in ( select 字段1 from ... where ...)1)列必须匹配,子查询返回的列,必须与父查询where子句中的列匹配;如图中字段1和字段1的匹配;2)子查询一般与【IN操作】结合使用,但也可以用于测试等于(=)、不等于(!= <>)等2.使用子查询作为计算字段-- 在orders表中统计出每个用户的订单数量,将订单数量作为用户的一个属

2020-08-05 19:55:47 222

原创 MySQL必知必会-第13章 分组数据(重要-涉及子句的计算逻辑顺序)

分组数据1.创建分组 Group By-- 1.先进行分组,在进行组内汇总(聚合)-- with rollup 关键字可以汇总所有组的数据select count(*) from 表名 as 表别名 group by 列名 with rollup;1)group by 后面可以包含多个列,对分组进行嵌套;2)如果嵌套分组,数据将在最后规定的分组上进行汇总(聚合);3)group by 子句中每个列都必须是检索列或有效的表达式【不能是聚合函数】4)Group by 子句必须使用于selec

2020-08-05 18:10:46 224

原创 MySQL必知必会-第12章 聚合函数

聚合函数SQL部分聚合函数函数说明AVG()返回某一列的平均值COUNT返回某一列的行数MAX()返回某一列的最大值MIN()返回某一列的最小值SUM返回某一列值的和1.AVG()函数1)AVG()函数只能计算指定的列的平均值,想要获取多个列的平均值,必须使用多个AVG()函数2)AVG()函数忽略列值为NULL的行2.COUNT()函数1)count(*)不忽略NULL值;2)count(列名)忽略该列值为NULL的行3.MAX(

2020-08-05 17:27:16 94

原创 MySQL必知必会-第11章 使用数据处理函数(字符串、时间、数值)

函数就是用来处理数据库中数据的一些已经封装好的方法;需要注意的是,函数的可以执行不如SQL,不同DBMS支持的函数不同;1.文本处理函数-- 1. 前一章使用的concat() trim() ltrim() rtrim()都属于这类函数之一select concat("abcd ","ssbc");select trim(" abcd ");select ltrim(" abcd ");select rtrim(" abcd ");-- 2. Left(str, n); 返回串左边的n个

2020-08-05 16:53:06 132

原创 MySQL必知必会-第10章 创建计算字段

计算字段1.计算字段的定义“列”是数据库中原先就存在的字段;“计算字段”可以看做是select语句中通过“列”计算出来的新字段【注意】只有数据库能够区分查询出来的结果里哪些“列”是实际的表列,哪些“列”是通过计算得到的“计算字段”;在客户端(应用程序)看来,这些列并无差别。2.拼接字段(字符串处理)--1.将多个数据库列的值拼接在一起,构成单个值【concat】--【注意】多数其他DBMS使用 +或者||来实现拼接-- concat()可以同时放入多个字段与字符串, 用","号隔开sele

2020-08-05 15:26:12 242

原创 MySQL必知必会-第4章 检索数据

数据检索查询语句1.基本查询语句select [DISTINCT] 列名 as '展现出来的列名', ....from 表名 as '给表起的别名'limit 开始行(从0开始), 取得行数 / limit 取得行数 offset 开始行(从0开始), 2.查询全部字段select * from 表名 as '表的别名'3.使用完全限定名select 表名.字段1名, 表名.字段2名, ... from 数据库名.表名;...

2020-08-04 23:45:57 154

原创 MySQL必知必会-第3章 使用MySQL

了解数据库SQLSQL是Structured Query Language(结构化查询语言)的缩写数据库数据库是一个以某种有组织的方式储存的数据集合;数据库是保存有组织的数据的容器;数据库管理系统平时使用的MySQL、Orachle、Sql Server等用于创建和操作数据库的软件模式描述表的一些特性的一组信息,定义数据在表中如何存储,如:1)可以存储什么样的数据2)数据可以如何分解3)各部分信息如何命名用于描述数据库中特定的表;也可以用于描述整个数据库(和其中表的关系)。使用

2020-08-04 23:30:22 130

原创 剑指Offer刷题-一般的题

一般的题从尾到到尾打印链表题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。思路方式1.借助栈存储节点,然后实现从后向前输出;或是借助vector以及它的reverse方法方式2.递归方式,参考树的前中后序遍历的递归,先访问后面的节点,在访问当前的节点,再把当前的结果集res返回给上层调用,让上层放入上层访问的节点。/*** struct ListNode {* int val;* struct ListNode *next;*

2020-08-04 16:44:02 69

原创 剑指Offer刷题-双指针

和为S的两个数字题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。思路数组是递增排序的。class Solution {public: vector<int> FindNumbersWithSum(vector<int> array,int sum) { // 双指针问题 // 重点:升序排列 + 两个数乘积最小 ===> 从两边向中间移动双

2020-08-03 23:01:09 172

原创 剑指Offer刷题-字符串处理/搜索

表示数值的字符串题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。class Solution {public: bool isNumeric(char* string) { // 1.先判断是否含有e E 返回其所在的位置 int i=0;

2020-08-03 22:58:20 81

原创 剑指Offer刷题-跟查找有关的题目

4.数据流中的中位数题目描述如何得到一个数据流中的中位数?思路1)每次插入数据,然后取中位数的时候排序,然后再取中位数;2)每次插入数据使用插入排序,这样维护的数组就是一个递增的数组;之后可以直接取中位数;3)最大堆维护较大的数,最小堆维护较小的数,每次插入保证最大堆和最小堆的元素个数差不超过1;// 方法1.直接插入,排序取中位数class Solution {public: vector<int> v; void Insert(int num) {

2020-08-03 22:57:06 63

原创 剑指Offer刷题-动态规划

4.青蛙跳台阶II题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路设跳上第i级台阶的方法数为f[i]【结论1】则f[i] = f[i-1]+ f[i-2] + … + f[0]f[i-1] 从i-1级跨1步到i级台阶f[i-2] 从i-2级跨2步到i级台阶…f[0] 从0级跨i步到i级台阶【结论2】又有f[i-1] = f[i-2]+…+f[0], 所以有 f[i] = 2*f[i-1]f[1] = 1;

2020-08-03 22:56:59 95

原创 string接口、queue等数据结构函数的使用

队列queue优先队列最大堆priority_queue<int, vector, greater> max_q;字符串stringstr.substr(start_pos, end_pos) ;

2020-08-03 22:56:24 125

原创 剑指Offer刷题-一些水题

一些水题:1.构建乘积数组题目描述:给定数组A[0,1,…,n-1]构建数组B[0,1,…,n-1]B[i]=A[0]×A[1]×A[2]×…×A[i-1]×A[i+1]×A[i+2]×…×A[n-1]规定:B[0] = A[1]×A[2]×…×A[n-1]B[n-1] = A[0]×A[1]×A[2]×…×A[n-2];)对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在。不能使用除法。思路:因为不能使用除法,所以选择保存数组A的前缀积和后缀积。代码class

2020-08-03 19:48:34 73

原创 剑指Offer刷题-技巧题/规律总结题

技巧题1.不用加减乘除做加法题目描述:求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路:1.将num1和num2表示二进制的形式便于观察2.使用 “异或运算” 求 num1和num2 每一位上【不带进位】的和3.使用 “与运算” 求 num1和num2 每一位上【向 前一位】的进位只有当前位是两个1相加,才会出现进位,因此用“与运算”比如:从低位开始算起,num1的第1位是1,num2的第一位也是1,它们相加得到的进位是1,这个1是要加在第2位上面的 ,因此得到的

2020-08-03 19:47:44 309

原创 剑指offer刷题-与数据结构相关的题目

常规题/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: int TreeDepth(TreeNode* pRoot) { int res = 0; if(pRoot==NULL)r

2020-08-03 19:46:56 80

原创 剑指Offer刷题-一些必须要会的知识点

一些必须要会的知识点:树的遍历-递归-非递归-前序中序后序层序前序遍历-非递归(栈)// 方式一void preOrder(treenode *root) { if (root) { stack<treenode *> st; // 借助 栈 结构进行前序遍历 treenode *r =root; while (!st.empty()||r) { // 当栈不为空或树根不为空进入循环 while (r) { // 这里循环遍历每棵左子树的根节点

2020-08-03 19:45:59 187

空空如也

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

TA关注的人

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