自定义博客皮肤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)
  • 收藏
  • 关注

原创 超卖等高并发秒杀场景的问题及解决方案

超卖这样的线程安全问题,解决方案有哪些?悲观锁:添加同步锁,让线程串行执行优点:简单粗暴缺点:性能一般乐观锁:不加锁,在更新时判断是否有其它线程在修改优点:性能好缺点:存在成功率低的问题在事务和锁并行存在时,一定要考虑事务和锁的边界问题。由于事务的隔离级别问题,可能会导致不同事务之间数据不可见,往往会产生一些不可预期的现象。

2023-07-27 17:02:23 1804

原创 高并发的优化方案(延迟队列的使用)

在机器性能一定的情况下,提高单机并发能力就是要尽可能缩短业务的响应时间(ResponseTime),而对响应时间影响最大的往往是对数据库的操作。合并写请求方案其实是参考高并发读的优化思路:当读数据库并发较高时,我们可以把数据缓存到Redis,这样就无需访问数据库,大大减少数据库压力,减少响应时间。而提高单机并发能力侧重的则是业务层面的处理,也就是我们程序员在开发时可以做到的。由于Redis是内存操作,写的效率也非常高,这样每次请求的处理速度大大提高,响应时间大大缩短,并发能力肯定有很大的提升。

2023-07-19 15:44:06 423

原创 Feign的拦截器书写流程及思路梳理

自定义拦截器,通过requestTemplate调用方法,为feign请求添加参数。} }将自定义拦截器添加到IOC容器中,并设置拦截器日志等级} }

2023-07-08 10:45:16 456

原创 seata分布式事务部署及连接数据库报错08001解决

全部粘贴覆盖,根据实际情况更改。

2023-06-30 14:49:22 744

原创 Redis分布式缓存

单点redis的问题。

2023-06-29 17:21:29 127

原创 RabbitMQ入门

微服务间通讯有同步和异步两种方式:同步通讯:就像打电话,需要实时响应。异步通讯:就像发邮件,不需要马上回复。

2023-06-27 17:20:02 64

原创 Docker入门实用篇

微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了。

2023-06-26 19:41:27 60

原创 springcloud(nacos配置管理)、feign远程调用、gateway网关

RestTemplate发起远程调用的代码存在下面的问题:代码可读性差,编程体验不统一参数复杂URL难以维护其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。类型作用说明修改日志级别包含四种不同的级别:NONE、BASIC、HEADERS、FULL响应结果的解析器http远程调用的结果做解析,例如解析json字符串为java对象请求参数编码将请求参数编码,便于通过http请求发送支持的注解格式默认是SpringMVC的注解失败重试机制。

2023-06-24 18:20:30 215 5

原创 微服务的简介和springcloud的入门(Eureka和Nacos注册中心、Ribbon负载均衡)

架构简单部署成本低耦合度高(维护困难、升级困难)代码方式:在order-service中的OrderApplication类中,定义一个新的IRule。配置文件方式:在order-service的application.yml文件中,添加新的配置也可以修改规则。

2023-06-23 16:53:49 95

原创 linux系统安装软件(jdk、maven、git、mysql)

全称为 Red-Hat Package Manager,RPM软件包管理器,是红帽Linux用于管理和安装软件的工具。

2023-06-20 19:33:16 106

原创 MyBatisPlus简介、使用和知识点

创建新模块,选择Spring初始化,并配置模块相关基础信息选择当前模块需要使用的技术集(仅保留JDBC)手动添加MyBatisPlus起步依赖</</</</</</</</注意事项1:由于mp并未被收录到idea的系统内置配置,无法直接选择加入注意事项2:如果使用Druid数据源,需要导入对应坐标制作实体类与表结构设置Jdbc参数(定义数据接口,继承BaseMapperMyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率。

2023-06-19 17:12:15 350

原创 linux系统安装和常用命令详解

作用: vi命令是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于Windows中的记事本语法: vi fileName说明:1). vim是从vi发展来的一个功能更加强大的文本编辑工具,编辑文件时可以对文本内容进行着色,方便我们对文件进行编辑处理,所以实际工作中vim更加常用。2). 要使用vim命令,需要我们自己完成安装。

2023-06-16 10:53:43 3916 1

原创 Apache POI的入门和使用

Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI 都是用于操作 Excel 文件。

2023-06-13 18:04:46 4231

原创 Spring Task && WebSocket && Apache Echarts 工具的简单入门

是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。定时任务框架定时自动执行某段Java代码1). 信用卡每月还款提醒2). 银行贷款每月还款提醒3). 火车票售票系统处理未支付订单WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。HTTP是短连接WebSocket是长连接HTTP通信是单向的,基于请求响应模式WebSocket支持双向。

2023-06-12 20:27:36 67

原创 工具专栏目录

Spring Cashe的基础知识和入门HttpClien介绍&&微信小程序开发工具的使用云存储解决方案-华为云OBS服务的基础使用Maven私服配置说明swagger的简单入门Git入门

2023-06-12 20:03:21 64

原创 Spring Cashe的基础知识和入门

Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。EHCacheCaffeineRedis(常用)</</</</

2023-06-08 08:53:50 94

原创 HttpClien介绍&&微信小程序开发工具的使用

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。发送HTTP请求(使得Java程序能够发送http请求)接收响应数据当我们在使用扫描支付、查看地图、获取验证码、查看天气等功能时</</</</HttpClient:Http客户端对象类型,使用该类型对象可发起Http请求。HttpClients:可认为是构建器,可创建HttpClient对象。

2023-06-07 16:44:03 439

原创 redis的下载安装、入门和在spring Data Redis中的简单操作

Redis是一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。官网中文网keyvalueid101name小明addre北京主要特点基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。它存储的value类型比较丰富,也被称为结构化的NoSql数据库。

2023-06-04 15:39:06 299

原创 项目开发的简单介绍

比如,我们在开发中使用的MySQL数据库和其他的一些常用软件,我们可以安装在本地, 也可以安装在一台专门的服务器中, 这些应用软件仅仅在软件开发过程中使用, 项目测试、上线时,我们不会使用这套环境了,这个环境就是开发环境。产品原型,一般是通过网页(html)的形式展示当前的页面展示什么样的数据, 页面的布局是什么样子的,点击某个菜单,打开什么页面,点击某个按钮,出现什么效果,都可以通过产品原型看到。UI设计:用户界面的设计,主要设计项目的页面效果,小到一个按钮,大到一个页面布局,还有人机交互逻辑的体现。

2023-06-03 14:56:02 824

原创 swagger的简单入门

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(它的主要作用是:使得前后端分离开发更加方便,有利于团队协作接口的文档在线自动生成,降低后端开发人员编写接口文档的负担功能测试Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在项目中引入Springfox ,即可非常简单快捷的使用Swagger。

2023-05-31 17:07:37 90

原创 Git入门

Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等),在软件开发过程中被广泛使用。版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。

2023-05-30 17:11:16 53

原创 Javaweb学习知识路线图

序号 目录 1 前端 2 MySQL 3 MySQL-多表查询 4 MyBatis 5 MyBatis补充&文件上传 6 会话技术&过滤器 7 spring事务管理&AOP 8 SpringBoot原理&Bean管理 9 注解的粗整

2023-05-27 20:10:30 38

原创 SpringBoot原理--配置优先级&Bean管理&springBoot原理(起步依赖、自动配置)

当SpringBoot程序启动时,就会加载配置文件当中所定义的配置类,并将这些配置类信息(类的全限定名)封装到String类型的数组中,最终通过@Import注解将这些配置类全部加载到Spring的IOC容器中,交给IOC容器管理。Java系统配置属性是基于Java语言的,spring框架是基于Java语言开发的,因此Java系统配置属性的优先级高于spring框架的。命令行配置是属于操作系统的,Java语言也是基于操作系统的,因此命令行配置优先级是最高的。那么我们应该怎样使用并定义第三方的bean呢?

2023-05-27 19:51:40 1353

原创 Maven私服配置说明

如果需要上传自己的项目到私服上,需要在项目的pom.xml文件中,增加如下配置,来配置项目发布的地址(也就是私服的地址)发布项目,直接运行 deploy 生命周期即可 (发布时,建议跳过单元测试)中只配置我们自己私服的连接地址(如果之前配置过阿里云,需要直接替换掉)中,增加如下配置,来指定snapshot快照版本的依赖,依然允许使用。访问私服:http://192.168.150.101:8081。标签中,配置访问私服的个人凭证(访问的用户名和密码)访问密码:admin/admin。

2023-05-27 12:06:24 2167

原创 注解的整理

ResponseBody:把当前方法返回值放到响应体中,如果返回值是实体类,则自动转换为json类型数据。@DeleteMapping:请求方式为delete,并设置请求路径,用于删除操作。@PostMapping:请求方式为post,并设置请求路径,用于新增操作。@Configuration:表明此类是一个配置类,Spring的注解。@PutMapping:请求方式为put,并设置请求路径,用于修改操作。@GetMapping:请求方式为get,并设置请求路径,用于查询操作。

2023-05-26 14:45:24 41

原创 spring事务管理 && 面向切面编程(AOP)

事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功,要么同时失败。开启事务(一组操作开始前,开启事务):start transaction / begin;提交事务(这组操作全部成功后,提交事务):commit;回滚事务(中间任何一个操作出现异常,回滚事务):rollback;

2023-05-24 18:01:41 537

原创 登录验证 --会话、会话跟踪技术(cookie,session,jwt令牌)、 filter过滤器、interceptor拦截器相关基础知识

什么是会话?在我们日常生活当中,会话指的就是谈话、交谈。在web开发当中,会话指的就是浏览器与服务器之间的一次连接,我们就称为一次会话。JWT全称:JSON Web Token (官网:https://jwt.io/)定义了一种简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的。Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。

2023-05-23 20:10:30 486

原创 云存储解决方案-华为云OBS服务的基础使用

华为云对象存储服务(Object Storage Service,简称OBS)为您提供基于网络的数据存取服务。使用OBS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种非结构化数据文件。华为云OBS将数据文件以对象(object)的形式上传到存储空间(bucket - 桶)中。

2023-05-23 11:08:56 3584 2

原创 MySQL-MyBatis -案例补充-开发规范&文件上传等

将外部配置一个一个的注入到要使用的位置,借助@Value 注解通常用于外部配置的属性注入,具体用法为: @Value(“${配置文件中的key}”)比如:配置文件当中叫endpoints,实体类当中的属性也得叫endpoints,另外实体类当中的属性还需要提供 getter / setter方法。PageHelper是Mybatis的一款功能强大、方便易用的分页插件,支持任何形式的单标、多表的分页查询。在引入此依赖后,就会出现oss对象的提示,这项依赖它的作用就是会自动的识别被。

2023-05-21 17:35:55 178

原创 Mybatis笔记总结

Mybatis框架,就是对原始的JDBC程序的封装。数据库连接池是个容器,负责分配、管理数据库连接(Connection)程序在启动时,会在数据库连接池(容器)中,创建一定数量的Connection对象允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个客户端在执行SQL时,先从连接池中获取一个Connection对象,然后在执行SQL语句,SQL语句执行完之后,释放Connection时就会把Connection对象归还给连接池。

2023-05-19 13:35:24 107

原创 MySQL-多表查询

内连接查询:查询两表或多表中交集部分数据。从语法上可以分为隐式内链接、显式内连接。

2023-05-18 10:39:58 90

原创 File对文件的删除、搜索、统计操作

删除非空文件夹时,优先遍历删除内部所有的文件,再将其删除,会使用到建议的递归思想.统计某个文件夹中各类文件共有多少,并将其添加到map集合中。在某个盘符下搜索文件,如果是应用程序,将其打开。删除某个文件夹,将文件夹中的内容全部清空后删除。搜索某个文件或文件夹所在的路径。搜索文件或文件夹及应用。

2023-04-22 20:05:26 358

原创 斗地主游戏对扑克的处理

分析业务需求 总共有54张牌点数: "3","4","5","6","7","8","9","10","J","Q","K","A","2“花色: "♠", "♥", "♣", "♦“大小王: "👲" , "🃏“斗地主:发出51张牌,剩下3张做为底牌。

2023-04-18 15:30:07 42

原创 使用模板方法和简单工厂设计模式实现验证码发送

Javabean类(记录短信验证码)

2023-04-16 09:54:13 95

原创 模仿电影信息浏览系统

需求:1、展示系统中的全部电影(每部电影展示:名称、价格)。2、允许用户根据电影编号(id)查询出某个电影的详细信息。//设计电影类,用来创建movie对象//创建操作类,用于对电影类中接收到的数据或储存的数据进行处理。

2023-04-06 19:59:42 251 1

原创 java: 不允许在使用 --release 时从系统模块 java.base 导出程序包: 报错

java: 不允许在使用 --release 时从系统模块 java.base 导出程序包: 错误的解决

2023-04-04 10:54:43 3199

原创 固定开头的电话号码的中间四位号码的屏蔽

String newStr = str.subString(起始索引);String newStr = str.subString(起始索引,结束索引-1);2.电话号码必须为132、134、135开头,必须为11位,判断手机号必须是纯数字。示例:用户输入13279440986 控制台打印:132****0986。3.通过代码逻辑进行修改,要求中间四位使用*代替。1.提示用户输入手机号码。

2023-04-02 19:42:41 163

原创 模拟双色球

3. 两次号码进行比较,两次的号码红球和蓝球两部分进行比较,再通过switch进行选择符合那个中奖情况 或者用if配合短路与进行判断输出。2.生成幸运中奖号码 : 判断生成的号码是否发生重复,用while死循环进行处理,如果重复则一直进行。1.用户购买双色球 注意点:判断号码是否重复用while死循环进行处理,如果重复则一直进行。用if和短路或判断号码是否超出范围,超出则通过while死循环重新输入。注:因为都要判断是否重复,可将这部分拿出来专门写一个方法。

2023-03-29 15:55:30 814 1

原创 数组案例 随机排名

请先依次录入5名员工的工号,然后展示出一组随机的排名顺序。System.out.println("请输入第" + (i + 1) + "个员工的工号");System.out.println("请输入当前第"+ (i +1) +"个员工的工号");//虽然添加临时数组可以完成部分转换,但是对数组内的数据进行随机排序时,引入临时数组无法完成数组内数据的随机排列。//在for循环的过程中添加临时变量,将随机到的索引位置处的数据与当前位置的数进行交换,从而达到随机排列的目的。

2023-03-26 19:32:22 167 1

RabbitMQ高级(消息可靠性、死信交换机、惰性队列、MQ集群部署)

RabbitMQ高级(消息可靠性、死信交换机、惰性队列、MQ集群部署)及详细部署

2023-06-30

空空如也

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

TA关注的人

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