- 博客(34)
- 收藏
- 关注
原创 小周学JAVA—八股八
wait() 是让获得对象锁的线程实现等待,会自动释放当前线程占有的对象锁。每个对象(Object)都拥有对象锁,既然要释放当前线程占有的对象锁并让其进入 WAITING 状态,自然是要操作对应的对象(Object)而非当前的线程(Thread)。类似的问题:为什么 sleep() 方法定义在 Thread 中?因为sleep() 是让当前线程暂停执行,不涉及到对象类,也不需要获得对象锁。
2024-02-19 10:00:22
711
原创 小周学JAVA—八股七
集合框架通过提供有用的数据结构和算法使你能集中注意力于你的程序的重要部分上,而不是为了让程序能正常运转而将注意力于低层设计上。通过这些在无关API之间的简易的互用性,使你免除了为改编对象或转换代码以便联合这些API而去写大量的代码。它提高了程序速度和质量。
2024-02-19 09:34:05
1214
原创 小周学JAVA—八股六
StringJoiner是 Java 8 新增的一个 API,它基于 StringBuilder 实现,用于实现对字符串之间通过分隔符拼接的场景。StringJoiner 有两个构造方法,第一个构造要求依次传入分隔符、前缀和后缀。第二个构造则只要求传入分隔符即可(前缀和后缀默认为空字符串)。有些字符串拼接场景,使用 StringBuffer 或 StringBuilder 则显得比较繁琐。而通过StringJoiner来实现拼接List的各个元素,代码看起来更加简洁。
2024-02-04 22:27:45
637
原创 小周学JAVA—八股五
值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本,并不是原对象本身,两者指向同一片内存空间。所以对引用对象进行操作会同时改变原对象。java中不存在引用传递,只有值传递。即不存在变量a指向变量b,变量b指向对象的这种情况。
2024-02-04 22:24:03
509
原创 小周学JAVA—八股四
优点: 1.SQL写在XML里面,与业务代码分离,因此相对比较灵活,便于统一管理 2.spring集成很方便,由于使用的JDBC连接数据库,因此,不需要针对不同数据专门做兼容。缺点: SQL的编写,SQL的语法都强关联数据库的类型,因此,无法随意切换数据库。
2024-01-28 22:22:12
543
原创 小周学JAVA—八股三
当执行monitorenter指令时,线程试图获取锁也就是获取monitor(monitor对象存在于每个Java对象的对象头中,synchronized锁便是通过这种方式获取锁的,也是为什么Java中任意对象可以作为锁的原因)的持有权。▪修饰代码块,即同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象。▪ 修饰普通方法,即同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象。▪ 修饰静态方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象。
2024-01-28 22:16:17
305
原创 小周学JAVA—八股二
1、Java中equals()和==的区别equals() 是判断两个变量或者实例指向同一个内存空间的值是不是相同"==" 是判断两个变量或者实例是不是指向同一个内存空间java中的数据类型,可分为两类:基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean他们之间的比较,应用双等号 “==” ,比较的是他们的值。2、复合数据类型(类)当他们用 “==” 进行比较的时候,比较的是他们在 内存中的存放地址,所以,除
2024-01-19 16:09:02
360
原创 小周学JAVA—八股一
(1) 原子性原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要 么就全部都不执行。(2) 可见性可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修改后,其他线程可以立 即看到修改的结果(3)有序性有序性,即程序的执行顺序按照代码的先后顺序来执行。
2024-01-19 16:02:22
415
原创 CPU密集型和IO密集型对 CPU内核之间的关系
总体而言,多核处理器为CPU密集型和IO密集型任务提供了更多的计算资源,但如何充分利用这些资源取决于任务的性质以及系统的设计和调度策略。在一些情况下,任务可能会以串行的方式执行,而在另一些情况下,任务可能会以并行的方式执行,从而更好地利用多核处理器的性能。在CPU密集型任务中,任务的执行主要依赖于CPU的性能。然而,任务的并行性在很大程度上取决于任务的可并行性,有时候并不是所有的计算都能很容易地并行执行。CPU密集型任务通常是计算密集型的任务,其主要负担是CPU的运算能力。
2023-12-08 09:03:01
370
原创 ELK的日志解决方案
ELK是一个用于日志管理和分析的开源解决方案,它由Elasticsearch、Logstash和Kibana三个核心组件组成。这个组合可以帮助你采集、存储、搜索、分析和可视化大量的日志数据。
2023-12-06 20:48:54
1157
原创 线程池,及7大参数,4大拒绝策略详解
一个应用程序就是一个进程,进程就是在某种程度上相互隔离的、独立运行的程序。而线程是一个进程内部的多个运行单位。在Java中的可以这样理解,我们在使用计算机看视频的同时可以用它来打印文件,这些活动是可以同时进行的,而我们可以把线程理解为在程序中并发完成的每一件事——即线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,但是它可与同属一个进程的其他线程进程所拥有的全部资源。
2023-12-05 19:10:58
978
原创 定时任务总结
Quartz 是一个开源的任务调度框架,用于在 Java 应用程序中实现任务的调度和定时执行。它提供了灵活且强大的调度功能,允许开发者按照特定的时间表执行任务,包括一次性执行、循环执行、基于 Cron 表达式的执行等。Quartz 的设计目标是能够应对各种复杂的调度需求,包括集群环境下的任务调度。
2023-12-04 19:51:49
839
原创 docker回顾
Docker 是一种容器化平台,用于开发、交付和运行应用程序。它提供了一种轻量级、可移植、自给自足的容器化解决方案。Docker 的核心概念是容器,它可以将应用程序及其所有依赖项打包到一个标准化的单元中,这使得应用程序可以在任何支持 Docker 的环境中运行,无论是开发人员的本地机器、测试环境,还是生产服务器。Docker 使用容器来打包应用程序及其依赖项。容器是轻量级且独立的运行环境,包含了应用程序的代码、运行时、系统工具、系统库以及设置。
2023-12-04 09:15:19
947
原创 过滤器,拦截器,aop之间差异
过滤器是Java Servlet 规范中的一部分,用于在请求到达 Servlet 之前或响应离开 Servlet 之后执行某些任务。
2023-11-29 21:58:31
1310
1
原创 builder设计模式
Builder(建造者)设计模式是一种创建型设计模式,它的主要目的是将一个复杂对象的构建过程与其表示相分离,使得同样的构建过程可以创建不同的表示。这种模式通常用于创建一些复杂的对象,这些对象的构建步骤相对稳定,但具体的表示可能有所不同。
2023-11-23 19:55:19
387
1
原创 http协议和websocket协议之间的区别
HTTP是单向的,客户端发送请求,服务器发送响应。举例来说,当客户端向服务器发送请求时,该请求以HTTP或HTTPS的形式发送,在接收到请求后,服务器会将响应发送给客户端。每个请求都与一个对应的响应相关联,在发送响应后客户端与服务器的连接会被关闭。每个HTTP或HTTPS请求每次都会新建与服务器的连接,并且在获得响应后,连接将自行终止。HTTP是在TCP之上运行的无状态协议,TCP是一种面向连接的协议,它使用三向握手方法保证数据包传输的传递并重新传输丢失的数据包。。
2023-11-22 20:49:05
115
1
原创 ConcurrentHashMap和HashMap的区别
提供了在多线程环境中安全、高效地进行哈希表操作的机制,适用于需要并发访问的场景。HashMap是一个灵活、高性能的数据结构,适用于需要通过键值对进行查找、插入和删除操作的场景相对于HashMap在并发环境下提供了更好的线程安全性和性能。在多线程并发访问的场景中,特别是读写操作频繁的情况下,ConcurrentHashMap更适合使用。而在单线程环境下或者无并发访问需求的情况下,可以考虑使用普通的 HashMap。
2023-11-21 18:57:17
236
原创 网络的七层模型,TCP与UDP的区别
OSI模型(Open Systems Interconnection model),它将网络协议划分为七个不同的层次,每个层次负责不同的功能。TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是传输层协议,它们都处于OSI模型的第四层——传输层。
2023-11-20 19:58:18
94
1
原创 docker搭建gitlab
GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
2023-11-18 10:21:29
134
1
原创 重生之学Java的第十四天
生产者消费者模型是一种并发编程模式,用于解决多线程环境下的数据共享和同步问题。在该模型中,有两类角色:生产者和消费者。通过合理的同步机制(如互斥锁、条件变量等),生产者和消费者能够正确地协调工作,实现数据的有序生成和消费,避免数据竞争和死锁等并发问题。生产者消费者模型在许多应用中都有广泛的应用,例如任务队列、消息队列、线程池等场景,可以有效地实现任务分配和资源利用的优化。
2023-10-30 20:51:00
35
原创 重生之学Java的第十三天
垂直分库就是根据业务耦合性,将关联度低的不同表存储在不同的数据库。做法与大系统拆分为多个小系统类似,按业务分类进行独立划分。与"微服务治理"的做法相似,每个微服务使用单独的一个数据库。
2023-10-30 08:51:56
32
原创 重生之学java的第十二天
在默认配置下,SpringMVC是单例多线程,意思就是controller、service、dao层同一个类的对象只有一个。Java虚拟机栈是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。局部变量的固有属性之一就是封闭在执行线程中。他们位于执行线程的栈中,其他的线程无法访问这个栈。所以说,任何无状态单例都是线程安全的。
2023-10-25 19:30:07
108
原创 重生之学Java的第十一天
CAS就是一种乐观锁的实现方式,翻译过来就是“比较和交换”,是一种无锁的原子操作,具体的实现为Unsafe类。在并发编程中,i++(自增)操作时非线程安全的,是因为i++操作不是原子操作,那么怎么保证其原子性呢?最常见的做法就是加锁。在Java中,synchronized关键字和CAS来实现加锁的效果。
2023-10-24 21:40:13
107
原创 重生之学java的第九天
泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
2023-10-19 19:34:50
120
原创 重生之学java的第八天
Spring缓存是Spring Framework提供的一种简化数据访问和计算结果缓存的机制。它使用注解或编程方式将方法的返回值缓存起来,以便在下次相同的方法调用时能够快速返回缓存的结果,而不需要执行实际的方法体。Spring缓存的主要目标是提高应用程序的性能和响应速度,减少对底层数据源(如数据库)或耗时计算任务的访问次数。通过将经常被访问或计算代价较高的数据保存在内存中,可以加速数据的获取和处理过程。缓存管理器(Cache Manager):负责创建、配置和管理缓存实例。
2023-10-18 19:51:13
86
1
原创 重生之学java的第七天
清晰的角色划分:控制器(controller)、验证器(validator)、 命令对象(command object)、表单对象(formobject)、模型对象(model object)、 Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、视图解析器(view resolver)等。每一个角色都可以由一个专门的对象来实现。
2023-10-17 19:50:34
119
原创 重生之学java的第五天
接口是一种完全抽象的类,其中只包含常量和方法的声明,没有具体的实现。抽象类是一个可以包含抽象方法和具体方法实现的类,它可以作为其他类的父类或基类。
2023-10-12 20:59:55
105
原创 重生之学java的第四天
在book-bk下的resources创建config文件夹,在其内部创建application.yml,application-dev.yml,application-prod.yml,application-test.yml。创建三个模块:book-bk,book-domain,book-common。book-bk模块用来使用,创建controller,service等。在最外层的book-swagger下创建。配置book-common的pom文件。配置book-bk的pom文件。
2023-10-11 19:54:09
122
原创 重生之学java的第三天
创建一个maven测试项目打包后从target内找到jar包,随意一个文件夹位置进cmd 执行java -jar jar包写一个controller。
2023-10-10 19:01:16
28
1
原创 重生之学java的第二天
多服务器(mysql)协同工作解决大量请求问题。-----分布式CAP理论:CAP:C:数据一致性 A:高可用性----主从、集群 P:分区容错性。
2023-10-09 19:22:57
40
1
原创 重生之学java的第一天
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口作为程序员我们应怎样理解docker?假设你们正在秘密研发一个牛批的APP,程序员自己开始写代码,写完代码后程序员要把代码交给测试同学测试,这时测试同学开始,测试过程中出现问题程序员也不用担心,大可以一脸无辜的撒娇,“明明在人家的环境上可以运行的”。测试同学测完后终于可以上线了,这时运维同学又要重新。
2023-10-09 10:13:29
28
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人