自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KKKKK胖的博客

记录学习过程中的点点滴滴知识,等待汇聚成海...........

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

原创 MySQL实战的基础篇概括

基础篇的目录一、MySQL的结构一、查询语句的执行流程二、更新等写操作语句的执行流程1、redo log和binlog2、流程三、事务1、是什么2、几大特性3、并发事务出现的情况和造成的问题4、并发事务的处理方案四、索引1、是什么2、作用3、底层结构4、种类五、锁1、为什么需要以及作用2、种类一、MySQL的结构【1】分析器会对SQL做解析,目的是要知道要做什么以及语法是否正确【2】优化器是对SQL的一些优化,如选择索引啥的【3】执行器是执行SQL语句的,注意,对于update这些操作都是在执行器

2022-01-23 18:41:23 979

原创 02文章杂记

一条update语句的过程1.首先客户端通过tcp/ip发送一条sql语句到server层的SQL interface2.SQL interface接到该请求后,先对该条语句进行解析,验证权限是否匹配3.验证通过以后,分析器会对该语句分析,是否语法有错误等4.接下来是优化器器生成相应的执行计划,选择最优的执行计划5.之后会是执行器根据执行计划执行这条语句。在这一步会去open table,如果该table上有MDL,则等待。如果没有,则加在该表上加短暂的MDL(S)(如果opend_table太

2022-01-09 12:51:20 89

原创 (六)组合与继承

文章目录一、继承二、组合三、"组合优于继承,多用组合少用继承"原则3.1、原因四、何时选择继承?何时选择组合?一、继承【1】继承是面向对象的四大特性之一,用来表示类之间的 is-a (是一个)关系,可以解决代码复用的问题【2】虽然继承有诸多作用,但继承层次过深、过复杂,也会影响到代码的可维护性【3】继承最大的问题就在于:继承层次过深、继承关系过于复杂会影响到代码的可读性和可维护性;另一方面,这也破坏了类的封装特性,将父类的实现细节暴露给了子类。子类的实现依赖父类的实现,两者高度耦合,一旦父类代码修改

2021-12-19 17:58:38 331

原创 (五)抽象类与接口

一、定义【1】抽象类实际上就是类,只不过是一种特殊的类,这种类不能被实例化为对象,只能被子类继承;继承关系是一种 is-a 的关系,那抽象类既然属于类,也表示一种 is-a 的关系。【2】接口泛指供别人调用的方法或者函数,接口表示一种 has-a 关系,表示具有某些功能。对于接口,有一个更加形象的叫法,那就是协议(contract)【3】从类的继承层次上来看,抽象类是一种自下而上的设计思路,先有子类的代码重复,然后再抽象成上层的父类(也就是抽象类)【4】而接口正好相反,它是一种自上而下的设计思路。

2021-12-19 11:32:39 203

原创 (四)面向对象编程与面向过程编程

一、面向对象编程【1】面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石【2】面向对象风格的代码被组织成一组类,方法和数据结构被绑定一起,定义在类中【3】面向对象编程是以类为思考对象。在进行面向对象编程的时候,我们并不是一上来就去思考,如何将复杂的流程拆解为一个一个方法,而是采用曲线救国的策略,先去思考如何给业务建模,如何将需求翻译为类,如何给类之间建立交互关系,而完成这些工作完全不需要考虑错综复杂的处理流程;当我们

2021-12-16 23:37:32 488

原创 (三)面向对象的三大特性

一、封装【1】封装从字面上来理解就是包装的意思,专业点就是信息隐藏或数据访问保护。是指利用抽象数据类型(对象类型)将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体(对象),数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系【2】系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节,但可以通过该对象对外的提供的接口来访问该对象二、继承三、多态四、抽象...

2021-12-14 14:00:40 263

原创 (二)面向对象的一些概念

一、面向对象编程【1】面向对象编程的英文缩写是 OOP,全称是 Object Oriented Programming【2】面向对象编程中有两个非常重要、非常基础的概念,那就是类(class)和对象(object)- 对象是类的实例,类是一个抽象的东西【3】面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石【4】OOP首先是一种设计思想,非仅仅是编码方式【5】OOP有且只有一个价值:应对需求的变化,哪里的需求有变

2021-12-12 01:23:04 337

原创 (一)为什么学习设计模式

一、应对面试中的设计模式问题二、告别写被人吐槽的烂代码三、提高复杂代码或者复杂业务的设计和开发能力四、让读源码、学框架事半功倍五、为职场发展做铺垫

2021-12-06 13:25:43 43

原创 能力套路(暂定命名)

文章目录一、编码二、业务理解三、项目设计(方案设计)四、沟通表达五、做事六、提问七、学习八、工作心态一、编码【1】在定义一个服务类和接口的时候,要注意先考虑他们的职责,思考抽象清楚功能,然后再开始命名【2】命名的时候,最好要表达出业务二、业务理解【1】先思考业务做的什么?它是什么?【2】为什么需要做这个业务,它的应用场景是什么?(接到一个业务需求的时候,一定一定要考虑这个需求的场景)【3】做这个业务能解决什么问题和痛点?为什么能解决?【4】要做的业务需求是否合理?要做的东西是不是只是一个表象

2021-12-05 01:29:19 62

原创 设计模式之简单工厂模式与策略模式

一、简单工厂模式概述:定义一个工厂类,它可以根据参数的不同返回不同的实例类型:创建型-----通俗理解就是创建出一个对象的类型,该类型一定会创建出对象的注意点:被创建的实例通常都具有共同的父类做法:【1】定义一个抽象的对象【2】定义抽象对象的具体实现子类【3】定义一个创建对象的工厂【1】定义一个抽象的对象//汽车:抽象产品public abstract class Car { public String getCarName();}【2】定义抽象对象的具体实现子类//奔驰

2021-11-24 21:41:08 728

原创 Java面试题----------一天两道之第十五天

一、说说TCP如何保证可靠传输使用确认应答机制和序列号:接收端会发送ACK报文进行应答超时重传:发送端会启动一个定时器来等待判断是否要重传;注意不会立即响应的,会进行校验接收端会对失序数据进行重新排序和校验数据对于重复的数据,会丢弃重复数据有流量控制和拥塞控制;流量控制指TCP会根据接收端对数据的处理能力来决定发送端的发送速度;拥塞控制指利用慢启动和滑动窗口控制数据来防止拥堵,从而防止...

2020-01-22 22:02:20 176

原创 Java面试题----------一天两道之第十四天

一、TCP与UDP的区别TCP是一种面向连接、可靠的基于字节流的传输层控制协议UDP是一种简单的面向数据报的传输层控制协议,不提供可靠性TCP是面向连接的,而UDP是无连接的协议,前者需要进行三次握手建立连接,而后缀不需要建立连接TCP是可靠的,而UDP是不可靠的,TCP的可靠性由TCP报文的序号、ACK确认机制、重传等来保证TCP是面向字节流的,而UDP是面向报文的TCP由于需要建...

2020-01-19 13:42:37 186

原创 Java面试题----------一天两道之第十三天

一、说说OSI七层模型和TCP/IP的四层和五层OSI七层: 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层TCP/IP的五层: 物理层、数据链路层、网络层、传输层、应用层TCP/IP的四层: 网络接口层、网际层、传输层、应用层①、物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输②、数据链路层:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数...

2020-01-19 13:39:08 419

原创 Java面试题----------一天两道之第十二天

一、说说HTTP中TCP的四次挥手FIN-----终止标记位;ACK-----确认标记位;seq-----序列号;ack-----确认号,只有当ACK为1时才有效第一次挥手:客户端发送FIN=1,seq=x给服务端请求关闭连接;然后客户端进入FIN_WAIT_1状态第二次挥手:服务端发送ACK=1,ack=x+1响应;然后服务端进入CLOSE_WAIT状态;注意这里当客户端收到响应后会进...

2020-01-16 21:13:19 104

原创 Java面试题----------一天两道之第十一天

一、说说HTTP中TCP的三次握手SYN-----同步标记位;ACK-----确认标记位;FIN-----终止标记位seq-----序列号;ack-----确认号,只有当ACK为1时有效第一次握手:客户端发送SYN=1和随机产生的序列号seq=x进行请求连接,然后客户端进入SYN_SEND状态第二次握手:服务端发送SYN=1,ACK=1,ack=x+1和随机产生的序列号seq=y回应,然...

2020-01-15 21:33:06 117

原创 Java基础----------内部类

Java中的几种内部类一、内部类种类成员内部类、局部内部类、静态内部类、匿名内部类二、使用内部类的好处利用内部类可以实现双继承,内部类加外部类包装可隐藏不想让人知道的内容即加强封装三、成员内部类定义在一个类的内部的,与成员同等级的成员内部类中不允许定义静态变量,一般定义的时候权限为缺省的可以之间访问外部类的所有成员,当所访问的成员跟内部类中定义的成员名字一样时要外部类.thi...

2020-01-14 21:49:43 137

原创 Java面试题----------一天两道之第十天

一、说说状态码吧二、了解HTTPS和HTTP的区别吗?HTTPS是运行在SSL上的HTTP,它可看成是加了密的HTTPHTTPS是加密传输协议,而HTTP是明文传输协议HTTPS使用的端口是443,而HTTP使用的是80HTTPS需要SSL证书,而HTTP不需要HTTPS的成本会比HTTP要高,因为它要到CA机构中购买证书HTTPS和HTTP的连接过程不太一样,HTTPS还要进行...

2020-01-14 21:04:52 82

原创 Java面试题----------一天两道之第九天

一、输入网址后发生了什么?解析验证网址-----判断输入的网址是否合法查询缓存------查询浏览器中是否有对应网页的缓存DNS域名解析-----将输入的网址域名解析成对应的服务器IP地址,一般会先去hosts文件中查,找不到再取DNS服务器中找建立TCP连接-----进行三次握手建立连接发生HTTP请求-----向服务器发送请求报文服务器处理请求返回响应结果-----给客户端发送...

2020-01-13 21:18:58 101

原创 Java基础----------Java内存模型(JMM)

Java内存模型(Java Memory Model 简称JMM)一、定义      JMM描述的是一组规则,通过这组规则来控制程序中各个变量在共享数据区域和私有数据区域的访问方式,保证了Java程序在各个平台下对内存的访问都能保证效果一致的一种机制;【简单通俗的来说JMM是说明主内存和工作内存之间数据同步的一组规则】二、目的&n...

2020-01-13 20:57:22 170

原创 LeetCode修炼之路----------49. 字母异位词分组

49. 字母异位词分组题目如下:解题代码与解析:public List<List<String>> groupAnagrams(String[] strs) { HashMap<Integer, List<String>> hash = new HashMap<>(); //每个字母对应一个质数 ...

2019-12-22 20:54:21 81

原创 Java面试题----------一天两道之第八天

一、抽象类与接口的区别抽象类使用abstract关键字修饰,而接口使用Interface关键字子类使用extends继承抽象类,而使用implement实现接口一个类只能继承一个抽象类,而一个类可以实现多个接口抽象类中成员变量可以是各种类型的,而接口中的变量只能是public static final抽象类中的方法可以是任何权限的,但是抽象方法不能是private的,而接口中的方法都是...

2019-12-22 20:43:24 88

原创 LeetCode修炼之路----------14. 最长公共前缀

14. 最长公共前缀题目如下:解题代码与解析:public String longestCommonPrefix(String[] strs) { if (strs == null || strs.length < 1){ return ""; } if (strs.length == 1){ ...

2019-12-18 21:13:25 70

原创 Java面试题----------一天两道之第七天

一、基本类型和包装类型的区别声明方式不同:基本类型不使用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间存储方式及位置不同:基本类型是直接将值存储在栈中的,而包装类型是将对象放在堆中,然后引用放在栈中,通过引用来使用对象初始值不同:包装类型的初始值为null,而基本类型不为null集合泛型中不支持基本类型,但支持包装类型 二、wait()和sleep()的...

2019-12-18 20:58:19 63

原创 Java面试题----------一天两道之第六天

一、说说Synchronized关键字答案: Synchronized关键字是用于解决并发情况下数据同步访问的一个重要关键字;它能保证线程安全,保证操作的原子性、变量的可见性和程序的有序性,保证同一时刻只有一个线程在进行访问;使用Synchronized关键字的方式有使用在方法上的称同步方法和以代码块方式使用的Synchronized同步块两种;当以同步块的方式使用时,需要对象锁或者类锁;当以同...

2019-12-16 12:38:40 133

原创 Java基础----------内存区域(运行时数据区)

一、Java内存结构图二、结构图的各个结构介绍程序计数器:保存当前线程执行的指令的地址虚拟机栈:存放一个个栈帧,而一个栈帧对应着一个Java方法        栈帧:一种数据结构,包括局部变量表、操作数据栈、指向运行时常量池的引用(动态链接)、方法返回地址和额外的附加信息;一个方法对应一个栈帧,方法开始时创...

2019-12-14 20:02:38 140

原创 Java基础----------int和Integer的区别

int类型和Integer类型的区别一、两者的基本区别缺省值(默认值)不一样,int的缺省值是0,而Integer的是nullInteger是int的包装类,而int是基本数据类型之一Integer表示的是对象,用这个类型的引用指向这个对象,而int直接存储值Integer有自动装箱和拆箱功能Integer类型提供许多方法来进行数据操作,而int没有二、两者使用==来比较的情况...

2019-12-14 19:07:20 112

原创 Java面试题----------一天两道之第五天

 一、说说堆的分区具体情况和它们的比例大小答案: 在Java中,堆被分为新生代和老年代这两个不同的区域;新生代又划分为Eden、Survivor这连个区,而Survivor又划分成From和To 两个区;从细分的角度看,堆被分成老年代、Eden区、From Survivor区和To Survivor区这四个区域;对于空间来说,默认新生代占1/3,老年代占2/3,可以通过参数-XX:N...

2019-12-13 20:04:33 91

原创 Java面试题----------一天两道之第四天

 一、Java里的CAS了解吗?答案: CAS是一种比较交换技术,它是一种乐观锁,当多个线程尝试使用CAS更新同一个变量时,只有其中一个线程能更新变量,而其他的线程会失败,但是失败的线程不会被挂起而是被告知该次竞争失败再次竞争;CAS是CPU指令级的操作,它的原理是比较内存值和旧的预期值,当两者相同的时候才会把内存值修改成新值; CAS也有缺点,由于不断进行竞争,CPU内存会开销很大...

2019-12-12 21:41:51 94

原创 Java面试题----------一天两道之第三天

 一、volatile关键字的作用以及使用场景答案: volatile是一个修饰变量的关键字,它不能修饰方法或者代码块,它能保证变量的可见性和有序性,但不能保证原子性;volatile能保证可见性是因为它修饰的变量发生写操作时会被强制同步到主内存中,该变量在其他cpu的缓存中会失效,在每次使用之前都会从主内存中刷新值,从而达到可见性;volatile能保证有序性是因为它有个功能是禁止...

2019-12-11 20:41:08 70

原创 LeetCode修炼之路----------164. 最大间距

164. 最大间距题目如下:解题代码与解析:public int maximumGap(int[] nums) { if (nums.length <= 1) { return 0; } int n = nums.length; int min = nums[0]; int max...

2019-12-11 20:24:25 96

原创 LeetCode修炼之路----------41. 缺失的第一个正数

41. 缺失的第一个正数题目如下:解题代码与解析private void swap(int[] arr,int i,int j){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public int firstMissingPositive(int[] nums) ...

2019-12-11 20:15:19 81

原创 Java基础----------基本类型

基本类型一、八大基本类型名称字节位数包装类byte18Byteshort216Shortint432Integerlong864Longfloat432Floatdouble864Doublechar216Characterboolean--Boolean二、基本

2019-12-11 16:23:07 72

原创 Java面试题----------一天两道之第二天

            一、1.8的HashMap中hash()方法为什么要进行异或(^)操作答案: key的hashcode()结果移动16位之后,可能会出现高低位变化很大,导致使用到的哈希值位数很少,这样会造成碰撞可能性增大;而进行异或操作之后让高低位参与到计算中,加大哈希码的随机性,会大大减少Ha...

2019-12-10 20:30:10 94

原创 LeetCode修炼之路----------287. 寻找重复数

287. 寻找重复数题目如下:解题代码与解析:方式一 public int findDuplicate(int[] nums) { /** * 从题目和要求可以知道,数组长度 - 1就是整个数组中最大的一个数; * 那么也可得到 数有len个,但值最大为len-1,这时就是总有一个重复的, * 因为从1开始而数...

2019-12-10 14:12:49 70

原创 LeetCode修炼之路----------128. 最长连续序列

128. 最长连续序列题目如下:解题代码与解析: public static int longestConsecutive(int[] nums) { Set<Integer> numsSet = new HashSet<>(); // 把数组nums的数全部放进set中 for (Integer num : nums...

2019-12-09 10:13:44 77

原创 LeetCode修炼之路----------334. 递增的三元子序列

334. 递增的三元子序列题目如下:解题代码与解析:注意点:递增的三元子序列可以是连续递增,也可以是间接递增 public boolean increasingTriplet(int[] nums) { // 给两个变量赋最大的值是为了后面方便能分别记录第一个数和第二个递增数; int maxOne = Integer.MAX_VALUE; // ...

2019-12-09 09:48:08 159

原创 LeetCode修炼之路----------11.盛最多水的容器

11.盛最多水的容器题目如下:解题代码与解析 public int maxArea(int[] height) { //指向最左边和最右边的两个变量 int left = 0, right = height.length - 1; //假设最左和最右的两条线组成的面积最大 int maxarea = (height.len...

2019-12-08 22:39:55 58

原创 Java面试题----------一天两道之第一天

            一、你说HashMap在某个桶数据过大时会转换成红黑树,目的是什么呢?答案: 若桶中链表元素个数大于等于8时,链表转换成树结构;若桶中链表元素个数小于等于6时,树结构还原成链表。红黑树的平均查找长度是log(n),长度为8的时候,平均查找长度为3,如果继续使用链表,平均查找长度为8...

2019-12-08 14:44:38 79

原创 LeetCode修炼之路----------45. 跳跃游戏 II

45. 跳跃游戏 II题目如下:解题代码与解析: public int jump(int[] nums) { if(nums.length == 1) { return 0; } // 下面的初始化从位置0开始就算是已经开始跳了 int reach = nums[0]; //记录当前所在次数能跳的最...

2019-12-08 00:18:50 74

原创 LeetCode修炼之路-------------55. 跳跃游戏

55. 跳跃游戏如下为题目描述:解题代码与解释class Solution { public boolean canJump(int[] nums) { //从后往前试,能指向p所指的位置的那个位置,只要到达该位置就能到p,所以又用p指向该位置再试前面的 int p = nums.length - 1; //指向最后能到达的位置,一开始指向最...

2019-12-07 20:53:24 82

空空如也

空空如也

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

TA关注的人

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