自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 一文看分布式锁

为什么会存在分布式锁?经典场景-扣库存,多人去同时购买一件商品,首先会查询判断是否有剩余,如果有进行购买并扣减库存,没有提示库存不足。假如现在仅存有一件商品,3人同时购买,三个线程同时执行方法,第一人通过了库存>0的校验,此时线程阻塞,第二人通过校验后抢先购买,此时库存已经为0,第一人继续执行扣减,库存就为-1,也就是【超卖】。

2023-11-18 02:11:19 329

原创 多线程优化大量数据如何事务回滚

于是使用多线程去处理,可能出现的问题是,如果一个线程出现失败,那么应该返回响应处理失败,已插入就绪的线程任务需要回滚,但是每个线程执行的是自己的事务,那么该如何处理呢。4w单的EXECL表格,导入到订单表,校验数据后落库,响应速度超过2min,大约在8min左右,这是单线程的情况下,在使用批量插入后,仍超时2min。:spring中对数据库连接是放在threadLocal里面,多线程场景下,拿到的数据库连接是不一样的,即是属于不同事务。将大批量的数据,分为多个集合,每个线程处理一个。

2023-11-16 17:12:52 758

原创 NIO的浅了解

用户进程一直等待数据准备好,在复制完成之前都是阻塞的。

2023-11-13 21:19:35 553

原创 常用Linux命令

find 路径 -name “*.java” #查找指定路径下扩展名是.java的文件。find -name “*.java” #查找当前路径下扩展名是.java的文件。ps -ef|grep 关键字 路径 #根据关键字查看文件。cp -r 路径1 路径2 #递归复制目录下的所有文件。head -n 行数 路径 #查看文件的指定前n行。tar -zcvf 打包文件名 被打包文件 #打包。tar -cvf 打包文件名 被打包文件 #打包。tail -n 行数 路径 #查看文件取尾n行。

2023-11-11 20:35:51 165

原创 JAVA集合学习

List和Set继承了Collection接口,Collection继承了IterableObject类是所有类的根类,包括集合类,集合类中的元素通常是对象,继承了Object类中的一些基本方法,例如toString()equals()hashCode()。Collection的增强for底层就是简化版本的迭代器遍历,可以DEBUG看到过程。

2023-11-11 01:20:26 723

原创 面试--spring基础

当调用getBean方法的时候,spring先从一级缓存找bean,如果一级缓存没有就去二级缓存找,如果都没有,意味着bean没有实例化,然后spring容器会实例化bean,将bean放入二级缓存,同时加上标记是否存在循环依赖,如果存在就将bean放入二级缓存,等待下一次轮询赋值,也就是解析@Autowired注解,等赋值完成后,将bean存入一级缓存。默认情况下,是单例的。创建代理对象:调用getBean(),创建实例后,根据AOP的配置去匹配目标类的类名,是否满足切面规则,然后调用。

2023-11-09 17:11:58 208

原创 面试--springboot基础

内部集成了自动装配机制,这个组件会自动集成到spri那个生态下,并且自动装配bean,只需要在在。在结合Spring Cloud 时,bootstrap.properties配置就会经常遇到了,特别是在需要加载一些远程配置文件的时侯。文件中,这样springboot就可以知道第三方jar包里的配置类的位置,这个步骤主要是用到spring里。这个配置类是放在第三方jar包里,然后通过约定优于配置私下,把这个配置类的全路径放在。自动装配机制的实现中国,通过扫描约定路径下的配置文件,实现bean的自动装配。

2023-11-08 19:37:55 212

原创 面试--redis基础

LFU,移除最近很少使用,增加了访问频率维度统计数据的热点情况,当添加元素的时候,访问次数默认1,找到相同访问频次的节点,添加到相同频率节点对应的双向链表头部,当访问元素的时候,增加对应k的访问频次,把当前访问的节点移动到下一个频次节点,LFU通过使用频率和上次访问时间来标记数据的热度,如果一段时间没有读写,就减少访问频率。数据预热,先把可能的数据预先访问一遍,这样部分可能大量访问的数据就会加载到缓存中,在即将发生大并发访问之前手动出发加载缓存不同的key,设置不同的过期时间,让缓存失效的时间尽可能均匀。

2023-11-08 18:32:35 262 1

原创 面试--mysql基础

步骤:主库的更新写到binlog,从库发起连接,连接到主库,此时主库创建一个binlog dump thread,把binlog的内容发送到从库,从库启动后,创建一个IO线程,读取主库传过来的binlog内容并写入relay log,从库还会创建一个sql线程,从relay log读取更新事件,将更新内容写入到从库。不需要记录每一行的变化,较少binlog日志量,节约IO提高性能,由于sql执行时有上下文的,因此在保存的时候需要保存相关的信息,同时还有一些使用了函数之类的语句无法被记录复制。

2023-11-07 19:46:33 426

原创 面试--并发多线程基础

java中一个long是8个字节,一个缓存行可以存储8个long的变量,也就是如果一个存储器的位置被引用,附加的位置也会被引用,有效的减少和内存的交互次数,避免了cpu的io等待,提升cpu的利用率。三是,避免线程阻塞和唤醒的开销,刚加入到链表的线程,会通过自旋的方式尝试竞争锁,但是按照公平锁的设计,只有头结点的下一个节点才去竞争锁,否则会出现大量的线程在阻塞之前尝试竞争锁带来大的性能开销,所以在加入到链表尝试竞争锁之前,判断前置节点是不是头结点,如果不是就没必要触发竞争。适合执行大量的短时间任务。

2023-11-02 17:48:52 179

原创 nginx配置-gzip

cp usr/loca/nginx/sbin usr/loca/sbin/nginx.bak //备份。./configure --prefix=/usr/local/nginx --with-http_gzip_static_module //添加模块。先查看已经安装了哪些模块,然后在添加模块的时候把需要的模块都加上。如果已经安装了其他的模块,再重启就会覆盖掉原先的模块,

2023-09-11 15:24:47 481

原创 对分库分表进行批量操作

分为db0和db1两个库,每个库都有三张订单表,分表键根据年份【year】,分库键根据店铺id【store_id】注意:如果使用下面这种sql方式,需要更新0库1库两个库的数据,路由只会进入一个更新,导致没有所有的数据更新。如果是统一的数据更新,比如student表,更新所有学生的name为‘张三’,可以直接用updateById。db0和db1都会执行,且因为店铺id集合包含两个库的数据,所有的订单都会在两个库重复执行。插入时,对象要带有分库/分表键的值,shardingJdbc会进行改写。

2023-08-31 13:01:46 804

原创 Seata - 入门笔记

1、事务访问并可能更新数据库中数据库中各种数据线的一个程序执行单元原子性:事务是一个不可分割的工作单位,一个事务要么都做要么都不做一致性:必须是使数据库从一个一致性到另一个一致性的状态,中间状态不能被观察到隔离性:一个事务的执行不能被其他事务干扰持久性:一个事务一旦提交,对数据库中的数据的改变是永久的2、本地事务大多数场景下,我们的应用都只需要操作单一的数据库,称为本地事务3、常见分布式事务解决方案都是“两阶段(2Pc)”,两阶段是指完成整个分布式事务,划分为两个步骤。

2023-08-08 22:45:00 1183

原创 设计模式-单例模式

创建型模式确保一个类在任何情况下都绝对只有一个实例,并且提供一个全局访问点。

2023-08-07 17:49:48 960

原创 23种设计模式汇总-ing

23种设计模式学习

2023-08-04 14:33:01 380

原创 nginx入门 - 学习笔记

一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标,然后代理向原始服务器转交请求并将获得内容返回给客户端。

2023-07-27 23:50:54 462

原创 linux安装nginx遇到的报错

已加载插件:fastestmirror, langpacks。E45:已设定选项“readonly”(请加!1、Linux如何修改只读文件(以设置自动连网为例)//安装epel-release软件包。如果需要强制修改,可以使用,注意空格。没有可用软件包 nginx。

2023-07-27 23:00:00 907

原创 设计模式 - 工厂模式

*** 录制视频* @returnSystem . out . println("录制Java课程");} }System . out . println("录制Python课程");} }} }客户端也就是测试类中,依赖JavaCourse,如果业务拓展,需要增加更多的Course类型,那么客户端的依赖会变得臃肿。

2023-07-26 21:15:00 435

原创 数据倾斜之count(distinct)

在极大数据量的情况下从执行计划上面来看:只生成一个reducer任务,所有的id都聚集到同一个reducer任务进行去重然后在聚合,非常容易造成数据倾斜.解决方案:1、利用Hive对嵌套语句的支持,将原来一个MapReduce作业转换为两个作业,在第一阶段选出全部的非重复id,在第二阶段对选出的非重复id进行计数。在第一阶段可以通过增大的并发数,并发处理Map输出。在第二阶段,对已去重的id进行计数,count(*)在Map阶段不需要输出原id,只输出一个计数结果。

2023-07-25 17:21:35 470

原创 七大设计模式原则

开闭原则,是面向设计中最基础的设计原则。一个软件实体类、模块、函数应该。强调的是用抽象构建框架,用实现扩展细节。可以提高软件系统的可复用性和可维护性。

2023-07-25 17:20:24 319

原创 对名字和地址加密

【代码】对名字和地址加密。

2023-07-24 13:44:06 169

原创 常用工具类 - CommonUtils

2、校验实体类部分属性不能为空。

2023-07-24 13:43:13 292

原创 ShardingJDBC - 学习笔记

ShardingSphere包括Sharding-JDBC、Sharding-Proxy、Sharding-Sidecar三个开源分布式数据库中间件解决犯案构成。ShardingSphere-JDBC 采用无中心化架构,适用于 Java 开发的高性能的轻量级 OLTP(连接事务处理) 应用。ShardingSphere-Proxy 提供静态入口以及异构语言的支持,适用于 OLAP(连接数据分析) 应用以及对分片数据库进行管理和运维的场景。

2023-07-24 13:42:07 154

原创 Spring Security OAuth2.0 - 学习笔记

Spring Security是解决安全访问控制的问题,就是认证和授权。Spring Security的重点是对所有进入系统的请求进行拦截,校验每个请求是否能够访问所期望的资源,对web资源的保护是通过Filter来实现的。当初始化Spring Security时,在org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration。

2023-07-24 13:40:44 585

原创 docker - 学习笔记

问题: docker是如何处理容器网络访问的?# 查看容器内部的网络地址 ip addr# docker exec -it tomcat01 ip addr, 发现容器启动的时候得到一个eth0@if115 ip地址,docker分配的!# 思考: linux 能不能ping通容器?# linux 可以 ping 通docker容器内部!

2023-07-24 13:36:14 232

原创 redis - 学习笔记

主从复制,是指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器。前者称为主节点(Master/Leader),后者称为从节点(Slave/Follower), 数据的复制是单向的!只能由主节点复制到从节点(主节点以写为主、从节点以读为主)—— 读写分离。

2023-07-24 13:31:28 247

原创 SpringCloud - 狂神学习笔记

微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事情,从技术角度看就是一种小而独立的处理过程,类似进程的概念,能够自行单独启动或销毁,拥有自己独立的数据库。一个父工程带着多个Moudule子模块MicroServiceCloud父工程(Project)下初次带着3个子模块(Module)microservicecloud-api 【封装的整体entity/接口/公共配置等】

2023-07-24 13:14:17 364

原创 Mysql必知必会 - 学习笔记

只记录一下,不常用或缺的知识点。

2023-07-24 12:55:32 127

原创 一对多的mapper

报错: The content of element type "resultMap" must match "(constructor?,id*,result*,association*、id*、结果*、关联*、集合*、鉴别器?)”,原意就是xml的顺序需要与实体类一致。元素类型“resultMap”的内容必须匹配“(

2023-07-24 10:19:20 84

原创 java - 时间工具

*** 获取上个月的第一天* @return*/// 将小时至00// 将分钟至00// 将秒至00/*** 获取上个月的最后一天的时间*/// 将小时至23// 将分钟至59// 将秒至59/*** 获取指定日期的月份第一天* @return*//*** 获取指定日期的最后一天* @return*/

2023-07-24 10:11:59 181

原创 springboot - 整合flyway

一、概念官网:https://flywaydb.org/数据库版本控制管理工具,通过集成Flyway可以实现启动项目时自动执行项目迭代升级。Flyway已经支持数据库包括:Oracle, SQL Server, SQL Azure, DB2, DB2 z/OS, MySQL (including Amazon RDS), MariaDB, Google Cloud SQL, Postgre...

2023-07-13 14:48:00 478

原创 九种分布式ID

一、了解1、概念全局唯一ID即分布式ID。例如在使用分库分表时,数据量日渐增长,需要一个唯一ID标识一条数据,数据库自增ID不能满足需求,此时就需要全局唯一ID做标识。2、满足条件全局唯一:ID是全局唯一的高性能:高可用低延时,生成响应要快高可用:创建ID请求时,服务器要几近于100%创建一个唯一的Id趋势递增:MySQL中InnoDB引擎使用的是聚集索引。多数RDBMS使用Bt...

2023-07-12 15:34:00 30

原创 docker - mysql主从复制

1、docker拉取镜像docker pull mysql:8.02、查看docker images3、创建容器主:docker run -p 3309:3306 --name master -e MYSQL_ROOT_PASSWORD=123456 --restart=always -d mysql:8.0从:docker run -p 3310:3306 --name sal...

2023-07-11 09:52:00 37

原创 Integer、Long包装类的比较==/equals

@Testvoid test() { Long i = Long.valueOf(-1); Long j = Long.valueOf(1); Long k = 1L; Long m = 100L; Long u = 200L; System.out.println(i==-1); System.out.println(i.equals...

2023-06-21 10:36:00 137

原创 springboot - feign.FeignException$BadRequest: [400] during [GET] to [http:

ERROR 失败原因:、feign.FeignException$BadRequest: [400] during [GET] to [http://方法?携带的请求头条件。。。。。 [ManualStockControllerFeign#deleteManualStockTaskByIds(List)]:<!doctype html><html lang="en">&...

2023-06-08 13:41:00 1242

原创 springboot - 项目启动初始化数据

1、redis配置依赖<!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artif...

2023-06-02 17:29:00 163

原创 mybatis-plus 公共字段填充(自定义)

mybatisplus带的公共字段自动填充通常,记录数据时会存在公共字段,为了方便插入,可以使用mybatisplus带的公共字段自动填充, 例如:记录创建信息和更新信息@ApiModelProperty(value = "创建时间")@TableField(value = "create_time", fill = FieldFill.INSERT, updateStrategy = F...

2023-06-02 15:22:00 493

原创 mybatis-plus 批量插入/新增

建表SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for rewrite_sql-- ----------------------------DROP TABLE IF EXISTS `rewrite_sql`;CREATE TABLE ...

2023-06-01 10:03:00 1651

原创 list - 删除元素 ConcurrentModificationException

前天看了公众号,说是三年开发都不会删除元素,看了一眼,没想到第二天就用上了........而我也是那个菜鸟哈哈哈哈哈哈.........记录一下吧public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("1"); list.a...

2023-05-24 13:23:00 51

原创 StringBuffer 和 StringBuilder的区别

1、线程安全性:StringBuffer 是线程安全的,而 StringBuilder 不是。如果在多线程环境下使用 StringBuilder,可能会发生竞态条件等并发问题。StringBuffer 和 StringBuilder 都继承于 AbstractStringBuilder类:字符串的append方法调用的是AbstractStringBuillder的append方法,逻辑...

2023-05-24 09:36:00 114

空空如也

空空如也

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

TA关注的人

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