- 博客(20)
- 收藏
- 关注
原创 Java多线程
多线程是Java众多特性之一。在多线程程序中,线程是CPU分配资源的基本单位,多个线程可以同时运行。本篇文章将介绍Java多线程的创建方式、多个线程抢占CPU的过程以及多线程的底层代码。
2023-05-04 15:28:12
256
原创 JAVA之IO流
Java提供了很多种类型的I/O,以读取文件、处理数据、网络通讯等等。IO大致分为两种字节流(二进制流)和字符流(文件流),其中字节流又分为字节输入,输出流和字节缓冲输入,输出流。字符流又分为字符输入,输出流和字符缓冲输入,输出流。
2023-04-27 15:32:25
307
原创 Map集合
LinkedHashMap是一个有序的Map容器,它在HashMap的基础上实现了按照插入顺序或者是最近使用顺序来访问元素的功能。如果accessOrder为true,则访问LinkedHashMap中的元素将按照最近使用顺序进行访问,通过维护一个双向链表实现。其实现原理和HashMap类似,主要区别在于它加入了双向链表和accessOrder参数的处理。
2023-04-26 18:12:50
500
原创 Set集合
Set是Java中的一种集合,它只存储不重复的元素。这是因为Set的设计初衷是为了去重。Set中元素的唯一性是通过元素的hashCode()值和equals()方法来判断的。如果Set中允许存储重复元素,就会造成判断唯一性时的混淆,从而失去了去重的功能。同时,Set是一种无序的集合,它不保证元素存储的顺序和添加的顺序相同。这是因为Set内部使用了哈希算法对元素进行存储和查找,为了保证存储效率,Set不会保留元素的顺序。但是,也可以通过转换为List再排序等手段来实现按顺序存储。
2023-04-25 17:03:45
1067
原创 List集合
List是一个接口,它继承自Collection接口。List表示的是一个元素有序的集合,可以根据插入顺序或其他某个规则来存储元素。List还提供了访问下标、添加、删除、查询等常规操作。这些操作受到集合的大小、容量、对内存的影响等多个因素的影响,因此我们需要在使用时选择具体的子类。List的底层实现可以是数组或链表。对于数组实现的List,元素的插入和删除是相对耗时的操作,因为需要进行数组的移位操作。而对于链表实现的List,插入和删除则可以达到O(1)的时间复杂度。
2023-04-24 17:15:43
1941
1
原创 23种设计模式
Java的23种设计模式是一组指导设计方案的模样,这些模样已经被证明在开发Java应用程序时非常有效。这些设计模式可以帮助开发人员遵循最佳实践,并在处理各种问题时提供可重用的解决方案。 这些模式分为3类:创建型模式,结构型模式和行为模式。 这些设计模式的主要意义是,它们提供了一些灵活的,经过考验的,深入研究的解决方案,可以帮助开发人员更好地理解Java代码,并以更好的形式组织他们的代码,从而使代码更加可重用,可维护和可扩展。它们已经被广泛应用于许多Java应用程序领域,包括企业级应用程序,桌面应用程序,
2023-04-22 16:20:27
596
原创 SpringBoot集成MongoDB
MongoDB是一个开源、高性能、可扩展的文档型数据库系统。与传统关系型数据库相比,MongoDB具有更高的性能和更好的可伸缩性,并且可以存储非结构化数据。SpringBoot是一个基于Spring框架的快速开发框架,它提供了一种方便快捷的方式来构建和部署Web应用程序。SpringBoot可以集成不同种类的数据库,本文章介绍的是SpringBoot集成下的MongoDB的操作。
2023-04-21 14:10:19
3041
原创 Linux常用命令
Linux系统是基于UNIX的,它继承了UNIX的优秀特性,如多用户、多任务、强大的安全性等,因此在服务器操作系统领域占据了主导地位。这篇文章主要总结了Linux基础知识,包括用户设置、权限设置、下载环境和常用命令等。
2023-04-20 17:08:54
123
原创 项目打包部署之部署jar包和war包
对于 Java 项目的打包和部署操作,我们建议使用 Maven 进行管理,特别是 Maven 插件 shade 和 war。使用这些插件可以非常方便地打包和部署项目。在使用时要注意依赖库的版本兼容。在部署 jar 包时,可以将启动命令写入 shell 脚本,方便管理。在部署 war 包时,我们建议使用自动化配置工具 Jenkins ,可以方便地部署和管理多台服务器上的应用程序。总之,选择合适的打包脚本插件和部署工具,可以为 Java 项目的打包和部署操作带来更高效和方便的体验。
2023-04-19 17:07:50
6775
原创 MySql存储过程介绍
存储过程(Stored Procedure)是一种在关系型数据库中存储复杂程序代码和SQL语句的技术。它们可以用来完成一些多表查询、数据处理或逻辑判断。下面是一个基本的存储过程应该包含的内容:存储过程名称:为了让程序员和数据库管理员更容易地找到存储过程,需要给存储过程起一个有意义的名称。参数列表:存储过程可以接收多个参数,这些参数可以是输入参数或输出参数。输入参数是从应用程序传递给存储过程的值,输出参数是存储过程返回的值。
2023-04-18 16:40:47
200
原创 java之搜索算法
之前已经介绍了java的排序算法有兴趣的可以看一下java之排序算法Java搜索算法是指在指定查找范围内寻找目标元素的过程。在Java中,通常用于搜索的数据结构包括数组、链表、树等。Java提供了一些常用的搜索算法,如线性搜索、二分搜索、深度优先搜索、广度优先搜索等。1.线性搜索线性搜索是最简单、最基本的搜索算法之一。它的实现很简单,只需要在查找范围内依次比较每个元素,直到找到目标元素或遍历完整个查找范围。在Java中,通常使用for循环来实现线性搜索。2.二分搜索。
2023-04-17 17:01:57
990
原创 Java之排序算法
Java算法是用于解决不同问题的计算机程序。它是许多应用程序的核心,例如搜索引擎、金融分析、图像处理等。Java算法的使用可以提高应用程序的性能和效率,使它们更加灵活,可靠。Java中包含众多算法,它们可以分为以下几种类型:排序算法:排序算法用于对数据进行排序,例如冒泡排序、选择排序、插入排序、快速排序等。搜索算法:搜索算法用于从大量数据中查找指定的数据,例如深度优先搜索、广度优先搜索、二分搜索等。图论算法:图论算法用于处理图形和图形数据结构,例如最短路径算法、最小生成树算法、拓扑排序算法等。
2023-04-14 16:27:27
256
原创 Spring集成Redis应用
Redis简介Redis(Remote Dictionary Server)是一个基于内存开源的键值存储系统,具有高性能、高可靠性、支持多种数据结构等特点。Redis支持主从复制、持久化、Lua脚本等功能,可以应用于许多场景,如缓存、消息队列、计数器、分布式锁等。并且Redis具有以下几个特点:高性能:Redis采用了基于内存的存储机制,将数据存在内存中以达到快速读写的目的。此外,Redis还采用了多种提高性能的技术,如快速网络IO,异步IO等。
2023-04-13 16:36:47
1248
原创 java1.8之Stream操作
Stream是Java 8中新增的API,可以用于处理集合、数组等数据源中的元素。Stream支持可以被并行化处理的Sequential和Parallel两种模式,可以有效提升数据的处理效率。Stream提供了很多操作符,例如Filter、Map、Reduce以及FlatMap等,可以方便地操作数据源,达到快速处理数据、筛选数据的目的。Stream具有延迟计算特性,当执行收集器函数时才会真正开始计算,可以大大减少不必要的计算和消耗。
2023-04-12 16:58:40
613
原创 解决商品超卖的方案和思路
悲观锁和乐观锁的方式相比较,悲观锁是在对库存表进行操作时预先加锁,确保同一时刻只有一个线程能够访问和修改库存数据。但是因为加锁的原因,就会导致其他线程需要等待锁释放才能进行操作,影响并发性能,并且给用户的体验感非常差。而使用Redis,基于Redis的原子操作能够更好地保证数据的安全性,并且性能更高,在大并发的场景下会有很好的性能表现。
2023-04-11 14:27:30
2924
原创 记一次对java各种锁的应用和理解
以上是Java中常用的五种锁及其应用场景的简介,使用不同的锁可以根据实际业务需求进行选择,提高程序的并发性能。在使用锁的过程中,需要根据实际情况选择最适合的锁和锁的级别,避免出现死锁等问题。与synchronized锁不同的是,ReentrantLock可以在不同的线程中进行获取和释放锁的操作。Condition锁是Java中一种高级锁,它可以让线程在等待某个条件成立时,自动地释放锁并进入等待状态,等待条件成立后自动唤醒线程重新获取锁。StampedLock锁提供了读锁、写锁和乐观读锁三种不同的锁。
2023-04-10 17:37:23
522
1
原创 java之集合类温故而知新
java之集合类温故而知新1 集合体系结构1.1 集合类的特点1.2 单例集合类体系图1.3 双例集合体系图1.4 Collection集合的常用方法1.5 Map集合:1.5.1 Map集合的特点1.5.2 Map集合的基本功能1.5.3 Map集合的获取功能4 数据结构2.1 数据结构之栈和队列2.2 数据结构之数组和链表3 List集合3.1 List集合概述和特点3.2 List集合的特有方法3.3 List集合子类的特点3.3.1 ArrayList集合3.3.2 LinkedList集合4 S
2020-09-14 17:35:56
729
原创 netty入门→学习笔记
学习netty,首先要知道netty是什么?他有什么作用?下面先对netty做一个简单的介绍:Netty 是一个提供 asynchronous event-driven (异步事件驱动)的网络应用框架,是一个用以快速开发高性能、高可靠性协议的服务器和客户端。换句话说,Netty 是一个 NIO 客户端服务器框架,使用它可以快速简单地开发网络应用程序,比如服务器和客户端的协议。Netty 大大...
2020-03-28 14:46:56
181
原创 RabbitMQ学习心得
以下从MQ到RabbitMQ 进行介绍,再对RabbitMQ的六种工作模式进行demo讲解MQ:MQ全称为 Message Queue,翻译过来就是消息队列,MQ是一种应用程序之间的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术...
2020-01-29 19:27:50
386
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人