自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 Leetcode刷题记录

【代码】Leetcode刷题记录。

2024-06-24 16:46:58 92

原创 【学习笔记】JSON相关

JsonObject的get方法得到的对象是JsonElement对象,然后根据key对应的value类型,分别调用对应的 getAsInt 、getAsString 等方法。Java的泛型只在编译时有效,到了运行时这个泛型类型就会被擦除掉,即List<String>和List<Integer>在运行时其实都是List<Object>类型。如果key本身不存在的话,get方法返回的JsonElement对象是null,因此会出现空指针异常,所以需要在使用之前确定key本身存在。转换日期类型(低版本)

2024-06-20 17:34:35 384

原创 【学习笔记】ElasticSearch

Node节点,一个ES实例就是一个node,一个机器可以有多个实例,大多数情况下每个node运行在一个独立的环境或虚拟机上。Cluster集群,一个ES集群由一个或多个节点(Node)组成,每个集群都有一个Cluster Name作为标识。分片是独立的,对于一个Search Request的行为,每个分片都会执行这个Request。shard分片,ES是分布式搜索引擎,每个索引有一个或多个分片,索引的数据分配到各个分片上。中文社区:https://elasticsearch.cn/

2024-06-20 17:21:26 257

原创 http客户端相关知识

浏览器是多线程,浏览器为每个标签页开启了独立的渲染进程,每个进程之间的资源(CPU,内存等)和行为(UI,逻辑等)互不共享,所以即使某个标签页奔溃了也不会影响其他标签页。构建DOM树 非阻塞资源(图片、CSS),浏览器请求这些资源并继续解析;RestTemplate是Spring用于同步client端的核心类,简化与http服务的通信。Dockerfile是一个文本文件,其包含一条条的指令,每一条指令构建一层。镜像的定制实际上就是定制每一层添加的配置、文件。TCP慢启动 14KB规则。

2024-06-20 15:38:29 243

原创 【学习笔记】集合相关

Collections.nCopies方法 复制某个元素N遍,不可变;通过ArrayList包装可以变为可变。Collections.singletonList方法 初始化单个对象,不可变。静态导入,这种方式添加的是不可变的 List, 即不能执行添加、删除等操作。Arrays 工具类 asList方法。通过ArrayList包装可以变为可变。Collections 工具类。

2024-06-20 12:44:16 130

原创 【学习笔记】SpringBoot相关

【代码】【学习笔记】SpringBoot相关。

2024-06-19 21:38:50 94

原创 【学习笔记】maven相关

解决方法:文件->设置->构建、执行、部署->构建工具->Maven->运行程序→勾选将IDE构建/运行操作委托给Maven。解决方法:在pom.xml的<project>里添加以下配置,使得测试出错不影响项目的编译。问题:maven编译时出现There are test failures。问题:编译时提示包不存在。

2024-06-19 17:41:58 168

原创 JDK21新特性

JDK 21已经于2023年9月19日正式发布。根据发布的规划,这次发布的 JDK 21 将是一个长期支持版(LTS 版)。LTS 版每 2 年发布一个,上一次长期支持版是 21 年 9 月发布的 JDK 17。

2024-06-19 14:59:07 579

原创 【学习笔记】MyBatis

foreach元素的属性主要有 item,index,collection,open,separator,close。suffixOverrides: 指定去除多余的后缀内容,如:suffixOverrides=",",去除trim标签内sql语句多余的后缀","if标签中有一个test属性,test属性值是一个符合OGNL要求的判断表达式,表达式的结果可以是true或者false。choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。

2024-06-18 18:17:54 271

原创 【学习笔记】Hive

拼接一列中的字符串:concat_ws('_',collect_set(col1)) presto代替方法:array_join(array_distinct(array_agg(order_id)), ',')substr(string A, int start, int len),substring(string A, intstart, int len) 返回字符串A从start位置开始,长度为len的字符串。正则匹配 regexp_extract_all(data, '-?\d+(.\d+)(

2024-06-18 17:54:23 767

原创 【学习笔记】正则表达式

前面字符出现0次或1次,或指明一个非贪婪限定符。\b 匹配一个单词边界,即字与空格间的位置。[^ABC] 匹配除了[...]所有字符。() 匹配一个子表达式的开始和结束位置。{n,m} 最少匹配n词,最多匹配m次。[ABC] 匹配[...]所有字符。. 匹配除了\r \n任何单个字符。[ 标记一个中括号表达式的开始。\ 将下一个字符标记为特殊字符。$ 匹配输入字符串的结尾位置。* 前面字符出现0次或多次。{ 标记限定符表达式的开始。[A-Z] 匹配一个区间。{n} 匹配确定的n次。{n,} 至少匹配n次。

2024-06-18 17:38:04 8

原创 Java IO

字节数组(byte[]): ByteArrayInputStream、ByteArrayOutputStream。字节流用来处理二进制文件(图片、MP3、视频文件),字符流用来处理文本文件(特殊的二进制文件)从数据传输方式角度看,可以将IO类分为字节流,字符流。编码就是把字符转换成字节,解码是把字节重新组合成字符。如果编码和解码过程使用不同的编码方式那么就出现了乱码。字节流读取单个字节,字符流读取单个字符。Java使用双字节编码UTF-16be。Unix下有5种I/O模型。

2024-06-18 15:40:02 239

原创 cron表达式

只能用在DayofMonth和DayofWeek两个域,匹配域的任意值。W表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件,W的最近寻找不会跨过月份。L表示最后,只能出现在DayofWeek和DayofMonth域。如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。#用于确定每个月第几个星期几,只能出现在DayofMonth域。*表示匹配该域的任意值。假如在Minutes域使用*,即表示每分钟都会触发时间。

2024-06-17 21:33:47 233

原创 JUnit单元测试

/ 检查两个相关对象是否指向不同的一个对象。// 检查两个相关对象是否指向同一个对象。@Before 该方法需要在test方法前运行,在运行前需要创造几个相似的对象。

2024-06-17 18:09:18 161

原创 mapstruct实体类属性映射

AfterMapping 和 @MappingTarget (属性的自定义映射处理)用于针对mapstruct 处理不了的一些属性的映射,在映射的最后一步,对属性的自定义映射处理。@BeanMapping(ignoreByDefault = true 忽略mapstruct默认的映射行为,只映射那些配置了@Mapping的属性)属性是引用对象的映射,就是说如果一个属性是引用类型的话,默认是没有进行复制,对象 也可以映射的,需要加下面这个配置。不同名字的属性,也是可以映射的;日期类型和String之间。

2024-06-17 17:10:08 176

原创 Java字符串相关

字符串长度在10万量级下,String.concat方法、StringBuilder.append方法、StringBuffer.append方法性能差别不大。JDK8 +操作是通过构建一个StringBuilder对象,调用对象的append方法实现。AbstractStringBuilder的append方法扩容机制。append方法入参可以是Object。append方法入参可以是Object。toStringCache缓存。append方法线程不安全。append方法线程安全。

2024-06-17 14:03:05 202

原创 【学习笔记】JDK7、8相关

lambda表达式允许通过表达式来代替功能接口lambda表达式的语法双冒号(::)操作符是Java中的方法引用,当我们使用一个方法的引用时,目标引用放在::之前,目标引用提供的方法名称放在::之后,即目标引用::方法lambda表达式foreach代替for循环");"));代替匿名内部类,可用于实现Runnable接口实现排序匿名内部类@Override});lambda表达式Comparator.reversed 返回相反的排序规则。

2024-06-16 18:57:24 920

原创 【学习笔记】Zookeeper相关

1. 处理客户端非事务性请求(读取数据),转发事务请求给Leader服务器。1. 事务请求的唯一调度和处理者,保证集群事务处理的顺序性。微服务:在分布式架构的基础上提取了公共系统模块。2. 参与事务请求Proposal的投票。Zookeeper集群节点的角色。2. 集群内部各服务器的调度者。3. 参与Leader选举投票。

2024-06-16 17:41:43 177

原创 【学习笔记】redis相关

Redis支持五种主要数据结构:字符串(Strings)、列表(Lists)、哈希表(Hashes)、集合(Sets)和有序集合(Sorted Sets)。这些数据结构为开发者提供了灵活的数据操作方式,满足了不同场景下的数据存储需求。Redis使用单线程模型,这意味着它只使用一个CPU来处理所有请求。因此,Redis不需要考虑多线程之间的同步、锁、竞争等问题,也不需要花费时间和资源在多线程之间的上下文切换上。这使得Redis的设计和实现更简单,性能和效率更高。那么,Redis为什么选择单线程模型呢?

2024-06-16 17:28:17 402

原创 【学习笔记】领域驱动设计相关

缺点:取消业务逻辑层,直接在domain Object上封装事务及授权,授权很多根本不属于这个领域对象的逻辑,模型不稳定。用户界面层(User Interface):处理用户发送的Restful请求,解析配置文件。业务对象模型:业务逻辑流转的过程中需要的所有角色,甚至包括业务逻辑流转本身。- DictAgg 领域聚合,通常表现为实体的聚合,需要有聚合根。4.由于Spring的存在,其实我们的开发是不符合面向对象的。环境层(Context):领域与行为绑定,聚合。缺点:无法良好地应对非常复杂的逻辑及场景。

2024-06-16 16:16:37 218

原创 【学习笔记】设计模式相关

创建型模式结构型模式行为模式。

2024-06-16 16:00:39 126

原创 【学习笔记】操作系统相关

管道的实质是一个内核缓冲区,进程以先进先出的方式从缓冲区存取数据,管道一端的进程顺序地将数据写入缓冲区,另一端的进程顺序地读出数据。linux内核跑在ring 0级,用户程序跑在ring 3级,对于系统的关键访问,需要经过kernel的同意,保证系统健壮性。分配资源最重要的是:独立的内存空间,线程调度执行(线程共享进程的内存空间,没有自己独立的内存空间)。加载的过程中,如果内存已经满了,会把最不常用的一块放到swap分区,把最新的一块加载进来,LRU算法。

2024-06-15 19:46:31 388

原创 【学习笔记】SpringMVC相关

说明:进行视图解析,首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。说明:根据请求的url查找Handler(即处理器Controller),映射方式有配置文件方式,实现接口方式,注解方式等。说明:Handler需要开发工程师按照HandlerAdapter的要求去做,是后端控制器,处理具体的业务逻辑。说明:Spring MVC的入口函数,接受请求,响应结果,相当于转发器,中央处理器。

2024-06-14 17:40:18 280

原创 【学习笔记】并发相关

主要工作是控制运行的线程数量,把大于线程池数量的线程放到队列中,等到线程池有空闲线程,再从队列取出任务来执行。提高线程的可管理性,减少资源的消耗,降低系统的稳定性,使用线程池可以进行统一的分分配,调优和监控。4. newSingleThreadExecutor 线程池中永远只要一个线程在工作。使用线程池的好处是减少在创建和销毁线程上所花的时间以及系统资源的开销。提高响应速度,当任务到达时,任务可以不需要等到线程创建就能立即执行。降低资源消耗,通过重复利用创建的线程降低线程创建和销毁造成的消耗。

2024-06-13 20:21:11 298

原创 【学习笔记】MySQL相关

在事务开始的时候向InnoDB的事务系统申请,按申请顺序严格递增,每条记录在更新的时候都会同时记录一条undo log,这条log就会记录当前事务的transaction id,记为rowtrx_id。在可重复的隔离级别下,一个事务在启动时,InnoDB会为事务构造一个数组,用来保存这个事务启动的瞬间当前正在活跃的所有事务ID。活跃指的是启动但还没提交。分析sql语句,看看是否load了额外的数据,可能是查询了多余的行并且抛弃掉了,可能是加载了许多结果中并不需要的列,对语句进行分析以及重写。

2024-06-12 17:55:45 645

原创 【学习笔记】代码

二分查找public static int BinarySearch(int []array, int a) { int low = 0; int high = array.length - 1; int mid; while(low <= high) { mid = (low + high) / 2; // 中间位置 if(array[mid] == a) {

2024-06-11 16:52:23 93

原创 【学习笔记】事务相关

事务是逻辑上的一组操作,要么都执行,要么都不执行。

2024-06-11 16:22:05 307

原创 【学习笔记】JVM相关

灰色 -> 白色引用消失时,如果没有黑色指向白色引用会被push到堆栈,下次扫描时拿到这个引用,由于有RSet的存在,不需要扫描整个堆去查找指向白色的引用,效率较高。2. SATB(snapshot at the beginning):关注引用的删除 当引用消失时,把这个引用推到GC的堆栈,保证D还能被GC扫描到(G1)每个线程在创建的时候都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应一次次Java方法调用,是线程私有的,生命周期和线程一致。

2024-06-11 14:36:57 821

原创 【学习笔记】Spring相关

Spring容器可以理解为生产对象(Object)的地方,负责对象的整个生命周期——创建、装配、销毁。称Bean工厂(com.springframework.beans.factory.BeanFactory)为IoC容器,而称ApplicationContext为应用上下文。ApplicationContext是BeanFactory的子接口。它们都可以当做Spring的容器,Spring容器是生成Bean实例的工厂,并管理容器中的Bean。

2024-06-10 19:31:03 937

空空如也

空空如也

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

TA关注的人

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