Java基础使用积累
文章平均质量分 69
Java基础
@来杯咖啡
物极必反,否极泰来,法天象地,以定位也.
展开
-
2、线程池篇 - 从理论基础到具体代码示例讲解(持续更新中......)
前言线程篇有关线程部分的知识整理请看我下面这篇博客:1、线程篇 - 从理论到具体代码案例最全线程知识点梳理(持续更新中…)线程池理论知识原创 2022-02-06 17:09:08 · 704 阅读 · 0 评论 -
1、线程篇 - 从理论到具体代码案例最全线程知识点梳理(持续更新中......)
目录标题前言线程理论知识线程创建的四种方式1.继承Thread类,实现run方法2.实现Runnable接口,重写run方法3.实现Callable接口4.使用线程池线程的状态如何优雅的中断一个线程方案1:设置标志位方案2:用Thread.stop()方案3:调用suspend()和resume()方法方案4:线程中断机制线程重要方法介绍yield和joinsleep和wait的区别线程安全知识线程通信/同步的方式ThreadLocal讲解前言线程理论知识线程创建的四种方式1.继承Thread类,实原创 2022-02-05 21:13:50 · 552 阅读 · 0 评论 -
彻底理解浏览器cookie策略
(1)cookie存在的原因因为http请求是无状态的,同一个用户从浏览器向A服务器发送两次请求,A服务器无法判断这两次请求是否是同一个用户。所以,浏览器提供了客户端携带cookie技术,让每次请求有状态。(2)后端使用cookie进行登录状态记录流程1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。同源策略是防止CSRF攻击的重要手段。最初,它的含义是指,A 网页设置的 Cookie,B 网页不能使用A的cookie,除非这两个网页“同源”。协议相同。原创 2023-10-06 23:26:01 · 1139 阅读 · 0 评论 -
【Java线程】线程池的创建
【代码】【Java线程】线程池的创建。原创 2023-04-19 14:35:13 · 171 阅读 · 0 评论 -
【Spring应用】SPEL表达式使用
Spring框架中的SpEL(Spring Expression Language,Spring表达式语言)是一种基于字符串的表达式语言,用于支持在运行时动态地计算表达式的值。它可以在Spring的多个模块中使用,如Spring MVC、Spring Security等,是Spring框架中一个重要的特性。SpEL表达式的解析和计算是在运行时动态进行的,因此具有很大的灵活性和可扩展性,可以在不改变代码的情况下实现复杂的运算和逻辑判断。这个表达式表示对2和3进行加法运算,其结果为5。原创 2023-04-17 18:00:14 · 785 阅读 · 1 评论 -
【JOB】如何写好补充类JOB和数据迁移类curl?
补偿类job数据迁移类job。原创 2023-04-12 09:04:37 · 456 阅读 · 0 评论 -
【Java8日期】一文搞定Java8日期新特性
Java对日期、日历及时间的处理一直以来都饱受诟病,比如java.util.Date和java.util.Calendar类易用性差,不支持时区,非线程安全;还有用于格式化日期的类DateFormat也是非线程安全的等问题。Java8引入的新的一系列API,对时间日期的处理提供了更好的支持,清楚的定义了时间日期的一些概念,比如说,瞬时时间(Instant),持续时间(duration),日期(date),时间(time),时区(time-zone)以及时间段(Period)。原创 2023-04-01 17:01:34 · 607 阅读 · 0 评论 -
【Java基础】JSON技术学习, 及Jackson重点介绍
略。原创 2023-04-01 14:15:46 · 460 阅读 · 0 评论 -
【Java线程】ThreadPoolExecutor和CountDownLatch: 多线程并发处理任务, 并获取线程处理结果
借助ThreadPoolExecutor和CountDownLatch高效率处理多个任务。略。原创 2023-03-30 22:51:30 · 1089 阅读 · 1 评论 -
软件开发中的原则 - SOLID
遵守软件开发的原则,可以让我们在‘软件构建活动’中,写出扩展性、复用性极强的代码。一个类(或者大到模块,小到方法), 最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合,高内聚在面向对象原则的引申,将职责定义为引起变化的原因,以提高内聚性减少引起变化的原因。Open - ClosedPrinciple ,OCP, 对扩展开放,对修改关闭(设计模式的核心原则)。意思是,在一个系统或者模块中,对于扩展是开放的,对于修改是关闭的,一个 好的系统是在不修改源代码的情况下,可以扩展你的功能,而。原创 2023-03-16 23:09:06 · 544 阅读 · 0 评论 -
【Java异常】Java异常监控重要手段 --异常链
异常链”无论是在框架源码中还是在日常项目开发中,都是一项非常重要的对异常处理的手段。以下摘抄自《Java编程思想》对异常链的介绍:常常会想要在①捕获一个异常后抛出另一个异常②并且希望把原始异常的信息保存下来,这被称为异常链。略。原创 2023-01-07 23:11:42 · 1691 阅读 · 3 评论 -
【安全漏洞】水平权限漏洞和垂直权限漏洞
权限校验非常重要。如果不对水平、垂直权限做校验,就会发生泄漏用户数据的事故,造成P0故障。原创 2022-12-26 18:39:38 · 1640 阅读 · 2 评论 -
【MySQL数据库】MySQL慢查询的危害
在日常开发中,数据库的查询操作是非常常见的。但是,如果MySQL数据库出现慢查询,是比较危险的,一旦有其他的DDL操作,可能会造成整个数据库的等待。原创 2022-11-23 20:04:20 · 1381 阅读 · 1 评论 -
【MybatisPlus】公共轮子
重复代码写一次就够了,剩下的交给ctrl+c和ctrl+v吧。原创 2022-11-12 23:25:39 · 130 阅读 · 0 评论 -
【Spring注解】@Conditional注解的使用
Conditional注解的判断条件,决定了该类是否可以成为Bean。原创 2022-11-06 16:06:57 · 557 阅读 · 0 评论 -
【第二剑-构建活动】代码应该怎么写?
编码时,始终牢记两个要点:1、主流程 2、异常监听。原创 2022-10-29 10:10:36 · 1782 阅读 · 0 评论 -
【MybatisPlus】Java代码定制化SQL与示例(持续更新...)
提高生产力。原创 2022-10-28 10:24:11 · 1421 阅读 · 0 评论 -
【DDL设计】操作记录表
合理的表结构设计,不仅仅让我们后面扩展表方便,还会大大提升数据库性能。原创 2022-10-27 22:28:40 · 790 阅读 · 0 评论 -
Java设计模式-结构型-享元模式
英文是 Flyweight Pattern,不知道是谁最先翻译的这个词,感觉这翻译真的不好理解,我们试着强行关联起来吧。Flyweight 是轻量级的意思,享元分开来说就是 共享 元器件,也就是复用已经生成的对象,这种做法当然也就是轻量级的了。复用对象最简单的方式是,用一个 HashMap 来存放每次新生成的对象。每次需要一个对象的时候,先到 HashMap 中看看有没有,如果没有,再生成新的对象,然后将这个对象放入 HashMap 中。这种简单的代码我就不演示了。原创 2022-10-07 14:36:55 · 116 阅读 · 0 评论 -
Java设计模式-结构型-组合模式
组合模式用于表示具有层次结构的数据,使得我们对单个对象和组合对象的访问具有一致性。原创 2022-10-07 14:34:12 · 78 阅读 · 0 评论 -
Java设计模式-结构型-门面模式
门面模式(也叫外观模式,Facade Pattern)在许多源码中有使用,比如 slf4j 就可以理解为是门面模式的应用。这是一个简单的设计模式,我们直接上代码再说吧。原创 2022-10-07 14:26:34 · 136 阅读 · 0 评论 -
Java设计模式-结构型-装饰模式
要把装饰模式说清楚明白,不是件容易的事情。也许读者知道Java IO中的几个类是典型的装饰模式的应用,但是读者不一定清楚其中的关系,也许看完就忘了,希望看完这节后,读者可以对其有更深的感悟。原创 2022-10-07 14:11:30 · 94 阅读 · 0 评论 -
Java设计模式-结构型-桥梁模式
理解桥梁模式,其实就是理解代码抽象和解耦。原创 2022-10-07 12:05:14 · 90 阅读 · 0 评论 -
Java设计模式-结构型-适配器模式
说完代理模式,说适配器模式,是因为它们很相似,这里可以做个比较。原创 2022-10-07 11:59:30 · 171 阅读 · 0 评论 -
Java设计模式-结构型-代理模式
第一个要介绍的代理模式是最常使用的模式之一了,用一个代理来隐藏具体实现类的实现细节,通常还用于在真实的实现的前后添加一部分逻辑。原创 2022-10-07 11:45:31 · 101 阅读 · 0 评论 -
Java设计模式-创建型-状态模式
目录前言示例示例1示例2 示例废话我就不说了,我们说一个简单的例子。商品库存中心有个最基本的需求是减库存和补库存,我们看看怎么用状态模式来写。核心在于,我们的关注点不再是 Context 是该进行哪种操作,而是关注在这个 Context 会有哪些操作。定义状态接口:定义减库存的状态:定义补库存状态:前面用到了 context.setState(this),我们来看看怎么定义 Context 类:我们来看下客户端调用,大家就一清二楚了:读者可能会发现,在上面这个例子中,如果我原创 2022-10-06 23:16:21 · 88 阅读 · 0 评论 -
Java设计模式-创建型-模板方法模式
在含有继承结构的代码中,模板方法模式是非常常用的。原创 2022-10-06 23:02:37 · 129 阅读 · 0 评论 -
Java设计模式-创建型-观察者模式
优点:● 观察者和被观察者之间是抽象耦合 如此设计,则不管是增加观察者还是被观察者都非常容易扩展,而且在Java中都已经实现的抽象层级的定 义,在系统扩展方面更是得心应手。● 建立一套触发机制 根据单一职责原则,每个类的职责是单一的,那么怎么把各个单一的职责串联成真实世界的复杂的逻辑关 系呢?原创 2022-10-06 22:03:20 · 168 阅读 · 0 评论 -
【LUA】LUA扣减库存性能测试
写好lua脚本之后,由于项目中都在使用该lua,作为lua脚本的开发者,你需要清楚你写的lua脚本的性能如何。原创 2022-09-17 23:41:27 · 529 阅读 · 1 评论 -
【LUA】如何借助redis的lua功能实现库存扣减
强调:当你打算在本地测试redis的某个功能的时候,你必须保证你本地的springboot版本、redis版本(两个:pom中引入的依赖版本,本地redis-ser的版本)和你公司项目中的版本保持一致。因为不同版本,差别挺大的,往往。建议使用StringRedisTemplate来执行lua脚本,好处是我不需要考虑我的redis客户端到底是使用jedis还是lettuce(换言之,我不需要考虑springboot的版本)。--不推荐,因为大部分公司使用的是2.x以上的版本了,不能因为你这个需要降低版本。原创 2022-09-15 00:16:50 · 2085 阅读 · 0 评论 -
【开发规范】持续更新中......
开发规范原创 2022-09-11 02:31:04 · 451 阅读 · 0 评论 -
Java设计模式
设计模式是前人大佬们总结的一类软件工程开发思路,对某些特定问题而提出的一些解决方案,对大家实际工作中写的各种代码进行高层次抽象的总结;原创 2022-09-10 23:13:17 · 201 阅读 · 0 评论 -
如何写好数据库CRUD?
CRUD分为两部分:读、写。其中「读」是:查询,「写」是:增加、删除、修改。- 针对「读」的编码是相对而言比较容易的,我们需要留意一下查询性能;- 针对「写」的编码就更需要用心了,因为需要考虑并发。.........原创 2022-08-09 23:20:15 · 713 阅读 · 0 评论 -
【Java基础】一个Java文件可以有多个类(外部类、内部类)
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。一个文件中可以只有非public类,如果只有一个非public类,此类可以跟文件名不同。2、为什么一个java源文件中只能有一个public类?每个编译单元(文件)都只能有一个public类,这表示,每个编译单元都有单一的公共接口,用public类来表现。该接口可以按要求包含众多的支持包访问权限的类。public类的名称文件名相同成员内部类。...原创 2022-07-17 14:26:46 · 17617 阅读 · 1 评论 -
RabbitMQ安装教程(MacOS、CentOS)
购买腾讯云服务买“轻量应用服务器”,便宜,十几块钱。 Messaging that just works — RabbitMQhttps://www.rabbitmq.com/点击“安装”按钮: Messaging that just works — RabbitMQhttps://www.rabbitmq.com/点击“安装”按钮:> 我的虚拟机就是centos7,所以下载的rabbitmq的版本是支持centos7的(不是centos8)。事先下载好以下安装包(基于centos7环境):1、上传安装包在原创 2022-06-11 23:42:06 · 1110 阅读 · 0 评论 -
【Java线程】线程池的拒绝策略、异常捕获
目录标题拒绝策略1、拒绝策略使用场景2、JDK内置拒绝策略3、自定义线程池创建方式4、自定义拒绝策略1.简单示例2.JAVA线程池自定义拒绝策略以及利用反射获取任务参数线程池异常处理1、run函数中的try catch是必须的2、其他异常捕获1.通过设置UncaughtExceptionHandler打印异常日志2.双层try catch嵌套(项目中的使用)使用线程池之前,先思考下面几个问题:该异步场景适合用线程还是线程池?使用JAVA默认的线程池,还是自定义的线程池?使用JAVA默认的拒绝策略,原创 2022-05-30 14:44:23 · 3604 阅读 · 1 评论 -
【Java日期时间】使用SimpleDateFormat和LocalDateTime(推荐)对两个日期做减法
使用SimpleDateFormat对两个日期做减法1.背景实际项目开发中,经常遇到对两个Date类型的时间进行相减,得到一个时间差,这个时间差的类型可能是"HH:mm:ss"、“dd HH:mm:ss”。2.代码示例 String start = "2010-2-2 01:01:01"; String end = "2010-2-2 03:03:03"; SimpleDateFormat simpleDateFormat = new SimpleDat原创 2021-07-09 13:50:29 · 5406 阅读 · 1 评论 -
【Java日期时间】使用JDK8中的LocalDate获取日期区间
使用JDK8中的LocalDate获取日期区间1.背景前台传来“2021-07-08”的字符串,后台根据这个字符串获取到这一天的时间区间:“2021-07-08 00:00:00”和“2021-07-08 23:59:59”。2.代码示例1.low的方式 private final String CONSTANT_START = "T00:00:00"; private final String CONSTANT_END = "T23:59:59"; private fina原创 2021-07-09 14:03:23 · 1656 阅读 · 0 评论 -
【Java日期时间】@JsonFormat与@DateTimeFormat注解的区分和使用
@JsonFormat与@DateTimeFormat注解的区分和使用1.背景时间问题一直是个比较头疼的问题。 以后台为基准参考:我们想要在后台对从数据库、第三方API接口获取到的时间进行“格式化”需要用到【@JsonFormat】注解;我们通过后台给前台传递指定格式的时间也是通过【@JsonFormat】;如果是后台接收前台传来的时间进行格式化需要用到【@DateTimeFormat】。@JsonFormat是jackson包的。2.@JsonFormat代码示例步骤1.使用maven引入原创 2021-07-09 14:55:52 · 2205 阅读 · 0 评论 -
【Java日期时间】使用SimpleDateFormat对日期做加法
日期做加法-Calendar扩展:日历类Calendar处理日期的加加减减。日期做加法-SimpleDateFormat记住一个类SimpleDateFormat :参数是指定的日期格式,只要是日期格式都可以。如 mm:ss、HH:mm:ss、dd HH:mm:ssSimpleDateFormat sdfHms=new SimpleDateFormat("HH:mm:ss");记住SimpleDateFormat 类的一个方法:日期字符串转日期如:分:秒 格式的日期。Date d原创 2021-07-09 15:21:53 · 1715 阅读 · 0 评论