Java基础
Java基础技术实战
排骨瘦肉丁
目标-每日一更
展开
-
java发邮件报错:javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or ciph
java发邮件报错:Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)原创 2024-08-20 14:45:25 · 406 阅读 · 0 评论 -
alibaba的fastjson怎么将json字符串转换为范型对象
alibaba的fastjson怎么将json字符串转换为范型对象?原创 2024-02-18 18:16:07 · 548 阅读 · 0 评论 -
Java8 lambda如何对Map的集合进行分组并求和
Java8 lambda如何对Map的集合按照Key进行分组并将Value求和?由于业务中遇到了这样的场景,想通过简单的方式对Map的集合按照Key进行分组并将Value进行求和统计。下面是具体的实现方式原创 2024-01-03 18:02:38 · 1675 阅读 · 0 评论 -
Java使用lambda表达式对集合中的BigDecimal类型的属性求和
使用lambda表达式对Integer、Long类型的属性进行求和,是比较容易的,可是属性如果是BigDecimal类型的该如何求和呢?原创 2024-01-02 18:10:10 · 1690 阅读 · 0 评论 -
Java序列化技术与Protobuff
前言: Java序列化是Java技术体系当中的一个重要议题,序列化的意义在于信息的交换和存储,通常会和io、持久化、rmi技术有关(eg:一些orm框架会要求持久化的对象类型实现Serializable接口)。 本文将提供Java自带序列化机制和ProtoStuff的序列化(仅仅当作一种数据格式)的比较,从序列化的内容和特点来对二者进行比较。转载 2016-11-10 17:31:48 · 688 阅读 · 0 评论 -
protostuff序列化工具类
package org.wit.ff.util;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.List;import com.dyuproject.protostuff.LinkedBuffer;转载 2016-11-10 17:25:13 · 1300 阅读 · 0 评论 -
java序列化/反序列化之xstream、protobuf、protostuff 的比较与使用例子
请看原文来自博客园文章:java序列化/反序列化之xstream、protobuf、protostuff 的比较与使用例子感谢原文楼主分享,本文仅作备忘转载 2016-11-10 17:38:15 · 1000 阅读 · 0 评论 -
List调用toString()方法后,去除两头的中括号
import org.apache.commons.lang.StringUtils; public class Test { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("1");...转载 2020-01-17 14:52:12 · 4532 阅读 · 4 评论 -
Java中List,Set,数组的互相转换
常用方式代码如下:public Map<Long, String> getIdNameMap(List<Account> accounts) { return accounts.stream().collect(Collectors.toMap(Account::getId, Account::getUsername));}收集成实体本身map代码如下:...转载 2019-07-16 10:45:15 · 22402 阅读 · 2 评论 -
ArrayList和数组int[]的相互转化
import java.util.Arrays;import java.util.List;import java.util.stream.Collectors; public class Main { public static void main(String[] args) { int[] data = {4, 5, 3, 6, 2, 5, 1}; ...转载 2019-07-16 11:43:22 · 10425 阅读 · 0 评论 -
java8 lamda表达式对List进行分组,List按条件过滤
示例对象:public class Apple { private Integer id; private String name; private BigDecimal money; private Integer num; public Apple(Integer id, String name, BigDecimal money, Integer n...转载 2019-07-16 15:23:21 · 37569 阅读 · 0 评论 -
com.drew.metadata 获取图片信息
<dependency> <groupId>com.drewnoakes</groupId> <artifactId>metadata-extractor</artifactId></dependency>public static void main(String[] args) throws Exce...原创 2019-07-16 15:41:03 · 2807 阅读 · 0 评论 -
Java中字节Byte和位Bit的关系
Java中字节容量关系1TB=1024GB TB是千千兆 1GB=1024MB GB是千兆 1MB=1024KB MB是兆 1KB=1024Byte KB是千字节 注意:Byte的缩写是B也就是字节Byte与Bit的关系bit: Binary digit(二进制数位)的缩写,意为“位”或“比特”,是计算机运算的基础; byte: ...转载 2019-07-29 10:37:10 · 13983 阅读 · 0 评论 -
java枚举类型根据key拿到value
public enum ImageFormatType { /** * jpg */ JPG(0, "jpg"), /** * png */ PNG(1, "png"), /** * webp */ WEBP(2, "webp"), /** * bmp */...原创 2019-08-02 17:56:37 · 9528 阅读 · 0 评论 -
java计算两个数的百分比
int num1 = 7; int num2 = 9; // 创建一个数值格式化对象 NumberFormat numberFormat = NumberFormat.getInstance(); // 设置精确到小数点后2位 ...转载 2019-08-02 18:10:57 · 8097 阅读 · 2 评论 -
Java提取URL某个参数的值
Java提取URL某个参数的值public static String getParam(String url, String name) { String params = url.substring(url.indexOf("?") + 1, url.length()); Map<String, String> split = Splitter.on("&...转载 2019-07-30 16:06:30 · 30089 阅读 · 7 评论 -
Java如何进行Base64的编码(Encode)与解码(Decode)
关于base64编码Encode和Decode编码的几种方式早期做法早期在Java上做Base64的编码与解码,会使用到JDK里sun.misc套件下的BASE64Encoder和BASE64Decoder这两个类别,用法如下:final BASE64Encoder encoder = new BASE64Encoder();final BASE64Decoder decoder =...转载 2019-07-30 16:22:21 · 26546 阅读 · 2 评论 -
如何合理地估算线程池大小
如何合理地估算线程池大小?这个问题虽然看起来很小,却并不那么容易回答。大家如果有更好的方法欢迎赐教,先来一个天真的估算方法:假设要求一个系统的TPS(Transaction Per Second或者Task Per Second)至少为20,然后假设每个Transaction由一个线程完成,继续假设平均每个线程处理一个Transaction的时间为4s。那么问题转化为:如何设计线程转载 2016-12-08 15:34:29 · 325 阅读 · 0 评论 -
ConnectTimeout和ReadTimeout所代表的意义
ConnectTimeout指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间。在java中,网络状况正常的情况下,例如使用HttpClient或者HttpURLConnetion连接时设置参数connectTimeout=5000即5秒,如果连接用时超过5秒就是抛出java.net.SocketException: connetct time out的异常Rea...转载 2019-08-19 17:35:05 · 19762 阅读 · 0 评论 -
Java对图片/视频等文件进行base64处理
有时候我们拿到一个视频文件或者一张图片文件,经过处理之后想把文件转成字符串String返回给前端,当然这里我们不会直接把String返回给前端,我们会经过处理,比如做Base64处理返回,下面请看如何做base64处理代码: public static void testFileBase64() throws Exception{ InputStream is; ...原创 2019-08-09 17:39:45 · 7056 阅读 · 5 评论 -
Java读取图片/视频等文件byte数组转化String问题
有时候我们拿到一个视频文件或者一张图片文件,经过处理之后想把文件转成字符串String返回给前端,当然这里我们不会直接把String返回给前端,我们会经过处理,比如做Base64处理返回。这里我们先讨论一下如何把文件转成String的问题,请看代码: public static void testFileByteCode(){ try { // 输出默认的字符集...原创 2019-08-09 17:35:16 · 2489 阅读 · 0 评论 -
ImageIO 先read再write 文件变小了
ImageIO 先read再write 图片文件变小了以及处理办法:public static void testImageIo(){ try { InputStream inputStream = FileUtils.openInputStream(new File("/Users/mac/Desktop/B612/a.jpg")); ...原创 2019-08-09 15:55:42 · 2245 阅读 · 0 评论 -
Java读取String分行字符串
1、场景:String字符串中带有分行,需要提取每一行出来处理。2、参考代码如下:public static void main(String[] args) throws IOException{ String s="1\r\n2\r\n3\r\n \r\nabd\r\n"; BufferedReader br = new BufferedReader(new InputStre...转载 2019-08-01 15:07:02 · 4279 阅读 · 0 评论 -
Java执行Linux命令
API把要执行的命令作为exec方法的参数,返回一个Process对象代表命令执行的进程。由于执行完命令通常要获取输出显示出来,因此对执行命令并获取输出的过程封装为一个工具类:CommandUtilpackage org.ml.deployer.util; import java.io.IOException;import java.io.InputStream;import ja...转载 2019-07-30 16:30:38 · 786 阅读 · 1 评论 -
java.io.IOException: Server returned HTTP response code: 415 for URL:xxxxxx
使用httpClient请求数据报错,解决办法:设置Content-Type:connection.setRequestProperty("Content-Type", "application/json; charset=utf-8");原创 2019-06-12 18:22:57 · 5987 阅读 · 0 评论 -
Java中的ReentrantLock和synchronized两种锁定机制的对比
多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 —— synchronized 和 volatile 。在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是使它变转载 2017-12-12 15:56:23 · 208 阅读 · 0 评论 -
IP地址和long互转
/** * 将字符串的ip地址转换为long型. * * @param ip ip地址 * @return long 型ip地址 */ public static final Long ip2Long(final String ip) { Long iplong = null; try{原创 2017-10-24 14:16:04 · 2952 阅读 · 0 评论 -
谨用java.ext.dirs系统属性!
众所周知,java中系统属性java.ext.dirs指定的目录由ExtClassLoader加载器加载,如果您的程序没有指定该系统属性(-Djava.ext.dirs=sss/lib)那么该加载器默认加载$JAVA_HOME/lib/ext目录下的所有jar文件。但如果你手动指定系统属性且忘了把$JAVA_HOME/lib/ext路径给加上,那么ExtClassLoader不会去加载$JAVA_转载 2017-03-22 16:00:55 · 3261 阅读 · 0 评论 -
logback同时按照日期和大小分割日志
上一篇转载了用log4j来实现同时按照日期和大小来分隔日志,后来又研究了下log4j的升级版logback,用logback也来实现同时按照日期和大小来分隔日志,话不多说,直接上配置文件: mylog.txt mylog-%d{yyyy-MM-dd}.%i.txt 100MB 60原创 2017-02-21 15:19:32 · 18462 阅读 · 0 评论 -
log4j 不同模块输出到不同的文件
1、实现目标 不同业务的日志信息需要打印到不同的文件中,每天或者每个小时生成一个文件。如,注册的信息打印到register.log,每天凌晨生成一个register-年月日.log文件, 登录信息的日志打印到一个login.log文件中,login-年月日.log。整体架构:2、maven配置xml version="1.0" encoding="转载 2017-03-01 18:05:06 · 1380 阅读 · 0 评论 -
log4j 同时按日期和文件大小分割日志
重写源代码,可以将代码作为工具类使用(扩展FileAppender类)package com.ihangmei.datareceive.commons;import java.io.File;import java.io.IOException;import java.io.Writer;import java.text.SimpleDateFormat;import java.转载 2017-02-21 10:50:02 · 3355 阅读 · 0 评论 -
Failed to load class "org.slf4j.impl.StaticLoggerBinder"
使用log4j写日志,发现无论如何也生不成日志文件,仔细观察控制台,发现有一行错误:Failed to load class "org.slf4j.impl.StaticLoggerBinder"看来还是缺少jar包,对比之下,缺少了slf4j-log4j的jar包,于是pom文件中加上: org.slf4j slf4j-log4j12 1.7.21再运行,日志文件可以生成了,原创 2017-02-21 10:26:14 · 715 阅读 · 0 评论 -
JAVA 文件压缩和解压(ZIPINPUTSTREAM, ZIPOUTPUTSTREAM)
最近在看java se 的IO 部分 , 看到 java 的文件的压缩和解压比较有意思,主要用到了两个IO流-ZipInputStream, ZipOutputStream,不仅可以对文件进行压缩,还可以对文件夹进行压缩和解压。 ZipInputStream位于java.util.zip包下。下面是它的API,比较简单。文件的压转载 2017-02-20 17:30:21 · 1969 阅读 · 0 评论 -
ClassLoader载入层次
Class.forName(classname)默认是用调用 ClassLoader.getCallerClassLoader()这个方法来获得调用者类的加载器,而调用者的类加载器再利用classLoader的委托模型去加载。其实每次new一个类的时候,也是通过 ClassLoader.getCallerClassLoader()去获得调用者类的加载器来加载的。 Java中的类加载器可以分转载 2016-12-08 14:20:31 · 813 阅读 · 0 评论 -
Java8 Lambda表达式和流操作如何让你的代码变慢5倍
当本文博主也想尝试着去用stream的方式去处理数据,毕竟代码看上去很简洁,很爽,但是,我就写了这么简单的一句:List list = insertList.stream() .filter(d -> "false".equals(d.getResult())).collect(Collectors.toList());insertList中只有两个对象的长度,这一句话执行要将近1转载 2016-11-24 11:26:04 · 1313 阅读 · 0 评论 -
Java8初体验(一)lambda表达式语法
本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘。因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望大家帮忙指出,我会持续修改和优化。本文是该系列的第一篇,主要介绍Java8对屌丝码农最有吸引力的一个特性—lambda表达式。java8的安装工欲善其器必先利其器,首先安装JDK8。过程省略,大家应该都可以自己搞定。但是有一点这里强调一下(Wi转载 2016-11-18 14:41:15 · 303 阅读 · 0 评论 -
java 内存分配全面浅析
本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。进入正题前首先要知道的是Java程序运行在JVM(Java Virtual Machine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所转载 2016-11-17 15:32:11 · 265 阅读 · 0 评论 -
java中获取对象所占用的内存大小
java中快速获取某个对象所占用的内存大小:用lucene核心包中的静态方法: org.apache.lucene.util.RamUsageEstimator.sizeof(Object object);api 链接地址:http://lucene.apache.org/core/4_0_0/core/org/apache/lucene/util/RamUsageEsti原创 2016-11-10 11:01:10 · 6768 阅读 · 1 评论 -
关于java中 renameTo()方法的不成功
java中renameTo()失败转载 2017-03-13 10:11:31 · 10269 阅读 · 0 评论 -
java获取文件夹下所有文件的名称
java获取文件夹下所有文件的名称转载 2017-03-13 17:14:11 · 3263 阅读 · 0 评论