10 2023 档案

摘要:postgreSQL除法保留小数 -1 例子 postgres=# select 1/4; ?column? 0 (1 row) 在PG里如果想做除法并想保留小数,用上面的方法却行不通,因为"/" 运算结果为取整,并且会截掉小数部分。 --2 类型转换 postgres=# select round 阅读全文
posted @ 2023-10-31 15:41 Lafite-1820 阅读(704) 评论(0) 推荐(0) 编辑
摘要:本篇将要学习 Spring Boot 统一功能处理模块,这也是 AOP 的实战环节 用户登录权限的校验实现接口 HandlerInterceptor + WebMvcConfigurer 异常处理使用注解 @RestControllerAdvice + @ExceptionHandler 数据格式返 阅读全文
posted @ 2023-10-30 16:00 Lafite-1820 阅读(1798) 评论(0) 推荐(0) 编辑
摘要:postgresql时间戳格式化 -- 年 select to_char(to_timestamp(1608018517000 / 1000),'yyyy'); -- 年-月 select to_char(to_timestamp(1608018517000 / 1000),'yyyy-MM'); 阅读全文
posted @ 2023-10-24 09:53 Lafite-1820 阅读(2444) 评论(0) 推荐(0) 编辑
摘要:Spring 提供了对缓存的支持,允许你将数据存储在缓存中以提高应用程序的性能。Spring 缓存抽象基于 Java Caching API,但提供了更简单的编程模型和更高级的功能。 Spring 集成缓存提供了一种方便的方式来使用缓存,从而提高应用程序的性能。Spring 缓存抽象提供了通用的缓存 阅读全文
posted @ 2023-10-19 11:16 Lafite-1820 阅读(38) 评论(0) 推荐(0) 编辑
摘要:1、启动引导类 大部分时候,SpringBoot应用主要通过在引导类调用SpringApplication的静态run方法启动,同时将引导类注册为配置源。比如下面是一个SpringMVC的Web应用,引导类是WebMVCBootstrap,和命令行参数args作为SpringApplication静 阅读全文
posted @ 2023-10-17 17:53 Lafite-1820 阅读(61) 评论(0) 推荐(0) 编辑
摘要:前言 本文剖析SpringBoot启动时候做了哪些事情。 1、SpringBoot启动流程分析 1.1、 main方法进入 1.2、new SpringApplication&SpringApplication#run方法 首先new SpringApplication(primarySources 阅读全文
posted @ 2023-10-17 17:13 Lafite-1820 阅读(840) 评论(0) 推荐(0) 编辑
摘要:在之前的文章中,咱们已经聊过什么是IOC、DI,以及两者的区别,今天我们来聊聊Spring如何应用的IOC,以及对其源码的解析过程。 下面我们从spring源码的角度去解析这个流程图,看看spring是如何实现的每一个步骤的。 首先还是找入口,从spring应用的角度上去找切入点,我们在使用spri 阅读全文
posted @ 2023-10-17 15:36 Lafite-1820 阅读(139) 评论(0) 推荐(0) 编辑
摘要:前言 本文分析spring循环依赖,我们知道 构造函数填充属性是天然无法解决循环依赖的,而且解决循环依赖必须至少需要一个单例bean提前暴露。 用xml标签配置属性bean,和@autowire注解注入属性bean,注入属性过程是不一样的。 (1)xml标签配置属性bean是在解析xml过程中直接将 阅读全文
posted @ 2023-10-17 15:20 Lafite-1820 阅读(152) 评论(0) 推荐(0) 编辑
摘要:大致流程如下: 初始化SpringApplication,从META-INF下的spring.factories读取 ApplicationListener/ApplicationContextInitializer 运行SpringApplication的run方法 读取项目中环境变量、jvm配置 阅读全文
posted @ 2023-10-17 14:29 Lafite-1820 阅读(405) 评论(0) 推荐(0) 编辑
摘要:你好呀,我是歪歪。 这篇文章带大家盘一个读者遇到的面试题哈。 根据读者转述,面试官的原问题就是:一个 SpringBoot 项目能同时处理多少请求? 不知道你听到这个问题之后的第一反应是什么。 我大概知道他要问的是哪个方向,但是对于这种只有一句话的面试题,我的第一反应是:会不会有坑? 所以并不会贸然 阅读全文
posted @ 2023-10-16 16:16 Lafite-1820 阅读(103) 评论(0) 推荐(0) 编辑
摘要:本篇文章将为大家讲述关于 SpringBoot 项目工程完成后,是如何通过 java-jar 命令来启动的,以及介绍 java-jar 命令的详细内容,对SpringBoot java -jav启动过程感兴趣的朋友跟随小编一起看看吧 本篇文章将为大家讲述关于 SpringBoot 项目工程完成后,是 阅读全文
posted @ 2023-10-16 15:16 Lafite-1820 阅读(1213) 评论(0) 推荐(0) 编辑
摘要:1、规范命名 命名是写代码中最频繁的操作,比如类、属性、方法、参数等。好的名字应当能遵循以下几点: 见名知意 比如需要定义一个变量需要来计数 int i = 0; 名称 i 没有任何的实际意义,没有体现出数量的意思,所以我们应当指明数量的名称 int count = 0; 能够读的出来 如下代码: 阅读全文
posted @ 2023-10-13 17:36 Lafite-1820 阅读(25) 评论(0) 推荐(0) 编辑
摘要:HttpClient优化思路: 池化 长连接 httpclient和httpget复用 合理的配置参数(最大并发请求数,各种超时时间,重试次数) 异步 多读源码 1.背景 我们有个业务,会调用其他部门提供的一个基于http的服务,日调用量在千万级别。使用了httpclient来完成业务。之前因为qp 阅读全文
posted @ 2023-10-13 11:54 Lafite-1820 阅读(112) 评论(0) 推荐(0) 编辑
摘要:使用fluent mybatis可以不用写具体的xml文件,通过java api可以构造出比较复杂的业务sql语句,做到代码逻辑和sql逻辑的合一。 不再需要在Dao中组装查询或更新操作,在xml或mapper中再组装参数。那对比原生Mybatis, Mybatis Plus或者其他框架,Fluen 阅读全文
posted @ 2023-10-13 11:43 Lafite-1820 阅读(38) 评论(0) 推荐(0) 编辑
摘要:1 理解AOP 1.1 什么是AOP AOP(Aspect Oriented Programming),面向切面思想,是Spring的三大核心思想之一(两外两个:IOC-控制反转、DI-依赖注入)。 那么AOP为何那么重要呢?在我们的程序中,经常存在一些系统性的需求,比如权限校验、日志记录、统计等, 阅读全文
posted @ 2023-10-13 11:39 Lafite-1820 阅读(115) 评论(0) 推荐(0) 编辑
摘要:动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中,开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。例如,拼接时要确保添加了必要的空格,还要注意去掉列表最后一个列名的逗号。而动态 SQL 恰好解决了这一问题,可以根据场景动 阅读全文
posted @ 2023-10-13 11:34 Lafite-1820 阅读(583) 评论(0) 推荐(0) 编辑
摘要:最近有小伙伴拿到了一线互联网企业如阿里、网易、有赞、希音、百度、网易、滴滴的面试资格,遇到一几个很重要的面试题: 企业级消息通知系统有哪些需求?如何满足? 企业级消息通知系统,该如何做架构设计? 所以,这里今天给大家做一下系统化、体系化的梳理,使得大家可以充分展示一下大家雄厚的 “技术肌肉”,让面试 阅读全文
posted @ 2023-10-13 11:24 Lafite-1820 阅读(180) 评论(0) 推荐(0) 编辑
摘要:异步调用几乎是处理高并发Web应用性能问题的万金油,那么什么是“异步调用”? “异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。 同步调用 下面通过一个简 阅读全文
posted @ 2023-10-13 11:03 Lafite-1820 阅读(21) 评论(0) 推荐(1) 编辑
摘要:1、简介 SpringBoot不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。在Spring-Boot项目开发中,存在着本模块的代码需要访问外面模块接口,或外部url链接的需求, 比如在apaas开发过程中需要封装接口在接口中调用apa 阅读全文
posted @ 2023-10-13 10:55 Lafite-1820 阅读(481) 评论(0) 推荐(0) 编辑
摘要:在项目中,为了保证数据的安全,我们常常会对传递的数据进行加密。常用的加密算法包括对称加密(AES)和非对称加密(RSA),博主选取码云上最简单的API加密项目进行下面的讲解。 项目介绍 该项目使用RSA加密方式对API接口返回的数据加密,让API数据更加安全。别人无法对提供的数据进行破解。Sprin 阅读全文
posted @ 2023-10-13 10:49 Lafite-1820 阅读(2352) 评论(0) 推荐(0) 编辑
摘要:1. 背景介绍 在Java8之前,Date和Calendar两个类占据了Java中对时间操作的几乎所有地方,但由于它们的可变性和非线程安全性也时常导致了一些bug的产生;所以在Java8中引入了新的日期时间相关类,放在java.time包下; 2. 新日期时间相关类介绍 LocalDate:本地日期 阅读全文
posted @ 2023-10-13 10:12 Lafite-1820 阅读(65) 评论(0) 推荐(0) 编辑
摘要:1. Optional介绍 Optional是Java8提供的一个容器对象,可以包含一个为null或者不为null的对象;使用该对象可以更方便的避免项目中的NPE,在新版的Spring Data JPA中已经实现了对该类的支持; 注意该类是被final修饰的,同时没有实现任何接口; public f 阅读全文
posted @ 2023-10-13 10:02 Lafite-1820 阅读(6) 评论(0) 推荐(0) 编辑
摘要:1HashSet去重 我们知道 HashSet 天生具备“去重”的特性,那我们只需要将 List 集合转换成 HashSet 集合就可以了,实现代码如下: public class ListDistinctExample { public static void main(String[] args 阅读全文
posted @ 2023-10-13 09:52 Lafite-1820 阅读(138) 评论(0) 推荐(0) 编辑
摘要:编程过程中常常需要使用到集合,比如:ArrayList,当我们在 for 循环增删的时候,一不小心就会踩坑。 如下代码 List<String> arrayList1 = new ArrayList<String>(); arrayList1.add("1"); arrayList1.add("2" 阅读全文
posted @ 2023-10-13 09:43 Lafite-1820 阅读(29) 评论(0) 推荐(0) 编辑
摘要:可能初学者都会忽略掉一点,其实if-else是一种面向过程的实现。 那么,如何避免在面向对象编程里大量使用if-else呢? 网络上有很多解决思路,有工厂模式、策略模式、甚至是规则引擎(这个太重了吧)...... 这些,都有一个共同的缺点,使用起来还是过于繁重了。虽说起到了消除 if-else 的作 阅读全文
posted @ 2023-10-13 09:38 Lafite-1820 阅读(84) 评论(0) 推荐(0) 编辑
摘要:鲁讯曾说:"高端的代码,只需要最朴素的编写方式",简单的业务使用 if-else 或 switch case,确实直观明了,但是一旦功能复杂,业务流程长了之后,使用传统的 if-else 或 switch case 方式,就会让代码结构变的异常冗余、混乱,过一段时间之后,哪怕是自己写的代码,读起来也 阅读全文
posted @ 2023-10-13 09:33 Lafite-1820 阅读(13) 评论(0) 推荐(0) 编辑
摘要:1. Stream流介绍 一种支持顺序和并行聚合操作的元素序列,能够对集合、数组进行过滤、排序、去重等操作; Stream流与日常IO流是不同的技术体系; 官方定义: A sequence of elements supporting sequential and parallel aggregat 阅读全文
posted @ 2023-10-12 18:35 Lafite-1820 阅读(43) 评论(0) 推荐(0) 编辑
摘要:1. 重复注解介绍 Java8中引入的一个新注解@Repeatable,该注解只能标记在其他注解上,表示被标记的注解可以重复声明在类、属性、方法等上面;但@Repeatable注解还是得需要定义容器注解配合才能使用,所以也只是增强了代码的可读性; public class AnnotationTes 阅读全文
posted @ 2023-10-12 18:12 Lafite-1820 阅读(42) 评论(0) 推荐(0) 编辑
摘要:1. 背景介绍 在Java8之前,接口中定义的方法都是抽象方法,即默认都是被public abstract修饰的;但从Java8开始,允许在接口中定义带有方法体的默认方法和静态方法; public class InterfaceTest { public static void main(Strin 阅读全文
posted @ 2023-10-12 18:02 Lafite-1820 阅读(41) 评论(0) 推荐(0) 编辑
摘要:1. 方法引用介绍 方法引用其实是lambda表达式的升级写法,采用::固定语法,可以使代码更简洁、紧凑; 2. 方法引用的5种类型 2.1 对象引用::实例方法名 函数式接口抽象方法的形参列表与实例方法的一致,且方法的返回值类型一致; public class MethodReferencesTe 阅读全文
posted @ 2023-10-12 17:57 Lafite-1820 阅读(5) 评论(0) 推荐(0) 编辑
摘要:1,函数式接口介绍 前言:由于Java8中引入了lambda表达式语法,但该语法需要配合一种特定的接口才能使用,由此产生出了函数式接口; 函数式接口指有且仅有一个抽象方法(由Object对象继承的方法不算)(但可以有多个默认方法和静态方法)的接口,当这样的接口在作为方法参数时可以隐式的转换为lamb 阅读全文
posted @ 2023-10-12 17:51 Lafite-1820 阅读(8) 评论(0) 推荐(0) 编辑
摘要:Java8新特性之Lambda表达式(一) 文章目录 1. lambda表达式介绍 2. lambda表达式的重要特征 3. lambda表达式对域外变量的限制 4. lambda表达式的优缺点 5. lambda表达式的使用场景 6. lambda表达式的实现原理 7. 相关链接 1. lambd 阅读全文
posted @ 2023-10-12 17:43 Lafite-1820 阅读(14) 评论(0) 推荐(0) 编辑
摘要:1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。 具体来说 JD 阅读全文
posted @ 2023-10-12 17:14 Lafite-1820 阅读(23) 评论(0) 推荐(0) 编辑
摘要:K8s部署EFK(elasticsear + filebeat + kibana)日志收集 一.准备镜像 # 在本机拉取镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.2 docker pull docker.ela 阅读全文
posted @ 2023-10-12 15:17 Lafite-1820 阅读(424) 评论(0) 推荐(0) 编辑
摘要:一、性能怪兽-Nginx概念深入浅出 二、Nginx环境搭建 三、Nginx反向代理-负载均衡 四、Nginx动静分离 五、Nginx资源压缩 六、Nginx缓冲区 七、Nginx缓存机制 八、Nginx实现IP黑白名单 九、Nginx跨域配置 十、Nginx防盗链设计 十一、Nginx大文件传输配 阅读全文
posted @ 2023-10-12 14:47 Lafite-1820 阅读(101) 评论(0) 推荐(0) 编辑
摘要:可以使用Java8的Stream API来比较两个List的差异,并取出不同的对象。 方式一具体步骤如下: 将两个List转换为Stream类型; 调用Stream的filter方法,将不同的对象过滤出来; 将过滤出的不同的对象转换为List类型。 List<String> list1 = Arra 阅读全文
posted @ 2023-10-12 14:27 Lafite-1820 阅读(1724) 评论(0) 推荐(0) 编辑
摘要:一、功能 二、安装 三、简单测试 今天给大家推荐一个非常好用的Java工具类库,企业级常用工具类,基本都有,能避免重复造轮子及节省大量的开发时间,非常不错,值得大家去了解使用。 Hutool 谐音 “糊涂”,寓意追求 “万事都作糊涂观,无所谓失,无所谓得” 的境界。 Hutool 是一个 Java 阅读全文
posted @ 2023-10-12 11:18 Lafite-1820 阅读(23) 评论(0) 推荐(0) 编辑
摘要:这是一个挺有意思的讨论话题。 如果你运行下面的代码: Integer a = 1000, b = 1000; System.out.println(a == b);//1 Integer c = 100, d = 100; System.out.println(c == d);//2 你会得到: f 阅读全文
posted @ 2023-10-12 11:13 Lafite-1820 阅读(21) 评论(0) 推荐(0) 编辑
摘要:一、日志重要吗 程序中的日志重要吗? 在回答这个问题前,笔者先说个事例: ❝ 笔者印象尤深的就是去年某个同事,收到了客户反馈的紧急bug。尽管申请到了日志文件,但因为很多关键步骤没有打印日志,导致排查进度很慢,数个小时都没能排查到问题,也无法给出解决对策。导致了客户程序一直阻断,最终产生了不少损失。 阅读全文
posted @ 2023-10-12 11:10 Lafite-1820 阅读(275) 评论(0) 推荐(0) 编辑
摘要:如果你已经使用 Spring 一段时间或者是编程初学者,你一定听说过使用响应式编程比传统的线程池风格更好。 自 Spring 诞生以来,开发者创建 Java 企业应用程序就变得更加容易。它提供了在企业环境中使用 Java 语言所需的一切,支持 Groovy 和 Kotlin 作为 JVM 上的替代语 阅读全文
posted @ 2023-10-12 11:03 Lafite-1820 阅读(283) 评论(0) 推荐(0) 编辑
摘要:问题在现 如何解决异步执行 多线程环境下如何确保事务一致性 事务王国回顾 事务实现方式回顾 编程式事务 利用编程式事务解决问题 问题分析完了,那么如何解决问题呢? 小结 问题在现 我先把问题抛出来,大家就明白本文目的在于解决什么样的业务痛点了: public void removeAuthority 阅读全文
posted @ 2023-10-12 10:54 Lafite-1820 阅读(677) 评论(0) 推荐(2) 编辑
摘要:什么是流水线 jenkins 有 2 种流水线分为声明式流水线与脚本化流水线,脚本化流水线是 jenkins 旧版本使用的流水线脚本,新版本 Jenkins 推荐使用声明式流水线。文档只介绍声明流水线。 声明式流水线 在声明式流水线语法中,流水线过程定义在 Pipeline{}中,Pipeline 阅读全文
posted @ 2023-10-12 10:38 Lafite-1820 阅读(73) 评论(0) 推荐(0) 编辑
摘要:Java8 的 Stream 流,加上 Lambda 表达式,可以让代码变短变美,还是变短变丑? 距离Java 8发布已经过去了7、8年的时间,Java 19也发布了。Java 8中关于函数式编程和新增的Stream流API至今饱受“争议”。 如果你不曾使用Stream流,那么当你见到Stream操 阅读全文
posted @ 2023-10-12 10:35 Lafite-1820 阅读(44) 评论(0) 推荐(0) 编辑
摘要:0 背景 公司 SpringBoot 项目在日常开发过程中发现服务启动过程异常缓慢,常常需要 6-7 分钟才能暴露端口,严重降低开发效率。通过 SpringBoot 的 SpringApplicationRunListener 、BeanPostProcessor 原理和源码调试等手段排查发现,在 阅读全文
posted @ 2023-10-11 16:25 Lafite-1820 阅读(522) 评论(0) 推荐(0) 编辑
摘要:一、SpringBatch 介绍 Spring Batch 是一个轻量级、全面的批处理框架,旨在支持开发对企业系统的日常操作至关重要的健壮的批处理应用程序。Spring Batch 建立在人们期望的 Spring Framework 特性(生产力、基于 POJO 的开发方法和一般易用性)的基础上,同 阅读全文
posted @ 2023-10-11 16:05 Lafite-1820 阅读(1207) 评论(0) 推荐(0) 编辑
摘要:引入工具包 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.3.10</version> <!-- 您应该选择适合您项目的版本 --> </depe 阅读全文
posted @ 2023-10-11 15:45 Lafite-1820 阅读(16) 评论(0) 推荐(0) 编辑
摘要:一、校验数字的表达式 数字:[1]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 带1-2位小 阅读全文
posted @ 2023-10-11 11:47 Lafite-1820 阅读(1304) 评论(0) 推荐(0) 编辑
摘要:引言 Spring Boot是Java开发者的一套强大的开源框架,它极大地简化了Spring应用的初始搭建以及开发过程。Spring Boot的主要优势之一是其丰富的注解(Annotation),这些注解使得我们能够通过简短的代码 实现复杂的功能。本文将深入解析Spring Boot中最常用的50个 阅读全文
posted @ 2023-10-10 16:09 Lafite-1820 阅读(277) 评论(0) 推荐(0) 编辑
摘要:一、引言 流式编程的概念和作用 Java 流(Stream)是一连串的元素序列,可以进行各种操作以实现数据的转换和处理。流式编程的概念基于函数式编程的思想,旨在简化代码,提高可读性和可维护性。 Java Stream 的主要作用有以下几个方面: 简化集合操作:使用传统的 for 循环或迭代器来处理集 阅读全文
posted @ 2023-10-09 11:20 Lafite-1820 阅读(39) 评论(0) 推荐(0) 编辑
摘要:告别复杂逻辑,项目终于用上了 Spring 状态机,非常优雅! 1、什么是状态机 1.1 什么是状态 先来解释什么是“状态”( State )。现实事物是有不同状态的,例如一个自动门,就有 open 和 closed 两种状态。我们通常所说的状态机是有限状态机,也就是被描述的事物的状态的数量是有限个 阅读全文
posted @ 2023-10-09 10:26 Lafite-1820 阅读(109) 评论(0) 推荐(0) 编辑
摘要:前言 1.本地搭建FastDFS文件系统 2.局域网测试访问FastDFS 3.安装cpolar内网穿透 4.配置公网访问地址 5.固定公网地址 6.测试访问固定二级子域名 前言 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件 阅读全文
posted @ 2023-10-09 10:19 Lafite-1820 阅读(490) 评论(0) 推荐(0) 编辑
摘要:一、简易版秒杀SeckillProject系统简介 开发技术 二、实现细节记录 1、用户密码两次MD5加密 2、分布式session维持会话 3、异常统一处理 4、页面缓存 + 对象缓存 5、页面静态化 6、内存标记 + Redis预减库存 + RabbitMQ异步处理 7、解决超卖 8、接口限流 阅读全文
posted @ 2023-10-09 09:59 Lafite-1820 阅读(244) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示