使用java操作word
真正的美德不可没有实用的智慧,而实用的智慧也不可没有美德。——亚里士多德 可以使用Spire操作word Spire.Doc for Java 是一款专业的 Java Word 组件,开发人员使用它可以轻松地将 Word 文档创建、读取、编辑、转换和打印等功能集成到自己的 Java 应用程序中。作为一款完全独立的组件,Spire.Doc for Java 的运行环境无需安装 Microsoft Office。 Spire.Doc for Java 能执行多种 Word 文档处理任务,包括生成、读取、转换和打印 Word 文档,插入图片,添加页眉和页脚,创建表格,添加表单域和邮件合并域,添加书签,添加文本和图片水印,设置背景颜色和背景图片,添加脚注和尾注,添加超链接,加密和解密 Word 文档,添加批注,添加形状等。 官方文档 依赖 12345<dependency> <groupId>e-iceblue</groupId> <artifactId>spire.doc.free</artifactId> ...
docker实现mysql主从复制
有了钱,在这个世界上可以做很多事,就是无法用钱来买青春。 ——雷蒙德 1.安装主库 1.1 先准备mysql配置文件,my.cnf 123456789101112131415161718192021222324252627282930313233# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; version 2 of the License.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without ...
jackson处理json
君子成人之美,不成人之恶。小人反是。——《论语》 转载,原文 介绍Jackson 的核心模块由三部分组成 jackson-core,核心包,提供基于”流模式”解析的相关 API,它包括 JsonPaser 和 JsonGenerator。 Jackson 内部实现正是通过高性能的流模式 API 的 JsonGenerator 和 JsonParser 来生成和解析 json。 jackson-annotations,注解包,提供标准注解功能。 jackson-databind ,数据绑定包, 提供基于”对象绑定” 解析的相关 API ( ObjectMapper ) 和”树模型” 解析的相关 API (JsonNode);基于”对象绑定” 解析的 API 和”树模型”解析的 API 依赖基于”流模式”解析的 API。 用法引入依赖 123456<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databin...
Calendar的获取date中年月日时分秒
仿佛前世的密约,注定我们要在今生抵掌,然后一起创世,或者再次站成一排,慷慨赴死。——野夫 转载,原文 123456789Date startTime = new Date();Calendar c = Calendar.getInstance();c.setTime(startTime);int year = c.get(java.util.Calendar.YEAR);int month = c.get(java.util.Calendar.MONTH) + 1;//获取月份(因为在格里高利历和罗马儒略历一年中第一个月为JANUARY,它为0,最后一个月取决于一年中的月份数,所以这个值初始为0,所以需要加1)int day = c.get(java.util.Calendar.DATE);//获取日int hour = c.get(Calendar.HOUR_OF_DAY);//小时(calendar.HOUR 12小时制,calendar.HOUR_OF_DAY 24小时)int minute = c.get(java.util.Calendar.MINUTE);//分i...
部署hexo后样式丢失问题
无息乌乎生,无绝乌乎续,无无乌乎有? ——明·宋应星《谈天·日说三》 如果遇到hexo部署到gitee后样式丢失,并且控制台没有报错的话,可以修改hexo配置文件 检查url和root这两项 还有一个注意点是,如果我们新建仓库的时候,尽量让仓库名、以及路径和gitee的登录名保持一致 这样的话我们部署好的博客的路径就可以省略掉子路径 仓库名和登录名不一致访问url:https://VampireAchao.github.io/blog 仓库名和登录名一致访问url:https://VampireAchao.github.io/
重新生成.idea以及.iml文件
心地才是最远的荒地,很少有人一辈子种好它。――刘亮程 idea中重新生成.iml可以输入命令 1mvn idea:module 重新生成.idea则可以输入命令 1mvn -U idea:idea 模块、依赖找不到的话不妨试试 还可以尝试点击idea中的作废缓存 以及mvn clean和刷新
validator分组校验
当生活像一首歌那样轻快流畅时,笑颜常开乃易事;而在一切事都不妙时仍能微笑的人,是真正的乐观。——威尔科克斯 之前写过一篇springboot实现validator校验 今天进行一个补充 我们可以使用分组校验 首先是我们可以定义一个接口在我们的实现类里 然后在我们需要分组校验的注解上给上groups参数 最后在controller上也给我们的@Validated注解加上我们的分组参数 最后运行就只会校验我们分组的参数 那如果有这么一种场景:一个接口,传入Id时修改,不传入Id时新增,修改和新增又是不同的校验的话,我们该怎么处理呢? 其实很简单,我们可以注入一个Validator,然后在代码里进行分组校验 1234567891011121314151617181920212223242526272829303132333435363738394041package com.ruben;import com.ruben.pojo.User;import com.ruben.utils.SpringContextHolder;import org.junit.jupiter....
let和const命令
一个人在学校里表面上的成绩,以及较高的名次,都是靠不住的,唯一的要点是你对于你所学的是否心里真正觉得很喜欢,是否真有浓厚的兴趣……——邹韬奋 es6出来这么久了,是时候系统学习一下了 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。——ECMAScript 6.0入门网站 1234567891011121314151617181920212223242526272829303132333435<!-- es6学习笔记 -->// let必须先声明再使用// console.log(a) // Uncaught ReferenceError: Cannot access 'a' before initializationlet a = "a";console.log(a); // a// var可以先使用再声明b = &qu...
explain
人们很少做他们相信是对的事,他们做比较方便的事,然后后悔。——鲍勃.迪伦 使用explain+SQL 作用: 表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些索引被实际使用 表之间的引用 每张表有多少行被优化器查询 id select_type table partitions type possible_keys key key_len ref rows filtered Extra id:查询的序列号,包含一组数字,表示查询中执行select字句或操作表的顺序id值越大执行优先级越高,id相同情况下执行顺序从上到下 select_type:查询的类型,主要是用于区别普通查询、联合查询、子查询等的复杂查询simple简单的select查询,不包含子查询、UNION primary子查询的最外层 subquery子查询的内层 derived表示 FROM临时表,这个表被标记为衍生 union在union后面的查询,若union包含在from字句的子查询中,外层select被标记为derived union result从union表获取结果的select t...
解决lambda中必须为final的方式
一个真正而且热切地工作的人总是有希望的——只有怠惰才是永恒的绝望。——卡莱尔 在开发中使用lambda经常出现一个问题 编译提示我们lambda中使用的变量必须为final或者effectively final 1234567891011int i = 2;BigDecimal j = BigDecimal.ZERO;j = BigDecimal.TEN;List<String> stringList = mpUserMapper.selectList(Wrappers.lambdaQuery()).stream().map(UserDataObject::getUsername).collect(Collectors.toList());stringList = stringList.stream().distinct().collect(Collectors.toList());List<String> strings = new ArrayList<>(10);strings.stream().peek(s -> {...
