自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 Java并发编程系列(七)---- 线程池的使用

如果用new Thread().start的方式使用线程,当线程执行完毕后会销毁,如果频繁地创建和销毁线程,对系统的消耗将会非常大。那么如果线程执行完任务后还可以重新使用,那么就可以提高性能。线程JDK里面线程池主要使用的是ThreadPoolExecutor,现在来初步感受一下线程池的使用:package com.rancho945.concurrent;import java.util.conc

2017-02-12 21:25:46 394

原创 Java并发编程系列(六)---- ThreadLocal使用及源码分析

ThreadLocal成为线程本地变量,从名字大概可以猜出是和线程本地变量有关的,提供的方法主要有这么几个//获取值public T get() { }//设置值public void set(T value) { }//移除public void remove() { }//初始化值protected T initialValue() { }ThreadLocal的使用我们看看Thr

2017-02-11 00:56:52 330

原创 Java并发编程系列(五)----ReentrantLock源码解析

ReentrantLock有三个内部类Sync、FairSync、NonfairSync,主要类图关系用UML表示为: 首先看看成员变量 private final Sync sync;该变量表示锁的类型,是公平锁还是非公平锁,具体要看构造函数。再看看构造函数:public ReentrantLock() { sync = new NonfairSync();}public Reen

2017-02-10 00:11:49 532

原创 Java并发编程系列(四)----CAS与原子类

为了实现线程安全,我们前面都是用锁的方式来保证原子性,那么有不加锁能不能实现线程安全呢?这要从乐观锁和悲观锁说起。 1. 悲观锁。所谓的悲观锁,就是对资源的访问,默认情况下是认为会存在资源抢占,所以每次都要加锁,只能有一个线程执行。乐观锁。另外一种锁的策略,默认资源不存在竞争,多个线程可以同时操作,在最后进行更新数据的时候,查看该资源是否被其他线程修改过,没有则执行更新,有则放弃本次操作。CA

2017-02-08 20:16:03 1216

原创 Java并发编程系列(三)----Lock

前面我们讲到synchronized,既然synchronized已经能够保证线程安全,那么为什么还需要Lock呢? 我们从synchronized的缺陷讲起。synchronized 的缺陷只有线程执行完锁保护的代码或者发生异常或者锁的持有线程主动调用了wait才能释放锁,synchronized锁等待过程没有一种响应中断机制(注意和Thread的interrupt中断机制的区别),也没有等待

2017-02-06 23:24:10 283

原创 Java并发编程系列(二)----synchronized锁详解

前面我们分析了volatile关键字,我们知道volatile关键字是无法保证线程安全的。那么Java的线程安全主要由内置的synchronized关键字和Locks包下的类来保证。关于synchronized,有两种同步方式,一种是同步方法,另外一种是同步代码块,关于什么是同步代码块,什么是同步方法就不细讲了,这里主要讲讲Java的内置锁。看一段代码package com.rancho945.co

2017-02-06 00:34:17 463 1

原创 Redis安装及使用

redis介绍redis是一种key-value型数据结构储存系统,可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(

2017-02-05 20:39:15 324

原创 Java并发编程系列(一)----深入剖析volatile关键字

从内存模型讲起由于CPU的高速运算,主内存的频率远远达不到要求,因此需要将用到的数据进行缓存,比如一个很简单的操作: i=i+1;这样CPU首先会从主内存中将i的值读到CPU的高速缓存(工作内存)中,然后进行加1操作,完事之后将新的值写入到主内存中。有人会想,MDZZ,这有什么好说的,看似简单的一小步,确是并发编程爬坑的一大步。假如i的值为0,两个线程进行操作,最终的结果一定是2吗?想象一下这

2017-02-03 20:56:21 413

原创 MyBatis初探

下载到github上下载MyBatis的jar包,点击这里,到github上查看各个版本,选择相应版本进行下载,由于网速过慢,多次下载失败,我选择了去 csdn上下载了个jar包,版本为3.2.3。除此之外还需要导入JDBC包,下载地址点击这里。导包的方式详见Eclipse引入jar包的三种方式,推荐使用user lib的方式添加。工程结构如下:

2017-01-24 21:46:23 235

原创 微信小程序填坑篇(一)

在微信小程序浅析中讲到微信小程序原理以及怎么新建一个hello world 工程,还挖了坑。现在把坑填上,捋一捋小程序的代码结构。

2017-01-15 02:33:13 2306

原创 微信小程序浅析

最近微信小程序火得不行,玩玩看。官网地址1.小程序原理分析小程序为发布之前,好多人说要颠覆什么XXX。作为一名搬砖狗,我思考的是他的技术原理是什么,顿时各种热修复、动态更新之类的黑科技涌入脑海,仔细想想,发现不可能,且不说热修复(仅针对android,IOS不了解)各种兼容性稳定性问题,实现难度问题,鹅厂做的东西怎么可能让你侵入原生代码呢?于是想起了《App研发录》竞品分析章节中HTML5的zip包

2017-01-13 23:53:39 1048

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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