- 博客(45)
- 资源 (1)
- 收藏
- 关注
原创 【springboot整合】Springboot和RedisCache
前面介绍了CacheAutoConfiguration默认生效的是SimpleCacheConfiguration配置类,实际中我们更多的是利用redis作为缓存,现在我们继续看看RedisCacheConfiguration有什么不同。
2023-06-24 14:41:28
726
原创 【springboot整合】Spring缓存抽象
为了统一缓存开发规范,以及提升缓存开发的扩展性,J2EE发布了JSR-107缓存开发规范。Java Caching定义了5个核心接口,分别是CachingProvider、CacheManger、Cache、Entry和Expiry。
2023-06-22 12:56:43
1156
原创 【Redis学习笔记】持久化
如果对数据不敏感,可以选单独用RDB。不建议单独用 AOF,因为可能会出现Bug。如果只是做纯内存缓存,可以都不用。
2023-02-01 00:37:52
174
原创 【Redis学习笔记】秒杀小案例(Jedis)
但是当我加大并发数量加到2000和秒杀商品的数量加到100时,会发现。4. 通过watch和redis的事务支持来解决这个问题;使用springboot+jedis整合秒杀案例。6. 使用Redis连接池解决超时问题。5. 使用Lua脚本解决库存遗留问题。
2023-01-27 22:05:50
111
原创 【Redis学习笔记】Redis事务
Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。Redis事务的主要作用就是串联多个命令防止别的命令插队。
2023-01-15 16:58:52
84
原创 【数据库】事务篇
优快云话题挑战赛第1期活动详情地址:https://marketing.youkuaiyun.com/p/bb5081d88a77db8d6ef45bb7b6ef3d7f参赛话题:Java学习记录话题描述:【数据库】事务篇一、前言学习概述:数据库事务篇学习目标:对数据库的事物进行一个简单了解二、事物1.概述事物可以是一条非常简单的SQL组成,也可以有一组复杂的SQL租车个。在事务中的操作,要么都成功,要么都失败。2.事务的4大特性A(atomicity):原子性。指的是数据库事务是一个
2022-05-17 15:08:53
129
原创 【多线程】线程池
为什么要使用线程池线程池做的工作主要是控制运行的线程数量,处理过程将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超过数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行。主要特点:线程复用;控制最大并发数;管理线程降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能执行。提高线程的可管理性。线程是稀缺资源,如果线程无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进
2022-05-06 15:42:12
466
原创 【多线程】阻塞队列(blockingQueue)
结构体系结构说明:当阻塞队列是空时,从队列中获取元素的操作将会被阻塞;当阻塞队列是满是,往队列里添加元素的操作将会被阻塞试图往空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素;同样,试图往已满的队列中添加新的元素的线程同样会被阻塞,直到其他的线程从队列中移除一个或多个元素或者完全清空队列后使队列重新变得空闲起来后继续新增阻塞线程的作用在多线程领域,所谓阻塞,在某些情况下会挂起线程(即阻塞),一但条件满足,被挂起的线程又会自动被唤醒。不需要人为干预什么时候需要阻塞
2022-05-04 20:15:30
327
原创 Volatile关键字
Volatilevolatile是JAVA虚拟机提供的轻量级同步机制保证可见性不保证原子性禁止指令重排JMM(JAVA内存模型)JMM(Java内存模型 Java Memory Model)本身是一种抽象的概念,它描述的是一组规则或规范,通过这个规范定义了程序中各个变量(包括实例字段、静态字段和构成数组对象的元素)的访问方式。JMM关于同步的规定:线程解锁前,必须把共享变量的值刷新会主内存线程加锁前,必须读取主内存最新值到自己的工作内存加锁解锁是同一把锁由于JVM运行程
2022-05-02 17:57:02
132
原创 Spring Security Basic 之 Eureka加密
前言在实际的使用中,Eureka Server需要考虑安全问题,不能随意让人调用Eureka Server上面的API;未认证的Eureka Client也禁止注册到Eureka Server中搭建父工程环境:Spring boot 2.2.6.RELEASE 、Spring cloud Hoxton.SR5<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.
2022-04-27 11:14:50
566
原创 AQS源码剖析
什么是AQS(AbstractQueuedSynchronizer)用来构建锁或者其他同步器组件的重量级框架以及整个JUC体系的基石,通过内置的FIFO队列来完成资源线程的排队工作,并通过int类型变量表示持有锁的状态抢到资源的线程直接处理业务逻辑,抢不到资源必然涉及到排队等候机制。抢占资源失败的线程继续等待,但等待线程仍然保留获取锁的可能且获取锁流程仍在继续如果共享资源被占用,就需要一定的阻塞等待唤醒机制来保证锁的分配。这个机制主要是使用CLH队列的变种来实现的,将暂时获取不到锁的线程加入到队列中
2022-04-17 17:34:13
455
原创 数据库之索引
什么是索引索引是一个单独的、存储在磁盘上的数据库结构,包含着对数据表里所有记录的引用指针。使用索引是提高查询效率的最好的方式。索引是在存储引擎中实现的,因此,每种存储引擎的索引都不尽相同,且并不是每种存储引擎都支持所有的索引类型。MySQL中索引的存储类型有两种,BTREE和HASH,且不是每种存储引擎都能使用两种。InnoDB和MyISAM存储引擎只支持BTREE索引;MEMORY/HEAP存储引擎可以支持HASH和BTREE索引。为什么使用索引以及有什么缺陷使用索引有以下优势:加快查
2022-04-03 16:58:41
922
原创 数据库之SQL篇
为什么要使用数据库数据保存在内存:存取速度快,但是不能持久化,断电即失数据保存在磁盘:可以持久化,但是存取速度慢,查询不方便数据保存在数据中:即可以持久化,又有可观的存取速度什么是SQL结构化查询语言(StructuredQueryLanguage)简称SQL,是一种数据库查询语言。用来存取数据、查询、更新和管理关系数据库系统。MySQL数据库的分页在mysql中,select语句默认返回所以匹配的行,用户也可以根据自己的需求来返回指定的行。可以使用limit关键字来实现:...
2022-03-27 13:04:08
677
原创 Spring自带工具类集合
断言// 要求参数 object 必须为非空(Not Null),否则抛出异常,不予放行// 参数 message 参数用于定制异常信息。void notNull(Object object, String message)// 要求参数必须空(Null),否则抛出异常,不予『放行』。// 和 notNull() 方法断言规则相反void isNull(Object object, String message)// 要求参数必须为真(True),否则抛出异常,不予『放行』。void isT
2022-02-26 15:03:50
231
原创 手动回滚异常数据
@Autowired private PlatformTransactionManager platformTransactionManager; public void test(){ List<SupplierPurchaseOrderDetailsRecord> recordList = new ArrayList<SupplierPurchaseOrderDetailsRecord>(){ { .
2022-02-18 18:40:59
181
原创 Springboot日志集成
概 述Java应用中,日志一般分为以下5个级别:ERROR 错误信息WARN 警告信息INFO 一般信息DEBUG 调试信息TRACE 跟踪信息Spring Boot使用Apache的Commons Logging作为内部的日志框架,其仅仅是一个日志接口,在实际应用中需要为该接口来指定相应的日志实现。SpringBt默认的日志实现是Java Util Logging,是JDK自带的日志包,此外SpringBt当然也支持Log4J、Logback这类很流行的日志实现。SpringBoo
2022-02-16 10:26:12
1415
原创 整合Spring Boot Admin(服务监控)
搭建Spring Boot Admin Serverpom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/
2022-02-15 09:54:18
177
原创 搭建一个简单的SpringCloud项目框架
微服务搭建工程初始化新建一个空的父工程,也可以创建maven项目创建子模块注册中心子模块pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mav
2022-02-11 17:42:32
444
原创 Dubbo入门 03
整合SpringBoot创建Maven父工程服务端消费端测试创建Maven父工程工程结构pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ma
2022-02-10 14:17:55
1086
原创 Dubbo入门02
使用注解方式配置服务端接口及实现类/** * 注解方式接口 */public interface ProviderServiceAnnotation { String SayHelloAnnotation(String word);}import com.alibaba.dubbo.config.annotation.Service;/** * 注解方式实现类 */@Service(timeout = 5000)public class ProviderServic
2022-02-08 13:33:34
998
原创 Dubbo入门01
一 Dubbo技术架构节点角色说明二 代码实现2.1 服务端提供给消费端,也就是被调用的一方定义接口/** * xml方式服务提供者接口 */public interface ProviderService { String SayHello(String word);}实现接口/** * xml方式服务提供者实现类 */public class ProviderServiceImpl implements ProviderService{ p
2022-02-08 10:31:04
1257
原创 自定义防止重复提交注解(利用redis)
自定义防止重复提交注解(利用redis)自定义注解使用AOP自定义注解package com.ljmes.util;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** * 避免重复提交 * @ClassName: Av
2022-01-13 16:43:16
388
原创 Java面向对象编程11 覆写
覆写方法覆写子类与父类一旦产生了继承关系之后,实际上子类会继承父类中的全部定义,但是这里面也有可能出现不合适的场景。如果发现父类中设计不足并且需要保留有父类中的方法或者属性名称的情况下就会发生覆写。当子类定义了与父类方法名称相同,参数类型及个数完全相同的时候,就称为方法的覆写。class Channel{ public void connect(){ System.out.println("[父类]进行资源的连接"); }}class DataBaseChanne
2021-09-06 14:22:07
291
原创 Java面向对象编程10 继承的定义与使用
继承的定义与使用继承问题引出面向对象的第二大特征就是继承性,继承性的主要特点在于:可以扩充已有类的功能。所谓的良好的代码指的是结构性合理、适合于维护、可重用性很高,但是如果只是安装之前的程序设计,不可避免会面临重复问题:以人类和学生类为例public class Person{ private String name; private int age; public void setName(String name){ this.name = name;
2021-09-06 11:38:22
91
原创 Java面向对象编程09 String类特点分析
String类特点分析String类简介字符串严格意义上来讲并不能算是一个基本数据类型,没有任何一门语言会有字符串数据类型,而Java语言为了方便开发者进行项目的编写,所以利用其JVM的支持制造了一种可以简单使样进行直接的赋值处理。public class JavaDemo{ public static void main(String args[]){ String str = "hello world!"; System.out.println(str);
2021-08-16 19:06:41
137
原创 Java面向对象编程08 数据表与简单Java类映射转换
数据表与简单Java类映射转换简单Java类是现在面向对象设计的主要分析基础,但是对于实际的开发之中简单Java类的定义来源是有依据的,往往都是根据数据表的结构来实现简单Java类。在数据库之中实际上是提供有若干个数据表的,那么每一张实体数据表实际上都可以描述出一些具体的事物概念,例如:雇言息员信息表、部门信息表一看就知道描述的就是雇员或部门的信息。按照这个思路,程序类的定义形式实际上和这些实体表的差别并不大,所以在实际的项目开发中数据表与简单 Java类之间的基本映射关系如下:数据实体表设计=类
2021-08-16 18:49:45
179
原创 Java面向对象编程07 引用传递实际引用
类关联结构引用传递是真个Java开发与设计过程之中最为重要的技术组成,对于应用传递也与生活密切相关。引用分析一:假设说现在生活比较好,于是有的人可以有一辆汽车,当然,有些人(屌丝)是没有汽车,只有11路汽车可以使用,现在要求可以通过面向对象的设计来解决实心以上的这种关系转换。package com.example.quartz.demo;class Car{ private String name; private double price; private Person
2021-08-16 18:41:49
86
原创 Java面向对象编程06 数组的定义与使用
数组的定义与使用数组的基本定义在程序开发之中考虑到一组变量的整体维护,专门提供有数组的概念。数组的本质为:一组相关变量的集合,但是需要注意的是:在Java中将数组定义为的引用类型,所以数组的使用会要牵扯到内存的分配。数组的动态初始化,初始化后,初始化之后数组每一个元素的保存内容为其对应数据类型的默认值声明并初始化数组:数据类型 数组名称[] = new 数据类型[长度];数据类型[] 数组名称 = new 数据类型[长度];数组的静态初始化:在数组定义的时候就为其设置好了里面的内容;
2021-08-08 11:08:39
252
原创 Java面向对象编程05 代码块
代码块在程序之中使用“{}”定义的结构就成为代码块,而后根据代码块出现的位置以及定义的关键字不同,代码块可以分为:普通代码块、构造块、静态块、同步代码块,其中对于同步代码块是在多线程的时候才会使用。普通代码块普通代码块的主要特点是定义在一个方法之中的代码块。public class JavaDemo{ public static void main(String args[]){ if(true){//条件一定满足 int x = 10; //局
2021-08-08 10:10:59
341
原创 Java面向对象编程03 this关键字
this关键字this调用本类属性this可以算是 Java里面比较复杂的关键字,因为this的使用形式上决定了它的灵活性,在程序里面使用this可以实现以下三类结构的描述:当前类的属性:this.属性当前类的方法(普通方法、构造方法):this();this.方法名称();描述当前对象;使用this调用当前类的属性使用构造方法或者是setter方法都可以进行类中属性的赋值,但是在进行赋值的时候,之前采用的是如下的定义形式:class Person { //定义一个类 priva
2021-08-02 00:24:50
168
原创 Java面向对象编程02 深入分析类与对象
深入分析类与对象成员属性封装在类之中的组成就是属性与方法,一般而言方法都是对外提供服务的,所以是不会进行封装处理的,而对于属性由于其需要较高的安全性,所以往往需要对其进行保护,这个时候就需要采用封装性对属性进行保护。在默认的情况下,对于类中的属性是可以通过其它类利用对象进行调用的。属性不封装的问题:class Person { //定义一个类 String name ;//人员的姓名 int age ;//人的年龄 public void tell(){ S
2021-08-02 00:01:56
76
原创 Java面向对象编程01 类与对象
类与对象面向对象简介Java语言最大的特点在于面向对象的编程设计,并且面向对象的编程设计也在由于Java自身的发展而不断发展。而且最初不支持面向对象的编程也都开始转向了面向对象。但是依旧会有许多开发者认为面向过程会比较好或者使用函数式编程。最早并且一直到现在流行的编程语言C、C++、Java。其中C语言已经变为了面向过程开发的代表,而C++或者Java都是面向对象的编程语言。所谓的面向过程指的是面对于一个问题的解决方案更多的情况下是不会做出重用的设计思考的,而面向对象的主要设计为模块化设计,并且可以
2021-08-01 23:40:06
118
原创 Java基础入门06 方法的定义与使用
方法的定义与使用方法的定义在程序之中很多情况下是由可能需要重复执行一些代码的。方法在定义的时候有一个前提:方法在主类中定义,并且由主方法直接调用方法的基本定义定义在主类之中并且由主方法直接调用,语法如下:public static 返回值类型 方法名称([参数类型 变量,....]) { // 该方法要执行的代码 [return [返回值] ;]}对于返回值而言就可以使用Java中定义的数据类型(基本数据类型、引用数据类型),在方法之中可以进行返回值的处理。如果要返回数据则
2021-07-24 11:49:50
114
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人