- 博客(138)
- 资源 (5)
- 收藏
- 关注
原创 mysql中查询没有主键的表
背景:在信创过程中,mysql迁移tdsql如果表没有主键,无法迁移,因此写了一段sql来查询没有主键的表。查询结果中primary_key_count为0的就是没有主键的表。
2025-03-18 14:07:06
162
1
原创 服务间超时处理
1-重试:客户端需要主动做好重试方案,比如类似mq的重试队列(1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h),主要的技术,spring-retry框组件,将请求扔到mq,依靠mq的重试队列主动重试,或者建立定时任务表重试。在一个很普遍的场景中,涉及到双端通信的情况下,不论是传统的单机服务,还是现在的微服务,甚至 事异步通信技术(进程内,进程与进程),一直都存在着三态的问题,即:成功,失败,超时。3-服务端处理正常,但响应结果阶段超时。
2024-01-02 20:48:18
655
原创 Java开发过程中的幂等性问题
update 操作,如果只是单纯的更新数据,比如: update user set status=1 where id=1 ,是没有问题的。如果还有计算,比如: update user set status=status+1 where id=1 ,这种情况下多次请求,可能会导致数据错误。绝大数情况下,为了防止重复数据的产生,我们都会在表中加唯一索引,加了唯一索引之后,第一次请求数据可以插入成功。第一次请求接口超时了,为了解决这个问题,可以加悲观锁,将用户A的那行数据锁住,在同一时刻只允许一个请求获得。
2024-01-01 23:02:47
1195
2
原创 生产问题一:redis锁处理幂等性失效
如果有两个线程a,b。如果a线程释放锁后,退出方法前,让出时间片,由于方法未执行完,此时事务没有提交,那么b线程在去数据库查询的时候仍然出来count为0,执行了insert操作,两个线程执行完该方法提交事务,此时数据库中会增加两条数据,幂等性失效。去掉@Transactional注解,这样在a线程在insert时候就会自动提交事务,a释放锁后,b在查询时候,count不等0,不执行插入操作。将锁放到到事务提交后。
2023-12-31 17:50:11
688
原创 在千万级别数据库查询中,从数据库设计,SQL语句,java等层面提高查询效率
d.索引并不是越多越好,索引固然可以提高相应的select的效率,但同时也降低了insert及update 的效率,因为insert或update时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。c.并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex 上建了索引也对查询效率起不了作用。若应用系统需要频繁更新索引数据列,那么需要考虑是否应将该索引建为索引。
2023-12-30 19:40:35
1023
原创 Linux常用命令-vi
`:s/old/new/g`:替换文本中的 "old" 为 "new"- `:wq` 或 `:x`:保存并退出。- `:set number`:显示行号。- `:w`:在普通模式下进入命令模式。- `i`:在当前光标位置前插入文本。- `a`:在当前光标位置后插入文本。- `I`:在当前行的开头插入文本。- `A`:在当前行的末尾插入文本。- `p`:粘贴已复制或删除的文本。- `o`:在当前行下面插入新行。- `O`:在当前行上面插入新行。- `x`:删除光标处的字符。- `n`:查找下一个匹配项。
2023-12-18 16:03:42
88
原创 linux常用命令-sed(流编辑器)
`/start/,/end/s/old/new/g`:在 "start" 和 "end" 之间的行中替换 "old" 为 "new"。- `s/old/new/g`:将文本中所有匹配 "old" 的地方替换为 "new"。这些是一些常见的 `sed` 命令,`sed` 提供了许多功能,可以根据需要进一步研究和使用。- `-i`:直接修改文件内容,保存更改。- `d`:删除模式空间中的当前行。- `p`:打印模式空间中的当前行。- `1,3d`:删除第1到第3行。- `i`:在匹配行前插入文本。
2023-12-18 15:56:21
439
1
原创 MySQL中如何将Json格式字段中某个属性查出来
在MySQL数据库中,你可以使用 `JSON_EXTRACT()` 函数来解析和提取 JSON 数据中的特定字段。-- 获取 nested_key 的值。-- 检查是否存在 key2。-- 获取 key1 的值。
2023-12-18 14:31:31
1623
原创 maven常用命令
这只是一些基本命令,Maven 支持许多其他命令和插件,具体取决于项目的需求。mvn install: 将项目的 JAR 文件安装到本地 Maven 仓库,以供其他项目使用。mvn clean verify: 清理项目,编译代码,并执行验证测试,确保项目符合质量标准。mvn clean install: 清理项目、编译代码,并将 JAR 安装到本地仓库。mvn clean package: 清理项目并打包,生成 JAR 或 WAR 文件。mvn package: 打包项目,生成 JAR 或 WAR 文件。
2023-12-14 16:47:33
256
原创 NACOS配置,bootstrap.properties详解
3、profile: 指定环境 文件名:${application.name}-${profile}.${file-extension}#1、只有上面的配置的时候他默认加载文件为:${application.name} nacos-config。#5、 自定义 group 配置,这里也可以设置为数据库配置组,中间件配置组,但是一般不用,#加载文件为:${application.name}.${file-extension}#nacos-config.yaml,不配置默认为properties文件。
2023-04-05 19:36:53
2935
1
原创 连接sftp报错:packet_write_wait: Connection to ...,fatal:bad ownership or modes for chroot directory...
packet_write_wait: Connection to 127.0.0.1port 21: Broken pipe Could not read packet: connection reset by peerfatal:bad ownership or modes for chroot directory component "/path/"
2023-03-02 20:11:55
2279
原创 Shell脚本中获取机器的日期和时间
在这个示例中,我们使用了date命令和格式化字符串来获取当前日期和时间。%Y代表年份,%m代表月份,%d代表日期,%H代表小时,%M代表分钟,%S代表秒钟。要在Shell脚本中获取机器的日期和时间,可以使用内置的date命令。注意,在date命令中,字符串必须用引号括起来,以便正确解释格式化字符。
2023-02-23 21:27:45
6893
原创 查看inux系统版本
命令: 该命令是Linux基金会提供的一个用于查询系统版本信息的工具,适用于大多数发行版。命令:该命令可以显示您的操作系统的详细版本信息。根据您的系统,您可以选择上述任意一种方法来查看您的Linux版本。
2023-02-11 02:17:25
387
原创 Linux用户创建
创建用户并指定根目录为/xwuseradd xw -d /xw-o 允许用户重复-u 指定uid-g 指定分组很多参数看help信息useradd --help给用户设定密码,免人机交互,可用于脚本中echo "新密码" | passwd --stdin 用户名
2023-02-08 15:13:29
1184
原创 SpringBoot项目中通过JSR-303实现后端参数校验
JSR是Java Specification Requests的缩写,意思是Java 规范提案。任何人都可以提交JSR,以向Java平台增添新的API和服务。5.校验不合法的提示信息,在Controller中通过 BindingResult对象来获取校验的结果信息,然后解析出来后封装为R对象响应。JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation。2.在需要校验的Bean的字段头部添加对应的注解。当我们提交一个非空的数据是可以通过的。
2022-12-11 12:54:00
159
原创 阿里云OSS依赖无法导入的问题
版本背景:springboot:2.4.12,spring-cloud:2020.0.1在使用阿里云对象存储OSS服务时候,根据官方参考文档:aliyun-spring-boot/aliyun-spring-boot-samples/aliyun-oss-spring-boot-sample at master · alibaba/aliyun-spring-boot · GitHub出现依赖无法下载的问题,无maven配置问题,编译报如下问题 添加版本后,无编译错误,但是运行仍会报错,如下:解决:更
2022-12-04 14:09:19
1871
原创 el-tree报TypeError: Cannot read properties of undefined (reading ‘getCheckedNodes‘)解决
主要是少了一行代码,加上ref="tree"即可。
2022-12-02 22:39:12
3196
原创 Linux修改用户主目录(解决修改用户主目录后bash环境异常问题)
2.通过root用户修改/etc/passwd文件中的主目录为/cib。4.把原目录/home/cib下的4个隐藏文件拷贝到/cib目录。5.退出后重新登陆cib用户发现bash环境正常了。1.cib用户当前主目录为/home/cib。3.切换到cib用户,发现bash环境异常。目的:将cib用户的主目录由。
2022-11-22 23:38:30
1323
原创 sftp报错:couldn‘t read packet:connection reset by peer
在修改sftp目录的所有者和权限后报了这个错,解决:chown root:sftp /home/sftp根目录chmod 755 /home/sftp根目录
2022-09-20 09:12:41
4010
原创 No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
【代码】No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer。
2022-09-06 22:52:05
1158
1
原创 centos7安装docker报错:Can‘t read dir of ‘/etc/mysql/conf.d/
centos7安装docker报错:Can't read dir of '/etc/mysql/conf.d/
2022-08-21 21:42:35
862
2
原创 Docker启动报错:Failed to chown socket at step GROUP: No such process
docker启动报错:Failed to chown socket at step GROUP: No such process
2022-08-09 08:36:41
2963
6
原创 排序算法四:归并排序(Merge Sort)
分治(分而治之)把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。3.依次按照递归的返回顺序,不断地合并排好序的子数组,直到最后把整个数组的顺序排好。2.一直递归地把子数组划分成更小的子数组,直到子数组里面只有一个元素。时间复杂度O(n*logn)1.把数组从中间划分成两个子数组;.........
2022-07-28 22:28:42
317
原创 linux免密
需求在root用户在A服务器免密登录xw用户B服务器查看当上用户下是否存在非对称加密秘钥,cd ~/.ssh如果.ssh目录不存在,使用ssh localhost 可生成如果rsa秘钥不存在,使用ssh-keygen -t rsa -P ""生成公私钥,将公钥发送到服务器B的.ssh目录下scp ./id_rsa.pub xw@ipB:/home/xw/.ssh/pubkey_serverBxw用户登录服务器B将pubkey_serverB内容写入authorized
2022-07-27 15:27:59
3037
2
原创 Java8新特性-Stream流
注意请暂时忘记对传统IO流的固有印象!整体来看,流式思想类似于工厂车间的“生产流水线”。当需要对多个元素进行操作(特别是多步操作)的时候,考虑到性能及便利性,我们应该首先拼好一个“模型”步骤方案,然后再按照方案去执行它。这是一种集合元素的处理方案,而方案就是一种“函数模型”。这里的都是在对函数模型进行操作,集合元素并没有真正被处理。只有当终结方法count执行的时候,整个模型才会按照指定策略执行操作。而这得益于Lambda的延迟执行特性。备注数据源流的来源。可以是集合,数组等。。.........
2022-07-17 20:34:15
390
原创 Lambda表达式二:方法引用
在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案拿什么参数做什么操作。那么考虑一种情况如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再写重复逻辑?...
2022-07-15 08:40:40
297
1
原创 Java 内部类
在Java中,可以将一个类定义在另一个类里面或者一个方法里边,这样的类称为内部类,广泛意义上的内部类一般包括四种:成员内部类,局部内部类,匿名内部类,静态内部类 。1.成员内部类public class NormInner { private int age = 88; final static String name = "tom"; class Inner { public void m1() { System.out.prin
2022-07-14 09:00:00
155
1
原创 Lambda表达式一(Java)
JAVA8新特性,是一种匿名函数。它能够使代码变得简洁、紧凑,Lambda表达式实质上是个语法糖。必须有一个函数式接口 有且只有一个抽象方法的接口 @FunctionnalInterface注解(可选)CallableSupplierConsumerComparatorPredicateFunctionLambda表达式的语法格式基本语法函数体只包含一个语句,不需要大括号2.可选的参数圆括号()只有一个参数,省略圆括号,同时
2022-07-13 16:39:47
231
1
转载 JMH(Java Microbenchmark Harness) Java微基准测试
官网:OpenJDK: jmh什么是JMH?微基准测试,他是测的某一个方法的性能到底是好或者不好,换了方法的实现之后他的性能到底好还是不好创建JMH测试 创建Maven项目,添加依赖,我们需要添加两个依赖: 1.1:jmh-core (jmh的核心) 1.2:jmh-generator-annprocess(注解处理包) <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.a
2022-05-29 22:00:13
462
原创 Hello Java,Hello world
我与Java同为九零后,目前都处于最好的年龄。Hello World作为人生第一行代码,不仅敲开了我的java学习之路,也改变了我的人生方向,成功从土木男转身程序猿。本来需要碾转在不同的工地,现在能稳定的在一个地方上班,家庭稳定,选择还是很值得。有了这一层,后来再看王小波那一句“你好哇,李银河!”,也是赋予了程序猿更多浪漫色彩。从入门Java转战IT行业到现在工作五年,经历过大大小小多个项目。普通本科毕业后进入建筑行业,再从头开始转行进入外包5年,到...
2022-05-28 10:43:05
125
5
转载 丰田五问与定位生产问题
有一次,丰田汽车公司的董事长,发现一条生产线上的机器总是停转,原因是因为保险丝烧断了。虽然每次都及时更换保险丝,但用不了多久又被烧断,严重影响整条生产线的效率。他觉得:更换保险丝并没有解决根本问题。于是,他与工人做到了以下问答:一问:“为什么机器停了?”答:“因为超过了负荷,保险丝就烧断了。"二问:“为什么超负荷呢?”答:“因为轴承的润滑不够。"三问:“为什么润滑不够?”答:“因为润滑泵吸不上油。四问:“为什么吸不上油?”答:“因为油泵轴磨损、松动。”五问:“为什么磨损了呢?”再答:“
2022-05-24 18:36:47
245
1
原创 修改maven配置文件settings.xml(阿里云镜像,下载速度快)
使用方法:先备份自己的settings.xml 然后复制下面的内容到空白的settings.xml文件中即可<?xml version="1.0" encoding="UTF-8"?><settings> <localRepository>D:\repository</localRepository><!--需要改成自己的maven的本地仓库地址--> <mirrors> <mirror>.
2022-05-22 22:49:20
3519
1
原创 基于SpringCloud实现灰度发布
目录1.什么是灰度发布?2.灰度发布有什么作用?3.灰度发布的实现方式:网关到服务,服务到服务3.1网关到服务代码实现3.1.1整体流程3.1.2前置环境(需要自行搭建四个至少服务)3.1.3核心代码3.2网关到服务代码实现3.2.1整体流程3.2.2前置环境(需要自行搭建5个至少服务)3.2.3核心代码1.什么是灰度发布?灰度发布又称金丝雀发布,是在系统升级的时候能够平滑过渡的一种发布方式。在其上可以进行A/B测试,即让一部分用户继续用产品特性A,一部分
2022-05-22 20:23:21
2662
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人