目录

工欲善其事

实践出真知

活跃标签: linux java mysql 待分类 js springboot win10 电路 vue macOS nginx esp32 git docker windows idea maven esp8266 python Arduino

存档:

标签: java (35)

帆软 取值 赋值 拼接等

数据库中取值 VALUE('ds1', '试剂名称') ds1:数据库名砸 试剂名称:字段名 $createBy $用于获取变量

[ Java ] 解决文件下载中文文件名乱码的最佳实践

1.方案一 如果下载的文件名包含中文,有时浏览器可能无法正确显示文件名,而会显示乱码或者一串数字和字母。这个问题可以通过设置Content-Disposition响应头的filename参数来解决,该参数可以指定要下载的文件名,并且支持URL编码。 下面是一个示例代码,演示了如何在Java Web中设置响应的文件名,以支持中文文件名的下载: @GET @Path("/download") public Response downloadFile(@QueryParam("filename") String filename) throws UnsupportedEncodingException { // 获取要下载的文件 File file = new File("/path/to/files/" + filename); // 创建响应 ResponseBuilder responseBuilder = Response.ok(file); // 设置文件名 String encodedFilename = new String(filename.getBytes("UTF-8")....

LocalDateTime中增加、减少、直接修改时间的方法、计算时间间隔的方法 有更新!

一、LocalDateTime中增加或者减少时间的方法 1.增加或减少年份(第一种方法):调用plusYears()方法,括号中传入增加或减少的年数 当传入的参数为正数时,表示增加年份 当传入的参数为负数时,表示减少年份 代码示例: public static void main(String[] args) { //先创建一个LocalDateTime对象:2020,11,11,13:14:15 LocalDateTime localDateTime = LocalDateTime.of(2020, 11, 11, 13, 14, 15); //用对象调用plusYears方法(也可以调用月、日、小时等等的方法) //这里是增加年份的方法,传入参数1,表示年数增加1 LocalDateTime newLocalDateTime = localDateTime.plusYears(1); //再格式化一下 DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"); String s =....

EasyExcel复杂表头读写,合并表头读写

JAVA版本:1.8.0_321,所需的maven依赖: <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.1.0</version> </dependency> <!-- lombok 非必要 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> <scope>provided</scope> </dependency> <!-- fastjson非必要 --> <dependency> <groupId>com.alibab....

Java 时间和秒互转 有更新!

public class TimeUtil { public static void main(String[] args) { String minute = toMinute(3601); System.out.println("minute = " + minute); String timeStr = "1:00:01"; int second = toSecond(timeStr); System.out.println("second = " + second); } private static int toSecond(String timeStr) { if (timeStr != null) { String[] time = timeStr.split(":"); int second = 0; for (int index = 0; index < time.length - 1; index++) { second += Integer.valueOf(time[index]) * (int) Math.pow(60, index); } return ....

为什么需要序列化?Java序列化的缺点?如何自定义序列化?【转】

是什么 一句话就能够说明白什么是 Java 序列化和反序列化?「Java 序列化是将 Java 对象转换为字节序列的过程,而 Java 反序列化则是将字节序列恢复为 Java 对象的过程。」 「序列化」 :任何需要保存到磁盘或者在网络进行传输的 Java 对象都需要支持序列化,序列化后的字节流保存了 Java 对象的状态及相关的描述信息,反序列化能够根据这些信息“复刻”出一个一模一样的对象。序列化的核心作用就是对象状态的保存。 「反序列化」 :反序列化就是根据磁盘中保存的或者网络上传输的字节流中所保存的对象状态和相关描述信息,通过反序列化重建对象。 所以,从本质上来说,序列化就是将对象的状态和相关描述信息按照一定的格式写入到字节流中,而反序列化则是从字节流中重建这个对象。 为什么 为什么需要 Java 序列化和反序列化呢?有两个原因: 持久化。即将该对象保存到磁盘中。一般来说我们是不需要持久化 Java 对象的,但是如果遇到特殊情况,我们需要将 Java 对象持久化到磁盘中,以便于我们在重启 JVM 时可以重建这些 Java 对象。所以我们可以通过序列化的方式将 Java 对象转换成字....

Java 模板引擎 [ Velocity ] 有更新!

Velocity 中加载 vm 文件的三种方式: a. 加载classpath目录下的vm文件 Properties p = new Properties(); try { // 加载classpath目录下的vm文件 p.setProperty("resource.loader.file.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); // 定义字符集 p.setProperty(Velocity.INPUT_ENCODING, "UTF-8"); // 初始化Velocity引擎,指定配置Properties Velocity.init(p); } catch (Exception e) { throw new RuntimeException(e); } 这种方式只能读取本jar包中的vm文件。初始化成功后,使用:Velocity.getTemplate( *templateFilePath* );加载文件! b. 根据绝对路径加载 Properties p = ne....

[ Java ] 【返璞归真】记事本方式编写Java文件,引入Jar包编译 & 运行 有更新!

今天用记事本写一段Java代码,突然想到如果用记事本写java代码引入一个Jar包该怎么编译和运行呢?直接上手试一下。 1、文件目录 即便是纯手写代码也要尽可能的去模拟一下真实的项目结构(非必须): C:\Users\lslil\WorkSpack\v1>dir 驱动器 C 中的卷没有标签。 卷的序列号是 0A7F-2066 C:\Users\lslil\WorkSpack\v1 的目录 2023/08/29 09:09 <DIR> . 2023/08/29 09:06 <DIR> .. 2023/08/29 09:11 <DIR> classes 2023/08/29 09:07 <DIR> lib 2023/08/29 09:08 <DIR> src 0 个文件 0 字节 5 个目录 426,508,828,672 可用字节 C:\Users\lslil\WorkSpack\v1> 2、源码文件:Main.java 一个简单的小实现:借助hutool工具包完成字符串首字母大写,并输出Hello World! ....

[ IDEA ] 激活,适用IntelliJ IDEA 2022.2 (Ultimate Edition)

验证的版本: 2023.1 2023.2 IDEA激活适用IntelliJIDEA2022.2UltimateEdition.zip

[ Java ] 调用本地命令

使用Java调用本地程序 final Process p = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", String.format("/Users/liguanglei/Applications/ffmpeg-5.1.2/ffmpeg -allowed_extensions ALL -protocol_whitelist "file" -i %s -c copy %s", m3u8, outMp4) }); Thread outThread = new Thread(() -> { try { BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = br.readLine()) != null) { System.out.println("out [" + line + "]"); } } catch (Exception e) { } }).......

[ pom ] Maven 的pom文件详解

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!--父项目的坐标。如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。 坐标包括group ID,artifact ID和 version。 --> <parent> <!--被继承的父项目的构件标识符 --> <artifactId /> <!--被继承的父项目的全球唯一标识符 --> <groupId /> <!--被继承的父项目的版本 --> <version /> <!--父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径....

[ Java ] 早年收藏的图片

springboot的一些例子.zip

[ Vert.x ] 一个非常先进的脚手架可惜没火起来

该文章已经加密。

[ Spring ] 早年收藏的图解

1:首先方法进入:doDispatch 2:checkMultipart() 判断当前请求是否有文件 3:getHandler() :通过HandleMapping去找一个Controller对象 3.1:扩展点1:HandleMapping 3.2: Spring boot 扩展Spring mvc 其中就扩展了 HandleMapping 去解析静态资源 4: getHandlerAdapter(): 根据你controller的类型去找一个适配器 4.1: 因为Controller有很多种不同的注册方式 所以需要不同的适配器 4.2:扩展点2:HandlerAdapter 5:handle() : 执行Controller逻辑并且进行视图裁决(判断是要重定向还是转发还是响应页面) 5.1invokeForRequest():执行方法的全部逻辑 5.2:首先给参数赋值 5.2.1:参数赋值的扩展点:HandlerMethodArgumentResolver 5.3:调用invoke()指定方法 6:setResponseStatus()设置ResponseStatus响应状态码 对....

[ JDK 11] 关于 Java 模块系统

继 2014 年 3 月 Java 8 发布之后,时隔 4 年,2018 年 9 月,Java 11 如期发布,其间间隔了 Java 9 和 Java 10 两个非LTS(Long Term Support)版本。作为最新的LTS版本,相比 Java 8,Java 11 包含了模块系统、改用 G1 作为默认 GC 算法、反应式流 Flow、新版 HttpClient 等诸多特性。作为 JDK 11 升级系列的第一篇,本文将介绍此次升级最重要的特性——模块系统。 1 模块系统简介 如果把 Java 8 比作单体应用,那么引入模块系统之后,从 Java 9 开始,Java 就华丽的转身为微服务。模块系统,项目代号 Jigsaw,最早于 2008 年 8 月提出(比 Martin Fowler 提出微服务还早 6 年),2014 年跟随 Java 9 正式进入开发阶段,最终跟随 Java 9 发布于 2017 年 9 月。 那么什么是模块系统?官方的定义是A uniquely named, reusable group of related packages, as well as reso....

[ JavaFx ] 容器布局

在开发应程序中容器的概念非常重要,有点类似HTML中的div但又完全不是。容器间可以嵌套等用法程序的最外层必须得有一个容器包裹,不然无法启动。 ) 容器组件预览 本章所讲的所有控件都是容器控件,即可以嵌套其他控件,也可以嵌套其他的容器,大多数容器都与布局有关,而明白这些容器的功能便于快捷布局。 所有的容器组件预览如下图所示: 各个容器控件介绍如下: Accordion:复合标题面板的布局容器,效果查看下图。 Accordion(empty):复合标题面板的布局容器,没有Anchor锚布局面板,效果查看下图。 AnchorPane:锚布局,组件可以在布局中的任何位置,效果查看下图。 BorderPane:边界布局,分为TOP、LEFT、CENTER、RIGHT、BOTTOM五个区域。 FlowPane:流布局,从左到右依次排列,放不下时就换行继续排列。 GridPane:网格布局,所有控件或容器放到相应的网格中。 HBox:水平盒子,里面的控件呈水平排列,和VBox垂直盒子相对应。 Pane:所有容器Pane面板类的父类,基本容器面板。 ScrollPane:滚动面板容器。 Scroll....

[ String ] format方法有哪些功能

记得刚毕业时出去面试,被问到Java 的String有哪些常用方法时我竟没打上来。当时非常尴尬,最重要的是好多小姑娘都在看我- -!好叭废话不多说了下面介绍一下String中format方法。 显示不同转换符实现不同数据类型到字符串的转换,如下表: |转 换 符|说 明 |示 例| |------|------|------| |%s|字符串类型|"mingrisoft"| |%c|字符类型|'m'| |%b|布尔类型|true| |%d|整数类型(十进制)|99| |%x|整数类型(十六进制)|FF| |%o|整数类型(八进制)|77| |%f|浮点类型|99.99| |%a|十六进制浮点类型|FF.35AE| |%e|指数类型|9.38e+5| |%g|通用浮点类型(f和e类型中较短的)|| |%h|散列码| |%%|百分比类型|%| |%n|换行符| | |%tx|日期与时间类型(x代表不同的日期与时间转换符| | format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。 format(Loc....

[ Linux ] 配置Java环境变量 详解 有更新!

当你手动安装JDK环境,或部署一台新电脑时解压的jdk需要写到/etc/profile才能每次开机时给你加载! 现在我们一起写一个自动配置Java运行环境的脚本,目的是在你jdk解压目录运行脚本,拿到当前路径配置的/etc/profile中 Java环境变量Linux配置如下: export JAVA_HOME=/usr/local/jdk1.8.0_261(您的 JDK 版本) export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib export PATH=$JAVA_HOME/bin:$PATH 我们需要将这一段代码写到/etc/profile最后面。 Java环境变量Win配置如下: rem* 管理员身份运行 %1 start "" mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&ex....

[ IDEA ] 实现远程调试

解决上线之后代码调试的功能(远程调试) 1. [ 服务器端 ] 在命令行执行 java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 ***.jar 2. [ 电脑端 ] 在idea中配置degug连接 路径依次如下: Run->Edit Configuration->点击+号添加一个Remot即可,可随意设置名称,这里我设置为localdebug 在remote页面中,因为是调试本机启动的jar包,就使用默认的 Host:localhost Port:5005 即可。 演示如下: 项目启动后会等待链接 idea配置好后点击Debug按钮启动后台即可执行 2022-12-10号:踩坑 本地配置好好的放在同局域网内就提示连不上了? 开始以为是win防火墙的问题,检查发现没有开。一顿搜索之后找到了问题所在 需要在你的地址那里写上本纪的ip,不然会存在回环地址或其它的问题。当然也不排除JDK的问题!

如何在Java中将double转换为int?

在本文中,我们将看到如何将double转换为int。 在Java编程中,您将有一个double原语值(例如82.14),但是要执行进一步的操作,您需要一个int值(例如82),所以让我们看看如何在Java中将double转换为int。 您可以通过三种方式将double转换为int。我将在下面列出所有内容,然后我们将一一列出。 1,将double转换为int —使用类型转换 2,将double转换为int —使用 Math.round() 3,将double转换为int —使用 Double.IntValue() 1.将double转换为int —使用类型转换 我们知道double是64位原始值,而int是32位原始值。因此,要将double转换为int,我们可以将double值下转换为int。 我在下面给出了一个简单的示例,该示例显示了使用类型转换将double转换为int的情况。 类型转换的问题是它将截断小数点后的值。它不会四舍五入。 在82.14的情况下,我们将得到一个int值82,看起来不错。但是,当我们有一个像82.99这样的双精度值时,我们只会得到82,而失去了0.99,即〜....