自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 junit test函数下的多线程问题:守护线程和非守护线程

首先,我们知道 java中的线程分为两类: 守护线程和用户线程(非守护线程)。用户线程即是运行在前台的线程,而守护线程顾名思义就是监控守护用户线程的线程,是为运行在前台的用户线程提供运行便利服务的,且只有在用户线程运行时才需要。比如垃圾回收线程。当VM检测到用户线程已经退出运行,仅剩守护线程时,VM会退出,因为没有被守护者,程序运行也就没有必要了。守护线程并非只有虚拟机内部提供,用户在编写程序时也可以自己设置守护线程。用户可以用Thread的setDaemon(true)方法设置当前线程为守护线程。

2020-08-07 14:43:57 1022

原创 XXL-JOB快速入门

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。我们这里只简单快速的用XXL-JOB实现一个单机任务调度。详细学习请前往官方地址中文版:http://www.xuxueli.com/xxl-jobDownload...

2020-07-30 12:04:36 853

原创 关于线程池的多种实现及其内部队列

我们都了解线程池的作用,这里不多做赘述。首先来看线程池的构造函数: public ThreadExecutor(int corePoolSize, //线程池中的线程数 int maximumPoolSize, //线程池中的最大线程数 long keepAliveTime, //线程数超过指定数值后,多余的空闲线程的存活时间 TimeUnit unit, //线程池维护线程所允许的空闲时间的单位 Blocki

2020-07-29 15:52:39 651

原创 SpringCloud Netflix Eureka 注册中心

前面我们讲了Nacos 作为注册中心的使用方法,Eureka的使用方法则更为简便,而结合RestTemplate 和Feign进行远程调用则几乎相同。首先创建一个eureka-server项目作为注册中心服务。引入依赖 <properties> <java.version>1.8</java.version> <spring-cloud.version>Finchley.RC2</spring-cloud.version>

2020-07-27 16:39:39 235

原创 SpringCloud Alibaba Nacos:注册中心提供者和消费者之间的调用之RestTemplate + Ribbon

前面我们已经将客户端作为提供者和消费者注册到注册中心,下面我们进行调用。我们采用RestTemplate方式调用。1.首先我们在提供者端建立一个Controllerpackage com.nacos.nacostest;import com.sun.org.apache.xml.internal.utils.URI;import org.springframework.beans.factory.annotation.Value;import org.springframework.c

2020-07-24 18:02:24 964 2

原创 SpringCloud Alibaba Nacos:做为微服务注册中心

Nacos 作为注册中心,和Eureka作为注册中心的配置一样。以后会单独写Eureka.前面我们已经将Nacos作为配置中心搭建起来,可以看到除了“配置管理”菜单,还有“服务管来”菜单:我们在客户端中引入依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discover

2020-07-24 17:01:00 192 1

原创 SpringCloud Alibaba Nacos:做为微服务配置中心第三回:配置中心整合mysql存储数据

在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力。Nacos 代码包中提供了需要的sql文件:1.创建数据库:nacos2.将nacos-mysql.sql文件中的sql在创建的库中执行,创建所需要的表一共12张表进入application.properties中修改msyql数据库连接地址我的是建在本地:重启Nacos server,重新创建配置文件,文件内容回存储到.

2020-07-23 17:29:42 238

原创 SpringCloud Alibaba Nacos:做为微服务配置中心第二回:创建客户端,连接配置中心

首先创建Nacos客户端项目:使用IDEA创建Springboot项目,具体过程不作多说。引入nacos依赖,具体pom如下<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.ap

2020-07-23 16:37:51 87

原创 SpringCloud Alibaba Nacos:做为微服务配置中心第一回:下载源码并本地单机启动

当说起配置中心,我们经常用到的有携程的Apollo和阿里的Nacos.作为Spring Cloud Alibaba 的开源项目,Nacos既可以用作服务注册中心又能作为分布式配置中心使用。今天我们学习Nacos如何作为配置中心。学习任何一个框架之前,查看官方文档是必不可少的。话不多说,首先下载nacos代码:https://github.com/alibaba/nacos/releases在本地解压后目录:进入bin文件夹下,startup.sh和shutdown.s

2020-07-23 15:48:01 350

原创 zookeeper 实现分布式锁

我们都知道zk除了做注册中心,和分布式配置之外,要有一个重要的实现是做分布式锁。那么如何用代码实现一个分布式锁呢?下面的代码已经加了注释,但是由于 逻辑实在容易让人脑壳疼,所以显得特别散乱。注: 注释中所谓的步骤 1,2,3 ,4 是加解锁的顺序;首先定义一个 watch 监视器package com.qihoo.finance.lbgw.ctrl.zookeeper;import org.apache.zookeeper.WatchedEvent;import org.apach.

2020-07-08 11:40:40 91

原创 死锁,以及产生死锁的条件

死锁,指的是两个或两个以上的进程在执行的过程中互相争抢资源,而陷入相互等待的现象,如果没有外力干预,将永远等待下去,无法继续推进。产生死锁的四个条件:1. 互斥条件: 同一个资源一次只能被一个进程所使用。2. 请求与保持条件:一个进程在争抢资源的过程中陷入阻塞状态时,对于已经获得的资源保持不放。3.不被剥夺条件:一个进程已获得的资源,在未使用完之前,不能被强制剥夺。4.循环等待条件:多个进程之间形成头尾相接循环等待资源的关系。死锁代码例子:线程1,获取锁 char1,执行代码块的

2020-06-30 18:12:03 160

原创 代码实现霍夫曼编码和解码

(单纯的代码,霍夫曼编码理论定义请自行查询学习)定义节点类实现Comparator接口,重写compare()方法:定义排序标准。具体代码:public class Node implements Comparator<Node> { private String key; private int weight; private Node left; private Node right; private boolean isLeaf

2020-05-26 17:42:21 524

原创 类加载的过程中,不同类加载器的加载路径测试

我们知道JVM加载类的过程遵循“双亲委派机制”,每当JVM启动时,是通过一个ClassLoader来加载class文件的。ClassLoader有三个实现,分别是:BootstrapLoader,ExtClassLoader和AppClassLoader.三个类加载器的作用不同,所加载的class文件也不相同。下面我们通过代码实现查看三个类加载器分别所加载的class路径/** * * @author JJ_knows * */public class ClassLoaderTe

2020-05-21 11:28:19 567

原创 ThreadLocal的应用

当ThreadLocal 执行set()方法时,通过查看源码可知,首先得到了当前线程,并通过getMap()方法得到当前线程的成员变量 ThreadLocalMap,并用ThreadLocal(this)做key,将set进的value放入当前线程的ThreadLocalMap中。将值缓存在线程中。当多线程的情况下,如果希望子线程也同样能够使用当前线程中绑定的数据该如何实现呢?在此背景下,产生了InheritableThreadLocal,InheritableThreadLo...

2020-05-18 16:11:48 179

原创 代码测试cpu缓存一致性

以下为测试代码:** * 多核CPU多级缓存一致性协议MESI * 缓存一致性协议:同一个缓存行的数据被不同cpu读取的时候必须保持一致性 */public class CacheLine { //volatile:保持线程之间的数据可见性,每次修改数据之后都会将数据从工作内存中刷新到主内存,然后强制线程从主内存中读取数据 private static volatile long[] arr1 = new long[2]; private static...

2020-05-14 16:57:49 370

原创 关于jQuery中button标签自动提交form表单的问题

在form表单中,当我们将button标签作为事件源,使用jQuery对其绑定一个事件,来造作多选框的同步多选,反选,或者解析输入文本进而匹配相应选项设置时会发现,在点击button之后,结果会出现,但却一闪而过.这是为什么嘛呢?当我们将form表单的"Method" 属性设置为"get",在地址栏或者查看网页源代码(F12--js)我们会发现:form表单被提交了.但我们我们明明并没有设置任何提...

2018-05-20 10:35:05 2292

空空如也

空空如也

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

TA关注的人

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