自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一些SQL优化经验(非添加索引版)

在查询结果表之前 用存储过程将结果写入结果表,然后再进行查询。可能导致全表扫描,尤其是子查询结果集较大时。内存临时表减少磁盘 IO,但需注意内存容量。将待操作数据先写入临时表,减少锁竞争。子查询结果集较大,且关联字段有索引。在找到第一条匹配后终止扫描,效率更高。可能导致全表排序和去重,内存消耗大。条件+游标方式(如基于时间或主键)。高频查询的复杂视图(如报表接口)。查询时直接查询结果表,提升查询效果。),帮助优化器生成高效计划。基于临时表执行批量操作。)会导致隐式转换和性能下降。更新表的统计信息(如。

2025-03-23 17:43:11 663

原创 Java实现自动化生成SQL COALESCE表达式

通过这种方式,我们可以减少手动编写重复代码的工作量,同时降低出错率,让SQL编写更加高效。不仅费时,还容易出错。为了简化这个过程,我们可以编写一个程序来自动生成这些表达式。操作时使用,比如在数据整合、报表生成等场景中,可以大大提高工作效率。这个程序能够接受字段名的输入,并自动生成以下两种格式的。在处理SQL查询时,我们经常需要对多个字段使用。函数来确保数据的完整性。这个工具特别适合在需要对大量字段进行。

2024-12-30 17:12:07 371

原创 Java 用正则表达式解析日期通配符

定时作业的执行时间配置在数据库里,比如“****-**-05 05:00:00”表示每个月的五日凌晨五点,"****-**** 03:00:00" 表示为每日的凌晨3点执行。即根据系统的时间,解析两种格式 :1.每个月特定的一天 2.每天特定的时间。

2024-10-24 13:46:59 383

原创 业务记录:处理动态表头的CSV/EXCEL文件

业务描述:传入一个动态表头的CSV文件,解析CSV,并保存入库。CSV文件的表头是不确定的,即顺序和字段个数不确定,以及表头是中文字段。例如:为了顺利解析CSV文件,前端需要传入对应的字段名和顺序名。

2024-07-28 23:19:44 430

原创 PostgreSQL 业务-预制菜(不定时更新)

假设你有一个名为employeesfull_namestatus"Y""N"

2024-07-18 13:48:33 318

原创 软件设计师笔记和错题

模式是概念模式模式/内模式 存在概念级和内部级之间,实现了概念模式和内模式的互相转换外模式/模式映像 存在外部级和概念级之间,实现了外模式和概念模式的互相转换。数据的独立性, 概念模式和之间的映像数据的独立性,需要修改和概念模式之间的映像。

2024-05-12 16:24:29 431 1

原创 PostgreSQL 低级错误集锦 (不定时更新)

的日期格式为 'yyyy-mm-dd hh24:mi:ss',但是输入的字符串 "20230127" 并不符合该格式,因此 PostgreSQL 无法正确解析。函数用于将字符串转换为日期,"20230127" 不是有效的日期格式,因此导致了日期超出范围的错误。我希望用update语句更新job_date字段,但出现报错,就用SELECT语句查看问题。在 PostgreSQL 中,在我的 SQL 查询中,

2024-01-07 16:29:29 857

原创 Java读取类路径下的JSON文件并转换为实体列表

在实际开发中可能在本地环境中需要调用别人的接口,别人的接口如果还没开发好或者本地环境不支持外部接口调用的时候,可以读取json文件来造数据,方便调试。使用 Jackson 库来读取类路径下的 JSON 文件并将其转换为对应实体列表。以Student类作为例子,提供一个读取json文件的例子。

2023-12-24 19:04:08 1138

原创 PostgreSQL 连接更新操作

现在,我们使用 UPDATE 语句连接这两个表并更新。,我们想要通过连接这两个表并根据某些条件更新。在这个例子中,我们使用。列的值,条件是它们的。,它们有一个共同的列。

2023-12-04 23:44:46 3123

原创 使用BindingResult来校验前端参数

如果要校验前端参数,如果没有使用注解的习惯,会在逻辑中写一些冗长的判断。当需要校验的参数有很多的时候,代码就很冗长,校验注解配合BindingResult来使用会减少很多代码量。@Valid注解,和加入BindingResult的参数判断BindingResult是否保存了错误的验证信息,

2023-05-10 23:40:24 883

原创 自定义全局异常处理

引入自定义异常,统一异常处理和管理

2023-05-09 23:20:40 235

原创 2023.02.09 学习打卡

最近复习MySQL,系统性查漏补缺。

2023-02-19 23:26:21 179

原创 Linux虚拟机、JDK、zookeeper、Kafka的安装

我注意到zookeeper和kafka的视频教程总是跳过了环境配置这个地方,自己去安装虚拟机遇上一些坑,浪费很多时间,因此写一篇从虚拟机安装-jdk安装-zk安装-kfk安装的流程化教程。Linux虚拟机安装安装VMware-workstation(不演示VM安装)下载 CentOS 7 镜像文件 (你可以自己下,也可以用我准备的)虚拟机安装向导-打开Vmware创建新的虚拟机虚拟机安装向导-选典型 虚拟机安装向导-选择CentOS7的安装路径虚拟机安装向导.

2022-03-19 17:49:18 4606

原创 自定义线程池

目录自定义线程池BlockingQueue 的编写思路阻塞队列方法编写poll增强(待更新)自定义线程池的实现(待更新)任务提交 和 Worker的实现(待更新)take死等和 poll超时(待更新)当队伍线程已满(待更新)offer增强(待更新)拒绝策略(待更新)本篇学习笔记利用自定义线程池去更深入的理解JDK的线程池API。线程是一种系统资源,每创建一个新的线程,就要占用一定的内存,当在高并发的情况下,来了很多任务,如果要为每个任务创建一个线程,将耗费很大

2022-03-08 23:27:30 763

原创 ReentrantLock

有一段时间没使用过了,复习复习ReentrantLock目录可重入可打断锁超时立即结束的方式,tryLock() ,代码演示 ()等待一段时间结束的方式,tryLock(long timeout, TimeUnit unit),代码演示公平锁条件变量注意事项总结相对于 synchronized 它具备如下特点:可中断 可以设置超时时间 可以设置为公平锁 支持多个条件变量与synchronized一样,都可以支持可重入,当然顾名思义,Reentrant.

2022-03-06 21:05:54 430

原创 synchronized 底层原理

Monitor(锁)Monitor 被称为监视器或者管程这个概念来自于底层操作系统,它是如何与Java联系起来的呢?Java对象保存在内存中时,由以对象头,实例数据,对齐填充字节组成。对象头又由 Mark Word,指向类的指针,数组长度(只有数组对象才有)组成。每个Java对象都可以关联一个Monitor对象,当使用synchronized给对象上锁(重量级)之后,该对象头的Mark Word中就被设置指向Monitor对象的指针Monitor的结构如下...

2022-03-03 23:27:48 468

原创 同步模式之保护性暂停

目录保护性暂停-定义保护性暂停-实现保护性暂停-拓展-增加超时保护性暂停-定义Guarded Suspension,用一个线程等待另外一个线程的执行结果。有一个结果需要从一个线程传递到另一个线程,让他们关联同一个 GuardedObject 如果有结果不断从一个线程到另外一个线程那么可以使用消息队列(生产者/消费者) JDK中,join的实现,Future的实现,采用的就是此模式 因为要等待另一方的结果,因此归类到同步模式保护性暂停作为一种设计模式,其关键点在于Gua

2022-02-28 14:24:49 323

原创 变量的线程安全分析

成员变量和静态变量是否线程安全?如果它们没有共享,则线程安全。 如果它们被共享了,根据他们的状态是否能够改变,又分两种情况 只是读操作,则线程安全 如果有读写操作,则这段代码是临界区,需要考虑线程安全 局部变量是否线程安全?局部变量是线程安全的但局部变量引用的对象则未必如果该对象没有逃离方法的作用范围,它是线程安全的如果该对象逃离方法的作用范围,需要考虑线程安全局部变量线程安全分析想一想,这段代码被多个线程访问,它是线程安全的吗? public stati

2022-02-21 17:15:14 3627

原创 JAVA 使用POI读取文档

前言:工作时总会用到一个Excel工具类来完成对EXCEL的导入和导出,傻瓜式的强大工具类让我潦草地使用API调用,但实际上POI对Excel是如何操作的并不明白,换个项目或者架构就不知道如何用POI读取EXCEL了,又或者复杂的EXCEL表样式不会导出,因此决定学习记录一下。POI是什么?Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。

2022-02-07 21:01:41 5524

原创 JVM-方法区

方法区的概念方法区与 Java 堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。也就是说,方法区存储的信息主要是跟类相关的信息。方法区在虚拟机启动的时候被创建,它逻辑上是堆的一部分。也就是说,它在概念上定义了方法区是堆的一部分,但实际上它只是个规范,不同的虚拟机厂家去实现JVM时,不一定会遵从这个JVM的规范。例如HotSpot的虚拟机,在JDK8以前,它的对方法区的实现叫做永久代,它就是使用了堆的一部分,作为方法区。而在JD

2022-02-07 20:59:22 1399

原创 复习(一)从Volatile到CAS

Volatile随着学而不用后,又被我忘在脑后,重新学习一下。Volatie是什么?Volatile是Java虚拟机提供的轻量级的同步机制,它有两个功能:保证线程对共享变量的可见性,和禁止指令重排。为什么说是轻量级?这要从Java的内存模型说起。Java的内存模型在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通讯机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共

2021-12-23 23:18:57 315

原创 MySQL高级:避免索引失效

目录一、建表二、索引命中情况演示全值匹配最佳左前缀法则不在索引列上做任何操作(计算、函数、自动or手动类型转换)存储引擎不能使用索引中范围条件右边的列尽量使用覆盖索引MySQL在使用不等于(!=或者<>)的时候无法使用索引导致全表扫描is null,is not null 也无法使用索引like以通配符开头(‘%abc..’)会导致索引失效字符串不加单引号会导致索引失效少用or,用它连接时会导致索引失效explain select ...

2021-10-08 21:13:29 341

原创 MySQL高级:双表,三表索引优化分析

目录一、建表二、查询语句分析三、总结一、建表建表语句:CREATE TABLE IF NOT EXISTS `class`(`id` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,`card` INT (10) UNSIGNED NOT NULL);CREATE TABLE IF NOT EXISTS `book`(`bookid` INT(10) UNSIGNED NOT NULL PRIMARY KEY AU

2021-09-28 15:58:19 334

原创 MySQL高级:单表索引分析

目录一、建表二、单表索引分析三、单表索引优化四、总结一、建表建立表articleCREATE TABLE IF NOT EXISTS `article`(`id` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,`author_id` INT (10) UNSIGNED NOT NULL,`category_id` INT(10) UNSIGNED NOT NULL , `views` INT(10) U.

2021-09-27 23:04:49 372

原创 MySQL 高级:EXPLAIN 性能分析

MySQL的常见瓶颈CPU:CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据的时候。IO:磁盘I/O瓶颈发生在装入数据远大于内存容量的时候服务器硬件的性能瓶颈:简而言之,机器性能本来就差那就没什么好说的了。EXPLIAN 概念是什么(查看执行计划)使用EXPLIAN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句。分析你的查询语句是或是表结构的性能瓶颈。能干嘛表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些所以被实

2021-09-22 15:34:30 983

原创 Mysql高级:索引(一)

索引是什么?MySQL官方对索引的定义为:所有(Index)是帮助MySQL高效获取数据的数据结构。索引的本质是数据结构,可以简单理解为排好序的快速查找数据结构。索引的两大功能:排序和查找,索引会影响WHERE条件后面的查找,和ORDER BY后面的排序。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。(例如Btree)上图展示了一种可能的索引方式。左边是..

2021-09-13 23:38:49 607

原创 SpringCloud(七):Hystrix断路器(二)

目录服务熔断熔断机制概述服务熔断实操修改cloud-provider-hystrix-payment8001PaymentServicePaymentController测试熔断类型 熔断打开 熔断关闭 熔断半开断路器在什么情况下开始起作用Hystirx工作流程服务限流服务熔断熔断机制概述熔断是什么?这个概念由martin fowler 提出->Martin Fowler 博客里关于断路器的介绍熔断机...

2021-09-07 15:43:18 654

原创 SpringCloud(七):Hystrix断路器(一)

概述分布式系统面临的问题Hystrix断路器是什么Hysyrix是一个用于处理分布式系统延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败。比如超时,异常等。Hysyrix能够保证在一个依赖出问题的情况下,不会导致整体服务的失败,避免级联故障,以提高分布式系统的弹性。“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控,类似于熔断保险丝,向调用方返回一个符合预期的,可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常

2021-08-31 22:50:42 197

原创 SpringCloud(六):OpenFeign服务接口调用

目录概述OpenFeign是什么能干嘛Feign和OpenFeign两者区别​OpenFeign使用步骤OpenFeign超时控制OpenFeign日志打印功能概述Spring-openFeign官网OpenFeign是什么openFegin是一个申明方式Web Service服务端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Fegin也支持可拔插式的编码器和解码器。SpringCloud对F

2021-08-23 23:14:03 361 1

原创 SpringCloud(五):Ribbon负载均衡服务调用

目录概述是什么官网资料能干嘛LB(负载均衡)Ribbon本地负载均衡客户端和Nginx服务客服端负载均衡的区别Ribbon负载均衡演示Ribbon核心组件IRuleRibbon负载均衡算法概述是什么Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端,负载均衡的工具。简单来说,ribbon是Netflix发布的开源项目,主要功能是提供客户端软件负载均衡的算法和服务调用。Ribbon客户端组件提供一系列完善的配置如

2021-08-14 12:37:02 224

原创 SpringCloud(四):Consul服务注册与发现

前情回顾:SpringCloud(一):SpringBoot、SpringCloud版本选择,微服务架构编码构建SpringCloud(二):IDEA设置Run Dashboard(Services),第二个微服务SpringCloud(三):Eureka基础知识,单机配置、集群配置、自我保护目录Consul简介是什么能干嘛去哪下怎么使用安装并运行Consul服务提供者服务消费者Consul简介是什么Consul是google开源的一个使用go语言

2021-08-11 15:13:57 635

原创 SpringCloud(三):Eureka基础知识,单机配置、集群配置、自我保护

前情回顾SpringCloud(一):SpringBoot、SpringCloud版本选择,微服务架构编码构建在(一)和(二)中,我们搭建了两个模块,Order和Payment通过RestTempate实现了RestFul风格的地址调用,但还未用到微服务相关的知识。接下来,我们将要把这些技术,一块块的往上加,让他越来越庞大和复杂,也越来越强大。我们先加第一个组件,服务注册中心,虽然我们(一)和(二)没有通过服务注册中心就能互相调用,但是如果服务很多,那么将会出现问题。我们来学习服务注册中

2021-08-05 23:17:06 695 2

原创 MySQL复习(三)分组函数,分组查询

分组函数 sum 求和 max 最大值 min 最小值 avg 平均值 count 计数 特点: 1、以上五个分组函数都忽略null值,除了count(*) 2、sum和avg一般用于处理数值型 max、min、count可以处理任何数据类型 3、都可以搭配distinct使用,用于统计去重后的结果 4、count的参数可以支持: 字段、*、常量值,一般放1 建议使用 c...

2021-04-19 21:58:07 118

原创 MySQL复习(二)常见函数,日期函数,其他函数,流程控制函数

@MySQL复习(二)排序查询,常见函数。OC排序查询基础函数分类:1.单行函数如 CONCAT、LENGTH、IFNULL等2.分组函数功能:做统计使用,又称统计函数、聚合函数、组函数。一、字符函数LENGTH(str) 获取参数值的字节个数SELECT LENGTH('CALW'); 思考一下占用几个字节?(跟字符集相关)SELECT LENGTH('写作业学SQL');查看数据库字符集SHOW VARIABLES LIKE '%char%'...

2021-04-19 21:41:49 179

原创 MySQL复习(一)基础查询,条件查询,模糊查询。

SQL太差了,系统的重新学习(握拳!)太简单就不举例了。基础查询查询列表可以是:表中的字段、常量值、表达式、函数,查询的结构是一个虚拟的表格。`name` ``符号中的表明是一个字段,其作用是为了和mysql关键字区分开来。#查询表中的单个字段略#查询表中的多个字段略#查询表中的所有字段略#查询常量值:select 100;#查询表达式:select 100%98#查询函数:select VERSION()起别名便于理解 如果要查询的字段有重名的情况.

2021-04-07 20:22:53 291

原创 SpringCloud(二):IDEA设置Run Dashboard(Services),第二个微服务

添加devtools到module的pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <o

2020-08-03 01:06:56 829

原创 对JUC的学习和理解(三)atomic 原子类 ,CAS

目录Atomic 原子类关于Atomic原子类为什么要用到原子类呢?原子类的分类基本类型原子类CASABA问题AtomicInteger 线程安全原理简单分析Atomic 原子类java.util.concurrent 包中还有一个包,叫atomic,里面存放着原子类,那么什么是原子类呢?关于Atomic原子类从化学上来讲,原子类是构成一般物质上的最小单位,在化学反应中不可分割。在Java中,Atomic是指一个操作是不可中断的,即使是在多个线程执行的时候

2020-07-16 02:51:26 255

原创 Java设计模式之工厂模式详解

工厂模式也是一个较为简单的设计模式,它的核心本质是:实例化对象不使用new,用工厂方法代理 将选择实现类,创建对象统一管理和控制,从而将调用者跟我们实现类解耦简单工厂(静态工厂)模式我们通过用造车的例子模拟简单工厂/** * @author Claw * @date 2020/7/6 13:35. */public interface Car { /** * 得到车 * @return */ Car getCar();}.

2020-07-06 20:30:36 1707

原创 Java设计模式之单例模式的几种写法以及单例模式的应用场景

茴字有四种写法,单例模式有8种写法。那么什么是单例模式呢?也就是某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象。SessionFactory并不是轻量级的,一般情况下,一个项目只需要一个SessionFactory就够了,这就是会使用到单例模式。...

2020-07-06 04:12:48 280

原创 快速理解Nginx(一)Nginx的基本概念,在阿里云/Linux下安装Nginx

快速理解NignxNginx概述Nginxs是一个高性能的Http反向代理服务器,特点是占有内存少,并发能力强。并且Nignx专门为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能承受负载的考研,有报表表明能支持高达50,000个并发连接数。...

2020-06-30 04:13:01 268

空空如也

空空如也

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

TA关注的人

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