java
txxs
这个作者很懒,什么都没留下…
展开
-
源码:并发包-AtomicBoolean的源码解析
最近学习一下源码,这是并发包下边代码解析,简单直接一点直接上代码: /** * 一个简单的通过实现序列化的对象 */ public class AtomicBoolean implements java.io.Serializable { private static final long serialVersionUID = 4654671469794556979L...原创 2019-06-24 00:00:41 · 241 阅读 · 0 评论 -
泛型<T> T
是一种形式,表示你用的是泛型编程,不受类型的约束。以下来自,这个import java.util.*; class Fruit { public String toString() { return "Fruit"; } } class Apple extends Fruit { public String toString(){ return "Apple";原创 2016-07-05 13:14:48 · 572 阅读 · 0 评论 -
eclipse中egit插件使用
eclipse中egit插件使用原创 2016-07-07 13:27:51 · 418 阅读 · 0 评论 -
Java生成对象的四种方法
1、new2、clone3、反序列化4、反射原创 2016-08-18 17:16:52 · 619 阅读 · 0 评论 -
importNew的好文章
Java引用类型http://blog.csdn.net/u013256816/article/details/50907595Java堆内存 http://blog.csdn.net/u013256816/article/details/50764532通信协议——Http、TCP、UDPhttp://www.cnblogs.com/xhwy/archive/2012原创 2016-07-08 19:55:49 · 2786 阅读 · 1 评论 -
Java回调机制解读
原文转自 博客模块间调用在一个应用系统中,无论使用何种语言开发,必然存在模块之间的调用,调用的方式分为几种:(1)同步调用同步调用是最基本并且最简单的一种调用方式,类A的方法a()调用类B的方法b(),一直等待b()方法执行完毕,a()方法继续往下走。这种调用方式适用于方法b()执行时间不长的情况,因为b()方法执行时间一长或者直接阻塞的话,a()方法的转载 2017-05-31 11:52:41 · 475 阅读 · 0 评论 -
BigDecimal工具类
下边两篇文章对BigDecimal做了一个很好的总结,可以先看一下这两篇文章Java中BigDecimal的使用BigDecimal 舍入模式(Rounding mode)介绍https://blog.csdn.net/guanmjie/article/details/4458604另外在转类型的时候,用到什么精度就是什么精度,不要进行额外的转换,否则还会出现精度问题impo...原创 2019-06-20 22:51:53 · 747 阅读 · 0 评论 -
动态加载的意义
加载一个类即表示要初始化该类的static变脸,特别是static代码块,在这里我们可以做大量的工作,比如注册自己,初始化环境等class nihao{ //静态代码块 static{ //做什么事情 }}//在main函数中调用Class.forName(nihao),动态加载在main函数中,没有原创 2016-05-05 10:52:20 · 614 阅读 · 0 评论 -
Class类特殊性
Java 先把Java源文件编译成class的字节码文件,然后再同坐classloader机制把这些类文件加载到内存汇总,最后生成实例执行java使用一个元类(MetaClass)来描述加载到内存中的数据,这就是class类,它是一个描述类的类对象。class类是Java反射的入口,只有在获得了一个类的描述对象那个后才能动态的加载、调用,一般获得一个Class对象有三种途径原创 2016-05-05 10:39:41 · 361 阅读 · 0 评论 -
getDeclaredMethod()和getMethod()的区别
getDeclaredMethod()获取的是类自身声明的所有方法,包含public、protected和private方法。getMethod()获取的是类的所有共有方法,这就包括自身的所有public方法,和从基类继承的、从接口实现的所有public方法。原创 2016-05-05 10:20:12 · 610 阅读 · 0 评论 -
Java中的自动装箱与拆箱
下边这个文章中讲的恨透点击打开链接转载 2016-05-03 20:52:56 · 300 阅读 · 0 评论 -
Java 字符串常用操作
原文地址字符串查找String提供了两种查找字符串的方法,即indexOf与lastIndexOf方法。 1、indexOf(String s) 该方法用于返回参数字符串s在指定字符串中首次出现的索引位置,当调用字符串的indexOf()方法时,会从当前字符串的开始位置搜索s的位置;如果没有检索到字符串s,该方法返回-1 String str ="We are转载 2016-05-13 17:13:59 · 395 阅读 · 0 评论 -
java的基本类型的长度
byte 1字节short 2字节int 4字节long 8字节float 4字节double 8字节char 2字节boolean 是平台相关的Oracle版:This means a boolean is usually a 32-bit variable. However arrays of booleans are treated as arrays原创 2016-05-13 16:53:11 · 483 阅读 · 0 评论 -
java Date的例子
最近想总结一些java中使用Date的情况,在网上找到了一篇感觉不错的文章,感觉讲的非常好,就直接翻译过来了,原文:http://howtodoinjava.com/2015/10/26/java-date-examples/在这篇文章中,列出了使用java date类的例子,这些Date类用例经常会用到,总结一下放在某个地方会节省很多时间java Date 类的例子把Date转为St翻译 2015-12-07 14:06:21 · 1663 阅读 · 0 评论 -
java中不同循环的系能比较
在像java这种编程语言中,循环是控制流的最常用的方法之一,在这篇文章中我不打算讨论循环的一些基本的知识,这已经超出本篇文章的范围并且大家已经对此非常的了解了。在这篇文章中,我将列出在日常中用到的循环的不同的方式并且使用相同的集合比较他们的性能不同的循环我将列出我知道的四中不同的方式,如果你知道其他的方式,请通过评论得方式告诉我for each 语句这个技术是在java 5之后翻译 2015-12-07 13:17:21 · 637 阅读 · 0 评论 -
源码分析:ThreadLocal的使用以及源码分析
最近项目中用到了ThreadLocal,一直对它的使用原理有疑惑,比如:到底是怎么实现线程间隔离、各个名词之间是什么关系?今天看了看源码,在这里总结一下,分为三个大部分去记录,分别是:简单使用和源码分析简单使用使用这块直接上代码了,下边代码模拟了一个service,然后两个线程去跑去修改各自的变量,每个变量不受各自的修改影响,需要说明的是主线程独立于两个线程,这两个线程相当于service...原创 2019-06-22 15:26:53 · 328 阅读 · 0 评论 -
源码分析:Guava Cache的使用以及源码分析-Builder
Guava Cache是性能非常高的本地缓存,其他的还有ehcache等。相对于本地缓存还有分布式缓存,其实就是独立于业务的第三方应用,比如redis、memcahe或者自己弄个机器加大内存,把它当作另外一个集群的分布式缓存同样是可以的,但是要做到高可用不是一件简单的事情。另外,内存缓存有个不可避免的问题是易丢失,所以要持久化的就老老实实弄一个redis或者直接入库。这里主要记录是标题的内容,话不...原创 2019-06-22 23:36:12 · 680 阅读 · 0 评论 -
源码分析:Guava Cache原理以及源码分析
上一篇文章讲了LocalCache是如何通过Builder构建出来的,这篇文章重点是讲localCache的原理,首先通过类图理清涉及到相关类的关系,如下图我们可以看到,guava Cache的核心就是LocalCache,LocalCache实现了ConcurrentMap,并继承了抽象的map,关于ConcurrentMap的实现可以看这篇文章,讲的是并发hashmap的实现,对理解这篇文章有...原创 2019-06-23 15:35:26 · 2158 阅读 · 0 评论 -
二次线上JVM调优(上线GC次数过多和promotion failed)
先说明一下环境:外网20台机器:4核8G JDK8内网1台机器:32核128G JDK8上线GC次数超大线上的机器每次在上线的时候都会爆出来大量的GC,这按说是一个正常的现象,但是GC的次数明显超过了报警的阈值,所以找了一下原因,在这里记录一下这次解决问题的步骤1、首先根据以下两个方式找到相应的进程号top | grep javaps -ef |grep java2...原创 2019-07-27 10:13:03 · 1435 阅读 · 0 评论 -
深入理解 Java 内存模型
本文转自前提《深入理解 Java 内存模型》程晓明著,该书在以前看过一遍,现在学的东西越多,感觉那块越重要,于是又再细看一遍,于是便有了下面的读书笔记总结。全书页数虽不多,内容讲得挺深的。细看的话,也是挺花时间的,看完收获绝对挺大的。也建议 Java 开发者都去看看。里面主要有 Java 内存模型的基础、重排序、顺序一致性、Volatile 关键字、锁、final。本文参考书中内容。基...转载 2019-07-27 13:49:47 · 202 阅读 · 0 评论 -
Guava RateLimiter源码解析以及分布式限流总结
在一个抽奖项目中为了应对流量洪峰使用了这个RateLimiter组件,在最近一项目中为了控制对下游服务的流量使用了分布式限流组件,这篇文章就是总结这两种,首先看一些基础的东西,以下内容来源于:这里在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流缓存缓存的目的是提升系统访问速度和增大系统处理容量 降级降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决...原创 2019-07-27 12:39:12 · 2781 阅读 · 0 评论 -
源码分析:CopyOnWriteArrayList读写分离原理源码
CopyOnWriteArrayList是Java并发包中提供的一个并发容器,它是个线程安全且读操作无锁的ArrayList,写操作则通过创建底层数组的新副本来实现,是一种读写分离的并发策略。使用这种策略的还有CopyOnWriteSet,另外还有mysql的MVVC也是使用的这种原理。这篇文章的重点就是了解读写分离实现的底层原理。首先了解一下实现的原理:主要参考这里 我们都知道,集合框架...原创 2019-07-24 22:58:18 · 309 阅读 · 0 评论 -
源码:BlockingQueue实现类的源码分析
ThreadPoolExecutor在实现中使用了BlockingQueue作为工作队列,今天我们学一下相关的源码,重点看一下ArrayBlockingQueue、LinkedBlockingQueue这两个队列的实现。这篇文章大部分来源于这两篇文章,有兴趣的可以直接看原文:LinkedBlockingQueue源码分析和ArrayBlockingQueue源码分析。首先看一下BlockingQu...原创 2019-07-24 22:30:25 · 236 阅读 · 0 评论 -
源码:ThreadPoolExecutor原理和源码分析
我们使用线程池一般是按照下边的规则进行的 private static ThreadPoolExecutor executors = new ThreadPoolExecutor(10, 20, 5, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(100), new ThreadPoolExecutor.Ca...原创 2019-07-20 12:03:10 · 278 阅读 · 0 评论 -
源码分析:ReentrantLock、Semaphore以及CountDownLatch源码以及对应的设计模式
最近懵懵懂懂的看完了AQS的源码(源码分析:AQS源码),还是有很多不懂的地方,感觉还是要多来几遍的,为了更深入的理解AQS框架,看一下使用AQS的ReentrantLock、Semaphore以及CountDownLatch,直接上代码吧,解释都在注释里/** * 这里是重入锁,我们需要关注一下重入锁是怎么实现的,两个条件: * 1. 在线程获取锁的时候,如果已经获取锁的线程是当前线程...原创 2019-07-18 23:48:31 · 262 阅读 · 0 评论 -
其他:synchronized原理分析
昨天在看EventBus代码的时候看到了这么一段代码,我们理解的synchronized是一个很重量级的锁,但是用在eventbus中会不会影响性能呢,还是因为已经对synchronized进行了优化,在这里有必要在学习一下了synchronized (this) { super.invokeSubscriberMethod(event); }先看一下...转载 2019-06-30 10:34:30 · 293 阅读 · 0 评论 -
ConditionObject源码分析
先看一下其实现的接口:public interface Condition { /** * 暂停此线程直至一下四种情况发生 * 1.此Condition被signal() * 2.此Condition被signalAll() * 3.Thread.interrupt() * 4.伪wakeup * 以上情...原创 2019-07-14 15:49:43 · 607 阅读 · 1 评论 -
源码分析:AQS源码
在开始这篇源码之前,最好先看下转载整理的这篇文章,有很多值得学习的地方。AQS是用来构建锁或者其他同步组件的基础框架。总体来说,它使用一个 int 成员变量来表示同步状态,通过 CAS 操作对同步状态进行修改,确保状态的改变是安全的。通过内置的 FIFO (First In First Out)队列来完成资源获取线程的排队工作。1、AQS 同步和 synchronized 关键字同步在介绍...原创 2019-07-14 12:02:43 · 778 阅读 · 0 评论 -
源码:EventBus源码原理分析
一直对EventBus的实现原理比较好奇,最近看了一下源码,版本是19.0,在这里做一个记录,首先看一下EventBus的其中几个关键变量的类图:老规矩直接在代码上通过注解分析,这里的核心只是EventBus,不涉及到发布订阅,这个一会再讲 @Beta public class EventBus { private static final Logger logger ...原创 2019-06-29 12:47:14 · 743 阅读 · 0 评论 -
JUC同步器框架(AQS框架)原文翻译
这是李老头写的一篇论文,这篇文章来自,这里,在看之前最好先把下边的知识了解透彻。克雷格.兰丁&hagersten (CLH Lock) CLH、MCS锁的原理及实现Java并发框架——AQS阻塞队列管理(二)JAVA多线程之——自旋锁、CLH、MCS简单的非公平自旋锁以及基于排队的公平自旋锁的实现MCS锁的原理和实现CLH锁的原理和实现我的Java设计模式-模板方法模式下边是正文...转载 2019-07-09 23:42:42 · 962 阅读 · 3 评论 -
其他:volatile的原理解析
在看AtomicInteger代码的时候,看到了它的原始是这么定义的 private volatile int value;,在unsafe类中有这几种原生的方法 var5 = this.getIntVolatile(var1, var2); var6 = this.getLongVolatile(var1, var2); var5 = this.getObjectVolat...转载 2019-06-27 23:37:05 · 430 阅读 · 0 评论 -
源码:并发包-AtomicInteger的源码解析
花了一点时间看了一下源码,记录了一下,在这里把记录的东西贴出来,和前边的文章有一些区别 public class AtomicInteger extends Number implements java.io.Serializable { private static final long serialVersionUID = 6214790243416807050L; /...原创 2019-06-26 23:56:15 · 152 阅读 · 0 评论 -
java的Iterator
昨天在看《java并发编程实践》的时候看到了一句话:”对容器的标准迭代方式都是使用Iterator“,虽然对集合进行迭代,但是想想自己写的代码,似乎又不是这么回事,把这个问题弄明白在网上找了一些资料,直接转过来了Iterator iterator = list.iterator();while(iterator.hasNext()){ String string = iterato转载 2016-01-04 19:34:29 · 450 阅读 · 0 评论 -
怎么在map上进行迭代(java)
在java中的map有很多种迭代方式,我们来看一下一些最常用的方式并且看一下他们的优点和缺点,因为java中的map都继承自Map接口,下边的接口适用于实现map接口的所有形式(HashMap、TreeMap、LinkedHashMap和HashTable等等)方法一:在实体上使用for-each循环这是在大多数情况下使用最常用的一种方式。如果你需要key和value的时候,可以使用这种方原创 2016-01-04 11:21:01 · 635 阅读 · 0 评论 -
java中对象的克隆
克隆是完全复制另一个物体,在java中,意味着创建一个和原对象有相似状态的对象。clone()方法就提供了这个功能,在这篇文章中,我们将探索java 克隆的一些最重要的方面。这篇文章是mini guides的一个部分详细解释克隆克隆是创建原对象的一个复制,字典上的意思是“精确的复制”。默认情况下,java的克隆是一个字段一个字段的复制。例如:对象类调用的clone()方法,对将要复制的类的翻译 2015-11-25 15:24:38 · 5818 阅读 · 2 评论 -
Java之voliate, synchronized, AtomicInteger使用
1: voliate 用在多线程,同步变量。 线程为了提高效率,将成员变量(如A)某拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致的情况。volatile就是用来避免这种情况的。volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A) ,但是不能用其来进行多线程同步控制转载 2015-09-20 15:31:57 · 1861 阅读 · 0 评论 -
Java中Runnable和Thread的区别的疑问
Java中Runnable和Thread的区别的疑问,为什么说继承自Thread类的线程不能实现资源共享呢原创 2015-06-14 19:19:53 · 862 阅读 · 1 评论 -
Java多线程生命周期
这两天在看线程的东西,根据牛人的博客总结了一些:每个Java程序至少包含一个线程:主线程。其它线程都是通过Thread构造器或实例化继承类Thread的类来创建的。正在运行的线程通常是由操作系统创建的;Thread对象是由JavaVM创建的,在一个线程对新线程的Thread对象调用start()方法之前,这个新线程并没有真正开始执行。Thread对象在其线程真正启动之前就已经存在了,而且其线程退出原创 2015-06-14 17:26:17 · 574 阅读 · 0 评论 -
json字符串解析
package com.gamesvr.framework.util;import java.beans.IntrospectionException;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.math.BigDecimal;import java.math.Big原创 2015-07-12 15:54:23 · 1259 阅读 · 0 评论 -
Java String类型时间比较大小
晚上写了比较时间的函数,这里总结一下package com.zz.bridge.impl;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;/** * 测试类 * Copyright 20原创 2015-06-09 22:28:55 · 21822 阅读 · 2 评论