- 浏览: 2183572 次
- 性别:
- 来自: 北京
最新评论
-
qindongliang1922:
粟谷_sugu 写道不太理解“分词字段存储docvalue是没 ...
浅谈Lucene中的DocValues -
粟谷_sugu:
不太理解“分词字段存储docvalue是没有意义的”,这句话, ...
浅谈Lucene中的DocValues -
yin_bp:
高性能elasticsearch ORM开发库使用文档http ...
为什么说Elasticsearch搜索是近实时的? -
hackWang:
请问博主,有用solr做电商的搜索项目?
Solr中Group和Facet的用法 -
章司nana:
遇到的问题同楼上 为什么会返回null
Lucene4.3开发之第八步之渡劫初期(八)
文章列表
长久以来,在Java语言里面一直有一个争论,就是Java语言到底是值传递(pass-by-value)还是引用传递(pass-by-reference),有的人说是值传递,有的人说是引用传递,两边各执一词,从而误导了很多开发者,更有甚者告诉开发者说不必纠结Java到底是值传递还是引用传递,只要能用就行了,但事实真的是这样吗? 答案是否定的。
为了弄清这两个概念,我们先要理解这两个概念本身的意思:
首先值传递本身这个名字,我感觉就误导了不少人,对于值传递你可以理解成是数据的内存地址传递,并非是数据本身,或者叫它是指针。在维基百科里面,关于指针有清晰的描述:
In computer scien ...
计数排序(Counting sort)是一种稳定的线性时间排序算法,其平均时间复杂度和空间复杂度为O(n+k),其中n为数组元素的个数,k为待排序数组里面的最大值。同样具有线性时间排序的算法还有桶排序和基数排序,这一点不要搞混。
...
### 前言
理解HashMap和ConcurrentHashMap的重点在于:
(1)理解HashMap的数据结构的设计和实现思路
(2)在(1)的基础上,理解ConcurrentHashMap的并发安全的设计和实现思路
前面的文章已经介绍过Map结构的底层实现,这里我们重点放 ...
# 关于Java里面多线程同步的一些知识
对于任何Java开发者来说多线程和同步是一个非常重要的话题。比较好的掌握同步和线程安全相关的知识将使得我们则更加有优势,同时这些知识并不是非常容易就能熟练掌握的,实际上写出正确的并发代码是一件比较困难的事情。在Java的自带的库里面,已经包含了非常多实用的并发工具类,今天这篇文章,我们主要来学习Java里面synchronized关键字的相关知识。
在这之前,我们应该知道Java里面已经提供了不少的同步工具类,如volatile关键字,atomic变量,
synchronized关键字,Lock接口及其比较常用的实现类ReentrantLock,R ...
# Java单例模式之双检锁剖析
### 前言
单例模式在Java开发中是非常经典和实用的一种设计模式,在JDK的内部包的好多api都采用了单例模式,如我们熟悉的Runtime类,单例模式总的来说有两种创建方式,一种是延迟加载的模式,一种 ...
# 关于Java里面多线程同步的一些知识
对于任何Java开发者来说多线程和同步是一个非常重要的话题。比较好的掌握同步和线程安全相关的知识将使得我们则更加有优势,同时这些知识并不是非常容易就能熟练掌握的,实际上写出正确的并发代码是一件比较困难的事情。在Java的自带的库里面,已经包含了非常多实用的并发工具类,今天这篇文章,我们主要来学习Java里面synchronized关键字的相关知识。
在这之前,我们应该知道Java里面已经提供了不少的同步工具类,如volatile关键字,atomic变量,
synchronized关键字,Lock接口及其比较常用的实现类ReentrantLock,R ...
# 重新认识同步与异步,阻塞和非阻塞的概念
### 前言
在实际的开发中,我们经常会听到同步,异步,阻塞,非阻塞这些编程概念,每次遇到的时候都会蒙圈,然后就各种查网上似是而非的资料,结果越查越迷糊,大部分文章都 ...
### (一)创建线程的方式
(1)实现Runnable接口
(2)继承Thread类
推荐使用接口,能够做到定义与实现分离,耦合更低
### (二)关于线程的优先级
thread2.setPriority(Thread.MAX_PRIORITY)
等级越高,优先运行
### (三)关于线程的yield的方法
关于yield方法,是指当前线程可能运行不太重要的任务,可以通过这个方法
暗示操作系统线程调度我可以晚点执行,先把CPU资源让给优先级给我一样或者大于我的
任务,如果没有没有发现符合条件的线程,那么还会执行该线程的任务
### (四)关于线程的join方法
...
# Java里面volatile关键字修饰引用变量的陷阱
如果我现在问你volatile的关键字的作用,你可能会回答对于一个线程修改的变量对其他的线程立即可见。这种说法没多大问题,但是不够严谨。
严谨的回答应该是volatile关键字对于基本类型的修改可以在随后对多个线程的读保持一致,但是对于引用类型如数组,实体bean,仅仅保证引用的可见性,但并不保证引用内容的可见性。
下面这些数据结构都属于引用类型,即使使用volatile关键字修饰,也不能保证修改后的数据会立即对其他的多个线程保持一致:
```java
volatile int [] data;
valatile boolea ...
### 前言
Java内存模型(JMM)给我们介绍了在当代不同的硬件架构情况下,多线程程序需要关注什么问题以及如何利用JMM来正确的处理这些问题。
### 多线程带来的问题
多线程程序主要关注两个问题:
(1)共享变量可见性问题
...
# 关于Java里面的字符串拼接,你了解多少?
### 前言
字符串拼接是我们日常开发中很常见的操作,虽然常见,但要是使用不当的的话,很有可能让你的程序处理效率降低一大半,所以我们有必要来重新了解一下Java里面的字符 ...
前面的几篇文章主要介绍了Java的内存模型,进程和线程的定义,特点和联系,其中在Java多线程里面有一个数据不可见的问题而我们知道使用volatile可以解决,但是如何证明这个多线程修改共享数据是不可见的呢?
很简单,看下面的一段代码:
````java
private static boolean keepRunning=true;
public static void main(String[] args) throws Exception {
new Thread(
()->{
...
# 给Java字节码加上”翅膀“的JIT编译器
上面文章在介绍Java的内存模型的时候,提到过由于编译器的优化会导致重排序的问题,其中一个比较重要的点地方就是关于JIT编译器的功能。JIT的英文单词是Just In Time翻译成中文就是及时 ...
# Java进阶之内存模型介绍
### 前言
不管在什么编程语言里面,读取和写入都是我们程序最普遍的操作,在单线程的程序里面我们可能不关注线程的读写问题,但是一旦到多线程的环境下,读和写就会变得非常敏感。Java内存模型 ...
原创发自我的公众号:我是攻城师
https://mp.weixin.qq.com/s?__biz=MzAxMzE4MDI0NQ==&mid=2650335998&idx=1&sn=33ec033a05a312cdbd8054dc68cc922d&chksm=83aac6c4b4dd4fd2d79898ceea02afa1d593cbf5e8dd3c768a270ad723b9df935770d229b322#rd
在现在人人都有一部手机或电脑的年代,我们几乎天天都在使用各种app,如微信,QQ,抖音,优酷等等软件,表面上我们是与各种app交互,但如果站在操 ...