- 博客(39)
- 收藏
- 关注
原创 超卖等高并发秒杀场景的问题及解决方案
超卖这样的线程安全问题,解决方案有哪些?悲观锁:添加同步锁,让线程串行执行优点:简单粗暴缺点:性能一般乐观锁:不加锁,在更新时判断是否有其它线程在修改优点:性能好缺点:存在成功率低的问题在事务和锁并行存在时,一定要考虑事务和锁的边界问题。由于事务的隔离级别问题,可能会导致不同事务之间数据不可见,往往会产生一些不可预期的现象。
2023-07-27 17:02:23
2373
原创 高并发的优化方案(延迟队列的使用)
在机器性能一定的情况下,提高单机并发能力就是要尽可能缩短业务的响应时间(ResponseTime),而对响应时间影响最大的往往是对数据库的操作。合并写请求方案其实是参考高并发读的优化思路:当读数据库并发较高时,我们可以把数据缓存到Redis,这样就无需访问数据库,大大减少数据库压力,减少响应时间。而提高单机并发能力侧重的则是业务层面的处理,也就是我们程序员在开发时可以做到的。由于Redis是内存操作,写的效率也非常高,这样每次请求的处理速度大大提高,响应时间大大缩短,并发能力肯定有很大的提升。
2023-07-19 15:44:06
675
原创 Feign的拦截器书写流程及思路梳理
自定义拦截器,通过requestTemplate调用方法,为feign请求添加参数。} }将自定义拦截器添加到IOC容器中,并设置拦截器日志等级} }
2023-07-08 10:45:16
535
原创 Docker入门实用篇
微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了。
2023-06-26 19:41:27
205
原创 springcloud(nacos配置管理)、feign远程调用、gateway网关
RestTemplate发起远程调用的代码存在下面的问题:代码可读性差,编程体验不统一参数复杂URL难以维护其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。类型作用说明修改日志级别包含四种不同的级别:NONE、BASIC、HEADERS、FULL响应结果的解析器http远程调用的结果做解析,例如解析json字符串为java对象请求参数编码将请求参数编码,便于通过http请求发送支持的注解格式默认是SpringMVC的注解失败重试机制。
2023-06-24 18:20:30
390
5
原创 微服务的简介和springcloud的入门(Eureka和Nacos注册中心、Ribbon负载均衡)
架构简单部署成本低耦合度高(维护困难、升级困难)代码方式:在order-service中的OrderApplication类中,定义一个新的IRule。配置文件方式:在order-service的application.yml文件中,添加新的配置也可以修改规则。
2023-06-23 16:53:49
201
原创 linux系统安装软件(jdk、maven、git、mysql)
全称为 Red-Hat Package Manager,RPM软件包管理器,是红帽Linux用于管理和安装软件的工具。
2023-06-20 19:33:16
140
原创 MyBatisPlus简介、使用和知识点
创建新模块,选择Spring初始化,并配置模块相关基础信息选择当前模块需要使用的技术集(仅保留JDBC)手动添加MyBatisPlus起步依赖</</</</</</</</注意事项1:由于mp并未被收录到idea的系统内置配置,无法直接选择加入注意事项2:如果使用Druid数据源,需要导入对应坐标制作实体类与表结构设置Jdbc参数(定义数据接口,继承BaseMapperMyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率。
2023-06-19 17:12:15
534
原创 linux系统安装和常用命令详解
作用: vi命令是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于Windows中的记事本语法: vi fileName说明:1). vim是从vi发展来的一个功能更加强大的文本编辑工具,编辑文件时可以对文本内容进行着色,方便我们对文件进行编辑处理,所以实际工作中vim更加常用。2). 要使用vim命令,需要我们自己完成安装。
2023-06-16 10:53:43
4768
1
原创 Apache POI的入门和使用
Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI 都是用于操作 Excel 文件。
2023-06-13 18:04:46
4389
原创 Spring Task && WebSocket && Apache Echarts 工具的简单入门
是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。定时任务框架定时自动执行某段Java代码1). 信用卡每月还款提醒2). 银行贷款每月还款提醒3). 火车票售票系统处理未支付订单WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。HTTP是短连接WebSocket是长连接HTTP通信是单向的,基于请求响应模式WebSocket支持双向。
2023-06-12 20:27:36
109
原创 工具专栏目录
Spring Cashe的基础知识和入门HttpClien介绍&&微信小程序开发工具的使用云存储解决方案-华为云OBS服务的基础使用Maven私服配置说明swagger的简单入门Git入门
2023-06-12 20:03:21
89
原创 Spring Cashe的基础知识和入门
Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。EHCacheCaffeineRedis(常用)</</</</
2023-06-08 08:53:50
178
原创 HttpClien介绍&&微信小程序开发工具的使用
HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。发送HTTP请求(使得Java程序能够发送http请求)接收响应数据当我们在使用扫描支付、查看地图、获取验证码、查看天气等功能时</</</</HttpClient:Http客户端对象类型,使用该类型对象可发起Http请求。HttpClients:可认为是构建器,可创建HttpClient对象。
2023-06-07 16:44:03
543
原创 redis的下载安装、入门和在spring Data Redis中的简单操作
Redis是一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。官网中文网keyvalueid101name小明addre北京主要特点基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。它存储的value类型比较丰富,也被称为结构化的NoSql数据库。
2023-06-04 15:39:06
345
原创 项目开发的简单介绍
比如,我们在开发中使用的MySQL数据库和其他的一些常用软件,我们可以安装在本地, 也可以安装在一台专门的服务器中, 这些应用软件仅仅在软件开发过程中使用, 项目测试、上线时,我们不会使用这套环境了,这个环境就是开发环境。产品原型,一般是通过网页(html)的形式展示当前的页面展示什么样的数据, 页面的布局是什么样子的,点击某个菜单,打开什么页面,点击某个按钮,出现什么效果,都可以通过产品原型看到。UI设计:用户界面的设计,主要设计项目的页面效果,小到一个按钮,大到一个页面布局,还有人机交互逻辑的体现。
2023-06-03 14:56:02
1053
原创 swagger的简单入门
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(它的主要作用是:使得前后端分离开发更加方便,有利于团队协作接口的文档在线自动生成,降低后端开发人员编写接口文档的负担功能测试Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在项目中引入Springfox ,即可非常简单快捷的使用Swagger。
2023-05-31 17:07:37
123
原创 Git入门
Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等),在软件开发过程中被广泛使用。版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。
2023-05-30 17:11:16
90
原创 Javaweb学习知识路线图
序号 目录 1 前端 2 MySQL 3 MySQL-多表查询 4 MyBatis 5 MyBatis补充&文件上传 6 会话技术&过滤器 7 spring事务管理&AOP 8 SpringBoot原理&Bean管理 9 注解的粗整
2023-05-27 20:10:30
59
原创 SpringBoot原理--配置优先级&Bean管理&springBoot原理(起步依赖、自动配置)
当SpringBoot程序启动时,就会加载配置文件当中所定义的配置类,并将这些配置类信息(类的全限定名)封装到String类型的数组中,最终通过@Import注解将这些配置类全部加载到Spring的IOC容器中,交给IOC容器管理。Java系统配置属性是基于Java语言的,spring框架是基于Java语言开发的,因此Java系统配置属性的优先级高于spring框架的。命令行配置是属于操作系统的,Java语言也是基于操作系统的,因此命令行配置优先级是最高的。那么我们应该怎样使用并定义第三方的bean呢?
2023-05-27 19:51:40
1504
原创 Maven私服配置说明
如果需要上传自己的项目到私服上,需要在项目的pom.xml文件中,增加如下配置,来配置项目发布的地址(也就是私服的地址)发布项目,直接运行 deploy 生命周期即可 (发布时,建议跳过单元测试)中只配置我们自己私服的连接地址(如果之前配置过阿里云,需要直接替换掉)中,增加如下配置,来指定snapshot快照版本的依赖,依然允许使用。访问私服:http://192.168.150.101:8081。标签中,配置访问私服的个人凭证(访问的用户名和密码)访问密码:admin/admin。
2023-05-27 12:06:24
2443
原创 注解的整理
ResponseBody:把当前方法返回值放到响应体中,如果返回值是实体类,则自动转换为json类型数据。@DeleteMapping:请求方式为delete,并设置请求路径,用于删除操作。@PostMapping:请求方式为post,并设置请求路径,用于新增操作。@Configuration:表明此类是一个配置类,Spring的注解。@PutMapping:请求方式为put,并设置请求路径,用于修改操作。@GetMapping:请求方式为get,并设置请求路径,用于查询操作。
2023-05-26 14:45:24
69
原创 spring事务管理 && 面向切面编程(AOP)
事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功,要么同时失败。开启事务(一组操作开始前,开启事务):start transaction / begin;提交事务(这组操作全部成功后,提交事务):commit;回滚事务(中间任何一个操作出现异常,回滚事务):rollback;
2023-05-24 18:01:41
623
原创 登录验证 --会话、会话跟踪技术(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
592
原创 云存储解决方案-华为云OBS服务的基础使用
华为云对象存储服务(Object Storage Service,简称OBS)为您提供基于网络的数据存取服务。使用OBS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种非结构化数据文件。华为云OBS将数据文件以对象(object)的形式上传到存储空间(bucket - 桶)中。
2023-05-23 11:08:56
4226
2
原创 MySQL-MyBatis -案例补充-开发规范&文件上传等
将外部配置一个一个的注入到要使用的位置,借助@Value 注解通常用于外部配置的属性注入,具体用法为: @Value(“${配置文件中的key}”)比如:配置文件当中叫endpoints,实体类当中的属性也得叫endpoints,另外实体类当中的属性还需要提供 getter / setter方法。PageHelper是Mybatis的一款功能强大、方便易用的分页插件,支持任何形式的单标、多表的分页查询。在引入此依赖后,就会出现oss对象的提示,这项依赖它的作用就是会自动的识别被。
2023-05-21 17:35:55
233
原创 Mybatis笔记总结
Mybatis框架,就是对原始的JDBC程序的封装。数据库连接池是个容器,负责分配、管理数据库连接(Connection)程序在启动时,会在数据库连接池(容器)中,创建一定数量的Connection对象允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个客户端在执行SQL时,先从连接池中获取一个Connection对象,然后在执行SQL语句,SQL语句执行完之后,释放Connection时就会把Connection对象归还给连接池。
2023-05-19 13:35:24
152
原创 File对文件的删除、搜索、统计操作
删除非空文件夹时,优先遍历删除内部所有的文件,再将其删除,会使用到建议的递归思想.统计某个文件夹中各类文件共有多少,并将其添加到map集合中。在某个盘符下搜索文件,如果是应用程序,将其打开。删除某个文件夹,将文件夹中的内容全部清空后删除。搜索某个文件或文件夹所在的路径。搜索文件或文件夹及应用。
2023-04-22 20:05:26
447
原创 斗地主游戏对扑克的处理
分析业务需求 总共有54张牌点数: "3","4","5","6","7","8","9","10","J","Q","K","A","2“花色: "♠", "♥", "♣", "♦“大小王: "👲" , "🃏“斗地主:发出51张牌,剩下3张做为底牌。
2023-04-18 15:30:07
95
原创 模仿电影信息浏览系统
需求:1、展示系统中的全部电影(每部电影展示:名称、价格)。2、允许用户根据电影编号(id)查询出某个电影的详细信息。//设计电影类,用来创建movie对象//创建操作类,用于对电影类中接收到的数据或储存的数据进行处理。
2023-04-06 19:59:42
295
1
原创 java: 不允许在使用 --release 时从系统模块 java.base 导出程序包: 报错
java: 不允许在使用 --release 时从系统模块 java.base 导出程序包: 错误的解决
2023-04-04 10:54:43
5062
原创 固定开头的电话号码的中间四位号码的屏蔽
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
272
原创 模拟双色球
3. 两次号码进行比较,两次的号码红球和蓝球两部分进行比较,再通过switch进行选择符合那个中奖情况 或者用if配合短路与进行判断输出。2.生成幸运中奖号码 : 判断生成的号码是否发生重复,用while死循环进行处理,如果重复则一直进行。1.用户购买双色球 注意点:判断号码是否重复用while死循环进行处理,如果重复则一直进行。用if和短路或判断号码是否超出范围,超出则通过while死循环重新输入。注:因为都要判断是否重复,可将这部分拿出来专门写一个方法。
2023-03-29 15:55:30
963
1
原创 数组案例 随机排名
请先依次录入5名员工的工号,然后展示出一组随机的排名顺序。System.out.println("请输入第" + (i + 1) + "个员工的工号");System.out.println("请输入当前第"+ (i +1) +"个员工的工号");//虽然添加临时数组可以完成部分转换,但是对数组内的数据进行随机排序时,引入临时数组无法完成数组内数据的随机排列。//在for循环的过程中添加临时变量,将随机到的索引位置处的数据与当前位置的数进行交换,从而达到随机排列的目的。
2023-03-26 19:32:22
224
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人