- 博客(44)
- 收藏
- 关注
原创 SpringCloud整体架构概览
协调任何服务,简化分布式系统开发。构建分布式系统不应该是复杂的,SpringCloud对常见的分布式系统模式提供了简单易用的编程模型,帮助开发者构建弹性、可靠、协调的应用程序。SpringCloud是在SpringBoot的基础上构建的,使开发者可以轻松入门并快速提高工作效率。SpringCloud为开发人员提供了快速构建分布式系统架构的工具,例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,领导选举,分布式会话,集群状态等。
2023-08-07 18:08:16
1787
原创 redis 相关
假设有多个线程,锁的过期时间10s,线程1上锁后执行业务逻辑的时长超过十秒,锁到期释放锁,线程2就可以获得锁执行,此时线程1执行完删除锁,删除的就是线程2持有的锁,线程3又可以获取锁,线程2执行完删除锁,删除的是线程3的锁,如此往后,这样就会出问题。一个主节点,多个从节点,那么主节点可以负责:读操作,写操作。假如线程1业务还没执行完,锁过期释放,线程2获取锁执行,线程1执行完业务删除锁删除的就是线程2的,然后其他线程又可获取锁执行,线程2执行完释放锁删除的是别人的,如此往复,导致并发安全问题。
2023-07-18 16:30:57
1328
原创 【无标题】
输入流base64互转 /** * 将inputstream转为Base64 * * @param is * @return * @throws Exception */ private static String inputStream2Base64(InputStream is) throws Exception { byte[] data = null; try { By
2022-04-22 14:01:28
302
原创 Java多线程学习之wait、notify/notifyAll 详解
Java多线程学习之wait、notify/notifyAll 详解1、wait()、notify/notifyAll() 方法是Object的本地final方法,无法被重写。2、wait()使当前线程阻塞,前提是 必须先获得锁,一般配合synchronized 关键字使用,即,一般在synchronized 同步代码块里使用 wait()、notify/notifyAll() 方法。3、 由于 wait()、notify/notifyAll() 在synchronized 代码块执行,说明当前线程一
2022-01-12 20:20:18
336
原创 2021-10-29
ThreadPoolExecutor pool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
2021-10-29 13:48:55
151
原创 2021-10-13
流转base64的预览package com.epoint.yy.auditproject.auditdoc.action;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileIn
2021-10-13 10:08:00
154
原创 atomic原子类
package com.imooc.java.escape;import java.util.concurrent.CountDownLatch;public class Atomic_test { private static Integer count = 0; /** * 线程不安全的累加 */ private static void accumulator(int acc)throws Exception{ CountDownL
2021-05-17 14:49:25
122
原创 搭建SpringCloud 系列demo
总工程microservice-parent<?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/4.0.0 http://maven.apache.org/xs
2021-05-05 14:38:30
450
1
原创 SpringCLoud+redis+es高并发项目《十一》
第11章 订单学习目标登录页的配置登录成功跳转实现结算页查询实现下单实现变更库存增加积分支付流程介绍微信扫码支付介绍1 登录页面配置前面使用的都是采用Postman实现登录,接着我们实现一次oauth自定义登录。1.1 准备工作(1)静态资源导入将资料/页面/前端登录相关的静态资源导入到changgou-user-oauth中,如下图。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MqwntCRE-1619422686357)(images\
2021-04-26 15:40:24
336
原创 HashMap底层实现原理
Map其实很简单,就是一个key,对应一个value。本章我们重点了解HashMap,话不多说,上代码:执行构造函数,当我们看到这个new,第一反应应该是这货又在堆内存里开辟了一块空间。构造函数如下:似乎简单,就是初始化了一个负载因子负载因子默认为0.75f,这个负载因子后续会详说。嘿嘿,又看到了传说中的数组,数组里原对象是Node,来看一下Node是什么鬼其实很简单,一些属性,一个key,一个value,用来保存我们往Map里放入的数据,next用来标记Node节点的下一个元素。.
2021-04-23 14:29:58
754
1
原创 java基础
short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?答:对于 short s1 = 1; s1 = s1 + 1;由于 1 是 int 类型,因此 s1+1 运算结果也是 int型,需要强制转换类型才能赋值给 short 型。而 short s1 = 1; s1 += 1;可以正确编译,因为 s1+= 1;相当于 s1 = (short)(s1 + 1);其中有隐含的强制类型转换。...
2021-04-22 13:26:38
148
原创 SpringCLoud+redis+es高并发项目《九》(Spring Security Oauth2 JWT)
第9章 Spring Security Oauth2 JWT学习目标用户认证分析认证技术方案了解SpringSecurity Oauth2.0入门oauth2.0认证模式 授权码授权模式 密码授权模式授权流程用户授权认证开发1 用户认证分析[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1DQl4BMN-1619053062163)(images\1558173244406.png)]上面流程图描述了用户要操作的各个微服务,用户查看
2021-04-22 08:58:47
614
原创 java poi 操作EXCEl
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <!-- apache POI for xlsx -->...
2021-04-21 11:59:27
106
原创 SpringCLoud+redis+es高并发项目《七》
第7章 Thymeleaf、Rabbitmq实现静态页学习目标Thymeleaf的介绍Thymeleaf的入门Thymeleaf的语法及标签商品详情页静态化工程搭建商品详情页静态化功能实现1.详情页静态化操作2.填充基础数据 Spu、List<Sku>3.规格切换搜索页面渲染1.数据展示2.搜索条件展示3.实现条件搜索控制用户修改商品信息,同步更新创建商品详情页1.Thymeleaf介绍 thymeleaf是一个XML/XHTM
2021-04-20 14:15:50
178
原创 SpringCLoud+redis+es高并发项目《一》
第1章 框架搭建学习目标了解电商1.市场走向2.技术特点了解畅购架构1.微服务架构2.各个服务调用3.各个服务公共组件抽取了解畅购工程结构[重点]1.业务独立工程2.公共抽取3.数据依赖组件4.分布式事务依赖组件5.微服务网关6.oauth2.0畅购工程搭建商品微服务搭建1.品牌的增删改查2.通用Mapper+PageHelper品牌增删改查[通用Mapper+PageHelper]1.2 电商系统技术特点技术新技术范
2021-04-20 10:02:31
830
原创 SpringCLoud+redis+es高并发项目《六》
第6章 商品搜索学习目标条件筛选多条件搜索[品牌、规格条件搜索]规格过滤价格区间搜索搜索分页搜索排序搜索高亮1. 品牌统计[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IwSUG09R-1618883607073)(images/1562145335144.png)]用户搜索的时候,除了使用分类搜索外,还有可能使用品牌搜索,所以我们还需要显示品牌数据和规格数据,品牌数据和规格数据的显示比较容易,都可以考虑使用分类统计的方式进行分组实现。1.1 品牌
2021-04-20 09:53:34
339
原创 SpringCLoud+redis+es高并发项目《五》
第5章 商品搜索学习目标Elasticsearch安装docker安装Elasticsearch系统参数问题跨域操作IK分词器配置Kibana的使用->DSL语句Kibana->DSL语句操作->ElasticsearchES导入商品搜索数据Sku数据导入到ElasticsearchMap数据类型->Object关键词搜索->能够实现搜索流程代码的编写分类统计搜索1. Elasticsearch 安装我们之前已经使
2021-04-20 09:52:59
439
原创 SpringCLoud+redis+es高并发项目《四》
第4章 lua、Canal实现广告缓存学习目标Lua介绍Lua语法 输出、变量定义、数据类型、流程控制(if..)、循环操作、函数、表(数组)、模块OpenResty介绍(理解配置)封装了Nginx,并且提供了Lua扩展,大大提升了Nginx对并发处理的能,10K-1000KLua->广告缓存操作广告缓存载入与读取Nginx讲解限流操作:漏斗限流原理 1.控制速率 2.并发量控制Canal讲解实现数据同步操作->MySQLCanal实现
2021-04-20 09:52:21
791
原创 SpringCLoud+redis+es高并发项目《三》
第3章 商品发布学习目标SPU与SKU概念理解SPU:某一款商品的公共属性SKU:某款商品的不同参数对应的商品信息[某个商品]新增商品、修改商品增加:增加SPU和SKU修改:修改SPU和SKU商品审核、上架、下架审核:修改审核状态上架下架:修改上架下架状态删除商品逻辑删除:修改了删除状态物理删除:真实删除了数据找回商品找回商品:一定是属于逻辑删除的商品1 SPU与SKU1.1 SPU与SKU概念SPU = Standard Product
2021-04-20 09:49:20
344
原创 SpringCLoud+redis+es高并发项目《二》(分布式文件存储FastDFS)
第2章 分布式文件存储FastDFS学习目标理理解FastDFS工作流程分布式文件管理系统 文件上传 文件下载 文件删除 文件缓存控制搭建文件上传微服务相册管理(实战)规格参数管理(实战)商品分类管理(实战)1 FastDFS1.1 FastDFS简介1.1.1 FastDFS体系结构FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适
2021-04-20 09:47:54
379
原创 FastDFS
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。FastDFS 架构包括 Tracker server 和 Storage server。客户端请求
2021-04-13 13:39:41
56
原创 rocketmq 笔记
RocketMQ_day011 概述 MQ(Message Queue)消息队列,是一种用来保存消息数据的队列 队列:数据结构的一种,特征为 “先进先出”2.MQ 的作用应用解耦(技术上必须弄好才能使用MQ )快速应用变更维护流量削锋(削峰填谷)3.MQ的优缺点缺点:1系统可用性降低: 集群2系统复杂度提高:(程序员提升水平)3异步消息机制(都有解决方案) 消息顺序性 消息丢失 消息一致性 消息重复使用 4.常见产品ActiveMQ:java语言
2021-04-10 14:11:38
168
原创 RocketMQ
MQ简介◆ MQ(Message Queue)消息队列,是一种用来保存消息数据的队列◆ 队列:数据结构的一种,特征为 “先进先出”何为消息RocketMQ简介服务器间的业务请求◆ 原始架构:◼ 服务器中的A功能需要调用B、C模块才能完成◆ 微服务架构:◼ 服务器A向服务器B发送要执行的操作(视为消息)◼ 服务器A向服务器C发送要执行的操作(视为消息)MQ作用优点◆应用解耦(异步消息发送)◆ 快速应用变更维护(异步消息发送)◆ 流量削锋(异步消息发送)缺点◆ 系统可用性降低
2021-04-09 16:08:49
284
1
原创 tomcat redis Scheduled 集群分布式处理
用redis setnx 处理@Scheduled(cron = "0/5 * * * * ? ") public void schedutest3(){ log.info("定时任务开始"); Long setnx = RedisShardedPoolUtil.setnx(CLOSE_ORDER_TASK_LOCK, String.valueOf(System.currentTimeMillis())); if (setnx != null &a
2021-04-02 14:15:46
403
1
原创 构建jidis
package com.juzhi.common;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;public class RedisTest { private static JedisPool pool; private static void initPool(){ JedisPo
2021-03-31 11:53:48
188
原创 Spring 全局异常处理
<context:component-scan base-package="com.juzhi" annotation-config="true"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan>添加配置文件@Slf4jpublic...
2021-03-31 11:45:10
72
原创 Request和Response的区别
Request 和 Response的区别Request和Response 对象起到了服务器和客户机之间的信息传递作用。Request对象用于接收客户端浏览器提交的数据,而Response对象的功能则是将服务器的数据发送到客户端浏览器。一、Request对象的五个集合:QueryString:用以获取客户端附在url地址后的查询字符串中的信息。例如:stra=Request.QueryString ["strUserld"]Form:用以获取客户端在FORM表单中所输入的信息。(表单的metho
2021-03-26 14:20:50
379
原创 序列化和反序列化
1 概述首先我们介绍下序列化和反序列化的概念:序列化:把Java对象转换为字节序列的过程。反序列化:把字节序列恢复为Java对象的过程。对象的序列化主要有两种用途:把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;(持久化对象)在网络上传送对象的字节序列。(网络传输对象)2 使用在Java中,如果一个对象要想实现序列化,必须要实现下面两个接口之一:Serializable 接口Externalizable 接口那这两个接口是如何工作的呢?两者又有什么关系呢?我们分别进行介绍。2.1 Seri
2021-03-24 10:19:08
122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人