java
文章平均质量分 51
my_styles
欢迎访问
展开
-
java 读取 xml 配置文件内容
java 读取 xml 配置文件内容原创 2022-09-30 11:04:49 · 1455 阅读 · 0 评论 -
java 通过 冰蓝 word 转pdf ,最大程度包装pdf 样式和word接近
【代码】java 通过 冰蓝 word 转pdf ,最大程度包装pdf 样式和word接近。原创 2022-09-08 14:55:45 · 958 阅读 · 1 评论 -
java富文本(html)导出到 word (包括图片和文本内容)分别是url 和base64两种格式 - poi 和Jsoup; Jsoup.parse 获取body里面所有的子元素
.原创 2022-03-15 09:59:28 · 5590 阅读 · 3 评论 -
java使用poi导出excel 包括多个工作簿
所需依赖,注意这里的版本不能低于4.0,最好用4.1.2,或者高板本的也行controller层service层原创 2022-06-09 10:13:11 · 1573 阅读 · 1 评论 -
java word转pdf 后通过 PdfReader 和 PdfStamper对pdf添加水印 通过poi等组件实现
所需jar包地址执行代码转换前的word转换后的 pdf 执行结果和时间,项目中实际测试大概是5-6秒左右(和服务器性能相关)原创 2022-06-02 16:59:27 · 2541 阅读 · 5 评论 -
java word转换pdf(先自定义添加水印 后转换pdf)通过 aspose-words
这种方式比较吃内存(容易内存泄漏),而且转换比较慢, 不推荐 , 而且这种方法会有水印,需要破解去水印添加xml配置引入依赖jar 在文章最下面获取在resource目录下载创建 License.xml 配置文件破解去除自带的水印需要的xml文件内容 读取(水印)xml配置文件 仅仅一个转换就耗时六七秒,放入项目中实际测试大概的20-30秒左右,因为这么慢,所以需要优化,为此提供了另外一种方法,看最底部 word 截图转换后的pdf 截图 jar包下载地址百度云链接:https://原创 2022-06-02 16:41:51 · 1204 阅读 · 0 评论 -
基于redis的分布式锁,可实现高并发
SETNX 命令:格式: setnx key value将key 的值设为value ,当且仅当key不存在。若给定的key已经存在,则SETNX不做任何动作。SETNX是「SET if Not eXists」(如果不存在,则SET)的简写。不建议使用setnx;有缺陷maven依赖 <dependency> <groupId>org.redisson<...原创 2022-01-06 11:59:56 · 221 阅读 · 0 评论 -
图片进行Base64编码和解码 和 替换word文档数据 并通过浏览器下载
Base64和图片进行转换public static void main(String[] args) { //加密 String strImg = getImageStr("C:\\Users\\admin-xu\\Desktop\\qq截图.jpg"); System.out.println(strImg); System.out.println("-------------------------------------------原创 2021-03-11 15:48:50 · 1980 阅读 · 0 评论 -
java 读取服务器(网路)的word模板文件并替换自定义的数据(图片)
读取服务器(网路)的word模板文件并替换自定义的数据(图片) public static void main(String[] args) throws Exception { ConfigureBuilder builder = Configure.builder(); Map map = Maps.newHashMap(); map.put("id", "123"); map.put("img", Pictures.ofUrl原创 2022-03-10 15:52:49 · 1190 阅读 · 3 评论 -
java递归获取树结构的指定层级、指定层级之上(向上递归(包含父集所有、爷爷集所有...)(父集单独、爷爷集单独...))、指定层级之下所有的(子集、孙子集...)和list集合转Tree树结构
打开安装插件页面找到插件目录选择插件包安装的插件点击ok按键,会重启idea在idea顶部菜单Tools ,点击如图所示点击后,在底部会出现打印sql的按钮打印sql如下打印日志插件包下载地址链接:https://pan.baidu.com/s/1RW0BkBdReGxnvm7qkqd-Og提取码:ki5c...原创 2021-06-05 18:14:22 · 3185 阅读 · 0 评论 -
activiti工作流基础到进阶功能演示
activiti 基础经理审批负责人为 jerry总经理审批负责人为 jack财务审批负责人为 rose流程图1.1、流程定义部署 @Test public void testDeployment(){ // 1、创建ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // ...原创 2021-03-10 14:12:56 · 218 阅读 · 0 评论 -
java冒泡排序之冒泡排序性能优化
普通冒泡排序// 普通的冒泡排序 public static void main(String[] args) { int [] sort = {5,9,7,4,1,3,2,8}; //循环排序的次数 for (int j = 0 ; j < sort.length -1 ; j++) { //每一次排序比较大小 for(int i =0 ; i < sort.length -1 ;原创 2021-03-10 14:21:59 · 127 阅读 · 0 评论 -
mybatis通过<foreach>拼接sql批量更新数据(where条件和更新对应字段都是动态变化处理的)条件和更新字段都是通过java代码传过来的
xml代码如下: <select id="updateQuestionHistoryAnswer"> update et_user_question_history set error_book = <foreach collection="updateAll" item="item" index="index" separator=" " open="case question_id" close="end"> .原创 2021-11-10 15:50:26 · 2510 阅读 · 0 评论 -
后台接收前端传kv格式的对象(对象的值是个数组)后台通过map接收(也可以通过JSONObject对象接收),然后转json再转list实体类
前端传的数据格式如下:{"data":[{"questionId":"3","userId":"1","questionTypeId":"1","isRight":"1","answer":"A","myAnswer":"A"},{"questionId":"2","userId":"1","questionTypeId":"2","isRight":"1","answer":"B","myAnswer":"D"}]}后台接收代码: @PostMapping("/addPr...原创 2021-11-04 11:26:53 · 1789 阅读 · 0 评论 -
分布式事务Seata讲解记录
本地事务执行流程流程数据库undo.log的工作原理在操作数据之前会先将数据备份到Undo.log中,然后进行修改数据,如果出现错误或者用户执行ROLLBACK语句,系统可以利用Undo.log中的备份将数据恢复到事务开始之前的状态。执行流程假设有A、B两个数据,值为 1,21、事务开始2、记录A=1到undo.log3、修改A=34、记录B=2到undo.log5、修改B=46、将undo.log写入磁盘7、将数据写入到磁盘8、事务提交在事务提交之前事务备份和修改先在内存原创 2021-10-11 08:47:51 · 1420 阅读 · 0 评论 -
获取 当前年、季度、月、日、小时的开始和结束时间
private final static SimpleDateFormat shortSdf = new SimpleDateFormat("yyyy-MM-dd"); private final static SimpleDateFormat longHourSdf = new SimpleDateFormat("yyyy-MM-dd HH"); private final static SimpleDateFormat longSdf = new SimpleDateForm...原创 2021-03-29 10:28:57 · 1298 阅读 · 0 评论 -
mysql数据库 insert 字段 和 select查询结果组合(mysql中insert与select的嵌套使用解决组合字段插入问题)分为多种情况
第一种:insert 所添加的参数全部来自select查询的结果集案例:1、全部字段都是select查询的结果(不需要添加 VALUES),并且所查询的列 是 作为所添加字段的values的值 INSERT INTO crm_promotion_orders(PROMOTIONORDERS_ID,PHONE,ORDER_ID) select tb.CUSTOMER_UUID, tb.CUSTOMER_MOBILE,tb.PROJECT_ID from(SELECT ccm.CUSTOMER原创 2021-04-06 09:34:49 · 14598 阅读 · 0 评论 -
java计算两个时间段的所有日期(除去周六和周天) 包含最后一天
//查找两个时间段内的所有日期(除去周六、周天) public static List<Date> getDutyDays(Date startDate, Date endDate) { List<Date> list = new ArrayList<>(); Calendar tempStart = Calendar.getInstance(); tempStart.setTime(startDate);...原创 2021-03-31 09:25:44 · 1257 阅读 · 2 评论 -
springboot中的注解有哪些比较常用
1、@SpringBootApplication这个注解是Spring Boot最核心的注解,用在 Spring Boot的主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。实际上这个注解是@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的组合。由于这些注解一般都是一起使用,所以Spring Boot提供了一个统一的注解@SpringBootApplication。2、@EnableAuto原创 2021-06-09 09:51:57 · 1606 阅读 · 1 评论 -
[基础篇]-java8之List全面操作指南
List集合是开发中常用的集合之一,本文主要讲解List集合之各种操作与转换。大致包含以下内容:遍历(5种方式)排序(普通排序、单/多属性排序)转Map分组去重(对象属性去重)提取过滤(单条件、多条件)取值(平均值、最大/最小值、求和)前期准备/*** 测试类* @author 程序员小强*/@Datapublic class Student { /** * id */ private int id; /**...转载 2021-03-12 11:57:57 · 1136 阅读 · 0 评论 -
java 动态导入excel信息(表格里面带图片)
@Transactional(rollbackFor = Exception.class) public String selectExcelName(MultipartFile multipartFile, String tableName,String token) { SysUser userInfo = tokenStoreService.getUserInfo(token, SysUser.class); //根据tableName获取tabl...原创 2021-04-07 16:52:58 · 971 阅读 · 0 评论 -
JSON数据格式转换
字符串对象转换list实体类(字符串是单引号的json格式)例如{'name':'zs','age':'23'}字符串里面携带特殊字符(}','{)需要替换下,同时在字符串前后拼接[ ]String str ="["+ "{'createTime':'2021-10-1509:04:15','updateTime':'2021-10-1510:27:39','createBy':'null','updateBy':'null','remark':'null','id':'433d82db213e.原创 2021-04-07 13:45:53 · 1516 阅读 · 0 评论 -
前端服务请求后台遇到跨域问题 Access to XMLHttpRequest at ‘http://localhost:88/api/sys/login‘ from origin
1.为什么有跨域问题?跨域不一定都会有跨域问题。因为跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是与当前页域名相同的路径**,这能有效的阻止跨站攻击。因此:跨域问题 是针对ajax的一种限制。但是这却给我们的开发带来了不便,而且在实际生产环境中,肯定会有很多台服务器之间交互,地址和端口都可能不同,怎么办2.解决跨域问题的方案目前比较常用的跨域解决方案有3种: Jsonp 最早的解决方案,利用script标签可以跨域的原理实现。 限制:原创 2021-04-06 16:02:56 · 12541 阅读 · 17 评论 -
JAVA 静态(static)方法调用service层(静态方法注入service层)-两种解决方案
第一种方案 :import cn.bipartner.goblin.base.pojo.page.LayuiPageInfo;import cn.bipartner.goblin.customer.entity.CrmCustomerManage;import cn.bipartner.goblin.customer.model.params.CrmCustomerManageParam;import cn.bipartner.goblin.customer.service.CrmCustom.原创 2021-04-02 15:28:37 · 11332 阅读 · 4 评论 -
2021版idea安装MyBatis Log Plugin不可用解决方案,idea安装插件可以打印日志mysql
打开安装插件页面找到插件目录选择插件包安装的插件点击ok按键,会重启idea在idea顶部菜单Tools ,点击如图所示点击后,在底部会出现打印sql的按钮...原创 2021-03-08 12:51:37 · 9001 阅读 · 11 评论 -
谷里商城前端启动安装node 和启动
安装包 node.js阿里网盘地址: 「node-v12.18.1」https://www.aliyundrive.com/s/nosrNsykHDN百度云盘: 链接:https://pan.baidu.com/s/1OoInepEdgpao3-bNnhMSfQ 提取码:1234项目根目录下安装命令:node-sassnpm install [email protected]安装项目npm install启动项目npm start...原创 2021-03-08 12:50:18 · 127 阅读 · 0 评论 -
shiro介绍和使用
什么是shiro: shiro是apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权、会话管理等。shiro的功能:1、Authentication认证 -- 用户登录2、Authorization授权-- 用户具有哪些权限(1) 、编程式:通过写if/else 授权代码块完成(2)、注解式:通过在执行的Java方法上放置相应的注解完成,没有权限将抛出相应的异常, 例如:@RequiresPermissi...原创 2021-03-06 15:11:26 · 1303 阅读 · 0 评论 -
springboot启动加载流程(cglib和jdk代理的区别)
1、新建module,在主程序类加入断点,启动springboot2、首先进入SpringAplication类run方法3、run方法新建SpringApplication对象4、SpringApplication对象的run方法,首先创建并启动计时监控类5、接着通过configureHeadlessProperty设置java.awt.headless的值6、接着调用getRunListeners创建所有spring监听器7、接着DefaultApplicationArgumen原创 2021-03-06 09:05:27 · 10180 阅读 · 1 评论 -
java代码并发时手动对数据表进行行锁,需要添加事物
医废公司端遇到的问题,由于安装通过for循环遍历请求接口,而且第一次和第二次到第n次之间数据是需要统计处理的,当安卓第一次请求接口后,后台还没有处理完,紧接着第二次就开始请求,由于请求太快,后台逻辑处理比较慢,造成最后统计的数据不准确,故此通过对数据库表进行行锁,来达到每次上次请求完下次请求再执行;(请求等待排队等候)service层需要添加事物dao层mapper.xml代码...原创 2021-03-06 09:04:46 · 1423 阅读 · 0 评论 -
java中高级面试题整理
java中高级面试题整理 问题 答案 java编程如何保证多线程运行安全? 线程的安全性问题体现在: 原子性:一个或者多个操作在CPU执行的过程中不被中断的特性 可见性:一个线程对共享变量的修改,另外一个线程能够立刻看到 有序...原创 2021-03-06 08:49:55 · 2368 阅读 · 0 评论 -
mysql 批量添加数据 并返回主键,短时间内可以批量添加上百万的数据
原理:先手动添加几个数据库,通过查询已经添加的数据集合,通过<foreach>遍历添加,mapper.xml代码<foreach> 这里集合数据不应超过500,300即可,如果集合过大<foreach>添加效率反而降低; <insert id="batchSave" parameterType="java.util.List"> INSERT INTO w_href (name, csdnHref, createDate, type,.原创 2021-03-06 08:46:12 · 2155 阅读 · 0 评论 -
java 导出word文件,支持导出表格和图片
java导出word文件,包括导出图片和表格如下图:直接上代码,里面都添加注释了,可读性还可以package com.example.demo;import org.apache.poi.openxml4j.exceptions.InvalidFormatException;import org.apache.poi.util.Units;import org.apache.poi.xwpf.usermodel.*;import org.openxmlformats.sche..原创 2021-03-06 08:44:04 · 1125 阅读 · 0 评论 -
微服务SpringCloud学习组件记录
1、什么是Ribbon: Ribbon是Spring Cloud的一个组件, 它可以让我们使用一个注解就能轻松的搞定负载均衡在RestTemplate 的生成方法上添加@LoadBalanced注解例如:@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();...原创 2021-03-06 08:43:31 · 755 阅读 · 0 评论 -
log4j 日志输出级别区别
log4j定义了8个级别的log(除去OFF和ALL 可以说分为6个级别),* ALL 最低等级的 用于打开所有日志记录* TRACE 很低的日志级别一般不会使用* DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的 主要用于开发过程中打印一些运行信息* INFO 消息在粗粒度级别上突出强调应用程序的运行过程打印一些你感兴趣的或者重要的信息 这个可以用于生产环境中输出程序运行的一些重要信息,但是不能滥用 避免打印过多的日志* WARN 表明会出现潜在错误的...原创 2021-03-05 10:47:25 · 890 阅读 · 0 评论 -
spring的bean加载流程
spring的bean加载流程,循环依赖一: 实例化一个applicationContext的对象创建一个beanFactory工厂对象二: beanFactory的后置处理器对当前的所有类进行扫描三: 使用for循环将所有的类通过一个beanDefintion对象进行解析和初始化默认参数, 并 且将实例化后的对象缓存到beanDefintionMap中四: 再次调用beanFactory的后置处理器对beanDefintion...原创 2021-03-05 10:06:02 · 1925 阅读 · 1 评论 -
ConcurrentHashMap底层执行原理
ConcurrentHashMap底层是通过cas机制保证线程安全;采用无锁化的机制保证数组初始化的线程安全呢;Compare And Swap: CAS保证对某个操作线程安全先创建数组,每个数组下标对应的节点有可能会创建链表,当链表数量超过8时(并不是超过8就转,需要总结点超过64时)会转红黑树(左旋和右旋(二叉法))ConcurrentHashMap初始化默认大小是16,第一次put的时候会初始化大小,当数据量存储超过75%(加载因子,扩容因子,负载因子) 也就是12个时候会进行扩容一倍,变为原创 2021-03-02 08:54:44 · 1160 阅读 · 0 评论 -
Synchronized -- jdk1.6版本之前和之后对比
测试一个案例 jdk1.6版本之前;public class Test { public static void main(String[] args) throws InterruptedException { A a = new A(); long start = System.currentTimeMillis(); Thread t1 = new Thread(() ->{ for (int i = 0; i原创 2021-03-02 08:53:53 · 209 阅读 · 0 评论 -
java-高级面试题2023
1、ArrayList 和 Vector 的区别。 Vector 是线程安全的,而 ArrayList 是线程序不安全的,如果只有一个线程会访问到集合,那最好是使用 ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问到集合,那最好是使用 Vector,因为不需要我们自己再去考虑和编写线程安全的代码;2、Hashmap 实际上是一个数组和链表的结合体(在数据结构中,一般称之为 “链表散列 “)3、Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? ...原创 2021-03-02 08:49:43 · 1281 阅读 · 0 评论 -
Java基础面试题全集-初级
1、面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。- 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁转载 2021-03-01 16:05:36 · 1345 阅读 · 0 评论 -
java 垃圾回收与GC算法
1、简述java垃圾回收机制?在java中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在JVM中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。GC算法 垃圾回收对象存活判断判断对象是否存活一般有两种方式:引用计数:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,无法解决对原创 2021-03-01 16:01:21 · 1090 阅读 · 0 评论