为什么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 = Integer.valueOf(100);
现在,如果我们去看valueOf()方法,我们可以看到:
12345pub ...
在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目录中。
执行如下命令查看 ...
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 { ExecutorService exec ...
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; } location / { proxy_http_version 1.1; pr ...
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; }}
基于Spring Boot 2.x 的solr-7.3.1使用
下载安装Apache Solr 7.3.1下载地址:http://archive.apache.org/dist/lucene/solr/7.3.1/
spring-boot-solr说明下载安装Apache Solr 7.3.1下载地址:http://archive.apache.org/dist/lucene/solr/7.3.1/解压后,在bin文件夹下编写一个名为 启动.bat的启动文件,把一下命令粘贴进去
1solr.cmd start -p 8888
到这里一般双击就可以启动了
访问http://localhost:8888
接下来我们新建一个core用于存储我们的数据我们会发现无发创建core
123solr-7.3.1/server/solr/configsets/_default/此时我们需要拷贝以上路径下的conf文件夹到以下路径中solr-7.3.1/server/solr/baike_core
关闭命令窗口。重新双击启动,然后我们就可以创建这个core了
我们关闭命令窗口,虽然可以使用,不过我们还需要配置一下中文分词器,没分词之前
为了方便中文分词,我们这 ...
使用Docker安装RabbitMQ
获取rabbit镜像:docker pull rabbitmq:management
获取rabbit镜像:
123456789101112131415161718192021222324docker pull rabbitmq:management``` 创建并运行容器:```jsdocker run -d --hostname my-rabbit --name rabbit -p 8080:15672 rabbitmq:management --hostname:指定容器主机名称 --name:指定容器名称 -p:将mq端口号映射到本地 或在运行时设置用户和密码docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management15672:控 ...
Nginx 简明教程
NGINX 是一款来自俄罗斯的HTTP 和反向代理(reverse proxy)服务器、邮件服务器,以及通用的 TCP/UDP 代理服务器,以其高性能被业界广泛采用。本文通过最简洁的方式,将 NGINX 核心应用做下介绍。
NGINX 是一款来自俄罗斯的HTTP 和反向代理(reverse proxy)服务器、邮件服务器,以及通用的 TCP/UDP 代理服务器,以其高性能被业界广泛采用。本文通过最简洁的方式,将 NGINX 核心应用做下介绍。
什么是 NGINXNGINX是一个免费的、开源的、高性能的 HTTP 服务器和反向代理,以及一个 IMAP/POP3 代理服务器。 NGINX以其高性能、稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。
NGINX 是为解决C10K 问题而编写的少数服务器之一。与传统服务器不同,NGINX 不依赖于线程来处理请求。相反,它使用更加可扩展的事件驱动(异步)架构。这种架构在负载下使用小的但更重要的是可预测的内存量。即使您不希望处理数千个并发请求,您仍然可以从 NGINX 的高性能和小内存中获益。 NGINX 在各个 ...
Docker容器名字冲突解决
Docker容器名字冲突解决
– Docker容器名字冲突解决
12345678910111213docker: Error response from daemon: Conflict. The container name "/tracker" is already in use by container "73b9fc481e0316195ab89d4c4faa38c5a1012a84ce859a65488e983e9b415255". You have to remove (or rename) that container to be able to reuse that name.See 'docker run --help'.``` 以上是错误的提示,我们发现有一个名为tracker的容器冲突了,此时我们使用命令进行查看```jsdocker ps``` 如果容器存在直接使用一下命令停止、删除```jsdocker stop iddocker rm id
如果容器不存在使用以下命令查看,就会找到存在的镜像
...