自定义博客皮肤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)
  • 收藏
  • 关注

转载 盘一盘 NIO (三)—— Selector解析

Selector是个啥?Selector是Java NIO核心组件中的选择器,用于检查一个或多个Channel(通道)的状态是否处于可读、可写。实现一个单独的线程可以管理多个channel,从而管理多个网络连接。使用一个线程进行处理,也避免了线程上下文切换带来的开销。而在传统IO模型下,服务器处理请求就是accept()方法阻塞等待请求进来,有请求连接之后,创建一个线程去保...

2019-08-25 20:58:00 235

转载 盘一盘 NIO (二)—— Channel解析

Channel是个啥?Channel,顾名思义,它就是一个通道。NIO中的所有IO都是从 Channel 开始的。Channel通道和流非常类似,主要有以下几点区别:1、流是单向的,通道是双向的,可读可写。2、流读写是阻塞的,通道可以异步读写。3、流中的数据可以选择性的先读到缓存中,通道的数据总是要先读到一个缓存Buffer中,或从缓存Buffer中写入。继...

2019-08-24 22:41:00 405

转载 盘一盘 NIO (一)—— Buffer源码解析

Buffer是个啥?Buffer 即缓冲区,用来暂存输入输出数据的区域。Buffer对象是一份固定数量的数据的容器,实质上是一个数组。但是一个缓冲区不仅仅是一个数组,缓冲区提供了对数据的结构化访问,还可以跟踪系统的读/写进程。在 Java传统 IO 中,数据直接写入或者将数据直接读到 Stream 对象中。而在 NIO 中,所有数据都是用缓冲区处理的。在读取数据时,它是...

2019-08-22 16:04:00 186

转载 盘一盘 AQS和ReentrantLock

AQS是个啥?AQS(AbstractQueuedSynchronizer)是Java并发用来构建锁和其他同步组件的基础框架。许多同步类实现都依赖于它,如常用的ReentrantLock/ReentrantReadWriterLock/CountDownLatch等AQS提供了独占(Exclusive)以及共享(Share)两种资源共享方式:acquire(acquir...

2019-08-19 15:45:00 173

转载 盘一盘 synchronized (二)—— 偏向锁批量重偏向与批量撤销

在本文讲解之前,先来简单了解一下为什么会有批量重偏向和批量撤销。批量重偏向:当一个线程创建了大量对象并执行了初始的同步操作,后来另一个线程也来将这些对象作为锁对象进行操作,会导偏向锁重偏向的操作。批量撤销:在多线程竞争剧烈的情况下,使用偏向锁将会降低效率,于是乎产生了批量撤销机制。JVM的默认参数值通过JVM的默认参数值,找一找批量重偏向和批量撤销的阈值。...

2019-07-26 09:13:00 1229

转载 盘一盘 synchronized (一)—— 从打印Java对象头说起

Java对象头的组成Java对象的对象头由 mark word 和 klass pointer两部分组成,markword存储了同步状态、标识、hashcode、GC状态等等。klasspointer存储对象的类型指针,该指针指向它的类元数据值得注意的是,如果应用的对象过多,使用64位的指针将浪费大量内存。64位的JVM比32位的JVM多耗费50%的内存。我们...

2019-07-25 18:25:00 429

转载 盘一盘 Thread源码

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。继承关系图线程的创建方式有很多种。常用的有:继承Thread(),重写该类的run()方法;实现Runnable接口,并重写该接口的run()方法。其实Thread类本身也是实现了Runn...

2019-07-20 21:39:00 118

转载 盘一盘 System.out.println()

System.out.println("Hello World")是大部分程序员入门的第一行代码,也可以说是程序员们最熟悉的一行代码。大家真的深入研究过System.out.println()么?今天就来盘一盘System.out.println()!System是个啥?System作为Java.lang包中一个final类,早在JDK1.0中就存在其中,可谓基石也。...

2019-07-18 20:31:00 246

转载 Java中的单例模式

一、饿汉式public class HungerySingleton { //ClassLoader 类加载时立即实例化对象,仅实例化一次,线程安全的 private static HungerySingleton hungerySingleton = new HungerySingleton(); public stati...

2019-07-08 02:15:00 106

转载 Spring AOP SpringBoot集成

上一篇文章《Spring AOP 面向切面编程入门》对AOP作了简要的介绍,包含一些专业术语的解释。本文基于SpringBoot编写了一个简单的SpringAOPDemo。maven依赖添加如下<!--引入SpringBoot的Web模块--><dependency> <groupId>org.springfram...

2019-06-06 11:14:00 141

转载 Spring AOP 面向切面编程入门

什么是AOPAOP(Aspect Oriented Programming),即面向切面编程。众所周知,OOP(面向对象编程)通过的是继承、封装和多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。OOP从纵向上区分出一个个的类来,而AOP则从横向上向对象中加入特定的代码。AOP使OOP由原来的二维变为三维了,由平面变成立体了。AOP采用"横切"的技术,剖...

2019-06-06 10:17:00 152

转载 log4j2使用教程

Log4j2简介log4j2是log4j 1.x 的升级版,2015年5月,Apache宣布log4j1.x 停止更新。最新版为1.2.17。log4j2参考了logback的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升,主要有:1、异常处理:在logback中,Appender中的异常不会被应用感知到,但是在log4j2中,提供了一些异常处理机制。...

2019-04-19 18:08:00 143

转载 log4j使用教程

Log4j简介 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行...

2019-04-19 15:38:00 174

转载 IntelliJ IDEA常用快捷键

换了台新电脑,我也入坑IDEA了!整理了一些最常用的快捷键,希望大家喜欢。定位检索型快捷键1、双击Shift在当前项目结构中查找指定文件(包含类、文件)2、Ctrl + Shift+F / R 全文检索查找/替换字段3、Ctrl + Shift + Alt + N 全文检索查找类中的方法或变量4、Ct...

2019-04-12 15:39:00 154

转载 C# 标准事件模式

.NET框架为事件定义了一个标准模式,它的目的是保持框架和用户代码之间的一致性。标准事件的模式核心是SystemEventArgs——预定义的没有成员的框架类(不同于静态Empty属性)EventArgs表示包含事件数据的类的基类,并提供用于不包含事件数据的事件的值。用于为事件传递信息的基类。在下面例子中,我们定义EventArgs的子类,用于事件PriceChanged被引...

2018-05-07 13:50:00 512

转载 C# 委托和接口

能用委托解决的事情,接口也都可以解决。如下所示: public static void Main() { int[] values = { 1, 2, 3, 4 }; Util.TransformAll(values, new Squarer()); foreach (int...

2018-05-05 15:44:00 560

转载 (POI)Excel格式转Html格式

Demo结构和引用的Jar包源代码(TestDemo.java)POI中将Excel转换为HTML方法仅能转换HSSFWorkBook类型(即03版xls),故可以先将读取的xlsx文件转换成xls文件再调用该方法统一处理package test;import java.io.ByteArrayOutputStream;import java.io....

2018-05-04 15:56:00 508

转载 C# 实现寻峰算法的简单优化(包含边峰,最小峰值,峰距)

核心寻峰算法的原理参考Ronny,链接:投影曲线的波峰查找,C#翻译原理代码参考sowhat4999,链接:C#翻译Matlab中findpeaks方法前人种树,后人乘凉。感谢原作者详细的解释说明。这里先把翻译代码贴一下(略微的修改了sowhat4999代码中的几个参数)//调用方法List<double> data = new L...

2018-02-01 09:49:00 3068

转载 WPF中展示HTML

业务需求:将具有表格信息的HTML片段在WPF中展示出来,并像网页端一样,可以进行input的填写,checkbox选择,最后以HTML的形式完成保存。天真的以为直接引入WPF中的WebBrowser即可将HTML片段加载出来,然而WPF中的WebBrowser组件只有在调用Navigate(url)之后,才能得到WebBrowser组件属性值和Document文档结构,从而得...

2017-11-07 22:23:00 254

空空如也

空空如也

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

TA关注的人

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