自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

原创 设计模式-单例模式(其他写法)

1、饿汉式(静态常量)[可用] public class Singleton { private final static Singleton INSTANCE = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return INSTAN

2016-11-28 15:05:25 245

原创 数组求交集排序

最快速度求两个数组的交集int[] a1,int[] a2 // 排序算法 public class SortClass { static Map<Integer, Object> map = new ConcurrentHashMap<Integer, Object>(); public static void main(String[] args) throws IOExceptio

2016-11-17 17:19:29 338

原创 Java性能调优-JPS、jmap、jconsole等

jps 查看Java进程号等相关信息: jps jps -l jps -v jstack 导出dump文件和kill -3 类似 jstack 29390 >/root/a.dump jstat显示当前Java虚拟机的内存状态 jstat -class 29390 jstat -gcutil 29390 jmap 打印Java虚拟机中所有对象的数量等信息

2016-11-15 18:19:48 453

原创 TCP三次握手

TCP((Transmission Control Protocol)传输控制协议,是一个面向连接的协议。在运用此协议进行数据传输前都会进行连接的建立工作(三次握手);当数据传输完毕,连接的双方都会通知对方要释放此连接(四次挥手)。认识TCP标志位tcp标志位有6种标示:SYN(synchronous建立联机)ACK(acknowledgement 确认)PSH(push传送)FIN(finish结

2016-11-15 17:07:47 260

原创 java基础-hashmap分析

数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难。链表 链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表 那么我们能不能综合两者的特性,做出一种寻址容易,

2016-11-13 22:30:48 522

原创 java基础- 异常的层次结构

在Java中,异常分为受检查的异常,与运行时异常. 两者都在异常类层次结构中. 下面的图展示了Java异常类的继承关系. 粉红色的是受检查的异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被捕捉处理,命名为 CHecked Exception 是因为Java编译器要进行检查,Java虚拟机

2016-11-13 21:52:38 385

原创 多线程- countdownlatch、 CyclicBarrier、SemaPhore

CountDownLatch官方的解释为:一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。我们现在就把它理解为倒数计数器,什么是倒数计数器呢,通俗的理解就是这个计数器事先有一个初始计数,在这个计数减到0之前,所有的线程等待。笔者今天早晨又看一则新闻说的高考“枪手”,看来每逢高考,“枪手”必火。那我们来模拟一下“枪手”的招募过程。假如我需要10个“枪手”,招募者一

2016-11-13 15:23:33 323

原创 多线程-Atomic分析

Java.util.concurrent中提供了atomic原子包,可以实现原子操作(atomic operation),即在多线程环境中,执行的操作不会被其他线程打断。public class AtomicDemo extends Thread { private static final AtomicInteger TEST_INT = new AtomicInteger

2016-11-13 14:36:04 318

原创 多线程-CopyOnWriteArrayList

CopyOnWrite容器即写时复制的容器。往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以CopyOnWrite容器也是一种读写分离的思想,读和写不同的容器。类似的有Cop

2016-11-13 14:21:02 373

原创 多线程-队列ArrayBlockingQueue 、LinkedBlockingQueue

ArrayBlockingQueue一个由数组支持的有界阻塞队列。此队列按 FIFO(先进先出)原则对元素进行排序。队列的头部是在队列中存在时间最长的元素。队列的尾部是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列获取操作则是从队列头部开始获得元素。这是一个典型的“有界缓存区”,固定大小的数组在其中保持生产者插入的元素和使用者提取的元素。一旦创建了这样的缓存区,就不能再增加其容量。试图向已

2016-11-13 14:16:24 432

原创 多线程-线程池

Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。 n

2016-11-13 13:52:17 248

原创 多线程-lock 锁的使用

Synchronized就相当于整个对象只有一个单一的Condition(即该对象本身)所有的线程都注册在它身上,线程调度的时候之后调度所有得注册线程,没有选择权,会出现相当大的问题 。所以,Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的 Condition 对象。锁是控制多个线程对共享资源

2016-11-13 13:34:07 1213

原创 多线程-ConcurrentHashMap

因为多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap,如以下代码线程不安全的HashMap因为多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap,如以下代码效率低下的HashTable容器HashTable容器使用synchronized来保证

2016-11-13 11:46:57 778

原创 多线程系列 - 上下文切换

计算机CPU通过给每个线程分配时间片的方式了支持多线程。当前线程执行一段时间之后,会保存状态,切换到下一个线程执行任务。线程的上下文切换也是需要时间消耗的。因为系统中的线程数不是越多越好。线程数越多,上下文切换时间越长。在linux 系统中,我们可以使用vmstat 1 命令查看一下当前的上下文切换时间。 > root@ubuntu:~# vmstat 1 procs ———–memor

2016-11-13 11:35:32 785

原创 多线程系列-volatile

java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作和其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。volatile与加锁机制的区别:加锁机制

2016-11-13 11:24:24 280

原创 jvm-内存模型

1.方法区也称”永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小。运行时常量池:是方法区的一部分,Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译器生成的各种符号引用,这部分

2016-11-11 17:15:50 275

原创 java多线程脑图-需要熟悉的知识

2016-11-04 15:18:43 1146

13.6location.zip

location 13.6 驱动,驱动程序 ,里面包含证书的前面 可以正常使用。解压缩之后放入到location里面driver里面 就可以了

2020-07-25

空空如也

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

TA关注的人

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