- 博客(146)
- 收藏
- 关注
原创 Eureka Client启动源码分析(2)
Eureka Client启动源码分析(2)上篇文章主要分析了Eureka Client启动的启动流程最终都是调用EurekaHttpClient接口的方法。可以理解为Eureka Client为Server层,调用EurekaHttpClient(dao层的方法),进行发送HTTP请求。下面来分析EurekaHttpClient的实现细节EurekaHttpClientpublic ...
2019-07-06 15:39:01
480
原创 Eureka Client启动源码分析(1)
Eureka Client启动源码1.我们从@EnableDiscoveryClient出发,找到注释Annotation to enable a DiscoveryClient implementation2.找到DiscoveryClient接口及其实现类,发现有三个方法public interface DiscoveryClient { //获取描述 String desc...
2019-07-06 14:55:23
711
原创 Eureka Server源码分析(1)从@EnableEurekaServer注解开始分析
Eureka启动源码分析我们从@EnableEurekaServer注解开始分析1.Eureka Server启动分析1.1找到@EnableEurekaServer的实现类 EurekaServerAutoConfiguration1.2分析EurekaServerInitializerConfiguration(eureka配置的加载类)//标识为配置文件@Configuratio...
2019-06-29 15:49:45
1114
原创 springboot源码解析详细版
springboot源码解析(转)Spring Boot 的入口类@SpringBootApplicationpublic class StartupApplication { public static void main(String[] args) { SpringApplication.run(StartupApplication.class, args)...
2019-05-30 20:58:59
8528
4
原创 Eureka Server启动源码分析(2)
Eureka启动源码分析我们从@EnableEurekaServer注解开始分析1.Eureka Server启动分析1.1找到@EnableEurekaServer的实现类 EurekaServerAutoConfiguration1.2分析EurekaServerInitializerConfiguration(eureka配置的加载类)//标识为配置文件@Configuratio...
2019-03-21 11:52:44
900
原创 java将多个文件(Excel)压缩成zip,并发送给页面
java将多个文件(Excel)压缩成zip,并发送给页面方案将多个文件夹中的文件,放入一个临时文件夹,并将临时文件夹进行压缩打包,发回给页面。转移文件类import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/**...
2019-03-04 18:52:04
6390
原创 mapper.xml报错导致控制台不断刷日志
mapper.xml报错导致控制台不断刷日志用户mybatis的xml文件错误,在spring配置文件中将SqlSessionFactoryBean类改成该类的路径import java.io.IOException;import org.apache.ibatis.executor.ErrorContext;import org.apache.ibatis.session.SqlSes...
2019-02-26 19:30:14
427
原创 quartz的job实现类无法注入Service类
quartz的job实现类无法注入Service类原因Job是在quartz的框架中实例化的,service是在spring容器中创建出来的。所以Job实现类不受spring管理,即导致注入失败。解决方案使用Quartz提供了JobFactory接口,就可以自定义实现创建Job的逻辑,并将jobFactory交给spring容器管理代码MyJobFactory类public cla...
2019-02-25 16:31:49
2131
4
原创 CountDownLatch和CyclicBarrier的区别
CountDownLatch和CyclicBarrier的区别 从字面上理解,CountDown表示减法计数,Latch表示门闩的意思,计数为0的时候就可以打开门闩了。Cyclic Barrier表示循环的障碍物。两个类都含有这一个意思:对应的线程都完成工作之后再进行下一步动作,也就是大家都准备好之后再进行下一步。然而两者最大的区别是,进行下一步动作的动作实施者是不一样的。这里的“动作实施者”...
2019-02-14 14:33:59
390
原创 3.2kafka基础配置,整合springboot
kafka基础配置github网址:https://github.com/Plumblumpb/messageQueue-.gitkafka基础(可以先看):https://blog.youkuaiyun.com/c_royi/article/details/86648910 项目maven文件<dependency> <groupId>org.apache.kafka...
2019-01-29 15:41:30
674
原创 2.3rabbitMq整合springboot
rabbitMq整合springbootgithub地址:https://github.com/Plumblumpb/messageQueue-.gitrabbitmq(可以先看这两篇文章):https://blog.youkuaiyun.com/c_royi/article/details/86630777https://blog.youkuaiyun.com/c_royi/article/details/86...
2019-01-29 15:24:02
501
原创 2.2rabbitMq基础操作
rabbitMq基础操作 并整合 springbootgithub:https://github.com/Plumblumpb/messageQueue-.gitrabbitMq文章(可以先观看):https://blog.youkuaiyun.com/c_royi/article/details/86630777 rabbitMq基础操作pom.xml文件<dependency> ...
2019-01-29 15:02:18
290
转载 3.1kafka基础解析,运行原理.
1.基础概念Broker:消息中间件处理结点,一个Kafka节点就是一个broker。Topic:主题,一个主题一般会有多个消息的订阅者Partition:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列,用于记录每个消费者消费的消息队列。Segment:partition物理上由多个segment组成,存储消息,每个segm...
2019-01-25 16:58:11
310
原创 java 通过服务器ip以及snmp协议读取cpu使用率,和内存使用率
java 通过服务器ip以及snmp协议读取cpu使用率,和内存使用率**github地址:**https://github.com/Plumblumpb/snmp-demo.git环境配置window环境配置:https://jingyan.baidu.com/article/7f766dafe17d394101e1d0f9.htmllinux环境配置:https://blog.csdn...
2019-01-25 11:40:42
17597
9
原创 linux系统配置snmp
linux系统配置snmp 最近公司需要在监控一下各项目地的服务器运行状况,查找资料发现可以直接通过SNMP服务实现,于是打算测试一下在RedHat Linux系统中安装和配置snmp服务检查系统是否安装snmp服务# rpm -qa|grep snmpnet-snmp-5.3.2.2-17.el5net-snmp-perl-5.3.2.2-17.el5net-snmp-devel-...
2019-01-25 11:20:25
2634
原创 2.1rabbitMq基础概念,解决消息丢失问题
rabbitMq基础概念为啥使用rabbitmq 如果使用Socket,那么不同的模块的确可以部署到不同的机器上,但是还是有很多问题需要解决。比如:信息的发送者和接收者如何维持这个连接,如果一方的连接中断,这期间的数据是以什么方式丢失?如何降低发送者和接收者的耦合度?如何让Priority高的接收者先接到数据?如何做到Load Balance?有效均衡接收者的负载?如何有效的将...
2019-01-24 17:41:28
1564
原创 1.1activemq基础操作 并整合 springboot
activemq基础操作pom.xml文件&amp;lt;dependencies&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.activemq&amp;lt;/groupId&amp;gt; &amp;lt;artifactId
2019-01-24 15:43:04
185
原创 zookeeper Curator基础使用
zookeeper Curator基础使用为啥使用Curator包 zookeeper原生API有以下几个不足之处:超时重连,不支持自动,必须要手动实现;Watcher注册一次后只能使用一次;不支持递归创建节点;基础介绍1.1 watcher :只能监听绑定事件操作:getData、exists、getChildren。usingWatcher方法只调用一次,监听完毕后就会销...
2019-01-23 17:20:39
180
转载 zookeeper基础操作及其常用api
zookeeper基础操作及其常用apizookeeperzookeeper构造函数参数名称ProcessResult参数说明create参数说明delete参数说明getChild参数说明getdata参数说明setdata参数说明exist参数说明1.1zookeeper构造函数参数1.2 Process参数1.3create参数1.4Delete参数说明 ...
2019-01-23 14:31:13
329
转载 redis分布式锁机制,及其原理,及其实现
redis分布式锁机制,及其原理分布式系统加锁时的问题由于网络延迟,对锁的获取造成幂等性问题。当获得锁的服务崩溃,导致锁无法正常释放。加锁后,如何有效的防止锁被篡改解决方法使用setx幂等性操作,解决由于网络延时,造成value值的覆盖使用setx命令设置超时时间,如果服务崩溃,锁也能正常释放(如何控制过期时间的长短)...
2019-01-22 11:12:22
740
1
转载 java jdk动态代理和cglib动态代理对比,实现,区别
java jdk动态代理和cglib动态代理对比,实现,区别jdk动态代理和cglib动态代理对比jdk动态代理特点Interface:对于JDK Proxy,业务类是需要一个Interface的,这是一个缺陷;Proxy:Proxy类是动态产生的,这个类在调用Proxy.newProxyInstance()方法之后,产生一个Proxy类的实力。实际上,这个Proxy类也是存在的,不仅...
2019-01-18 14:49:42
15757
2
原创 java静态代理和动态代理实现代码
java静态代理和动态代理 java设计模式中,常说的代理模式使用的是静态代理模式。代理模式:为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。静态代理:由创建代理类或特定工具自动生成源代码再对其编译。在程序运行前代理类的.class文件就已经存在了。动态代理:在程序运行时运用反射机制动态创建而成。...
2019-01-18 10:24:29
820
原创 java反射机制
java反射机制 反射机制:在Java环境中,反射机制允许程序在执行时获取某个类自身的定义信息,例如熟悉和方法等也可以实现动态创建;类的对象、变更属性的内容或执行特定的方法的功能。从而使Java具有动态语言的特性,增强了程序的灵活性和可移植性。作用在运行时判断任意一个对象所属的类型。在运行时构造任意一个类的对象。在运行时判断任意一个类所具有的成员变量和方法。在运行时调用任意一个对象...
2019-01-17 20:47:51
125
原创 java 回调函数例子,其原理,与代理模式的区别
java 回调函数例子,及其原理回调函数 应用程序(application program)会时常通过API调用库里所预先备好的函数。但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback function)。作用: 可以把调用者与被调用者分开。调用者不关心谁是被调用者...
2019-01-17 17:21:41
17156
5
原创 BeanDefinition基础信息
public class BeanDefinitionHolder implements BeanMetadataElement { private final BeanDefinition beanDefinition; private final String beanName;//beanID @Nullable private final String[] ...
2019-01-17 16:08:11
476
原创 1.1springioc启动源码分析(ClassPathXmlApplicationContext)
spring启动源码分析(ClassPathXmlApplicationContext)Applicantioncontext uml图ClassPathXmlApplicationContext xml 配置文件项目中的路径FileSystemXmlApplicationContext xml 配置文件在系统中的路径AnnotationConfigApplicationConte...
2019-01-17 16:06:09
300
原创 oracle start with connect by prior用法
oracle start with connect by prior用法作用:显示树形表结构的信息测试脚本:create table a_test ( parentid varchar2(10), subid varchar2(10));insert into a_test values ( '1', '2' );insert into a_test values ...
2019-01-15 14:27:33
906
原创 OAuth基础知识
Third-party application:第三方应用程序,既需要认证的客户端HTTP service:HTTP服务提供商,既用户信息源Resource Owner:资源所有者User Agent:用户代理Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。...
2019-01-14 15:10:25
320
转载 Session和cookie 机制详解
Session机制详解一、术语sessionsession:“一个浏览器会话期间,用户的一系列操作”,是指从一个浏览器窗口打开到关闭这个期间,用户的一系列动作(一般情况下是同某个具体目的相关的一系列动作)当session与网络协议相关联时,往往隐含了“面向连接”和/或“保持状态”这样两个含义,“面向连接”指的是在通信双方在通信之前要先建立一个通信的渠道,比如打电话,直到对方接了电话通信才...
2018-12-29 14:33:35
295
原创 oracle筛选出为数字的行
where length(translate(a,'.0123456789'||a,'.0123456789'))=length(groupNum)a为列名。
2018-12-20 20:27:19
1594
原创 voliate原理
volatile原理volatile当使用volatile关键字修饰共享变量(实例变量、静态变量)时,它将具备两个特性:可见性和禁止指令重排序优化1.可见性变量被修改后,会立即保存在主存中,并清除工作内存中的值。新值对于线程来说都是可见的。2.禁止指令重排序优化指令重排序是指CPU在正确处理指令依赖(数据依赖)并且保障程序执行得到正确结果的情况下,调整代码的执行顺序,允许将多...
2018-12-18 23:20:23
7061
原创 synchronized原理分析
synchronizedsynchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性synchronized同步的基础普通同步方法,锁是当前实例对象静态同步方法,锁是当前类的class对象同步方法块,锁是括号里面的对象public class SynchronizedTest { // 普通同步方法 ...
2018-12-17 16:52:50
193
原创 AbstractQueuedSynchronizer(1)源码解析(jdk1.8)
AbstractQueuedSynchronizer源码解析(简称AQS)#AQS的属性//Node类可以看成是线程static final class Node// 头结点,你直接把它当做 当前持有锁的线程 可能是最好理解的private transient volatile Node head;// 阻塞的尾节点,每个新的节点进来,都插入到最后,也就形成了一个隐视的链表p...
2018-12-11 13:41:43
246
原创 2.2jvm类加载
1.jvm类加载时机1.遇到new,getstatic,putstatic或者invokestatic这字节码指令时,会先触发初始化new new实例化对象getstatic 读取一个类的静态字段(使用static final修饰的除外)setstatic 设置一个类的静态字段(使用static final修饰的除外)invokestatic 调用一个类的静态方法2.当初始化...
2018-12-02 21:47:29
180
原创 forearch循环时,不能使用add和remove不然会报错
forearch循环注意事项不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁。
2018-11-29 10:52:30
635
原创 1.zookeeper基础知识,结构和运行流程,基础使用
zookeeper基础知识1.单个zookeeper结构zookeeper结构图每个节点都为znodeznode分为持久节点(客户端断开连接后,仍然存在),临时节点(断开连接,节点消失,不允许有子节点),顺序节点(持久或临时,编号用于锁定和同步中)每个znode维护一个stat(由版本号,操作控制列表,时间戳,数据长度组成)znode详解2.zookeeper集群结构zoo...
2018-11-14 11:30:05
468
原创 2.3四种线程连接池的配置和使用(和自定义线程池)
四种线程连接池的配置和使用最终调用类和方法{参数有 核心线程数目,最大线程数目,存活时间(当前线程执行完这个任务之后,等待下一个任务到来的最长等待时间。如果在这个时间内没有新的任务来到,那当前线程就会退出),时间单位,等待队列(用于存放待执行的任务)}public ThreadPoolExecutor(// 核心线程数目int corePoolSize,//最大线程数目int max...
2018-11-12 17:32:53
746
原创 2.2四种线程连接池的作用
四种线程连接池的作用及其使用线程池的作用:线程池作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排 队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一资源处于等待。当一个新任务需要运行时,如果线程池 中有等待...
2018-11-12 15:35:13
345
原创 配置ehCache缓存策略@Cacheable,@CacheEvict,@CachePut
ehCache1.@Cacheable1.@CacheEvict1.@CachePut
2018-11-12 15:30:43
2981
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人