【JavaSE】
文章平均质量分 85
chenjazz
123456789
展开
-
JDK8的Optional用法
1. 描述Optional是java.util包中的一部分,所以要有相关的引用:import java.util.Optional;2. 创建Optional方法2.1 empty,创建一个空的Optional@Testpublic void whenCreatesEmptyOptional_thenCorrect() { Optional<String> empty = Optional.empty(); assertFalse(empty.isPresent(原创 2021-05-10 10:08:17 · 748 阅读 · 0 评论 -
JVM平台上的响应式流(Reactive Streams)规范
Reactive Streams响应式流是一个倡议,用来为具有非阻塞后压的异步流处理提供一个标准。大家努力的目标集中在运行时环境(JVM和JavaScript)和网络协议上。注:响应式流其实就是一个规范,本文讲解的正是这个规范,且这个规范已经被引入到JDK9里了。【后压(背压)】:就是下游出现了问题,得不到解决时,这个问题就会逆流而上,继而影响上游。如果一个路口红绿灯坏了造成堵车,如果不...转载 2019-10-27 14:15:42 · 675 阅读 · 0 评论 -
【HttpClient4.5中文教程】五. HttpClient执行上下文HttpContext
最初,HTTP是被设计成无状态的,面向请求-响应的协议。然而,现实世界中的应用程序经常需要通过一些逻辑相关的请求-响应交换来保持状态信息。 为了使应用程序能够维持一个过程状态, HttpClient允许HTTP请求在一个特定的执行上下文中来执行--称为HTTP上下文。如果相同的上下文在连续请求之间重用,那么多种逻辑相关的请求可以参与到一个逻辑会话中。HTTP上下文功能和java.util.Map很原创 2015-08-04 17:10:42 · 10917 阅读 · 2 评论 -
【HttpClient4.5中文教程】二.构建开发环境
本系列教程使用maven开发,依赖为: org.apache.httpcomponents httpclient 4.5.4原创 2015-07-29 18:05:37 · 11911 阅读 · 6 评论 -
【HttpClient4.5中文教程】一.HttpClient简介与HTTP简介
1.HttpClient 简介超文本传输协议(HTTP)也许是当今互联网上所使用的最重要的协议了。Web services,联网设备和网络计算的发展,都持续扩展了HTTP协议的角色,超越了用户使用的Web浏览器范畴,同时,也增加了需要HTTP协议支持的应用程序的数量。尽管java.net包提供了通过HTTP访问资源的基本功能,但它缺少足够的灵活性和其它很多应用程序需要的功能。HttpClient通...原创 2015-07-29 11:01:58 · 14760 阅读 · 16 评论 -
【Java并发编程】二.Java并发基础
1 Java线程简介进程是程序的基本执行实体,进程可以容纳若干线程,是线程的容器。线程就是轻量级进程,线程的运行成本远远小于进程,所以我们用多线程去设计并发程序,而不是多进程。线程的生命周期jdk1.5以后,在java.lang.Thread的内部枚举类State中定义了线程的几种状态:public enum State { /** * 新原创 2018-01-20 10:00:18 · 238 阅读 · 0 评论 -
Java中的强引用、软引用、弱引用和虚引用及其实例
在周志明前辈的《深入理解Java虚拟机(第二版)》3.2.3节:再谈引用 中,介绍了Java中的几种引用: 在JDK 1.2以前,Java中的引用的定义很传统:如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。 这种定义很纯粹,但是太过狭隘,一个对象在这种定义下只有被引用或者没有被引用两种状态,对于如何描述一些“食之无味,弃之可惜”的对象原创 2017-01-15 21:32:09 · 4766 阅读 · 1 评论 -
JDBC进化史--从JDBC1.0到JDBC4.2
JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface应用程序设计接口)。它由一些Java语言编写的类和界面组成。JDBC为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。原创 2015-08-05 10:33:39 · 8102 阅读 · 1 评论 -
各种数据库分页及Java实现
在显示记录条目时往往要用到分页,一种常用的办法是利用各种数据库自带的定位接口对原始查询语句进行改写,从而只取出特定范围的某些记录。不同的数据库,查询定位接口是不一样的,下面做一汇总: 数据库 分页查询语句 说明 MySQL “QUERY_SQL limit ?,?” 使用limit关键字,第一个”?”是起始行号, 第二个”?”是返回条目数 Oracle SELECT *原创 2017-04-07 22:38:44 · 2149 阅读 · 0 评论 -
【Slf4j分析】slf4j-api和slf4j-simple
本来想分析logback源码,可是它太多了~读起来有点吃力,先分析下slf4j和它的简单实现slf4j-simple一 基础使用maven:<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.21</version></depe原创 2016-09-09 19:17:16 · 18194 阅读 · 0 评论 -
【JDBC4.2】Wrapper和AutoCloseable
java.sql.Wrapper接口Wrapper接口可以把一个非JDBC标准的接口(第三方驱动提供的)包装成标准接口。许多 JDBC 驱动程序实现使用包装器模式提供超越传统 JDBC API 的扩展,传统 JDBC API 是特定于数据源的。开发人员可能希望访问那些被包装(代理)为代表实际资源代理类实例的资源。此接口描述访问那些由代理代表的包装资源的标准机制,以允许对资源代理的直接访问。 下面JD原创 2017-01-02 11:49:28 · 2694 阅读 · 0 评论 -
【JDBC4.2】三、Statements
数据库localhost:3306 DBname: test 表:student 本编博客包括Statement接口,以及它的子接口PreparedStatement和CallableStatementStatement接口Statement的获取public class StatementTest { public static void main(String[] args) th原创 2016-12-29 21:08:07 · 620 阅读 · 0 评论 -
《重构-改善既有代码的设计》总结
重新组织函数提炼函数有无局部变量,是否对局部变脸再赋值内联函数函数调用—>(简短的)表达式内联临时变量临时变量—>(简短的)表达式原创 2016-09-04 21:50:03 · 721 阅读 · 0 评论 -
【HttpClient4.5中文教程】三.HttpClient执行基本请求
更多HttpClient4.5中文教程请查看:点击打开链接==================================HttpClient最基本的功能是执行HTTP方法,一次 HTTP 方法的执行包含一个或多个 HTTP 请求/响应的交互,通常由 HttpClient的内部来处理。使用者需要提供一个Request对象来执行HTTP请求,HttpClient就会把请求传送给目标服务器并返回一原创 2015-07-30 12:51:57 · 11165 阅读 · 12 评论 -
【HttpClient4.5中文教程】四. HttpClient接口简介
更多HttpClient4.5中文教程请查看目录:点击打开链接===================================================1. HttpClient接口简介HttpClient代表HTTP请求执行的最基本约定。它没有强加限制或具体细节给请求执行过程,它保留了连接管理,状态管理,认证,重定向等处理细节的个人实现。使用额外的功能来装饰这个接口是非常容易的,比如原创 2015-08-03 09:53:00 · 6434 阅读 · 4 评论 -
轻量级数据库访问框架FastSQL
目录1 简介2 入门3 SQLFactory的配置4 SQL类作为sql语句构建器5 SQL类的执行sql功能6 BaseDAO7 通用工具8 配置项9 其他10 更新日志1 简介FastSQL一个基于spring-jdbc的简单ORM框架,它支持sql构建、sql执行、命名参数绑定、查询结果自动映射和通用DAO。结合了Hibernate/JPA快速开发和Mybatis...原创 2018-10-24 16:37:19 · 3962 阅读 · 7 评论 -
ConcurrentHashMap图例
1.JDK1.7中锁分段技术 HashTable容器在竞争激烈的并发环境下表现出效率低下的原因,是因为所有访问HashTable的线程都必须竞争同一把锁,那假如容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并发访问效率,这就是ConcurrentHashMap所使用的锁分段技术,首先将数据分成一段...原创 2018-06-07 21:48:46 · 512 阅读 · 0 评论 -
Java中的Unsafe类
1.Unsafe类简介Java最初被设计为一种安全的受控环境。尽管如此,Java HotSpot还是包含了一个“后门”,提供了一些可以直接操控内存和线程的低层次操作。这个后门类——sun.misc.Unsafe——被JDK广泛用于自己的包中,如java.nio和java.util.concurrent。但是丝毫不建议在生产环境中使用这个后门。因为这个API十分不安全、不轻便、而且不稳定。这个不...原创 2018-02-24 13:41:48 · 2561 阅读 · 0 评论 -
分享一次解决线上java应用导致JVM内存溢出(OOM)的问题
某个线上的应用运行几天后,总是出现卡死甚至出现OOM的情况。 注:文中图片可能与描述不符,仅作为演示!通过Linux的top命令查看cpu占比首先通过top命令查看,发现某个java程序占用了较高内存:JDK的jps命令确定是哪个java程序然后通过jps -l 与上面的PID列(2848)比较,确定是 picasso-java-v1.jar 这个java程序占用c...原创 2018-03-15 13:07:06 · 5253 阅读 · 7 评论 -
Netty技术热门文章收藏
简单示例: http://www.cnblogs.com/TomSnail/category/668540.html原创 2018-02-26 13:17:02 · 270 阅读 · 0 评论 -
【Java并发编程】一.并发简介
1.并发的用处图像处理&服务端编程2.概念同步和异步同步:同步调用方法一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。 异步:调用方法后立即返回,方法会在另一个线程中执行。调用者无需等待就可以继续后续工作。 临界区临界区指的是一个访问共用资源的程序片段(方法或代码块),而这些共用资源又无法同时被多个线程访问的特性,当有线程进入临界区段时,其他线程原创 2017-12-15 20:26:46 · 494 阅读 · 0 评论 -
【HttpClient4.5中文教程】
待更新原创 2015-07-31 16:40:04 · 5559 阅读 · 3 评论 -
【HttpClient4.5中文教程】八.终止请求和重定向处理
1.终止请求在一些情况下,由于目标服务器的高负载或客户端有很多同时的请求发出,那么 HTTP 请求会在预期的时间内执行失败。 这时,有必要过早地中止请求,解除在 I/O 执行中的线程锁。 HttpClient 执行时,可以在任意阶段通过调用HttpUriRequest#abort()方法中止请求。 这个方法是线程安全的,而且可以从任意线程中调用。当一个 HTTP 请求被中止时,它的执行线程--就封原创 2015-10-10 13:10:38 · 4557 阅读 · 0 评论 -
【HttpClient4.5中文教程】七. 异常处理
HttpClient 能够抛出两种类型的异常:1)java.io.IOException :在 I/O 失败时,如socket连接超时或被重置的异常;2)HttpException:标志 HTTP 请求失败的信号,如违反 HTTP 协议。通常 I/O 错误被认为是非致命的和可以恢复的,而 HTTP 协议错误,则被认为是致命的而且是不能自动恢复的。请注意HttpClient实现了可抛出异常HttpE原创 2015-10-10 13:03:37 · 5160 阅读 · 6 评论 -
【HttpClient4.5中文教程】六. HTTP协议拦截器
HTTP协议拦截器是一个实现了HTTP协议特定方面的程序。通常协议拦截器将作用于报文的一个特定的首部或一组相关的首部。或者添加一个特定的首部或一组相关的首部到将要发送的报文中。协议拦截器也可以操作报文内含的实体--显而易见的内容解压/压缩就是一个好的例子。包装实体类使用了装饰模式对原始的实体进行装饰。几个协议拦截器能够结合构成一个逻辑单元。协议拦截器能够通过共享信息来合作--比如处理状态--通过H原创 2015-10-10 12:54:05 · 4506 阅读 · 0 评论 -
Java与Json
JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。原创 2015-08-11 15:55:44 · 1201 阅读 · 0 评论 -
Java中使用JSSE实现SSL/TLS安全协议
SSL/TLS协议是安全的通信模式,而对于这些底层协议,如果要每个开发者都自己去实现显然会带来不必要的麻烦,正是为了解决这个问题Java为广大开发者提供了Java安全套接字扩展——JSSE,它包含了实现Internet安全通信的一系列包的集合,是SSL和TLS的纯Java实现,同时它是一个开放的标准,每个公司都可以自己实现JSSE,通过它可以透明地提供数据加密、服务器认证、信息完整转载 2015-10-20 13:47:34 · 9135 阅读 · 3 评论 -
Java 8之BASE64编解码
一、基础Base64是一种用64个字符来表示任意二进制数据的方法。 用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64是一种最常见的二进制编码方法。 Base64的原理很简单, 第一步,准备一个包含64个字符的数组:A-Z, a原创 2016-06-27 16:33:27 · 8239 阅读 · 4 评论 -
【Mybatis3学习入门】【二】Mybatis快速入门
一.准备开发环境1.新建工程(SE和WEB工程均可),并添加jar包(mybatis和mysql驱动),添加junit测试库2.准备数据库原创 2015-08-04 18:03:04 · 1102 阅读 · 0 评论 -
【HttpClient4.5实训】一.HttpClient4.5模拟浏览器GET请求访问新浪网(非原文教程)
更多HttpClient4.5教程请访问点击打开链接=====================================================================问题:模拟浏览器访问新浪网http://www.sina.com.cn/并解析返回结果一、分析经过前面的学习,已经能掌握了GET请求并解析返回结果,如下图:原创 2015-07-30 15:31:09 · 7735 阅读 · 3 评论 -
XML-DOM&SAX解析
声明:本文转自http://www.blogjava.net/orangelizq/archive/2009/07/19/287330.html,并对原文有部分改动。===========================摘要:XML作为过去十年中出现的最流行的技术之一,得到了广泛的应用,而其中XML解析技术是XML应用的关键。本文介绍了XML解析技术的研究动向,分析和比较了4种XM原创 2015-08-11 10:39:44 · 2500 阅读 · 0 评论 -
XML-JDOM和DOM4J比较
第一部分、JDOM 简介JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。JDOM 直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性(方法重载、集合概念以及映射),把SAX和DOM的功能有效地结合起来。在使用设计上尽可能地隐藏原来使用XML过程中的复杂性。利用JDOM处理XML文档将是一件轻松、简单的事。原创 2015-08-11 14:48:31 · 1480 阅读 · 0 评论 -
什么是Apache Commons
1.简介网址:http://commons.apache.org/网站首页如下图所示:2.表示正在开发的项目3.表示过时的项目(不再维护)2.component中的组件2.1BCEL(Byte Code Engineering Library )BCEL是 Java classworking 最原创 2015-04-21 09:37:03 · 2361 阅读 · 0 评论 -
数字证书原理(1)
转自:http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html对原文做出部分修改=================================一、基础知识1.1、数字加密不使用密钥:如下图所示,明文进行一次加密,生成密文,再由解码器解码编码器 算法为【旋转3个字符】 A->D,C->F...原创 2015-10-22 10:26:42 · 935 阅读 · 0 评论 -
Spring源码分析
1原创 2015-10-13 17:40:20 · 886 阅读 · 0 评论 -
【Java8网络编程】第3章. HTTP和URLConnection类
1.HTTP基本概念2.URLConnection类原创 2016-05-14 17:27:44 · 1939 阅读 · 0 评论 -
【Java8网络编程】第2章.Java中的URL和URI
首先,URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。而URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。 一句话解释:URI 和 URL 都定义了 what the resource is。URL 还定义了 how to ge原创 2016-05-09 22:42:12 · 2342 阅读 · 0 评论 -
【Java8网络编程】第1章.基本概念
1.网络的基本概念网络开发已经成为每个开发人员的核心技能。很多应用程序都会用到网络知识,如电子邮件,浏览器,远程控制等。大多数应用程序都内置网络功能,如chrome浏览器,QQ,微信。1.1网络网络 是一系列设备(计算机,打印机,路由器…)的集合,这些设备被称为网络节点。节点之间可以通过电缆,无线电波,光纤交流。 每个网络机电都有 地址 ,用于唯一标示一个节点。 计算机之间来回传输数据需要协议(原创 2016-05-08 11:41:55 · 1664 阅读 · 0 评论 -
【设计原则】面向对象编程的六大原则
参考文章:http://blog.csdn.net/wangjunkg/article/details/3762132 一、单一职责原则:全称:“Single-Responsibility Principle”说明:就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。所谓职责,我们可以理解他为功能,就是设计的这个类功能应该只有一个,而不是两个或更多转载 2016-03-28 15:11:06 · 667 阅读 · 0 评论 -
Java并发总结一 :3~4
3.共享受限资源3.1 不正确地访问资源原创 2016-04-08 17:29:19 · 664 阅读 · 0 评论