mysql事务报错Communications link failure during commit(). Transaction resolution unknown. 问题 线上报错 exception=com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Communications link failure during commit(). Transaction resolution unknown. at sun.reflect.GeneratedConstructorAccessor400.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at
mysql mysql分区与分表 对区对于引擎来说,是多个表,但是对于server层来说是1个表 可以通过多维度进行分区,如范围分区、hash分区、list分区 分区表与用户分表相比,有两个问题 分区表在第一次访问时,需要访问所有的分区 分区表共用mdl锁
mysql mysql之自增id 自增id值的存储方式 innodb在5.8版本前是不对该值进行存储的,只是放在内存中,如果实例重启,则查询表的最大值+1,重新放在内存中。 在5.8以后会将自增值的变更记录在redo log中,重启后依靠redolog恢复重启前值。 自增id修改时机 当执行insert操作时,如果未指定id,或id为0,则会取自增id并将自增值+1;如果指定了id,则会计算指定的id与自增值的大小,如果小的话不会对自增值进行操作,如果大于自增值,则会将自增值修改为该id+1 严格来说并非+1,而是+auto_increment_increment的值 自增锁的范围 在5.1.
idea idea启动java服务报错OutOfMemoryError: GC overhead limit exceeded解决方法 在用idea开发java项目时,启动报内存溢出错误,致服务启动失败:Error:java: java.lang.OutOfMemoryError: GC overhead limit exceeded 报此错说明启动期间内存不够用了,把idea的启动进程堆内存值设大点就行了。 设置窗口:Settings --->Build,Execution,Deployment---> Complier 把 build process heap size 值改大点即可 如下图所示: 把此值改为1000,重新启动服务正常。
mybatics insert get id <insert id="insertDataErrorExtension" parameterType="com.xx.campaign.dataobject.DataErrorExtensionDO" useGeneratedKeys="true" keyProperty="id"> insert into data_error_extension (group_id, page_id, module_
mac home目录操作方法 首先vim /etc/auto_master查看home所在行是否被注释,如果被注释了,sudo vim /etc/auto_master把注释去掉,然后去根目录下执行sudo automount -vc 然后home目录就回来了,如果想在home目录写入东西,再把/etc/auto_master的注释加上,再去根目录执行sudo automount就好了。
redis redis set nxxx expx String set(String key, String value, String nxxx, String expx, long time); 从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改: EX second :设置键的过期时间为 second 秒。 SET key value EX second 效果等同于 SETEX key
wireshark使用问题 You do not have permission to capture on device "en0". ((cannot open BPF device) /dev/bpf0: Permission denied) 原因 当前用户无权限,为当前用户添加权限 解决方案 打开终端 输入命令 'whoami' di@bogon ~ % whoami di 进入 /dev
java 执行mvn compile报错 报错内容 程序包 javax.annotation找不到 原因 mvn命令对应的java版本不对 解决方案 修改mvn命令 vim apache-maven-3.6.3/bin/mvn 添加 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home
计算经纬度距离 package com.didichuxing.dd596.lcl.order.common.util; import org.gavaghan.geodesy.Ellipsoid; import org.gavaghan.geodesy.GeodeticCalculator; import org.gavaghan.geodesy.GlobalCoordinates; import java.math.BigDecimal; public class DistanceUtils { private static double
delay retry 添加重试 delayQueueManager.add(DelayQueueTypeEnum.FEE_CANCEL, cancelFeeRetryMsg, 3); DelayQueueTypeEnum.FEE_CANCEL:重试的类型,消费消息时,根据该类型定位对应的handler cancelFeeRetryMsg:请求参数 3: retrytime 封装重试context&发送延时消息 DelayContext delayContext = new DelayContext(); delayContext.setKey(typeEnum.toString());//DelayQueueTypeEnum delayContext.setParam(JSON.
java gson处理泛型 public class DateTest { public static void main(String[] args) throws Exception { // object String cacheData = "{\"personId\":1111}"; Gson gson = new GsonBuilder().disableHtmlEscaping() .setDateFormat("yyyy-MM-dd HH:mm:ss") .create(
线上问题之数据导出少字段-countDownLatch time问题 问题描述 下载数据excel时,发现数据中有一列只有部分数据 伪代码 //获取Customer CustomerListModel customerListModel = new CustomerListModel(); List<Callable<CustomerListModel>> bonusGetDetailTasks = Lists.newArrayList(); for (GetCustomerListRequest customerListRequest : requests) { bonusGetDetailTasks.add(() -> { CustomerListModel model = this.getCustomerList(customerListRequest); if
tomcat tomcat 之filter filter的基本功能大家都是清楚的,本节不赘述,本文主要讲述filter 是否可修改response及如何修改response 通常我们理解tomcat的调用流程是 clinet -> filter -> service | clinet <- filter < - - 实际的处理流程是 clinet -> filter -> service | filter < - - clinet <
geek 并发编程之限流算法 计数限流 最简单的限流算法就是计数限流了,例如系统能同时处理100个请求,保存一个计数器,处理了一个请求,计数器加一,一个请求处理完毕之后计数器减一。 每次请求来的时候看看计数器的值,如果超过阈值便拒绝处理。 非常的简单粗暴,计数器的值要是存内存中就算单机限流算法。存中心存储里,例如 Redis 中,集群机器访问就算分布式限流算法。 优点就是:简单粗暴,单机在 Java 中可用 Atomic 等原子类、分布式就 Redis incr。 缺点就是:假设我们允许的阈值是1万,此时计数器的值为0, 当1万个请求在前1秒内一股脑儿的都涌进来,这突发的流量可是顶不住的。缓缓的增加处理和一下子涌入对于程序来说是不一样的。 固定窗口限流算法
geek 并发设计模式 Immutability模式:如何利用不变性解决并发问题? Copy-on-Write模式:不是延时策略的COW 线程本地存储模式:没有共享,就没有伤害 Guarded Suspension模式:等待唤醒机制的规范实现 Balking模式:再谈线程安全的单例模式 Thread-Per-Message模式:最简单实用的分工方法 Worker Thread模式:如何避免重复创建线程? 两阶段终止模式:如何优雅地终止线程? 生产者-消费者模式:用流水线思想提高效率 Immutability模式:如何利用不变性解决并发问题? 利用 Immutability 模式解决并发问题,也许你觉得有点陌生,其实你天天都在享受它的战果。Java 语言里面的 String 和 Long、
mysql mysql 之 auto increment 下一次自增id可通过show create table table1查看,另外可通过以下系统参数设置递增数值 show variables like '%auto_inc%'; auto_increment_increment 2 auto_increment_offset 1 auto_increment_offset 和 auto_increment_increment是两个系统参数,分别用来表示自增的初始值和步长,默认值都是1。 备注:在一些场景下,使用的就不全是默认值。比如,
k8s containerd基础命令 列表namespace ctr ns ls 查看镜像 查看default ns镜像 ctr images ls 查看某ns下的镜像 ctr -n k8s.io images ls 镜像标记 ctr -n k8s.io images tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
k8s ansible快速搭建k8s1.24.2 github地址 https://github.com/clkevin/k8s-ansible release-1.24分支 准备工作 节点准备,可增减node节点,要求2c 2g 20g+,内核5以上 10.0.2.11 k8s-master 10.0.2.10 k8s-node1 10.0.2.12 k8s-node2 环境准备(以下操作针对master节点) 按上述节点名称在k8s-master中配置各节点,
linux linux ssh 免密登陆 配置免密登陆 创建目录 mkdir .ssh 创建密钥ssh-keygen -t rsa -C "test@sina.com" id_rds-私钥 id_rsa.pub-公钥 config 配置ssh 连接需要的信息,配置的ssh客户端 Host k8s-master HostName 10.0.2.10 User root Port 22
git 解决阿里云无法访问github 首先在 https://www.ipaddress.com 找到 github.com对应的IP地址。 将解析加入/etc/hosts中,然后就可以git clone代码了。 如果过段时间地址失效了,更换就好了。 参考
k8s k8s通过二进制升级1.24版本 准备 节点准备 10.0.2.7 k8s-master 10.0.2.8 k8s-node1 10.0.2.9 k8s-node2 网络准备 节点 cidr:10.0.2.0/24 service cidr: 10.2.0.0/24 podd
k8s k8s通过kubeadm升级1.24版本 背景 knative对k8s版本要求较高,另k8s不同版本之前apiversion比较乱,如crd在之前的版本中version为apiextensions.k8s.io/v1beta1,在k8s1.22版本后为apiextensions.k8s.io/v1,同时为了学习了解最新的k8s功能,故将k8s版本升级为1.24, 本文采用kubeadm的方式安装 节点准备 准备三个节点 k8s-master 10.0.2.4 k8s-node1 10.0.2.5 k8s-node2 10.0.2.6
istio k8s1.24安装istio1.14 istio版本 根据istio与k8s版本关系我们需要在k8s1.24版本上安装1.14的istio。本篇以1.14.3为例 k8s1.24安装文档参考 下载 https://github.com/istio/istio/releases 1.14.3版本 安装 安装istioctl 解压缩istio-1.14.3-linux-amd64.tar.gz cp bin/istioctl /usr/bin/ istioctl version
linux virtaulbox虚拟机扩容 初始创建virtaulbox虚拟机时,设置存储容量过小,如果重新创建,那么上面已经构建的功能全部需要重新搞,故可考虑直接扩容虚拟机 创建磁盘 检查 启动虚拟机。 输入命令:lsblk 看到我们刚刚创建的物理磁盘sdb . NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 10G 0 disk sr0 11:0 1 1024M 0 rom