努力奔跑中的coder

源代码的github地址:https://github.com/louyuting

IDE工具的使用参考的一些blog

IDEA 创建Maven Web项目 IDEA中 @override报错的解决方法

2016-12-29 18:42:25

阅读数 304

评论数 0

J.U.C--原子变量类AtomicInteger的源码解析与原理分析

原子变量类比锁的粒度更加细,量级更轻,并且对于在多处理器系统上实现高性能的并发代码来说非常关键。 原子标量类可以分为4组:标量类、更新器类、数组类以及复合变量类。最常用的就是原子变量累计就是标量类:AtomicInteger、AtomicLong、AtomicBoolean、AtomicRefer...

2016-12-29 17:21:25

阅读数 310

评论数 0

J.U.C--CAS用Java模拟实现

前面一篇blog讲了悲观锁以及乐观锁的各自优点,并详细的说了乐观锁的一种实现方式CAS原理以及Java对CAS的支持。 Java模拟CAS的实现。 注意:锁是一种阻塞的实现方式,而CAS是一个非阻塞算法的常见实现。 CAS全称比较并交换。在Java的底层对这个的实现是利用了底层的机器指令。CA...

2016-12-29 14:35:37

阅读数 675

评论数 0

J.U.C--乐观锁与悲观锁以及乐观锁的一种实现方式-CAS

乐观锁与悲观锁首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。再比...

2016-12-28 16:02:23

阅读数 861

评论数 0

算法中的亦或--数组中只出现一次的数

算法中的亦或 ^1.亦或的性质 交换律 a^b = b^a 结合律 a^b^c=a^(b^c)=(a^b)^c 0^a=a 0与任何数亦或都是这个数 a^a=0 2.典型应用:2.1 交换两个数a=a^b; b=b^a;(b^a^b=b^b^a=a) a=a^b;((a^b)^a=b)2...

2016-12-28 00:23:43

阅读数 1070

评论数 0

J.U.C--集合--生产者与消费者队列BlockingQueue

生产者与消费者队列通过wait()和notifyAll()可以解决人物之间互操作的问题,但是这是一种比较低级的方式,每次交互都必须握手,过程十分复杂。更好的方法是我们使用同步队列来解决任务之间相互协作的问题。同步队列在任何时刻都只允许一个任务插入或则删除元素,并且在队列为空时任务自动阻塞。java...

2016-12-28 00:17:42

阅读数 488

评论数 0

Java并发之线程之间协作

线程之间的协作1.wait()和notify()、notifyAll()方法(这些方法均属于基类Object)wait()函数的调用使当前线程A被阻塞以等待某个外部条件的发生(这个外部条件超出了当前方法的控制能力),通常这个条件由另外一个任务B来改变,当另外的这个任务B调用notify()或则no...

2016-12-28 00:16:35

阅读数 1307

评论数 0

Java并发之终结线程

终结任务(线程)1.在阻塞时终结1.1 线程状态一个线程可以处于以下5种状态之一: 新建:已分配必要资源和初始化,有资格获取CPU时间了,之后调度器将把这个线程转变成可运行或则阻塞态 就绪:只要调度器把时间片分给线程就可以运行。 阻塞:线程可以运行,但有某个条件组织它运行(比如IO阻塞)。该状态下...

2016-12-28 00:14:12

阅读数 580

评论数 0

Java并发之共享受限资源

当使用多线程时,多个线程之间彼此相互干涉的问题也就出现了。比如多线程爬虫时,多个线程同时维护一个uri队列,这样就可能会存在冲突。例如线程A准备取uri_a,但是线程B突然就抢走了uri_a,再比如线程A正在读取uri_b,此时线程B也来读取uri_b了。 boolean 是原子的,线程安全的。 ...

2016-12-27 23:58:22

阅读数 900

评论数 0

Java并发之线程机制

并发 使用并发需要解决的问题有多个,实现并发的方式也有多种。 1. 基本的线程机制1.1 实现线程的基本方法:1.1.1 实现Runnable接口来定义任务通过实现Runnable接口并编写run()方法来是实现一个线程类。public class MyThread implements Ru...

2016-12-27 23:50:34

阅读数 1069

评论数 0

Java创建和销毁对象的几种方式

创建对象的几种方式 构造器 静态工厂方法 通过Builder 不直接生成想要的对象,而是让客户端利用所有必要的参数调用构造器,得到一个builder对象,然后客户端在builder对象上调用类似于setter的方法,来设置每个可选参数,最后在客户端调用无参的build()方法来生成对象。下面是一...

2016-12-27 23:36:13

阅读数 1874

评论数 0

《Java源码解析》集合框架Set之LinkedHashSet

《Java源码分析》:LinkedHashSet上篇博文对HashSet的源码进行了分析,这篇博文就是对LinkedHashSet进行一个分析。HashSet是借助于HashMap来进行实现的,而LinkedHashSet是基于LinkedHashMap进行实现的。LinkedHashSet的继承...

2016-12-25 13:00:28

阅读数 238

评论数 0

《Java源码解析》集合框架Set之HashSet

《Java源码分析》:HashSet前面几篇把Map、List相关的的几个类看了下,当然Set接口相关的类也相当的重要,我们也用的比较多,因此,我们也需要了解下Set接口的两个实现类HashSet、TreeSet的源码。这篇博文是记录HashSet的源码分析。下篇博文就来记录TreeSet的源码分...

2016-12-25 12:56:19

阅读数 293

评论数 0

《Java源码解析》集合框架Map之LinkedHashMap

2016-12-24 16:01 以前都没有贴出来运行环境,今天加上OS和JDK版本,因为发现不同版本实现源码有些许差别: OS : MacOS 10.11 JDK: jdk1.7-72 LinkedHashMap1. 还是先看看LinkedHashMap类继承结构图首先说说...

2016-12-24 15:21:18

阅读数 343

评论数 0

《Java源码解析》集合框架Map之HashTable

时间:2016-12-24 11:01 >今天是2017届研究生入学考试第一天,虽然已经与我没什么关系,但还是会想去去年入学考试的今天,往事已随风逝去,具体的2016生活与技术的总结还是写一个专门的博客吧。难得的周六,难得的早起,陪着2017的考生一起吧,所以也早起写了一片博客,时间也差...

2016-12-24 11:01:42

阅读数 330

评论数 0

Java的hashCode()函数

这几天在看HashMap的源码时,发现这个Map的实现类里面大量的用到了hashCode的知识,以前也经常的听到这个函数,知道是Object类的方法,以前也看过关于这个函数的知识,但是没有做过记录,这次正好就做个记录,方便后面理解HashMap和LinkedHashMap源码。hashCode所谓...

2016-12-23 19:36:16

阅读数 406

评论数 0

《Java源码解析》集合框架Map之HashMap

前面的几篇博客分析了List的两种实现ArrayList和LinkedList实现的源码,接下来就是分析Map的几个实现,下面首先分析Map的实现之一 HashMapHashMap还是老规矩,先看HashMap的继承体系:1. HashMap的继承体系HashMap主要是继承自Abstra...

2016-12-23 14:05:47

阅读数 376

评论数 0

Java的ArrayList和LinkedList的对比

LinkedList和ArrayList的对比老生常谈的问题了,顺便在这里就把LinkedList的优缺点也给讲了。 1. 顺序插入速度ArrayList会比较快,因为ArrayList是基于数组实现的,数组是事先new好的,只要往指定位置塞一个数据就好了;LinkedList则不同,每次顺序插...

2016-12-22 15:16:03

阅读数 897

评论数 0

《Java源码解析》集合框架List之LinkedList

LinkedList1.首先看看 LinkedList 的继承体系的结构LinkedList主要是继承自AbstractSequentialList抽象类并实现了List接口、实现了Cloneable和Serializable接口使得ArrayList具有克隆和序列化的功能、实现了Deque接口和...

2016-12-21 19:37:49

阅读数 370

评论数 0

Java的transient关键字

transient这个关键字我们一般很少用到,但是我再阅读JDK源码的时候常常看到这个关键字,在这里总结一些这个关键字的用法。 这个关键字主要是用于对象的序列化的。transient是字段类型修饰符,只能修饰变量,而不能修饰方法和类。 被transient关键字修饰的变量不能再被序列化,静态变量不...

2016-12-20 10:39:50

阅读数 227

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭