自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

单枪匹码

本人博客仅供学习使用,无任何收益和商业用途,如有侵权,请联系我删除,感谢包容和理解。

  • 博客(469)
  • 资源 (2)
  • 收藏
  • 关注

原创 Elasticsearch 数据类型相关总结:快速参考指南【记录】

在Elasticsearch中,有多种数据类型可用于定义字段。

2024-01-16 18:22:29 2263

原创 Elasticsearch DSL指令请求前缀解析:快速参考指南【记录】

DSL全称为"Domain Specific Language",英译中的结果就是,领域特定语言。指的是专注于某个应用程序领域的计算机语言,又译作领域专用语言。不同于其他计算机语言,顾名思义,这种语言只用在某些特定的领域。

2024-01-11 16:28:30 2170

原创 Elasticsearch 基本概念:快速入门指南【总结记录】

Elasticsearch是一个分布式、可扩展、实时的搜索和分析引擎,建立在开源搜索库Lucene之上。它提供了强大的全文搜索功能和复杂的分析能力,适用于各种场景,包括应用日志分析、电子商务搜索、实时数据分析等。本文将介绍一些基本概念,帮助您快速入门使用Elasticsearch。

2024-01-11 16:22:19 2170

原创 Elasticsearch 索引文档时create、index、update的区别【学习记录】

elasticsearch中create、index、update都可以实现插入功能,但是实现原理并不相同。

2024-01-11 15:04:53 1803

原创 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 673

原创 Spring 的缓存机制【记录】

在最近的业务需求开发过程中遇到了“传说中”的循环依赖问题,在之前学习Spring的时候经常会看到Spring是如何解决循环依赖问题的,所谓循环依赖即形成了一个环状的依赖关系,这个环中的某一个点产生不稳定变化都会导致整个链路产生不稳定的变化;此外循环依赖还会导致应用程序启动失败、内存溢出、甚至出现一些难以排查的问题,于是便系统性的对该问题进行学习和总结并整理文章如下。

2023-12-11 17:38:07 4775

原创 从头到尾说一次Spring事务管理(器)【学习记录】

## Spring事务管理解决了什么问题?Spring提供的事务管理可以帮我们管理事务相关资源,比如JDBC的Connection、Hibernate的Sesssion、MyBatis的SqlSession。如说上面的Connection绑定到ThreadLocal来解决共享一个事物的这种方式,Spring事物管理就已经帮我们做好了。

2023-10-24 21:08:35 8752

原创 OLAP和OLTP【记录】

因此 ,在产品设计方面,OLTP支持的产品最终是交易处理系统,并且需要更多的考虑如何确保流畅的用户体验,以及如何吸引用户尽可能长时间的留在产品上。然而,OLAP支持的产品需要更多地考虑如何控制访问,如何设计与其他实时系统的数据交互,如何在有一些突发事情需要处理时引导和提醒用户。你可以看到,在关系数据库中,基本上是OLTP系统中的数据库,所有的东西都被隔离并且存储在不同的表中,这样,当你在事务性的基础上写进或者读出单行记录时,你可以达到最高的效率。并试图根据OLTP系统中不存在的指标来建立用户的洞察力。

2023-05-30 18:11:27 9422

原创 Java 将配置注入到配置类的属性中供全局使用【开发记录】

本篇文章涉及白名单的解决方案、降级开关的解决方案,介绍如何将配置读注入到配置类的属性中供全局使用,以及对应的代码示例和配置示例。

2023-04-12 17:58:20 6222 1

原创 Java 解析配置文件注入到配置类属性中供全局使用【开发记录】

1、背景:假设目前有两个接口,一个是查询快递订单状态的JSF接口,一个是查询快运订单状态的JSF接口,现有一个需求,要将这两个接口统一为一个入口,发布到物流开放平台供外界调用。

2023-04-12 16:27:41 10807 1

原创 Git 提交规范【记录】

以下是commit提交规范,主要是在提交代码时标识本次提交的属性。

2023-03-21 10:32:15 154

原创 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 2180

原创 Java 中FastJson的使用【吃透FastJson】

JSON序列化、反序列化JavaBean的框架有很多,最常见的Jackson、阿里巴巴开源的FastJson、谷歌的GSON、apache提供的json-lib等,下面我们主要来熟悉一下:Java语言中FastJson的使用。

2023-02-13 17:10:53 2518 1

原创 JSON数据格式【学习记录】

JSON(JavaScript Objet Notation)是一种轻量级的数据交换格式。它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。它采用一种键:值对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言。“XML的时代已经过去,现在是JSON的时代”。相信现在这个观点很多人已经默认认同,那么我们是否有认真思考过为什么现在JSON能够顶替XML的地位。

2023-02-13 16:18:59 627 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 1826 1

原创 Java 中方法返回值前<T>的作用【泛型】

print1中的泛型域show对象的泛型相同,都是String,因此不能传入Integer类型的参数。而print2方法在返回值前定义了一个泛型`T`,因此方法参数类型不受对象泛型类型限制,这样定义的话这个方法是可以传入任意类型参数的。

2023-02-06 18:43:29 3178 1

原创 Java 中的Type类型及其实现【学习记录】

在JDK1.5之前只有原始类型,此时所有的原始类型都通过字节码文件类Class进行抽象。Class类的一个具体对象就代表一个指定的原始类型。JDK1.5加入了泛型类,扩充了数据类型,从只有原始类型基础上扩充了参数化类型、类型变量类型、通配符类型、泛型数组类型。Type是Java语言中所有类型(Class)的公共父接口。

2023-02-03 18:33:25 1450

原创 MyBatis 二级缓存整合Redis【学习记录】

可以很清楚的看到,mybatis-redis在存储数据的时候,是使用的hash结构,把cache的id作为这个hash的key(cache的id在mybatis中就是mapper的namespace);RedisCache在MyBatis启动的时候,由MyBatis的CacheBuilder创建,创建的方式很简单,就是调用RedisCache的带有String参数的构造方法,即RedisCache(String id);3)redis.properties(文件名称不能改,不然无法获取里面的数据)

2023-02-02 18:26:57 1736

原创 MyBatis 一级二级缓存【学习记录】

一级缓存的作用域仅限于一个SqlSession,但是二级缓存的作用域是一个namespace。这里的原则是,**如果开启了二级缓存,那么在关闭SqlSession后,会把SqlSession一级缓存中的数据添加到namespace的二级缓存中(也就是说多个SqlSession可以共享一个mapper中的二级缓存区域,并且如果两个mapper的namespace相同,即使是两个mapper,那么两个mapper中执行sql查询到的数据也将存在相同的二级缓存区域中)。

2023-01-31 18:20:05 1597 2

原创 Java PageHelper实现物理分页【开发记录】

3、下面Page类是公司内部封装的分页插件,其实原理和PageHelper一样,实际开发对照PageHelper的属性开发即可,下面用到Page类中的几个属性:start是起始条数,length是每次查询的条数,类似于PageHelper插件中的startPage中的两个属性,totalRecords是执行当前SQL满足条件的总条数(数据会在第一次执行SQL后,查出总条数封装到Page的totalRecords中)。

2022-11-17 11:22:24 1228

原创 Java ListUtils将集合切分成多个子集合【开发记录】

1、上篇文章是通过Stream流实现,也可以通过Util类实现:(亲测可用)

2022-10-24 21:41:46 715

原创 Java Stream流切割集合成多个子集合【开发记录】

1、简单的说一下要实现的功能:目前在做一个需求是需要调用其它部门的一个批量接口,根据部门编号获取部门信息,由于性能考虑,该接口一次性最多传入200条部门编号,由于我们调用时传入的部门编号集合大小未知,所以要在调用前将该集合拆分成子集合,然后用子集合调用该接口,最后将所有的结果组装即可。3、废话不多说,直接上代码:(亲测可用)2)第二步:使用子集合分别调用接口。3)第三步:将调用结果组装成结果集。1)第一步:拆分事业部编号集合。

2022-10-23 22:21:35 3933

原创 Java 获取资源路径【记录】

【代码】Java 获取资源路径【记录】

2022-10-18 11:50:43 1327

原创 Java 对象转Map无异常抛出方法【开发记录】

1、对象转Map方法(无异常抛出)

2022-09-07 11:14:07 189

原创 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 518

原创 Mysql 实现级联操作【记录】

1、为什么要实现级联操作,什么是级联操作?当你想要修改主表的数据,由于从表引用了主表的数据,不能直接修改主表的数据,会报错,所以这个时候我们就需要进行级联操作。在修改和删除主表的主键时,同时更新或删除从表的外键值,称为级联操作。...

2022-08-07 20:21:44 313

原创 Java 序列化和反序列化【回顾总结】

ObjectOutputStream采用默认的序列化方式,对User对象的非transient的实例变量进行序列化,ObjectInputStream采用默认的反序列化方式,对User对象的非transient的实例变量进行反序列化。网络传输包括通过二进制流与浏览器进行交互时,通过RPC进行远程调用时(对象跨平台跨语言传输,也即从windows上序列化的对象可到linux上反序列化,用c#序列化的对象可以被java反序列化)。如果一个对象的成员变量是一个对象,那么这个对象的数据成员也会被保存!...

2022-07-25 23:36:07 473

原创 Java 字符串压缩/解压【开发记录】

1、场景:由于数据库字段长度有限,并且不能随意的修改数据库字段的配置,数据库的某个字段设置的长度可能在设置初期是满足需求的,后期由于业务变更或业务量增大导致该字段存储的数据增长,落库时可能因为该字段数据长度过长导致落库失败,基于这种场景我们就有必要进行字符串的压缩,然后再进行落库,而落库后取出数据使用时再进行解压即可。2、CompressUtil类:使用Java8中的gzip来进行实现3、注意点:1)CompressUtil在压缩过程和解压过程使用统一字符集,防止压缩和解压过程因为字符集不同导致结果与实际

2022-06-08 14:36:06 2530 1

原创 Redis 面试相关问题【总结】

1、Redis是单线程还是多线程?2、为什么Redis在4.0之前会选择使用单线程?而且使用单线程还那么快?选择单线程个人觉得主要是使用简单,不存在锁竞争,可以在无锁的情况下完成所有操作,不存在死锁和线程切换带来的性能和时间上的开销,但同时单线程也不能完全发挥出多核CPU的性能。至于为什么单线程那么快我觉得有以下几个原因:Redis的大部分操作都是在内存中完成,内存中的执行效率本身就快,并且采用了高效的数据结构,比如哈希表和跳表;使用单线程避免了多线程的竞争,省去了多线程切换带来的时间和性能开销,并且不会出

2022-06-07 23:11:14 231

原创 Spring AOP【学不会今天不睡觉】

今天面试被问到AOP的细节,有点东西模棱两可,今天晚上必须彻底搞定它!!!一、对AOP初印象: 参考文章1、什么是AOP?AOP(Aspect Oriented Programming),面向切面思想,是Spring的三大核心思想之一(另外两个:IOC-控制反转,DI-依赖注入)。来自百度:AOP通过预编译的方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务的各个

2022-05-09 22:50:35 401

原创 IDEA 中没有创建spring项目的选项【记录】

1、项目中没有下面创建spring项目的选项:2、按住Ctrl + Shift + Alt + /,弹出:(选择第一个注册表)3、找到:javaee,legacy.projext.wizard并勾选4、关闭选项,重启IDEA即可。

2022-05-08 10:27:45 2438 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 2381

原创 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 1529

原创 Java 线程池的使用【四】【Executors】

一、使用Executors创建四种线程池:Executors类提供工厂方法用来创建不同类型的线程池,实际上Executors创建的四种线程底层的实现都是通过ThreadPoolExecutor实现的。ExecutorService executorService = Executors.具体类型的线程池;通过调用返回值ExecutorService类的submit方法,将具体执行的线程任务传入到线程池中并执行。线程任务的创建:跳转链接(下面例子都以Runnable接口为例)。1)newCache

2022-05-04 16:16:30 1443

原创 Java 线程池的使用【三】【ScheduledThreadPoolExecutor】

一、ScheduledThreadPoolExecutor:1、简介:ScheduledThreadPoolExecutor可以用来:在给定延时后执行异步任务或者周期性执行任务,JDK5.0之前都是使用Timer或TimerTask来处理定时任务,相对于任务调度的Timer来说,其功能更加强大,Timer只能使用一个后台线程执行任务,而ScheduledThreadPoolExecutor则可以通过构造函数来指定后台线程的个数。Timer和TimerTask存在的一些缺陷:Timer只创建了一个线程,

2022-05-03 18:48:53 2272

原创 Java 线程池的使用【二】【ThreadPoolExecutor】

一、ThreadPoolExecutor:线程池实现类ThreadPoolExecutor是Executor框架最核心的类,继承自Executor接口,里面有一个execute方法,用来执行线程,线程池主要提供一个队列,队列中保存着所有等待状态的线程。ThreadPoolExecutor类中提供的四个构造方法。我们来看最长的那个,其余三个都是在这个构造方法基础上产生的。public ThreadPoolExecutor(int corePoolSize,//核心线程数

2022-05-03 18:33:26 1099

原创 设计模式系列【24】:装饰器模式(装饰设计模式)详解

上班族大多都有睡懒觉的习惯,每天早上上班时间都很紧张,于是很多人为了多睡一会,就会用方便的方式解决早餐问题。有些人早餐可能会吃煎饼,煎饼中可以加鸡蛋,也可以加香肠,但是不管怎么"加码",都还是一个煎饼。在现实生活中,常常需要对现有产品增加新的功能或美化其外观,如房子装修、相片加相框等,都是装饰器模式。在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以动态地扩展其功能。所有这些都可以采用装饰器模式来实现。装饰器模式的定义与特点装饰器(Decora

2022-01-13 23:35:16 664

原创 设计模式系列【23】:桥接模式(Bridge模式)详解

在现实生活中,某些类具有两个或多个维度的变化,如图形既可以按形状分,又可按颜色分。如何设计类似于Photoshop这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m种形状和n种颜色的图形就有m × n种,不但对应的子类很多,而且扩展困难。当然,这样的例子还有很多,如不同颜色和字体的文字,不同品牌和功率的汽车、不同性别和职业的男女、支持不同平台和不同文件格式的媒体播放器等。如果用桥接模式就能很好的理解这样的问题。桥接模式的定义与特点...

2022-01-10 22:59:30 1728

原创 log4j2.xml完美配置【记录】

log4j2.xml配置文件:<?xml version="1.0" encoding="UTF-8"?><!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --><!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出--&g

2021-08-31 15:56:55 2232

原创 设计模式系列【22】:适配器模式(Adapter模式)详解

在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本接交流电源时需要一个电源适配器,用计算机访问照相机的SD内存卡时需要一个读卡器等。在软件设计中也可能出现:需要开发的具有某种业务功能的组件在现有组件库中已经存在,但它们与当前系统的接口的规范不兼容,如果重新开发这些组件成本又高,这时用适配器模式能很好地解决这些问题。模式的定义与特点适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的

2021-08-19 17:32:03 659

node-v14.8.0-x64.msi

node-v14.8.0-x64.js window系统 64安装包,下载解压可以直接使用,免配置环境变量,省着去外网下载

2020-08-27

element-dev.zip

使用node.js使用npm run dist解析之后的element.ui本地使用资源,有lib目录可以直接使用

2020-08-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除