自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2024-01-07 16:29:29 568

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

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

2023-12-24 19:04:08 786

原创 PostgreSQL 连接更新操作

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

2023-12-04 23:44:46 1394

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

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

2023-05-10 23:40:24 671

原创 自定义全局异常处理

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

2023-05-09 23:20:40 170

原创 2023.02.09 学习打卡

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

2023-02-19 23:26:21 119

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

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

2022-03-19 17:49:18 3785

原创 自定义线程池

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

2022-03-08 23:27:30 508

原创 ReentrantLock

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

2022-03-06 21:05:54 366

原创 synchronized 底层原理

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

2022-03-03 23:27:48 362

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

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

2022-02-28 14:24:49 264

原创 变量的线程安全分析

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

2022-02-21 17:15:14 3542

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

原创 JVM-方法区

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

2022-02-07 20:59:22 1156

原创 复习(一)从Volatile到CAS

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

2021-12-23 23:18:57 280

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

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

2021-10-08 21:13:29 270

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

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

原创 MySQL 高级:EXPLAIN 性能分析

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

2021-09-22 15:34:30 723

原创 Mysql高级:索引(一)

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

2021-09-13 23:38:49 194

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

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

2021-09-07 15:43:18 339

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

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

2021-08-31 22:50:42 149

原创 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 265 1

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

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

2021-08-14 12:37:02 98

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

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

2021-08-11 15:13:57 501

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

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

2021-08-05 23:17:06 339 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 77

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

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

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

2021-04-07 20:22:53 219

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

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

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

2020-07-16 02:51:26 220

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

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

2020-07-06 20:30:36 1618

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

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

2020-07-06 04:12:48 241

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

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

2020-06-30 04:13:01 208

原创 教你如何访问阿里云的Nginx(新手友好)

我假设你已经在Nginx里安装好了Nginx了,并且也启动了。并且nginx监听的端口是80,当然你也可以自己修改这个端口号。接下来,你可能就像我一样很想输入ip地址去访问一下它了,那么该如何访问呢?1、打开自己的阿里云服务器控制台,找到自己实例的IP地址(公网)此时在浏览器里输入这个地址,大概率是超时的,不能访问,因为需要配置安全组。2、点击实例与镜像的实例里的实例3、点击管理4、点击本实例安全组5、添加安全组规则6、开放80端口...

2020-06-29 23:32:57 1640

原创 Java 高级:多线程

程序、进程、线程的基本概念用简单的话解释:程序就是完成特定任务的一段静态代码进程就是程序的一次执行过程,或者说正在运行的一个程序线程是进程的细化,是程序内部执行的一条路径就像你打开了360安全卫士,360是程序,打开了以后电脑上就有了360的进程,360的各项功能比如查杀木马、清理电脑,开启查杀木马这样的事情就可以理解为开启了一个线程去执行了查杀木马这样的任务线程的创建和使用Java的多线程通过 java.lang.Thread类来体现。...

2020-06-28 03:21:10 239

原创 Java8新特性:函数式接口、方法引用、强大的StreamAPI

函数式接口什么是函数式(Functional)接口?只包含一个抽象方法的接口,称为函数式接口比如Runnable接口,接口里只包含一个抽象接口的run()方法,同时类上有@FunctionalInterface注解。@FunctionalInterface注解可以检查它是否是一个函数式接口,同时Javadoc也会包含一条声明,说明这个接口是一个函数式接口。函数式接口其实就是为了便于写lambda表达式而产生的。@FunctionalInterfacepublic interfac

2020-06-25 14:26:19 137

原创 对JUC的学习和理解(二):集合类不安全、阻塞队列

集合类不安全集合不安全之List总所周知,ArrayList并不是一个线程安全的类,但是在写代码的时候并没有那么在意,因为大多数是在单线程中进行的,只关心效率,不考虑线程安全。但在多线程的情况下,使用ArrayList就会导致一些问题。现在我们实例化一个ArrayList对象,创建10个线程操作list对象在集合中添加元素。 public static void main(String[] args) { List list = new ArrayList();

2020-06-11 14:09:24 159

原创 对JUC的学习和理解(一):Lock、生产者和消费者问题、虚假唤醒、多线程8锁

什么是JUC?在Java 5.0时提供了java.util.concurrent 在这个

2020-06-09 18:28:28 291

原创 Java8新特性:Lambda表达式的使用

为什么要使用Lamda表达式?Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码。使用它可以解除更简洁更灵活的代码,作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。这句话看起来很抽象,实际上lambda表达式看起来就是这样的:Runnable runnable1 =()-> System.out.println("这是使用了Lambda表达式的写法");这一段就是Lambda表达式的代码 @Test public v

2020-06-05 03:34:15 290

空空如也

空空如也

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

TA关注的人

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