- 博客(31)
- 资源 (4)
- 收藏
- 关注
原创 MySQL之MVCC
多版本并发控制MVCC,也就是Copy on Write思想。MVCC除了支持读和读并行,还支持读和写并行、写和读并行,但为了保持数据一致性,写和写是无法并行的。 如下图,在事务1写的时候会copy一个记录的副本,其他事务的读操作会读取这个记录的副本,因此不影响其他事务对此记录的写入,实现写和读并行。MVCC 概念 MVCC(Multi Version Concurrency Control)被称为多版本并发控制,是指在数据库中为了实现高并发的数据访问,对数据进行多版本处理,并通过事务的可见性来保证
2022-12-07 06:40:15 836 6
原创 线程池详细介绍
线程池的状态线程池优雅关闭线程池有两个关闭方法,和,切换到SHUTDOWN状态,切换到STOP状态,当队列和线程池都为空的时候切换到TIDYING状态,最后执行进入到TERMINATED状态。shutdown()不会清空任务队列,会等所有任务执行完成,只会中断空闲的线程;shutdownNow()会中断所有线程,清空任务队列。线程池状态之间的迁移过程线程池的拒绝策略corePoolSize和maxPoolSize一般设置为多大CPU密集型 CPU密集型就是指该任务需要大量计算而没有阻塞,CPU一直
2022-12-05 08:34:00 658 3
原创 MySQL的执行计划explain
mysql查询优化器会根据统计信息,估算sql 查询到结果需要扫描多少行记录。原则上rows是越少效率越高,可以直观的了解到SQL 效率的高低;表示存储引擎查询数据时采用的方式。通过他可以判断是全表扫描还是基于索引的部分扫描。常用属性值如下,从上至下效率依次增强。表示查询时能够使用到的索引。注意,并不一定会真正使用,显示的是索引名称;表示很多的额外信息,各种操作会在Extra提示相关信息。表示查询使用索引的字节数量。表示查询时真正使用到的索引,显示的是索引名称;select_type:表示的查询类型。
2022-11-28 06:45:35 284 2
原创 常见限流算法
令牌桶是对漏桶算法的一种改进,漏桶算法能够限制调用的速率,而令牌桶算法能够在限制调用的平均速率的同时还可以允许一定程度的突发调用。 滑动窗口算法是为了解决固定窗口算法的临界值的问题而诞生的,滑动窗口是基于是时间来划分窗口的。
2022-11-24 08:52:38 553 1
原创 Spring的循环依赖问题
Spring循环依赖是一个业内比较难理解的知识点,本文由作者阅读大量的文献、博客和网络教程总结出来的关于Spring循环依赖的知识点,欢迎大家一起进来了解一下!
2022-11-22 07:34:44 364
原创 浅谈ThreadLocal
你用过ThreadLocal吗?你在面试的时候被面试官追问过ThreadLocal吗?你知道ThreadLocal是怎样解决Hash冲突的吗?你又知道ThreadLocal是怎样避免内存泄漏的吗?来吧!我们一起了解下ThreadLocal!
2022-11-14 06:48:05 258
原创 分布式事务 - seata
相对于AT模式,TCC模式对业务代码有一定的侵入性,但是TCC模式没有AT模式全局行锁,因此TCC模式性能要比AT模式高很多。在AT模式下,用户只需关注自己的“业务SQL”,用户的业务SQL作为一阶段,Seata会自定生成事务的二阶段提交和回滚操作。AT模式的一阶段、二阶段提交和回滚均由Seata框架自动生成,用户只需编写“业务SQL”,便能轻松接入分布式事务。二阶段如果是提交的话,因为“业务SQL”在一阶段已经提交至数据库,所以Seata框架只需要将一阶段保存的快照数据和行锁删掉,完成数据清理即可;
2022-11-08 06:56:00 778
原创 Docker 数据卷
Docker 数据卷 Docker数据卷需要解决的问题容器管理数据卷的两种方式Docker数据卷的功能:Docker数据卷的特点:数据卷的拷贝拷贝命令示例数据卷的类型:宿主机数据卷简介数据覆盖问题挂载数据卷的语法挂载数据卷示例:以MySQL为例挂载目录权限问题清理数据卷注意事项Docker数据卷需要解决的问题当我们使用docker容器的时候,会产生一系列的数据文件,这些数据文件在我们删除docker 容器时是会消失的,但是其中产生的部分内容我们是希望把他给保存起来。docker 把应用与运行环境打包成容
2022-05-31 12:44:07 217
原创 涉及Excel操作的POI处理方式
本专栏收录笔者在项目中涉及用POI操作Excel导入导出的业务demo,工作之余总结经验以供后续使用,同时分享给大家一同探讨。【POI Excel导出模板】https://blog.csdn.net/u011528738/article/details/123157236?spm=1001.2014.3001.5502【POI Excel导入模板】https://blog.csdn.net/u011528738/article/details/124390956...
2022-04-24 20:35:35 155
原创 【POI Excel导入模板】
本篇是导入相关模板,入口参数为被导入文件的地址。此demo支持一个sheet的导入,若需要多个sheet需要调整下参数,请大家自行验证。 此篇demo需引入POI相关依赖,依赖为poi-ooxml的4.1.2版本。 在方法getWorkbook中,会涉及到一些枚举类的使用。大家不必过于纠结,这个枚举类实际上就是对03和07版本Excel后缀的封装。 下面是本导入demo的模板,如果大家需要POI的导出模板,在文末有相关连接,大家自取。...
2022-04-24 20:30:13 703
原创 JVM之垃圾收集
知识储备 JVM 运行时数据区域 知识方向 JVM 垃圾收集 知识分片 GC 需要完成的三件事情 哪些内存需要回收? 什么时候回收? 如何回收? Java垃圾回收的特点 优点 Java开发人员不了解自动内存管理,内存管理就像一个黑匣子,过度依赖就会降低我们解决内存溢出、内存泄露等问题的能力。 不需要考虑内存管理; ..
2022-04-22 16:22:19 713
原创 什么时候回收?
垃圾回收—对象是否已死 判断对象是否存活—引用计数算法❶ 实现原理:给每个对象添加一个引用计数器,每当此对象被某个地方引用时,计数值+1;引用失效时,计数值-1。当计数值为0时,表示对象已经不能被使用。 引用计数算法的特点 实现简单、效率高,但是无法检测出循环引用❷。 判断对象是否存活-可达性分析算法❸ 可达性分析算法 在主流的商用程序语言如Java、C#等的主流实现中,都是通过可达性分析(Reachability ...
2022-04-22 16:19:00 485
原创 哪些内存需要回收?
在JDK1.2以前,Java中引用的定义很传统: 如果引用类型的数据中存储的数值代表的是另一块内存的起始地址,就称这块内存代表着一个引用。这种定义有些狭隘,一个对象在这种定义下只有被引用或者没有被引用两种状态。我们希望能描述这一类对象: 当内存空间还足够时,则能保存在内存中;如果内存空间在进行垃圾回收后还是非常紧张,则可以抛弃这些对象。很多系统中的缓存对象都符合这样的场景。在JDK1.2之后,Java对引用的概念做了扩充,将引用分为 强引用(Strong Reference) 、 软...
2022-04-22 16:14:12 159
原创 NullPointerException 处理规范 --- 记一次空指针引起的小组风波
All input is evil。一切的入参都是邪恶的,作为编码人员都无法掌握。如果不针对这些参数做校验,我们的程序就会出现这样或那样的问题。NullPointerException作为一个老生常谈的话题,我这里又把它拎出来了。本次讨论这个话题源于司内一个案例的NullPointerException的复盘。下面我贴一下相关代码。因为涉及到公司的业务源码,会有一定的隐饰。/** * 出现NullPointerException位置已经...
2022-04-06 17:25:18 139
原创 线程知识梳理初版
大家看下下面这段简历,基于对他人的保护打码了无关的内容。就是这一句"掌握多线程编程知识",如果自己不是对线程相关的知识有一定了解的话,就会把自己带入无限的深渊。下面咱们就分析一下针对线程,目前都会有哪些高频的面试题。下面这些问题大家简单看一下,自己先考虑一下怎么回答,最后咱们在给出一些参考。 线程的实现方式有哪些? 每种线程实现方式创建的线程是怎样启动的? 线程的状态都有什么? 创建线程池的方式有哪些? 说说线程池的状...
2022-03-28 17:15:42 537
转载 【POI Excel导出模板】
在当今互联网行业中,高并发、高性能、高可用是大家的追求。但是在我们服务的后台,总是会有一些需求是关于数据的处理,这就少不了数据表格的导入导出的功能。今天,我们这片博客主要展示一下用POI技术栈导出Excel表格的demo模板。本篇的Excel导出模板注释比较完善,我这里也就不多说啥了。---> 首先是我们xls的导出模板,上源码:/** * @Description : 导出Excel工具类 - 前端获取域名用:window.location.origin * - h...
2022-03-05 18:05:36 1411
原创 Mybatis的使用-入门
Mybatis简介Mybatis是一款优秀的基于ORM(Object/Relation Mapping-对象关系映射)的半自动轻量级持久层框架。它支持定制化SQL、存储过程以及高级映射。它可以整合数据库连接池解决使用JDBC出现的数据库连接频繁创建和释放、SQL语句及参数的硬编码以及结果集解析和封装的问题。JDBC问题总结JDBC存在的问题:1、数据库频繁创建连接、释放资源,造成系统资源浪费,从而影响系统性能; 2、SQL语句在代码中存在硬编码,造成代码不易维护;实际应用中代码变动.
2020-08-26 13:26:43 208
原创 通过Git实现代码review后在提交到原仓库
1)先点击下fork按钮,发现方框2中的路径变成了自己的git用户名后,再copy方框2中的路径2)打开git bash执行命令$ git clone git@gitlab.ssgm.net:weishuai/git-test.git此时fork仓库已经下载到了本地3)修改代码4)将代码提交到本地fork仓库$ git pull$ git-gui 在gui界面中提...
2018-12-24 12:10:38 3081
原创 MySQL 5.5升级到5.6
(一)mysql5.5卸载: mysql 5.5卸载参照此网站里的卸载方案(二)MySQL5.6安装:下载任意版本的mysql,本案例下载mysql-installer-community-5.6.42.0.msi版本,安装5.6.35 大家跟着图片进行傻瓜式安装就好,(三)环境变量配置:跟着里面...
2018-12-13 13:28:32 2136
原创 (二)Spark客户端的使用
此部分是接着第一部分而写的,有了这两部分的内容我们就可以模拟好友间发送消息了。spark客户端作用:我们可以通过客户端发送消息,实现消息拦截的现象展示。下载并安装Spark下载地址。在Openfire服务器页面新建两个用户修改Openfire配置为不允许加密:域名设置为服务器名称即可此时就可以都登陆了,将两者互加好友发消息。 ...
2018-12-06 17:08:49 2032
原创 (三)Openfire插件开发
此部分是Openfire的第三大部分,本部分的开发必须基于前两部分本文档基于消息拦截器插件功能进行开发。新建插件messageFilter:在openfire插件源码的plugins目录下新建文件夹messageFilter messageFilter文件夹下新建lib和src文件夹。lib包下放jar包,src文件夹下放要开发的插件源码。 将changelog.html、logo...
2018-12-06 16:57:37 518
原创 (一)Openfire源码导入以及安装
摘要:Openfire相关操作的准备部分,以后还有具体的使用教程本文档基于Idea编辑器编写,其他编辑器请自查资料。 1)先在openfire官网上下载源码。Openfire官网2)参照简书将源码导入idea中并启动项目3)参照阿里云--教程中心进行安装。...
2018-12-06 16:45:27 385
原创 【Java】读取配置文件
参考博客:http://bijian1013.iteye.com/blog/2307358PropertiesUtilpackage utils.properties;import java.util.Properties;import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.Concu...
2018-11-02 11:08:25 165
原创 gradle 配置 springboot 避免log4j 与 自带的 logback 冲突
// springboot-log4j (勿删) 去除springboot自带的logback,避免了与log4j的冲突(LoggerFactory is not a Logback LoggerContext but Logback is on the classpath) compile("org.springframework.boot:spring-boot-sta...
2018-09-02 23:22:40 6686 1
原创 gradle打包MyBatis的xml
正常情况下,只会打包java目录中的.java文件,其他类型的文件是不会打包到文件中。那么如何使其中的其他类型文件也打包进去呢?方法一:在buile.gradle里加入如下内容processResources {from('src/main/java') { include '**/*.xml'}}方法二:在build.gradle中加入如下代码task mapperXmlCopy(type...
2018-04-18 16:08:20 1933 4
原创 使用eclipse提交项目到GitHub
注: 准备工作:eclipse必须有eGit插件。高版本插件自带,低版本自己安装。help–install new software–work with中输入eGit,然后选中地址–add–接下来傻瓜式安装 1. eclipse中配置用户名和密码 Windows–perferences–Team–Git–Configuration2. eclipse中配置S
2017-12-15 09:38:36 998 1
原创 过滤器Filter详解
一、什么是过滤器(作用)?Filter过滤器是用来拦截浏览器对服务器上资源访问的一个接口,从而实现一些功能。拦截的资源可以是jsp、Servlet、静态图片、静态HTML等;可以实现的功能有URL级别的权限访问控制、过滤敏感词汇、压缩响应信息、全局编码过滤、自动登录等。二、编写过滤器步骤:1、编写一个类,实现Filter接口;2、重写Filter接口的三个方法;3、在web.x
2017-07-21 20:44:29 736
中文JDK_API_1.8和JDK_API_1.6
2018-03-02
python 导入cfg模块使用时报错
2023-04-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人