- 博客(78)
- 收藏
- 关注
原创 错题整理4
牛牛正在寄快递,他了解到快递在 1kg 以内的按起步价 20 元计算,超出部分按每 kg 1元计算,不足 1kg 部分按 1kg计算。如果加急的话要额外付五元,请问牛牛总共要支付多少快递费。第一行输入一个单精度浮点数 a 和一个字符 b ,a 表示牛牛要寄的快递的重量,b表示牛牛是否选择加急,'y' 表示加急 ,'n' 表示不加急。输出牛牛总共要支付的快递费用。数组中两个字符串的最小距离。
2024-09-24 19:20:03 260
原创 二分查找(new)
如果目标值存在返回下标,否则返回。个元素有序的(升序)整型数组。之间的元素,都是⼤于 等于。之间的元素,都是⼩于等于。之间的元素,都是⼩于。之间的元素,都是⼤于。
2024-09-18 23:29:33 200
原创 HashMap底层怎么实现的 ?线程安全吗?
HashMap底层是基于数组和链表实现的。简单来说,HashMap将key通过hash算法映射到数组中,然后在对应的链表中查找value。当多个key的hash值相同时,会在同一个数组位置上使用链表来存储这些key-value。但是,当链表长度太长时,会影响HashMap的性能,因此在JDK1.8中,当链表长度超过阈值时,会将链表转换为红黑树,以提高查找效率。HashMap不是线程安全的,因为多个线程同时访问HashMap时可能会导致数据不一致的问题。
2024-09-12 00:08:10 174
原创 面试准备-8
StackOverflowError(线程请求栈深度超过虚拟机所允许的最大深度)OutOfMemoryError(堆内存不够用)PermGen space(方法区内存不够用)。
2024-09-10 18:02:29 101
原创 面试准备-7
这是因为JVM在不同的操作系统上都提供了相应的实现,可以通过安装Java运行时环境(JRE)来在不同的操作系统上运行Java程序。JVM(Java虚拟机)是一种在计算机上运行Java字节码(安装了JAVA编译器的机器都可以生成)的虚拟机。总而言之,JVM是Java程序的运行环境,负责解释执行字节码、管理内存和提供一些额外的功能,使得Java程序可以在不同的操作系统上运行。另外,JVM还支持即时编译(JIT)技术,可以将热点代码(频繁执行的代码)编译成本地机器码,提高程序的执行效率。
2024-09-08 23:06:15 332
原创 面试准备-6
NIO底层是用Selector、Channel和ByteBuffer来实现的。主线程在循环使用select方法进行阻塞等待,事件发生的时候,循环就会往下走,将对应的事件交给对应的事件处理器进行处理。他可以多线程的,可以有多个accept()线程和多个worker线程。:是Java NIO中的一个核心概念,用于数据的读写操作。它是双向的,但具体使用时可能只关注读或写操作。常见的Channel有(用于TCP连接)、(用于监听TCP连接)、(用于UDP连接)和(用于文件操作)等。
2024-09-08 23:03:24 318
原创 面试准备-5
例如:当两个线程同时操作一个内存,例如一个读一个写,但是当“写线程”进行的修改的时候,“读线程”可能读到修改前的数据,也可能读到修改后的数据,这是不确定的。是编译器和处理器为了高效对程序进行优化的手段,它只能保证程序执行的结果时正确的,但是无法保证程序的操作顺序与代码顺序一致。在多线程共享一个数据块下,一个线程对数据进行修改操作时,其它线程是无法感知的。在多核CPU下,每个核都有自己的独占缓存进行数据存取,只有在所有处理结束后,才会将数据同步到主存中。1. volatile能保证变量在多线程之间的可见性。
2024-09-06 17:55:55 910
原创 面试准备-4
6. DispatcherServlet对View进行渲染视图(即将Model填充至视图组件中),并将完整的视图响应到客户端。4. Controller处理请求,并返回ModelAndView,其中的View只是视图名,并不指向具体的视图组件。5. DispatcherServlet通过ViewReslover(视图解析器)确定负责显示数据的具体View。2. DispatcherServlet收到请求后,调用处理器映射器HandlerMapping。Spring MVC的处理流程?
2024-09-05 22:55:40 366
原创 面试准备-1
两个线程使用同一个全局变量会有不一致的问题,比如a线程把全局变量加1,b线程读的时候,如果还是从缓存中读的,那么会没有发现这个更新,就会产生不一致的问题。
2024-09-02 11:16:00 128
原创 SpringBoot自动配置和执行过程
1. 加载容器(加载配置文件)2. 根据配置完成Bean的初始化(扫描配置范围内的五大类注解) 3. 将被五大类注解修饰的类注册到Spring容器中 (将对象交给Spring IoC容器管理)4.注入Bean对象(@Autowired、@Resource)Spring Boot的自动配置是Spring Boot框架提供的一项特性,它在Spring容器启动后会自动加载一些配置类和Bean对象到IoC容器中,无需手动声明,从而简化了开发流程,减少了繁琐的配置操作。具体来说,Spri
2024-08-05 20:33:05 871
原创 Bean的作用域和生命周期
Bean的作用域我们先来看下面这段代码首先是一个Dog类 (此处使用lombok来完成setter、getter、toString方法)@Setter@Getterpublic class Dog { private String name;}然后在DogBeanConfig类里面写一个返回Dog的方法,并将这个方法的返回对象存入Spring容器@Componentpublic class DogBeanConfig { @Bean public
2024-08-03 14:51:18 893
原创 【Spring Boot】之统一功能处理
Component@Slf4j@Overridelog.info("登录拦截器校验...");//401 表示未认证登录// log.info("目标方法执行后");
2024-07-21 13:35:20 710 1
原创 动态SQL
动态SQL动态SQL动态 SQL 是Mybatis的强⼤特性之⼀,能够完成不同条件下不同的 sql 拼接.标签在注册⽤⼾的时候,可能会有这样⼀个问题,如下图所⽰:注册分为两种字段:必填字段和⾮必填字段,那如果在添加⽤⼾的时候有不确定的字段传⼊,程序应该如何实现呢?这个时候就需要使⽤动态标签 来判断了,⽐如添加的时候性别 gender 为⾮必填字段,具体实现如下:注意 test 中的 gender,是传⼊对象中的属性,不是数据库字段。
2024-07-20 19:22:56 677
原创 XMl基本操作
使⽤Mybatis的注解⽅式,主要是来完成⼀些简单的增删改查功能. 如果需要实现复杂的SQL功能,建议使⽤XML来配置映射语句,也就是将SQL语句写在XML配置⽂件中.之前,我们学习了,用注解的方式来实现MyBatis接下来我们学习XML的⽅式MyBatis XML的⽅式需要以下两步配置数据库连接字符串和MyBatis写持久层代码MyBatis XML配置⽂件配置连接字符串和MyBatis此步骤需要进⾏两项设置,数据库连接字符串设置和 MyBatis 的 XML ⽂件配置。写持久层代码。
2024-07-20 18:35:22 734
原创 博客系统测试报告
用户名以及密码已经在后端写入了数据库是已经存在的,登录成功后就会跳转到列表页面;执行用户注销操作后,也会回到登录页面。(2)测试用例展示a)界面b)输入正确的账号和密码(以用户"zhangsan"为例):预期结果:跳转到博客列表页。实际结果如下:之后,再补吧。
2024-06-07 09:49:38 315
原创 垃圾回收整理
垃圾是指在 运行程序中没有任何指针指向的对象, 这个对象就是需要被回收的垃圾。如果不及时对内存中的垃圾进行清理,那么这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致。
2024-06-04 23:34:08 659
原创 总结Linux 的常用命令
ls [选项] [目录或文件:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。-a列出目录下的所有文件,包括以开头的隐含文件。-d将目录象文件一样显示,而不是显示其下的文件。如:ls –d指定目录-k以k字节的形式表示文件的大小。ls –alk指定文件-l列出文件的详细信息。-r对目录反向排序。-t以时间排序。-R列出所有子目录下的文件。递归: pwd:显示用户当前所在的目录pwdLinux。
2024-06-03 00:02:26 1053
原创 Cookie和Session的区别、工作流程是什么?
就需要在服务器这边记录每个用户令牌以及用户的信息的对应关系.就需要医院这边通过系统记录每个就诊卡和患者信息之间的关联关系。第二次访问的时候服务器就能知道该请求是否是已经登陆过了。这个唯一性字符串 称为 "sessionId".服务器需要清除的区分清楚每个请求是从属于哪个用户。我们很多时候是需要知道请求之间的关联关系的。此时患者的身份和就诊卡的关联就销毁。协议的客户端和服务器之间的这次通信。就可以理解成是同一个东西的不同叫法。服务器同一时刻收到的请求是很多的。信息中获取到对应的用户信息。
2024-05-27 13:55:11 542
原创 总结 HTTPS 的加密流程
http是为了解决http存在的问题而在http基础上加入了SSL/TSL,在HTTP/2中TCP三次握手后会进入SSL/TSL握手,当SSL/TSL建立链接后,才会进行报文的传输。
2024-05-21 22:58:26 860
原创 总结 HTTP 协议的基本格式
HTTP 协议目前有三个大版本:HTTP / 1 和 HTTP / 2 都是基于TCP 传输控制协议传输数据。最新版本的 HTTP / 3 是基于 UDP 协议的。当前互联网上传输数据大部分使用的版本是 HTTP / 1.1HTTP 协议具体是什么? ——应用层协议又是什么? 应用层协议可以理解为是组织数据的一种格式,需要发送方和接收方约定相应的格式.如何看到 HTTP 的报文格式呢?我们可以借助一些 “抓包工具” 来获取设备交互的数据,可以抓取 http 协议的数据包。如果只是针对 HTTP/HTTPS
2024-05-20 18:46:30 1253 1
原创 DNS解析
浏览器缓存——》系统hosts文件——》本地DNS解析器缓存——》本地域名服务器(本地配置区域资源、本地域名服务器缓存)——》根域名服务器——》主域名服务器——》下一级域名域名服务器 客户端——》本地域名服务器(递归查询) 本地域名服务器—》DNS服务器的交互查询是迭代查询。递归查询: 如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户端的身份,向其他根域名服务器继续发出查询请求报文,即替主机继续查询,而不是让主机自己进行下一步查询。
2024-05-17 12:10:21 980
原创 数据链路层
源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的;帧协议类型字段有三种值,分别对应IPARPRARP;帧末尾是CRC校验码。MTU相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路对应的物理层,产生的限制。以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
2024-05-17 11:45:29 346
原创 IP协议详解
IP 数据包需要进行分包的主要原因是网络传输中的限制。网络传输有时会遇到带宽不足或路由器 MTU 尺寸的限制等情况,导致数据包过大,不能被成功地传输。在这种情况下,将数据包分为多个更小的片段来传输就是一种有效的解决办法。 通过将数据包分割成多个片段,IP 数据包分包可以解决这些问题。分割后的每个片段可以更容易地在网络中传输,因为它们更小。如果需要,它们可以同时通过不同的传输路径进行发送,从而提高数据的传输速度和可靠性。因此,IP 数据包分包是一种优化网络传输的有效方式。分包过程会保留原始IP数据包的一部分
2024-05-15 18:14:39 1111
原创 Iterable与Iterator
terator是一个接口,它是集合的迭代器。集合可以通过Iterator去遍历集合中的元素。:为每个剩余元素执行给定的操作,直到所有的元素都已经被处理或行动将抛出一个异常:如果迭代器中还有元素,则返回true。:返回迭代器中的下一个元素:删除迭代器新返回的元素。注意:(1)Iterator只能单向移动。;如果在迭代过程中以任何其它的方式修改了基本集合将会产生未知的行为。而且每调用一次next()方法,remove()方法只能被调用一次,如果违反这个规则将抛出一个异常。
2024-05-15 11:59:21 658
原创 不同路径| 和 不同路径||
机器人试图达到网格的右下角(在下图中标记为 “Finish” )。⼀个机器⼈位于⼀个 m x n ⽹格的左上⻆ (起始点在下图中标记为 “Start” )。根据「状态转移⽅程」的推导来看,填表的顺序就是「从上往下」填每⼀⾏,在填写每⼀⾏的时候。网格的左上角 (起始点在下图中标记为 “Start” )。在本题中,「添加⼀⾏」,并且「添加⼀列」后,只需将。位置的,也就是说,此时的⽅法数应该是 0。的位置)向下⾛⼀步,转移到。的位置)向右⾛⼀步,转移到。的位置)向下⾛⼀步,转移到。的位置)向右⾛⼀步,转移到。
2024-05-12 17:42:26 809
原创 柠檬水找零
题⽬描述在柠檬⽔摊上,每⼀杯柠檬⽔的售价为5美元。顾客排队购买你的产品,(按账单bills⽀付的顺序)⼀次购买⼀杯。每位顾客只买⼀杯柠檬⽔,然后向你付5美元、10美元或20美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你⽀付5美元。注意,⼀开始你⼿头没有任何零钱。给你⼀个整数数组bills,其中bills[i]是第i位顾客付的账。如果你能给每位顾客正确找零,返回true,否则返回false。
2024-05-12 16:19:29 462
原创 总结 UDP 的报文结构和注意事项
UDP 传输的过程类似于寄信。,不需要建立连接;没有任何安全机制,发送端发送数据报以后,如果因为网络故障该段无法发到对方, UDP 协议层也不会给应用层返回任何错误信息,应用层交给 UDP 多长的报文, UDP 原样发送,既不会拆分,也不会合并;用 UDP 传输 100 个字节的数据:如果发送端一次发送100个字节,那么接收端也必须一次接收100个字节;而不能循环接收10次,每次接收10个字节。大小不能变UDP只有接收缓冲区,没有发送缓冲区:UDP没有真正意义上的。
2024-05-11 14:39:57 866
原创 计算两个字符串间的最大的相同位数
链接--题目牛牛手里有一个字符串A,羊羊的手里有一个字符串B,B的长度大于等于A,所以牛牛想把A串变得和B串一样长,这样羊羊就愿意和牛牛一起玩了。而且A的长度增加到和B串一样长的时候,对应的每一位相等的越多,羊羊就越喜欢。比如"abc"和"abd"对应相等的位数为2,为前两位。牛牛可以在A的开头或者结尾添加任意字符,使得长度和B一样。现在问牛牛对A串添加完字符之后,不相等的位数最少有多少位?第一行为字符串A,第二行为字符串B,A的场地小于等于B的长度,B的长度小于等于50.字符均为小写字母。
2024-05-10 00:08:46 195
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人