
Java
文章平均质量分 87
菜鸟驿站ㅤ
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
策略枚举:优雅的消除项目中的if-else
策略枚举:if-else的优化方法原创 2022-10-14 15:32:27 · 592 阅读 · 0 评论 -
带你走进JVM之类加载机制
什么是JVM?1.JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。2.Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(...原创 2020-04-13 16:03:29 · 926 阅读 · 0 评论 -
带你走进Redis
看了看网上大佬关于redis的各种见解,自己也统筹的整理一下。什么是redis?1.Redis 是 C 语言开发的一个开源的(遵从 BSD 协议)高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等。2.它是一种 NoSQL(not-only sql,泛指非关系型数据库)的数据库。3.Redis 作为一个内存数据库:性能优秀,数据在内存中,读写速度非常快,支...原创 2020-04-01 11:35:09 · 785 阅读 · 0 评论 -
九种ID生成方式
一、为什么选择分布式ID?1.什么是分布式ID?拿MySQL数据库举例:在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。但随着数据日渐增长,主从同步也扛不住了,就需要对数据库进行分库分表,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增ID显然不能满足需求;特别一点的如订单、优惠券也都需要有唯一ID做标识。此时一个能够...原创 2020-03-19 10:46:59 · 7304 阅读 · 1 评论 -
带你走进Java代码之优化篇
1.需要 Map 的主键和取值时,应该迭代 entrySet()当循环中只需要 Map 的主键时,迭代 keySet() 是正确的。但是,当需要主键和取值时,迭代 entrySet() 才是更高效的做法,比先迭代 keySet() 后再去 get 取值性能更佳。Map<String,String> map = ...;for (Map.Entry<String, Strin...原创 2020-01-06 14:45:51 · 438 阅读 · 0 评论 -
关于YYYY-MM-dd的遇坑指南
关于YYYY-MM-dd究竟遇的什么坑呢?发现了没有?2019的某天被表述为2020的。原因:YYYY是week-based-year,表示:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。所以2019年12月31日那天在这种表述方式下就已经 2020 年了。...原创 2020-01-06 10:37:13 · 544 阅读 · 0 评论 -
Java8的日期时间API有什么?
LocalDate date = LocalDate.now(); System.out.println("获取当前日期:"+date); LocalDate date2=LocalDate.of(2017, 12, 24); System.out.println("获取指定日期:"+date2); LocalDate min...原创 2019-11-19 15:10:33 · 321 阅读 · 0 评论 -
运行时报错Unsatisfied dependency expressed through field 'XXXService',原因竟然是???
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'authorizationController': Unsatisfied dependency expressed through field 'XXXService'; nested exception...原创 2019-11-19 14:28:38 · 40711 阅读 · 13 评论 -
带你走进Java8之Lambda表达式
1.什么是Lamdba?Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码。2.Lamdba的结构?一个lambda分为三部分:参数列表、操作符、lambda体。它的具体特征有哪些呢?可选类型声明: 不需要声明参数类型,编译器可以统一识别参数值。就是说(s) -> System.out.println(s)和 (String s) -> S...原创 2019-11-12 16:34:36 · 342 阅读 · 0 评论 -
java8之Stream操作
1.filter(筛选)筛选list中名字叫lisi的:@Override public void testFilter(String passWord) { Map<String,Object> columnMap = new HashMap<>(); //写表中的列名 columnMap.put("pass_w...原创 2019-11-11 17:04:21 · 626 阅读 · 0 评论 -
Java8之default关键字
default介绍:接口内允许添加默认实现的方法Java 8 允许我们通过 default 关键字对接口中定义的抽象方法提供一个默认的实现,也就是虚拟扩展方法。是指在接口内部包含了一些默认的方法实现(也就是接口中可以包含方法体,这打破了Java之前版本对接口的语法限制),从而使得接口在进行扩展的时候,不会破坏与接口相关的实现类代码。default的出现:谈起之前的接口我们都知道,当需要修改接...原创 2019-11-07 14:14:11 · 1086 阅读 · 0 评论 -
Java代码优化篇
1.尽量减少对变量的重复计算明确一个概念,对方法的调用,即使方法中只有一句语句,也是有消耗的,包括创建栈帧、调用方法时保护现场、调用方法完毕时恢复现场等。例如下面的操作:for (int i = 0; i < list.size(); i++){ ...}建议修改为:在list.size()很大的时候,就减少了很多的消耗for (int i = 0, length = l...原创 2019-10-31 11:02:30 · 278 阅读 · 0 评论 -
Java之文件、各数据类型转byte[]
1.文件转byte数组a.传统方式://文件路径具体到文件名字File fileOne = new File("/file/file.txt");byte[] bytesArray = new byte[(int) fileOne .length()];FileInputStream fis = new FileInputStream(fileOne );//读取文件到byte[]...原创 2018-09-26 15:55:41 · 2381 阅读 · 0 评论 -
关于时间操作的一些方法
1.判断时间是否在当前时间七天内/** * 判断时间是否在当前时间七天内 */ public boolean isLatestWeek(Date addtime,Date now){ //得到日历 Calendar calendar = Calendar.getInstance(); //把当前时间赋给日历 calendar.setTime(now); //设置为7...原创 2019-04-10 09:13:00 · 454 阅读 · 0 评论 -
lamdba表达式异常处理
//编写一个泛型方法对异常进行包装static void doThrow(Exception e) throws E {throw (E)e;}//编译通过Stream.of(“a”, “b”, “c”).forEach(str -> {doThrow(new IOException());});...原创 2019-05-31 18:00:39 · 326 阅读 · 0 评论 -
项目涉及技能点二
1.模糊查询:SELECT proj_id,emp_id,emp_name,schedule_date,briefing,proj_name,task_name,work_hours FROM (SELECT a.proj_id, a.emp_id, (SELECT b.emp_name from emp_info b where a.emp_id = b.emp_id)...原创 2019-04-09 11:28:09 · 311 阅读 · 0 评论 -
Java之客户端与服务端通讯(IO、NIO、Netty)
1.IO通讯:代码如下Client - Server:(1)IoClient:public class IOClient { public static void main(String[] args) { new Thread(() -> { Socket socket = null; try { ...原创 2019-07-30 09:19:58 · 623 阅读 · 0 评论 -
Spring boot 定时器及其他定时器扩展
1.关于spring boot定时任务,其实就是两个注解:(1.)@EnableScheduling:定时任务的启动注解,标注在application启动类上。在 Spring Boot 的配置类中,标注上这个注解,就可以对项目中的方法某些方法使用@Schedule注解,将其变为定时自动执行。package com.example;import org.springframework.bo...原创 2019-08-07 10:16:45 · 345 阅读 · 0 评论 -
Java之个推推送工具类
1.集成jdk方式一:本地下载,下载服务端SDK开发工具包,下载地址为:http://www.getui.com/download/docs/getui/server/GETUI_JAVA_SDK_4.1.0.5.zip方式二:上传jar包到私库,项目引用依赖。2.编写工具类package com.xxx.push.dubbo.util;import com.alibaba.fa...原创 2019-09-24 16:15:42 · 1773 阅读 · 1 评论 -
Java之小米推送工具类
1.集成访问开发者网站,下载jdk:https://dev.mi.com/console/appservice/push.html(下载到本地引用或者上传私库,项目里引用依赖)2.编写工具类package com.xxx.push.dubbo.util;import com.xiaomi.push.sdk.ErrorCode;import com.xiaomi.xmpush.ser...原创 2019-09-24 16:31:28 · 827 阅读 · 0 评论 -
java判断某个日期是当年内第几周
/** * 判断一年的第几周 * @param datetime * @return * @throws java.text.ParseException */ public static Integer whatWeek(String datetime) throws java.text.ParseException { Simple...原创 2019-04-09 16:22:27 · 6909 阅读 · 0 评论 -
java生成编号
public static String getNewEquipmentNo(String equipmentType, String equipmentNo){ String newEquipmentNo = "00001"; if(equipmentNo != null && !equipmentNo.isEmpty()){ ...原创 2019-04-11 17:43:47 · 2765 阅读 · 0 评论 -
文件转Byte[]、以及byte[]转文件的工具类
一、1.文件转Byte[]: // 第1步、使用File类找到一个文件 File f= new File("e:/demo/demoNext" + File.separator + "java.docx") ; // 声明File对象 // 第2步、通过子类实例化父类对象 InputStream input = null ; // ...原创 2018-10-16 13:58:34 · 22387 阅读 · 1 评论 -
Java上传文件内容
通过字节输入流InputStream && FileInputStream,将文件信息写进byte数组:具体代码如下: // 第1步、使用File类找到一个文件 File f= new File("e:/demo/demoNext" + File.separator + "java.docx") ; // 声明File对象 // 第2步、通过子类实例化父类对象...原创 2018-10-08 16:06:10 · 2173 阅读 · 0 评论 -
【优化版】Java文件上传数据库(并保存本地)、word转pdf并进行页面预览
上一篇文件上传【点击跳转】,是将路径等文件信息存进log_file临时表,内容二进制存入数据库Test表,这种逻辑是在调用数据库表Test内容展示时,判断文件为word(转换成pdf)还是pdf(直接展示)。上一篇链接:链接地址。下面进一步优化:具体逻辑:删除原数据表Test,路径等文件信息依旧存log_file表。文件预览时,判断文件类型,如果为word类型,进行转换pdf展示;反之直接展...原创 2018-09-27 11:54:20 · 1745 阅读 · 0 评论 -
Java8新特性Stream之list转map及问题解决
List集合转Map,用到的是Stream中Collectors的toMap方法:Collectors.toMap具体用法实例如下://声明一个List集合List&lt;Person&gt; list = new ArrayList(); list.add(new Person("1001", "小A")); list.add(new Person原创 2018-10-11 14:57:44 · 234097 阅读 · 9 评论 -
Java之获取文件名、文件前缀名、文件类型(文件后缀名)
方法一:split分割:如果用“.”作为分隔的话,必须是如下写法,String.split("\."),这样才能正确的分隔开,不能用String.split(".") String filename = "file.txt";// 文件名 String[] strArray = filename.split("\\."); i原创 2018-09-26 15:30:34 · 144649 阅读 · 15 评论 -
Java文件上传数据库(并保存本地)、word转pdf并进行页面预览
对于页面预览用到了OpenOffice附件:官方的下载地址:Apache OpenOffice选择windows版本安装完成后,在cmd中执行下面两个命令,查看任务管理器中是否有soffice.bin的进程。(用到OpenOffice,必须保证任务管理器中有soffice.bin的进程)cd C:\Program Files (x86)\OpenOffice 4\programsoff...原创 2018-09-26 14:34:01 · 8587 阅读 · 0 评论 -
Java数据类型对应的各数据库类型
Java与Oracle、IBM Content Manager、Informix及SQL Server映射表:Java与MySql映射表:注意:对于bolb,一般用于对图片的数据库存储,原理是把图片打成二进制,然后进行的一种存储方式,在java中对应byte[]数组。...原创 2018-09-25 11:49:58 · 16897 阅读 · 2 评论 -
Java之创建目录、文件并写入、读取文件内容
1.mkdirs():可以建立多级文件夹, mkdir()只会建立一级的文件夹。2.getParentFile():获得父目录。3.file.getParentFile().exists():判断父目录是否存在。4.FileWriter:如果文件名 的文件不存在,先创建再读写;存在的话直接追加写,true表示追加,write()写入内容的方法。5.FileReader:读取文件内容(int...原创 2018-09-19 15:24:23 · 5740 阅读 · 0 评论 -
Thumbnailator图片处理(图片缩放,区域裁剪,水印,旋转,保持比例)
Thumbnailator 是一个优秀的图片处理的Google开源Java类库。处理效果远比Java API的好。从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生成处理后的图片,且允许微调图片的生成方式,同时保持了需要写入的最低限度的代码量。还支持对一个目录的所有图片进行批量处理操作。jar包下载:https://pan.baidu.com/s/1P29mv...原创 2018-10-16 15:30:48 · 2726 阅读 · 0 评论 -
Excel文件导出后台接口及工具类
有时项目中会有需求,是将内容导出到excel表格中,参考网上的很多教程写的都比较多,现在将主要代码写成工具类,封装成jar包。一、接下来要展示的的Excel导出功能借助的是自己设置模板,如下:注意:需要对第一列两行设置备注:1.设置你要导出字段的区域,到第几行第几列就写上对应单元格号。(这里是两行两列,所以到B2),如图:2.(1)设置items(存放你要导出信息的集合名,下面在写导...原创 2018-10-19 10:45:17 · 1894 阅读 · 0 评论 -
java判断删除或者修改方法是否成功?
如何判断是否修改成功?1.一般使用 try catch exception, 不发生异常的时候就默认为成功,但是这样有点欠妥。2.通过存储过程返回值来判断是否正确执行,如:执行成功返回1或者大于0,失败返回0。如何判断是否删除成功?与修改略微有点差别,如果没有数据被删除,但是也执行成功了,返回值是0,所以一般先查询一次是否有数据。...原创 2019-02-21 14:40:27 · 6785 阅读 · 0 评论 -
java之Arrays工具类的使用
Arrays 是JDK提供的操作数组的工具类,array类提供了动态创建和访问 Java 数组的方法。arrays此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。主要有一下几种用法。首先声明几个数组: int a[]={20,3,32,1,72,26,35}; int b[]={3,5,7,8,54,23,9}; in...原创 2018-12-17 17:26:27 · 6645 阅读 · 4 评论 -
Java之切割时间段
就是把一段时间内,按需要进行分离、输出,话不多说,直接上代码工具类:public class DateUtil { /** * 切割時間段 * * @param dateType 交易類型 M/D/H/N -->每月/每天/每小時/每分鐘 * @param start yyyy-MM-dd HH:mm:ss * @param end ...原创 2018-11-15 11:05:59 · 10376 阅读 · 2 评论 -
Java之删除指定文件下的文件、查询文件夹下文件个数、判断文件夹下是否有文件
一、关于删除指定文件夹下的文件,这里写了一个工具类,但是删除的是全部文件,包括图片,如果需要删除各别类型,再额外定义文件类型(根据后缀)。文件删除工具类:public class delUtil { public static boolean delAllFile(String path) { boolean flag = false; File f...原创 2018-11-15 10:35:32 · 3077 阅读 · 0 评论 -
Java之图片或文件的复制
在写Java程序时,有时候我们需要将一个文件夹下的图片或者文件,复制到其他指定的文件夹中,这个时候就用到了IO流。具体测试类代码如下:public class Test08 { public static void main(String[] args) { long startTime = System.currentTimeMillis(); File fromFile = ...原创 2018-11-15 09:54:47 · 848 阅读 · 0 评论 -
Java之获取本机所有IP
IP工具类://获取本机所有IP地址public class IpUtil { public static List&lt;String&gt; getLocalIPList() { List&lt;String&gt; ipList = new ArrayList&lt;String&gt;(); try { Enumeration&am原创 2018-10-23 10:03:21 · 10856 阅读 · 2 评论 -
Java8之Stream流代替For循环
Stream流代替For循环进行输出可以使代码更简洁。需求:根据姓名获取员工信息1.建立实体类:Emppublic class Emp { private String id; private String name; public Emp(String id, String name) { this.id=id; this.name=name; } public St...原创 2018-10-17 15:34:52 · 21427 阅读 · 2 评论 -
Java8新特性Stream之Collectors(toList()、toSet()、toCollection()、joining()、partitioningBy()、collectingAndT)
将流中的数据转成集合类型:一、将数据收集进一个列表(Stream 转换为 List,允许重复值,有顺序)//1.将数据收集进一个列表(Stream 转换为 List,允许重复值,有顺序)Stream&amp;lt;String&amp;gt; language = Stream.of(&quot;java&quot;, &quot;python&quot;, &quot;C++&原创 2018-10-17 13:54:07 · 109139 阅读 · 3 评论