
Java基础
Java基础...
19921106
本宝宝还没想到。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
jdk8常用技巧
1、时间类 //时间类private LocalDateTime createDate;//对应于MySQL数据库datetime//获取当前时间1.8LocalDateTime s = LocalDateTime.now()2、数据处理jdk8-map遍历 .forEach((k, v) -> {原创 2021-09-03 08:49:51 · 167 阅读 · 0 评论 -
反射工具使用
hutool-all.4.6.1.jar//获取值//obj是该对象,fieldNmae是字段名Object o = ReflectUtil.getFieldValue(Object obj,String fieldNmae);//设置值省略原创 2021-09-01 10:37:21 · 882 阅读 · 0 评论 -
集合工具类
org.apache.commons.collections包//操作list集合CollectionUtils.isNotEmpty(list);//集合切分CollectionUtils.split(list,100);//操作Map集合MapUtil.isNotEmpty(map);MapUtils.getDoubleValue(map,"aa");原创 2021-09-01 10:21:52 · 126 阅读 · 0 评论 -
字符串工具类
commons-lang3包//将list集合或者数组以逗号分隔为字符串String s = StringUtils.join(lsit,",");String s = StringUtils.join(list.toArray(),",");原创 2021-09-01 10:15:38 · 73 阅读 · 0 评论 -
Java中使用try语句实现自动关闭输入输出流
在写Java输入输出流的时候很重要的一点就是在最后不要忘记调用close函数来关闭打开的流,因为打开文件是一种独占式的操作,打开后不关闭会导致其他程序不能再次打开这个文件。为了避免程序员在写输入输出流时忘记关闭流,Java提供了一种try的语法结构,可以实现流的自动关闭。其语法结构如下:try(创建的流对象){ 对输入输出流进行操作的语句}需要注意的是,在try语句后面的小括号中,需要写入的是创建流对象的完整的语句,是要带分号的,具体如下:try(PrinterWriter pw = n转载 2021-08-30 11:40:12 · 1677 阅读 · 0 评论 -
java AES 加密,报javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decryp
java 使用AES解密报这个异常,字面理解很容易,就是解密的字符串的数组必须是16的倍数javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:922) at com.sun.crypto.provid转载 2021-08-30 11:37:17 · 6643 阅读 · 0 评论 -
JAVA实现AES 解密报错Input length must be multiple of 16 when decrypting with padded cipher
加密代码 /** * 加密 * * @param content 需要加密的内容 * @param password 加密密码 * @return */ public static byte[] encrypt(String content, String password) { try {转载 2021-08-30 11:33:59 · 2017 阅读 · 0 评论 -
String.format()的详细用法
项目中使用:String.format("#%d val%s %s\n",I+1,hm,val)String.format()字符串常规类型格式化的两种重载方式format(String format, Object… args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。format(Locale locale, String format, Object… args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。上个栗子有用到了字符类型和整数类型的原创 2021-08-30 11:21:10 · 475 阅读 · 0 评论 -
Math各方法使用
1、Math.round() “四舍五入”, 该函数返回的是一个四舍五入后的的整数 double d = 3.1415926; double d2 = 18.58; double d3 = -15.23; double d4 = -16.85; long round1 = Math.round(d); // 结果 3 long round2 = Math.round(d2); // 结果 19转载 2021-08-30 10:50:17 · 666 阅读 · 0 评论 -
BigDecimal使用
1、BigDecimal中的divide主要就是用来做除法的运算public BigDecimal divide(BigDecimal divisor,int scale, int roundingMode)第一个参数是除数,第二个参数代表保留几位小数,第三个代表的是使用的模式。BigDecimal.ROUND_DOWN:直接省略多余的小数,比如1.28如果保留1位小数,得到的就是1.2BigDecimal.ROUND_UP:直接进位,比如1.21如果保留1位小数,得到的就是1.3BigDeci原创 2021-08-30 10:46:58 · 132 阅读 · 0 评论 -
Source does not fit in dest 异常处理
1、Collections里面的copy()方法问题:copy(List<? super T> dest, List<? extends T> src)表示将所有元素从一个列表复制到另一个列表中。src是原来列表,dest是新的列表。public class CollectionsTest { public static void main(String[] args) { // 创建一个集合list ArrayList<Integ原创 2021-07-01 07:44:27 · 911 阅读 · 2 评论 -
为什么java的web开发中URLEncoder.encode方法要为什么要调用两次
一: 我们先看2个编码的情况编码、解码: String name=java.net.URLEncoder.encode("测试", "UTF-8"); System.out.println(name); name=java.net.URLEncoder.encode(name,"UTF-8"); System.out.println(name); name=java.net.URLDecoder.decode(name, "UTF-8"); System.out.println(name);转载 2021-06-27 16:00:06 · 337 阅读 · 0 评论 -
前端传递json对象到后台处理
前端传递的数据是json形式,包含字符串和数组前端htmlvar param={};for (var i in data){ goodsIds.push(data[i].goodsId)}param.goodsIds=goodsIds;//数组param.orgId=666;//数字$.ajax({headers: {"token": getRequestToken()},contentType: "application/x-www-form-urlencoded", type: "原创 2021-01-15 19:22:30 · 3061 阅读 · 0 评论 -
枚举使用
定义枚举类public enum OrderItemStatusEnum { Shipment_SUCC(1), Shipment_Failure(2), ; private int val; private OrderItemStatusEnum(int _val) { this.val = _val; } public int val(){ return val; } }使用枚举类1== OrderItemStatusEnum.Shipment_SUCC.v原创 2020-12-14 11:06:16 · 126 阅读 · 0 评论 -
加密算法的应用
散列算法不可逆的MD5、SHA(128、256)系列使用先添加commons坐标<dependency> <groupId>commons‐codec</groupId> <artifactId>commons‐codec</artifactId> <version>1.14</version></dependency>分别使用 jdk的security实现md5和借助commons原创 2020-12-06 17:36:31 · 534 阅读 · 0 评论 -
最优商品topk
topk是一个典型的业务场景,除了最优商品,包括推荐排名、积分排名所有涉及到排名前k的地方都是该算法的应用场合。topk即得到一个集合后,筛选里面排名前k个数值。解决:利用最小堆算法import java.util.Arrays;public class Topk { //堆元素下沉,形成最小堆,序号从i开始 static void down(int[] nodes,int i) { //顶点序号遍历,只要到1半即可,时间复杂度为O(log2n)原创 2020-12-06 12:29:54 · 255 阅读 · 0 评论 -
网站敏感词过滤
敏感词、文字过滤是一个网站必不可少的功能,高效的过滤算法是非常有必要的。针对过滤首先想到的可能是这样:方案一、使用java里的String contains,逐个遍历敏感词:String[] s = "广告,广告词,中奖".split(",");String text = "讨厌的广告词";boolean flag = false;for (String s1 : s) { if (text.contains(s1)){ flag = true; break原创 2020-12-06 12:23:28 · 1521 阅读 · 1 评论 -
拷贝算法
浅拷贝浅拷贝会创建一个新对象,新对象属性值有着原对象属性值的准确拷贝。 1、当属性是基本类型,则直接进行值传递,是两份不同的内容,当对其中一个修改,不会影响另外一个。 2、当属性是引用类型,则拷贝的是该引用类型的内存地址。所以就会出现开篇说到的问题,当其中一个对象改变了内存地址,则另外一个对象也会发生改变,因为他们两个共用同一个内存地址。演示public class Person { private String name; private int age; public Stri原创 2020-08-03 00:20:47 · 223 阅读 · 0 评论 -
JDK9、11新特性
JDK91、jshell使用:轻量级的小工具进入、使用、退出。JDK11jdk8、11是官方长期支持的版本。1、变量类型推断 在JS中,不管类型是什么,我们都是使用var来进行变量声明的。但是之前对于Java的使用,都会提到它是强类型语言,变量声明需要定义特定类型。但是在JDK11中对JDK8的类型推断思路又得以延伸,使用JS的方式,通过var定义局部变量,它会根据右边的表达式推断变量类型var text = "hello itheima";sout(text);2、新增字符串方法原创 2020-08-02 20:04:33 · 359 阅读 · 0 评论 -
JDK8新特性第二章
Optional介绍 为了防止空指针异常的出现,Java8中引入了一个新类Optional,对于它之前我们已经进行了简单的实现。其本质就是通过Optional类对值进行封装, 当有值的时候,会把该值封装到Optional类中。如果没有值的话,则会在该类封装一个Empty使用1、创建Optional对象 empty():会直接返回一个空的Optional实例,内部不会存在任何值。 of():of()会返回一个存在值的Optional对象,并且该值不允许null的存在。如果调用该方法时传入参数原创 2020-08-02 18:58:33 · 147 阅读 · 0 评论 -
JDK8新特性第一章
jdk1.81、lambda表达式2、函数式接口:有且只有一个抽象方法3、Stream常用函数 public static void main(String[] args) { ArrayList<String> list1=new ArrayList<>(); list1.add("迪丽热巴"); list1.add("宋远桥"); list1.add("苏星河"); list1.add(原创 2020-07-11 22:14:00 · 207 阅读 · 0 评论 -
网站在线人数统计之HttpSessionListener使用
概念Session创建事件发生在每次一个新的session创建的时候,类似地Session失效事件发生在每次一个Session失效的时候。这个接口也只包含两个方法,分别对应于Session的创建和失效:#public void sessionCreated(HttpSessionEvent se);#public void sessionDestroyed(HttpSessionEvent se);我的web应用上想知道到底有多少用户在使用?在网站中经常需要进行在线人数的统计。过去的一般做法是结转载 2020-05-17 19:05:23 · 227 阅读 · 0 评论 -
ehcache的实际使用
一、定义一个工具类import net.sf.ehcache.Cache;import net.sf.ehcache.CacheManager;import net.sf.ehcache.Element;import org.jetbrains.annotations.NotNull;import java.util.HashMap;import java.util.Map;/**...原创 2019-10-08 15:32:37 · 224 阅读 · 0 评论 -
yq&ww总结
1、将一个对象转成json形式,并删除json中某几个属性 导包:net.sf.json.JSONObject Map<String, Object> map = CommonConstants.ss(JSONObject.fromObject(alarmTarInLea)); ss方法: public static Map ss(Map map){ map.remov...原创 2019-10-08 10:57:07 · 462 阅读 · 0 评论 -
JSON
将list转成JSONJSONArray jsonArray = JSONArray.fromObject(list);//下边是过滤掉list中order。JsonConfig jsonConfig = new JsonConfig();jsonConfig.setExcludes(new String[]{“order”});JSONArray jsonArray = JSONArr...原创 2019-08-20 15:39:39 · 151 阅读 · 0 评论 -
Java工具类
隐藏手机号码if(ss.startsWith("86")) { ss = ss.substring(0, 5)+"****"+ss.substring(9, 13);}else { ss = ss.substring(0, 3)+"****"+ss.substring(7, 11);}原创 2020-04-29 16:02:11 · 177 阅读 · 0 评论 -
instanceof关键字
如何才能知道一个父类引用的对象,本来是什么子类?格式:对象 instanceof 类名称这将会得到一个boolean值结果,也就是判断前面的对象能不能当做后面类型的实例。 if (animal instanceof Dog) { Dog dog = (Dog) animal; dog.watchHouse(); } ...原创 2020-03-07 13:49:32 · 153 阅读 · 0 评论 -
序列化和反序列化
对象的序列化流作用:把对象以流的方式写入到文件中保存一个对象要想序列化,必须满足两个条件:1、该类必须实现 java.io.Serializable 接口, Serializable 是一个标记接口,不实现此接口的类将不会使任 何状态序列化或反序列化,会抛出 NotSerializableException 。 2、该类的所有属性必须是可序列化的。如果有一个属性不需要可序列化的,则该属性必...原创 2020-03-07 13:48:21 · 202 阅读 · 1 评论 -
Java中list集合分页实现
/** * * 开始分页 * @param list * @param pageNum 页码 * @param pageSize 每页多少条数据 * @return */public List<T> startPage(List<T> list, Integer pageNum, Integer pageSize) { if (list == nu...原创 2019-12-09 12:50:53 · 2555 阅读 · 1 评论 -
正则大全
1。^\d+ //匹配非负整数(正整数+0) 2。[0−9]∗[1−9][0−9]∗ //匹配非负整数(正整数 + 0) 2。^[0-9]*[1-9][0-9]* //匹配非负整数(正整数+0) 2。[0−9]∗[1−9][0−9]∗ //匹配正整数 3。^((-\d+) ?(0+)) //匹配非正整数(负整数+0) 4。−[0−9]...原创 2019-11-28 14:14:22 · 1044 阅读 · 0 评论 -
多线程总结(下)
1、多线程之多个生产者、消费者交替运行案例1、生产者、消费者实体类(分别无限设置和输出字段值)2、测试main方法,同时开启2个生产者、2个消费者线程用同一把锁resource哪个3、resource类多线程同步方法编写细节设计思路:生产者和消费者轮流执行,根据flag进行判断哪个执行。共同的锁this当前对象,notify()方法一般是唤醒线程池中先进入的线程。notifyAll()...原创 2019-11-27 23:16:20 · 198 阅读 · 0 评论 -
反射
定义概念 概念:反射就是将Java类中的各种成分映射成相应的Java类 1、获取Class的3种方式 对象 s=new 对象(); s.getClass(); 类名.class; Class.forName("java.lang.String");//主要用这种。 Java中有9个预定义的Class实例对象(8个基本数据类型和void),void.class也是可以的。2、练习...原创 2019-11-25 00:47:33 · 141 阅读 · 0 评论 -
多线程总结(上)
1、多线程的方式1-实现Runnable接口(推荐使用)优点:,可以多实现不可以多继承/* * 使用Thread类实现多线程的程序(多开启执行路径) * * 实现步骤: * 创建Thread类对象,构造方法中,传递Runnable接口的实现类对象 * Thread类调用方法start()开启线程 */public class Demo_01Thread { publi...原创 2019-11-13 17:54:49 · 166 阅读 · 0 评论 -
IO流-转换流的使用
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java...原创 2019-11-11 11:26:10 · 224 阅读 · 0 评论 -
IO流-文件复制(FileReader、FileInputStream的使用)
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;/* * 文件复制 */...原创 2019-11-11 11:21:04 · 229 阅读 · 0 评论 -
IO流-读文件(FileReader:文件字符读取流)
method2: 一次一个字符数组的读method: 一次读取一个字符import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;/* * FileReader:文件字符读取流 * * 构造方法: * public FileReader(String f...原创 2019-11-11 11:14:07 · 664 阅读 · 0 评论 -
GUI实现记事本功能
GUI界面可以打开保存等操作。import java.awt.Dimension;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.TextArea;import java.awt.Toolkit;import java.awt.event.ActionEven...原创 2019-11-11 11:01:16 · 1092 阅读 · 0 评论 -
高效流完成文件复制(BufferedReader、BufferedWriter的使用)
bw.newLine();该方法要import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;...原创 2019-11-10 18:17:10 · 897 阅读 · 0 评论 -
IO流案例-熊猫烧香
需求:给盘符中的某个文件夹循环遍历下面的子文件夹全部文件夹图标改为熊猫图标。需要做一个事:jpg图片转ico格式网上找工具即可。技术点:1、desktop.ini是系统可识别的一个文件,作用是存储用户对文件夹的个性设置(用户更换文件夹图标等等都会生成desktop.ini);2、我们用到的desktop.ini文件中的内容:[.ShellClassInfo]IconFile=c:\lo...原创 2019-11-10 17:13:58 · 340 阅读 · 0 评论 -
自定义异常
继承Excetion是定义编译时异常继承RunntimeExcetion是定义运行时异常throw:主动抛出异常throws:方法声明抛出异常,多个异常用、号隔开自定义异常: 如果想让异常对象在调用printStackTrace方法时,可以有描述信息,就需要加入一个带描述信息的构造方法。示例如下:/* * 自定义运行时异常(编译时异常继承Exception) */public cl...原创 2019-11-08 20:51:25 · 129 阅读 · 0 评论