- 博客(86)
- 资源 (5)
- 收藏
- 关注
原创 SaveOrUpdate批量性能低?原来是使用的姿势不对
推断逻辑:(1) 如果该数据中id字段为null, 一定是新增 (2)如果该数据中id字段不为null, mp框架拿着id去数据库查一次,如果根据id没查到数据,则本次是需要插入;没加全选按钮之前,一个页面最多展示200条数据,用户最多选中200条来执行操作,执行操作响应略长一些,还可以接受。 这个推断过程就是一个隐患,假设现在有100条数据要操作,其中10条要做的是插入,90条是更新。saveOrUpdateBatch: 存在隐藏的性能问题,使用场景:新增多(且新增数据的id为null),更新少。
2024-07-12 15:23:39
1849
原创 Mybatis四大组件
语句处理器StatementHandler,语句处理器负责和JDBC层具体交互,包括prepare语句,执行语句,以及调用ParameterHandler.parameterize()设置参数。参数处理器ParameterHandler,参数处理器负责PreparedStatement入参的具体设置。结果集处理器ResultSetHandler,结果处理器负责将JDBC查询结果映射到java对象。执行器Executor,执行器负责整个SQL执行过程的总体控制。这里阐述一下上图的流程。
2024-01-24 23:04:56
626
原创 Java8的Stream最佳实践
从这一篇文章开始,我们会由浅入深,全面的学习stream API的最佳实践(结合我的使用经验),本想一篇写完,但写着写着发现需要写的内容太多了,所以分成一个系列慢慢来说。给大家分享我的经验的同时,也促使我复习每一个细节,大家共同进步。
2024-01-21 22:31:43
1148
1
原创 雪花算法回拨问题解决方案
什么是时间回拨问题雪花算法通过时间来即将作为id的区分标准之一,对于同一台id生成机器,它通过时间和序号保证id不重复当机器出现问题,时间可能回到之前,此时,时间就不能区分又或者因为闰秒的出现,导致时间回拨如何解决方法1 直接抛出异常不管3X7==21,直接抛出异常将问题交给人工解决这种方法也是原始的雪花算法,百度的uid-generator采用的太过简单,显然不好方法2 延迟等待这种时间回拨(回跳)或许只出现一次,也许只是机器出现了小问题,所以产生对于这种场景,没有必要抛
2024-01-21 12:40:53
466
原创 docker-compose一键搭建zookeeper集群
setup.sh脚本用来创建本地文件夹,这些文件夹会被挂载到docker容器。生成的文件夹。
2024-01-11 15:06:58
695
原创 SpringDoc注解解析
SpringDoc注解的使用,它是基于OpenAPI 3和Swagger 3的现代化解决方案,相较于旧版的Swagger2(SpringFox),SpringDoc提供了更简洁、更直观的注解方式。
2024-01-06 23:15:02
7138
3
原创 Mycat2下载
不知道咋回事,现在访问不了Mycat2的资源服务器了,这里把mycat2-install-template-1.21.zip,mycat2-1.21-release-jar-with-dependencies.jar 分享给大家~~
2023-12-25 15:32:22
872
1
原创 Netty
当有的任务需要较长的时间处理时,可以使用非NioEventLoopGroup,避免同一个NioEventLoop中的其他Channel在较长的时间内都无法得到处理// 增加自定义的非NioEventLoopGroup@Override// 增加两个handler,第一个使用NioEventLoopGroup处理,第二个使用自定义EventLoopGroup处理@Override// 调用下一个handler})// 该handler绑定自定义的Group@Override})
2023-12-24 09:54:31
559
原创 Netty学习之NIO基础
Channel与BufferJava NIO系统的核心通道(Channel)和缓冲区(Buffer)。通道表示打开到 IO 设备(例如:文件、套接字)的连接。若需要使用 NIO 系统,需要获取用于连接 IO 设备的通道以及用于容纳数据的缓冲区。然后操作缓冲区,对数据进行处理简而言之,通道负责传输,缓冲区负责存储常见的Channel有以下四种,其中FileChannel主要用于文件传输,其余三种用于网络通信Buffer有以下几种,其中使用较多的是ByteBufferByteBuffer。
2023-12-23 15:35:57
1289
原创 安装k8s集群
实验环境,一台pc配有docker环境,有两个centsos7容器,其中一个容器作为master,一个作为node。如果master与node都是用默认端口,会存在冲突,所以在此基础上做细微的调整。
2023-09-23 10:13:40
305
原创 docker安装jenkins
密码在jekins_home/secrets/initalAdminPassword文件里。配置分支信息,默认是*/master,这里改成目标分支 */main。绑定项目的pom.xml。maven绑定国内镜像源。安装git、maven。
2023-09-02 12:34:57
801
1
原创 docker安装gitlab
initial_root_password内容如下。端口543:暴露给https。端口90:暴露给http。端口222:暴露给ssh。
2023-09-01 23:45:28
806
原创 Docker环境安装elasticsearch和kibana
运行elasticsearchtips: 挂在的文件夹,config,esdata,plugins需要提前创建。
2023-08-19 21:18:16
1041
原创 搭建Docker私仓
Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。Docker CE 分为stabletest和nightly三个更新频道。官方网站上有各种环境下的,这里主要介绍 Docker CE 在 CentOS上的安装。
2023-08-13 17:19:17
191
原创 https://github.com/aosp-mirror/platform_frameworks_base/blob/master/core/java/android/view/autofill/
https://github.com/aosp-mirror/platform_frameworks_base/blob/master/core/java/android/view/autofill/AutofillManager.javaSurfaceView:https://www.jianshu.com/p/824a9ddf68b9
2023-04-25 19:27:39
147
原创 https://github.com/aosp-mirror/platform_frameworks_base/blob/master/core/java/android/view/autofill/
https://github.com/aosp-mirror/platform_frameworks_base/blob/master/core/java/android/view/autofill/AutofillManager.java
2023-04-25 17:29:36
285
原创 Ajax 原生请求方法
/ uri, async: true表示异步执行,false表示同步方式执行,会卡死页面,鼠标可以移动但是不能选中页面的元素。//尝试调用函数,如果成功则返回XMLHttpRequest对象,否则继续尝试。//返回值:XMLHttpRequest 对象。//创建XMLHttpRequest 对象。//兼容不同浏览器和版本得创建函数数组。//如果发生异常,则继续下一个函数调用。//如果成功,则中止循环。
2023-02-07 10:57:22
367
原创 mysql一主双从环境搭建--docker-compose
重置环境脚本 reset.sh。用于清除所有 /data;创建shell文件,prepare.sh。创建docker-compose.yml。(1)创建init.sh文件。(1)创建init.sh文件。创建my.cnf 配置文件。(2)创建my.cnf文件。(2)创建my.cnf文件。(1)创建init.sql。(1) 创建init.sh。(1) 创建init.sh。(2) 创建 my.cnf。执行prepare.sh。创建init.sql文件。(2) 创建my.cnf。(2) 创建my.cnf。
2023-01-01 15:59:56
756
原创 docker-compose部署mysql主从复制集群
3)同步前,双方数据库中需要同步的数据要保持一致。这样,同步环境实现后,再次更新的数据就会如期同步了。如果主库是新库,忽略此步。1)要保证同步服务期间之间的网络联通。即能相互ping通,能使用对方授权信息连接到对方数据库(防火墙开放3306端口)。参考:https://www.cnblogs.com/smallfa/p/15183605.html。从上面的信息里获取服务创建的网络名称mysqlms_myweb。在从服务器slave上操作。2)关闭selinux。从服务器上的常用操作。
2022-12-29 23:12:48
1542
原创 HashMap、ConcurrentHashMap、HashTable和TreeMap 为啥有的支持key支持null,有的value支持null?
我们可以看出HashMap允许key为null只是一个意外…如下代码所示,每个对象的hash值是根据对象的hashcode码计算出来的。如果对象为null,调用它的hashCode()方法一定会抛出空指针异常。这里我们将map分为两类,一类是并发的ConcurrentHashMap/HashTable等,另一类是非并发的HashMap/TreeMap.线程不安全map,它的Value是可以为null的。使用contains方法我们就可以推断出get方法返回的null代表的是啥意思。
2022-11-30 19:15:58
1095
原创 Timer底层原理
Timer底层原理今天,扒拉了一下ribbon负载均很策略,其中有一个策略是RetryRule,顾名思义就是客户端rpc调用失败时,它会不断地重新请求服务方进行尝试获取数据。思想:在指定时间内不断的重新请求,直到超时。上代码:public Server choose(ILoadBalancer lb, Object key) { long requestTime = System.currentTimeMillis(); // maxRetryMillis:默认500mm long de
2022-03-08 17:58:30
306
Android音乐播放器
2019-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人