简单多线程基础
简单多线程基础主要内容:
1234567891011121314151617简述线程,程序、进程的基本概念。以及他们之间关系是什么?线程有哪些基本状态?这些状态是如何定义的?何为多线程?为什么多线程是必要的?使用多线程常见的三种方式线程的优先级Java多线程分类sleep()方法和wait()方法简单对比为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?
1. 简述线程,程序、进程的基本概念。以及他们之间关系是什么?线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。
程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。
进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。简单来说,一个进程就是一个执行中的程序,它在计算 ...
简单多线程基础
前言正则表达式,新手见它的感觉就是“这都什么玩意,乱七八糟的,完全不知所云”,但学会它就会体验那种一行代码抵数十上百行,效率飞起的感觉,简直不要太爽。今天小肆先把我自己收藏的一些正则表达式写法分享给大家,当然想深入学习如何写正则表达式,可以去w3c看看教程。
干货一.校验数字
数字:^[0-9]*$
n位的数字:^\d{n}$
至少n位的数字:^\d{n,}$
m-n位的数字:^\d{m,n}$
零和非零开头的数字:^(0|[1-9][0-9]*)$
非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?$
正数、负数、和小数:^(-|+)?\d+(.\d+)?$
有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
非零的正整数:^[1-9]\d*$
非零的负整数:^-[1-9][]0-9”*$
非负整数:^\d+$
非正整数:^-[1-9]\d*|0$
非负浮点数:^\d+(.\d+)?$
非正浮点数 ...
基于hystrix为spring-boot+dubbo+zookeeper提供熔断机制
spring-boot-dubbo-zookeeper-hystrix-annotation说明使用注解的方式使用hystrix
我需要引入几个必要的jar
1234567891011121314151617181920212223<dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hystrix-core</artifactId> <version>1.5.12</version> </dependency> <dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hystrix-metrics-event-st ...
基于hystrix为spring-boot+dubbo+zookeeper提供熔断机制
spring-boot-dubbo-zookeeper-hystrix引入spring-boot-dubbo-zookeeper-hystrix-base后会通过Dubbo的Activate机制自动激活HystrixFilter,对dubbo:reference进行资源隔离和熔断保护。
线程池隔离默认按dubbo:reference进行线程池资源隔离,可以认为一个dubbo:reference为一个领域服务,reference里的所有方法在一个线程池资源里运行,多个reference之间线程池资源是隔离的,这样可以根据具体的业务场景对不同的reference设置不同的线程池资源,并且当某个reference出现阻塞故障时不会导致容器线程资源被耗尽,从而影响其他服务。
默认线程池配置如下:
123<dubbo:parameter key="coreSize" value="10"/><dubbo:parameter key="maximumSize" value= ...
为什么Java中1000==1000为false而100==100为true?
这是一个挺有意思的讨论话题。
如果你运行下面的代码
1234Integer a = 1000, b = 1000;Integer c = 100, d = 100;System.out.println(a == b);//1 System.out.println(c == d);//2
你会得到:
12falsetrue
基本知识:我们知道,如果两个引用指向同一个对象,用==表示它们是相等的。如果两个引用指向不同的对象,用==表示它们是不相等的,即使它们的内容相同。
因此,后面一条语句也应该是false 。
这就是它有趣的地方了。如果你看去看 Integer.Java 类,你会发现有一个内部私有类,IntegerCache.java,它缓存了从-128到127之间的所有的整数对象。
所以事情就成了,所有的小整数在内部缓存,然后当我们声明类似——
1Integer c = 100;
的时候,它实际上在内部做的是:
1Integer i = ...
在Java中如何高效判断数组中是否包含某个元素
如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作。
同时,这个问题在Stack Overflow中也是一个非常热门的问题。在投票比较高的几个答案中给出了几种不同的方法,但是他们的时间复杂度也是各不相同的。本文将分析几种常见用法及其时间成本。
使用List123public static boolean useList(String[] arr, String targetValue) { return Arrays.asList(arr).contains(targetValue);}
使用Set1234public static boolean useSet(String[] arr, String targetValue) { Set<String> set = new HashSet<String>(Arrays.asList(arr)); return set.contains(targetValue);}
使用循环判断1234567public ...
Docker安装FastDFS,集成Spring Boot操作
Docker安装FastDFS,集成Spring Boot操作
获取镜像
运行tracker
运行storage
1. 获取镜像可以利用已有的FastDFS Docker镜像来运行FastDFS。
使用Centos 最好使用7.2的版本,不然可能会无法启动,或者缺少各种依赖。
获取镜像可以通过下载
docker image pull delron/fastdfs
也可是直接使用提供的镜像备份文件
docker load -i 文件路径/fastdfs_docker.tar(提前打包好的)
加载好镜像后,就可以开启运行FastDFS的tracker和storage了。
2. 运行tracker执行如下命令开启tracker 服务
docker run -dti --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
我们将fastDFS tracker运行目录映射到本机的 /var/fdfs/tracker目录中。
执行如下命令查看tracker是否运行起来 ...
Java内存模型和Java并发
Semaphore(信号量)Semaphore(信号量)是一个线程同步结构,用于在线程间传递信号,以避免出现信号丢失,或者像锁一样用于保护一个关键区域。
Semaphore(信号量)Semaphore(信号量)是一个线程同步结构,用于在线程间传递信号,以避免出现信号丢失,或者像锁一样用于保护一个关键区域。
前言面试Java,必然要被问Java内存模型和Java并发开发。我被问到的时候,心里慌得一批,“额,是在《Thinking in Java》里面写的吗?果然每天增删改太low了”。
我希望能解释的再简单一些,以上都不用
Java 并发代码
12345678910111213141516171819public class Example1 { public static int count = 0; public static int clientTotal = 5000; public static void main(String[] args) throws Exception { ExecutorSe ...
Nginx基础配置
Nginx基础配置以我的博客为例我们分为两种配置,一种普通的反向代理http,另一种是https
配置http123456789101112131415161718192021222324252627282930313233343536server { listen 80; server_name www.hwy.ac.cn; #将 www.yourdomain.com 替换为之前注册并解析的域名 root /root/firekylin; set $node_port 此处替换为项目端口号; index index.js index.html index.htm; location ^~ /.well-known/acme-challenge/ { alias /root/firekylin/ssl/challenges/; try_files $uri = 404; } loc ...
Nginx反向代理本地目录
12345678910111213server { listen 80; server_name www.avenger.com; //在host中把这个地址设置为127.0.0.1 index index.html index.htm; autoindex on; autoindex_exact_size on; autoindex_localtime on; location / { root D:/work/code/fed-static; }}