自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(119)
  • 收藏
  • 关注

原创 Java NIO通道Channel的原理与获取

通道Channel:由java.nio.channels包定义。Channel表示IO源与目标打开的连接。Channel类似于传统的"流",只不过Channel本身不能直接访问数据,Channel只能与Buffer进行交互。传统的数据流:CPU处理IO,性能损耗太大改为:内存和IO接口之间加了 DMA(直接存储器),DMA向CPU申请权限,IO的操作全部由DMA管理。CPU

2017-07-31 23:53:15 9211 1

原创 Java NIO直接缓冲区与非直接缓冲区区别

物理磁盘->内核地址空间->用户地址空间->应用程序OS                              ->                           JVM直接缓冲区内核地址空间和用户地址空间之间形成了一个物理内存映射文件,减少了之间的copy过程。存在风险:用于不易控制GCpackage com.expgig

2017-07-31 22:38:39 7079 4

原创 Java NIO缓冲区(Buffer)的数据存取

缓冲区(Buffer):用于特定基本数据类型的容器。由java.nio包定义的,所有缓冲区都是Buffer抽象类的子类。Java NIO中的Buffer主要用于与NIO Channel 进行交互,数据是从Channel读入Buffer,从Buffer写入Channel中。package com.expgiga.NIO;import java.nio.ByteBuff

2017-07-31 22:38:05 649

原创 Java NIO与IO的区别

Java NIO(New IO Non-blocking IO)是从Java1.4开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有相同的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。Java NIO 与 IO的主要区别:IO面向流(Streaming)   单

2017-07-31 22:37:46 281

转载 UDFs — User-Defined Functions

原文:https://jaceklaskowski.gitbooks.io/mastering-apache-spark/spark-sql-udfs.htmlUser-Defined Functions (aka UDF) is a feature of Spark SQL to define new Column-based functions that extend the

2017-07-31 14:01:51 593

原创 线程池ThreadPool使用示例

package com.expgiga.JUC;import java.util.ArrayList;import java.util.List;import java.util.concurrent.*;import static java.util.concurrent.Executors.newFixedThreadPool;/** * 一、线程池:提供了一个线程队列,队列

2017-07-31 14:00:52 1444

原创 线程八锁示例

package com.expgiga.JUC;/** * 判断打印输出的是"one" or "tow"? * * 1.两个普通同步方法,两个线程标准打印 //one, two * 2.新增Thread.sleep()给getOne(),打印 one, two * 3.新增普通方法getThree(),打印 three, one, two * 4.两个普通同步方法,两个Number

2017-07-30 20:53:54 697

原创 调度线程池ScheduledThreadPool使用示例

package com.expgiga.JUC;import java.util.Random;import java.util.concurrent.*;/** * 一、线程池:提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外的开销,提高了响应速度。 * 二、线程池的体系结构: * java.util.concurrent.Executor:负责线

2017-07-30 20:53:21 7462 2

原创 ReadWriteLock使用示例

package com.expgiga.JUC;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;/** * 1.ReadWriteLock:读写锁 * 写写/读写:需要互斥 * 读读 不需要互斥 */public cl

2017-07-30 20:52:25 532

原创 Lock 生产者消费者模型示例

package com.expgiga.JUC;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 生产者消费者案例 */public class TestPr

2017-07-30 20:51:53 352

原创 Java Lock使用示例

package com.expgiga.JUC;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 一、用于解决多线程安全问题的方式: * 1.同步代码块 synchronized 隐式锁 * 2.同步方法 synchronized 隐式锁 * 3

2017-07-30 20:50:54 2535

原创 CountDownLatch使用示例

package com.expgiga.JUC;import java.util.concurrent.CountDownLatch;/** * CountDownLatch,闭锁:在完成某些运算时,只有在其他所有线程的运算全部完成时,当前运算才会继续执行。 */public class TestCountDownLatch { public static void main

2017-07-30 20:50:20 363

原创 CopyOnWriteArrayList使用示例

package com.expgiga.JUC;import java.util.Iterator;import java.util.concurrent.CopyOnWriteArrayList;/** * CopyOnWriteArrayList/CopyOnWriteArraySet:"写入并复制" * * 注意:添加操作多时,效率低。因为每次添加时,都会进行一次复制。开销会

2017-07-30 20:49:46 927

原创 Callable使用示例

package com.expgiga.JUC;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;/** * 一、创建执行线程的方式三:实现Callable接口。 * 相较于实现Ru

2017-07-30 20:49:03 1803

原创 Atomic使用示例

package com.expgiga.JUC;import java.util.concurrent.atomic.AtomicInteger;/** * 一、i++的原子性,i++的操作,分为三部分:"读-改-写" * int i = 10; * i = i++; //10 * * int temp = i; * i = i + 1;

2017-07-30 20:48:33 639

原创 ForkJoinPool框架示例

package com.expgiga.JUC;import java.time.Duration;import java.time.Instant;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.ForkJoinTask;import java.util.concurrent.Recursive

2017-07-30 20:46:59 392

转载 常用的IntelliJ IDEA 快捷键

快速修复 alt+enter代码提示 alt+/组织导入 ctr+alt+O格式化代码 ctr+alt+L大小写转化  ctr+shift+U 删除当前行  ctr+Y剪切当前行  ctr+X 插入复制当前行 ctr+D向下插入一新行  shift+enter一行代码上下移动  ctr+shift+UP/DOWN 生成构造函数、get、set方法

2017-07-29 12:39:21 375

原创 Linux unzip命令

unzip命令用于解压由zip命令压缩的".zip"压缩包。语法:unzip(选项)(参数)选项:略参数:压缩包:指定要解压的".zip"压缩包。示例:将压缩文件text.zip在当前目录下解压缩。unzip text.zip将压缩文件text.zip在指定目录/tmp下解压缩,如果有相同的文件存在,要求unzip命令不覆盖原

2017-07-28 21:49:56 603

转载 MySQL索引专题一 认识索引

关于这个专题想写MySQL的索引专题是源于之前自己在学习MySQL索引时痛苦的经历,你在网上搜索关于MySQL的索引的文章,大多是支离破碎,没有系统性的对知识点的罗列堆砌,文章中会说明你要如何如何做,但是很少涉及去讲为什么要这么做,哪些不能做,很难对MySQL有一个系统性的认知,学习如果没有系统性的话,就很难在实际的项目中灵活运用,出于此目的,自己就打算写一个关于MySQL索引的专题系

2017-07-26 10:28:46 448

转载 Java面试知识点总结

本篇文章会对面试中常遇到的Java技术点进行全面深入的总结,帮助我们在面试中更加得心应手,不参加面试的同学也能够借此机会梳理一下自己的知识体系,进行查漏补缺(阅读本文需要有一定的Java基础)。本文的问题列表来自于nowcoder.com/discuss/30 在此感谢原作者的无私分享:)1. Java中的原始数据类型都有哪些,它们的大小及对应的封装类是什么?

2017-07-26 10:25:11 392

转载 回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议

引言    其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来。LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的。  但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了。  其实之前LZ写过一篇文章,

2017-07-26 10:23:12 620

转载 Spark SQL连接MySQL示例

原文:https://my.oschina.net/u/1439539/blog/657973package com.dt.spark.SparkApps.sql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ja

2017-07-26 10:14:40 2012

转载 HBase性能调优<转>

原文:http://kenwublog.com/hbase-performance-tuning因官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果。所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正。配置优化zookeeper.session.timeout默认值:3分钟(180

2017-07-25 15:41:34 333

转载 深入剖析 redis 数据淘汰策略

原文:http://blog.sae.sina.com.cn/archives/4045概述在 redis 中,允许用户设置最大使用内存大小 server.maxmemory,在内存限定的情况下是很有用的。譬如,在一台 8G 机子上部署了 4 个 redis 服务点,每一个服务点分配 1.5G 的内存大小,减少内存紧张的情况,由此获取更为稳健的服务。redis 内存数据

2017-07-24 15:51:44 348

转载 Concurrency in Scala

原文:https://twitter.github.io/scala_school/zh_cn/concurrency.htmlRunnable/CallableRunnable接口只有一个没有返回值的方法。trait Runnable { def run(): Unit}Callable与之类似,除了它有一个返回值trait Callable[V]

2017-07-24 14:56:18 416

转载 Scala基础—多线程示例

原文:https://my.oschina.net/u/877759/blog/501733写的一个scala多线程的小demo,以备后用Runnable/Callable区别:Runnable无返回值,Callable线程执行完有返回值Runnable示例import java.util.concurrent.{Executors, ExecutorService

2017-07-24 14:52:24 2209

原创 JVM G1收集器

可以像CMS收集器一样,GC操作与应用的线程一起并发执行紧凑的空间内存区间且没有很长的GC停顿时间需要可预测的GC暂停耗时不想牺牲太多吞吐量性能启动后不需要请求更大的Java堆使用场景:1.Full GC 次数太频繁或者消耗时间太长2.对象分配的频率或代数提升显著变化3.受够了太长的垃圾回收或者内存整理时间(超过0.5-1s)

2017-07-22 22:21:41 379

原创 JVM CMS GC收集器

XX:+UseConsMarkSweepGC算法:根搜索四个阶段:CMS-initial-mark 对象是否可到达 会出现程序暂停的对象CMS-concurrent-mark 确定哪些对象不可到达CMS-remark  再次确认对象是否可到达,会出现程序暂停的对象CMS-concurrent-sweep 会导致内存碎片。要求系统低延迟的情况会选择CMS。

2017-07-22 22:04:58 485

转载 JVM GC算法和种类【重要】

原文:http://www.cnblogs.com/smyhvae/p/4744233.html本文主要内容:GC的概念GC算法    引用计数法(无法解决循环引用的问题,不被java采纳)      根搜索算法      现代虚拟机中的垃圾搜集算法:      标记-清除      复制算法(新生代)      标记-压缩(老年代)      分代收集

2017-07-22 21:33:09 628

原创 JAVA对象内存逃逸技术

“栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。 ”   可见,垃圾回收GC是针对堆Heap的,而栈因为本身是FILO - first in, last out

2017-07-22 21:01:28 2339

原创 JVM的Metaspace,JAVA8以前是Permanent Area

JVM为啥从Permanent Area转向Metaspace呢?1. Parmanent容易出现OOM。2. GC,Parmanent发生的也是Full GC。Metaspace的2个特征:1. 使用的不是JVM的内存空间,使用的是OS的内存空间。2. Metaspace用动态的伸缩,延缓GC的到来。Permanent Area发生GC条件:1.

2017-07-22 15:01:32 385

原创 JVM Old Generation的Full GC日志字段不详解

在一次程序运行时报的错误:PSYoungGen字段的解释,见http://blog.csdn.net/u013063153/article/details/75732050ParOldGen字段的解释:Par是算法7129K:GC发生前,所占大小7129K:GC发生后,所占大小7168K:Old Generation的大小8114K:

2017-07-22 14:37:34 640

原创 JVM Young Generation的minor GC日志字段不详解

在一次程序运行时报的错误:[GC (Allocation Failure)[PSYoungGen:2336K->288K(2560K)]8274K->6418K(9728K), 0.0112926secs][Times: user=0.06 sys=0.00, real=0.01 secs]PSYoungGen:表示GC的类型,Young Generation的GC2336

2017-07-22 14:23:22 487

原创 JVM的GC中对象的age以及JVM内存的分配策略

Young Generation中的GC叫minor GC,Eden中的对象拷贝到S。Old Generation中的GC叫Full GC。age,官方文档默认为15,age也相当于计数器,每次GC,age+1,age代表GC的次数。在GC时,S中的对象的age一样的这批数据大于S空间1/2的话,此时age大于或者等于这批对象的对象,就会直接进入Old Generation,而不用达到

2017-07-22 13:57:09 1189

原创 JVM GC的核心参数: -XX:Newratio -XX:Newsize -XX:Maxnewsize -XX:Surviorratio

-XX:Newratio:  设置Yong 和 Old的比例,比如值为2,则Old Generation是 Yong Generation的2倍,即Yong Generation占据内存的1/3-XX:Newsize : 设置Yong Generation的初始值大小-XX:Maxnewsize:设置Yong Generation的最大值大小-XX:Surviorratio : 设置E

2017-07-22 13:32:09 32058

原创 JVM Young大小对GC性能的影响

JVM Yong GenerationEdenFrom    ToOld Generaion经过几次GC后依然存在的对象或者说一开始就比较大的对象。GC过程:Eden的对象拷贝到To(S2)中,To满了,和From交换,GC超过一定次数,就放到Old Generation中。Old Generation满了,发生Full GC。放在Old Gen

2017-07-22 13:12:05 4509

转载 Scala 字符串插值器s,f 和 raw.

原文:http://docs.scala-lang.org/zh-cn/overviews/core/string-interpolation.htmlJosh Suereth 著简介自2.10.0版本开始,Scala提供了一种新的机制来根据数据生成字符串:字符串插值。字符串插值允许使用者将变量引用直接插入处理过的字面字符中。如下例:val name="

2017-07-21 09:43:29 4257 1

原创 JVM GC的内存结构:Young Generation(Eden,from,to)、Old Generation、Permanent Generation

Yong Generation: Object和基本活跃的区域Eden:小Object出生的地方(大的Object可能直接进Old Generation)From(S1):To(S2):Eden中的对象被GC,先放在To中。To快满时,From和To交换。(From 和 To大小一样,是Eden和Old Generation的缓冲地带)Old Generation:经过

2017-07-20 21:52:56 2980

原创 JVM 三大性能调优参数-Xms -Xmx -Xss

-Xss规定了每个线程堆栈的大小。一般情况下256K是足够了。影响了此进程中并发线程数大小。-Xms初始的Heap的大小。-Xmx最大Heap的大小。在很多情况下,-Xms和-Xmx设置成一样的。这么设置,是因为当Heap不够用时,会发生内存抖动,影响程序运行稳定性。

2017-07-20 21:25:37 53848 2

原创 JVM线程引擎和内存共享区的交互及程序计数器

多线程的Java应用程序:线程:从面向对象(OOP)的角度而言,相当于一个对象,该对象中具有执行代码,同时也有要处理的数据,数据包含Thread工作时要访问的数据,同时也包含线程的Stack。在Stack中,包含Thread本地的数据,也包含了拷贝的全局数据。从面向过程的角度而言,线程 = 代码 + 数据。Main Memory:全局共享内存空间程序计数器(Progra

2017-07-20 21:05:23 557

空空如也

空空如也

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

TA关注的人

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