![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java学习
文章平均质量分 95
Java相关知识专栏,记录一些学习笔记
Puth__
这个作者很懒,什么都没留下…
展开
-
java学习——实际情景问题(持续更新)
在当前会话中,默认情况下show profile是关闭状态,打开之后会保存最近15次的运行结果,针对运行慢的SQL,通过profile工具进行详细分析,可以得到SQL执行过程中所有资源的开销情况,如IO开销、CPU开销、内存开销等等。通过增大Eden区的大小,来减少Young GC发生的次数,但有时候虽然Young GC次数减少了,但Eden区满的时候,由于占用的空间较大,会导致空间释放缓慢,此时的STW时间较长,因此需要按照程序情况进行调优。,如线程间死锁、死循环、请求外部资源导致的长时间等待等。原创 2024-04-21 21:49:54 · 832 阅读 · 1 评论 -
java学习——消息队列MQ
MQ是Message Queue的缩写,也就是消息队列的意思。它是一种应用程序对应用程序的通信方法,使得应用程序能够通过读写出入队列的消息来进行通信,而无需使用专用的连接来链接它们。消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性架构。在消息队列中,有生产者和消费者两个角色。生产者负责发送数据到消息队列,而消费者则从消息队列中取出数据进行处理。这种方式实现了生产者与消费者之间的解耦,使得它们可以独立地运行和扩展。原创 2024-04-11 21:35:06 · 1395 阅读 · 1 评论 -
java学习——linux常见命令
然后随着新内容的添加而持续显示这些新内容。这对于。原创 2024-04-03 21:56:11 · 922 阅读 · 1 评论 -
java学习——常见设计模式
单例模式是一种创建型设计模式,它必须保证单例对象的类仅有一个实例,并提供一个访问它的全局访问点。这个模式主要应用于那些只需要一个对象来协调整个系统运作的场景。通过确保类只有一个实例,我们可以节省系统资源,因为不需要为多次创建和销毁对象分配内存。同时,单例模式也有助于确保数据的一致性,因为所有的请求都通过同一个实例来处理。工厂模式是一种用于创建对象的设计模式,它通过将对象的创建逻辑与使用逻辑分离,从而提高了代码的可维护性和可扩展性。原创 2024-04-03 17:03:14 · 1329 阅读 · 1 评论 -
java学习——Spring
Spring 是一个轻量级的JavaEE 框架,它通过依赖注入和面向切面编程,使得开发者更专注业务逻辑的实现,而无需关注过多底层细节。Spring MVC是属于Spring framework生态下的一个模块,它是一个在servlet基础上构建,并且使用了MVC模式的Web框架,它的主要目的是为了去简化传统的Servlet+JSP模式下的Web开发方式。其次,Spring MVC的整个架构设计是对Java Web中的MVC框架模式做了一些增强和扩展。原创 2024-03-31 17:46:07 · 1174 阅读 · 2 评论 -
java学习——java并发(2)
守护线程是一种特殊的线程,它在后台运行,用于执行一些辅助性的任务。与普通线程不同的是,当程序中其他的非守护线程执行完毕之后,守护线程也会陆续地结束,而不会等待守护线程的执行结果。因此,守护线程通常被用于执行一些不重要的、不影响程序主逻辑的任务,如日志记录、性能监控等。在实际应用中,守护线程的使用需要谨慎。因为它们可能会在程序结束时被突然中断,所以不适合执行一些需要保证完整性的任务。实际应用场景:聊天框和传输文件。传输文件是守护线程,关闭聊天框后,传输文件就会自动结束。死锁是指两个或两个以上。原创 2024-03-22 21:53:29 · 1394 阅读 · 1 评论 -
java学习——网络
如果TCP连接只有两次握手,当第二次握手结束后,客户端知道服务器能够正常接受到自己发送的数据,但服务器此时还并不知道客户端是否能够收到自己发送的数据。建立第三次握手可以防止第一次握手时的网络拥塞避免重传信号建立连接后,被阻塞的信号又传到服务端,服务端会误以为客户端想重新建立连接;同时也可以防止第二次握手的信号丢失,也避免了服务端已建立与客户端的连接,但是客户端没有建立与服务端的连接从而占用服务端资源的问题。不设置更多的握手是因为,三次握手是能够保证通信可靠的最小握手次数。原创 2024-03-21 21:46:43 · 905 阅读 · 1 评论 -
java学习——redis
redis是一个开源的、使用C语言编写、支持网络、可基于内存亦可持久化的日志型、noSql、Key-Value数据库,并提供多种语言的API。由于redis的数据是存储于内存之中的,它的读写速度非常快,每秒可以处理超过10万次读写操作,所以它被广泛应用于缓存从而提升数据的读写性能,减轻mysql数据库的压力。同时redis支持字符串、哈希、列表、集合和有序集合等多种不同的数据结构,这使得redis可以非常灵活地存储和处理各种类型的数据。并且redis的操作都是原子操作。原创 2024-03-20 21:52:31 · 1269 阅读 · 1 评论 -
java学习——java并发(1)
进程和线程是操作系统中概念,用于描述程序运行时的执行实体。进程是一个程序在执行过程中的一个实例可以并发地执行多个任务,每个进程都有自己独立的地址空间,也就是说它们不能直接共享内存,两个进程之间需要通过进程间通信(IPC)来交换数据。线程是进程中的一个执行单元,一个进程里可以包含多个线程,同一个进程中的多个线程可以并发地执行多个任务,并且这些线程共享进程的内存空间。线程相比于进程,线程的创建和销毁开销较小,上下文切换开销也较小,因此线程是实现多任务并发的一种更轻量级的方式。线程上下文切换。原创 2024-03-18 22:54:41 · 1036 阅读 · 0 评论 -
java学习——Mysql数据库
索引是关系数据库中的一种数据结构,它将数据提前按照一定的规则进行排序和组织,能够帮助快速定位到数据记录的数据,从而加快数据库表中数据的查找和访问速度,它的核心思想是以空间换时间。索引的优点:1.在大部分场景下,能够提高检索效率;2.降低排序成本,索引对应的字段是会有一个自动排序功能的,默认是升序。索引的缺点:1.创建索引和维护索引需要耗费时间,这种时间随着数据量的增加而增加;2.索引需要占用物理空间,数据量越大,占用空间就会越大;原创 2024-03-17 21:53:00 · 1387 阅读 · 1 评论 -
java常见算法题(1)
*解题思路:**用哈希表来实现,因为hashMap的数据结构是kv键值对,可以把数组值作为key,当前值对应的下标作为value存进去(由于返回的是下标,所以下标为value)具体流程为:设置a、b两个指针,a为当前还未处理的数组序列中的第一个数组下标,b为当前状态下数组序列中第一个值为0的数组下标。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。,这样一趟下来,最大的数就被排在最后,第二趟也是如此,如此类推,直到所有的数据排序完成。原创 2024-03-13 17:46:24 · 995 阅读 · 0 评论 -
java学习——JVM
JVM全称是Java Virtual Machine,是java的虚拟机。它是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。它提供了一个独立于硬件和操作系统的执行环境,使得Java程序能够在不同平台上具有跨平台的特性。(JVM运行的是字节码文件)在JVM中,垃圾是在堆和方法区中(主要是在堆中)已经不会再被使用到的内存空间,而垃圾回收就是释放这些垃圾所占用的空间,以防止内存泄露。原创 2024-03-12 23:21:07 · 1158 阅读 · 0 评论 -
java学习——java基础(2)
Java动态代理是Java语言提供的一种机制,这种机制能在运行时动态地生成代理类和代理对象,进而替代原始的对象行为。通过动态代理,开发者可以在不修改原始类代码的情况下,对原始类的方法进行功能增强或添加额外的操作。它是实现面向切面编程(AOP)的一种重要手段。动态代理的实现原理是,在运行时动态生成一个代理类,这个代理类继承了被代理类的接口,并重写被代理类的方法。当客户调用被代理类的方法时,实际上是通过代理对象来调用的。原创 2024-03-11 19:40:05 · 854 阅读 · 0 评论 -
java学习——java基础(1)
ArrayList的初始数组长度默认为10(可以指定其他长度),每次实际容量达到数组最大容量后,就会触发自动扩容(创建一个新数组,新数组容量将扩充为原容量的1.5倍,再把老数组里的数据拷贝到新的数组中,最后把当前需要添加的元素添加到新数组中)。的规定,对于-128~127之间的整数,无论我们创建多少个Integer对象,它们所引用的对象在内存中地址都是相同的,这是因为Java对这个范围内的 Integer 对象进行了缓存(IntegerCache),因此使用。这简化了并发编程,并减少了出错的可能性。原创 2024-03-10 21:33:31 · 1000 阅读 · 1 评论