自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

种一颗十年前的树

我用双手成就自己的梦想。

  • 博客(244)
  • 资源 (1)
  • 收藏
  • 关注

原创 搭建spring-cloud项目并使用nacos作为注册中心

文章目录1.项目目录结构2.各模块责任及maven依赖、yml、重要注解2.0.spring-cloud-nacos2.1.raven-common2.2.raven-nacos2.3.raven-service2.4.raven-service-api3.需要注意可能会踩坑的地方:3.1.nacos config配置文件bootstrap.properties3.2.@EnableFeignClients注解 basePackages3.3.spring-cloud-starter-alibaba-nac

2021-07-08 21:21:08 723 2

原创 redisson常用APi-Example

【代码】redisson常用APi-Example。

2023-08-01 11:11:20 748

原创 redisson分布式锁学习

Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象还提供了许多分布式服务。其中包括(BitSet,SetSortedSetMapListQueueLockAtomicLongRedisson提供了一个监控锁的看门狗,它的作用是在Redisson实例被关闭前,不断的延长锁的有效期,也就是说,如果一个拿到锁的线程一直没有完成逻辑,那么看门狗会帮助线程不断的延长锁超时时间,锁不会因为超时而被释放。

2023-07-31 16:32:00 691

原创 Redisson学习之项目引入reidsson— 基于redisson-spring-boot-starter

【代码】Redisson学习之项目引入reidsson— 基于redisson-spring-boot-starter。

2023-07-28 15:53:05 583

原创 Redisson学习———学习redisson加载yaml配置信息

他们的不同点点在于redisson . config 后面的纯文本信息表达方式不同,分为yaml和json俩种表达方式。config 设置为String 类型 用于加载spring.redis.redisson下的纯文本配置。该类提供默认的config配置,并提供将各种类型的数据解析为config配置类的能力。以下redisson配置二选一即可,配置内容相同,展示格式不同而已。

2023-07-28 15:06:01 1788

原创 引入redisson踩坑(Unable to init enough connections amount! Only 15 of 24 were initialized)

问题解决

2023-07-27 16:14:44 3527

原创 stream 流分组求和【double类型】时可能会出现精度丢失问题

stream 流分组求和(double类型)时可能会出现精度丢失问题 使用时需慎用

2022-05-12 23:53:14 1276

原创 kubernetes微服务学习之k8高级概念和应用

文章目录K8s存储卷抽象Volume容器重启数据丢失的问题Petclinic微服务配置VolumeVolume存储的必要性什么是Volume存储卷?mysql pod 挂载本地hostpath存储卷k8s存储解藕PVC和PVk8s存储解藕机制pv和pvc yaml配置pvc/pv小结K8s资源请求和限额(Request/Limit)Request/limitlimit /request yaml配置K8s的Metrics Server组件Metrics Server实现流程K8s就绪探针和存活探针就绪探针和

2021-11-26 13:04:06 2055 1

原创 初次遇到go之linux配置Go环境启动项目

文章目录配置linux go运行环境下载安装go安装包配置go环境变量bashrc与profile的区别linux运行go应用安装git拉取项目clone项目部署项目运行项目遇到的问题:启动项目后无法连接远程rds ,自动连接本地数据库启动项目报错go mod tidy 无法拉下包配置linux go运行环境下载安装go安装包下载go安装包https://studygolang.com/dl解压安装包tar -zxvf go1.17.2.linux-amd64.tar.gz配置go环境

2021-10-24 20:23:41 756

原创 kubernetes微服务学习之阿里云k8s部署

文章目录学习内容将Petclinic单体解耦拆分为微服务架构petclinic微服务架构DeckerFile文件描述springcloud gateway 微服务yamlK8s部署配置文件进入dashboard页面Petclinic微服务的阿里云K8S发布部署架构Petclinic微服务配置阿里云环境配置配置本地kubectl 连接k8s集群部署configMap学习内容将Petclinic单体解耦拆分为微服务架构在阿里云部署发布微服务将Petclinic单体解耦拆分为微服务架构petclin

2021-10-22 22:30:48 1745

原创 Kubernetes微服务学习之Kubernetes基本概念和应用(下)

文章目录K8s内部反向代理ClusterIp Service主要学习内容内部服务如果相互访问?传统内部反向代理K8s内部反向代理ClusterIP Service 内部访问MySql Pod 配置ClusterIP Service学习小结K8S名字空间Namespace和Kube-Dns主要学习内容K8s架构部署回顾K8s名字空间抽象NamespaceNamespace相关脚本内部DNS域名服务解析流程Namespace和Dns域名解析学习小结K8s配置抽象ConfigMap主要学习内容K8s配置抽象Con

2021-10-13 22:21:09 189

原创 Kubernetes微服务学习之Kubernetes基本概念和应用(上)

文章目录k8s架构简介k8s Master节点与Worker节点k8s执行流程案例K8s总体架构K8s各组件作用k8s虚拟机抽象Podk8s和PodPetClinic项目模拟Pod应用Pod发布规范Pod相关指令如何访问Podpod小结K8s反向代理Service传统反向代理与K8s Service反向代理对比传统反向代理K8s NodePort Service反向代理Label和SelectorService 发布Service 发布样例规范PetClinic Service发布规范Petclinic-p

2021-10-12 23:06:49 212

原创 Kubernetes微服务学习之SpringCloud(PetClinic)微服务应用

文章目录spring社区版PetClinic微服务项目技术栈及架构简介PetClinic微服务Docker Compose 部署文件简析PetClinic微服务的基本功能描述Springcloud版PetClinic微服务 与 K8s版PetClinic微服务架构和技术栈差异微服务公共关注点系统架构对比技术栈差异Springcloud版PetClinic微服务 VS K8s版PetClinic微服务spring社区版PetClinic微服务项目技术栈及架构简介PetClinic微服务Docker C

2021-09-25 15:34:18 455

原创 进阶学习之旅-多线程之阻塞队列

阻塞队列ArrayBlockingQueueLinkedBlockingQueueDelayQueueSynchrosQueue操作方法插入元素add/offer()/put删除/获取元素remove/poll/take源码分析public class BlockingQueueDemo{ // add method /** * 将元素插入队列中 * @param e * @return */ pu

2021-09-22 16:43:08 134

原创 进阶学习之旅-多线程之深入concurrentHashMap

文章目录学习内容不同版本区别基本的数据结构put的实现过程源码分析源码中位运算巧妙的应用初始化tab以及sizeCtl的作用初始化tabsizeCtl的作用addCount是做什么的?CounterCell为什么基于CounterCell来计算容器大小?扩容扩容源码分析将当前的链表分为高低链,提高扩容的效率为什么可以提高扩容的效率?学习内容总结学习内容put的实现过程不同版本区别源码分析为什么使用CounterCell来计算容器大小?学习内容总结不同版本区别HashMap?Concurr

2021-09-14 22:09:15 323

原创 进阶学习之旅-多线程之JUC工具类原理及Semaphore使用及源码分析

文章目录学习内容Semaphore的使用停车场案例源码分析学习内容Semaphore的使用Semaphore源码分析Semaphore的使用semaphore 常用于限流的使用他使用了AQS的共享锁在使用的过程中可以通过构造参数指定公平锁还是非公平锁停车场案例/** * @PackageName: com.raven.multithreaded.concurrentutil.semaphore * @ClassName: SemaphoreTest * @Blame: rave

2021-09-01 20:24:03 148

原创 进阶学习之旅-多线程之JUC工具类原理及CountDownLatch、CyclicBarrier使用及源码分析

文章目录学习内容CountDownLatch的使用计数器demo模拟并发DemoCountDownLatch源码分析CountDownLatch源码分析流程图解CyclicBarrier使用CyclicBarrierDemo 模拟所有文件上传完毕后进行数据分析CyclicBarrier源码分析学习内容CountDownLatch的使用CountDownLatch源码分析CyclicBarrier的使用CyclicBarrier源码分析CountDownLatch的使用CountDownLa

2021-09-01 20:22:41 128

原创 进阶学习之旅-多线程之JUC工具类原理及Condition使用及源码分析

文章目录学习内容condition的使用demo案例condition同步过程AQS队列和conditon队列状态变化流程AQS队列的作用源码分析学习内容condition的使用源码分析condition的使用我们通过syncsynchronize 、wait、notify、notifAll 可以完成线程间通信,完成生产者消费者功能同样也可以通过Lock、condition(await、signal、signalAll)实现demo案例ConditionWait/** * @Pack

2021-09-01 20:10:05 178

原创 进阶学习之旅-多线程之深入AQS(Lock锁基本使用、ReentrantLock重入锁、AQS原理分析、AQS源码分析)

文章目录学习内容J.U.CLock的基本使用ReentrantLock(重入互斥锁)什么是重入锁?Reentrentlock 实现过程类图引用关系Lock.lock()-UML时序图基于ReentrantLock进行AQS源码分析多个线程争夺锁过程公平锁和非公平锁区别线程中断回顾ReentrantLock和Synchronized的区别学习内容了解J.U.CLock的基本使用ReentrantLock重入锁AQS原理分析AQS源码分析J.U.Cj.u.c(java.util.concur

2021-08-30 17:31:27 166

原创 进阶学习之旅-多线程之内存可见性的本质(volatile、JMM内存模型、Happens-Before原则)

文章目录学习内容初步认识Volitalevolatile的作用如何保证可见性可见性到底是什么?从硬件层面了解内存可见性的本质最大化的利用CPU资源CPU的高速缓存缓存一致性协议(MESI)MESI 带来的CPU阻塞问题内存屏障指令什么是JMM?java内存模型语言级别的内存屏障Happens-Before规则volatile规则程序的顺序规则传递性规则线程启动规则join规则sync 监视器锁学习内容初步认识Volitale从硬件层面了解可见性的本质什么是JMMHappens-Before规则

2021-08-17 16:57:49 211

原创 进阶学习之旅-多线程之Synchronized(Synchronized的使用、锁的存储、锁升级原理、wait&notify)

文章目录1.学习收获2.学习方法3.如何保证线程安全性4.synchronized的基本使用5.锁存储以及锁升级原理?5.1锁的实现5.1.1偏向锁5.1.2轻量级锁5.1.3重量级锁5.2锁在内存中的存储5.3锁升级原理**synchronized在不同情况下使用不同的锁:**6.wait 和 notify1.学习收获学习方法如何保证线程安全性?Synchronized的基本使用锁的存储Synchronized锁的升级原理wait/notify实现线程通信2.学习方法场景->需

2021-08-14 20:11:08 213

原创 进阶学习之旅-多线程之多线程基础(应用场景、生命周期、中断、复位)

文章目录1.学习内容2.学习方法3.并发的发展历史3.1真空管/穿孔打卡3.2晶体管/批处理系统3.3集成电路/多道程序设计4.线程在java中的应用5.多线程的实际应用场景6.并发基础6.1 线程的声明周期6.2 线程中断6.3 线程的复位6.4中断一个处于阻塞状态的线程6.5总结1.学习内容并发编程的发展历史线程在java中的应用多线程的实际应用场景线程的生命周期线程的基本操作-启动/停止2.学习方法公式:场景->需求->解决方案->应用->原理例子:Do

2021-08-13 19:57:23 191

原创 进阶学习之旅之设计模式总结

文章目录1.学习目标2.内容定位3.GOF 23种设计模式简介3.1设计模式归类3.3设计模式之间的关系4.容易混淆的设计模式4.1单例模式和工厂模式4.2策略模式和工厂模式4.3策略模式和委派模式4.4模板方法模式和策略模式4.5装饰者模式和静态代理模式4.6装饰者模式和适配器模式4.7适配器模式和静态代理模式4.8适配器模式和策略模式5.spring中的常用设计模式对比1.学习目标1.了解GOF23种设计模式和设计原则,做整体认知。2.了解各设计模式之间的关联,解决设计模式混淆的问题。3.了解s

2021-08-09 21:12:42 194

原创 进阶学习之旅-设计模式之(装饰者模式&观察者模式)

文章目录1.课程目标2.装饰者模式2.1装饰者模式的定义2.2装饰者模式的适用场景2.3 Demo案例2.4装饰者模式和适配器模式的对比2.5源码中的装饰者模式2.6装饰者模式的优点2.7装饰者模式的缺点2.8装饰者模式和静态代理的区别3.观察者模式3.1观察者模式的定义3.2 Demo 案例社区问答案例:event事件监听案例guava3.3观察者模式的适用场景3.4观察者模式的优点3.5观察者模式的缺点3.6观察者模式在源码中的应用1.课程目标1.掌握装饰者模式的特征和应用场景。2.掌握装饰者模式

2021-08-08 11:33:33 270

原创 技术使用总结-旷视人脸识别-(APP中H5接入)

1.applicationserver: port: 80megvii: appKey: XXX secret: XXX # 验证通过后跳转的页面 returnUrl: https://www.pilipili.com/ # 验证后回调的接口 notifyUrl: https://www.pilipili.com/ webTitle: 代码生涯2.dto

2021-08-06 14:35:35 1308

原创 进阶学习之旅-设计模式之(模板模式&适配器模式)

文章目录1.课程目标2.内容定位3.模板模式3.1模板模式的定义3.2 模板模式的适用场景3.3 Demo案例**1.上课案例****2.JDBC案例**3.4源码中的模板模式应用3.5模板模式的优点3.6模板模式的缺点4.适配器模式4.1适配器模式的定义:4.2适配器模式的适用场景4.3 Demo案例**4.3.1.变压器案例****4.3.2.登录案例**1.课程目标1.学会用模板模式梳理使用工作中流程标准化的业务场景。2.通过学习适配模式,优雅地解决代码功能的兼容问题。3.了解JDK源码和sp

2021-08-06 11:25:20 392

原创 进阶学习之旅-设计模式之(委派模式&策略模式)

文章目录1.课程学习目标2.内容定位3.委派模式详解3.1委派模式的定义3.2 demo案例3.2.1模拟Boss指派任务给Leader 由员工完成任务执行3.2.2 模拟spring mvc dispatchServlet 根据不同的uri 执行不同的controller代码3.3 spring中的委派模式4.策略模式详解4.1策略模式的定义4.2策略模式的适用场景4.3策略模式优点4.4策略模式的缺点4.5策略模式案例Demo4.5.1模拟选购商品不同活动采用不同的优惠策略4.5.2根据不同的支付方式进

2021-08-01 18:23:55 232

原创 Feign发送Get请求时使用对象传递参数(Request method ‘POST‘ not supported问题)

文章目录四种解决方案:1.将get请求改为post请求2.发送请求使用 httpclient,而不是java原生2.1添加pom依赖2.2 yml设置允许使用httpclient2.3 方法上添加注解2.3.1 接口方法请求参数添加@RequestBody2.3.2 接口方法上@GetMapping 添加 consumes属性2.3.3 服务提供方方法上请求参数也需要加@RequestBody注解,方法上@GetMapping 添加 consumes属性3.springcloud2.1.0前:使用@requ

2021-07-27 11:31:08 1339

原创 linux 下 安装jdk 并配置环境变量

文章目录1.下载2.解压安装包3.配置环境变量4.测试5.遇到的问题5.1 ⁣export命令找不到1.下载第一步:下载Linux环境下的jdk1.8安装包(现在在oracel官网下载安装包好像要注册~~~个人觉得有点麻烦不贴图了,不过也可以在非官网下载2.解压安装包第二步:将我们下载好的安装包上传至服务器,进行解压tar -zxvf jdk-8u131-linux-x64.tar.gz3.配置环境变量第三步: 编辑配置文件,修改环境变量vi /etc/profile<br>按

2021-07-02 14:59:19 116

原创 进阶学习之旅-设计模式之单例设计模式

0.单例设计模式的学习目标0.1掌握IDEA环境下的多线程调试方式0.2掌握保证线程安全的单例模式策略0.3掌握反射暴力攻击单例解决方案及原理分析0.4掌握序列化破坏单例的原理及解决方案0.5掌握常见的单例模式的写法1.单例模式的定义单例模式(Singleton Pattern) 是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。隐藏其所有的构造方法。属于创建型模式。2.单例模式的使用场景确保任何情况下都绝对只有一个实例。ServletContext、Servlet

2021-06-22 18:05:27 215

原创 进阶学习之旅-设计模式之工厂模式

0.设计模式Spring不同技术中的体现1、简单工厂模式1.1简单工厂模式的定义简单工厂模式(Simple Factory Pattern) 是指由一个工厂对象决定创界出哪一种产品类的实例。简单工厂模式属于创建型模式,但是他不属于GOF,23中设计模式。1.2简单工厂模式的实现calender、loggerFactory1.3简单工厂模式的适用场景1.3.1工厂类负责创建的对象较少。1.2.2客户端只需要传入工厂类的参数,对于如何创建对象的逻辑不需要关心。1.4简单工厂模式的优点只

2021-06-19 09:37:17 221

原创 skywalking学习

快速学习-skywalking概述https://blog.csdn.net/weixin_42528266/article/details/107840900快速学习-skywalking入门https://cwl-java.blog.csdn.net/article/details/107840978快速学习-实用插件https://blog.csdn.net/weixin_42528266/article/details/107841576视频https://www.bilibili.c

2021-02-28 10:58:22 192 1

原创 基于rocketMQ延时队列+redis分布式锁 实现自动支付

业务需求:默认情况下符合条件的订单都需要进行人工支付,耗费大量时间成本,产生需求:在指定时间内对符合支付条件的订单进行系统自动支付实现思路:rocketMQ 生成消息时,定义消息队列为延时队列,指定时间。分布式情况下可能多台服务器同时执行产生消息,所以消费消息时,需要通过redis 分布式锁来保证同一时刻,只有一台服务器在进行执行消费消息的操作,并通过业务查询判断是否已经支付成功,今在为消费成功的情况下,才进行消费,从而解决消息的重复消费幂等性。ymlrocketmq:是否开启自动配置isEn

2021-02-25 11:35:41 1125

原创 判断48小时内的俩个时间段是否重叠

public boolean dispatcherTimeVerify(List<DriverRewardBusinessRuleDTO> businessRuleDTOList) { boolean overlapFlag = false; for (int i = 0; i < businessRuleDTOList.size(); i++) { String startTime = businessRuleDTOList.ge.

2020-12-13 09:39:36 187

转载 guava Lists下通过了两个创建指定容量的list方法,newArrayListWithExpectedSize,newArrayListWithCapacity。它们主要的区别如下:

https://www.cnblogs.com/yorkd/p/12793088.htmlguava Lists下通过了两个创建指定容量的list方法,newArrayListWithExpectedSize,newArrayListWithCapacity。它们主要的区别如下:源码:public static ArrayList newArrayListWithCapacity(int initialArraySize) {CollectPreconditions.checkNonnegati

2020-11-16 15:10:58 1016 1

转载 new HashMap()和Maps.newHashMap()的区别以及 newHashMapWithExpectedSize()

new HashMap()和Maps.newHashMap()的区别以及 newHashMapWithExpectedSize()1、new HashMap() 这种是java原生API写法,需要你手动加泛型。存在线程安全问题,在扩容计算hash的时候会出现安全问题,在rehash方法中,有兴趣的可以去看一下源码Map<String, Object> result = new HashMap<String,Object>();复制代码2、Maps.newHashMap(),这

2020-11-16 15:00:37 2618

原创 通过mybatis 在代码中动态的创建数据库的表

<update id="updateTableName" parameterType="string"> alter table v3_apmsg rename to ${tableName}</update><update id="createTable"> CREATE TABLE `v3_apmsg` ( `MODIFIED_TIME` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP

2020-08-28 15:52:21 861 3

原创 springboot配置多数据库

#数据源配置jdbc: #系统库 master: host: * port: * db: * user: * passwd: * slave: host: * port: * db: * user: * passwd: * #格式化SQL语句(true:开启[有性能损失],false:关闭) p6spy: truespring: #启动banner banner: location: c

2020-08-28 15:51:46 236

原创 elasticsearch 去重查询并进行分页

去重查询的俩种方式:在进行去重查询时,原来的目的是对于查询出的结果中一模一样的数据进行去重,但是各种百度发现都是对于单一字段的去重查询,最后索性新增了一个字段,将其他字段拼接了起来,从而根据拼接的字段进行去重查询1.使用字段聚合+top_hits聚合方式dsl:GET sjck_personnel/_search{ "size": 0, "aggs": { "query_agg": { "terms": { "field": "concat_field

2020-08-21 14:46:33 4776 3

原创 java设计模式学习之命令模式(更简单的理解设计模式)

传统OOP方式:控制器package com.java.jikexueyuan.commandmode;/** * 定义一个遥控器接口 */public interface Control { /** * 开 * @param slot */ public void onButton(int slot); /** * 关 * @param slot */ public void offButton(int slot)

2020-08-05 21:33:31 175

ORACLE 查询.docx

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

2020-03-30

空空如也

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

TA关注的人

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