- 博客(51)
- 资源 (7)
- 收藏
- 关注
原创 关于Raft算法的共识性算法考究
文章目录前言Raft算法选举Raft算法数据一致性前言Raft算法为主从结构, 其分布式一致性来源于集群的写全委托给Leader, Leader进程自身保证顺序与一致性, 并发起投票要求Follower追加写, 一旦过半赞成写请求(同时附加写的动作), 则该写完成。.需要注意的是, 集群的写是线性一致性/强一致性的, 但是集群的读却是顺序一致性的。这两天想到一个问题, raft算法的成员共识性问题。我之前的理解是:Raft有共识性问题。 当未实现所有日志提交的Follower,之后被选举为新
2020-05-11 18:01:27 983
原创 Alibaba Sentinel 限流、熔断实现详解
文章目录前言限流快速失败限流(普通限流)滑动窗口热加载限流(WarnUp)前言这篇文章是 Alibaba Sentinel熔断降级/限流框架不完全解析 的附属文章。讲的是其限流、熔断的实现。本文主要讲算法实现, 跟Sentinel关系不大, 无需对Sentinel加以了解本文会辅以部分源码解析, 源码在git 上: https://github.com/alibaba/Sentinel...
2019-12-25 19:16:26 1646
原创 Java synchronized之类锁/对象锁
**Java的 `synchronized` 锁的是对象,也只锁对象**。对象锁是基于对堆内存内对象的头部加锁信息; 类锁是基于对类对应的 java.lang.Class对象加所信息; 特别的, synchronized(this) 是对this所对应的对象加锁。需要特别注意的事是, 根据JMM的规范, synchronized 块里面的对象, 具有内存可见性。
2017-11-03 18:24:15 10787
原创 Java中的公平锁和非公平锁实现详解
Java语言中有许多原生线程安全的数据结构,比如`ArrayBlockingQueue`、`CopyOnWriteArrayList`、,它们的实现方式并非通过`synchronized`关键字,而是通过`java.util.concurrent.locks.ReentrantLock`来实现。 本博客着重讲述ReentrantLock的可重入性原理、公平/非公平实现、内存可见性原理。
2017-04-24 16:09:18 31122 11
原创 Spring Bean的生命周期
Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解Spring Bean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也是 ApplicationContext中Bean的生命周期。而实际上BeanFactory也是差不多的,只不过处理器需要手动注册。
2017-03-07 13:36:29 6526 1
原创 SpringWeb Flux + Netty,基于Reactive线程切换(教程)
这里写自定义目录标题前言及问题描述Netty的EventLoopEventLoop怎么承担负载的Netty Server运行阶段Netty Client运行阶段分拆Netty Http Client前言及问题描述我们的项目是 Spring Cloud的,使用netty做Http容器。 Web形式是 Spring Web Flux, 自然而然的就用上了Reactive。netty在性能上非常优异, 比如它的内存管理、nio/epoll(linux)。 它只需要很少的线程(epoll/noi线程, wo
2022-03-08 18:24:36 2359
原创 Welcome 松潘虎牙
景色挺棒, 这儿有一些文章https://www.sohu.com/a/320489412_99900956https://www.mafengwo.cn/gonglve/ziyouxing/211432.html。 照片往下看↓
2020-08-10 20:22:59 439
原创 Redis Cluster集群增容和缩容
文章目录前言基于slots槽的redis cluster增容slots基本概念slot 在redis结点上的位置并不固定slot迁移四步走搭建redis cluster, 并手动操作增容下载redis安装启动多个redis组装redis cluster扩容实操缩容前言本文以手动操作redis cluster集群为例, 讲解并证明redis cluster的增容和缩容。redis分三种模式:主从主从 + Sentinel(哨兵)cluster主从模式不是分布式一致性里面的主从,需要手动指定M
2020-05-10 14:15:04 522
原创 JDK1.8-ConcurrentHashMap的 rehash 扩容逻辑
文章目录前言ConcurrentHashMap resize/rehash1. 什么时候resize2. 怎么resizeHashMap resize/rehashRedis resize/rehash前言此乃随笔, 用于记录ConcurrentHashMap的扩容逻辑, 这位大神 JDK1.8–深度分析CONCURRENTHASHMAP原理分析 的文章给了我莫大的鼓励。顺带, 记录了Has...
2020-04-01 02:12:40 1725
原创 Alibaba Sentinel熔断降级/限流框架不完全解析
Alibaba Sentinel熔断降级/限流框架不完全解析关于Alibaba Sentinel熔断降级/限流框架一段话的Sentinel介绍新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的...
2019-07-25 11:05:30 5589
原创 Mybatis 实现原理之 一二级缓存
文章目录引言引言对Mybatis一直都没有做实质的记录。 现记录Mybatis的一些实现细节。组成一个系列。本片文章讲述的是Mybatis是如何无感知的让用户使用到一二级缓存,以及一二级缓存的实现细节和实现原理。结论:Mybatis下文通过代码DEMO的展示, 以及源码的解说介绍JDK动态代理, 和Mybatis对其的应用。...
2018-10-15 15:19:20 5433 1
原创 Mybatis 实现原理之 JDK动态代理和XML语句执行
用Mybatis+Spring框架,通过XML的编写和接口的编写,实现数据库的CRUD。 这个操作分为如下两拨:1.解析XML, 获取每条SQL语句;组装id(namespace + 每个SQL的id)。2.扫描Mybatis的Mapper接口, 得到id(接口名称 + 方法名称)。在执行Mapper的方法的时候:1.得到注入的Spring Bean(这个Bean是Mybatis通过JDK动态代理生成的)。2.执行Bean方法(通过Bean里面的id找到具体的SQL,并执行)。
2018-10-10 20:33:38 11170 1
原创 Java如何访问Jar包内部的Jar包资源
引言Java 命令Java 启动进程的命令的组成Java 命令的执行过程Java 传参中的 classpath 不生效Java 的Jar包 的类加载如何使得Java程序读取Jar包内部的Jar包Spring Boot的Jar包内类加载原理Java启动命令推荐方案不处于 Maven 仓库环境下处于 Maven 仓库环境下引言日常撸代码,肯定会遇见这样...
2018-05-21 18:23:00 10664 1
原创 判断一个文件是不是UTF-8编码的文本文件的Java实现
前言 为什么写这篇博客?闲来没事看到了老代码,发现有一段的文件是否未UTF-8编码的实现很有趣。 同时联想到这段代码的学习者可以通过这段代码去了解 字符集 和 编码方式。 因此供给大家参考。 这篇博客的功能?这篇博客针对于磁盘上的一个文件(可能是图片,也可能是视频、音乐、Excel、可执行程序等), 判断它是不是一个 UTF-8格式的文本文件 这篇博客全面么?...
2018-03-09 17:57:41 3433
原创 Java NIO 随笔
NIO和BIO是同源的,且NIO也是基于BIO的。BIO的几个问题,NIO在技术层面上做了规避。可以把 NIO理解为BIO的聚合,把IO操作交给了操作系统去做。阻塞性对比:NIO的不阻塞在于: NIO是等到数据拷贝已经完毕之后才会对数据进行处理。BIO的阻塞在于:BIO对于每次的数据请求都会立即处理。> 由此,NIO可以处理更多的数据,但是每个数据块不要太大(会OOM); BIO可以处理少量但是更大的数
2017-12-07 17:25:44 680
原创 手动清理window的右键菜单和win10启动项
注册表更改桌面空白处-新建鼠标右键文件鼠标右键文件夹删除值鼠标右键IE浏览器注册表更改注意!!! 操作之前需要备份!!!桌面空白处->新建HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\ShellNew注意此处的修改往往会在关闭注册表编辑器之后立马失效。
2017-06-27 12:50:30 38662 2
原创 Linux下源码安装 mysql5.6.tar.gz
前言前期准备安装前言很快迁移到 mysql 5.6版本。 安装却和之前的方式有些不一样 做下记录。5.6的源码安装用到的是cmake, 需要事先安装完毕。 中间遇到的依赖问题都可以用 包管理器 search 包`。 然后再安装依赖报。记录下安装步骤前期准备# uname -aLinux 2.6.32-642.1.1.el6.x86_64 #1 SMP Tue May 31 21:57:0
2017-06-22 12:46:11 1134
原创 Java世界产品的Maven包命名展示
为什么写这个博客Apache工具的Maven的命名规则Apache的一些开源组件介绍servlet-api和javaxservlet-api为什么写这个博客之前在百度的时候有个高T, 很牛逼的级别啦。 我跟他说到用到的 apache common 包,并展示给他看。 结果他很诧异。认为我展示的是错误的, 在他的记忆理apache的maven的命名方式是这样的: <dependen
2017-06-12 17:35:05 777
原创 Python基础学习-两小时上手Python
前言代码展示前言闲来没事学学Python。 总共花了两个小时, 硬是从无到有学会了Python的基本语法。 顺便写了冒泡、快排和二分查找。 注释很详细, 可以凭借注释很快的学会Python代码展示如下代码介绍了Python的部分基础语法,比如 代码块格式、 运算法则、 if else for等基本运算、 三目运算、注释、引用、数组 等基本语法。代码做了下面几件事HelloWorld定义一个数组
2017-04-25 17:35:47 927
原创 图解Java类加载机制
前言类加载的概述双亲委派加载机制类加载的隔离机制contextClassLoaderSPI用处找文件用处类加载的顺序顺序概述类加载的一般方式类加载的触发点类的实例化附录前言网上有很多的Java类加载机制的介绍, 但是对于初学者而言看起来都太过于深疏, 因此在本文用图解和例子的方式为本文的读者介绍Java的类加载机制。类加载的概述双亲委派加载机制委派模型介绍: 双亲委派模型
2017-03-24 11:02:01 8678 2
原创 ElasticSearch安装小Tips
正式安装CASE记录不能以root用户运行内核版本要求进程持有文件句柄数超标虚拟内存数量超标内核安全支持正式安装es官网下载 安装只需要解压并执行sh bin/elasticsearch 即可。局域网内只要是在一个网段里可以通过cluster_name自动发现。 安装成功标志为:# curl 127.0.0.1:8765{ "name" : "O5vhUXm", "clus
2017-02-21 21:35:23 1251
原创 Linux文件系统及文件储存方式
闲来无事复习了下Linux文件系统的基本构成,做下记录。主要涉及的内容有:Ext文件系统的记录方式;Linux文件系统的访问方式;rm删除的原理以及恢复方案。
2017-02-08 20:05:54 5212 1
原创 Spring PropertySourcesPlaceholderConfigurer工作原理
前言Spring生命周期元素注入时机数据来源配置Bean方式Spring标签方式引申数据源配置Spring Value注入流程前言Spring提供配置解析功能,就是这种:<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-meth
2017-01-10 15:05:23 15739 1
原创 mvn编译java和groovy
引言解决引言准备自己编译Spring-Bean学习学习。 解压并编译mvn仓库里面的org/springframework/spring-beans/4.2.5.RELEASE/spring-beans-4.2.5.RELEASE-sources.jar 时出现如下两种现状:解压时:多个GroovyBeanDefinitionWrapper.java 和 GroovyBeanDefinition
2017-01-04 20:31:31 1006
原创 Docker学习二(部署一个可以自由获取环境变量的SpringWeb)
安装不是目的, 应用才是王道。 发布一个快速部署的Web容器才是Docker的用处。当前有需求:Tomcat启动在Docker容器中,它需要告知注册中心自己暴露对外的Host以及Port。 传统的方式只可以获取到Tomcat启动时绑定的端口, 需要获取Docker对外映射的宿主机的Host以及开放的端口。
2016-05-16 17:48:36 3625
原创 Docker学习一(安装docker并构建一个可ssh登录的镜像)
为什么使用Docker?因为公司的服务将要部署到基于Docker的应用上。 . . . 当然不是这样咯, Docker的好处可以多多通过搜索引擎查询得到, 用过的人都说好。Docker的镜像可以随意拷贝分发, 需要做的仅仅是可以连接的网络。
2016-05-15 15:38:54 2978
原创 Zookeeper分布式锁小示例
目录 一、引言1.1 为何用分布式锁1.2 怎么用分布式锁1.3 Zookeeper分布式锁简介二、Zookeeper使用案例三、Zookeeper分布式锁小示例3.1 源码展示:3.2 轻量解读3.3 结构重构4. 尾注(2018年9月12日)4.1 本文第二三节的案例描述以及代码分析是错误的!!!4.2 Zookeeper 的分布式锁实现原理...
2016-04-21 11:23:25 1742
原创 RSA加密小示例
1. 前言网上有很多关于RSA的介绍,大神阮一峰 http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html 都写了相关的博客。 为了引出 HTTPS, 编写一个小示例。需要注意的点:欧几里得算法:辗转相除求最大公约数。 如果最大公约数为1, 则两数互素: /** * 欧几里得定理
2016-03-30 15:45:08 597
原创 Java int[] 跟 byte[] 的相互转化,可还原
1.byte转intjava中byte八个字节,int三十二个字节, 因此只需要在前面补24个0即可。使用int强转即可搞定。 byte b = -3; int i = b;得到int。因为int类型刚好占用byte类型的四倍空间, 因此可以将byte数组转化为Int数组, 使用特定的方式标记。例如: 如果byte数组长度刚好是4的倍数, 可以
2016-03-29 19:10:44 837
原创 Linux Ftp上传文件变更(MD5值变更)
最近遇到一个很棘手的问题. 问题很简单:一般情况下使用ftp上传就是这个样子:如下脚本:$ vim copy.sh #! /bin/bashremote_path=远程地址if [ -f $1 ]thenftp -i -n <<UPLOADopen ftp服务器user 账户名 密码put $1 $remote_path$1quitUPLOADfi
2015-11-24 13:41:33 4062
原创 本机搭建dubbo服务并依赖zookeeper注册中心
搭建dubbo服务的方式是参照这篇博客上编辑做的。http://blog.csdn.net/qduningning/article/details/41445937其中替换内容为zookeeper中心。此处分享pom.xml:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt
2015-03-06 18:47:43 3222
原创 Spring自定义注解实现Controller对象获取
Spring原生提供 @RequestBody用于将客户端传递的Json对象转化为Java Object。 所依赖的就是RequestMappingHandlerAdapter。 它已经被集成在<mvc:annotation-driven /> 之中, 在Spring启动的时候自动注册。但是往往在业务流程中有需求对部分自定义注解进行配置 ,从而实现在Controller中配置一个注解便得到自定义参数的功能。该项功能依赖于RequestMappingHandlerAdapter,需要在"customArgu
2015-01-30 16:46:52 4976 2
原创 centos6.5编译open-jdk
引言最近闲来无事,便编译起open-jdk。sun-jdk有自己的开源规范。因此只能使用它的另一个版本类型的来编译。编译三个部分:jvm、open-jdk、javac等。直接一次性编译全部可能会有多种问题。因此最好还是自己一个一个编译。完了再整体试一次。编译完了就可以自由的改写其中的源码,使之往自己想的地方走。编译过程中环境和依赖非常重要。需要安装各种依赖包:gcc全套、cups、
2015-01-21 12:44:53 1583
原创 linux小命令积累
命令关闭端口sudo iptables -A INPUT -p tcp --dport 25 -j DROP引申:sudo iptables -A OUTPUT -p udp --dport 25 -j ACCEPT编程数组
2015-01-21 12:17:45 577
原创 linux安装bigfish
前言最近一段时间无聊,整ofbiz来使。可是发现并不那么好用,就用它的一个衍生版bigfish吧。主站:http://bigfish.salmonllc.com/bfHome.html目的服务器:Cent OS$ uname -aLinux iZ2536fwftfZ 2.6.32-431.29.2.el6.x86_64 #1 SMP Tue Sep 9 21:36:05 UT
2014-12-29 15:18:23 1678
原创 一段代码和多幅图让你明白http
一直以来有对http很多不明白的地方。请教了很多人,自己也做了不少的测试。在此贴上我的心得。有砖望轻拍。源码:package socket;import java.io.*;import java.net.*;public class MyServer { public static void main(String[] args) throws IOException
2014-08-26 19:33:48 1207 1
转载 http、TCP/IP协议与socket
http、TCP/IP协议与socket之间的区别 网络由下往上分为: www.2cto.com 物理层-- 数据链路层--网络层-- IP协议传输层-- TCP协议会话层--表示层和应用层-- HTTP协
2014-08-25 16:47:06 485
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人