妖四灵.Shuen
码龄5年
  • 1,379,603
    被访问
  • 159
    原创
  • 109,396
    排名
  • 63
    粉丝
关注
提问 私信
  • 加入CSDN时间: 2017-03-04
博客简介:

wangxuelei036的博客

查看详细资料
  • 5
    领奖
    总分 1,020 当月 58
个人成就
  • 获得223次点赞
  • 内容获得76次评论
  • 获得757次收藏
创作历程
  • 23篇
    2021年
  • 136篇
    2020年
  • 2篇
    2018年
  • 4篇
    2017年
成就勋章
TA的专栏
  • 工具
    22篇
  • 容器化
    10篇
  • 框架
    16篇
  • 分布式
    7篇
  • 大数据
    2篇
  • 微信
  • Linux
    3篇
  • springCloud
    3篇
  • java基础
    12篇
  • JVM
    2篇
  • 其他
    3篇
  • mycat
    1篇
  • 计算机网络
    4篇
  • 数据结构
    3篇
  • Elasticsearch
    12篇
  • 并发编程
    5篇
  • redis
    25篇
  • 数据库
    31篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

如何从request中获取域名

//获取是http 还是 https,如果有通过nginx就行转发,记得配置带上sceme信息String scheme = request.getScheme();System.out.println("scheme = " + scheme);//获取域名 String serverName = request.getServerName();System.out.println("serverName = " + serverName);//组装成基础urlString basePat.
原创
发布博客 2021.09.26 ·
649 阅读 ·
0 点赞 ·
0 评论

mysql 查询账号创建

一. 创建用户命令:CREATE USER '用户名'@'允许的主机' IDENTIFIED BY '密码';说明:username:你将创建的用户名 host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符% password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器例子:CREATE USER 'mysqluser'@'localhost' IDENTIFIED
转载
发布博客 2021.04.09 ·
157 阅读 ·
0 点赞 ·
0 评论

2021-04-02

在用复制账号对mysql salve管理过程中,使用哪些权限合适?首先看一下mysql官方提供的权限表: 权限 列 上下文 CREATE Create_priv 数据库、表或索引 DROP Drop_priv 数据库或表 GRANT OPTION Grant_priv .
转载
发布博客 2021.04.02 ·
40 阅读 ·
0 点赞 ·
0 评论

java中如何查看一个实例对象的大小

绕开所有的介绍,直接上代码(1)引入相关的工具依赖 <dependency> <groupId>com.carrotsearch</groupId> <artifactId>java-sizeof</artifactId> <version>0.0.5</version> </dependency>(2)关键的类/** * Estimates the size (m
原创
发布博客 2021.03.15 ·
639 阅读 ·
1 点赞 ·
0 评论

Curator 源码初探(四)读写锁

InterProcessReadWriteLock lock = new InterProcessReadWriteLock( client, "/locks/lock_01"); lock.writeLock().acquire(); lock.readLock().acquire(); lock.readLock().release(); lock.writeLock().release(); 创建读写锁,底层是基于InternalInterProcessMutex,创.
原创
发布博客 2021.02.28 ·
99 阅读 ·
0 点赞 ·
0 评论

Curator 源码初探(三) 非重入锁

RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3); CuratorFramework client = CuratorFrameworkFactory.newClient( "127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183", retryPolicy); client.start(); InterProcessSemaphoreMutex lock = n.
原创
发布博客 2021.02.28 ·
54 阅读 ·
0 点赞 ·
0 评论

Curator 源码初探(二) Semaphore

RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3); CuratorFramework client = CuratorFrameworkFactory.newClient( "127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183", retryPolicy); client.start(); InterProcessSemaphoreV2 semaphore = n.
原创
发布博客 2021.02.28 ·
105 阅读 ·
0 点赞 ·
0 评论

Curator 源码初探(一) 公平锁

Curator 是一个基于ZK实现的分布式锁框架RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3); CuratorFramework client = CuratorFrameworkFactory.newClient( "127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183", retryPolicy); client.start(); InterP.
原创
发布博客 2021.02.28 ·
145 阅读 ·
0 点赞 ·
1 评论

Redisson 源码初探(十一) CountDownLatch

我们都知道JDK 并发包里面有CountDownLatch 类,这个类是干嘛用的?简单的理解就是,我们主线程设置一个条件,然后阻塞,等其他线程去将条件达成,就可以让主线程继续执行下去当然这里的条件就是数字那么Redisson 是如何实现的? public static void main(String[] args) throws Exception { //构建一个配置信息对象 Config config = new Config(); .
原创
发布博客 2021.02.27 ·
169 阅读 ·
0 点赞 ·
0 评论

Redisson 源码初探(十) Semaphore 模式

redisson 内部实现的还有一种semaphore 信号量的模式,这个是个什么模式?大白话说就是资源池中存在一部分共享的资源,多个线程可以从资源池里面去获取资源,如果资源被获取完,那么其他向获取资源的线程就需要等待,别人释放资源。其实逻辑很清晰(1)设置资源池的数量 也就是设置对应的semaphore key的 value值(2)尝试获取资源,如果足够 对资源池key 对应的value - 数量,如果不足够,进入死循环,不停的尝试获取(3)释放资源,其实就是将对应的key的value.
原创
发布博客 2021.02.27 ·
444 阅读 ·
0 点赞 ·
0 评论

Redisson 源码初探(九)ReadWriteLock 读写锁

读写锁得概念我们就不再赘述了public static void main(String[] args) throws Exception { //构建一个配置信息对象 Config config = new Config(); config.useClusterServers() //定时扫描连接信息 默认1000ms .setScanInterval(2000)
原创
发布博客 2021.02.27 ·
492 阅读 ·
0 点赞 ·
0 评论

Redisson 源码初探(八) RedLock

本篇主要讲解Redisson中得RedLock实现,但是很多知识因为和前面一样,就直接省略了RedLock 原理理一下:(1)获取当前时间戳,单位是毫秒(2)和RedissonMultiLock一样,一次轮询尝试去每个机器上创建锁,需要加一个超时时间,如果超过一定时间就表示获取锁失败(3)尝试在大多数节点上建立一个锁,如果3个节点就要求创建 n/2 + 1 = 2个节点上创建锁(4)客户端计算建立锁的时间,如果在规定时间内,建立锁成功,就代表加锁成功(5)如果建立锁失败,那么就会依次
原创
发布博客 2021.02.27 ·
119 阅读 ·
0 点赞 ·
1 评论

Redisson源码初探(七) MutiLock

MutiLock 说明东西?就是可以将多个锁合并成一个大锁,对一个大锁进行统一的申请和释放。其实就是一次性的去锁定多个资源,然后处理业务,最后统一释放我们看源码之前先思考一下,这个如果基于之前的一些思想,如何去实现这个功能????难道是就是对多个所RedissonLock 依次去加锁?所有的锁加锁成功就代表MultiLock加锁成功?我们还是先看看Redisson如何使用,也就是我们看源码的入口对把public static void main(String[] args) throws E.
原创
发布博客 2021.02.27 ·
142 阅读 ·
0 点赞 ·
0 评论

Redisson 源码初探 (六)公平锁

因为Redisson 默认是非公平锁,client 端互相一起争抢,现在我们继续研究公平锁,为什么要研究?研究分布式锁 不仅仅要研究最基础的锁对吧,我们要把一系列的非公平锁 公平锁 读写锁 RedLock锁,Semaphore CountDownLatch 一系列的研究完,才算真正的研究了分布式锁,对吧那么公平锁呢,我们知道公平锁需要维持一个有序的获取锁的顺序,可以使用队列也可以使用一些其他的机制,那么我们慢慢来看Redisson的公平锁是如何实现的?先找到入口 public static .
原创
发布博客 2021.02.26 ·
444 阅读 ·
0 点赞 ·
0 评论

Redisson 源码初探(五)获取锁超时 以及 锁超时自动释放

获取锁超自动发现,方法有所改变,不再是使用lock.lock(),而是使用lock.tryLock()public static void main(String[] args) throws Exception { //构建一个配置信息对象 Config config = new Config(); config.useClusterServers() //定时扫描连接信息 默认1000ms .
原创
发布博客 2021.02.24 ·
2384 阅读 ·
1 点赞 ·
0 评论

Redisson 源码初探(四)释放锁

@Override public void unlock() { try { //unlockAsync 是异步化的释放锁 //这里的get 包裹是将异步变为同步 get(unlockAsync(Thread.currentThread().getId())); } catch (RedisException e) { if (e.getCause() instance..
原创
发布博客 2021.02.23 ·
427 阅读 ·
0 点赞 ·
0 评论

Redisson 源码初探(三)可重入锁 以及 互斥阻塞

Redisson 的代码质量相当的不错,从抽象设计 代码的思路 和 顺序 读别人源码都非常的清晰,不想Spring Cloud 的eureka 和 hystrix 读起来 相当的混乱。可重入锁对吧,就是一个线程加锁两次,那么redisson 又是如何实现的呢,其实这里还是要去看lua脚本lock()加锁的逻辑是一样的,最本质的区别再与lua脚本<T> RFuture<T> tryLockInnerAsync(long leaseTime, TimeUnit unit,
原创
发布博客 2021.02.23 ·
545 阅读 ·
1 点赞 ·
0 评论

Redisson 分布式锁(二)lock 续约操作以及对应的lua脚本

private <T> RFuture<Long> tryAcquireAsync(long leaseTime, TimeUnit unit, final long threadId) { if (leaseTime != -1) { return tryLockInnerAsync(leaseTime, unit, threadId, RedisCommands.EVAL_LONG); } //这里是什么?.
原创
发布博客 2021.02.23 ·
668 阅读 ·
0 点赞 ·
0 评论

Redisson 源码初探 (如何上锁 lua脚本的使用)

Redisson的基本使用pom 依赖<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.8.1</version> </dependency> public static void main(String[] args) throws.
原创
发布博客 2021.02.22 ·
799 阅读 ·
0 点赞 ·
0 评论

git warning:not all local changes may be shown due to an error:

下午敲完代码,准备提交,突然一行提示,warning:not all local changes may be shown due to an error:心头一紧,我的代码怎么没有提示修改呢?不会吧但是确实我本地代码是已经修改过了,那么肯定估计是idea 又抽风了 ,咋办呢。我先自己先备份一份代码在本地,以防万一我查了下网上的操作解决方案:选择File --> settings --> Version Control --> Subversion取消选中 .
原创
发布博客 2021.01.26 ·
1225 阅读 ·
2 点赞 ·
2 评论
加载更多