基础概念

Java 网络API 允许我们通过套接字(Socket)打开或关闭网络连接,但所有的网络通信均是基于Java IO 类 InputStream 和OutputStream 实现的。

此外,我们还可以使用Java NIO API中相关的网络类,用法与Java网络API基本类似,Java NIO API可以以非阻塞模式工作,在某些特定的场景中使用非阻塞模式可以获得较大的性能提升。

Java TCP网络基础

通常情况下,客户端打开一个连接到服务器端的TCP/IP 连接,然后客户端开始与服务器之间通信,当通信结束后客户端关闭连接。

​客户端通过一个已打开的连接可以发送不止一个请求。事实上在服务器处于接收状态下,客户端可以发送尽可能多的数据,服务器也可以主动关闭连接。

Read more »

基础

java NIO 主要由以下几个核心部分组成:Channels、Buffers、Selectors,这些构成了核心的API。
其他组件,如Pipe、FileLock等,不过是其他三个组件的工具类。

所有的IO在NIO中都是从Channel开始的。Channel有点像流,数据可以从Channel读到Buffer,也可以从Buffer写到Channel。

Channel、Buffer

Channel的实现:FileChannel、DatagramChannel、SocketChannel、ServerSocketChannel,这些通道涵盖了UDP、TCP网络IO和文件IO,还有一些其他的接口。
Buffer的实现:ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、ShortBuffer,这些Buffer涵盖了你能通过IO所能传送的所有数据类型:short、int、long、byte、char、float、double,还有一个MappedByteBuffer,这个用于表示内存映射文件。

Read more »

xxx.png

加号的操作

1
2
3
4
5
6
console.log(1+'32');
// 132
console.log(1+ +'32');
// 33
+[]
// 0

加号的操作有很多的妙用,等待你的探索。

Read more »

原生Java 导出

基础

Apache POI 是用Java 编写的免费开源的跨平台的Java API ,Apache POI 提供API 给Java 程序对Microsoft Office(Excel、WORD、PowerPoint、Visio 等)格式档案读和写的功能。
POI 为”Poor Obfuscation Implementation” 的首字母缩写,意为“可怜的模糊实现”。

实现

https://github.com/vgbhfive/SpringBootDemo -> poidemo

Read more »

简介

NoSQL

NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009 年趋势越发高涨。
NoSQL 的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

NoSQL 指的是非关系型的数据库。NoSQL有时也称作Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL 用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

CAP 定理(CAP theorem)

在计算机科学中,CAP 定理又被称为布鲁尔定律,他指出对于一个分布式计算系统来说,不可能同时满足以下三点:

  • 一致性: 所有节点在同一时间具有相同的数据。
  • 可用性: 保证每个请求不管成功或者失败都有响应。
  • 分隔容忍: 系统中任意信息的丢失或失败不会影响系统的继续运行。

CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。
因此,根据CAP 原理将NoSQL 数据库分成了满足CA 原则、满足CP 原则和满足AP 原则三大类。

  • CA - 单点集群,满足一致性,可用性的系统,通常在可扩展上不太强大。
  • CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
  • AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求比较低一点。
Read more »

并发编程

并发这一块的东西,自己之前都是断断续续的一边学一下,一边用一下,都没有很系统的整理一下,所以今天他来了。

Read more »

目的

Java Web 目前最常用的三款服务器:

  • Undettow
  • Jetty
  • Tomcat

Tomcat 是Apache下的一款重量级的服务器,不用多说历史悠久,经得起实践的考验。
然而,现在当下微服务兴起,Spring boot、Spring cloud 越来越热的情况下,选择一款轻量级而性能优越的服务器是必要的选择。

Jetty 和Undertow 都是基于NIO 实现的高并发轻量级的服务器,支持servlet3.1 和websocket 。

Read more »

步骤

  • 创建Stater 项目
  • 定义Starter 需要的配置类
  • 编写自动配置类
  • 编写spring.factories 文件加载自动配置类
  • 编写配置提示文件spring-configuration-metadata.json (非必需)
Read more »

简介

JMX(Java Management Extensions) 是一个为应用程序植入管理功能的框架。
JMX 也是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理资源。

API

JMX 的API 主要在这两个地方:

  • java.lang.management
  • javax.management.*
Read more »

简介

JDWP 与其他许多协议不同,它仅仅定义了数据传输的格式,但并没有指定具体的传输方式。这就意味着一个JDWP 的实现可以不需要做任何修改就正常工作在不同的传输方式上。
JDWP 是语言无关的。理论上我们可以选用任意语言实现JDWP 。然而我们注意到,在JDWP 的两端分别是target vmdebugger
Target vm 端,JDWP 模块必须以Agent library 的形式在Java 虚拟机启动时加载,并且它必须通过Java 虚拟机提供的JVMTI 接口实现各种debug 的功能,所以必须使用C/C++ 语言编写。而debugger 端就没有这样的限制,可以使用任意语言编写,只要遵守JDWP 规范即可。
JDI(Java Debug Interface)就包含了一个Java 的JDWP debugger 端的实现,JDK 中调试工具jdb 也是使用JDI 完成其调试功能的。


Read more »