自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网易三个半月 总结

   从4月16号进网易实习,到现在约莫也有三个多月了,逝者如斯夫,实习时间已经过了一半。周五的时候跟大哥聊天,想要总结一下这三个多月来网易的所见所学。这里就按照我在网易做了什么,学到了什么,以后想要做什么,以后想要学什么的顺序来简单写一写。所做的和想做的都是输出,所学和想学的都算是自己的输入以及可以输出的东西。所做  看了一下最近三个月的周报,主要做的事情可以分为下面几个部分:熟悉...

2018-08-05 13:26:10 366

原创 部署服务器常用Linux命令

  最近部署服务器,系统使用的是Linux,这里我也是第一次相对比较多的接触Linux,下面来简单说一下用的最多的Linux命令。 ls (查看当前目录下所有文件以及文件夹)-l 列出文件属性以及权限、创建用户、创建时间等信息。-a 列出所有文件,包括隐藏文件。-R 以递归的形式列出文件夹下的所有文件。cd 进入某一个文件夹cd /usr/ 进入/usr文件夹下...

2018-07-12 20:05:30 1602 1

原创 CentOs 7 下nginx的安装和配置

nginx是一个很好的反向代理服务器,这几天在部署服务器的时候也遇到了相关的问题,这里来简单说一下nginx的相关安装和配置问题,以及其中的含义。安装首先需要安装一些依赖,这里可以使用 下面代码来安装C++的依赖。 -yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl–devel其次需要把已经安...

2018-07-10 21:52:49 207

原创 线程池工作原理及源码分析

试试

2018-06-24 15:31:36 1306

原创 CopyOnWriteArrayList源码分析

       如何线程安全的操作一个数组对象,类似于前面分析的ArrayBlockingQueue以及Vector,实际上都是使用加锁来实现,只不过第一个底层是使用ReentrantLock,第二个底层采用synchronized关键字来实现。对于任意一个线程访问数组,都会阻塞其他线程。但是实际上对于一个数组来说,当我们并发的去读的时候是不会出现并发问题的,因此如果可以在并发读的情况下不加锁,而在...

2018-06-12 21:57:23 139

原创 BlockingQueue接口及其实现类的源码分析

      BlockingQueue是一个阻塞队列的接口,提供了一系列的接口方法。其中方法主要可以分为三类,包括Insert相关的add、offer、put,remove相关的remove()、poll()、take()方法,以及查看相关的peek()、element方法等。阻塞队列是线程安全的容器,其元素不允许为null,否则会抛出空指针异常。阻塞队列可以用于生产者消费者场景中去。      ...

2018-06-11 22:09:17 232

原创 AQS源码分析

      AbstractQueuedSynchronized(AQS)是一个抽象的队列同步器,它本身是一个抽象类,提供一个FIFO的等待队列来存放阻塞资源和一个state状态来保存锁的信息。在实际的使用中,比如ReentrantLock和ReentrantReadWirteLock中,它们本身都有一个Syn类来继承AQS并做一些状态操作。      锁的使用过程大概如下,在实际使用锁的过程...

2018-06-07 21:14:19 404

原创 ReentrantReadWriteLock源码分析

     ReentrantLock中,线程都是以独占的方式来获得锁,但是在很多情况下,比如读多写少的情况,使用独占的方式明显不合适,读和读之间不会修改共享资源,可以保证不会出现问题,这种情况下使用ReentrantReadWriteLock会更合适。读线程之间使用共享锁,写写和写读之间使用独占锁。ReentrantReadWriteLock的类结构如下图所示:      其中Syn实现了AQS中...

2018-06-05 20:53:14 406

原创 Spring JPA 分页

     JPA本身提供分页功能,前端传过来pageable对象,也就是在路径上添加?page=1&size=5这样的参数(代表第一页,每页五个)。从controller层里获得Pageable pageable对象,然后一直传到service层,dao层最后到repository中去。JPA会自动为我们分页。如下例子一样 @Query(value = "select b from ...

2018-06-04 16:52:40 501

原创 可重入锁源码分析

/** * 一个抽象类,是锁同步控制的基础。子类有公平锁和非公平锁两种。 */ abstract static class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID = -5179523762034025860L; ...

2018-06-03 20:47:31 885

原创 AtomicLong、AtomicIntger源码分析

    Atomic原子包下大概可以分成三类,AtomicInteger、AtomicLong、AtomicBoolean这三个是类似的,这里只写一下AtomicLong相关源码。    Atomic包是基于CAS实现的,CAS需要三个值,分别是要更新的值V,期望值E和新值N。当且仅当V和E相等的时候才可以使用新值对V进行替换,当发生冲突时就循环此过程知道成功为止。CAS是基于UNSAFE这个类实...

2018-05-28 20:49:07 512

原创 Java 高并发程序设计 读书笔记

     高并发程序设计这本书从浅入深,首先从并发的基础概念(同步异步、并发并行等等)开始,让读者对于并发有一个比较浅显的认识,然后讲述了并行程序的基础——线程,这里主要讲了一下线程的相关状态和相关的操作,然后提了几个可能会因为线程而出问题的错误。接下来讲了一下Java中比较常用的并发包里的类,包括锁、线程池、以及一些并发容器。第四章介绍了一些有关锁的概念以及如何通过优化锁来提高性能,比如锁粗化、...

2018-05-24 22:13:39 211

原创 HashSet和TreeSet源码分析

   Set是一个常见接口,用来保存不同的元素。常用的实现了Set接口的类有HashSet,TreeSet。一个底层基于HashMap实现,另一个基于TreeMap实现,理解了上述两个Map之后分析Set源码就比较简单了。HashSet源码分析    hashset 基于HashMap实现,把传入的值作为HashMap的key,由于底层HashMap的key是不可能重复的,因此HashSet也是不...

2018-05-18 20:53:26 312

原创 TreeMap 源码分析

   TreeMap中重要参数及结构 /** * treemap中包含一个比较器,可以用来定义顺序 */ private final Comparator<? super K> comparator; private transient Entry<K,V> root; /** * 树中键值对的个数 */...

2018-05-18 13:04:52 144

原创 Spring Security中使用默认定义403出现的异常

ExceptionHandlingConfigurer类 public ExceptionHandlingConfigurer<H> accessDeniedPage(String accessDeniedUrl) { AccessDeniedHandlerImpl accessDeniedHandler = new AccessDeniedHandlerImp...

2018-05-11 22:24:47 1911 1

原创 LinkedList源码分析 (1.8)

       LinkedList也是Java容器中比较简单的存在,它的底层是采用双向链表来实现的。常用的LinkedList方法主要包括下面这些。add,addFirst,addLast(添加元素,在首部添加元素,在尾部添加元素),get,getFirst,getLast(获取元素,获取首部元素,获取尾部元素),indexOf,lastIndexOf(返回指定元素出现第一次的索引,置顶元素出现最...

2018-05-08 19:52:24 349

原创 ArrayList 源码分析 (相差无几的1.7和1.8)

      ArrayList是Java容器中相对比较简单的一个,它底层是采用数组实现的,包括的主要操作有remove 、set、contains、clear、add、clone、indexOf、toString等等常用的方法,下面来简单分析一下这些方法的实现,有些实在是比较简单的就不写了。ArrayList重要参数及构造方法 /** * 默认容量为10 */ pr...

2018-05-07 22:21:08 1474

原创 从Java编程思想看Java体系结构

     Java编程思想中的章节一共有22章,除了图形界面那一章之外,其他的可以简单的分为三大类,主要包括Java的核心语言基础、面向对象的有关特性和开发相关。这也是Java体系结构的组成部分。下面来细细划分三大类,并由此管窥Java体系结构。   Java语言核心基础      语言特性相关或者说是通用语言相关的部分又可以以下七个部分。    操作符      Java中的操作符主要包括+,-...

2018-05-07 20:36:11 233

原创 HashMap源码分析

HashMap概述       HashMap用于存储键值对,底层继承了AbstractMap类并实现了Map接口,Cloneable接口,以及Serializable接口。其数据结构的底层是一个Table数组,数组中存放的是Entry节点。          Entry是一个静态内部类,实现了Map.Entry接口,主要参数是key(对应HashMap中的key值),value(对应HashMa...

2018-04-28 18:52:18 169

空空如也

空空如也

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

TA关注的人

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