自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

.

  • 博客(424)
  • 资源 (3)
  • 收藏
  • 关注

原创 深入理解Redis分布式锁

Redis 分布式锁

2022-11-15 09:15:00 1079 2

原创 深入理解CyclicBarrie

深入理解CyclicBarrier

2022-11-05 20:29:39 672

原创 深入理解CountDownLatch计数器

CountDownLatch实现原理

2022-11-03 09:00:00 580

原创 深入理解AQS

AQS

2022-11-01 09:30:00 501

原创 并发编程之深入理解CAS与Atomic原子操作类

Java并发之CAS

2022-10-26 09:30:00 440 2

原创 深入理解并发三大特性

JMM 与 CPU 缓存一致性

2022-10-21 09:00:00 522

原创 Future 用法详解

Future 用法详解前言为什么出现Future机制常见的两种创建线程的方式。一种是直接继承Thread,另外一种就是实现Runnable接口。这两种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。Future模式的核心思想是能够让主线程将原来需要同步等待的这段时间用来做其他的事情。因为可以异步获得执行结果,所以不用一直同步等待去获得执行结果。Future 用法详解用法很

2022-04-21 23:03:21 2323

原创 ExecutorCompletionService使用详解

ExecutorCompletionService使用详解前言ExecutorCompletionService 为什么需要使用这个类?jdk8提供的 CompletionService 接口,实现类 ExecutorCompletionService。我们先来看一个例子?很明显下面任务批量提交线程池,等待线程池运行,每个任务执行时间不同。 //此线程池线程递增 ExecutorService executorService = Executors.newCache

2022-04-16 16:45:14 4438 4

原创 CompletableFuture用法详解

CompletableFuture用法详解前言JDK汇总已经提供了异步编程的类Future<T>,为什么还要CompletableFuture这个类呢?我们通常在使用Future接口异步编程时,获取结果都需要阻塞获取。主线程中会阻塞,其实最好的结果是让它执行完结果后通知我们获取。还有一种情况,当我们需要多个异步结果嵌套时候,Future这个接口就就不能满足我们的实用场景了,可能需要我们手动在里面进行嵌套。对此,从JDK 8开始,在Concurrent包中提供了一个强大的异步编程工具 C

2022-04-05 19:20:34 2404

原创 线程池用法详解

线程池用法详解前言为什么需要用到线程池?众所周知线程是操作系统一种宝贵的资源,创建和销毁都很耗费资源,对此,java中针对这种情况实现出线程池思想,维护一定数量的线程,用到时候就不需要去创建,不使用时候,就销毁一定量的,保留一部分线程数量。Java线程池的工作流程Java线程池的工作流程为:线程池刚被创建时,只是向系统申请一个用于执行线程队列和管理线程池的线程资源。在调用execute()添加一个任务时,线程池会按照以下流程执行任务。如果正在运行的线程数量少于corePoolSize(用户定

2022-04-04 19:22:11 1296 6

原创 深入理解 ReentrantLock

ReentrantLock用法详解前言我们都知道JDK中已经有了synchronized 锁,为什么还要提供 ReentrantLock锁与 相比 ReentrantLock锁有什么优势?为什么需要提供这个锁?ReentrantLock 锁 和 synchronized 锁 该怎么选择?synchronized 锁隐式锁可冲入锁自动释放锁不能人为控制synchronized 锁 ,自动释放锁,好处是不需要我们担心释放锁,但也带来一个问题,如果下面代码锁总执行时间很长,也就意味着长时间

2022-04-04 16:27:59 3959 2

原创 深入理解读写锁ReentrantReadWriteLock

读写锁ReentrantReadWriteLock用法详解

2022-04-03 23:08:11 3782

原创 深入理解信号量Semaphore

Semaphore用法详解

2022-03-28 22:57:41 3330 1

原创 自定义一个显示锁,并且这个锁存在超时机制

synchronized 锁存在几个问题我们在使用synchronized锁时候,由于synchronized(锁升级和锁竞争本文不讨论)特定锁机制,导致我们不能针对锁进行控制如果到获取到锁,但迟迟没释放锁,或者说执行时间过长,但是没有出现异常,就不会释放锁。static final Object lock = new Object(); synchronized (lock){ while (true){ //

2022-03-27 14:59:26 911

原创 关于最近项目中优化的一些思考

最近有一天领导突然跟对我说:让我负责一个项目优化,而我当时心里一万个xxx在飞,当时瞬间心里一激动,我平时吹牛逼划划水配合别人打打小手还可以,让我主动去负责一个项目优化,这不是要我的老命吗?表面的我我曹?????我曹????我只想摸鱼啊。内心的我我曹?不就是个优化吗?没啥问题,这次轮到我大显身手了,瑟瑟发抖吧 我的同事们!

2023-06-03 14:07:51 669

原创 Redis缓存架构详解

一般开发中我们都会使用 Redis 作缓存,提高查询效率,但 Redis 缓存在使用时还会有很多问题,如,缓存穿透,击穿,雪崩等。一般对于不同的业务我们使用不同的缓存结构。1、对于并发几率很小的数据(如个人维度的订单数据、用户数据等),这种几乎不用考虑这个问题,很少会发生 缓存不一致,可以给缓存数据加上过期时间,每隔一段时间触发读的主动更新即可。2、就算并发很高,如果业务上能容忍短时间的缓存数据不一致(如商品名称,商品分类菜单等),缓存加上过期 时间依然可以解决大部分业务对于缓存的要求。

2023-05-15 09:00:00 1034 1

原创 Tomcat线程池扩展总结

Tomcat线程池默认实现StandardThreadExecutor。自定义了拒绝策略,Tomcat 在线程总数达到最大数时,不是立即执行拒绝策 略,而是再尝试向任务队列添加任务,添加失败后再执行拒绝策略。TaskQueue 重写了 LinkedBlockingQueue 的 offer 方法。只有当前线程数大 于核心线程数、小于最大线程数,并且已提交的任务个数大于当前线程数时,也就是 说线程不够用了,但是线程数又没达到极限,才会去创建新的线程。

2023-05-08 22:58:10 615

原创 Redis 布隆过滤器总结

大数据判断是否存在来实现去重:这就可以实现出上述的去重功能,如果你的服务器内存足够大的话,那么使用 HashMap 可能是一个不错的解决方案,理论上时间复杂度可以达到 O(1) 的级别,但是当数据量起来之后,还是只能考虑布隆过滤器。解决缓存穿透:我们经常会把一些热点数据放在 Redis 中当作缓存,例如产品详情。

2023-05-07 12:53:09 833

原创 简单部署java 的sh脚本,免得每次 Kill 再启动

简单部署java 的sh脚本,免得每次 Kill 再启动。

2023-05-01 16:09:02 192

原创 Lock wait timeout exceeded; try restarting transaction\n; Lock wait timeout exceeded; try restarting

Lock wait timeout exceeded; try restarting transaction\n; Lock wait timeout exceeded; try restarting 问题解决

2023-03-01 14:38:11 746

原创 Multi-statement transaction required more than ‘max_binlog_cache_size‘ bytes of storage;

但这样是治标不治本的解决方法,归根结底还是事务太大了,应当从业务角度去解决,避免出现大事务。我们都知道提交事务过程,先写入binlog,然后再提交处于commit事务状态。经百度查询是提交事务大小超过 mysql binlog 大小。最大可能设置为 16EB (exabytes)。推荐最大设置为40G,

2023-03-01 13:47:23 340

原创 授权验证方式有很多、但AOP最为优雅。

有时候项目中需要对接口进行校验,增加鉴权,确保 API 不被恶意调用。

2023-02-17 20:08:20 704

转载 AOP 切点指定多个包

我的问题是如何在表达式中指定多个不同的包(* package1 …))** 现在我正在为每个包声明一个单独的切入点,并且在一个单独的aop:before和aop:每个切入点的入口之后声明一个单独的切入点。但我认为这应该是定义多个包的切入点的理想方法。我使用Aspect在基于spring mvc的应用程序中记录活动。我使用@controller注释来定义应用程序中的任何控制器。我在两个不同的包中使用了两个不同的控制器, com.package1包含控制器1类,让它命名为AController。

2023-02-17 14:05:09 1207

原创 Java 类加载机制与双亲委派

Java 类加载机制与双亲委派

2022-11-09 23:21:45 214

原创 又是一年1024

又是一年1024,大家1024 快乐,吃好喝好玩好。

2022-10-24 09:00:00 97

原创 JAVA 根据身份证计算年龄 + 性别 + 身份证号码验证

【代码】JAVA 根据身份证计算年龄 + 性别 + 身份证号码验证。

2022-10-10 14:36:36 380

原创 模板模式+策略模式优化

模板模式+策略模式来进行优化实际应用

2022-09-25 21:59:29 950

原创 关于线程池需要注意的几点

关于线程池优化

2022-06-10 17:39:37 443 1

原创 关于局部变量的线程池,会不会被回收

关于局部变量的线程池,会不会被回收遇到个问题,模拟一下,得出结论。线上监控线程数量一直增加,经过查询是同事在使用线程池没有关闭伪代码如下 static void test(){ //方法内 定义线程池 ExecutorService pool = new org.apache.tomcat.util.threads.ThreadPoolExecutor(1, 2, 10, TimeUnit.SECONDS, new Synchronou

2022-05-23 22:19:19 1460

原创 aop记录日志到db

前言业务开发中,某些业务需要记录用户操作前后的日志,做一些log操作证据。实现在业务代码前后加save log 操作到 db使用aop 不改变业务代码的情况下记录Logaop记录日志到db业务中全部打印日志记录部分日志到db部分日志需要记录到db这里我们自定义Log注解然后使用aop扫描次注解记录该日志操作Log注解import java.lang.annotation.*;@Target({ElementType.METHOD})@Retention(Retenti

2022-05-21 18:47:57 172

原创 AOP记录日志

AOP记录日志package com.xxxxxxx.config;import com.alibaba.fastjson.JSON;import com.ly.traffic.ground.cxy.config.util.AopUtil;import com.ly.traffic.ground.saas.base.helper.LoggerHelper;import com.ly.traffic.ground.saas.util.Constants;import org.aspectj.la

2022-05-21 18:40:14 168

原创 基于 Nacos 实现 Sentinel 规则持久化

基于 Nacos 实现 Sentinel 规则持久化前言Sentinel Dashboard中添加的规则数据存储在内存,微服务停掉规则数据就消失,在⽣产环境下不合适。我们可以将Sentinel规则数据持久化到Nacos配置中⼼,让微服务从Nacos获取规则数据。构建依赖 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>sp

2022-05-08 19:17:03 546

原创 Sentinel 降级规则模块

Sentinel 降级规则模块流控是对外部来的⼤流量进⾏控制,熔断降级的视⻆是对内部问题进⾏处理。Sentinel 降级会在调⽤链路中某个资源出现不稳定状态时(例如调⽤超时或异常⽐例升⾼),对这个资源的调⽤进⾏限制,让请求快速失败,避免影响到其它的资源⽽导致级联错误。当资源被降级后,在接下来的降级时间窗⼝之内,对该资源的调⽤都⾃动熔断。Sentinel不会像Hystrix那样放过⼀个请求尝试⾃我修复,就是明明确确按照时间窗⼝来,熔断触发后,时间窗⼝内拒绝请求,时间窗⼝后就恢复。RT平均响应

2022-05-08 00:29:33 253

原创 sentinel 自定义返回限流信息

版本 <!--sentinel 核心环境 依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> &lt

2022-05-07 20:07:25 654

原创 nacos集群模式配置

集群更改这么几个地方更改新增集群配置文件绿色的例子文件更改内容为,集群的ip配置启动模式sh startup.sh -m cluster分别启动8848 8849 8850如果打不开管理页面,查看启动日志,可能是自己mysql没导入将这两个导入自己本地Mysql同时检查自己的mysql 账号密码是否正确。...

2022-05-04 23:19:32 663

原创 docker-compose

docker-compose概述在实际生产环境中,一个应用往往由许多服务构成,而 docker 的最佳实践是一个容器只运行一个进程,因此运行多个微服务就要运行多个容器。多个容器协同工作需要一个有效的工具来管理他们,定义这些容器如何相互关联。compose 应运而生。compose 是用来定义和运行一个或多个容器(通常都是多个)运行和应用的工具。使用 compose 可以简化容器镜像的构建以及容器的运行。compose 使用 YAML 文件来定义多容器之间的关系。一个 docker-compos

2022-05-04 17:27:25 1084

原创 docker 制作镜像

镜像转容器制作镜像报错到本地docker save -o new_tomcat tomcat:8.5.78加载镜像docker load -i new_tomcat这种方式 挂载的文件不能复制到新镜像,容器里新建的文件是可以复制到新镜像的。dockerfileDockerfile****的基本结构Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。docker build命

2022-05-04 16:04:02 259

原创 docker数据卷

docker 数据卷docker cpdocker cp :用于容器与主机之间的数据拷贝。宿主机文件复制到容器内 docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH容器内文件复制到宿主机 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH拷贝文件到容器里./index.html : 宿主机文件trusting_gauss: 容器名/usr/share/nginx/html : 容器路径下do

2022-05-03 19:57:38 1601

原创 线程池原理

线程池原理线程池的实现原理线程池的实现原理其实可以看成一个生产者消费者模型。我们执行线程往线程池里提交任务,线程池里的线程去消费任务,其他的一些策略去保证线程池和系统安全,如拒绝策略,线程大小的控制,阻塞队列的大小。JDK中线程继承图如下可以看比较详细的具体的继承图顶级接口只有一个执行任务的方法public interface Executor { void execute(Runnable command);}ExecutorService 接口额外添加了一些 关

2022-04-17 23:37:06 311 2

原创 StampedLock用法详解

文章目录StampedLock用法详解前言原因StampedLock锁使用场景StampedLock用法详解前言为什么需要用这个锁?已经有了读写锁 ReentrantReadWriteLock ,为什么还需要这个锁?原因读写锁存在一个问题:当读锁比例很多,写锁很少,锁竞争情况下,写锁抢到锁的机会就回少,读锁数量太大的情况下,写锁不一定能抢到锁。StampedLock锁使用场景当读写锁比例相差很大时候,为了均衡读和写不出现锁饥饿现象,特此JDK中引入了一个新的锁,用来防止读写时候出现锁饥饿。

2022-04-03 23:28:50 838 2

js正则基本语法+例子

js一些简单的正则基本语法+例子,附带源代码,直接浏览器中打开即可

2018-08-01

springboot连接数据库,连接redis,jsp展示数据

springboot整合jsp,mybatis查询并展示数据到jsp页面,连接redis实现缓存展示数据,附带数据库(增删改没写,有查,数据库成功连接,我懒所以没写。)

2018-07-19

ssi增删改查

ssi增删改查 ,第一个表增删盖查,第二个表方法只写了,表连接两个表一对一,含数据库

2017-10-09

空空如也

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

TA关注的人

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