![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
文章平均质量分 53
CheeseCheese-IScream
这个作者很懒,什么都没留下…
展开
-
mysql的优化层面详解【学习笔记】
mysq|数据库优化层面图解优化层面商业需求:产品经理+项目经理【参与】系统架构:项目经理+系统架构师【介入】SQL及索引:【开发阶段】开发人员【关注】数据库表结构:开发人员【关注】系统配置+硬件:DBA(数据库管理员)+运维【关注】总结:越早介入越好!越往后,成本越高!商业需求背景:做需求的时候,不容易界定【需求是否合理】。技术人员怎么来证明一个需求是否合理?每次和产品经理提出新项目的时候,要求他们同时比出该项目的预期收益量化指标,为项目统计评估投入产出比例…原创 2021-04-19 23:07:57 · 367 阅读 · 6 评论 -
数据库优化的必要性【学习笔记】
为什么要进行数据库优化?避免网站页面出现访问错误【问题1】为什么产生超时:数据库连接池已经满了,查询的数据量比较大,引起数据库线程挂死,【问题2】产生的原因:数据查询慢,表庞大(上百万,上千万的数据)开发的时候忘记加索引(灾难)【问题3】超时或者阻塞,线程繁忙锁表增加数据库的稳定性什么叫低效?查询的时候全表扫描,没有使用索引。【例子】:开发人员在开发初期,忘记加索引,在开发阶段和测试阶段,或者项目上线初期,可能不会发现什么问题,因为用户量特别少,数据量特原创 2021-04-19 21:32:06 · 666 阅读 · 0 评论 -
接口与抽象类【学习笔记】
接口为什么要有接口的概念【EG】:与类相比接口的申明接口与抽象类的区别从实现角度看【EG】:But why?接口的多重实现总结:抽象类:只是提供了一些共有的实现。接口:描述类有什么能力接口和抽象类:纬度不同...原创 2021-04-19 00:02:34 · 133 阅读 · 0 评论 -
面向对象_类与对象【学习笔记】
类与对象逻辑结构物理结构this:employee类的引用类的静态变量,静态函数?代码package interview.oop.company;public interface BankEndPoint{ void payment(String name, int salary);}package interview.oop.company;import java.util.List;public class Employee{ static原创 2021-04-18 21:04:35 · 374 阅读 · 3 评论 -
算法复杂度【学习笔记】
根据复杂度从大到小:算法的组合 例:区间合并解题思路:对区间进行排序:根据左端点从小到大排,排完之后,从左到右扫描,扫描时,规定【循环不变式】【循环不变式】:(1) 记录之前看到的 所有区间 的 最大右端点,(2) 然后扫描,(3) 每扫描一个区间,拿这个区间去和当前所看到的最大右端点比较,(4) 比较后,有3种结果:当前所看到的最大右端点 比 区间小当前所看到的最大右端点 落在 区间里当前所看到的最大右端点 比 区间大(5) 更新当前最大右端点的值原创 2021-04-18 20:14:42 · 87 阅读 · 0 评论 -
中序遍历下一个结点_代码【学习笔记】
上一集见中序遍历下一个结点_分析+搭建框架代码细节:在运用非递归的方法调用中序遍历的时候:拿它的树根去问它的第一个结点是谁,有了first才能一路next下去。搭建逻辑框架:最后合成:【未简化,没有测试边界值】输出结果:优化:【简化后并测试了边界值还提高了覆盖率】输出结果:总结:完整代码在这里哦!CheeseCheese-IScream给个小星星鼓励一下吧~❤谢谢❤...原创 2021-04-18 19:31:54 · 141 阅读 · 0 评论 -
中序遍历下一个结点_分析+搭建框架【学习笔记】
例二:寻找中序遍历时的下一结点注意:双向箭头给一个结点,求中序遍历时的下一个结点。把输入的中序遍历从递归改成非递归。思考中序遍历:先中序遍历左子树,再遍历树根,再中序遍历右子树。中序遍历所看到的第一个节点D是第一个节点,没有左儿子,可能有右儿子,先遍历D的右儿子,没有右儿子,回到D的父亲B。遍历B的右子树E级所在的树,从E一直往左走G的下一个结点是E(E的左子树已经访问完毕了)。E的下一个结点是A(往上走2步)阐述关系:E是B的右子树:遍历完E的时候,找的下原创 2021-04-18 16:42:53 · 224 阅读 · 0 评论 -
树的遍历_构造后序【学习笔记】
例一:根据前序中序构造二叉树突破口:前序遍历第一个就是树根。把问题的规模缩小:最后:初始值(空传or单节点的树)进行递归调用【数学归纳法+递推关系】public static void main(String[] args) { TreeCreator creator = new TreeCreator(); TreeTraversal traversal = new TreeTraversal(); TreeNode sampleTree = creator.cr原创 2021-04-18 14:36:57 · 198 阅读 · 4 评论 -
树的遍历_二叉树的遍历【学习笔记】
树二叉树的遍历前序遍历:先前序遍历树根,然后前序遍历左子树,然后再前序遍历右子树。中序遍历:先中序遍历左子树,再遍历树根,再中序遍历右子树。后序遍历:先后序遍历左子树,再后序遍历右子树,再遍历树根。完整代码在这里哦!CheeseCheese-IScream给个小星星鼓励一下吧~❤谢谢❤...原创 2021-04-18 11:35:55 · 89 阅读 · 0 评论 -
Java集合类型【学习笔记】
思考:List:线性表Set:集合(不能有重复元素)(key)Map:字典(key, value)ArrayList:用数组数组实现的线性表LinkedList:用链表实现的线性表HashSet:用哈希表实现setTreeSet:用二叉树组的树实现set(用 平衡二叉搜索树 找元素)(平衡算法:红黑树)常见问题【思考】:他们都是list(线性表的结构)他们实现不同e:element【一句话回答】:List是一个接口,ArrayList和LinkedLis原创 2021-04-18 10:49:47 · 1622 阅读 · 11 评论 -
数据结构回顾【学习笔记】
数据结构数据结构回顾push():往结构里放入元素pop():从结构里取出元素栈:先进后出队列:先进先出有限队列:从小到大无向图:每个节点之间,没有方向a走到bb走到a双向有向图:单向,单行线a走到b,b不能往回走到a有向无环图:描述任务之间的先后关系,比如:开发一个软件系统,先决条件:要有需求文档,建立团队,签合同…怎么设计模型:需求分析,签合同是2个结点软件开发是1个结点【需求分析,签合同 是 软件开发的前提,分别往软件开发画一根线】深度优原创 2021-04-18 00:06:20 · 131 阅读 · 1 评论 -
边界控制_二分查找+设计测试用例+隐藏10年的bug【学习笔记】
边界控制例:二分查找普通查找:从第一个开始,一个一个看二分查找:从中间开始看(效率高)二分查找的必要条件:Arr是一个有序数组精确描述:/** * Searches element k in a sorted array. * * @param arr * a sorted array * @param k * the element to search * @return index in arr wher原创 2021-04-17 22:29:23 · 639 阅读 · 5 评论 -
【封神操作】循环控制_例题链表删除结点【学习笔记】
例二:链表中delete_ if要求:把所有数值为2的结点删除掉循环从什么角度入手?定义【循环不变式】假设第一个2已经被删掉了怎么处理第2个2思路:Java:把3的next指向5,垃圾回收把结点2回收掉C++:还需要delete结点2具体怎么做?有一个变量指向结点3把3指向5不用管2删完2,下一个要考虑结点5,此时previous指向3完成【循环不变式】向前推进的过程【循环不变式】:从链表开头到previous结点为止,保证所有值为2的结点都已经被正确原创 2021-04-17 20:29:09 · 549 阅读 · 2 评论 -
循环控制_例题链表反转非递归【学习笔记】
例一:链表反转前言:如果链表有100万个元素,资源开销并不大,把它反转也不是见特别复杂的事,但是用“递归”就会调100万次,系统开销非常大,所以要用循环的方法做出链表的反转。用循环的方法做“链表反转”的步骤:①定义循环不变式说一句断言,让它在整个循环中始终成立之前的“递归”做法:把第一个元素单独拿出来,把2345进行递归“循环”做法:在中间切一刀:前三个结点反转完:3和4的连接线属于结点3的部分:切之前,3的next指向4切之后,3的next指向2原创 2021-04-17 18:01:49 · 184 阅读 · 0 评论 -
编码技巧_循环书写方法【学习笔记】
循环控制循环和递归一样,都需要有一个断言。递归中的断言:1. 函数定义本身有返回值,参数,side-effect2. 断言函数能够正确工作:假设【N-1】的情况能够正确工作,能够推出【N】的情况也能够正确工作。循环中的断言:定义:看循环框架:1.定义了2个参数a,b2.有个while循环3.循环体怎么保证循环的正确性?要有一个循环不变式,要说一句话:【定义条件】条件在什么时候要满足呢?进入第一次循环之前:a,b必须满足这个条件每一次循环结束之前:a,b原创 2021-04-17 16:15:37 · 187 阅读 · 0 评论 -
递归开销【学习笔记】
递归的缺点发现:循环更节省开销。把递归改成循环:节省系统开销?否循环控制原创 2021-04-17 15:48:46 · 170 阅读 · 0 评论 -
递归控制_例题列出所有组合【学习笔记】
例三:列出所有组合设计思路:数组是1234,任取其中的2个元素作为一个组合,共有6种取法:把问题规模缩小(缩小一个规模):精确描述:/** * Generates all combinations and output them, * selecting n elements from data. */Generates all combinations and output them,生成所有组合并输出它们selecting n elements from data原创 2021-04-17 14:44:44 · 253 阅读 · 0 评论 -
递归控制_例题链表反转【学习笔记】
例二:链表反转【思路】先把2345链表反转假设函数能够正确反转链表【假设很重要】反转之后,元素1的next指向哪里呢?仍然指向元素2【细节】反转没有碰到元素1本身,只是把2开头的链表进行了反转接下来要做的事:1开头的链表也能正确反转怎么做?把2的next指向1把1的next指向null敲代码原则:精确描述:/** * Reverses a linked list. * * @param head * the linked l原创 2021-04-16 22:25:36 · 106 阅读 · 0 评论 -
数学归纳法是编码的依据【学习笔记】
数学归纳法数学归纳法的例子数列求和公式①n=1的情况:n=1带进去②n>1的情况:假设n-1的情况成立,③对于n的情况,利用n-1的结论最后在n-1成立的情况下,研究 对n的情况也是成立的结论:高斯的公式 对所有自然数是成立的数学归纳法 翻译成 程序设计语言package my;public class HelloWorld_new1{ public static void main(String[] args) { System.out.p原创 2021-04-14 18:29:00 · 170 阅读 · 0 评论 -
递归控制_例题链表创建【学习笔记】
例一:链表创建单向链表:只能往后指,不能往前看通过考察链表 = 考察敲代码能力递归:严格定义函数的作用:给一个数组,把数组每个元素生成一个节点,把节点首尾相接链表必须以null结尾把第一个节点作为链表头这样:用户可以拿着链表头,可以一直顺着它的next,访问到链表结尾看到null之后,说明链表结束了怎么缩小问题的规模:定义一个函数CreateLinkedList它的返回值node(链表的头)输入本来是12345把1拆掉,把2345去建一个Link原创 2021-04-15 17:00:00 · 196 阅读 · 0 评论 -
编码技巧:递归书写方法【学习笔记】
如何证明递归函数正确执行?写递归函数的过程 = 证明递归函数正确性的过程递归书写方法Side-effect:副作用函数不光操作参数和返回值,它还操作了一些全局状态,在运行过程中对全局状态会发生一些改变,还有一种情况,函数在运行过程中对参数本身会发生一些改变Side-effect【EG】:比如说传了一个数组,但是在函数过程中改变数组中元素的值or改变它们的顺序通常来说,比较理想的做法:函数运行完,没有Side-effect在运行过程中可以产生Side-effect(改一些原创 2021-04-14 20:29:28 · 117 阅读 · 0 评论 -
数据类型的常见问题【学习笔记】
(一)整数在内存中是怎么表示的?补码表示。为什么要用补码表示?有什么好处?浮点数在内存中是怎么表示的?相当于科学计数法的做法。浮点数表示数的范围特别大,但精度有限(二)是“整数在内存中是怎么表示的”更加底层的概念**假设:**一个整数有4个字节,内存中分4个字节大小的块问:高位放在高地址还是高位放在地地址?(衍生出2中不同的顺序)Big-ending/Little-ending什么是对齐?数据在内存中需要对齐比如说:C++有一个结构体,里面有个char类型(1Byt原创 2021-04-14 16:48:32 · 173 阅读 · 0 评论