- 博客(223)
- 收藏
- 关注
原创 并发包工具之 批量处理任务 CompletionService(异步)、CompletableFuture(回调)
批量处理任务 CompletionService(异步)、CompletableFuture(回调)
2023-02-13 18:11:07 1931 1
原创 为什么需要消息队列
为什么需要消息队列无论是 AI 还是 IOT,都是一个分布式系统,都要处理海量的数据,都要应对海量并发,他们需要解决的底层问题是一样的。无论是开发微服务,还是实时计算、机器学习,都需要解决进程间通信的问题。关于消息队列的作用,有个形象的例子 : 巧克力作坊,生产出美味的巧克力需要三道工序:(1)可可豆磨成可可粉(2)可可粉加热并加入糖变成巧克力浆(3)巧克力浆灌
2022-05-15 23:10:13 488
原创 书摘——CPU、Java 反射与代理
Week 1——CPUWeek 2——反射、动态代理CPU 最快,内存次之,硬盘(但是断电不丢数据)最慢。CPU 的工作就是运行指令,把程序装从硬盘载到内存中,从内存中读取指令,进行计算,再写回内存。程序都是由顺序、分支、循环组成。程序的局部性原理(1)时间性:如果程序中某条指令一旦执行,不久之后该指令可能再次被执行。(2)空间性:一旦程序访问了某个存储单元,不久之后它附近的存储单元也被访问。............
2022-05-15 17:59:16 224
原创 SQL 题解记录 第一弹
文章目录一、分页查询employees表,每5行一页,返回第2页的数据——limit语句二、 将titles_test表名修改为titles_2017——rename语句三、最差是第几名(一)——开窗函数写在前面: 记录一下解 sql 题的心路历程,题目来自牛客网 sql 专栏,按通过率由高到低刷起,题解来自评论区提供的思路,每 10 道题记录一篇博客,有问题的地方欢迎讨论。一、分页查询employees表,每5行一页,返回第2页的数据——limit语句
2022-05-03 17:05:15 543
原创 面向对象设计模式学习总结之职责链模式(Chain Of Responsibility)
文章目录一、定义二、实现1、数组实现2、链表实现三、好处四、框架中的实例1、Servlet Filter2、Spring InterceptorTODO 本文章为极客时间《设计模式之美》专栏学习笔记。一、定义 在 Gof 的《设计模式》中,是这么定义的:(译成中文)将请求的发送和接受解耦,让多个接受对象都有机会处理这个请求,将这些接受对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接受对象能够处理
2022-05-01 23:36:11 1087
原创 SpringBoot搭建
文章目录先在pom中添加父节点:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version> </parent>再导入 SpringBoot Web 依赖
2022-02-25 16:27:59 210
原创 Java下载Excel表名显示波浪号失效
文章目录一、SpringBoot 构建 Restful Web 服务二、使用 POI 生成 Excel 遇到一个需求,需要完成下载Excel表格的功能,表格名包含 “~” 符号,开发时是按照"~" 写的,但是运行的效果却是 “_”,因为项目无法在本地启动,无法 debug,需要重新搭一个简单demo 在本地调试。 使用的是 SpringBoot 框架,快速构建。一、SpringBoot 构建 Restful
2021-09-11 16:47:17 471 2
原创 记录:Out Of Memory Error
文章目录一、问题背景二、发现问题三、关于 poi四、关于 OOMOOM 就是内存溢出吗?是 OOM 导致CPU飙到近100%的吗?为什么消息队列和微服务请求会超时,抛异常?OOM 会导致虚拟机退出吗?五、总结一、问题背景 在周六16:11、16:14分别收到告警邮件,JVM major垃圾回收器频繁警告,60s 秒内发生了 8 次、7 次 major GC;在 16:07 到 17:00 之间,收到 CPU 告警:5台机器 CPU 使用率连续 3 分钟超过阈
2021-09-05 17:41:31 640 1
原创 微服务商城系统实战 购物车实现
文章目录一、购物车1、解决请求参数中含特殊字符被截断问题2、解决访问微服务所在网关跨域问题3、登录授权后令牌的传递一、购物车1、解决请求参数中含特殊字符被截断问题 点击“加入购物车”按钮后,需要把商品的 SKU id 和 数量传给后端接口http://localhost:18090/cart/add?num=xxx&xxx,在认证登录的地址中,需要把上一步所在的路径放在参数 FROM 中,比如:http://localhost:9001/oauth
2021-05-20 21:51:19 1090 2
原创 微服务商城系统实战 后台管理页面、商家管理页面、商品列表跳转详情页
文章目录一、后台管理1、解决 height: 100% 不起作用问题一、后台管理采用左边栏多级菜单的形式,前端页面如下:1、解决 height: 100% 不起作用问题注意到左边栏的高度并没有充满页面,需要调整一下: 只将此处的 height 改成 100%,是不会奏效的,因为 Web 浏览器在计算有效宽度时会考虑浏览器窗口的打开度。如果不给宽度设定任何缺省值,那浏览器会自动将页面内容平铺填满整个横向宽度。 但是高度的计算方式完全不一
2021-05-18 22:04:17 3003
原创 微服务商城系统 实战记录 用户、商家、后台管理员注册与登录功能实现
文章目录 现在整个商城系统的后端逻辑基本上都实现了,接下来需要与前端页面联调起来。 用户注册需要以下信息:前端页面:对应后端方法: /*** * 新增User数据 * @param user * @return */ @PostMapping public Result add(@RequestBody User user){
2021-05-10 14:10:19 3464 2
原创 微服务商城系统 实战记录:分布式事务 Seata
4.1 undolog表结构导入核心在于对业务sql进行解析,转换成undolog,所以只要支持Fescar分布式事务的微服务数据都需要导入该表结构,我们在每个微服务的数据库中都导入下面表结构:CREATE TABLE undo_log (id bigint(20) NOT NULL AUTO_INCREMENT,branch_id bigint(20) NOT NULL,xid varchar(100) NOT NULL,rollback_info longblob NOT NULL,log
2021-05-03 13:59:42 394
原创 解决Seata报错:[imeoutChecker_1] i.s.c.r.netty.NettyClientChannelManager:no available server to connect.
,,,
2021-05-03 13:09:33 14768 6
原创 微服务商城系统(十六)秒杀核心
文章目录一、防止秒杀重复排队二、 并发超卖问题解决目标:防止秒杀重复排队【一个人抢购商品,如果没有支付,不允许重复排队抢购】并发超卖【一个商品卖给多个人:一商品多订单】问题解决秒杀订单支付超时支付订单库存回滚一、防止秒杀重复排队 可以看到,使用 Redis 中的 incr,第一回会让值增为 1,之后每次递增1。 用户每次抢单的时候,一旦排队,我们设置一个自增值,让该值的初始值为 1,每次进入抢单
2021-05-01 22:02:47 916
原创 解决错误:Consider defining a bean of type ‘xxxrService‘ in your configuration
文章目录一、问题描述二、解决方法一、问题描述 运行 SpringBoot 启动类,报错: 可以看到,它是说 WeiXinPayController 中,用到了 OrderService ,但是呢,Spring 扫描不到。二、解决方法 其实可以看出来, WeiXinPay 和 Order 分属两个工程,具有各自的功能,在一个工程里调用另一个工程的 service
2021-04-29 21:36:23 8053
原创 微服务商城系统(十五)秒杀基础
文章目录一、秒杀业务分析1、需求2、表结构说明3、秒杀需求分析二、秒杀商品压入缓存1、搭建秒杀服务工程2、定时任务序号(表示每月的第几个周几),例如在周字段上设置"6#3"表示在每月的第三个周六.注意如果指定"#5",正好第五周没有周六,则不会触发该配置(用在母亲节和父亲节再合适不过了) ;一、秒杀业务分析1、需求 所谓 “秒杀”,就是网络卖家发布一些超低价格的商品,所有买家在同一时间网上抢购的一种销售方式。通俗一点讲,就是 网络商家为促销等目的组织的网
2021-04-26 14:24:15 881
原创 微服务商城系统(十四)微信支付
文章目录一、支付微服务1、微信支付 API2、HttpClient 工具类3、支付微服务搭建二、微信支付二维码生成三、检测支付状态一、支付微服务1、微信支付 API 微信支付提供了 SDK 和 Demo(然而我并没有找到 sdk,可能微信团队已经把它上传到 Maven 中了):使用微信支付SD,在 common 工程的 pom.xml 中中引入依赖<!--微信支付--><dependency> <groupId
2021-04-19 17:36:49 976
原创 微服务商城系统(十三)订单、支付流程分析
文章目录一、订单1、用户收件地址查询1、登录页面配置一、订单1、用户收件地址查询订单的前端页面是这样的:这里,“收件人信息”,是从 user 工程中获取到的,在数据库中对应 tb_address 表: 需要在 user 工程中提供根据用户名查询收件地址的方法。在 AddressService 中提供方法: List<Address> list(String username);实现: @Override publ
2021-04-14 22:44:54 5672 1
原创 解决 Spring Boot 调用 Feign 报错 java.lang.String cannot be cast to java.lang.Integer
文章目录一、问题描述二、解决方法一、问题描述在业务层进行 Feign 调用:Feign 对应的方法:然后访问路径:可以看到,响应数据是 500 状态码,Feign 调用出现了问题,再看控制台的报错:主要原因是 java.lang.String cannot be cast to java.lang.Integer,但是这个 decrMap 中 ,key 是 String 类型,从开篇第一张图可以看到,传入的参数是 Map,value 确实是 Integer 啊。进行debug, 发现
2021-04-14 18:27:16 1904
原创 微服务商城系统(十二)购物车、用户身份识别
文章目录一、购物车1、购物车分析2、搭建订单购物车微服务3、添加商品到购物车4、查看购物车列表5、删除购物车商品二、用户身份识别1、授权2、微服务之间的认证拦截器3、微服务认证熔断开启模式4、获取用户信息5、网关过滤三、总结????Java 序列化 JSON 时 long 型数值丢失精度问题一、购物车 购物车分为用户登录购物车和未登录购物车操作: 之前,京东是用户 登录 和 不登录 都可以操作购物车,如果用
2021-04-12 14:58:07 1977 1
原创 微服务商城系统(十一)权限控制、OAuth 动态加载数据
文章目录一、资源服务器授权配置一、资源服务器授权配置 基本上所有微服务都是资源服务。 首先,认证服务使用私钥,采用非对称加密算法 生成令牌,资源服务使用公钥 来校验令牌的合法性。 需要配置公钥,并将公钥拷贝到 public.key 文件中,将此文件拷贝到每一个需要的资源服务工程的 classpath 下 ,比如 用户微服务:解析令牌需要添加依赖:<dependency> <gr
2021-04-12 09:16:43 1255 1
原创 微服务商城系统(十) Spring Security Oauth2 + JWT 用户认证
文章目录一、用户认证分析1、认证 与 授权2、单点登录3、第三方账号登录4、第三方认证一、用户认证分析 上面流程图 描述了用户要操作的各个微服务,用户查看个人信息 需要访问 用户微服务,下单 需要访问 订单微服务,秒杀抢购商品 需要访问 秒杀微服务。每个服务都需要认证用户的身份,身份认证成功后,需要识别用户的角色,然后授权访问对应的功能,比如管理员 和 普通用户的权限对应的功能 是不一样的。 1、认证 与
2021-04-01 14:57:21 2263
原创 微服务商城系统(九)微服务网关与 Jwt 令牌
学习目标掌握微服务网关的系统搭建了解什么是 微服务网关 以及 它的作用(路由过滤)掌握系统中心微服务的搭建掌握用户密码加密存储 bcrypt了解 JWT 鉴权掌握 JWT 的鉴权的使用使用 JWT 令牌来存储用户登录信息,在 微服务网关 中识别登录信息 (用户的身份)掌握网关使用 JWT 进行校验掌握 网关 限流(令牌桶算法)文章目录一、微服务网关 一、微服务网关1.1 微服务网关的概述不同的微服务一般会有不同的网络地址,而外部客
2021-03-28 22:08:04 683
原创 微服务商城系统 实战记录:生成商品详情页
文章目录一、需求分析二、商品静态化微服务创建三、生成静态页1、Feign 创建2、 生成静态页实现3、模板填充一、需求分析 当系统审核完商品,需要将商品详情页进行展示,采用静态页面生成的方式生成,并部署到高性能的 web服务器 中进行访问。开发流程如下图所示: 可以看到,系统管理员修改或者审核商品的时候,会触发 canal 监控数据,canal 微服务获取修改数据后,调用静态页微服务的方法,生成静态页。二
2021-03-24 17:29:26 579
原创 微服务商城系统(八)Thymeleaf 实现静态页
文章目录一、Thymeleaf1、Thymeleaf 介绍2、SpringBoot 整合 thymeleaf3、基本语法二、搜索微服务架构1、搜索工程搭建2、搜索数据填充3、关键字、搜索条件回显一、Thymeleaf1、Thymeleaf 介绍 先了解模板的概念,模板 是 将一些重复内容写好,其中某些可能发生变化的内容,采用占位符方式动态加载,比如 JSP。 模板引擎 是 基于写好的模板,动态给写好
2021-03-24 11:46:03 596
原创 微服务商城系统(七)商品搜索 数据统计、过滤、分页、排序、高亮搜索
文章目录一、品牌统计二、规格统计三、分类和品牌过滤四、规格过滤五、价格区间查询六、分页实现 可以看到,在前端页面中,我们在上篇实现了按照 “分类” 进行分组,接下来需要按照 “品牌” 进行分组,展示用户选中的品牌对应的商品。 一、品牌统计 如果是写 SQL 语句,在执行搜索的时候,第 1 条 SQL 语句是执行根据关键字搜索,第 2 条语句 是 根据 品牌
2021-03-11 14:56:28 975
原创 解决 SpringBoot 整合 Elasticsearch 报错:Set fielddata=true on [xxxx] in order to load fielddata in......
文章目录一、问题描述二、解决方法一、问题描述使用 SpringBoot 整合 Elasticsearch 时,运行程序,报错:二、解决方法 出现这种情况,是因为修改了代码,而在进行搜索后,没有将 ESClient 进行重启,这样,再一次进行搜索的时候,使用的还是同一个 ESClient,就会导致重复的聚合名称出现。 可以手动重启,也可以在每次搜索完成后,把 ESclient 关闭:...
2021-03-10 16:19:12 7544 3
原创 DSL 语句使用入门
Query DSL 是一个 Java 开源框架,用于构建 类型安全 的 SQL 查询语句。采用 API 代替传统的拼接字符串 来构造查询语句。 目前 Querydsl 支持的平台包括 JPA,JDO,SQL,Java Collections,RDF,Lucene,Hibernate Search。Elasticsearch 提供了一整套基于 JSON 的查询 DSL 语言来定义查询。 Query DSL当作是一系列的抽象的查询表达式树 (AST) 特定查询
2021-03-07 22:12:07 4215 1
原创 微服务商城系统(六)商品搜索 SpringBoot 整合 Elasticsearch
文章目录一、Elasticsearch一、Elasticsearch 采用 Docker 安装 Elasticsearch。(1)docker 镜像下载docker pull elasticsearch:5.6.8(2)安装 es 容器docker run -di --name=changgou_elasticsearch -p 9200:9200 -p 9300:9300 9200 端口是 W
2021-03-07 22:11:34 1158 3
原创 微服务商城系统 实战记录:广告同步
文章目录一、搭建广告微服务二、广告查询三、广告同步四、总结代码见 https://github.com/betterGa/ChangGou 可以看到,需要一个广告微服务,当它执行广告操作的时候(比如 查询),会记录 操作日志 binlog 到 MySQL,然后将 操作日志 发送给 canal ,canal 将操作记录发送给 canal 微服务 ,canal 微服务根据修改的分类 ID 调用 content
2021-03-04 20:53:12 397 3
原创 微服务商城系统(五)lua、Canal 实现广告缓存
文章目录一、学习目标二、首页分析一、学习目标Lua 简单使用 Lua 语法 输出、变量定义、数据类型、流程控制 (if…)、循环操作、函数、表 (数组) 、模块。 Lua 用作 广告缓存操作 广告缓存载入与读取。 OpenResty 理解配置 OpenRes
2021-03-04 11:09:19 637 2
原创 微服务商城系统(四)商品管理
文章目录一、SPU 与 SKU1、SPU 与 SKU概念 对于商品的管理来说,新增 商品,需要 增加 SPU 和 SKU;修改 商品,需要 修改 SPU 和 SKU (新增 与 修改,和上篇博客中管理的 tb_template、tb_spec、tb_para 模板、规格、参数表,还和 tb_sku 某款商品中某类商品的信息表、 tb_spu 某款商品中某类商品的信息表 有关);审核,需要 修改审核状态;上架下架,需要 修改上架下架状态。 &nbs
2021-02-28 20:19:58 1900
原创 解决 Spring Boot 启动类报错 xxx that could not be found. The injection point has the follow.The injection
文章目录一、问题描述二、解决方法一、问题描述 运行 SpringBoot 的启动类时报错,错误详情:APPLICATION FAILED TO STARTDescription:Field idWorker in com.changgou.goods.service.impl.SpuServiceImpl required a bean of type ‘entity.IdWorker’ that could not be found.The
2021-02-28 10:44:40 11050 2
原创 微服务商城系统(三) 分布式文件存储 FastDFS
文章目录一、 分布式文件存储 FastDFS1、简介2、工作原理3、文件上传流程4、框架搭建二、文件上传1、文件信息封装一、 分布式文件存储 FastDFS1、简介 FastDFS 是一个 开源的 轻量级 分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。 特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 Fast
2021-02-25 15:52:13 795
原创 微服务商城系统 实战记录:相册、模板、规格、参数管理
文章目录一、相册管理 上篇博客 https://blog.csdn.net/weixin_41750142/article/details/113869062 中对 brand 品牌表 进行了增删改查,这篇博客将记录对 相册、规格、模板、参数 的增删改查的实战,记录下自己的思路和代码后,再与老师给的作比较和更正。 几个表结构如下所示:相册 tb_allb
2021-02-24 22:45:59 348
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人