- 博客(80)
- 收藏
- 关注
原创 计算机网络day5
20220311一 . 运输层复用/分用发送方运输层的udp协议会复用应用层的报文段,添加udp首部,只以源端口及目的端口标识该报文段接收方运输层的udp协议会分用网络层的ip数据报,根据首部中的目的端口将数据报交给应用层指定进程。发送方运输层的tcp协议会复用应用层的报文段,添加tcp首部,以源端口、目的端口、源ip地址、目的ip地址标记该报文段接收方运输层的tcp协议会分用网络层的ip数据报,根据首部中的四个值,交给指定应用进程建立的一个套接字(接收方一个应用进程可以和不同发送方都建立一个套
2022-03-22 21:45:18
736
原创 计算机网络day4
一。网络层概述网络层主要是为了连接各个网络,进而实现数据包在各网络之间的传输。网络内部的通信,主要是由交换机实现,交换机只到数据链路层,主要使用mac地址网络间的通信,主要由路由器实现,路由器实现了网络层。路由器与路由器之间(不同网络之间),记录彼此的ip地址(路由表),然后使用arp协议获取目标路由器的mac地址,最终完成网络间数据传输。...
2022-03-10 23:13:31
267
原创 20220302问题记录
1.@Import注解,如果指定了多个class,会按指定的顺序加载,要注意2.java中如果使用ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();或者xxx.class.getResourceAsStream首先需要注意不能像file一样,使用尚不存在的文件路径其次是,如果想读取计算机文件系统中的资源,需要在路径前加file:3.maven项目,如果想将源代码与引用
2022-03-03 21:41:57
231
原创 计算机网络day3
20220222一。数据链路层简述该层有三大特性:封装成帧、差错检测、可靠传输封装成帧通过封装网络层的ip数据报,加上帧头和帧尾。帧头和帧尾可以起到帧定界的作用,使接收方能够从信号中提取帧。如果上层(网络层)提供的数据与帧定界符重复,则采用字节填充(转义)或者0比特填充(每五个连续的1后面填一个0)来使帧定界符唯一差错检测通过收到的数据的帧尾中纠错码对数据进行验算。如果是有线链路传输,误码率比较低,出错了一般就直接丢弃帧,不要求重发。如果是无线链路传输,那么出错了还会要求重发。主要是为了
2022-03-03 21:41:33
908
原创 计算机网络day2
2022.2.20,这一周还是没咋学习,第一次连续加了三天班,每天九点五十到家只想躺床上炉石下棋了,下周开始尝试抽点时间出来,继续加油一。简单分层结构目前主要的结构为tcp/ip体系结构。从上到下依次为:应用层、传输层、网络层、接口层。应用层主要使用http、DNS、smtp协议传输层主要使用tcp、udp协议网络层主要使用ip协议接口层无协议,主要是提供接口与其他网络互联总结网络层的ip协议可使不同的网络接口互联,提供互联服务给tcp/udp协议。tcp为应用层协议提供可靠传输服务
2022-02-22 00:55:26
1421
原创 20200221问题记录
mysql的表如果使用了保留字,mybatis-plus的实体类注解可以写成@TableField("`字段名`")用反引号括起来mybatis-plus实体类,如果有字段需要用typehandler来进行存取转换,除了在@TableField注解指定typehandler类以外,还需要在类的@TableName注解中添加autoResultMap = true,否则可能只有插入时会生效mybatis-plus的QueryWrapper,eq匹配可以直接链式写,最后会生成连续的andm..
2022-02-21 21:42:16
343
原创 计算机网络day1
2022.2.10一.前言自从去年四月份入职以来,用在学习上的时间越变越少,距上篇学习博客已有五月有余。一直以来都感觉被工作上的事情影响了情绪,也可以说不太适应工作。直到一年过去,现在也正好有时间学习,也感觉自己的心态稳定了下来。就从计网开始吧,先过一遍以前没学好的基础.接下来的博客均为b站的计算机网络微课堂的学习笔记,讲的是非常好。二.三种交换方式电路交换多个电话都连接到一台中心交换机上,通过该中心交换机交换数据。不同的中心交换机互联,覆盖了全世界的电信网。建立通信连接,一直占用直到通话结束
2022-02-10 22:03:41
635
原创 oracle学习day1
一。实例一般来说,oracl database其实是由数据库实例和数据库组成。数据库指的就是日志文件、控制文件、数据文件等,而数据库实例则是数据库启动时的一组进程和内存结构。一般情况下一个oracle服务器只会有一个数据库实例...
2021-07-04 21:59:09
186
原创 oracle常见函数1
一。trunctrunc函数用于截取数字截取日期trunc(日期数据,截取格式)trunc(sysdate,'yyyy');//返回当前年的第一天trunc(sysdate, 'mm');//返回当前月的第一天trunc(sysdate, 'dd');//返回当前时间的年月日trunc(sysdate, 'd');//返回当前星期的第一天trunc(sysdate, 'hh');//返回当前小时截取数字trunc(数字,截取位数),截取位数默认为0,截取时不进行四舍五入 -
2021-06-20 15:29:24
310
原创 JUCday10
一。CAS1.CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在 CAS 指令之前返回该位置的值。CAS 有效地说明了“我认为位置 V 应该包含值 A;如果包含该值,则将 B 放到这个位置;否则,不要更改该位置,只告诉我这个位置现在的值即可。” Java并发包(java.util.concurrent)中大量使用了CAS操作,涉及到并发的地方都调用了sun.m
2021-06-07 21:18:10
85
原创 JUCday09
一。Future接口Future模式始于JDK5,比较常见的用法就是接受线程池的submit()方法的结果: Future<String> future = executor.submit(xxx);xxx可以说就是Callable接口或者Runnable接口的实现类,提交xxx后,xxx会被包装成FutureTask类型,然后推到线程池执行run(),我们通过Future类型的对象拿到这个正在执行的异步任务,FutureTask其实也是Future接口的实现类之一,Future接口提供
2021-05-23 21:06:44
133
原创 JUCday08
ForkJoin当我们想执行一个数据量较大的任务时,传统的串行执行效率会极低。为了解决这个问题,jdk7出现了 forkjoin框架,基于分治算法实现,并采用工作偷窃算法加快任务的执行速度,充分利用CPU资源。框架组件1.ForkJoinTask–任务,有两种实现类:RecursiveTask–会返回任务的最终结果,RecursiveAction–不会返回任务的结果2.ForkJoinPool,任务执行的线程池,主要维护了一个工作队列数组WorkQueue[ ]3.ForkJoinWorkerTh
2021-05-22 20:52:34
108
原创 JUCday07
2021-5-4一、cpu密集型和IO密集型CPU密集型也是指计算密集型,大部分时间用来做计算逻辑判断等CPU动作的程序称为CPU密集型任务。该类型的任务需要进行大量的计算,主要消耗CPU资源。这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。IO密集型任务指任务需要执行大量的IO操作,涉及到网络、磁盘IO操作,对CPU消耗较少。配置1.如果是io密集型的任务
2021-05-04 21:50:38
109
原创 JUCday06
2021-5-3一。blockingqueue.二。synchronousqueue1.SynchronousQueue是一个内部只能包含一个元素的队列。插入元素到队列的线程被阻塞,直到另一个线程从队列中获取了队列中存储的元素。同样,如果线程尝试获取元素并且当前不存在任何元素,则该线程将被阻塞,直到线程将元素插入队列。2.newCachedThreadPool内部就使用了该队列,一个任务提交到该线程池后,如果没有空闲线程,就会立即创建新线程执行任务。...
2021-05-03 22:20:21
106
原创 JUCday05
2021-4-28。一。Semaphore。该类可以实现对资源的控制1.创建该类对象时,需要指定计数器的初始值。在该类中,计数器的初始值表示同一时间内只能有这个数量的线程操作某种资源2.内部基于aqs实现,通过cas来获取和操作aqs的同步状态–计数器的值2.acquire(),调用该方法,计数器减一,使用cas来更新计数器的值。如果调用后发现计数器减一的值<0,那么当前线程自旋尝试获取同步状态直到状态值>03.release(),调用该方法,计数器加1,使用cas来更新计数器的值。
2021-04-29 20:59:55
69
原创 JUCday04
2021-4-27。一。CountDownLatch1.使用该类可以让一或多个线程等待一定数量的其他线程执行完毕再继续执行。2.创建该类对象时,可以指定计数器的初始值。3.await(),一个线程调用该方法后,会陷入阻塞等待countdownlatch对象的计数器归零后,该线程再继续执行4.countDown(),调用该方法会让一个countdownlatch对象的计数器减一5.getCount(),调用该方法可以获得一个countdownlatch对象的计数器的当前值6.底层基于AQS实现,
2021-04-27 22:04:57
91
原创 Vue-day03
2021-4-25。一。立即执行函数代码如下:<script> (function (形参) { })(实参)</script>1.函数会被立即执行2.在函数function(){}内部定义的变量不会与外界冲突,但外界无法访问匿名函数内部的变量,可用于闭包–其实就是立即执行的闭包二。闭包在没有引入let关键字时,由于没有块级作用域,可能会造成变量污染,也即外部变量可能会覆盖内部变量。为了使变量拥有自己的作用域,就出现了闭包技术,
2021-04-25 19:10:31
209
原创 Vue-day02
2021-4-23.一。v-bind简单使用使用v-bind可以为标签的属性动态绑定vue实例中属性的值,比如绑定从服务器请求过来的值代码如下:<div id="app1"> <a v-bind:href="testurl">bind</a></div><script> const app=new Vue({ el:'#app1', data:{ testurl:
2021-04-23 18:57:54
107
原创 Vue-day01
2021-4-22.一。vue实例最基础使用vue的方式就是new一个Vue({…}),并指定这个vue实例将会管理哪个html元素,代码如下:<div id="app">{{message}},{{name}}</div><script src="../js/vue.js"></script><script> //let 定义变量 const定义常量 const app=new Vue({ el:'#
2021-04-22 17:24:51
70
原创 JUCday03
2021-4-17一。8锁1.synchronized如果修饰普通方法,锁的是方法的调用者;如果修饰静态方法,锁的是方法方法所在类的class实例2.普通方法不会被synchronized方法影响,独立执行。二。线程安全的集合在多线程环境下,arraylist、set都是线程不安全的,解决办法:1.使用Collections工具类的Synchronizedxxx方法,可以把线程不安全的集合转换为线程安全的集合返回2.使用原生安全的集合,如vector、hashtable3.使用juc包的Co
2021-04-18 20:44:21
76
原创 JUCday02
2021-4-15。一。生产者消费者使用while在两个以上线程时,如果使用if判断是否需要wait,其他线程使用了notifyAll(),那么有一些线程可能在被唤醒后,已经不满足if条件了,此时就会出问题。但是如果使用while来判断是否需要wait,即使其他线程使用了notifyAll(),线程在被唤醒后,在执行业务代码之前,还会再检查一次判断条件,如果不满足重新wait()。二。Condition要完整的描述出Condition的应用还是要学一遍AQS,还只是粗略的看了一下书,这里就简单记录
2021-04-15 18:20:25
74
原创 JUCday01
2021-4-14。一.Lock接口三个实现类可重入锁ReentrantLock类、可重入写锁ReentrantLock.writeLock类、可重入读锁ReentrantLock.readLock类公平锁与非公平锁公平锁意味着多个线程时,会按尝试获取锁的线程的顺序让线程获取锁。意味着一个只需要执行3s的线程需要等前面一个需要执行3h的线程执行完毕。非公平锁意味着多个线程尝试获取锁时,由cpu决定给哪个线程获取锁,意味着执行耗时少的线程可以先执行,提高效率。ReentrantLock类与Syn
2021-04-14 19:04:50
118
原创 计算机组成原理-day8
今天是2021-3-11。一。输入输出接口内部结构数据缓冲寄存器DBR:缓冲数据,匹配主机与外设之间的速度差异设备地址译码器:识别主机是否请求与自己通讯设备状态字寄存器和主机命令寄存逻辑:反馈设备状态,识别主机命令数据格式转换线路:进行串/并传送之间的转换IO设备的编址统一编址,独立编址IO数据传输控制方式程序查询控制方式:当前程序如果需要启动某个IO设备工作,那么CPU就会停止当前程序的运行,不断地查询这个IO设备中的设备状态字寄存器,如果查得IO设备未准备好,就不断查询,如果已
2021-03-11 11:00:57
201
原创 计算机组成原理-day7
今天是2021-3-10。一。总线分类按数量并行传输总线、串行传输总线按传输方向单向传输总线、双向传输总线按连接部件不同内部总线、系统总线、IO总线按传输信号的类型地址总线、数据总线、控制总线二。信号线类型专用信号线–专用通路只能传输一种信号共享信号线–共享通路一组传输线具有多种用途,分时传送不同类型的信息三。总线事务总线上一对设备的一次完整的信息交换过程总线传输周期总线上完成一次总线事务需要的时间,包含四部分;申请、寻址、传输、结束四。总线性能评价标准1.总线宽度、
2021-03-10 22:29:50
197
原创 面试问题-3
今天是2021-3-1。一。死锁什么情况下会发生死锁?如何避免?在多线程环境下,如果有至少两个线程,都持有对方需要的同步对象,那么就会导致对方因为获取不到自己的同步对象而无法操作共享数据,只能阻塞等待需要的同步对象被释放,这就是死锁。错误示范:Synchronized(A){... Synchronized(B){ ... }}解决建议:避免一个线程同时持有多个同步对象如果需要持有多个同步对象,使用lock.tryLock(timeout)定时锁来替代synchro
2021-03-10 21:03:24
127
原创 计算机组成原理-day6
今天是2021-3-9。一。中央处理器的功能与组织组成由运算器和控制器组成基本功能按事先规定的顺序执行指令产生指令执行过程所需的控制信号对控制信号进行定时,确保操作控制信号按时有效对数据进行算数、逻辑运算处理异常及中断服务请求基本结构–常用寄存器程序计数器PC:保存指令地址,可以在顺序寻址或跳跃寻址时改变存储的指令地址指令寄存器IR:保存指令,指令从主存中取出后就保存在该寄存器中。在指令执行的过程中,该寄存器保存的指令内容不能变化,以保证正常执行地址寄存器AR:保存CPU访问
2021-03-10 09:30:46
254
原创 计算机组成原理-day5
今天是2021-3-8。一。指令指令格式操作码+地址码。操作码包含了指令的操作性质和功能,地址码包含操作数的地址三地址指令组成:指令操作+地址1+地址2+地址3该格式的指令一般是取地址1和地址2的数,进行指定操作后保存到地址3中二地址指令组成:指令操作+地址1+地址2该格式的指令一般是取地址1和地址2的数,进行指定操作后保存到地址1中一地址指令组成:指令操作+地址1该格式的指令一般是配合累加寄存器操作,另一个操作数会去累加寄存器中取,操作完成后再送回累加寄存器中零地址指令组成:
2021-03-08 22:06:08
227
原创 计算机组成原理-day4
今天是2021-3-6。一。存储器分类存储介质半导体:易失磁性:非易失光盘:非易失存储方式–存储时间与物理地址的关系随机:无关(随机存储器,只读存储器)串行:有关(顺序存储器,直接存储器)存储功能和速度寄存器,主存,高速缓存,辅存二。存储系统的层次结构三级存储架构高速缓存,主存,辅存。主存存储当前正在使用的程序和数据,高速缓存存储经常使用的程序和数据,辅存存储后备程序和数据。高速缓存与主存组合为cache存储系统,解决了主存的处理速度远低于cpu的问题。主存与辅存组合为虚拟存
2021-03-07 23:17:35
992
原创 计算机组成原理-day3
今天是2021-3-5。一。定点数的加减机器数的选择补码溢出受字长限制,运算的结果会超出数据类型表示的最大范围只会发生在同号数的加运算中溢出检测‘检测操作数和运算结果的符号位是否一致运算时最高位和符号位产生的进位位是否同步。最高位指符号位右边的第一位采用双符号位时,运算结果的两个符号位相同则不溢出,不相同则溢出,此时最高符号位代表运算结果的真正符号并行进位相对于串行进位来说,并行进位的高位结果并不需要依赖低位结果得出,只与参与运算的加数与被加数有关,各进位的运算可以并发进行。
2021-03-05 22:07:57
252
1
原创 计算机组成原理-day2
今天是2021-3-2。一。原码、反码、补码对于二进制数来说,基本规则如下:加运算:0+0=0,0+1=1,1+0=1,1+1=10,(逢2进1);减运算:1-1=0,1-0=1,0-0=0,0-1=1,(向高位借1当2);原码一个数字,包括它的符号,都用二进制来表示就是原码,正数符号位为0,负数符号位为1。比如8的原码就是0000 0100。加法规则:先判断符号位,若相同,则绝对值相加,结果符号位不变;若不同,则做减法,绝对值大的数减去绝对值小的数,结果符号位与绝对值大的数相同减法规则:减
2021-03-02 21:09:43
271
原创 计算机组成原理-day1
今天是2021-3-1一。冯 诺伊曼体系结构基本原理1.存储程序:将程序通过输入设备存储在主存2.控制器读取主存发出的指令流,产生对应的控制信号控制相关部件二。冯 诺伊曼体系结构主存保存程序和数据,按地址访问运算器进行算数运算和逻辑运算控制器解析指令并产生系列控制信号,控制相关部件。详细来说,就是在时序电路的控制下,依据指令寄存器和状态触发器,以正确顺序发出正确状态的指令输入/输出设备实现主存与外部设备之间的数据交换系统总线各功能部件的连接线;地址线,数据线,控制线三。评价计算
2021-03-01 21:43:50
116
原创 面试问题-2
今天是2021-2-28一。new一个对象的步骤想要new一个对象,首先要看这个对象对应的类是否以及被加载到jvm内存中。如果没有,那么先加载对应的class文件到jvm中再创建对象。 Person p=new Person(...);假设我们是第一次使用person类,那么首先加载person的class文件到jvm:1.类加载器接到加载person类的命令,经过双亲委派机制加载person类的class文件到jvm运行时数据区2.将class文件放到class文件常量池中,并生成一个全
2021-02-28 22:27:09
148
1
原创 策略模式
今天是2021-2-25。一。策略模式简介策略模式(Strategy Pattern)是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。策略模式定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。简单来说,对于同一个问题的不同解决方式类,提供一个统一的接口供外部使用。在策略模式中,通常有一个通用接口Strategy,我们定义的不同算法都会实现这个接口。接下来,对
2021-02-25 21:17:41
286
原创 面试问题-1
今天是2021-2-24.一。arraylist1.arraylist最大容量:Integer.MAX_VALUE二,hashmap1.构造hashmap时,我们指定的初始容量A会被扩大到比它大的最近的那个2的n次幂的值B,以方便在扩容的时候,计算数据在 newTable 中的位置。2.扩容阈值会由B0.75得出3.如果我们想存数据量大的数据,比如说1000,最好是看比1000大的那个2的n次幂的值0.75是否比它小–1024*0.75=768<1000,这样想存1000条还要触发一次扩容
2021-02-24 21:15:59
109
原创 毕设所学记录第四天
今天是2021-2-17一。jackson基本用法: ObjectMapper objectMapper = new ObjectMapper(); //对象转json字符串 Cookie cookie=new Cookie("user",objectMapper.writeValueAsString(user)); //读取对象,这里是读取的cookie中的值 objectMapper.readValue(cookie.getValue(), User.class)
2021-02-17 22:06:00
81
原创 毕设所学记录第三天
今天是2021-2-10一。bootstrapboostrap表格的refreshOptions方法可以重新定义表格初始化需要的参数:$("#user_information").bootstrapTable('refreshOptions',{ url: "/user/research", method: 'get', //请求方式(*) cache: false,
2021-02-10 16:06:55
168
原创 毕设所学记录第二天
今天是2021-2-8。一。css1.text_indent,设置段落首行缩进2.background: transparent,设置当前元素的背景为透明,即可以看到被其覆盖的元素3.p标签默认换行,如果你的段落是由中文字符或者英文单词组成的,这基本没什么问题。但是如果你的段落是由不间断的英文字母(浏览器会认为是一个单词)组成,则默认情况下不会换行,将会把段落撑开,效果会很难看。3.1word-wrap:break-word; 意思是将单词的回卷特性设置为截断单词。...
2021-02-08 23:03:54
93
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人