Java学习
文章平均质量分 88
敲代码的程序狗
这个作者很懒,什么都没留下…
展开
-
资深腾讯架构师耗时2个月整理的Redis全套学习笔记,涵盖所有核心知识点
Redis 是一个开源、基于内存、使用 C 语言编写的 key-value 数据库,并提供了多种语言的 API。它的数据结构十分丰富,基础数据类型包括:string(字符串)、list(列表,双向链表)、hash(散列,键值对集合)、set(集合,不重复)和 sorted set(有序集合)。主要可以用于数据库、缓存、分布式锁、消息队列等…今天给大家整理了一篇Redis全套笔记,一共十二个章节,原创 2022-09-28 14:52:45 · 831 阅读 · 0 评论 -
Redis夺命十二问,差点没抗住
要注意,Redis 对 RDB 的执行频率非常重要,因为这会影响快照数据的完整性以及 Redis 的稳定性,所以在 Redis 4.0 后,增加了 AOF 和 RDB 混合的数据持久化机制:把数据以 RDB 的方式写入文件,再将后续的操作命令以 AOF 的格式存入文件,既保证了 Redis 重启速度,又降低数据丢失风险。小二:Redis 数据是存储在内存中的,为了保证 Redis 数据不丢失,那就要把数据从内存存储到磁盘上,以便在服务器重启后还能够从磁盘中恢复原有数据,这就是 Redis 的数据持久化。原创 2022-09-28 13:18:29 · 3007 阅读 · 0 评论 -
什么是Kafka消费组协调器
协调器是用于协调多个消费者之间能够正确地工作的一个角色, 比如计算,又或者消费者的加入组与离开组的处理逻辑, 有一点类似Kafka种的控制器的角色。原创 2022-09-27 09:53:26 · 1174 阅读 · 0 评论 -
这几种常见的 JVM 调优场景,你知道吗?
以上三种严格地说还算不上jvm的调优,只是用了jvm工具把代码中存在的问题找了出来。我们进行jvm的主要目的是尽量减少停顿时间,提高系统的吞吐量。但是如果我们没有对系统进行分析就盲目去设置其中的参数,可能会得到更坏的结果,jvm发展到今天,各种默认的参数可能是实验室的人经过多次的测试来做平衡的,适用大多数的应用场景。如果你认为你的jvm确实有调优的必要,也务必要取样分析,最后还得慢慢多次调节,才有可能得到更优的效果。原创 2022-09-20 10:55:12 · 167 阅读 · 0 评论 -
4 行代码写 3 个NPE异常,服了
公司刚入职了一名中级Java开发,经过一个星期的适应学习,各方面表现还不错,于是分配了一个小的迭代给新人做。需求很简单,把从第三方拉取的数据匹配到自身公司后台设置的渠道后,聚合到一个列表中,批量入库。然而就在匹配的逻辑中,上线后报了个NPE,这是作为一名中级开发不应犯的简单错误,新人被我狠狠的训了,记生产事故一次。在这里l拉不拉米要推荐一款IDEA的插件:SonarLint能动态的帮您检查代码漏洞,像NPE这种代码风险都会给于相应的提示。SonarLint还有一个大名鼎鼎的服务端叫。原创 2022-09-15 10:21:37 · 238 阅读 · 0 评论 -
MySQL 崩溃恢复过程分析
MySQL 崩溃也是一次关闭过程,只是比正常关闭着急了一些。正常关闭时,MySQL 会做一系列收尾工作,例如:清理 undo 日志、合并 change buffer 缓冲区等操作。具体会进行哪些收尾工作,取决于系统变量 innodb_fast_shutdown 的配置。崩溃直接就是戛然而止,撂挑子不干了,还没来得及进行的那些收尾工作怎么办?那就只能等待下次启动的时候再干了,这就是本文要介绍的崩溃恢复过程。原创 2022-09-14 13:41:36 · 2239 阅读 · 0 评论 -
有了这篇 Docker 网络原理,彻底爱了~
docker0的特点:它是默认的域名访问不通–link 域名通了,但是删了又不行docker为我们提供了三种网络模式这其中默认使用的是 bridge,也就是我们的docker0网卡。在我们启动容器的时候,实际上是如下命令这个—net是默认的,所以被省略了。下面我们自定义一个网络 mynet。# 自定义创建的默认default "bridge"3136d64109c6 mynet bridge local # 多了一个mynet[{"IPAM": {{...原创 2022-08-27 10:50:37 · 121 阅读 · 0 评论 -
阿里三面:MQ 消息丢失、重复、积压问题,如何解决?
比如在 Kafka 中,一个 Topic 可以配置多个 Partition(分区),数据会被写入到多个分区中,但在消费的时候,Kafka 约定一个分区只能被一个消费者消费,Topic 的分区数量决定了消费的能力,所以,可以通过增加分区来提高消费者的处理能力。毫无疑问,出问题的肯定是消息消费阶段,我来总结一下今天的重点内容。方案看似万无一失,每个阶段都能保证消息的不丢失,但在分布式系统中,故障不可避免,作为消息生产端,你并不能保证 MQ 是不是弄丢了你的消息,消费者是否消费了你的消息,所以,本着。...原创 2022-08-18 11:49:12 · 164 阅读 · 0 评论 -
Java架构师人手一份的Spring Cloud Alibaba笔记,知乎疯转上万次
Spring Cloud 早期支持的许多 Spring Cloud Netflix 组件,比如 Eureka 2.x、Ribbon、Zuul 等,这些都是著名的微服务组件,而随着它们的停止维护更新,Spring Cloud Alibaba 强大的技术栈就体现价值了!原创 2022-08-12 15:01:54 · 178 阅读 · 0 评论 -
如何组装一个注册中心?
注册(register),将服务提供方注册到注册中心注销(unregister),将注册的服务从注册中心中删除订阅(subscribe),服务消费方订阅需要的服务,订阅后提供方有变更将通知到对应的消费方注册、注销可以是服务提供方的进程发起,也可以是其他的旁路程序辅助发起,比如发布系统在发布一台机器完成后,可调用注册接口,将其注册到注册中心,注销也是类似流程,但这种方式并不多见,而且如果只考虑实现一个注册中心,必然是可以单独运行的,所以通常注册、注销由提供方进程负责。看看这个领域有没有相关标准。...原创 2022-07-26 10:47:21 · 359 阅读 · 0 评论 -
我用 Dubbo 传输文件,差点被开除
其实Dubbo不光是不适合传输文件,大报文场景下都不太合适,Dubbo的设计更适合小业务报文的传输(默认报文大小只有8MB)。所以如果有文件上传的场景,尽可能的用客户端直传的方式吧,友好又节省资源!httpshttps。...原创 2022-07-15 10:50:10 · 118 阅读 · 0 评论 -
HTTP 3.0彻底放弃TCP,TCP到底做错了什么?
从HTTP/1.0开始,一直到HTTP/2,不管应用层协议如何改进,TCP一直以来都是HTTP协议的基础,主要是因为他能提供可靠连接。但是,从HTTP 3.0开始,这个情况就有所变化了。因为,在最新推出的HTTP 3.0中,已经彻底启用TCP协议了。我们知道,TCP传输过程中会把数据拆分为一个个按照顺序排列的数据包,这些数据包通过网络传输到了接收端,接收端再按照顺序将这些数据包组合成原始数据,这样就完成了数据传输。但是如果其中的某一个数据包没有按照顺序到达,接收端会一直保持连接等待数据包返回,这时候就会阻塞原创 2022-07-04 09:50:54 · 1322 阅读 · 1 评论 -
说实话ThreadLocal真不是啥高级的东西
从 Java 官方文档中的描述:ThreadLocal 类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get 和 set 方法访问)时能保证各个线程的变量相对独立于其他线程内的变量。ThreadLocal 实例通常来说都是 private static 类型的,用于关联线程和线程上下文。我们可以得知 ThreadLocal 的作用是:提供线程内的局部变量,不同的线程之间不会相互干扰,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量传递的复杂度。在介绍 Thre原创 2022-06-30 14:06:13 · 957 阅读 · 0 评论 -
DDD概念复杂难懂,实际落地如何设计代码实现模型?
伴随着业务系统复杂度的不断提升,以及微服务架构等分布式技术体系的大行其道,领域驱动设计(Domain Driven Design,DDD),日渐成为系统建模领域的主流设计思想和模式。在DDD中,引入了限界上下文、聚合、实体、值对象、领域事件、资源库、应用服务等一系列核心概念。通过这些概念,开发人员可以开展系统设计和实现工作。但是,DDD中的这些概念相对都比较抽象,甚至有些晦涩难懂。再往相通或类似问题点上靠,我认为实质上对于复杂难懂的概念的理解和把握,我们一开始不必过于纠结这些概念本身,而是可以把它们与现实中原创 2022-06-24 20:36:01 · 1495 阅读 · 0 评论 -
Java6对synchronized的优化-锁升级过程详细过程
以前我们在复习synchronized的时候,和lock一对比,总说它是一个重量级锁,性能很差,不如lock来的方便,但其实synchronized作为Java中元老级的关键字,很多jdk原始代码都有用到它,因此Java开发团队还是非常中意这个“私生子”的,所以为了给它减重,开发者也早在Java6就为synchronized专门设计了一套优化处理过程。了解锁升级之前,必须先知道Java对象头,正式对象头记录的信息才实现了锁升级过程中的线程判断。Java对象:Java对象头:包含两部分:MarkWord原创 2022-06-18 15:12:04 · 266 阅读 · 0 评论 -
面试官: 有了解过ReentrantLock的底层实现吗?说说看
我们可以了解到它是一个可重入锁,下面我们就一起看一下它的底层实现~我们在使用的时候,都是先new它,所以我们先看下它的构造函数,它主要有两个:从字面上看,它们之间的不同点在于fair,翻译过来就是公平的意思,大体可以猜到它是用来构建公平锁和非公平锁,在继续往下看源码之前,先给大家科普一下这两种锁。这种锁的优点很明显,每个线程都能够获取资源,缺点也很明显,如果某个线程阻塞了,其它线程也会阻塞,然而cpu唤醒开销很大,之前也给大家讲过优缺点正好和上边相反,优点减少开销,缺点也很明显,可能会导致一直获取不到锁或原创 2022-06-17 14:33:45 · 116 阅读 · 0 评论 -
JDK 8 Stream 数据流效率怎么样?
stream 的操作种类①中间操作②终端操作stream 的特点①只能遍历一次:②采用内部迭代的方式:stream 相对于 Collection 的优点stream 和 iterator 迭代的效率比较低1. 映射处理测试2. 过滤处理测试3. 自然排序测试4. 归约统计测试5. 字符串拼接测试6. 混合操作测试Stream 是Java SE 8类库中新增的关键抽象,它被定义于 java.util.stream (这个包里有若干流类型:Stream 代表对象引用流,此外还有一系列特化流,如 IntStre原创 2022-06-16 13:47:07 · 300 阅读 · 0 评论 -
超详细的Java的内存机制解读,还不会你打我!
1.Java的内存机制Java 把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后**(比如,在函数A中调用函数B,在函数B中定义变量a,变量a的作用域只是函数B,在函数B运行完以后,变量a会自动被销毁。分配给它的内存会被回收)**,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。堆内存用来存放由 new 创建的对原创 2021-09-03 20:38:55 · 486 阅读 · 0 评论 -
微服务的架构下,如何根据业务抽象出适合自己系统的组件?
导读:基础SpringBoot/SpringCloud微服务的架构下,我们或多或少会根据业务抽象出适合自己系统的组件或SDK,来应对对内、对外的拓展。在SpringBoot/SpringCloud先前介绍了一些,如:@Conditional来指定指定条件的时候才将某个 bean 加载到应用上下文中。@FunctionalInterface函数式接口申明@JsonTypeInfo在Java类继承的情况下如何实现父类及子类的JSON序列化与反序列化。等等其他的注解标识,极大简化了业务逻辑和代码.原创 2021-09-02 21:37:27 · 261 阅读 · 0 评论 -
学了 JMM 指令重排序,让我明白该如何写单例模式了
JMM 是什么?JVM 是 Java Memory Model 的缩写, Java 内存模型来屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下能够达到一致的内存访问效果。重排序在许多情况下,访问程序变量(对象实例字段、类静态字段和数组元素)的执行顺序可能与程序指定的顺序不同。编译器可以以优化的名义随意调整指令的顺序。在某些情况下,处理器可能会乱序执行指令。数据可以按照不同于程序指定的顺序在寄存器、处理器缓存和主存储器之间移动。产生重排序?下面是一个简单的例子,我运行的原创 2021-08-31 15:38:54 · 192 阅读 · 0 评论 -
你真的理解Java垃圾回收吗?万字长文带你彻底搞懂垃圾回收机制
本文已参与掘金创作者训练营第三期「话题写作」赛道,详情查看:掘力计划|创作者训练营第三期正在进行,「写」出个人影响力。Java 垃圾回收机制垃圾回收主要关注 Java 堆Java 内存运行时区域中的程序计数器、虚拟机栈、本地方法栈随线程而生灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会由 JIT 编译器进行一些优化),因此这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收的问题,因为方法结束或者线原创 2021-08-30 19:52:12 · 387 阅读 · 0 评论 -
「一探究竟」Java SPI机制
事件起因七月中旬,我司的系统潜在风险排查工作在如火如荼的进行,其中我发现当前系统的调用源缺少Token信息,难以做到具体的识别和监控,因此需要对其优化。针对刚提到的两个问题,我只需要实现某个框架基类,然后做一点业务处理即可,根据框架的说明文档,按步骤实现以下内容即可:开发、调试一气呵成之后,我对这种实现方式起了好奇之心,非常疑惑它们是如何在框架中实例化并发挥作用的,有兴趣的话就跟我一起一探究竟吧(????)什么是SPI最初我甚至都不知道这种技术/方案是Java自身支持的,还以为是框架原创 2021-08-28 15:05:26 · 156 阅读 · 0 评论 -
2021年最棒的10款Java框架,你喜欢哪个?
Java是一种强大的语言,当与框架相结合时,Java可以为您提供电子商务,银行,云计算,财务,大数据,股票市场,且更多的任何域的最佳解决方案。如果您刚刚从Java开始,请参阅Java Live Active使用此博客将通过您需要知道的所有重要概念来开始使用框架。什么是Java框架?作为模板或骨架的预先写代码的正文,其中一个开发人员可以根据需要填写其代码来使用和重用以创建应用程序,以便在他们打算引用其作为框架时使用的代码来创建应用程序。重用框架使开发人员能够在没有手动开销的情况下从头开始创建每..原创 2021-08-27 16:05:55 · 3852 阅读 · 2 评论 -
Spring Boot实战练习:轻松搞定拦截器与过滤器
一、拦截器与过滤器在讲Spring boot之前,我们先了解一下过滤器和拦截器。这两者在功能方面很类似,但是在具体技术实现方面,差距还是比较大的。在分析两者的区别之前,我们先理解一下AOP的概念,AOP不是一种具体的技术,而是一种编程思想。在面向对象编程的过程中,我们很容易通过继承、多态来解决纵向扩展。但是对于横向的功能,比如,在所有的service方法中开启事务,或者统一记录日志等功能,面向对象的是无法解决的。所以AOP——面向切面编程其实是面向对象编程思想的一个补充。而我们今天讲的过滤器和拦截器都.原创 2021-08-26 15:19:17 · 142 阅读 · 0 评论 -
浅谈 Java 中字符串的初始化(详细图解)
前言在深入学习字符串类之前,我们先搞懂JVM是怎样处理新生字符串的。当你知道字符串的初始化细节后,再去写String s = "hello"或String s = new String("hello")等代码时,就能做到心中有数。首先得搞懂字符串常量池的概念,下面进入正文吧。常量池把经常用到的数据存放在某块内存中,避免频繁的数据创建与销毁,实现数据共享,提高系统性能。八种基础数据类型除了float和double都实现了常量池技术。在近代的JDK版本中(1.7后),字符串常量池被实现在原创 2021-08-25 15:41:29 · 2122 阅读 · 0 评论 -
如何设置Java线程池大小?
????Java 中线程池创建的几种方式首先我们要先知道 Java 中创建线程池的方式,java中创建线程池的方式一般有两种,如下所示: 通过Executors工厂方法创建 通过newThreadPoolExecutor(intcorePoolSize, intmaximumPoolSize, longkeepAliveTime,TimeUnitunit,BlockingQueue<Runnable>workQueue)自定义创建 ????????Executors原创 2021-08-19 14:27:06 · 1146 阅读 · 0 评论 -
基于Redis消息的订阅发布应用场景
基于Redis消息的订阅发布应用场景1.应用背景在物联网采集管控系统中,前后端隔离的情况下,前端通过表单(比如按钮,开关,表格等)输入数据到数据库(比如MySql,通过WEBAPI服务端输入),然后采集控制端到数据库里去扫表取数据,将数据下发给物联网络中的终端设备(比如风扇控制板),从而来控制风扇的开跟关。2.困境采集控制端需要到数据库中去扫表。这个扫表操作会带来几个问题:2.1 锁表风险扫表会有锁表风险,当该DBContext被占用的时候,其他线程不能实时使用此DBContext。原创 2021-08-17 20:47:50 · 739 阅读 · 0 评论 -
用Java仿一个低配版的Everything软件
用Java仿一个低配版的Everything软件"Everything" 是什么?"Everything" 是 Windows 上一款搜索引擎,它能够基于文件名快速定文件和文件夹位置。不像 Windows 内置搜索,"Everything" 默认显示电脑上每个文件和文件夹 (就如其名 "Everything")。您在搜索框输入的关键词将会筛选显示的文件和文件夹。总的来说,Everything是一款免费的可以快速检索文件、文件夹的,并且占用资源比较少的Windows应用软件。制作低配版转载 2021-08-16 19:40:23 · 335 阅读 · 0 评论 -
硬核分析 Java 内存 Cache 设计与最佳实践 - GuavaCache 篇
前言目前大部分互联网架构 Cache 已经成为了必可不少的一环。常用的方案有大家熟知的 NoSQL 数据库(Redis、Memcached),也有大量的进程内缓存比如 EhCache 、Guava Cache、Caffeine 等。本系列文章会选取本地缓存和分布式缓存(NoSQL)的优秀框架比较他们各自的优缺点、应用场景、项目中的最佳实践以及原理分析。本文主要针对本地 Cache 的老大哥 Guava Cache 进行介绍和分析。基本用法Guava Cache 通过简单好用的 Client原创 2021-08-16 19:13:48 · 911 阅读 · 0 评论 -
HashMap的实现原理和扩容原理是什么样的?
????什么是 HashMapHashMap 是基于哈希表的 Map接口 的非同步实现(Hashtable 跟 HashMap 很像,唯一的区别是 Hashtalbe 中的方法是线程安全的,也就是同步的)。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。数据结构:????????看几个问题问题 结论 HashMap 是否允许空 Key 和 Value 都允许为空 HashMap 是否原创 2021-08-16 19:09:07 · 559 阅读 · 0 评论 -
Java实战,轻松理解魔法般的代理模式
什么是代理模式代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。其实代理模式是一种和编程语言无关的设计模式,但是二当家的只有java掌握的还行,所以还是限定在java范围吧。代理模式中的角色抽象主题角色抽象主题角色是通过接口或抽象类声明真实主题角色需要实现的业务方法。是客户端仅需要关心的角色。例子中,我们用笔记本卖家作为抽象主题角色。package c原创 2021-08-14 20:25:13 · 152 阅读 · 0 评论 -
《高性能利器》--异步调用有哪些实现方式?
什么是异步同步调用:调用方在调用过程中,持续等待返回结果。异步调用:调用方在调用过程中,不直接等待返回结果,而是执行其他任务,结果返回形式通常为回调函数。脱离IO,单独讨论同步和异步,我们更加容易去理解它的原理,同步和异步其实属于一种通信机制,表达的是,我们在通信过程中,是主动去询问,还是等对方主动反馈。体现在同步(主动)和异步(被动)上。进程内异步调用1、Thread进程和线程:进程是资源分配的最小单位,线程是CPU调度的最小单位Java进程内最简单的异步调用方式,就是通过 new原创 2021-08-14 13:42:20 · 429 阅读 · 0 评论 -
Spring GateWay : 网关的转发细节
一 . 前言文档目的梳理 Gateway 生产中转发请求的细节 梳理 转发的定制点知识补充请求转发是 Gateway 最核心的功能之一 , 他涉及到三个主要的概念 :Route(路由): 路由是网关的基本单元,由ID、URI、一组Predicate、一组Filter组成,如果 Predicate 匹配 True ,则进行转发Predicate(谓语、断言): 路由转发的判断条件,这是一个 Java 8函数断言, 输入类型是 Spring Framework ServerWebEx原创 2021-08-13 16:06:00 · 10032 阅读 · 2 评论 -
聊一聊Java中那些常见的并发控制手段
单实例的并发控制,主要是针对JVM内,我们常规的手段即可满足需求,常见的手段大概有下面这些同步代码块 CAS自旋 锁 阻塞队列,令牌桶等1.1 同步代码块通过同步代码块,来确保同一时刻只会有一个线程执行对应的业务逻辑,常见的使用姿势如下public synchronized doProcess() { // 同步代码块,只会有一个线程执行}复制代码一般推荐使用最小区间使用原则,尽量不要直接在方法上加synchronized,比如经典的双重判定单例模式public原创 2021-08-13 15:56:53 · 904 阅读 · 0 评论 -
谈谈Java中的volatile
内存可见性volatile是Java提供的一种轻量级的同步机制,在并发编程中,它也扮演着比较重要的角色。同synchronized相比(synchronized通常称为重量级锁),volatile更轻量级,相比使用synchronized所带来的庞大开销,倘若能恰当的合理的使用volatile,自然是美事一桩。为了能比较清晰彻底的理解volatile,我们一步一步来分析。首先来看看如下代码<pre style="margin: 0px; padding: 0px; overflow: auto;原创 2021-08-12 14:23:09 · 140 阅读 · 0 评论 -
一文让你彻底搞懂多线程
如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”。很多人都对其中的一些概念不够明确,如同步、并发等等,让我们先建立一个数据字典,以免产生误会。多线程:指的是这个程序(一个进程)运行时产原创 2021-08-11 15:26:39 · 649 阅读 · 0 评论 -
探秘Java中的String、StringBuilder以及StringBuffer
相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String、StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景。下面是本文的目录大纲:一.你了解String类吗?二.深入理解String、StringBuffer、StringBuilder三.不同场景下三个类的性能测试四.常见的关于String、StringBuffer的面试题(辟谣网上流传的一些曲解String类的说法)若原创 2021-08-09 14:29:07 · 124 阅读 · 0 评论 -
【JVM系列】浅谈双亲委派和破坏双亲委派
一、前言笔者曾经阅读过周志明的《深入理解Java虚拟机》这本书,阅读完后自以为对jvm有了一定的了解,然而当真正碰到问题的时候,才发现自己读的有多粗糙,也体会到只有实践才能加深理解,正应对了那句话——“Talk is cheap, show me the code”。前段时间,笔者同事提出了一个关于类加载器破坏双亲委派的问题,以我们常见到的数据库驱动Driver为例,为什么要实现破坏双亲委派,下面一起来重温一下。二、双亲委派想要知道为什么要破坏双亲委派,就要先从什么是双亲委派说起,在此之前,我们原创 2021-08-07 14:14:58 · 196 阅读 · 0 评论 -
Java中定时任务的6种实现方式,你知道几种?
几乎在所有的项目中,定时任务的使用都是不可或缺的,如果使用不当甚至会造成资损。还记得多年前在做金融系统时,出款业务是通过定时任务对外打款,当时由于银行接口处理能力有限,外加定时任务使用不当,导致发出大量重复出款请求。还好在后面环节将交易卡在了系统内部,未发生资损。所以,系统的学习一下定时任务,是非常有必要的。这篇文章就带大家整体梳理学习一下Java领域中常见的几种定时任务实现。线程等待实现先从最原始最简单的方式来讲解。可以先创建一个thread,然后让它在while循环里一直运行着,通过sleep方法原创 2021-08-06 20:13:24 · 873 阅读 · 0 评论 -
浅析Java 8中Lambda 表达式
前言 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。λ表达式由三部分组成:参数列表,箭头(->),以及一个表达式或语句块。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。什么是Lambda 表达式 Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstract原创 2021-08-06 13:40:43 · 187 阅读 · 0 评论