自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (2)
  • 收藏
  • 关注

原创 Mysql事务隔离级别,MVCC实现原理,当前读,快照读,Next-Key锁

一,事务1,什么是事务 数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。 Mysql数据库中,存储引擎是InnoDB时,支持事务,MyISAM存储引擎不支持事务。2,事务四大特性 ACID1、原子性(Atomicity):一个事务开启后,事务中的全部操作是不可分割的,要么全部完成,要么全部不执行。如果事务执行过程中...

2021-08-28 19:56:47 658

原创 Docker 搭建Redis集群,一主二从三哨兵,测试模拟master下线,哨兵投票选举。

Redis集群结构

2021-07-14 15:58:43 295

原创 Hashtable,ConcurrentHashMap与Collections.synchronizedMap关键源码

一,Collections.synchronizedMap1,构造 public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) { return new SynchronizedMap<>(m); }2.为什么线程安全

2021-06-08 10:49:52 1372 2

原创 Java8 HashMap关键源码阅读,以及Java7头插法与Java8尾插法理解。

一,HashMap的底层数据结构Java8 中HashMap的底层数据结构是数组+链表,当数组长度为64或者链表长度为8时,将会把链表转化为红黑树。1.HashMap的存取原理put方法 public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }final V putVal(int hash, K key, V value, boolean

2021-06-02 12:10:57 1220 1

原创 Roaringbitmap+Mysql构建标签--实际使用问题

Roaringbitmap结合Mysql实际使用过程中遇到的一些问题,包括技术问题和业务问题。

2024-08-04 23:23:43 321

原创 基于配置实现RoaringBitMap的交、差、并集处理

实现了基于配置的Roaringbitmap逻辑处理流程,可以自由编排Roaringbitmap的交、差、并集操作,得出目标标签数据。

2024-08-04 23:21:39 474

原创 RoaringBitMap处理海量数据内存diff

RoaringBitMap处理海量数据内存diff

2024-06-17 00:16:59 815

原创 mybatis-plus 和 mybatis-plus-boot-starter 引起的 org.apache.ibatis.binding.BindingException

最近改了一个之前的项目,为了简化CRUD加上了mybatis-plus,结果发现dao层接口找不到对应的xml文件了,出现了异常org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):XXX就很奇怪,因为之前引入mybatis-plus都是正常的,然后还检查了一遍接口和xml可能存在问题的地方,都是正常,最后回归还是觉得是引入mybatis-plus导致的,调查之后发现是pom文件导包的问题引起的

2022-05-04 12:27:21 1135 4

原创 ThreadLocal源码,看完也许你就理解了。

一,ThreadLocal是什么,用来做什么? ThreadLocal本质是一个代理工具类,ThreadLocal类里面有一个静态内部类ThreadLocalMap,通过ThreadLocal封装的 set(),get() 方法,可以实现对ThreadLocalMap中的数据进行存取操作,ThreadLocalMap的Key 与 this (即ThreadLocal自身) 相关,而每个Thread都维护着自己的ThreadLocalMap即threadLocals,所以通过ThreadLo...

2021-08-13 10:00:18 334

原创 Mysql日志: redolog,undolog,binlog,errorlog,slow_query_log,generallog,relaylog区别与作用

1,redolog: 重做日志 redolog用来确保事务的持久性,防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redolog进行重做,从而达到事务的持久性这一特性。 事务一旦开启之后就开始产生redolog,redolog并不需要等待事务提交之后才写入磁盘,而是事务的执行过程中,便开始写入redolog文件,redolog是按照顺序写入redolog文件中的。 事务开启之后redolog的逐步写盘是如何实现,重做日志有一个缓存区Innodb_l...

2021-07-25 21:13:58 875 1

原创 CentOS7 单机模拟搭建ElasticSearch集群 及 常见配置优化

单实例安装请看CentOS7 ElasticSearch与ElasticSearch-head的安装部署直接上配置吧,后面总结一下踩了什么坑端口设置节点 http.port transport.tcp.port master 9200 默认9300 slave1 9210 9310 slave2 9220 9320 一,master配置http.cors.enabled: truehttp.cors.allow-origi.

2021-07-17 20:38:04 391 2

原创 Docker 搭建 Mysql8 数据库的主从同步

一,mysql-master创建,并创建从库连接用户testSlave#--name指定运行之后的容器的名称为mysql-master;#--privileged指定了当前容器是否真正的具有root权限,所谓的root权限是指具有宿主机的root权限,而不仅仅只是在容器内部有root权限;#-v指定了容器中指定目录挂载到宿主机上的某个目录,这样做的目的在于防止容器中配置的数据丢失,因为docker容器在重启之后是不会保留前一次在其内部运行的相关数据的;#-p表示宿主机上的某个端口映射到docke

2021-07-17 10:15:00 415

原创 SpringBoot 基于Shiro + Jwt + Redis的用户权限管理 (三) 鉴权

项目Github地址:https://github.com/baiye21/ShiroDemo SpringBoot 基于Shiro + Jwt + Redis的用户权限管理 (一) 简介与配置 SpringBoot 基于Shiro + Jwt + Redis的用户权限管理 (二) 认证 SpringBoot 基于Shiro + Jwt + Redis的用户权限管理 (三) 鉴权 SpringBoot 基于Shiro + Jwt + Redis的用户权限管理 (四) ..

2021-07-06 11:59:11 7981

原创 SpringBoot 基于Shiro + Jwt + Redis的用户权限管理 (二) 认证

项目Github地址:https://github.com/baiye21/ShiroDemo SpringBoot 基于Shiro + Jwt + Redis的用户权限管理 (一) 简介与配置 SpringBoot 基于Shiro + Jwt + Redis的用户权限管理 (二) 认证 SpringBoot 基于Shiro + Jwt + Redis的用户权限管理 (三) 鉴权 SpringBoot 基于Shiro + Jwt + Redis的用户权限管理 (四) ..

2021-07-05 15:27:36 859

原创 SpringBoot 基于Shiro + Jwt + Redis的用户权限管理 (一) 简介与配置

项目Github地址:https://github.com/baiye21/ShiroDemo一,大体功能1.登录成功返回access_token 用户通过用户密码进行login,验证成功后生成一个access_token返回给前端,之后的请求都需要将access_token放在Request Header部Authorization字段中,才能正常访问。2.后续请求需携带access_token 将自定义的JwtFilter拦截器加入到了Shiro的过滤器中,没有在过滤...

2021-07-03 19:01:14 3082

原创 CentOS7 ElasticSearch与ElasticSearch-head的安装部署

一,相关网站ELK官网 https://www.elastic.co/ 官网文档 https://www.elastic.co/guide/index.html 中文手册 https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html 中文社区 https://elasticsearch.cn/ ELK-API https://www.elastic.co/guide/en/ela

2021-06-28 18:10:50 420

原创 JVM 运行时数据区

一,运行时数据区域程序计数器 Java栈(虚拟机栈)​​​​​​​ 本地方法栈 堆 方法区二,程序计数器程序计数器是当前线程执行的字节码的行号指示器。程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器,字节码解释器的工作就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖程序计数器来完成。每条线程都有一个独立的程序计数器。Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的

2021-06-23 10:50:48 83

原创 Linux find: missing argument to `-exec‘

使用find批量删除指定前缀的文件时,执行find -name '8017058d*' -exec rm {}\;命令报错:find: missing argument to `-exec'正确的命令如下:// 注意{} 与 \之间有空格find -name '8017058d*' -exec rm {} \;find -name'8017058d*' 当前文件夹下以8017058d为前缀的文件-exec rm 执行rm命令{} find查找出来的文件...

2021-06-22 09:42:49 8426

原创 Java8 ArrayList,LinkedList,Vector关键源码阅读

一,ArrayList1,ArrayList底层数据结构ArrayList的底层数据结构是一个数组,Object[] elementData。以下是ArrayListde一些主要参数 // 默认数组长度 10 private static final int DEFAULT_CAPACITY = 10; // 空实例的数组 private static final Object[] EMPTY_ELEMENTDATA = {}; // 初始化默

2021-06-05 17:19:23 110

原创 Centos下 GitLab 命令行修改用户密码

首先root登录linux服务器一,切换GitLab命令行gitlab-rails console -e production二,查找root用户,这里root用户的id是1

2021-05-10 12:43:40 646

原创 git 回退的三种方式

1、git reset --mixed 版本号 :此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息2、git reset --soft 版本号:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可3、git reset --hard 版本号:彻底回退到某个版本,本地的源码也会变为上一个版本的内容...

2021-05-07 12:22:56 32486

原创 SpringBoot2.1.0 + log4j 优化整合 slf4j + lombok @Slf4j

之前已经在项目里初步整合了log4j,SpringBoot2.1.0 + log4j 初步整合本文主要分以下几个部分实际应用角度log4j 和 整合slf4j 后记录日志方式的区别 整合slf4j 实际操作 引入lombok 使用@Slf4j注解进一步简化日志记录 MyEclipse 引入lombok后@Slf4j注解无效 slf4j 以及lombok 知识总结一,首先从实际应用的角度来观察下加入SLF4J后,记录日志方式的细微区别1,logger对象的获取 // ...

2021-04-09 15:32:28 781

原创 SpringBoot2.1.0 + log4j 初步整合

首先,有看到说Spring Boot 只有1.3.x和1.3.x以下版本才支持log4j的日志配置,1.3.x以上版本只支持log4j2。这里使用SpringBoot2.1.0没有进行特殊配置也成功简单整合了log4j,这里待调查环境: Windows10 MyEclipse SpringBoot2.1.0 log4j1.3.8.RELEASE一,排除Springboot中本身有自带一个spring-boot-starter-logging 日志输出包,并引入log4j这里一定...

2021-04-03 14:08:31 271

原创 SpringBoot 2.1.0 -多环境配置文件 No active profile set,falling back to default profiles:default

初始化SpringBoot项目后,顺利启动了,控制台报了No active profile set,falling back to default profiles:default大致是没有指定配置文件,调查后发现是,profile是Spring对不同环境提供不同配置功能的支持,可以通过激活、 指定参数等方式快速切换环境Profile。springboot的配置文件有以下application.propertiesapplication-dev.properties 开发环境applica

2021-04-03 13:03:39 1125

原创 tcping : ping ip地址+端口号

起因:windows下cmd ping命令无法ping某一个端口。对策:使用tcping工具了,Windows没有自带这个小工具,需要自己下载下来,放到 C:\Windows\System32 下。tcping工具下载地址 https://elifulkerson.com/projects/tcping.php 之后将 tcping.exe 放到 C:\Windows\System32 下。使用 tcping ip/域名port...

2021-03-29 09:25:25 3752

原创 Git仓库迁移,包括分支,日志等

前言本来项目git仓库在公网服务器上,之后公司内部搭好了项目服务器,所以就把公网的git仓库迁移回来。首先需要在新的git仓库创建好相应的项目。主要用到以下四条命令git clone --mirror <URL to my OLD repo location>cd <New directory where your OLD repo was cloned>git remote set-url origin <URL to my NEW repo locat

2021-03-23 12:17:52 289

原创 Centos7 搭建GitLab

一,配置yum源vim /etc/yum.repos.d/tsinghua.repo内容如下[gitlab-ce]name=Gitlab CE Repositorybaseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/gpgcheck=0enabled=1二,yum 软件安装包缓存,这个可能会消耗一些时间yum makecache三,安装相关依赖 yum insta..

2021-03-23 09:59:08 170

原创 NodeJS对接Microsoft Graph API操作用户Outlook日历事件(三)

前言通过Microsoft Identity Platform获取访问令牌之后,就可以在http头部添加Authorization,调用Microsoft Graph API去操作用户的outlook日历了。其实各种请求的说明还是官方API文档比较详细,比如outlook事件的获取,附上连接Microsoft Graph API 日历事件获取这里只是总结以下开发时的一些注意点,主要有以下方面:获取用户outlook日历事件(增删改查) 获取用户事件颜色设定 共享会议与个人事件先看下..

2021-03-22 15:59:56 779 5

原创 NodeJS对接Microsoft Graph API操作用户Outlook日历事件(二)

通过Microsoft Identity Platform获取访问令牌,包括用户认证和无用户认证方式。前言一开始是通过调用微软的https://login.microsoftonline.com,让用户自己输入微软账号密码完成登录认证,认证之后重定向回网页继续操作,后面客户说不一定所有人都记得自己的微软账号密码,要求改成自动登录,之后就改成了完全无用户的认证,确实实现了group内所有成员的信息获取,但是客户考虑这样权限太大,可访问的信息太多,所以最后还是改成了通过用户认证,只不过认证用户是grou

2021-03-20 16:08:40 861

原创 NodeJS对接Microsoft Graph API操作用户Outlook日历事件(一)

Microsoft Azure 注册可能会使用到的网站Microsoft Azurehttps://azure.microsoft.com/zh-cn/features/azure-portal/Microsoft graph 官方文档https://docs.microsoft.com/zh-cn/graph/api/overview?view=graph-rest-1.0Microsoft graph 官方接口测试工具https://developer.microsoft.com/zh

2021-03-20 14:22:01 1104

原创 每日一题LeetCode 1561. 你可以获得的最大硬币数目

1561. 你可以获得的最大硬币数目解题思路一,看完题目第一个想法就是需要对数组进行排序,之后取三等分,一次就是最小堆,中间堆,最大堆,取中间堆。结果发现并不是最优解。关键点在于,你取走的硬币堆可以是最大堆里面的硬币堆,只要保证有比你取的硬币堆更大的被Alice取走就行,而Bob固定,永远从最小堆里面取硬币就可以了。示例3的分析举例所以排序后按照从大到小的顺序遍历数组中的元素,每次遍历2个元素,其中较小的元素即为这一轮取走的硬币数量。循环遍历次数为length/3。解题代码.

2020-09-29 11:04:31 321

原创 Mybatis generator的简单使用

示例环境:Eclipse+Springboot+Mybatis+Mysql一,pom.xml引入相关依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency&g...

2020-07-28 17:35:02 719 2

原创 Mybatis的一级缓存和二级缓存

Mybatis的一级缓存一级缓存是SqlSession级别,默认开启并且不能关闭。操作数据库时需要创建SqlSession对象,对象中有一个HashMap存储缓存数据,不同的SqlSession之间缓存的数据区域互不影响。每个SqlSession中持有了Executor,每个Executor中有一个LocalCache。当用户发起查询时,MyBatis根据当前执行的语句生成MappedStatement,在Local Cache进行查询,如果缓存命中的话,直接返回结果给用户,如果缓存没有命中的话,.

2020-07-23 15:19:18 137

redis-4.3.1.gem

2021最新版本 redis-4.3.1.gem 下载地址:https://rubygems.org/gems/redis

2021-07-13

空空如也

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

TA关注的人

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