- 博客(17)
- 收藏
- 关注
原创 Java读取WPS excel.xlsx嵌入图片
首先我们知道不管是word,excel还是ppt文件本质上就是一个zip的压缩包,里面有个许多xml格式的文件保存相关的信息,思路就是我们可以把wps编辑的.xlsx文件当做zip包解压缩,然后去找图片文件的存储位置,再结合相关的xml配置文件对应文件和单元格的关系就能够提取出wps格式excel嵌入图片了。解决方案有两种,第一种在wps编辑的时候改变图片的插入方式改为浮动,自然就是和标准的office兼容的,apache poi相关的工具就能够读取了。通过这种方式就可以获取了wps的内容了。
2024-11-15 16:00:17
1395
原创 Scala sbt卡在[info] [launcher] getting org.scala-sbt sbt 1.9.4 (this may take some time)...
把这段代码弄去powershell执行就是知道为什么报错了,我是因为改过LIB环境变量替换了windows kits工具到套件导致执行失败。卡在这个界面, 不报错也不往下走。
2024-08-07 13:06:19
664
原创 Java线程Thread--一文讲透线程相关API
0. Thread线程的状态转换以及相关API先来个图再说明线程就六种状态转换关系上面的图也画出来了.如果是JDK开发环境可以使用在bin目录下的jstack命令查看相关的线程状态.命令jstack pid 后面是笔者使用了过滤只查看状态, 可以看到图中有RUNNABLE, WAITING, TIEMD_WAITING.几种状态解释:NEW: Thread对象的实例刚刚创建出来的状态属于NEW.RUNNABLE: 这个状态属于可运行的状态, 但是RUNNABLE并不表示一定在运行, 当
2021-04-07 16:21:17
1117
5
原创 Java反射底层原理以及应用
写在前面: Java反射, 这个东西百度就会出来相关概念:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。字每一个都认识, 连起来的意思也不是那么的深奥, 但总给人感觉前面蒙着一层面纱看不清, 似懂非懂, 懂又不懂的感觉. 笔者就尝试从自己的理解对Java反射进行一些解释.0. 类加载过程要说反射就得从Java的类加载过程说起.&nb
2021-04-06 18:59:20
1056
2
原创 java调用dll或者.so库--JNI
0. JNI .dll和.so就不用介绍了吧, 不知道的也应该不需要看本文, 就是库文件. JNI是啥, JNI全称Java Native Interface, 如果你有跟过Java的源码, 反正我觉得最恶心的就是一路跟到一个签名带native的方法, 你什么都看不到. 当然其实也不是什么都看不到要是想知道更加内部的原理还是有办法的, 比如下载hotspot的源码.JNI就是其它语言的代码和Java之间的一个桥, 这个其它语言基本也就是C++了.
2021-04-06 12:23:07
2441
5
原创 Java JDK动态代理JDK和CGLIB动态代理
0. 代理 代理是一种设计模式, 一种不直接访问目标, 通过代理访问目标的设计模式. 好像等于白说?代理其实在很多地方都有使用到, 不只是Java,在nginx中有正向代理反向代理, 生活中有律师代理他的当事人进行变护.用Java来解释:class A { public void add()}class B { private A a; public B(A a){ this.a = a; } public void add() {
2021-03-31 16:30:43
446
5
原创 MQ系列之RabbitMQ-Springboot
文章目录1. 消息中间件介绍。(1) JMS和AMQP的区别(2) 当前的主流消息队列(3) 消息中间件的适用场景(1) 下载/安装/设置/启动(2) RabbitMQ的五种模式(3) 基于Java的一个简单的Hello world(4) 基于springboot2.x的集成,各种使用姿势1. 消息中间件介绍。(1) JMS和AMQP的区别 JMS的全程是Java Message Service,Java消息服务接口,Java提供的一套面向消息中间件的API,可用于两个系统之间的通信或者异步通信。这
2021-03-30 16:34:49
193
2
原创 Java8中的lambda表达式、::符号和Optional类
文章目录Java8中的lambda表达式、::符号和Optional类0. 函数式编程1. lambda表达式2. 双冒号::符号3. Optional类Java8中的lambda表达式、::符号和Optional类0. 函数式编程 函数式编程(Functional Programming)属于编程范式(Programming Paradigm)中的用语,此外还有命令式编程(Imperative Programing)等,有兴趣的同学可以自行了解,我们这里
2021-03-30 16:33:37
2226
7
原创 springboot项目打包jar包运行的无限重启
springboot项目打包jar包运行的无限重启1.出现的问题 最近遇到项目在idea上运行正常但是在打包成jar后就一直无限重启,找了很久的原因,后来发现是因为devtool和日志存储的原因。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-
2021-03-30 16:32:46
1466
1
原创 ES6中箭头函数和this关键字
es6中箭头函数和this关键字es6新语法箭头函数,类似其它语言中的lamda表达式 形式 (参数) => { exp }const aaa = (arg) => {console.log(arg)}// 当只有一个参数的时候也可以取消括号const bbb = arg1 => {console.log(arg1)}// 当exp只有一句的时候也可以取消大括号// 并且此时的箭头函数的返回值就是第一句语句
2021-03-30 16:32:02
177
1
原创 springboot静态资源访问
springboot static-locations和static-path-patternspringboot静态资源访问application.yml配置“spring.mvc.static-path-pattern”“spring.resources.static-locations”“配置Bean的方式配置静态资源访问”springboot静态资源访问application.yml配置springboot项目在打包成为Jar包之后,对静态资源的访问和传统的SSM项目略有不同,传统的项目打包wa
2021-03-30 16:31:13
651
5
原创 spring源码之AbstractApplicationContext#finishBeanFactoryInitialization
AbstractApplicationContext#finishBeanFactoryInitialization基本这里就到了bean生成的最重要的方法了.先说说前面几个方法, 很简单就不做细致的源码debug分析了 // Initialize message source for this context. initMessageSource(); // Initialize event multicaster for this cont.
2021-03-30 16:30:12
156
原创 spring源码之AbstractApplicationContext#postProcessBeanFactory
AbstractApplicationContext#postProcessBeanFactory这里设置允许在context上下文子类进行BeanFactoryPost后处理. // AnnotationConfigServletWebServerApplicationContext @Override protected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) { .
2021-03-30 16:27:29
217
原创 spring源码之AbstractApplicationContext#registerBeanPostProcessors
AbstractApplicationContext#registerBeanPostProcessors调用PostProcessorRegistrationDelegate#registerBeanPostProcessors这里主要注册bean后处理器, 注意与前面区分辨别, 前面的是实现了BeanFactoryProcessor接口bean工厂后处理器, 这里是实现BeanPostProcessor接口的bean处理器, BPP有两个接口方法postProcessBeforeInitializ.
2021-03-30 16:26:42
291
4
原创 Spring 源码之AbstractApplicationContext#invokeBeanFactoryPostProcessors
AbstractApplicationContext#invokeBeanFactoryPostProcessors调用PostProcessorRegistrationDelegate#invokeBeanFactoryPostProcessors实例化并调用所有已注册的BeanFactoryPostProcessorBean // AbstractApplicationContext protected void invokeBeanFactoryPostProcessors(.
2021-03-30 16:25:54
173
原创 HashMap原理以及源码分析以及HashMap线程不安全问题
HashMap以下分析基于JDK1.80. 哈希表数据结构数据的物理存储结构主要分两种: 顺序存储和链式存储:顺序存储: 在内存中分配连续的内存空间存储数据, JAVA中的数组就是顺序存储结构的典型应用. 顺序存储结构对于指定位置的数据访问非常快速只需要首地址加上偏移地址即可访问, 如果对C/C++的指针有了解就非常容易理解了.复杂度为O(1),但对于插入删除略微复杂, 扩容也比较麻烦.链式存储: 在内存存储是分散的不相关联的, 上一个元素会保存下一个元素的内存地址, 这样依次形成链, 这.
2021-03-30 16:24:08
261
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人