为了offer背起来
有梦想有行动
生命的轨迹会沿着你期望的方向走去
展开
-
三次握手 为什么确认号是序列号+1
这样设计肯定有他的道理,但是也不一定都是+1,若发送方没有接收到数据则确认号+1,但如果收到了数据,则下一次发送的确认号就不是+1,而是加上收到的数据量。原创 2021-10-15 20:45:37 · 1154 阅读 · 0 评论 -
static的用法
static是java中非常重要的一个关键字,而且它的用法也很丰富1 . 用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享;2 . 用来修饰成员方法,将其变为类方法,可以直接使用“类名.方法名”的方式调用,常用于工具类;3 . 静态内部类,在使用的时候才加载,且只加载一次未完待学…...原创 2021-04-28 14:49:18 · 103 阅读 · 0 评论 -
讲讲Spring事务的传播属性
事务:为了达到某个目的而做的一系列的操作要么一起成功(事务提交),要么一起失败(事务回滚)事务的四大特性:ACID(一原持久隔离)事务的隔离级别:读未提交的(会产生脏读、不可重复读【修改】、幻读【新增】的问题)读已提交的(会产生不可重复读、幻读的问题) 默认可重复读(会产生幻读的问题)串行化...原创 2021-09-27 22:24:37 · 241 阅读 · 0 评论 -
MySQL中的索引
执行计划:可以判断一条SQL语句有没有使用索引。具体操作:explain+sql执行计划结果中的重要字段:type:连接类型system:表只有一行记录,相当于系统表const:通过索引一次就找到,只匹配一行数据eq_ref: 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配ref:非唯一性索引扫描,返回匹配某个单独值的所有行用于=、<、> 操作符带索引的列range:只检索给定范围的行,使用一个索引来选择行,一般使用 between、<、>inde原创 2021-09-25 20:45:09 · 200 阅读 · 0 评论 -
Spring为什么默认是单例模式?
单例bean与原型bean的区别:如果一个bean被声明为单例的时候,在处理多次请求的时候在spring容器里只实例化出一个bean,后续的请求都公用这个对象,这个对象会保存在一个map里面。当有请求来的时候会先从缓存(map)里查看有没有,有的话直接使用这个对象,没有的话才实例化一个新的对象,所以这是个单例的。但是对于原型(prototype)bean来说当每次请求来的时候直接实例化新的bean,没有缓存以及从缓存查的过程。Spring为什么默认是单例模式?为了提高性能,少创建实例,垃圾回收,缓存原创 2021-09-25 15:51:53 · 3116 阅读 · 0 评论 -
Spring中的bean是什么?
Spring中的bean是什么?在 Spring 中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean是一个由Spring IoC容器实例化、组装和管理的对象。我们总结如下:1.bean是对象,一个或者多个不限定2.bean由Spring中一个叫IoC的东西管理3.我们的应用程序由一个个bean构成...原创 2021-09-25 15:36:59 · 2798 阅读 · 0 评论 -
Java继承机制
Java继承机制子类拥有父类非private的属性,方法。子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。子类可以用自己的方式实现父类的方法(重定义)。java的继承是单继承,但接口允许多继承。提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。...原创 2021-09-25 11:00:26 · 285 阅读 · 0 评论 -
什么是软件工程?
什么是软件工程?软件是指能够运行在硬件上的程序及其文档。这里的硬件是具有计算能力的设备,包括计算机、手机等很多类型。本书中主要介绍的是计算机及其软件。软件并不是一个设备的形式出现的,它是运行在设备里面的程序。套用一个流行的词,就是“灵魂附体”,灵魂就是这个软件,体就是硬件。只有被灵魂附了体,这个体才能活过来。硬件只有安装了相应的软件,也才能发挥作用。软件工程就是用工程化的方法来开发软件。软件工程是指导软件开发的方法从实践的角度,可以将软件开发大致分为需求获取及分析阶段、设计阶段、编码阶段、测试阶段、原创 2021-09-25 10:33:50 · 1340 阅读 · 1 评论 -
实现AOP的两种方式
1. 动态代理使用java.lang.reflection.Proxy类来处理2. cglib原创 2021-09-25 10:29:53 · 160 阅读 · 0 评论 -
关于的redis的知识点
1.redis是基于key value的Nosql数据库。Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。redis的默认端口号是6379。2、常用的redis服务命令安装服务:redis-server --service-install卸载服务:redis-server --service-uninstall启动服务:redis-server --service-start停止服务:red原创 2021-09-05 20:41:12 · 225 阅读 · 0 评论 -
cookie和session的区别?
cookie和session的区别?session在服务器端,cookie在客户端(浏览器)session默认被存在在服务器的一个文件里(不是内存)session的运行依赖session id, 而session id 是存在cookie中的,也就是说,浏览器禁用了cookie,同时session也会失效(但是可以通过其他方式实现,比如在url中传递session_id).session可以存放在文件、数据库、或内存中都可以。用户验证这种场合一般会用session.因此,维持一个会话的核心就原创 2021-09-05 10:27:39 · 173 阅读 · 0 评论 -
ip首部校验和
ip首部校验和只检验数据报的首部,不包括数据部分方法:在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置0,用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。接收方收到数据报后,将首部的所有16位字再使用反码算术运算相加一次。将得到的和取反码,即得出接收方的检验和的计算结果。若首部未发生任何变化,则此结果必为0。UDP校验和与IP校验和类似,但UDP的检验和是把首部和数据部分一起都检验。*在计算检验和时,要在UDP用户数据报之前增加12字节的伪首部。方原创 2021-09-02 16:30:13 · 2597 阅读 · 0 评论 -
操作系统的中断
中断是指CPU对系统发生的某个事件做出的一种反应,CPU暂停正在执行的程序,保存现场后自动去执行相应的处理程序,处理完该事件后再返回中断处继续执行原来的程序。外中断由CPU外部引起的,称为外中断。如IO中断,时钟中断内中断一种是来自CPU内部事件或程序执行中引起的中断,例如程序非法操作,地址越界,浮点溢出。...原创 2021-08-08 08:47:53 · 1588 阅读 · 0 评论 -
Java的参数传递是 值传递 还是 引用传递?
Java的参数传递是 值传递 还是 引用传递?1 . 基本数据类型(8种)2 . 引用类型可分为类引用类型(类)、接口引用类型(接口)和数组引用类型(数组)总结Java基本数据类型传递参数时是值传递;引用类型传递参数时是引用传递。值传递时,将实参的值传递一份给形参;引用传递时,将实参的地址值传递一份给形参。值传递时,实参把它的值传递给对应的形参,函数接收的是原始值的一个拷贝,此时内存中存在两个相等的基本类型,即实参和形参,后面方法中的操作都是对形参这个值的修改,不影响实参的值。引用传递时,实参原创 2021-08-07 21:25:31 · 652 阅读 · 0 评论 -
交换机和路由器有什么区别
交换机(英文:Switch,意为“开关”)是一种用于电信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。其他常见的还有电话语音交换机、光纤交换机等。路由器(Router)是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号的设备。路由器是互联网络的枢纽、“交通警察”。目前路由器已经广泛应用于各行各业,各种不同档次的产品已成为实现各种骨干网内部连接、骨干网间互联和骨干网与互联网互联互通业务的主原创 2021-08-07 20:13:11 · 2494 阅读 · 0 评论 -
几种CPU调度的算法
介绍几种CPU调度的算法:1. 先进先出算法FIFO((First In First Out)按照进程就绪的先后顺序来使用CPU,处理器被分配给最先进入就绪队列的进程,进程一单分到CPU的使用权,就一直执行到晋城结束或阻塞时才结束。这种进程按照时间顺序来使用,非抢占内存的方式,公平公正,实现起来也相对简单;但是算法的实际效果不佳,比如在长进程后的短进程,必须等到长进程执行完毕后才能执行,不利于有效的提升用户体验。再形象化一点,有3个进程p1,p2,p3,执行期分别为30,20,10,当他们分别进入就绪队原创 2021-08-07 11:30:31 · 4403 阅读 · 0 评论 -
TCP滑动窗口机制
滑动窗口机制**作用:**利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。1 . A给B发送数据,则A有发送缓冲区,B有接收缓冲区。应用层的所有需要发送的数据都被放在了发送者的发送缓冲区。发送窗口是发送缓存中的一部分,是可以被TCP协议发送的那部分。2 . 发送缓冲区包括:(1)已发送并收到确认的数据(2) 已发送但未收到确认的数据(3) 允许发送但尚未发送的数据(4)以及暂不允许发送的数据3 . 每次成功发送数据之后,发送窗口就会在发送缓冲区中按顺序移动,将新的数据包含到原创 2021-08-07 11:10:22 · 447 阅读 · 0 评论 -
spring框架学习
1.spring框架学习spring核心技术 ioc, aop 。 能实现模块之间,类之间的解耦合。Ioc(Inversion of Control)把对象的创建,赋值,对象之间的关系管理工作都交给代码之外的容器实现。note: 容器:是一个服务器软件,一个框架(spring)为什么要使用ioc: 目的就算减少对代码的改动,也能实现不容的功能(实现解耦合)。2.mybatis访问数据库,对表中的数据执行增删改查。...原创 2021-07-08 14:09:17 · 170 阅读 · 0 评论 -
你了解间隙锁吗
间隙锁(Gap Lock)作用:保证某个间隙内的数据在锁定情况下不会发生任何变化。比如mysql默认隔离级别下的可重复读(RR)。间隙锁(Gap Lock)是Innodb在提交下为了解决幻读问题时引入的锁机制,(下面的所有案例没有特意强调都使用可重复读隔离级别)幻读的问题存在是因为新增或者更新操作,这时如果进行范围查询的时候(加锁查询),会出现不一致的问题,这时使用不同的行锁已经没有办法满足要求,需要对一定范围内的数据进行加锁,间隙锁就是解决这类问题的。在可重复读隔离级别下,数据库是通过行锁和间隙锁共同原创 2021-07-10 14:01:15 · 963 阅读 · 0 评论 -
以下几种情况将导致索引失效
索引并不是时时都会生效的,比如以下几种情况,将导致索引失效:1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)2.对于多列索引,不是使用的第一部分(第一个),则不会使用索引3.like查询是以%开头4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引...原创 2021-07-10 09:20:30 · 2190 阅读 · 0 评论 -
为什么B+树索引比B树的好
为什么B+树索引比B树的好1 . B树的数据指针存储在各层节点中 , B+树的数据都存储在了叶子节点 , B树的数据存储的比较分散 , 在磁盘里进行查找的时候 , 不能利用上局部性原理 , 查询效率是更低的.2 . B+树叶子节点之间还有链表连起来了 , 如果是个范围的查询 , 那么就只需要找到前一个和后一个 ,中间遍历链表就可以了,B树还要不停的去遍历整个树 , 才能进行范围查询 , 也是慢的....原创 2021-07-09 21:26:18 · 353 阅读 · 0 评论 -
SSM面试要知道的
MyBatis可以简化JDBC操作,实现数据的持久化。ORM: Object Relational Mappingperson对象 person表ORM: 概念,Mybatis是ORM的一个实现(类似的还有Hibernate), ORM可以使开发人员像操作对象一样操作数据库表。开发MyBatis程序步骤:1.配置mybatisconf.xml:配置数据库信息和需要加载的映射文件映射文件xxMapper.xml:增删改查标签...原创 2021-03-22 21:16:30 · 160 阅读 · 0 评论 -
java中==和equals()的区别?
1.原理不同sleep()方法是Thread类的静态方法,是线程用来控制自身流程的;wait()方法是Object类的方法,用于线程间的通信。2.对锁的处理机制不同调用sleep()方法后并不会释放锁调用wait()方法后会释放锁3.使用区域不同sleep()方法可以放在任何地方使用wait()方法必须放在同步控制方法或者同步语句块中使用...原创 2021-03-03 21:04:55 · 134 阅读 · 1 评论 -
Java 线程的 6 种状态
Java 线程的 6 种状态1 . new:初始化态,就是new之后2 . runnable:运行态,就是调用start()之后(1)Ready:准备态,还没有获得CPU的控制权。(2)Running:执行态,获得了CPU的控制权、3 . blocked:阻塞态,因为访问的资源被加锁了4 . watting:等待态5 . timed_waiting:超时等待6 . terminated:结束态线程状态图...原创 2021-05-22 12:01:50 · 136 阅读 · 0 评论 -
BIO和NIO的区别?
BIO和NIO的区别?BIO:同步阻塞的IO模型,数据的读取和写入必须阻塞在一个线程里面,去等待完成;NIO:同步非阻塞的IO模型(JDK1.4引入了NIO框架,提供了Channel,Selector,Buffer等这些抽象类)1 . 线程模型区别BIO:基于线程驱动的,N:N(一个服务端线程对应一个客户端线程)NIO:基于事件驱动的,1:N(一个服务端线程对应N个客户端线程(连接、读、写、断开))...原创 2021-05-18 21:25:49 · 315 阅读 · 0 评论 -
Http和https的区别?
Http和https的区别?答:http是超文本传输协议的缩写,用于从网站服务器传输数据到上网者的本地浏览器的协议。超文本是啥?就是除了文本还能传输声音、图片、视频等等。Http它是明文传输的,传输过程中被截获直接就能读取信息,不安全。在http上加上SSL(安全套接字协议,它是靠证书来验证服务端的身份,并在本地机和服务端之间架起一条通道) 就是https。但是https主要有以下方面是成本和问题:SSL证书是要收费的,而且功能越强的证书,越贵SSL会延长页面的加载时间,有统计延长大概50%原创 2021-05-18 08:15:41 · 85 阅读 · 0 评论 -
面试官:LongAdder了解吗?
1 . 什么是JUC?JUC就是java.util.concurrent包,这个包俗称JUC,里面都是解决并发问题的一些东西,它的基础 AQS。JUC中的4大常用并发工具类:CountDownLatchCyclicBarrierSemaphoreExChanger2. 常用的JUC下的原子操作类更新基本类型类:AtomicBoolean,AtomicInteger,AtomicLong更新数组类:AtomicIntegerArray,AtomicLongArray,AtomicRefere原创 2021-05-16 20:08:59 · 355 阅读 · 1 评论 -
并发之CountDownLatch
1 . CountDownLatch的工作原理CountDownLatch在多线程并发编程中充当一个计时器的功能,并且维护一个count的变量,并且其操作都是原子操作,该类主要通过countDown()和await()两个方法实现功能的,首先通过建立CountDownLatch对象,并且传入参数即为count初始值。如果一个线程调用了await()方法,那么这个线程便进入阻塞状态,并进入阻塞队列。如果一个线程调用了countDown()方法,则会使count-1;当count的值为0时,这时候阻塞队列中调转载 2021-05-16 16:37:15 · 178 阅读 · 0 评论 -
回表、覆盖索引、索引下推?
1.回表,简单说就是mysql内部需要经过两次查询 第一次先索引扫描,然后再通过主键去取索引中未能提供的数据。 create `table` tb_name(`id` int(11) not null auto_increment , `k` int(11) default...原创 2021-05-15 17:43:24 · 351 阅读 · 2 评论 -
面试官:说一说垃圾回收器?
CMS和G1详解首先1.CMS是年老代GC2.G1是包括年轻代和年老代的GC3.二者在某些时候都需要FullGC(serial old GC)的辅助1 . CMS收集器CMS收集器是一种以获取最短回收停顿时间为目标的收集器。这是因为CMS收集器工作时,GC工作线程与用户线程可以并发执行,以此来达到降低收集停顿时间的目的。CMS收集器仅作用于老年代的收集,是基于标记-清除算法的,它的运作过程分为4个步骤:1 . 初始标记(CMS initial mark)2 . 并发标记(CMS concu原创 2021-05-15 08:31:05 · 104 阅读 · 0 评论 -
死锁产生的4个必要条件?
死锁产生的4个必要条件?1 . 产生死锁的必要条件:(1)互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。(2)请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。(3)不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。(4)环路等待条件:在发生死锁时,必然存在一个进程–资源的环形链。解决死锁的基本方法2 . 预防死锁:(1)资源一次性分配:一次性分配所有资源,这样就不会再有请求了:(破坏请求条件)(2)只要原创 2021-05-11 11:16:08 · 34318 阅读 · 0 评论 -
MySQL中可重复读是怎么实现的?
MySQL中可重复读是怎么实现的?答:通过一致性视图(快照)和多版本并发控制(MVCC)实现的。MVCC是一种乐观锁的实现方式,而且是一种很常见的乐观锁实现方式。所谓多版本,就是一行记录在数据库中存储了多个版本,每个版本以事务ID作为版本号。InnoDB 里面每个事务有一个唯一的事务 ID,是在事务开始的时候向InnoDB的事务系统申请的,并且按照申请顺序严格递增的。假如一行记录被多个事务更新,那么,就会产生多个版本的记录。链接: link....原创 2021-05-10 10:01:52 · 221 阅读 · 0 评论 -
数据库查询优化(面试自用)
说说常见的数据库查询优化方法1 . 避免全表扫描2 . 避免索引失效3 . 避免查询不必要的字段4 . 避免频繁的创建和删除临时表5 . 使用Like '%*** ’ 会导致索引失效6 . 使用Or 来代替<> 和 !=7 . 使用exists 代替in8 . 不要对where 后的字段做函数处理9 . 尽量减少排序10 . 使用Union ALL 代替Union11 . 正确的索引建立12 . 表关联时取别名13 . 能用Between and 的就不要用In14原创 2021-05-08 19:30:51 · 236 阅读 · 0 评论 -
堆排序怎么实现的 怎么插入新元素 时间复杂度
堆排序怎么实现的 怎么插入新元素 时间复杂度原创 2021-04-29 15:12:51 · 6380 阅读 · 3 评论 -
volatile关键字及其作用
volatile关键字作用1:保证内存可见性可见性是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。也就是一个线程修改的结果,另一个线程马上就能看到。实现原理当对非volatile变量进行读写的时候,每个线程先从主内存拷贝变量到CPU缓存中,如果计算机有多个CPU,每个线程可能在不同的CPU上被处理,这意味着每个线程可以拷贝到不同的CPU cache中。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,保证了每次读写变量都从主内存中读,跳过CPU cache这一步。当转载 2021-04-28 16:38:23 · 946 阅读 · 0 评论 -
设计模式专题
1.单例模式所谓单例模式,就是保证类在内存中只有一个对象两种实现方式1.1 利用静态内部类实现单例模式(线程安全,调用效率高,可以延时加载)public class Singleton { //延迟加载,线程安全 private Singleton(){ //单例模式的特点,构造必须私有 } private static class T{ // 静态内部类在使用的时候才加载(且最先加载),且只加载一次 private static Singleton t =原创 2021-04-28 15:37:49 · 119 阅读 · 0 评论 -
MySQL存储引擎
一、存储引擎 MySQL常见的两种存储引擎:MyISAM与InnoDB 二、字符集及校对规则 字符集指的是一种从二进制编码到某类字符符号的映射。校对规则则是指某种字符集下的排序规则。Mysql中每一种字符集都会对应一系列的校对规则。 Mysql采用的是类似继承的方式指定字符集的默认值,每个数据库以及每张数据表都有自己的默认值,他们逐层继承。比如:某个库中所有表的默认字符集将是该数据库所指定...原创 2021-04-28 11:43:46 · 97 阅读 · 0 评论 -
锁升级
对象的结构Mark word中的信息上图中Mark word中存储的最重要的信息是——锁标志位原创 2021-04-27 17:02:08 · 107 阅读 · 0 评论 -
开启线程及怎么保证线程安全?
线程和进程的区别:进程是操作系统进行资源分配的最小单元。线程是操作系统进行任务分配的最小单元,线程隶属于进程。如何开启线程?1.继承Thread类,重写run方法。(得用start方法异步的调用run())2.实现Runnable接口,实现run方法。3.实现Callable接口,实现call方法。通过FutureTask创建一个线程,获取到线程执行的返回值。4.通过线程池来开启线程。怎么保证线程安全?加锁1.JVM提供的锁,也就是Synchronized关键字。2.JDK提供的各种锁原创 2021-03-24 16:30:40 · 306 阅读 · 0 评论 -
Linux文件权限 chmod
Linux文件权限chmodtouch djj.txt //创建文件chmod -w djj.txt //去掉 djj.txt文件的写权限chmod -r djj.txt //去掉 djj.txt文件的读权限chmod g=rwx djj.txt //给用户组设置rwx的权限b站讲解视频:https://www.bilibili.com/video/BV1Ut41157CP?from=search&seid=2682978817959322021...原创 2021-04-27 15:34:20 · 105 阅读 · 0 评论