自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(39)
  • 收藏
  • 关注

原创 Redisson分布式锁实现

如果持有锁的线程执行业务时间非常久,超过了过期时间,这样久有问题了,所以redisson还为我们提供了自动延时的功能。当线程加锁成功后,会异步起一个线程延长锁时间。

2024-05-16 17:38:06 191

原创 根据权重 随机分配

【代码】根据权重 随机分配。

2024-05-07 18:42:41 91

原创 Mysql5.7 以上的JSON类型查询 8.0以上可加索引

sql例子:`name` varchar(255) NOT NULL COMMENT '姓名',`address` json NOT NULL COMMENT '住址',INSERT INTO `users` VALUES (1, '张三', '{\"city\": \"石家庄市\", \"tags\": [\"家\", \"公司\"], \"district\": \"桥西区\", \"province\": \"河北省\"}');

2024-04-01 15:45:03 806

原创 自定义 入参(非空)以及入参数据范围 校验工具类

****/@Data@NotNull(message = "申请部门id不能为空", groups = {AddGroup.class})@ApiModelProperty("申请部门id")@NotNull(message = "产品集合不能为空", groups = {AddGroup.class})@ApiModelProperty("产品集合")@Data@ApiModel("登记产品")

2024-02-26 15:32:01 377

原创 微信V3小程序支付&本地测试回调方法(NATAPP内网穿透)

支付成功后的服务器回调url(后台随便的一个接口能接收到就行) wxpay.notifyUrl=http://6dnnar.natappfree.cc/weiXinPay/callBack。访问 http://6dnnar.natappfree.cc/index.jsp。# 支付成功后的服务器回调url(后台随便的一个接口能接收到就行)# 微信支付商户号 服务商模式下为服务商的mchid 必填。#微信支付的商户密钥(开发者在微信商户平台查询)官网:https://natapp.cn。

2023-12-28 17:53:20 2927 2

原创 centos6.8 安装nginx

然后在浏览器里直接访问localhost,或者访问你的服务器ip。就可以看到nginx的欢迎页了。,查看nginx的安装目录,可以看到路径是nginx: /usr/local/nginx。iptables -F(不然无法远程访问)这样就把nginx启动起来了。关闭nginx,执行命令。重启nginx,执行命令。

2023-12-11 22:41:01 1081

原创 Mongodb 整合 SpringBoot -02

也可以使用uri连接 集群就是用uri来配置。# 默认端口是27017。索引可以大大提升查询效率,一般在查询字段上添加索引,索引的添加可以通过。复合索引的声明,建复合索引可以有效地提高多字段的查询效率。就可以了,没必要查询出所有字段修改后再更新所有字段。声明该字段需要索引,建索引可以大大的提高查询效率。)启动项目,看是否能正常启动,控制台没有错误。快速插入一条测试数据,数据的内容是对。的持久层框架,封装了底层的。

2023-12-11 22:34:05 65

原创 MongoDB——01

语言结构体的名称、对表示方法,支持内嵌的文档对象和数组对象,具有轻量性、可遍历性、高效性的三个特点,可以有效描述非结构化数据和结构化数据。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非。索引是特殊的数据结构,它以易于遍历的形式存储集合数据集的一小部分。文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档。那么,通常,我们想知道,建立的索引是否有效,效果如何,都需要通过执行计划查看。

2023-12-11 22:06:59 71

原创 深入单例模式

单例模式可以牵扯到很多东西,比如 多线程是否安全,是否懒加载,性能等等。还有你知道几种单例模式的写法呢?如何防止反射破坏单例模式?饿汉式正常的饿汉式单例。

2023-09-29 00:44:13 115

原创 JUC-04 (四大函数式,链式编程,流式计算,lambda表达式,异步回调)

要使用Future,通常只需要将耗时的操作封装在一个Callable对象中,再将它提交给。为了让程序更加高效,让CPU最大效率的工作,我们会采用异步编程。首先想到的是开启一个新的线程去做某项工作。再进一步,为了让新线程可以返回一个值,告诉主线程事情做完了,于是乎Future粉墨登场。然而Future提供的方式是主线程主动问询新线程,要是有个回调函数就爽了。所以,为了满足Future的某些遗憾,强大的随着Java8一起来了。

2023-09-29 00:20:29 85

原创 JUC-03 (多线程下集合类不安全)

同时要求相同的资源(如内存或者是磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者视图修改资源内容时,系统才会真正复制一份专用副本(private copy。的时候,因为采用的是头插法,所以会可能会有循环链表产生,导致数据有问题,在 1.8 版本已修复,改为了尾插法;)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。,保证同步,但是每个方法执行的时候都要去获得锁,性能就会大大下降,而CopyOnWriteArrayList。,可能会有数据覆盖的情况发生,导致线程不安全。

2023-09-28 23:28:29 138

原创 JUC-02 (线程池)

阻塞队列是一个队列,在数据结构中起的作用如下图:当队列是空的,从队列中获取元素的操作将会被阻塞。当队列是满的,从队列中添加元素的操作将会被阻塞。试图从空的队列中获取元素的线程将会被阻塞,直到其他线程往空的队列插入新的元素。试图向已满的队列中添加新元素的线程将会被阻塞,直到其他线程从队列中移除一个或多个元素或者完全清空,使队列变得空闲起来并后续新增。在多线程领域:所谓阻塞,在某些情况下会挂起线程(即阻塞),一旦条件满足,被挂起的线程又会自动被唤起。为什么需要?

2023-09-27 10:25:22 143

原创 JUC-01(多线程)

所谓守护线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。所以说多线程程序的执行是有随机性,因为谁抢到CPU的使用权是不一定的。假如线程甲和线程乙在交替执行,某个时间点线程甲做出了礼让,所以在这个时间点线程乙拥有了CPU资源,执行业务逻辑,但不代表线程甲一直暂停执行。其作用是中断此线程(此线程不一定是当前线程,而是指调用该方法的Thread实例所代表的线程),但实际上只是给线程设置一个中断标志,线程仍会继续运行。

2023-09-26 23:19:24 35

原创 synchronized 8锁的现象

new this 具体的一个手机static class 唯一的一个模板如果锁的对象是同一个,那么一个方法执行前需要等待另一个方法释放锁,如果锁的对象不是同一个,那么两个方法执行不需要等待彼此释放锁。当synchronized修饰实例方法,锁的对象是方法的实例。这种情况下创建出了一个实例,锁的是一个实例,用这个对象调用两个同步实例方法,它们共用的是一把锁。创建出两个实例,锁的对象是两个实例,分别调用两个同步方法,它们用的是两个不同的锁。当修饰静态方法,锁的对象是当前类。

2023-09-25 00:32:02 38

原创 分布式缓存 redis集群

简述全量同步和增量同步区别?全量同步:master将完整内存数据生成RDB,发送RDB到slave。后续命令则记录在repl_baklog,逐个发送给slave。增量同步:slave提交自己的offset到master,master获取repl_baklog中从offset之后的命令给slave什么时候执行全量同步?slave节点第一次连接master节点时slave节点断开时间太久,repl_baklog中的offset已经被覆盖时什么时候执行增量同步?

2023-07-16 18:49:58 136

原创 分布式事务 seata

TCC模式的每个阶段是做什么的?Try:资源检查和预留Confirm:业务执行和提交Cancel:预留资源的释放TCC的优点是什么?一阶段完成直接提交事务,释放数据库资源,性能好相比AT模型,无需生成快照,无需使用全局锁,性能最强不依赖数据库事务,而是依赖补偿操作,可以用于非事务型数据库TCC的缺点是什么?有代码侵入,需要人为编写try、Confirm和Cancel接口,太麻烦软状态,事务是最终一致需要考虑Confirm和Cancel的失败情况,做好幂等处理。

2023-07-15 15:06:22 226

原创 微服务保护 Sentinel

Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址丰富的应用场景例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。完备的实时监控Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。广泛的开源生态Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。

2023-07-06 23:30:00 843

原创 分布式搜索引擎(elasticsearch) 3/3章

elasticsearch中分词器(analyzer)的组成包含三部分character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik_smarttokenizer filter:将tokenizer输出的词条做进一步处理。例如大小写转换、同义词处理、拼音处理等。

2023-06-10 14:55:55 494

原创 分布式搜索引擎(elasticsearch) 2/3章

查询所有:查询出所有数据,一般测试用。例如:match_all全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如::查一个字段:同时查询多个字段精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。例如:ids:id集合查询range:范围查询term:精确查询地理(geo)查询:根据经纬度查询。例如::查询到指定中心点小于某个距离值的所有文档。

2023-06-04 00:23:39 273

原创 分布式搜索引擎(elasticsearch) 1/3章

1 elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域。2 elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。

2023-05-27 01:05:54 212

原创 服务异步通讯-RabbitMQ

应用间消息通信的一种协议,与语言和平台无关。

2023-05-22 01:53:50 784

原创 Docker快速入门

镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。镜像是分层结构,每一层称为一个Layer1 BaseImage层:包含基本的系统函数库、环境变量、文件系统2 Entrypoint:入口,是镜像中应用启动的命令3 其它:在BaseImage基础上添加依赖、安装程序、完成整个应用的安装和配置1 推送本地镜像到仓库前都必须重命名(docker tag)镜像,以镜像仓库地址为前缀2 镜像仓库推送前需要把仓库地址配置到docker服务的daemon.json文件中,被docker信任。

2023-05-19 00:12:05 299

原创 统一网关Gateway 快速入门

例如Path=/user/**是按照路径匹配,这个规则是由org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory类来处理的 像。请求进入网关会碰到三类过滤器:当前filter(路由的过滤器)、DefaultFilter(默认过滤器)、GlobalFilter(全局过滤器)域名不同: www.taobao.com 和 www.taobao.org 和 www.jd.com 和 miaosha.jd.com。

2023-05-16 00:25:09 119

原创 Nacos注册中心快速入门

1 修改order-service中的application.yml,设置集群为HZ,一个user-service:8081中的 application.yml,设置集群为HZ,另一个user-service:8082中的application.yml,设置集群 为SZ。项目启动->通过bootstrap.yml文件获取Nacos地址->读取Nacos中的配置文件->读取本地application.yml文件->创建spring容器->加载bean。

2023-05-12 01:20:39 292

原创 SpringCloud Eureka注册中心

原理就是通过拦截器拦截http请求 获取到请求服务名 再通过服务名获取所有注册且正常的服务请求ip+端口地址 然后再通过均衡策略(IRule接口)获得一个请求地址 然后再发送请求。2,配置文件方式:在order-service的application.yml文件中,添加新的配置也可以修改规则。1,代码方式:在order-service中的OrderApplication类中,定义一个新的IRule。Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。

2023-05-11 23:45:36 78

原创 SpringCloud 利用 RestTemplate 或 Feign 发起http请求 请求服务提供者的接口

2,服务远程调用 RestTemplate3,RestTemplate常用方法:3.1 Get请求之getForObject。以JSON形式自动化转换responseType指定返回类型3.2 POST之postForObject3.3 exchange自定义请求方式Feign介绍: Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign1,引入依赖2,在服务启动类里添加注解开启Feign的功

2023-05-11 00:16:52 1200

原创 Mybatis-plus条件构造器和常用接口(MyBatisX插件)

MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。安装方法:打开 IDEA,进入 File -> Settings -> Plugins -> Browse Repositories,输入mybatisx搜索并安装。1.可以快速通过Mapper定位到xml文件2.快速生成各种类3.快速生成CRUDMyBatisX插件用法地址。

2023-04-25 00:50:47 93

原创 mybatis-plus 常用注解和(乐观锁和悲观锁)

在实体类类型上添加@TableName("**_***"),标识实体类对应的表,即可成功执行SQL语句。3.更新时,version + 1,如果where语句中的version版本不对,则更新失败。MyBatis-Plus在实现CRUD时,会默认将id作为主键列,并在插入数据时,默认。水平分表相比垂直分表,会引入更多的复杂性,例如要求全局唯一的数据。③优点:可以随着数据的增加平滑地扩充新的表。若实体类和表中表示主键的不是id,而是其他字段,例如uid。万, 只需要增加新的表就可以了,原有的数据不需要动。

2023-04-24 00:04:42 1260

原创 SpringBoot2整合Swagger3

简介:Swagger是一款简单并且功能强大的API表达工具。我们可以通过Swagger生成的API得到接口的交互式文档。例如:没用swagger3之前,一般用postman来测试接口,并且出一份接口详细文档给到前端 这是很麻烦的事。但是现在Swagger3能帮我们很好的解决测试接口和接口文档这些事。Swagger作用:1将项目中所有的接口展现在页面上,这样后端程序员就不需要专门为前端使用者编写专门的接口文 档;2当接口更新之后,只需要修改代码中的 Swagger。

2023-04-12 01:43:55 772

原创 Spring 常见的事务管理

多个操作,要么同时成功,要么失败后一起回滚具备ACID四种特性。

2023-04-04 00:05:19 107

原创 spring 常用注解

Configuration标注在类上,相当于把该类作为spring的xml配置文件中的,作用为:配置spring容器(应用上下文)@bean注解:用于告诉方法产生一个Bean对象,然后这个Bean对象交给Spring管理,Spring将会将这个Bean对象放在自己的IOC容器中注意点:SpringIOC容器管理一个或者多个bean,这些bean都需要在@Configuration注解下进行创建//使用@bean注解,表明这个bean交个spring 进行管理。

2023-04-03 23:31:47 161

原创 本地缓存 Guava Cache和Ehchach 的使用

想利用spring 的注解,不想手动shutdown ,因此web.xml 配置listener 监听,在销毁的时候进行shutdown,这里利用ehcache 的监听.需要加监听器 net.sf.ehcache.constructs.web.ShutdownListener.查询数据放入缓存,并且返回;如果缓存里有数据 就直接返回。if(cacheObj instanceof List){ 判断类型。-- ehcache 磁盘缓存 监控,持久化恢复 -->--guava依赖包-->

2023-03-31 23:54:16 200

原创 分布式应用下登录检验解决方案 JWT 生成token

优点缺点JWT格式组成 头部、负载、签名关于jwt客户端存储。

2023-03-31 22:52:15 131

原创 SpringBoot2.X整合定时任务和异步任务

(fixedRate有个坑,单线程的时候当任务执行时长超过设置的间隔时长时 后续任务会被阻塞 只有前一个任务执行完成后 后续任务就会立马执行 举个例子:(假如设置的fixedRate=3*1000,理论上 但是当第一个任务开始时 第三秒后就会调用第二次任务 但是第一个任务开始到结束用了7秒 ,所以开始第一个任务到结束 中途重新调用了两次任务 但第二个任务 和 第三个任务都被阻塞了 第二个和第三个任务就在排队 当第一个任务结束后 第二个任务就睡立马执行))使用场景:适用于处理log、发送邮件、短信……

2023-03-31 00:18:26 107

原创 Servlet3.0+SpringBoot2.X 注解Listener常用监听器

1. 定义一个类,实现 ServletContextListener 接口。常用监听器:应用启动监听器,会话监听器,请求监听器。2. 使用 @WebListener 进行配置。

2023-03-30 23:10:31 88

原创 Spring 面向切面编程 AOP

(*,Integer) 匹配了一个接受两个参数的方法,其中第一个参数是任意类型,第二个参数必须是Integer类型。Advice通知:在切入点中的函数执行的动作,如记录日志,权限校验等。匹配 service 包,子孙包下所有类的所有方法(识别)updateDemo(){} //修改demo。(*) 匹配了一个接受一个任何类型的参数的方法。findById(){} //查询demo。addDemo(){} //添加demo。delDemo(){} //删除demo。(..) 匹配一个接受任意数量参数的方法。

2023-03-29 23:55:31 109

原创 Spring AOP里面的代理 JDK动态代理 CGLib动态代理

Spring AOP里面的代理

2023-03-29 00:36:28 50

原创 SpringBoot2.X拦截器配置

拦截器: 和过滤器(filter)用途基本类似场景:权限控制、用户登录状态控制等。

2023-03-27 23:08:29 95

原创 SpringBoot 全局异常处理(可自定义全局异常返回页面),并打日志

SpringBoot 全局异常处理(可自定义全局异常返回页面),并打日志

2023-03-26 22:44:08 399 1

空空如也

空空如也

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

TA关注的人

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