- 博客(476)
- 资源 (2)
- 收藏
- 关注
原创 掌握线程池,轻松应对高并发挑战
本文深入浅出地探讨了线程池的原理与实践,通过实例分析和最佳实践,带领大家深入理解线程池的内部机制和应用场景,内容丰富,旨在为广大开发者提供应对高并发系统的关键技术支持。在现代软件开发中,线程池已成为一项不可或缺的技术,它能够有效优化系统性能,提高资源利用率。无论是初出茅庐的程序新手,还是经验丰富的技术大牛,掌握线程池技术都将对职业生涯大有裨益,相信您在阅读后会对线程池有更深刻的认识。
2024-10-24 15:56:51
1488
原创 Java 8 Stream API:从基础到高级,掌握流处理的艺术
Java 8 API 添加了一个新的抽象称为Stream(流),可以让你以一种声明的方式处理数据,这种风格将要处理的元素集合看做一种流,元素流在管道中传输,并在管道中间的节点上经过中间操作(intermediate operation)的处理(如:筛选,排序,聚合等),最后由最终操作(terminal operation)得到前面处理的结果。
2024-10-16 15:38:45
1702
原创 Java 8 Optional类:避免NullPointerException的利器
java.util.Optional是Java 8引入的一个容器类,目的是解决NullPointerException的问题,它可以保存的值,代表这个值存在,或者仅仅保存null,表示这个值不存在。原来用null表示一个值不存在,现在Optional可以更好的表达这个概念。
2024-08-28 18:07:27
1483
原创 Java 8 函数编程(lambda表达式)【总结记录】
Lambda表达式是Java 8 引入的一个重要特性,它是函数式编程在Java中的一种体现。在Java之前的版本中,Java主要采用面向对象的编程风格,而Lambda表达式的引入使得具备了函数编程的能力。
2024-08-27 14:15:01
1117
原创 Spring @Async注解【总结记录】
从Spring3开始提供了@Async注解,用于异步方法调用,调用者将在调用时立即返回,方法的实际执行将提交给Spring TaskExecutor的任务中,由指定的线程池中的线程执行。该注解可以被标注在类或方法(通常是Service层的方法)上,用于实现方法的异步执行,当被标注在类上时表明类中的所有方法都被指定的异步执行器执行。
2024-08-20 18:00:49
1492
原创 @Configuration注解使用详解【记录】
@Configuration类在Spring中既充当配置信息的角色,又作为容器中的一个Bean存在,其作用是提供一个灵活且强大的方式来定义和组装Spring Bean,使得Spring的配置更加灵活和方便。
2024-05-23 21:48:00
5987
原创 IDEA软件和插件安装
安装IDEA版本:IDEA windows 2021.1.3,使用该版本的IDEA,并且安装下面插件后,个人认为非常好用,并且可以不用破解,无限使用企业版,了解具体方法可以留言或私信。记录几个好用的IDEA插件(当前记录时间为:2024年5月20)
2024-05-20 22:00:48
886
1
原创 Elasticsearch DSL指令请求前缀解析:快速参考指南【记录】
DSL全称为"Domain Specific Language",英译中的结果就是,领域特定语言。指的是专注于某个应用程序领域的计算机语言,又译作领域专用语言。不同于其他计算机语言,顾名思义,这种语言只用在某些特定的领域。
2024-01-11 16:28:30
2386
原创 Elasticsearch 基本概念:快速入门指南【总结记录】
Elasticsearch是一个分布式、可扩展、实时的搜索和分析引擎,建立在开源搜索库Lucene之上。它提供了强大的全文搜索功能和复杂的分析能力,适用于各种场景,包括应用日志分析、电子商务搜索、实时数据分析等。本文将介绍一些基本概念,帮助您快速入门使用Elasticsearch。
2024-01-11 16:22:19
2351
原创 Elasticsearch 索引文档时create、index、update的区别【学习记录】
elasticsearch中create、index、update都可以实现插入功能,但是实现原理并不相同。
2024-01-11 15:04:53
3332
原创 Elasticsearch windows开箱即用【记录】
安装ES之前要在本机安装好JDK,对应的兼容性见官网链接:[https://www.elastic.co/cn/support/matrix](https://www.elastic.co/cn/support/matrix)ES官网链接:[https://www.elastic.co/cn/](https://www.elastic.co/cn/),我本机安装的是JDK8,测试使用的是7.3.0版本的ES和Kibana。
2024-01-10 15:30:03
799
原创 Spring 的缓存机制【记录】
在最近的业务需求开发过程中遇到了“传说中”的循环依赖问题,在之前学习Spring的时候经常会看到Spring是如何解决循环依赖问题的,所谓循环依赖即形成了一个环状的依赖关系,这个环中的某一个点产生不稳定变化都会导致整个链路产生不稳定的变化;此外循环依赖还会导致应用程序启动失败、内存溢出、甚至出现一些难以排查的问题,于是便系统性的对该问题进行学习和总结并整理文章如下。
2023-12-11 17:38:07
5015
原创 从头到尾说一次Spring事务管理(器)【学习记录】
## Spring事务管理解决了什么问题?Spring提供的事务管理可以帮我们管理事务相关资源,比如JDBC的Connection、Hibernate的Sesssion、MyBatis的SqlSession。如说上面的Connection绑定到ThreadLocal来解决共享一个事物的这种方式,Spring事物管理就已经帮我们做好了。
2023-10-24 21:08:35
8886
原创 OLAP和OLTP【记录】
因此 ,在产品设计方面,OLTP支持的产品最终是交易处理系统,并且需要更多的考虑如何确保流畅的用户体验,以及如何吸引用户尽可能长时间的留在产品上。然而,OLAP支持的产品需要更多地考虑如何控制访问,如何设计与其他实时系统的数据交互,如何在有一些突发事情需要处理时引导和提醒用户。你可以看到,在关系数据库中,基本上是OLTP系统中的数据库,所有的东西都被隔离并且存储在不同的表中,这样,当你在事务性的基础上写进或者读出单行记录时,你可以达到最高的效率。并试图根据OLTP系统中不存在的指标来建立用户的洞察力。
2023-05-30 18:11:27
9510
原创 Java 将配置注入到配置类的属性中供全局使用【开发记录】
本篇文章涉及白名单的解决方案、降级开关的解决方案,介绍如何将配置读注入到配置类的属性中供全局使用,以及对应的代码示例和配置示例。
2023-04-12 17:58:20
6491
原创 Java 解析配置文件注入到配置类属性中供全局使用【开发记录】
1、背景:假设目前有两个接口,一个是查询快递订单状态的JSF接口,一个是查询快运订单状态的JSF接口,现有一个需求,要将这两个接口统一为一个入口,发布到物流开放平台供外界调用。
2023-04-12 16:27:41
11064
原创 Java Double类型保留N位小数【记录】
Java Double类型保留N位小数。将Double类型保留四位小数后,返回Double类型:double value = decimalValue.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();将Double类型保留四位小数,返回Stirng类型(方式1):DecimalFormat df = new DecimalFormat("#.0000");String value = df.format(doubleValue);
2023-03-01 11:15:06
2854
原创 Java 中FastJson的使用【吃透FastJson】
JSON序列化、反序列化JavaBean的框架有很多,最常见的Jackson、阿里巴巴开源的FastJson、谷歌的GSON、apache提供的json-lib等,下面我们主要来熟悉一下:Java语言中FastJson的使用。
2023-02-13 17:10:53
2819
1
原创 JSON数据格式【学习记录】
JSON(JavaScript Objet Notation)是一种轻量级的数据交换格式。它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。它采用一种键:值对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言。“XML的时代已经过去,现在是JSON的时代”。相信现在这个观点很多人已经默认认同,那么我们是否有认真思考过为什么现在JSON能够顶替XML的地位。
2023-02-13 16:18:59
806
2
原创 Java Jackson TypeReference获取泛型类型信息【反序列化】
JSON序列化反序列化的框架有很多,最常见的Jackson、阿里巴巴开源的FastJson、谷歌的GSON、apache提供的json-lib等。本文以Jackson为例介绍TypeReference实现涉及泛型的反序列化,及TypeReference的实现原理。对于获取泛型类型信息的场景,TypeReference是一个可以参考的通用解决方案。Jackson ObjectMapper的readValue可以将Json字符串反序列化为Java对象。
2023-02-09 18:36:14
2163
1
原创 Java 中方法返回值前<T>的作用【泛型】
print1中的泛型域show对象的泛型相同,都是String,因此不能传入Integer类型的参数。而print2方法在返回值前定义了一个泛型`T`,因此方法参数类型不受对象泛型类型限制,这样定义的话这个方法是可以传入任意类型参数的。
2023-02-06 18:43:29
4176
1
原创 Java 中的Type类型及其实现【学习记录】
在JDK1.5之前只有原始类型,此时所有的原始类型都通过字节码文件类Class进行抽象。Class类的一个具体对象就代表一个指定的原始类型。JDK1.5加入了泛型类,扩充了数据类型,从只有原始类型基础上扩充了参数化类型、类型变量类型、通配符类型、泛型数组类型。Type是Java语言中所有类型(Class)的公共父接口。
2023-02-03 18:33:25
1715
原创 MyBatis二级缓存整合Redis【总结记录】
mybatis-redis在存储数据的时候,是使用的hash结构,把cache的id作为这个hash的key(cache的id在mybatis中就是mapper的namespace);这个mapper中的查询缓存数据作为hash的field,需要缓存的内容直接使用SerializeUtil存储,SerializeUtil和其它的序列化类差不多,负责对象的序列化和反序列化。
2023-02-02 18:26:57
1919
原创 MyBatis一级二级缓存【总结记录】
本文详细介绍了MyBatis的一级缓存和二级缓存的概念、工作原理以及使用方法。其中,一级缓存是SqlSession级别的缓存,生命周期与SqlSession相同,主要用来避免在同一个会话中重复执行相同的查询操作;二级缓存是namespace级别的缓存,生命周期与SqlSessionFactory相同,主要用来在多个会话之间共享查询结果,提高查询效率。同时,文章还介绍了如何将MyBatis与Redis整合,实现分布式缓存,解决单服务器工作的局限性。
2023-01-31 18:20:05
1698
2
原创 Java PageHelper实现物理分页【开发记录】
3、下面Page类是公司内部封装的分页插件,其实原理和PageHelper一样,实际开发对照PageHelper的属性开发即可,下面用到Page类中的几个属性:start是起始条数,length是每次查询的条数,类似于PageHelper插件中的startPage中的两个属性,totalRecords是执行当前SQL满足条件的总条数(数据会在第一次执行SQL后,查出总条数封装到Page的totalRecords中)。
2022-11-17 11:22:24
1367
原创 Java Stream流切割集合成多个子集合【开发记录】
1、简单的说一下要实现的功能:目前在做一个需求是需要调用其它部门的一个批量接口,根据部门编号获取部门信息,由于性能考虑,该接口一次性最多传入200条部门编号,由于我们调用时传入的部门编号集合大小未知,所以要在调用前将该集合拆分成子集合,然后用子集合调用该接口,最后将所有的结果组装即可。3、废话不多说,直接上代码:(亲测可用)2)第二步:使用子集合分别调用接口。3)第三步:将调用结果组装成结果集。1)第一步:拆分事业部编号集合。
2022-10-23 22:21:35
4593
原创 Java AES加密/解密工具类【开发记录】
一、Aes加密解密工具类:(兼容JDK1.6)注意:如果项目默认项目为JDK1.8,则可以将Base64引入以及对应的API替换。解密算法替换:byte[] original = cipher.doFinal(Base64.getDecoder().decode(encodeString));加密算法替换:return Base64.getEncoder().encodeToString(original);
2022-09-07 10:53:36
836
原创 Mysql 实现级联操作【记录】
1、为什么要实现级联操作,什么是级联操作?当你想要修改主表的数据,由于从表引用了主表的数据,不能直接修改主表的数据,会报错,所以这个时候我们就需要进行级联操作。在修改和删除主表的主键时,同时更新或删除从表的外键值,称为级联操作。...
2022-08-07 20:21:44
462
原创 Java 序列化和反序列化【回顾总结】
ObjectOutputStream采用默认的序列化方式,对User对象的非transient的实例变量进行序列化,ObjectInputStream采用默认的反序列化方式,对User对象的非transient的实例变量进行反序列化。网络传输包括通过二进制流与浏览器进行交互时,通过RPC进行远程调用时(对象跨平台跨语言传输,也即从windows上序列化的对象可到linux上反序列化,用c#序列化的对象可以被java反序列化)。如果一个对象的成员变量是一个对象,那么这个对象的数据成员也会被保存!...
2022-07-25 23:36:07
573
原创 Java 字符串压缩/解压【开发记录】
1、场景:由于数据库字段长度有限,并且不能随意的修改数据库字段的配置,数据库的某个字段设置的长度可能在设置初期是满足需求的,后期由于业务变更或业务量增大导致该字段存储的数据增长,落库时可能因为该字段数据长度过长导致落库失败,基于这种场景我们就有必要进行字符串的压缩,然后再进行落库,而落库后取出数据使用时再进行解压即可。2、CompressUtil类:使用Java8中的gzip来进行实现3、注意点:1)CompressUtil在压缩过程和解压过程使用统一字符集,防止压缩和解压过程因为字符集不同导致结果与实际
2022-06-08 14:36:06
2775
1
原创 Redis 面试相关问题【总结】
1、Redis是单线程还是多线程?2、为什么Redis在4.0之前会选择使用单线程?而且使用单线程还那么快?选择单线程个人觉得主要是使用简单,不存在锁竞争,可以在无锁的情况下完成所有操作,不存在死锁和线程切换带来的性能和时间上的开销,但同时单线程也不能完全发挥出多核CPU的性能。至于为什么单线程那么快我觉得有以下几个原因:Redis的大部分操作都是在内存中完成,内存中的执行效率本身就快,并且采用了高效的数据结构,比如哈希表和跳表;使用单线程避免了多线程的竞争,省去了多线程切换带来的时间和性能开销,并且不会出
2022-06-07 23:11:14
303
原创 Spring AOP【学不会今天不睡觉】
今天面试被问到AOP的细节,有点东西模棱两可,今天晚上必须彻底搞定它!!!一、对AOP初印象: 1、什么是AOP?AOP(Aspect Oriented Programming),面向切面思想,是Spring的三大核心思想之一(另外两个:IOC-控制反转,DI-依赖注入)。来自百度:AOP通过预编译的方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务的各个
2022-05-09 22:50:35
464
原创 IDEA 中没有创建spring项目的选项【记录】
1、项目中没有下面创建spring项目的选项:2、按住Ctrl + Shift + Alt + /,弹出:(选择第一个注册表)3、找到:javaee,legacy.projext.wizard并勾选4、关闭选项,重启IDEA即可。
2022-05-08 10:27:45
2641
3
原创 main方法里使用@Autowired注解报空指针错误【记录】
main方法里使用@Autowired注解报空指针错误1、创建IB接口:package com.ms.demo;import org.springframework.stereotype.Service;@Servicepublic interface IB { void f1();}2、创建B类实现IB接口:package com.ms.demo;public class B implements IB{ public B(){ System.o
2022-05-08 10:21:42
2655
原创 spring 中Mapper为什么不用注入,而且mapper用resource注解来进行依赖注入?【记录】
springboot已经把所有mapper全部注入到ioc容器中去了,注入的类型是mapperFactoryBean这个工厂bean,它的 id就是mapper接口的小写;在依赖注入mapper类型的时候,不能用 byType注入,因为mapper的Type是mapperFactoryBean与Mapper接口类型不匹配,只能byName注入;所以选择@Resource注入,如果不指定name或type,那么@Resource默认按照byName注入,此时的name就是字段的变量名,不是类型的小写,所.
2022-05-08 09:32:01
1747
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人