- 博客(58)
- 收藏
- 关注
原创 分库分表分片建选择
在分库分表的场景下,,尤其是在跨分片(分库分表)的场景中。如果每个分片(分库或分表)独立使用数据库的自增主键(如 MySQL 的),则不同分片的自增ID会从1开始递增,导致不同分片的表中主键ID重复。t_order_01t_order_11如果业务需要跨分片查询(如全局唯一ID作为外键),自增ID的重复会导致数据关联失败或逻辑错误。:通过算法生成全局唯一的ID,如等。:在每个分片中使用自增ID,同时添加分片ID作为前缀,形成复合主键或唯一键。
2025-04-02 16:37:30
675
原创 Java缓存String(字符串常量池)、Integer (-128 到 127 )
通过理解字符串常量池的设计,可以更好地优化代码中字符串的使用,避免内存浪费并提升性能。通过这个例子,可以清晰地看到 Integer 缓存机制的作用和不同场景下的行为差异。字符串常量池本质上是一种。
2025-03-16 22:40:42
909
原创 分库分表用商家id分片,那如果用非商家id查询怎么办?
当你在分库分表时选择商家ID(seller_id)作为分片键,但有时需要使用非商家ID进行查询时,就会遇到一些挑战。这是因为分片的设计通常是基于某个特定的字段(如用户ID或商家ID),这样可以确保相同商家的数据被存储在同一个数据库或表中,从而提高查询效率。然而,当查询条件不是分片键时,就需要采取额外的措施来处理这些查询请求。
2025-03-12 11:35:56
278
原创 分库分表学习
为什么迁移到分库分表之后不带分库分表键的多维查询就不能支持了迁移到分库分表(Sharding)后会影响不带分库分表键的多维查询的支持,原因主要是因为分片策略会改变数据的物理存储和查询方式。:在分库分表架构中,数据根据分片键分散存储在不同的数据库(分库)或数据表(分表)中。如果一个查询不包括分片键,那么查询就无法直接定位到数据所在的分片。:分库分表中间件或数据库路由层需要分片键来决定如何将查询请求路由到正确的分片。如果查询不包含分片键,将需要在所有分片上执行查询,称为全局扫描(Full Scan)
2025-03-12 00:28:46
469
原创 事务和锁的理解
如果你遇到了分布式锁和事务注解一起使用时遭遇锁失效的问题,需要检查分布式锁的实现和事务的配置,并确保它们的集成是逻辑上正确的。在分布式系统中,分布式锁可能涉及至外部系统(如Redis或Zookeeper),而分布式锁和数据库事务是不同系统,它们的生命周期管理独立。当你开始一个事务处理一系列的数据库操作时,这些操作可能涉及与行级锁(对于行的读取和写入)、表锁、页面锁等相关的锁自动加锁。如果事务由于某个原因而回滚,且对应的分布式锁已经被释放引入的新的线程可能会在不一致的状态下操作数据。
2025-03-12 00:26:46
846
原创 多核cpu与时间片多线程的问题
操作系统会将多个线程分配到不同的核心上,每个核心上的线程可以同时执行,而不是像单核处理器那样轮流执行。- **时间片轮转**:每个线程在分配的时间片内执行,然后被中断,下一个线程获得 CPU 控制权。- **抢占式调度**:操作系统可以中断正在执行的线程,将 CPU 控制权分配给更高优先级的线程。- **多核处理器**:每个核心可以独立运行一个线程,多个核心可以同时执行多个线程。- 如果有新的就绪线程,操作系统可以将新的线程分配给空闲的核心。- **时间片**:操作系统分配给每个线程的 CPU 执行时间。
2025-02-11 22:22:57
331
原创 线程池的数据结构是什么 为什么会占用堆内存 线程池是一个对象吗
线程池是一种用于管理和复用线程以执行多个任务的设计模式,它通过预先创建一组线程,并将这些线程重复用于执行提交给线程池的任务,从而减少因频繁创建和销毁线程带来的开销。在Java中,线程池通常通过包下的类来实现。
2025-01-18 21:57:47
525
原创 内存泄漏和内存溢出以及解决办法
内存泄漏可能最终导致OOM,因为泄漏的内存资源一直无法回收,会不断累积,最终耗尽所有可用内存,触发OOM。但是,发生OOM并不总是因为内存泄漏,有时可能只是因为短时间内的内存请求非常高,超出了JVM配置的最大内存限制。在Java中,内存泄漏常常是因为对象被不必要地长时间持有,例如,长生命周期的对象持有短生命周期对象的引用,阻止了短生命周期对象的垃圾回收。的一个子类,在Java中,这通常被认为是一个严重的问题,因为它会导致程序无法继续执行。和内存泄漏是相关但不同的概念。
2024-03-16 19:48:44
859
原创 BigDecimal 保留2为小数 四舍五入 和舍弃
HALF_EVEN:如果舍弃部分左边的数字为奇数,则舍入行为同 RoundingMode.HALF_UP;如果为偶数,则舍入行为同RoundingMode.HALF_DOWN(五舍六入,奇数四舍五入)如果结果为负,则舍入行为类似于RoundingMode.DOWN(当正数时直接进一,当负数时舍去)如果结果为负,则舍入行为类似于RoundingMode.UP(当正数时舍去,当负数时进一)HALF_DOWN:如果被舍弃部分 > 0.5,则舍入行为同 RoundingMode.UP;
2023-05-26 15:03:19
1774
转载 【无标题】MYSQL case语句
//1.获取Class对象Class stuClass = Class.forName("fanshe.field.Student");//获取一个对象 Object obj = stuClass.getConstructor().newInstance();//产生Student对象--》Student stu = new Student(); //为字段设置值 f.set(obj, "刘德华");//为Student对象中的name属性赋值--》stu.name = "刘德华...
2022-10-21 16:03:14
221
转载 mysql 暴打面试官 SQL优化
一、查询SQL尽量不要使用select *,而是具体字段1、反例2、正例3、理由节省资源、减少网络开销。可能用到覆盖索引,减少回表,提高查询效率。
2022-09-19 13:30:27
380
原创 解决Mybatis-plus自增id问题
问题描述今天接到一个需求 把表的id由唯一id改成自增id在id字段加上注解但是测试的时候发现自增id虽然自增了,是从之前的唯一id为基础自增的,特别长不美观,如何让设置从0子自增呢?
2022-08-04 13:48:00
2097
原创 解决 java中sql.date与util.date不匹配
第一种 转换public static String utilDataToSqlDate(java.util.Date data){ SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd"); String sqlDate = bartDateFormat.format(data); return sqlDate;}第二种@DateTimeFormat(pattern = .
2022-04-24 19:40:08
711
转载 VUE 之 Axios 的get和post前后端传参详解
vue axios请求方式和传参格式http的get方法传递数组参数有两种形式形式一:通过逗号拼接query参数http://localhost:8080/api?arr=1,2,3,4&name=1 形式二:通过数组名+下标指定参数http://localhost:8080/api?arr[0]=1&arr[1]=2 使用axios的get方法传递数组参数形式一的解决方案// 这里注意使用+''将参数转换成了字符串,
2022-03-21 17:19:23
43865
4
转载 Serializable接口的意义和用法
Serializable接口的意义和用法https://www.cnblogs.com/wangenxian/p/11003221.html本人软件工程大三妹子一枚,以下为个人观点仅供参考:最近在云课堂学习springmvc+mybatis项目时,发现老师在实体类中引用了serializable这个接口,如下: import java.io.Serializable; public class Admin implements Serializ.
2022-03-16 14:46:46
472
转载 Spring、SpringMVC常用注解总结
一、Spring常用注解@Component:标注一个普通的Spring Bean类。 @Controller:标注一个控制器组件类。 @Service:标注一个业务层组件类。 @Repository:标注一个dao持久层组件类。Bean实例的名字默认是Bean类的首字母小写,其他部分不变。尽量考虑使用@Controller,@Service,@Repository代替通用的@Component。二、SpringMVC常用注解@Controller@RequestMappin
2022-03-14 17:16:19
9869
1
原创 Vue.js 样式绑定 个人总结
:class="{ 'active': isActive }":style="{color: green}"一。class 属性绑定<div v-bind:class="{ 'active': isActive }"></div>v-bind:class="{ 'active' : isActive, 'text-danger' : hasError }"><div v-bind:class="[activeClass, errorClass]"&
2022-03-10 13:47:04
583
转载 docker run 和 docker exec 的差异 docker基本命令详解
docker run 和 docker exec 的差异https://www.cnblogs.com/miracle-luna/p/11111852.htmldocker run 和 docker exec 的差异docker run :根据镜像创建一个容器并运行一个命令,操作的对象是 镜像;docker exec :在运行的容器中执行命令,操作的对象是容器。docker run 命令语法docker run [OPTIONS] IMAGE [COMMAND] [...
2022-03-10 11:42:48
619
转载 navicat怎么导出和导入数据表
1.选中要导出的数据表,右击,然后点击“导出向导”。2.点击sql脚本文件(*sql)->点击下一步。3.点击保存位置->下一步->保存******************************************************************************************如果要导出整个数据库则:1.右击整个数据库->转储sql文件2.选择保存位置->保存***********...
2022-01-24 22:21:07
5930
原创 解决mysql Access denied for user root@localhost错误
1.配置my.ini文件 在文件中加入:skip-grant-tables,此时不用密码登录2.关闭后重启服务 net stop mysql; net start mysql;3.登录MySQL服务修改密码 MySQL -u 用户名 -p;4.修改密码 update mysql.user setauthentication_string=PASSWORD('你的新密码') where USER='用户名';5.刷新权限表 flush privilege..
2022-01-24 22:03:50
5358
转载 Spring笔记
【根据视频总结笔记】:1、https://blog.youkuaiyun.com/weixin_45496190/article/details/1070590382、https://blog.youkuaiyun.com/weixin_45496190/article/details/1070672003、https://blog.youkuaiyun.com/weixin_45496190/article/details/1070712044、https://blog.youkuaiyun.com/weixin_45496190/articl
2021-11-12 20:52:27
241
转载 docker: error pulling image configuration
报错:docker: error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/a4/a4fdfd462add8e63749aa08ff0044b13d342a042965f1ec6744586cda10dfce9/data?verify=1591601228-BB%2FSFfmL4YVZUUoBsVmYZxIZym
2021-11-05 15:50:17
2677
4
转载 Error: Cannot retrieve repository metadata (repomd.xml) for repository: InstallMedia. Please verify
最近在使用yum的时候报了这样一个错误:Error: Cannot retrieve repository metadata (repomd.xml) for repository: InstallMedia. Please verify its path and try again我使用的LINUX版本为RHEL6,本人是LINUX方面的菜鸟,于是便在网上搜寻答案,大概的意思如下:"原来是rhel 6 新引进的一个包管理工具 Packagekit,这个工具似乎会在每次读取软件仓库之后,会把原本
2021-10-31 10:54:47
562
原创 Redhat 6.5 配置yum
第一步:删除系统自带yum包# rpm -qa |grep yum //查询本地的yum# rpm -qa |grep yum|xargs rpm -e --nodeps //不检查依赖直接删除rpm包# rpm -qa |grep yum //如果无内容则表示卸载完毕第二步:进入# cd /etc/yum.repos.d/cd /etc/yum.repos.d/开始下载yum所需要的rpm。wget --no-check-certifi...
2021-10-31 00:36:01
1488
转载 Linux 查看文件 cat与 more 用法
1、cat 显示文件连接文件内容的工具;cat 是一个文本文件查看和连接工具。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名。比如:[root@localhost ~]# cat /etc/fstab为了便于新手弟兄灵活掌握这个工具,我们多说一点常用的参数;1.0 cat 语法结构;cat [选项] [文件]...选项 -A, --show-all 等价于 -vET -b, --number-nonblank 对非空
2021-10-29 19:54:08
1449
转载 SpringBoot类中读取properties,yml配置文件的3种方法
1. Environment方式yml文件server: port: 8082Controller控制器中的代码如下import org.springframework.beans.factory.annotation.Autowired;import org.springframework.core.env.Environment;import org.springframework.web.bind.annotation.GetMapping;import org.spri
2021-10-11 23:12:43
326
原创 java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException
在WEB-INF 的lib下无包
2021-10-09 11:14:04
195
原创 idea Mybatis 1 字节的 UTF-8 序列的字节 1 无效
打开idea的settings 改成UTF-8然后clean一下重新编译在maven项目中直接清除target目录重新编译生成
2021-09-29 10:34:33
398
2
转载 idea Mybatis 1 字节的 UTF-8 序列的字节 1 无效。
Mybatis第一个程序出现"1 字节的 UTF-8 序列的字节 1 无效"异常怎么办(idea版)先讲一下原理这个异常时因为xml文件字符编码与idea编辑器字符编码不一致所导致的.首先当我们配置mybatis的时候会在官网上获得配置代码,如图他的输出字符编码是utf-8,但是我们的idea默认xml等文件字符编码集为gbk解决方法:1,将xml文件中改为gbk如图2,将idea的源文件默认字符编码集改成utf-8,然后重新编译在maven项目中直接清除target目录重新编译生成...
2021-09-29 10:16:24
551
原创 idea创建第一个maven项目报错Cannot resolve plugin org.apache.maven.plugins:maven-clean-plugin:2.5
可能原因:环境变量没有配置配置环境变量: 计算机—>属性—>高级系统设置—>环境变量—>系统变量 新建变量名:MAVEN_HOME 变量值:F:\apache-maven-3.8.1 编辑Path变量,新建值%MAVEN_HOME%\bin\ 保存并退出3、打开cmd命令,输入Maven 命令mvn -v显示Maven版本则表示安装成功原因二具体步骤参考该博文来配置:IntellIJ ...
2021-09-25 20:35:12
231
转载 【网络】在浏览器地址栏输入一个url,按下回车之后会发生什么?用到哪些协议?用到哪些层?
在浏览器地址栏键入URL,按下回车之后会经历哪些流程?1、DNS解析,得到IP地址;DNS是什么?DNS是一种组织成域层次结构的计算机和网络服务命名系统,用于TCP/IP网络,所提供的服务是用来将主机名和域名转换成IP地址的工作。DNS解析过程:主机查询DNS缓存,如果没有就会给本地DNS发送查询请求;本地的DNS服务器向根域名服务器发送查询请求,根域名服务器返回该域名的一级域名服务器;该本地服务器给该一级域名服务器发送查询请求,然后依次类推直到查询到该域名的IP地址;2、解析出IP
2021-09-17 18:04:40
896
原创 1.v-if太多 报错 2. js for循环
currentUserInfo: window.localStorage.getItem("currentUserInfo") === "null" ? null : JSON.parse(window.localStorage.getItem("currentUserInfo")),1解决办法:减少不必要的v-if2解决办法:用forEach代替
2021-09-07 16:51:38
142
原创 vue对象内添加数据
this.$set(对象, key, 数组)例如:this.$set(this.modelForm, "Authorizers", this.chooseData);created() { for (var i = 0; i < this.aaa.length; i++) { // 第一种方法 // var b ={ hidden:true } // Object.assign(this.aaa[i], b) ...
2021-09-06 21:05:51
2998
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人