自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

miaoao611的博客

不积跬步无以至千里

  • 博客(146)
  • 收藏
  • 关注

转载 Java 导入Excel竖版表头

引用文章:https://blog.csdn.net/qq_41915325/article/details/130721105。

2023-05-25 16:06:40 318

原创 easyexcel表格导出

【代码】easyexcel表格导出。

2023-05-05 15:56:07 250

原创 分布式事务中Tcc模式常见问题(幂等、空回滚、悬挂)解决

如果状态已经为CONFIRMED/ROLLBACKED,那么表示参与者已经处理完其分内之事,不需要再次执行,可以直接返回幂等成功的结果给TC,帮助其推进分布式事务。先来说定义,当没有调用参与方Try方法的情况下,就调用了二阶段的Cancel方法,Cancel方法需要有办法识别出此时Try有没有执行。异常原因可以是发起方宕机,网络抖动等。由于悬挂的产生背景是一阶段方法根本就未执行,所以此时事务控制记录是不存在的,需要在二阶段中处理ROLLBACK的情况(因为超时后触发回滚不可能存在二阶段为CONFIRM)。

2023-02-08 16:01:16 1604 2

原创 Arrays.binarySearch()方法

通过二分法在已经排好序的数组中查找指定的元素,并返回该元素的下标1.如果数组中存在该元素,则会返回该元素在数组中的下标2.如果数组中不存在该元素,则会返回 -(插入点 + 1)这里的插入点具体指的是:如果该数组中存在该元素,那个元素在该数组中的下标~n可取插入点

2022-12-05 16:33:19 190

原创 JSONArray解析

【代码】JSONArray解析。

2022-10-17 04:00:36 222 1

原创 select和epoll区别

因为epoll内核中实现是根据每个fd上的callback函数来实现的,只有活跃的socket才会主动调用callback,所以在活跃socket较少的情况下,使用epoll没有前面两者的线性下降的性能问题,但是所有socket都很活跃的情况下,可能会有性能问题。虽然连接数有上限,但是很大,1G内存的机器上可以打开10万左右的连接,2G内存的机器可以打开20万左右的连接。因为每次调用时都会对连接进行线性遍历,所以随着FD的增加会造成遍历速度慢的“线性下降性能问题”。1、支持一个进程所能打开的最大连接数。

2022-09-16 22:50:25 559 2

原创 Redisson的看门狗watchDog机制是怎么实现的?

很简单就是看当前线程有没有加锁 hexists , KEYS [1], ARGV [2])==1,有加锁的话就代表业务线程还没执行完,就给他的锁重新续期 pexpire ', KEYS [1], ARGV [1],然后返回1,也就是 true ,没加锁的话返回0,也就是 alse。目前还没发现 watchDog 的机制,那我们继续追下去,看看如何加锁的?好像不是所有的 lock ()都有看门狗,因为看到条件判断 lease Time =-1的时候才开启看门狗线程,不等于﹣1的时候就没有这个。

2022-09-16 15:39:54 493

原创 hutool-FTP使用&上传返回false问题

但是并没有默认设置模式(模式有两种,主动模式,被动模式)。这一点真是坑的我不想吐槽了,导致上传方法一直返回false,但是却没有错误日志打印,并且也不报错。有可能是ftp服务器的设置不符合主动,被动模式是没问题的。版权声明:本文为CSDN博主「脏诗劣酒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。1.相关依赖(因为hutool也是封装的底层apache,记得还要引入apache的依赖)注意:hutool官方文档写的特别简单,其实一点也不友好,甚至还有问题。

2022-08-24 17:34:30 1060

原创 sql行转列三个方法

select uid, sum(if(course=‘语文’,score,NULL)) as。sum((if(course=‘数学’,score,NULL)) as。由多行变一行,group by聚合,由一列变多列,衍生提前。select uid, ‘数学’ as course,select uid, ‘语文’ as course,1.行转列sum+if/case when。2.列转行union。...

2022-08-15 18:15:44 6821

原创 mongoDB为什么快

2)文档性模式设计一般会是的你所需要的数据都相对集中在一起(内存或硬盘),大家知道硬盘读写耗时最多是随机读写所产生的磁头定位时间,数据集中在一起则减少了关系性数据库需要从各个地方去把数据找过来(然后Join)所耗费的随机读时间;注意MongoDB在2.4就已经是默认安全写了(具体实现在驱动程序里)。写操作MongoDB比传统数据库快的根本原因是Mongo使用的内存映射技术,写入数据时候只要在内存里完成就可以返回给应用程序,1)MongoDB的设计要求你常用的数据(workingset)可以在内存里装下。..

2022-07-25 14:38:21 1642

原创 应用上线后Cpu使用率飙升如何排查

top-Hp16738,然后键入P(大写p),线程按照CPU使用率排序。查到占用CPU最高的那个线程PID为16756。监控cpu运行状,显示进程运行信息列表。得到16进制的线程ID为4174。按CPU使用率排序,键入大写的P。通过jstack命令查看堆栈信息。......

2022-07-21 19:27:13 367

原创 Kubernetes基础命令

kubeadmconfig若是使用v1.7.x或者更低版本的kubeadm初始化集群,您需要对集群作一些配置以便使用kubeadmupgrade命令。kubeadmreset还原kubeadminit或者kubeadmjoin对主机所作的任何更改。检查状态,发现是failed状态,正常,kubelet会10秒重启一次,等初始化master节点后便可正常。kubeadmtoken管理kubeadmjoin使用的令牌。kubeadm用来初始化集群的指令。...

2022-07-21 17:01:11 187

转载 kubernete架构体系

在node节点中,最重要的组件是kubelete,负责跟容器运行时进行交互,这个交互通过CRI(ContainerRuntimeInterface)远程调用接口,这个接口定义了容器启动时的各种参数。而真正容器在运行时,是通过OCI(容器运行时规范)跟底层操作系统交互。可以看出,只要容器能够通过CRI接入kubernete,不管是不是docker容器,都是可以被kubernete集群管理的。整个集群的状态保存在etcd中。......

2022-07-21 16:59:26 179

原创 权限、认证系统相关名词概念

认证 Authentication通俗地讲认证就是验证当前用户的身份,证明“你是你自己”(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹配时,就打卡成功)授权 Authorization所谓授权,就是某个用户授予其他应用访问该用户某些资源的权限。例如,在你安装手机应用的时候,APP肯定会跳出来问是否允许授予权限(访问相册、位置等权限);你在访问微信小程序时,当登录时,小程序会询问是否允许授予权限(获取昵称、头像、地区、性别等个人信息)实现授权的方式有:cookie、se

2022-06-23 17:15:49 435

原创 Redis 大 key 问题

1 什么是大 keyRedis 中有常见的几种数据结构,每种结构对大 key 的定义不同,比如:value 是 String 类型时,size 超过 10KB 为大 key;value 是 ZSET、Hash、List、Set等集合类型时,它的成员数量超过 1 万个为大 key。2大 key 有什么影响我们都知道,Redis 的一个典型特征就是:核心工作线程是单线程。单线程中请求任务的处理是串行的:如果前面完不成,后面就处理不了。同时也导致分布式架构中内存数据和 CPU 的不平衡。3.大 key

2022-06-22 15:51:55 574

原创 swagger测试excel数据导出接口

在@ApiOperation后面加produces = “application/octet-stream” @GetMapping("/export/level/info") @ApiOperation(value="导出Item-level明细",notes="导出Item-level明细",httpMethod="GET",produces = "application/octet-stream") @ApiOperationSupport(order = 5) public

2022-05-26 15:31:35 2966

原创 SQL Server解析/操作Json格式字段数据

1 json存储在sqlserver 中存储json ,需要用字符串类型进行存储,一般用nvarchar() 进行存储,不要用text进行存储,用text时候,json的函数不支持。2 json操作主要介绍5个函数:(1)openJson:打开Json字符串(2)IsJson:判断一个字符串是不是合法的Json格式。是返回1,否返回0,null返回null。(3)Json_Value:从Json字符串中提取值。(4)Json_Query:Json字符串中提取对象或数组。(5)Json_Mod

2022-05-06 15:34:41 13137

原创 项目引入drools规则引擎

1maven引入这里用的是7.62.0.Final版本<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <drools.version>7.62.0.Final</drools.version> </properties>dependencyManagemen添加<dependen

2022-04-29 16:42:25 709

原创 架构学习01- 03基本原则和23个设计模式分类

对接口编程而不是对实现编程。优先使用对象组合而不是继承。六大原则单一职责原则前端写页面,后端写逻辑。即: 只负责自己分内之事,让单个模块更简单且复用,高内聚。开闭原则实现一个热拔插的效果, 当程序增加了新的功能时, 不能修改原来的代码。即: 开放扩展,拒绝修改。 增加扩展性可复用性与系统稳定。里氏替代原则基类可以出现的地方,子类也一定可以出现。即: 设计接口时要满足: 任何子类实现都可以在其抽象与高层抽象中自由的替换,且无错误。 增加了可替换性,功能无限延伸。接口隔离客户端依赖需要

2022-04-26 11:14:23 1533

原创 架构学习01-02软件架构实现

为了解决软件复杂性带来的一系列问题,识别出业务的关键要求,在成本和要求间做一个平衡的设计,我们将一个系统拆分开来,分而治之,这就涉及到了软件架构。在需求迭代时减少熵增(可维护性),增加系统的可扩展性,伸缩性,高可用,都是我们的目的。软件复杂性带来的问题:不可用性能低下业务响应能力差代码阅读性差迭代困难高可用保证系统无中断,一致能响应。通过冗余机器来实现,通过加数量来降低故障率以实现高可用。常见分配算法有: 轮询、权重、hash取模、性能最优、最少连接等当然会产生一些问题,数据的同步是

2022-04-26 10:45:51 198

原创 架构学习01 01-软件架构

软件架构软件架构是什么?软件架构工作的本质是:1.规划如何将系统切分成组件;2.安好组件之间的排列关系;3.组织组件之间相互通信方式;软件,特别是大型软件,是一个很复杂的东西。而人们应对复杂的东西,常常会采用分而治之的方式。软件架构就是在单个应用内部,按照特定的方式对系统进行切分形成组件。如果组件切分得足够高内聚低耦合,相应的实现复杂度也会降低。之后再将这些组件拼接起来,形成完整的应用。为什么需要软件架构?那么,不使用软件架构也可以实现业务功能其实也能实现业务功能,我们为什么需要软件架构

2022-04-25 15:42:34 470 2

原创 SpringBoot多数据源AbstractRoutingDataSource

1.自定义一个DataSource,继承AbstractRoutingDataSource,这里命名为DynamicDataSourceimport java.util.Map;import javax.sql.DataSource;import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;public class DynamicDataSource extends AbstractRoutingData

2022-04-21 17:55:42 1456

转载 源代码解读Spring只读事务与读写事务的性能的差别

前言:如果大家使用过Spring事务管理,会发现Spring提供的事务分为“只读”和“读写”事务两类。这不免就会疑问这两种事务会有什么不同?本文则通过对Spring和Hibernate源代码的剖析来找出这两种事务的区别。特别是运行性能方面的区别。解读的源代码版本为 Spring 2.5.6.SEC01 ,Hibernate 3.3.2.GA。Spring对事务的支持也分编程式和声明式,本文以基于Annotation方式的声明式事务为例:Spring的配置如下:<bean class=

2022-04-14 15:12:57 990

原创 数据库事务:只读事务

在数据库层面,只读事务的作用也是解决不可重复读的问题,并且不允许该事务中存在除了查询以外的操作。

2022-04-14 14:48:21 975

原创 日常开发之OpenFeign配置

Feignfeign:client: # defaultclient 配置信息config:default: # 全局服务配置connectTimeout: # 连接超时时间,默认值:2000readTimeout: # 读取超时时间,默认值:5000itemcenter: # 对 itemcenter 服务进行局部配置,itemcenter 是你的服务名connectTimeout: 3000 # 连接超时时间readTimeout: 6000 # 读取超时时间httpclient:

2022-04-14 11:21:21 1179

原创 日常开发之IDEA实用插件

Stackoverflow – 查找问题FindBugs – 异常检查TranslationPlugin – 变量取名Mybatis-log-plugin – mybatis log日志Lombok – lombok 注解GenerateAllSetter – 对象赋值Alibaba Java Coding Guidelines – 阿里巴巴规约Translation – 翻译插件SequenceDiagram – 调用链路自动生成时序图Rainbow Brackets – 让你的括号变成

2022-04-14 10:20:42 652

原创 自定义校验类,某字段只能为什么值

package com.walmart.coi.validator.anno;import com.walmart.coi.validator.EnumValueValidator;import javax.validation.Constraint;import javax.validation.Payload;import java.lang.annotation.Documented;import java.lang.annotation.Retention;import java.l

2022-03-31 14:35:22 142

原创 Java时间时区处理转换工具类

import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;import java.util.TimeZone;/** * 时间工具类 */public class MorliaDateUtil { /**

2022-03-25 23:46:18 1569

原创 pagehelper使用

Page page = PageHelper.startPage(xx,xx);// todo:your queryPageInfo pageInfo = new PageInfo<>(page);

2022-01-29 16:22:11 154

原创 SQLserver 执行计划

set statistics profile on

2022-01-29 16:15:13 1455

原创 哨兵模式连接master方式

1工具连接(1).首先ENTINEL get-master-addr-by-name [mastername]获取master ip port(2)redis-cli -h ip -p 端口例如:redis-cli -h 10.233.50.21 -p 63792代码连接@Configurationpublic class RedisConfig { @Bean public RedisTemplate redisTemplate(LettuceConnectionF

2022-01-29 16:05:42 2301

原创 lamada表达式对多字段排序

Map<String, List<YourBean>> mapBy= list.stream().collect( Collectors.groupingBy(i -> i.getPriceId() + i.getId(), Collectors.toList()));

2022-01-29 15:54:17 1061

原创 git查看某一时间段内提交代码行数

git log --since="2021-12-03" --before="2022-1-30" --author="$(git config --get user.name)" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }'

2022-01-29 15:42:34 2835

原创 kubeadm

kubeadm1介绍:Kubeadm是一个快捷搭建kubernetes(k8s)的安装工具,它提供了kubeadm init 以及 kubeadm join这两个命令来快速创建kubernetes集群。kubeadm通过执行必要的操作来启动和运行一个最小可用的集群。它故意被设计为只关心启动集群,而不是之前的节点准备工作。同样的,诸如安装各种各样的插件,例如Kubernetes Dashboard、监控解决方案以及特定云提供商的插件,这些都不在它负责的范围。相反,我们期望由一个基于kubeadm从更高

2022-01-22 16:34:56 9590 1

原创 正则:获取字符串中img标签内src图片地址数组

private SpuChannelDescVO dealContent(SkuContentInfoVO skuchannelDesc,Integer spuId){ SpuChannelDescVO spuChannelDesc=new SpuChannelDescVO(); BeanUtils.copyProperties(skuchannelDesc,spuChannelDesc); List<SpuResourceVO> spuResou

2022-01-21 09:28:21 514

原创 ubuntu使用yum命令时报错There are no enabled repos.repolist: 0

Ubuntu的安装命令wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh

2022-01-06 21:28:37 2923

原创 为什么Kafka速度那么快

Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间,但是实际上,Kafka的特性之一就是高吞吐率。即使是普通的服务器,Kafka也可以轻松支持每秒百万级的写入请求,超过了大部分的消息中间件,这种特性也使得Kafka在日志处理等海量数据场景广泛应用。下面从数据写入和读取两方面分析,为什么为什么Kafka速度这么快。写入数据Kafka会把收到的消息都写入到硬盘中,它绝对不会丢失数据。为了优化写入速度Kafka采用了两个技术, 顺序写入 和 MMFile

2021-11-23 15:58:21 452

原创 类加载器中findClass与loadClass的区别

findClass 类加载逻辑loadClass 如果父类加载器加载失败则会调用自定义的findClass方法defineClass 把类字节数组变成类如果不打破双亲委派机制,重写findClass方法即可如果打破双亲委派机制,重写整个loadClass方法URLClassLoader 实现了 findClass 方法 protected Class<?> loadClass(String name, boolean resolve) throws Class

2021-11-22 15:27:57 1204

原创 ubuntu 上搭建docker,以及大数据环境

1.安装:安装组件:sudo apt install curl下载:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyundocker -v2.创建docker容器拉取镜像:sudo docker pull centos:7启动并创建容器:sudo docker run -itd --privileged --name singleNode -h singleNode \-p 2222:22 \-p

2021-11-21 17:10:38 1253

原创 解决:Failed to get D-Bus connection: Operation not permitted

docker中安装完sshd后,systemctl start sshd,发现报错,错误信息:Failed to get D-Bus connection: Operation not permitted,解决方法:使用命令sudo docker run -itd -v /home/ubuntu/software/hadoop/:/root/build --privileged=true --name singleNode centos:7 /usr/sbin/init创建容器,其中–privilege

2021-11-21 16:35:10 2810

空空如也

空空如也

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

TA关注的人

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