- 博客(22)
- 收藏
- 关注
原创 java中有哪些集合?有什么区别?
2. Set集合:Set是一种不允许重复元素的集合,常见的Set集合有HashSet、LinkedHashSet和TreeSet。 3. Map集合:Map是一种键值对的集合,常见的Map集合有HashMap、LinkedHashMap和TreeMap。TreeMap是基于红黑树实现的,键值对会按照键的自然顺序或者指定的比较器进行排序。 1. List集合:List是一种有序的集合,可以存储重复的元素,常见的List集合有ArrayList、LinkedList和Vector。
2024-08-22 16:53:09
74
原创 HashMap
3. JDK1.8之后使用的是数组+链表+红黑树的结构 jdk1.8在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为8) 时,将链表转化为红黑树,以减少搜索时间。 2. JDK1.7及以前的版本使用的是数组+链表的结构 1.7使用的是拉链法:将链表和数组相结合。 4. 死循环问题在数组进行扩容的时候,因为1.7 链表是头插法,在进行数据迁移的过程中,有可能导致死循环在JDK1.8中将扩容算法做了调整,不再将元素加入链表头,而是使用尾插法,解决死循环问题。
2024-08-22 16:50:02
91
原创 线程池:有几种、哪些参数、状态及执行过程
5. 关闭线程池:调用shutdown()或shutdownNow()方法关闭线程池,线程池会拒绝接受新的任务并尝试停止已有的任务执行,同时会等待所有线程执行完毕并释放资源 shutdown()是会等待所有已经提交的任务执行完成,再关闭。 4. 执行任务:线程池中的线程会按照FIFO(先进先出)的顺序从任务队列中取出任务执行,当一个线程执行完任务后,它会继续取出下一个任务执行,直到线程池中的所有线程都处于空闲状态或线程池被关闭。 1. 创建线程池:创建一个线程池对象,指定线程池中包含的线程数。
2024-08-22 16:48:55
85
原创 stream的常用API
3. flatMap:将集合中的每个元素映射为多个元素,并将结果合并成一个流。 12. anyMatch:判断集合中是否存在满足条件的元素。 15. findFirst:查找集合中第一个符合条件的元素。 16. findAny:查找集合中任意一个符合条件的元素。 10. forEach:对集合中的每个元素执行一个操作。 8. reduce:将集合中的元素逐个聚合成一个结果。 9. collect:将集合中的元素收集到一个集合中。 2. map:将集合中的每个元素映射为另一个元素。
2024-08-20 16:29:31
292
原创 为什么使用单例模式
4. 保证线程安全:在多线程环境下,如果多个线程同时访问一个对象,并且该对象没有进行任何线程安全的处理,那么可能会出现数据竞争和其他线程安全问题。使用单例模式可以保证该类只有一个实例,并且提供了一个全局访问点,从而避免了线程安全问题。使用单例模式可以将类的实例化过程封装在一个单独的类中,并提供一个全局访问点,从而简化了代码结构。 3. 维护全局状态:在某些情况下,需要在应用程序中维护一个全局状态,例如日志对象或配置文件对象。使用单例模式可以保证该类只有一个实例,从而保证了全局状态的一致性。
2024-08-20 16:28:17
192
原创 继承?封装?多态?接口和抽象类的区别?
1. 封装是指将对象的状态和行为包装在一起,对外部隐藏对象的实现细节,只暴露出一些公共的接口,通过这些接口访问对象的属性和方法。封装的好处是增强了对象的安全性和可靠性,同时也方便了对象的使用和维护。子类可以通过继承获得父类的属性和方法,并且还可以在此基础上增加自己的属性和方法。 6. 接口和抽象类的区别在于:接口只包含方法的声明而没有实现,而抽象类包含抽象方法和具体方法; 3. 通过实现接口,一个类可以具备接口中声明的方法,从而实现多态性。 1. 接口和抽象类都是用来实现多态性的机制。
2024-08-20 16:26:42
288
原创 Redis持久化策略?
2. AOF: 则是将所有写操作追加到一个日志文件中,即追加式持久化方式。在AOF模式下,每个写操作都会以文本的形式记录在一个追加文件中,从而记录了所有数据的历史操作 OF持久化的优点是数据不会丢失,因为每个写操作都会记录在追加文件中,可以避免因为某个事件没有触发而导致数据丢失。1. RDB: 是一种快照式持久化方式,当触发某些特定的事件时,Redis会将内存中的数据保存到磁盘上一个指定的文件中,文件后缀一般为rdb。RDB持久化的优点是备份文件小、加载速度快,适合用于大规模数据恢复。
2024-08-20 16:12:47
185
原创 Redis数据类型有哪些?雪崩、击穿、穿透?
1. 缓存穿透:当一个查询的数据在缓存中不存在,但在数据库中也不存在时,这个查询会穿透到数据库,导致数据库负载过高 解决方法使用布隆过滤器,将不存在于数据库的数据进行过滤; 3. 缓存雪崩:当大量的缓存数据同时过期时,大量的请求会同时访问数据库,导致数据库负载过高 解决方法:给缓存的key设置随机过期时间,防止大量的缓存数据同时过期。 2. 缓存击穿:当一个热点数据过期时,大量的请求会同时访问数据库,导致数据库负载过高。 3. List:可以进行队列和栈的操作常用于消息队列、任务队列等场景。
2024-08-20 16:12:05
106
原创 Linux常用命令
安装定时插件然后service crond start启动插件后面创建定时任务脚本 我记的是用nohup 和 & 用crontab -e进入编辑页面,按i键进入编辑模式然后通过写cron 表达式和文件地址。# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) --name 给要运行的容器 起的名字 /bin/bash 交互路径。docker run -it -d --name -p 端口号 要取的别名 镜像名:Tag /bin/bash。groupadd
2024-08-20 09:47:04
445
原创 MySQL索引
索引是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。索引是在MySQL的存储引擎层中实现的,而不是在服务器层实现的索引示意图:我们来直观的感受一下,有建立索引和没有建立索引的直观感觉如图所示,索引能够帮我们快速的定位到数据的具体位置,高效查询。一般来说,索引本身也很大,不可能全部存储在内存当中,因此索引往往以索引文件的形式存储在磁盘上。索引是用来提供高性能数据库的常用工具。聚集索引。
2024-08-19 18:02:04
743
原创 @Data注解的应用
这个注解自动为类生成一些常用的功能,例如 `getter`、`setter`、`toString()`、`equals()`、`hashCode()` 以及 `requiredArgsConstructor()` 方法。4. **`@EqualsAndHashCode`**:生成 `equals()` 和 `hashCode()` 方法,比较对象时使用。2. **`@Setter`**:为类中的所有非 `final` 字段生成 `setter` 方法。- `toString()` 方法。
2024-08-19 10:28:27
295
原创 帆软条件搜索中文搜不出来 ,原来是编码问题
然后在查询的方法上给需要输入中文的字段引用这个方法就解决这个问题了。客户端编码方式与服务器端编码方式不同,就会出现乱码。这时可以在前端index.js中加入这个方法。查看日志发现 本来输入的中文已经成了乱码。
2024-08-19 09:51:19
111
原创 什么是DNS(域名系统)?
DNS(Domain Name System,域名系统)是将域名转换为IP地址的系统。它使用户可以通过易记的域名(如。DNS是互联网的重要基础设施之一,为全球用户提供域名解析服务,提升了网络的便捷性和效率。DNS是一个分布式系统,由全球的DNS服务器共同管理域名解析。)访问网站,而不需要记住复杂的IP地址(如。DNS具有层级结构,包括顶级域(如。将域名解析为对应的IP地址。
2024-08-16 14:39:50
277
原创 什么是MAC地址?
MAC地址(Media Access Control Address,媒体访问控制地址)是一种用于标识网络设备网络接口的唯一硬件地址。每个网络设备(如计算机、手机、路由器等)都有一个唯一的MAC地址,由设备制造商在生产时写入网络接口硬件中。MAC地址用于局域网内的数据传输和设备识别,与IP地址不同,MAC地址通常是固定不变的。MAC地址用于本地网络通信,工作在OSI模型的第二层(数据链路层)。格式为48位二进制数(6个字节),通常以十六进制表示,如。全球唯一,由设备制造商分配。
2024-08-16 14:38:57
346
原创 什么是LAN?
LAN(Local Area Network,局域网)是一种覆盖较小地理范围的计算机网络,如家庭、办公室、学校等。局域网通过有线或无线连接,使连接到网络的设备(如计算机、打印机、服务器等)能够进行数据通信和资源共享。局域网通过路由器或交换机可以与更大的网络(如广域网,WAN)相连,实现更广范围的通信。设备通过有线(如以太网电缆)或无线(如Wi-Fi)连接。地理范围小,通常在一个建筑物或相邻的建筑物内。数据传输速度较高,例如以太网可提供千兆位速率。允许设备共享资源,如文件、打印机和互联网连接。
2024-08-16 14:38:12
128
原创 Typora常用快捷键
复制为MarkDown:Ctrl+Shift+C。粘贴为纯文本:Ctrl+Shift+V。文档列表视图:Ctrl+Shift+2。文件树视图:Ctrl+Shift+3。新建窗口:Ctrl+Shift+N。有序列表:Ctrl+Shift+[无序列表:Ctrl+Shift+]大纲视图:Ctrl+Shift+1。实际大小:Ctrl+Shift+0。另存为:Ctrl+Shift+S。代码块:Ctrl+Shift+C。公式块:Ctrl+Shift+M。引用:Ctrl+Shift+Q。代码:Ctrl+Shift+`
2024-08-16 14:04:25
384
原创 oracle用序列实现主键自增
使用这个序列的场景通常是在需要生成唯一标识符的地方,比如插入新记录时为主键生成值。),序列是数据库对象之一,常用于生成唯一的数值,比如自动生成主键的值。这意味着数据库会预先生成并缓存 20 个序列值,以提高获取序列值的效率。每次从序列中获取下一个值时,它会在当前值的基础上加 1。:设置序列的最大值为 99,999,999,999。序列生成的数值不会超过这个最大值。:表示不保证序列生成的数值的顺序。:设置序列的最小值为 1。序列生成的数值不会小于这个最小值。序列名用双引号括起来,表示序列名是区分大小写的。
2024-08-16 10:17:19
174
原创 密码为啥要加盐处理?
输入入密码登录之后,服务端会先把你的密码对应的盐取出,然后再去执行一遍获取哈希值的过程。如果最终计算出来的哈希值和保存在数据库中的哈希值一直,那就说明密码是正确的。否则的话,密码就不是正确的。哈希算法的是不可逆的,你无法通过哈希之后的值再得到原值,这样的话,服务端也不知道你的原密码到底是什么,自然没办法告诉你原密码是什么。加盐就是在你输入的密码的时候加上一个随机的字符串,然后生成密码的时候将密码和salt拼接起来生成加密的密码,这样密码的安全性提高。
2024-08-16 10:09:52
146
原创 为啥short和float没啥人用
**性能差异不大**:虽然`float`占用的内存比`double`少(4字节 vs 8字节),但在现代硬件上,处理器通常对`float`和`double`的处理速度相当。- **较小的数值范围**:`short`是16位的整数类型,能表示的范围为`-32,768`到`32,767`。总体来说,`int`和`double`提供了更大的数值范围和更高的精度,同时现代硬件的性能足以应对大多数应用场景,因此开发者通常更倾向于使用它们,而`short`和`float`的使用场景相对有限。
2024-08-16 10:08:18
382
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人