- 博客(51)
- 资源 (21)
- 问答 (1)
- 收藏
- 关注
原创 Nacos 1.4.1注册中心源码深度解析-集群节点同步
新增节点的数据同步肯定是在服务注册时来做的了。入口在com.alibaba.nacos.naming.consistency.ephemeral.distro.DistroConsistencyServiceImpl#put。入口在com.alibaba.nacos.core.distributed.distro.DistroProtocol#DistroProtocol。同步的入口在 com.alibaba.nacos.naming.cluster.ServerListManager#init。
2023-03-11 23:55:39 346
原创 Nacos 1.4.1注册中心源码深度解析-服务下线
服务下线比较简单,入口在com.alibaba.nacos.naming.controllers.InstanceController#deregister。将实例从实例列表中移除,然后更新服务实例。consistencyService.put 在服务注册有说过,不再重复说了只不过底层做的是DELETE操作。
2023-03-11 23:51:36 294
原创 Nacos 1.4.1注册中心源码深度解析-健康检查
这样就对服务器的节点进行了过滤,只有一台才能执行健康检查。搞了一个定时任务,延时5s执行,然后每隔5s一次。我们来看下这个定时任务com.alibaba.nacos.naming.healthcheck.ClientBeatCheckTask#run。服务注册时会调用到com.alibaba.nacos.naming.core.Service#init。我们在回头看下com.alibaba.nacos.naming.healthcheck.ClientBeatCheckTask#run。
2023-03-11 23:47:06 259
原创 Nacos 1.4.1注册中心源码深度解析-服务心跳
客户端在服务注册的时候,会进到com.alibaba.nacos.client.naming.NacosNamingService#registerInstance(java.lang.String, java.lang.String, com.alibaba.nacos.api.naming.pojo.Instance)服务端的入口在com.alibaba.nacos.naming.controllers.InstanceController#beat。这样客户端的服务心跳就被服务端处理好了。
2023-03-11 23:38:44 255
原创 Nacos 1.4.1注册中心源码深度解析-服务发现
服务发现在scheduleUpdateIfAbsent方法中,添加了一个UpdateTask的定时任务。这里的核心还是调用上面的updateService方法,从服务端获取最新的列表更新到缓存。在getServiceInfo的底部,有一个定时任务的方法,会定时从服务端拉取最新的服务列表,更新到缓存。首次进入可能是获取不到的,所以这里就会调用updateServiceNow方法进行更新服务列表。客户端的实现比较简单,我们在来看下服务端。这里就是服务注册的时候注册的实例列表了。OK,服务端的服务发现更简单,
2023-03-11 23:32:25 277
原创 Nacos 1.4.1注册中心源码深度解析-服务注册
Nacos 1.4.1注册中心源码深度解析-服务注册服务注册Notifier任务的执行如何防止多节点读写并发冲突(COW 写时复制)ServiceChangeEvent事件发布com.alibaba.nacos.naming.core.Service#onChange 我们只看下核心 --> com.alibaba.nacos.naming.core.Service#updateIPs --
2023-03-11 23:24:19 794
原创 深度解析Spring Boot自动装配原理
源码解析 1@SpringBootApplication 1@SpringBootConfiguration 2@EnableAutoConfiguration 3@ComponentScan 20自定义starter 23命名规范 24工程结构 24实战示例 24创建工程 24修改pom 26编写业务逻辑 31添加spring.factories 35测试 35
2023-03-08 21:33:21 1537 1
原创 深度解读依赖注入DI源码
spring-framework-5.3.10 版本依赖注入代码的入口在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#populateBean 。如果想搞清楚为什么是这里需要去学习下Bean的生命周期,这里就不介绍了。使用@Autowired注解,在程序执行时会调用populateBean方法中的postProcessProperties最终会进入到org.springframework.beans.
2023-02-19 00:01:01 456
原创 一文精通控制反转(IOC)和依赖注入(DI)
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。举个例子来说明一下,比如你要修理汽车,在修理的过程中你需要螺丝刀、扳手、钳子。每次要用得时候你都要自己去找。而容器就相当于一个助手,他会帮你管理螺丝刀、扳手、钳子,需要的时候你只要喊一下给我一把十字的螺丝刀,助手就会准备好并交到你手上。
2023-02-18 23:32:22 1733
原创 一文精通MVCC机制
1.介绍undo log日志版本链2.介绍read view3.版本比对规则解析4.实例演示RR隔离级别下MVCC机制的应用原理5.实例演示RC隔离级别下MVCC机制的应用原理
2023-02-18 00:04:38 1372 2
原创 一文精通常量池
1.包装类的常量池2.常量池的概念和分类3.字符串常量池4.使用字面量直接赋值创建字符串5.使用new创建字符串6.使用intern创建字符串
2023-02-05 01:54:35 600 2
转载 Eclipse插件简介
Eclipse为插件安装提供多种方式,其中在线安装比较可靠。在Eclipse的工具栏中,选择Help → Install New Software…,将要在线安装插件的URL地址复制到work with地址栏后,在窗口中会列出插件安装列表,勾选上进行安装即可。在安装过程中,会先在网上查找并安装插件的依赖,所以时间会比较慢,需要耐心等待 另一种方法是手工安装,在Eclipse 3.5
2017-09-07 09:31:22 536
原创 JAVA多线程核心技术 1.2.3 非线程安全 解析
在看《JAVA多线程核心技术》 1.2.3线程安全 发现了一个有趣的例子,在这里和大家分享一下,同时对运行结果进行解析和扩展,帮助新手朋友理解。同时请大神朋友不吝赐教。 话不多说,先来撸两行代码 一、非线程安全 首先一个LoginServlet类,此类用于模拟用户登录。注意此类中的 变量和方法全部使用static关键字,代表变量和方法全都是静态的,java只会分
2017-07-31 12:59:53 721 1
原创 网络分类和子网掩码
网络分类:A: 1~126 私有:10.0.0.0 ~ 10.255.255.255 0 本地宿主机 127 内部回送含税 子网掩码 255.0.0.0B: 128~191 私有:172.16.0.0 ~ 127.131.255.255 子网掩码 255.255.0.0C: 192~223
2017-06-20 12:17:00 771
原创 单例模式
package main.java.Chapter_13.Section_2;/** * 单例模式:单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例 * 保证一个类仅有一个实例,并提供一个访问它的全局访问点 一个类有且仅有一个实例,并且自行实例化向整个系统提供 * @author mao
2017-06-17 15:13:39 418
原创 java 约瑟环
package main.java;import java.util.ArrayList;import java.util.List;public class Test { public static void main(String[] args) throws Exception { List list = new ArrayList(); for (int i = 0;
2017-06-16 17:58:41 1076
原创 JAVA排序算法
package main.java.Chapter_11.Section_4;/** * 排序算法 * * @author maotb * @version 1.0 2017-06-13 */public class sort { static int[] sortStr = { 8, 6, 5, 7, 2, -3, 9, -4, 1, 0 }; /** * 冒泡排序
2017-06-12 19:05:04 486 1
原创 GIT使用说明
图片不好粘贴,原文件,请到资源中下载 http://download.csdn.net/detail/maotongbin/9866038 目录目录 3第1章 GIT简介 41.1 GIT简介 41.2 GitFlow工作流 4第2章 GIT工具 5工具存放路径: 52.1 GIT 52.2 EGIT 5第3章 GITLAB 63.1 注册 6
2017-06-09 17:37:09 404
原创 软件开发基于禅道版本控制规范
文档信息文档名称版本控制规范电子文档版本控制规范.doc文件状态□ 草 稿 ■正式发布 □正在修改编 写 人毛同彬日 期2016-12-19校 对 人 日 期
2017-06-09 17:34:27 2267
原创 下列代码中,第几行的obj符合垃圾收集器的收集标准
《JAVA程序员面试宝典》86页,一道选择题,不太明白答案,望指教,题目是这样的:下列代码中,第几行的obj符合垃圾收集器的收集标准?[SAP公司2005年10月面试题]1. Object aobj = new Object();2. Object bobj = new Object();3. Object cobj = new Object();4. aobj = bobj;
2017-06-05 21:55:26 1653 5
原创 中间缓存变量机制 i++
有一道经典的i++例题,内容如下:这里使用的中间缓存机制虽然给出了解释,但还是不容易理解。在网上找了一些其他人的解释:因为在计算过程中,使用了Java中间变量缓存机制。在java中,执行自增运算时,会为每一个自增操作分配一个临时变量,如果是前缀加(++i),就会“先自加1后赋值(给临时变量)”;如果是后缀加(i++),就会“先赋值(给临时变量)后自加1”。运算最终使
2017-06-03 17:02:58 1348
原创 一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。
最近在《JAVA程序员面试宝典》上看到这样一道题: 一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。 看了一下书中的解题思路感觉比较复杂,不容易理解。写法上效率也比较低。这里根据自己的想法试着写了另外一种方法。
2017-06-02 16:19:15 1427
原创 大型网站架构演变发展历程
这篇文章用图片的方式描述了大型网站架构网站发展历程,本文的图片全部来自《大型网站技术架构:核心原理与案例分析》,感谢作者分享。《大型网站技术架构:核心原理与案例分析》真的是一本很不错的书,推荐给大家。
2017-03-06 11:17:16 710
原创 mybatis-generator使用说明
mybatis-generator使用说明 mybatis-generator是一个数据库逆向到代码的工具,mybatis-generator有三种用法:命令行、eclipse插件、maven插件。本文介绍的是第三种通过 maven 插件实现数据库逆向。先来看下逆向后的效果。对于dao、mapper、model 全部可以自动生成十分方便。下面说一下基本配置。 一、
2017-02-24 10:05:46 4412
转载 使用Gitlab一键安装包后的日常备份恢复与迁移
Gitlab 创建备份使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份:gitlab-rake gitlab:backup:create使用以上命令会在/var/opt/gitlab/backups目录下创建一个名称类似为1393513186_gitlab_backup.tar的压缩包, 这
2016-12-15 14:29:02 945
转载 Git工作流指南
说明:个人在学习Git工作流的过程中,从原有的 SVN 模式很难完全理解Git的协作模式,直到有一天我看到了下面的文章,好多遗留在心中的困惑迎刃而解:我们以使用SVN的工作流来使用Git有什么不妥?Git方便的branch在哪里,团队多人如何协作?冲突了怎么办?如何进行发布控制?经典的master-发布、develop-主开发、hotfix-不过修复如何避免代码不经过验证上线?如何
2016-12-09 14:03:43 891
转载 SourceTree中英文切换
用了好久的英文版SourceTree后,突然有一天点击了更新,然后就变成中文版了,找了好久也没找到还原成英文版的方法。 研究了几天终于解决,拿出来分享。1. 2 . 现在发现SourceTree也如此的强大。转至:http://fengfujie.iteye.com/blog/2044110 感谢分享
2016-12-06 18:50:37 26918 2
原创 Jenkins+MAVEN+DUBBO/Tomcat
CSDN没法直接粘贴图片过来。原文,请到资源库下载 第1章 Jenkins简介1.1 Jenkins简介Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:1、持续的软件版本发布/测试项目。2、
2016-11-08 11:18:29 3702
转载 Jenkins加Shell实现最简单的持续部署
大量的有关持续集成的书籍与文档中,基本都提到了持续部署这个步骤,然而具体怎么实现,并没有通行的做法,对于典型的Java Web应用来说,大致有两个思路,一是通过web容器(如Tomcat、JBoss)提供的接口部署,这方面的代表就是Cargo,然而,其缺点是配置复杂且不够稳定,我的经验是,部署了很多次之后,容器的JVM就会内存溢出,当然这个和具体容器有关,部署多少次之后才溢出,也要看Web应用的
2016-11-08 10:56:14 1637 2
转载 jenkins无法重启tomcat的原因
在使用Hudson的执行sh脚本的时候,如果sh脚本是一个后台进程,如 Tomcat 这样的服务。如果使用Hudson的默认配置,会发现这些sh 进程有启动的过程,但是不会常驻后台,看Hudson 输出的日志,发现Hudson在Job构建结束之后,kill所有未终止的衍生进程。 在Hudson另一wiki页面上进一步描述了Hudson杀掉衍生进程的情况。Hudson在执行Job时会设置一系
2016-11-08 10:48:12 5848 1
转载 SSH 登录失败:Host key verification failed 的处理方法
遇到了这个问题,在网上搜了一下资料。发现我不能解决我的问题。先转载别人的文章。 在末尾补充了我的解决方案。SSH 登录失败:Host key verification failed 的处理方法问题1:SSH 登录失败:Host key verification failed######################################
2016-11-08 10:44:27 16110
转载 解决scp时报bash: scp: command not found的错误
在进行scp时报bash: scp: command not found[root@51ou.com add_admin]# scp ocp_admin_privileges.mysql root@10.10.1.128:/rootroot@10.10.1.128's password: bash: scp: command not foundlost connection
2016-11-08 10:38:34 3133
转载 Linux下用SCP无需输入密码传输文件
在Linux环境下,两台主机之间传输文件一般使用scp命令,通常用scp命令通过ssh获取对方linux主机文件的时候都需要输入密码确认。不过通过建立信任关系,可以实现不输入密码。这里假设A的IP:192.168.10.1B的IP:192.168.10.2需要从A免密码输入复制文件至B。1. 在主机A上执行如下命令来生成配对密钥: ssh-keygen -t rsa 按
2016-11-08 10:37:18 1943
转载 有关打包成可执行jar包后引用jar包中配置文件问题
一 问题由来有时候我们做一些项目时,需要将一些配置信息写入配置文件中,以供调用。比如说这样:如果我们需要在Demo.java中读取config.txt这个文件中的配置信息,在这种工程目录下是可以使用File来读取的,但是打包成jar后,使用File将不能读取到config.txt了,除非将这个配置信息放在jar包的外面。假如说我们用File来读取文件:
2016-11-02 12:21:20 16824 1
转载 搭建Dubbo+Myeclipse2015+Maven3.3.1的过程遇到问题集锦
1. 找不到dubbo2.8.4包的问题在编译Maven工程的过程中,出现如下问题:Description Resource Path Location TypeArtifactDescriptorException: Failed to read artifact descriptor for com.alibaba:dubbo:jar:2.8.4: UnresolvableMod
2016-09-27 21:32:02 1397
转载 使用JSOUP处理HTML文档
一、 JSOUP简介在以往用java来处理解析HTML文档或者片段时,我们通常会采用htmlparser(http://htmlparser.sourceforge.net/)这个开源类库。现在我们有了JSOUP,以后的处理HTML的内容只需要使用JSOUP就已经足够了,JSOUP有更快的更新,更方便的API等。jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址
2016-07-13 17:18:28 1650
转载 SQL SERVER 查看进程冲突
WARN:2016-05-23 12:57:17,307 - SQL Error: 1205, SQLState: 40001ERROR:2016-05-23 12:57:17,307 - 事务(进程 ID 53)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。DECLARE @spid INTDECLARE @blk INTDECL
2016-05-23 15:18:26 2092 1
原创 PMP 合同管理 PTA讲解
没有时间整理,文章很粗糙,在这里记录下方便以后理解。先转载两道例题:PMP合同管理中总体假设点 PTA的概念及例题有一个总价加激励费用(FPIF)合同。合同规定目标成本为$320 000,承包商的目标利润为$40 000,价格上限为$380 000,客户,承包商以 80/20的比例分成,项目的实际成本是$340 000。那么估算的合同总价是多少? A
2016-04-28 22:25:29 3579
原创 Nginx + Tomcat HTTPS/SSL 配置方法 ——申请证书
最新研究了一下NGINX+TOMCAT 配置 HTTS。其实还是比较简单。知识其中有些流程如果没有搞清楚,还是容易被绕晕。在此简单的分享一下。 首先服务器采用的是 NGINX 负载了两台TOMCAT。这里容易误会成NGINX和tomcat的证书需要有所关联,其实不然。NGINX和tomcat的配置是独立开来的。可以当做两个工作来做。 先说一下服务器安装需要哪些文
2016-04-05 14:46:37 3856
转载 从keystore(jks)文件中提取私钥
JKS文件是使用keytool生成的keystore文件,存放私钥和证书。但是我们用keytool的时候,私钥并没有单独生成出来。这个不利于我们后期的一些扩展工作。所以,我们需要把私钥从keytool中提取出来。这里可以使用在线转化工具,可以直接获得KEY。https://www.trustasia.com/tools/cert-converter.htm经
2016-04-05 14:08:58 35686 5
MVCC机制深度解析-合集
2023-02-17
软件开发基于禅道版本控制规范
2017-06-09
GIT使用说明
2017-06-09
mybatis-generator使用说明
2017-02-24
Jenkins使用说明
2016-11-08
MongoDB入门教程及用例
2013-11-04
Axis2 教程及相关工具类
2013-09-23
Windows环境下用jwplayer+Nginx搭建视频点播服务器
2012-08-31
navicat for mysql 结构同步
2016-10-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人