
java
文章平均质量分 86
longlovefilm
这个作者很懒,什么都没留下…
展开
-
ReentrantLock之NonfairSync源码分析
/** * Performs lock. Try immediate barge, backing up to normal * acquire on failure. */final void lock() { if (compareAndSetState(0, 1)) setExclusiveOwnerThread(Thread.currentThread()); else acquire(1);}public final void acquire(int arg) {.原创 2020-12-14 19:39:54 · 159 阅读 · 0 评论 -
ReentrantLock之FairSync源码分析
final void lock() { acquire(1);}public final void acquire(int arg) { if (!tryAcquire(arg) && acquireQueued(addWaiter(Node.EXCLUSIVE), arg)) selfInterrupt();}protected final boolean tryAcquire(int acquires) { final Thread current = ...原创 2020-12-14 19:38:37 · 164 阅读 · 0 评论 -
JUC AQS ReentrantLock源码分析(一)
Java的内置锁一直都是备受争议的,在JDK1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略,但是与Lock相比synchronized还是存在一些缺陷的:虽然synchronized提供了便捷性的隐式获取锁释放锁机制(基于JVM机制),但是它却缺少了获取锁与释放锁的可操作性,可中断、超时获取锁,且它为独占式在高并发场景下性能大打折扣。如何自己来实现一个同步自旋实现一个同步volatile int status=0;//标识--.转载 2020-11-14 15:32:09 · 85 阅读 · 0 评论 -
Java NIO 详解(二)
在我的上一篇文章JavaNIO详解(一)中介绍了关于标准输入输出NIO相关知识, 本篇将重点介绍基于网络编程NIO(异步IO)。异步IO异步 I/O 是一种没有阻塞地读写数据的方法。通常,在代码进行 read() 调用时,代码会阻塞直至有可供读取的数据。同样, write()调用将会阻塞直至数据能够写入,关于同步的IO请参考另一篇文章Java IO。另一方面,异步 I/O 调用不但不会...转载 2018-08-15 15:02:16 · 171 阅读 · 0 评论 -
Java并发编程:线程池的使用
https://www.cnblogs.com/dolphin0520/p/3932921.htmlJava并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 ...转载 2018-10-08 17:57:40 · 94 阅读 · 0 评论 -
Maven生成可以直接运行的jar包的多种方式
引用自:https://blog.youkuaiyun.com/xiao__gui/article/details/47341385Maven可以使用mvn package指令对项目进行打包,如果使用java -jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in xxx.jar"(没有设置Main-Class)、ClassNotFoundEx...转载 2018-11-01 19:52:00 · 170 阅读 · 0 评论 -
JAVA反射机制及应用场景
往往当我们面对一项新的知识时,我们往往需要知道三个方面,它是什么,它能做什么,它比原有知识强在哪里,我们该怎么使用它。当你能够解决这些问题时,便意味着你已经对这项知识入门了。一、是什么 Java Reflaction in Action有这么一句话,可以解释。反射是运行中的程序检查自己和软件运行环境的能力,它可以根据它发现的进行改变。通俗的讲就是反射可以在运行时根据指定的类名获得类的信息...原创 2018-11-04 20:16:15 · 1530 阅读 · 0 评论 -
JVM初探:内存分配、GC原理与垃圾收集器
http://www.importnew.com/23035.html转载 2018-11-12 21:04:00 · 181 阅读 · 0 评论 -
系列之hashmap
(1)HashMap的实现原理?此题可以组成如下连环炮来问你看过HashMap源码嘛,知道原理嘛? 为什么用数组+链表? hash冲突你还知道哪些解决办法? 我用LinkedList代替数组结构可以么? 既然是可以的,为什么HashMap不用LinkedList,而选用数组?你看过HashMap源码嘛,知道原理嘛?针对这个问题,嗯,当然是必须看过HashMap源码。至于原理,...原创 2019-08-14 14:47:48 · 224 阅读 · 0 评论 -
Java NIO 详解(一)
NIO即新的输入输出,这个库是在JDK1.4中才引入的。它在标准java代码中提供了高速的面向块的IO操作。 一、基本概念描述1.1 I/O简介I/O即输入输出,是计算机与外界世界的一个借口。IO操作的实际主题是操作系统。在java编程中,一般使用流的方式来处理IO,所有的IO都被视作是单个字节的移动,通过stream对象一次移动一个字节。流IO负责把对象转换为字节,然后再转换为...转载 2018-08-15 14:35:29 · 180 阅读 · 0 评论 -
Java内存模型
原文在本人微信收藏里,亦可自行上网百度关键字。前几天,发了一篇文章,介绍了一下JVM内存结构、Java内存模型以及Java对象模型之间的区别。有很多小伙伴反馈希望可以深入的讲解下每个知识点。Java内存模型,是这三个知识点当中最晦涩难懂的一个,而且涉及到很多背景知识和相关知识。网上有很多关于Java内存模型的文章,在《深入理解Java虚拟机》和《Java并发编程的艺术》等书中也都有关于这个...转载 2018-07-30 10:17:37 · 145 阅读 · 0 评论 -
solr之lucene全文检索的基本原理
一、总论根据http://lucene.apache.org/java/docs/index.html定义:Lucene是一个高效的,基于Java的全文检索库。所以在了解Lucene之前要费一番工夫了解一下全文检索。那么什么叫做全文检索呢?这要从我们生活中的数据说起。我们生活中的数据总体分为两种:结构化数据和非结构化数据。结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。非结构化数据...转载 2018-02-28 10:54:37 · 176 阅读 · 0 评论 -
java 工厂模式,工厂方法模式,抽象工厂模式 详解
http://blog.youkuaiyun.com/wfg18801733667/article/details/609547441. 工厂模式1.1 描述简单工厂模式是由一个工厂对象根据收到的消息决定要创建哪一个类的对象实例。1.2 使用场景工厂类负责创建的对象比较少,客户只需要传入工厂类参数,对于如何创建对象(逻辑)不关心。简单工厂模式很容易违反高内聚低耦合的原则,因此一般只在很简单的情况下使用。1.3...转载 2018-03-15 10:28:58 · 119 阅读 · 0 评论 -
Java多线程学习(吐血超详细总结)
写在前面的话:此文只能说是java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更上一个台阶呢?如果你觉得此文很简单,那推荐你看看Java并发包的的线程池(Java并发编程与技术内幕:线程池深入理解),或者看这个专栏:Java并发编程与技术内幕。你将会对Java里头的高并发场景下的线程有更加深刻的理解。目录(?)[-]一扩展java...转载 2018-05-02 21:02:10 · 132 阅读 · 0 评论 -
c++与java中继承的区别(一)
c++与java中继承的区别第一点在c++中,重载不会发生在基类与派生类之间!当基类和派生类中存在同名函数时,无论同名函数的形参个数或者类型是否相同,派生类中的同名函数都会将基类中的同名函数隐藏(将在下边说明隐藏)掉,而不会是重载关系。这时,当你通过派生类对象调用该同名函数时,只能访问派生类的该函数,如果硬要访问基类的该函数,则需要在函数名前加上类作用域!如上述代码所示。而在java中子类会将父类...转载 2018-06-03 16:48:31 · 659 阅读 · 0 评论 -
Java与C++ 排序中comparator\compare异同
JAVA 版本Java Sort中Comparator的语义分析Comparator中compare的语义:接口约定返回值与o1,o2的相对大小的对应关系,即ret<0时,语义上等价于o1<o2;ret==0时,语义上等价于o1==o2;ret>0时,语义上等价于o1>o2.具体Comparator子类override compare函数时,则需要依据约定,即采用o1-o2...转载 2018-05-28 11:07:28 · 731 阅读 · 0 评论 -
JAVA+Spring踩坑系列之 微服务测试环境联调
注意事项如下:1: 配置文件线上配置图一默认的”bootstrap-“后面的关键字如online/onlinetest与图二的spring.profiles.active字段对应,默认走bootstrap的配置。具体图二的spring.cloud.config.uri/name/profile/label分别对应图三git上的线上配置地址\配置文件名字\配置文件路径\配置文件分支;图1 工程配置文...原创 2018-06-04 15:21:56 · 1625 阅读 · 0 评论 -
JAVA+Spring踩坑系列之 @Service无法在controller注入对象成功
@RequestMappingpublic interface IDiagnoseApi { /** * timeOutMsgs:(诊断超时功能的MsgInfo接收并进行处理). <br/> * * @author zcl * @param msgsStatusRest * @return * @since JDK...原创 2018-06-04 19:20:45 · 7200 阅读 · 0 评论 -
c++与java中继承的区别(二)虚函数(普通函数)、抽象函数(纯虚函数)、抽象类、接口
JAVA – 虚函数、抽象函数、抽象类、接口1. Java虚函数虚函数的存在是为了多态。C++中普通成员函数加上virtual关键字就成为虚函数Java中其实没有虚函数的概念,它的普通函数就相当于C++的虚函数,动态绑定是Java的默认行为。如果Java中不希望某个函数具有虚函数特性,可以加上final关键字变成非虚函数PS: 其实C++和Java在虚函数的观点大同...转载 2018-06-06 17:02:59 · 580 阅读 · 0 评论 -
solr下载安装及简单应用
一1,Solr环境安装1、安装Jdk1.8(solr6.6是 1.8编译的) / Tomcat8 / Solr6.6 各软件2、 下载 : 下载 solr 6.6 版本:http://www.apache.org/dyn/closer.lua/lucene/solr/6.6.03、将 solr 压缩包中 solr 6.6 下的server\solr-webapp\文件夹下有个...原创 2018-02-27 15:32:20 · 463 阅读 · 0 评论