
J2SE
文章平均质量分 61
袭冷
梦里不知身是客
展开
-
J2SE - java命令运行class文件提示 “错误:找不到或无法加载主类“
一、默认加载路径问题java指令默认通过CLASSPATH环境变量中指定的目录寻找在CLASSPATH环境变量中加入“.;”即可。“.”的意思是搜索当前目录%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;.;二、包名和路径问题注意类中的包名和文件存放的路径要一致D:\work\TstProject\src>javac com/xl/StringUtils.java注意执行命令的起始路径和运行class的包名D:\w.原创 2021-10-23 14:31:04 · 353 阅读 · 0 评论 -
J2SE - 提取 Url 上的参数
方式一:import org.springframework.util.MultiValueMap;import org.springframework.web.util.UriComponentsBuilder;import java.util.List;public class UrlTst { /** * 引用 spring-web 包的类;支持重复参数 */ public static void main(String[] args) {原创 2021-10-23 14:27:14 · 203 阅读 · 0 评论 -
J2SE - Jxls 1.x 模版导出 Excel 示例
一、说明 Jxls 是基于 Poi 导出 Excel 的模板式封装,在 1.x 版本中采用了类似 JSTL 标签的方式获取数据二、示例 1、模版 2、代码// 获取核心数据 List<Goods> goodsList = goodsService.queryGoodsList(); // 组装模版数据 Map<S...原创 2020-10-14 10:20:29 · 297 阅读 · 0 评论 -
J2SE - Jxls 2.x 模版导出 Excel 示例
一、说明 Jxls 2.x 和 1.x 有很大的差异: 表达式从类似JSTL的模式,改为了直接在单元格中插入批注的方式来声明 新增了区域的概念,用来定义整个模板中所需要解析的表达式的所在范围,且只能声明在A1单元格内二、依赖 <!-- Jxls的基础库 --> <dependency> <groupId&...原创 2020-10-14 10:20:40 · 963 阅读 · 0 评论 -
J2SE - POI:java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell
一、原因 获取数据的方法,和数据的实际类型不一致二、方案Cell cell = row.getCell(0);//获取数据之前,设置单元格的类型cell.setCellType(CellType.STRING);String value = cell.getStringCellValue();...原创 2020-10-14 10:22:05 · 707 阅读 · 0 评论 -
J2SE - POI往Excel中插入图片
一、示例package com.xl.poi;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileOutputStream;import javax.imageio.ImageIO;import org.apache.poi.hssf.usermodel.HSSFClientA...原创 2020-10-14 10:21:53 · 546 阅读 · 0 评论 -
J2SE - POI合并单元格相关
一、实现说明 实现方式:通过 CellRangeAddress 指定一个地址范围来实现多个单元格的合并 构造参数:开始行,结束行,开始列,结束列 参数说明:都是从 0 开始,且包括参数的当前行或列二、注意事项 无论 Row 或 Cell 是否已经创建,都可以执行单元格的合并操作;但取值和赋值时单元格必须已经存在 合并前多个单元格的内容, 最后只...原创 2020-10-14 10:21:10 · 775 阅读 · 0 评论 -
J2SE - POI设置单元格样式
一、设置字体 // 设置字体属性 Font font = workbook.createFont(); // 创建字体对象 font.setItalic(true); // 设置字体倾斜 font.setColor(Font.COLOR_RED); // 设置字体颜色 ...原创 2020-10-14 10:21:22 · 1700 阅读 · 2 评论 -
J2SE - POI设置单元格的宽度和高度
一、接口 1、指定设置 /** * 设置指定单元格的宽度;单元格的宽度 即 列的宽度;方法来自 Sheet 接口 * @param columnIndex 列的索引;值从 0 开始 * @param width 宽度值;单位是 1/256 个字符宽度,即值建议设置为256的倍数 */ public void setColumnWidth(int columnInd...原创 2020-10-14 10:21:31 · 9373 阅读 · 0 评论 -
J2SE - Logback日志Pattern配置说明
一、转换符用于定义输出的内容转换符 说明 c{length} lo{length} logger{length} 输出源记录事件的 logger 名 参数length指定缩短 logger 名的规则,类名永远不省略;为0表示只显示类名,非0包名段最小一个字符 d{pattern} date{pattern} 输出记录事件的日期 语法与...原创 2020-01-10 14:17:52 · 540 阅读 · 0 评论 -
J2SE - Log4j日志Pattern配置说明
一、日志格式log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%15.15t] %36.36c:%-4.4L - %m%n %d{yyyy-MM-dd HH:mm:ss.SSS} :指定日期的格式 %5p :指定日志级别最小宽度为5且右对齐(不足时左补空)...原创 2020-01-10 14:17:24 · 1264 阅读 · 0 评论 -
Java - Apache Mina 简单示例
一、关于Apache MINA 是一个网络应用程序框架,它对Java中的socket和NIO进行了有效和清晰的封装,方便开发人员开发TCP/UDP程序,从而抛开在使用原始的socket时需要考虑的各种繁杂而又烦人问题(线程、性能、会话等),把更多精力专著在应用中的业务逻辑的开发上。二、示例1原创 2014-06-30 23:10:20 · 1491 阅读 · 0 评论 -
J2SE - 进制的介绍、转换、位移
一、进制和说明 计算机中的数值、文字、声音、图像等任何信息,最终都会转化成二进制形式后被处理、存储和传输 二进制数的每个0或1就是一个位,位是数据存储的最小单位;8位二进制数为一个字节,字节是存储的基本计量单位 计算机中CPU位数指的是CPU一次能处理的最大位数,例如332位处理器次最多能处理32位即4字节的数据二、形式和规则 二进制:用0-1表示,逢2进1...原创 2019-05-05 15:46:36 · 331 阅读 · 0 评论 -
Jdk1.8新特性 - 静态方法和默认方法
一、说明 Java 8 新增了接口的静态方法和默认方法。即接口可以有实现方法,而且不需要实现类去实现其方法,通过static和default关键字实现 静态方法和默认方法的引进,解决了接口一旦发生修改将与现有的实现不兼容的问题二、示例 1、接口package com.xl.infc;public interface Employee { /**...原创 2019-05-05 15:47:05 · 689 阅读 · 0 评论 -
Jdk1.8新特性 - 函数式接口
一、函数式接口说明 只有一个抽象方法的接口,称为函数式接口。使用注解 @FunctionalInterface 修饰可以检查是否是函数式接口,但非必须的注解。需要注意的是,函数式接口可以同时拥有多个静态方法和默认方法;也可以定义 java.lang.Object 里的 public 方法(虽然这些方法是抽象的,但不被当成是抽象方法) Jdk1.8 之前已有不少函数式接口,比如常...原创 2019-05-05 15:47:09 · 886 阅读 · 0 评论 -
Jdk1.8新特性 - Lambda表达式
一、说明 Jdk1.8最重要的特性即Lambda表达式。它允许把一个函数作为参数传递进方法中,简化了匿名实现类的书写 Lambda 表达式需要 函数式接口的支持,即把只有一个抽象方法的接口的匿名实现,以方法参数在左,方法实现在右的形式构建,并将其作为参数传进方法中Lambda表达式引入了一个新的操作符 "->",它将Lambda分为两个部分: /**...原创 2019-05-05 15:47:14 · 456 阅读 · 0 评论 -
Jdk1.8新特性 - 方法引用
一、说明方法引用使用一对冒号 :: 标识;通过方法的名字来指向一个方法;是函数式接口的另一种书写方式通过方法引用,可以将方法的引用赋值给一个Function变量;Lambda表达式一般用于自己提供方法体,而方法引用一般直接引用现成的方法二、示例 1、静态方法引用 /** * 方法无参,有返回 */ Supplier<Double> supplierD...原创 2019-05-05 15:47:18 · 966 阅读 · 0 评论 -
Jdk1.8新特性 - Optional
一、说明 Optional 是一个容器,它可以保存类型 T 或为 null 的 值 的容器 Optional 提供了很多方法对值进行检测,可以很好的解决空指针异常二、示例 // 返回一个指定非空值的Optional,参数为null抛出空指针 Optional<String> optional = Optional.of("JavaOption...原创 2019-05-05 15:47:23 · 304 阅读 · 0 评论 -
Jdk1.8新特性 - Stream
一、说明 Stream是以声明的方式将源数据的元素形成队列并执行一系列运算和表达的抽象,元素流在管道中经过中间操作(返回Stream本身)的处理,最后由终止操作(返回特定类型)得到前面处理的结果 Stream支持Collection的子类如List或者Set,不支持Map类型;Stream自身不会存储元素,也不会改变数据源对象,同时操作是惰性的,只有在终止操作执行后,所有的中间...原创 2019-05-05 15:47:27 · 432 阅读 · 0 评论 -
Jdk1.8新特性 - Map新方法
一、说明 Jdk1.8中,为Map添加了一些新的方法二、示例 // 原有的Put方法,是当Key存在时则替换;而putIfAbsent方法,则是当存在Key忽略Put操作不替换 map.putIfAbsent("K1001", "K1001-1"); // 如果Key存在,则将函数的运算结果作为这个Key对应的Value的新值Put进去 map...原创 2019-05-05 15:47:30 · 4600 阅读 · 0 评论 -
Jdk1.8新特性 - 日期和时间
一、说明 Java 8 在java.time包下推出了一组全新的时间日期API,涵盖了日期、时间、日期时间、时区、时刻、间隔、时钟等 新的java.time包下的所有类都是不可变类型而且线程安全的,解决了在此之前日期时间中存在的线程安全、横跨多包、使用复杂等诸多问题二、示例 1、时间和日期 // 本地时间 LocalTime lt = LocalTime...原创 2019-05-07 14:25:02 · 6691 阅读 · 0 评论 -
Jdk1.8新特性 - Base64编解码
一、说明 在 Java 8 中,Base64 编码已经成为Java类库的标准,内置编码器和解码器。Base64工具类提供了三种BASE64编解码器:基本:输出被映射到一组字符A-Za-z0-9+/,编码不添加任何行标,输出的解码仅支持A-Za-z0-9+/URL:输出映射到一组字符A-Za-z0-9+_,输出是URL和文件...原创 2019-05-07 14:25:06 · 4248 阅读 · 0 评论 -
Maven - Pom.xml文件详解
<?xml version="1.0" encoding="utf-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.or...原创 2019-05-05 15:46:04 · 216 阅读 · 0 评论 -
Jdk1.7新特性 - 二进制标识、数字间隔符、泛型类型推断、资源自动管理、多异常处理等
一、二进制字面量标识 整数类型如(byte,short,int,long)都可以用二进制来表示。表示方法通过在二进制数的前面加入0b或者0B来标示byte num1 = 0b00001001; // 1个字节8位short num2 = 0b0010000101000101; // 2个字节16位int num3 = 0b10100001010001011010000...原创 2019-05-08 16:53:20 · 976 阅读 · 0 评论 -
J2SE - Graphics和BufferedImage的图形图像处理示例
一、绘制图形图像/** * 线段 / 折线 */public static void drawLine() throws IOException { // 创建图像缓冲区(空图片) BufferedImage bi = new BufferedImage(512, 512, BufferedImage.TYPE_INT_RGB); // 创建 Graphics 的副...原创 2019-05-05 15:46:40 · 994 阅读 · 0 评论 -
J2SE - String、InputStream、OutputStream 互转
一、String 转 InputStream InputStream is = new ByteArrayInputStream(str.getBytes()); InputStream is = IOUtils.toInputStream(str,Charset.forName("utf-8"));二、InputStream 转 String StringBuilder s...原创 2019-11-08 11:09:13 · 608 阅读 · 0 评论 -
J2SE - 关于Commons-Logging、Slf4j、Log4j、Logback的整理
一、Commons-Logging 是Apache提供的一个通用的日志接口。用户可以自由选择第三方的日志框架如Log4j作为具体实现。Commons-Logging通过动态查找的机制,在程序运行时自动找出真正使用的日志库。好处就是代码依赖是Common-Logging而Log4j,避免了和具体的日志方案直接耦合import org.apache.commons.logging.Lo...原创 2018-08-27 23:39:41 · 364 阅读 · 0 评论 -
J2SE - Lombok自动生成实体方法的工具类库的使用
一、相关说明 Lombok是一个可以通过注解形式在编译源码的时候生成对应getter、setter、equals、hashcode、toString等方法的工具类库,帮助我们消除重复工作和简化相关代码 官方地址:https://projectlombok.org/;Github地址:https://github.com/rzwitserloot/lombok二、插件安装下载l...原创 2018-08-27 23:39:44 · 304 阅读 · 0 评论 -
J2SE - JDK环境变量的说明和设置
一、说明 JAVA_HOME:指向Jdk的安装路径,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的Jdk CLASSPATH:指定类的搜索路径,是javac编译器的一个环境变量,与import、package关键字有关,JVM就是通过CLASSPATH来寻找类的.class文件 PATH:指定命令的搜索路径,在命...原创 2018-08-08 21:33:05 · 360 阅读 · 0 评论 -
J2SE - Unsupported major.minor version 51.0
一、原因 低版本的 JVM 无法加载高版本的 class 文件造成的二、方案 用相同的版本的Jdk编译和执行原创 2018-05-18 10:54:39 · 193 阅读 · 0 评论 -
SSL - SSLHandshakeException: Unrecognized SSL message, plaintext connection?
一、异常日志 javax.net.ssl.SSLHandshakeException: SSL handshake failed. Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? at com.sun.net.ssl.internal.ss...原创 2018-08-27 23:38:47 · 2650 阅读 · 0 评论 -
SSL - SSLHandshakeException: No subject alternative names matching IP address <ip> found
一、异常日志javax.net.ssl.SSLHandshakeException: Caused by: java.security.cert.CertificateException: No subject alternative names matching IP address 110.75.244.16 found at sun.security.util....原创 2018-08-08 21:37:37 · 26771 阅读 · 4 评论 -
SSL - SSLHandshakeException: No subject alternative names present
一、异常日志javax.net.ssl.SSLHandshakeException: Caused by: java.security.cert.CertificateException: No subject alternative names present at sun.security.util.HostnameChecker.matchIP(Unknown ...原创 2018-08-08 21:37:45 · 4352 阅读 · 2 评论 -
SSL - SSLHandshakeException: unable to find valid certification path to requested target
一、异常日志javax.net.ssl.SSLHandshakeException Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.pro...原创 2018-08-27 23:38:36 · 1229 阅读 · 0 评论 -
Java - Apache Mina 自定义协议通信
一、定义协议实体import java.nio.charset.Charset; /** * 自定义协议的消息体 */ public class MyMsg { /** * 消息长度 */ private Integer lenth; /** * 发送人 */ private Long sender; /** * 接收人 */ p原创 2014-06-30 23:13:01 · 4354 阅读 · 2 评论 -
Java - 线程基础
一、创建线程 编写线程运行时执行的代码有两种方式:一种是创建Thread子类的一个实例并重写run方法,第二种是创建类的时候实现Runnable接口。 1、创建Thread的子类 创建Thread子类的一个实例并重写run方法,run方法会在调用start()方法之后被执行。原创 2014-06-30 23:25:22 · 759 阅读 · 0 评论 -
Java - 线程安全
一、竞态条件&临界区 在同一程序中运行多个线程本身不会导致问题,问题在于多个线程访问了相同的资源。如,同一内存区(变量,数组,或对象)、系统(数据库,web services等)或文件。实际上,这些问题只有在一或多个线程向这些资源做了写操作时才有可能发生,只要资源没有发生变化,多个线程读取相同的资源就是安全的。原创 2014-06-30 23:25:57 · 903 阅读 · 0 评论 -
Java - NIO之Channel(FileChannel)
Java NIO的类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。原创 2014-05-25 23:47:20 · 4965 阅读 · 1 评论 -
Java - NIO之Buffer(下)
九、压缩 如果从Buffer中读取了一部分数据之后仍有部分未读的数据,且后续还需要这些数据,但是此时想要先再写些数据,那么使用压缩/** * 准备数据 */ByteBuffer buffer = ByteBuffer.allocate(10);buffer.put((byte)'M').put((byte)'e').put((byte)'l').put((byte)'l').put((byte)'原创 2014-05-25 01:45:45 · 1065 阅读 · 0 评论 -
Java -基本数据类型
一、Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。原创 2014-05-25 01:45:09 · 777 阅读 · 0 评论