- 博客(110)
- 资源 (1)
- 收藏
- 关注
原创 关于最近word模板以及word转pdf的总结
主要的学习和踩坑word模板1类型只有文字的只要用这种方式实现非常好,没有图片的word模板;特别注意的是支持.doc的模板2 第二种带图片的word模板,只支持 docx的4 word转pdf,最后还是找了 使用libreoffice来进行转pdf 这种方式使用libreoffice来进行转pdf 这种方式需要安装的软件最后付一下maven依赖:是word模板的word模板1类型只有文字的只...
2019-11-28 17:46:01 1042 1
原创 介绍一下docker的打包命令
这个Dockerfile使用了OpenJDK 8作为基础镜像,并将app.jar复制到镜像的根目录下。这个命令会在后台运行app-image镜像,并将容器内的8080端口映射到主机的8080端口上。这个命令会使用当前目录下的Dockerfile来构建一个名为app-image的镜像,镜像标签为latest。现在,app.jar已经被成功打包到了Docker镜像中,并且可以通过运行该镜像来启动应用程序。你应该能够在列表中找到刚刚构建的镜像。会列出所有的镜像,可以找到刚刚构建的app-image镜像。
2024-07-11 13:58:18 660
原创 【minio】minio文件访问不到问题记录
项目上上传了logo,但是无法回写logo,但是文件minio路径已经返回,并且到minio服务器上也能下载文件;2.登录minio服务查一下文件路径policy是否设置访问权限。1.排查Nginx的代理的minio是否正确。
2024-05-24 17:00:35 1594
原创 【关于Jackson库中objectMapper用法中对象中date类型转JSONString后日期减一天问题】
当对象中有日期类型,使用JsonFormat"yyyy-MM-dd" 后发现日期转换后会减一天;原因:未指定时间导致的转换的时候默认将日期按照国际化时区进行转换导致减8小时后减少了一天。添加 timezone=“GMT+8” 时区解决。
2023-05-31 15:55:35 891
原创 面试题:Zookeeper的一些常见面试题及答案
Leader节点负责处理客户端请求,并将更新操作广播给所有Follower节点,确保所有节点都有相同的数据副本。一个客户端创建一个临时节点,如果创建成功则说明该锁已经被该客户端获取,如果创建失败则说明该锁已经被其他客户端获取,该客户端需要等待。事务日志记录了所有的更新操作,可以用来恢复Zookeeper节点的状态和保证数据的一致性。当一个客户端需要向队列中添加数据时,它会创建一个顺序节点,并将数据写入该节点中。当另一个客户端需要从队列中取出数据时,它会获取当前队列中最小的节点,并从该节点中取出数据。
2023-04-14 11:10:16 580 1
原创 面试题:ES的面试题及答案
在搜索引擎领域,ES可以快速地检索海量数据,支持复杂的查询语句和聚合操作。此外,ES还提供了基于日志的复制机制,可以在多个节点之间复制数据,提供数据冗余和高可用性。答:ES的数据分片是通过将数据分成多个分片来实现的。答:ES的集群是由多个节点组成的,每个节点都是独立的进程。答:ES是Elasticsearch的缩写,是一款开源的分布式搜索引擎。它可以快速地存储、搜索和分析大量的数据,支持全文检索、结构化查询等多种查询方式。答:ES使用的是倒排索引的方式来存储数据。(2)sum聚合:用于计算指定字段的总和。
2023-04-13 10:42:44 5407
原创 面试题:Dubbo的一些常见面试题及答案
Dubbo框架通过服务注册、服务发现、负载均衡、远程调用、容错和安全等功能解决了分布式应用中的问题,如服务调用的复杂性、服务的可用性、服务的可靠性和服务的安全性等。Dubbo框架的负载均衡策略包括随机、轮询、最小连接数、一致性哈希、加权随机、加权轮询、平滑加权轮询和平滑加权一致性哈希等。Dubbo框架的核心组件包括配置中心、注册中心、服务提供者、服务消费者、RPC协议、负载均衡器、容错机制和监控中心等。Dubbo框架的容错机制包括失败自动恢复、快速失败、失败重试、失败转移、自动降级和Mock服务等。
2023-04-12 16:27:39 662
原创 面试题:springboot怎么实现自动配置的
当AutoConfigurationImportSelector被@Import注解引入之后,它的selectImports方法会被调用并执行其实现的自动装配逻辑。我们写一个springboot项目的时候通过注解@SpringBootApplication来实现,程序的自动加载及扫描和springboot自身配置加载的。这种是先进行我们的 @Configruation配置的加载,然后进行其他(Autoconfig相关类)的加载;先加载 Autoconfig相关类,然后加载@Configruation类。
2023-04-09 17:44:27 606
原创 登录服务报Redis相关session was invalidated问题的处理
应该是服务调Redis获取信息时候连接session有断开问题,一方面可能是Redis处理不过来了,连接丢失;2.定位具体代码处进行异常捕获和代码逻辑判断修改:解决校验问题,或者其他问题。gateway鉴权发现日志报session was invalidated。追源码是 Redis本身的session 无效报错。一方面是session过期。1.可以保持Redis连接。Redis报一些链接问题。
2023-03-27 17:34:18 694
原创 jvm虚拟机学习一class文件
整体学习架构图从Javaclass文件到类加载到运行时内存区域,到垃圾回收一个流程学习;Class文件介绍Class文件是一组以8个字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。当遇到需要占用8个字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8个字节进行存储。 (11 00 在class文件中,11 00 进行存储。高位在前,低位在后。 有一些其他的操作系统的
2022-09-03 19:27:33 401
原创 innodb存储引擎学习–备份
备份的分类可以根据不同的类型来划分备份的方法。根据备份的方法不同可以将备份分为:❑Hot Backup(热备) 指数据库运行中直接备份,对正在运行的数据库操作没有任何的影响❑Cold Backup(冷备)备份操作是在数据库停止的情况下,这种备份最为简单,一般只需要复制相关的数据库物理文件即可❑Warm Backup(温备) 在数据库运行中进行的,但是会对当前数据库的操作有所影响,如加一个全局读锁以保证备份数据的一致性按照备份后文件的内容,备份又可以分为:❑逻辑备份 逻辑备份是指备份出的文件内容
2022-08-31 22:26:51 672
原创 MySQL的innodb存储引擎学习–事务的四大特性看这一篇就够了
事务事务的概述事物的四大特性:ACID。InnoDB存储引擎中的事务完全符合ACID的特性。ACID是以下4个词的缩写:❑原子性(atomicity)事务可由一条非常简单的SQL语句组成,也可以由一组复杂的SQL语句组成。事务是访问并更新数据库中各种数据项的一个程序执行单元。在事务中的操作,要么都做修改,要么都不做,这就是事务的目的,也是事务模型区别与文件系统的重要特征之一。❑一致性(consistency)一致性指事务将数据库从一种状态转变为下一种一致的状态。在事务开始之前和事务结束以后,数据库
2022-08-31 22:19:59 924
原创 MySQL–innodb存储学习之锁
锁锁概述开发多用户、数据库驱动的应用时,最大的一个难点是:一方面要最大程度地利用数据库的并发访问,另外一方面还要确保每个用户能以一致的方式读取和修改数据。为此就有了锁(locking)的机制,同时这也是数据库系统区别于文件系统的一个关键特性。InnoDB存储引擎会在行级别上对表数据上锁,这固然不错。不过InnoDB存储引擎也会在数据库内部其他多个地方使用锁。从而允许对多种不同资源提供并发访问。例如,操作缓冲池中的LRU列表,删除、添加、移动LRU列表中的元素,为了保证一致性 必须有锁的介入(线程锁 丰
2022-08-28 10:19:32 700
原创 MySQL的数据库是否支持分区呢?
MySQL是否支持分区这个问题我们需要根据MySQL版本来说,MySQL5.1之前不支持分区,5.1版本开始支持的,对于innodb,mylsam,ndb存储引擎都是支持的,csv等存储引擎不支持;分区的过程是将一个表或索引分解为多个更小、更可管理的但是在物理上这个表或索引可能由数分区的分类垂直分区指将同一表中不同列的记录分配到不同的物理文件中水平分区指将同一表中不同行的记录分配到不同的物理文件中MySQL中使用的分区类型MySQL数据库支持的分区类型为水平分区,并不支持垂直分区。此外,
2022-08-27 16:29:07 977
原创 MySQL的innodb存储引擎学习–varchar最大长度真的是65535吗
MySQL的数据库表中的数据类型可变字符长度varchar的最大长度是多少呢?我们查阅官方文档支持varchar类型最大长度是65535字节,但是不是说每个字段的varchar类型都可以定义为65535,例如有a,b,c三个字段,每个字段类型都是varchar,三个字段的varchar总的长度不能超过65535字节;如果超过直接会报错,这个时候我们需要用到text来代替varchar;其实我们varchar总长度其实最大允许是#65532(字节);...
2022-08-27 15:47:48 395
原创 【ArrayList的最大size为啥是integer最大值减8】
数组在java里是一种特殊类型,既不是基本数据类型也不是引用数据类型。有别于普通的“类的实例”对象,java里数组不是类,所以也就没有对应的class文件,数组类型是由jvm从元素类型合成出来的;在jvm中获取数组的长度是用arraylength这个专门的字节码指令的;在数组的对象头里有一个_length字段,记录数组长度,只需要去读_length字段就可以了。所以ArrayList中定义的最大长度为Integer最大值减8,这个8就是就是存了数组_length字段。...
2022-05-12 10:23:17 581
原创 谈谈你对jstat命令使用
jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据,在没有GUI图形界面、只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的常用工具。jstat命令格式为:jstat [ option vmid [interval[slms][count]]]参数interval和count代表查询间隔和次数,如果省略这2个参数,说明只查询一次。假设需
2022-05-04 18:08:15 876
原创 【轻量级锁的加锁和解锁过程】
轻量级锁加锁• 线程在执行同步块之前, JVM会先在当前线程的栈桢中创建用于存储锁记录的空间, 并 将对象头中的Mark Word复制到锁记录空间中中, 官方称为Displaced Mark Word;• 然后线程尝试使用 CAS将对象头中的Mark Word替换为指向锁记录的指针。• 如果成功, 当前线程获得锁, 如果失败, 表示其他线程竞争锁, 当前线程便尝试使 用自旋来获取锁。轻量级解锁 会使用原子的CAS操作将Displaced Mark Word替换回到对象头, 如果成 功, 则表示没 有
2022-04-23 17:29:11 317
原创 【CPU用户状态和内核状态简介】
CPU 的两种工作状态 :内核态 (管态) 和用户态 ( 目态) 。内核态 :系统中既有操作系统的程序, 也有普通用户程序。 为了安全性和稳定性, 操作系统的程序不能随便访问, 这就是内核态。 即需要执行操作系统的程序就必须转换到内核态才能执行!内核态可以使用计算机所有的硬件资源! 用户态 :不能直接使用系统资源, 也不能改变 CPU 的工作状态, 并且只能访问这个用户程序自己的存储空间!当一个进程在执行用户自己的代码时处于用户运行态 (用户态) , 此时特权级最低, 为 3 级, 是普通的用
2022-04-18 23:22:08 1142
原创 【@ResponseBody注解如何将对象转换为json返回的】
如果我们在controller的方法上加上@ResponseBody注解即可将我们要返回的结果转为json返回给前端,那么Spring MVC是如何做到的呢?在进入控制器方法前,当遇到标注的@ResponseBody后,处理器就会记录这个方法的响应类型为JSON数据集。当执行完控制器返回后,处理器会启用结果解析器(ResultResolver)去解析这个结果,它会去轮询注册给Spring MVC的HttpMessageConverter接口的实现类。因为MappingJackson2HttpMessageC
2022-04-14 20:36:07 3099
原创 【volatile 是如何保证可见性的呢?】
volatile 是如何保证可见性的多线程如:volatile instance = new instance();示例代码中, instance 被volatile修饰。 上边的new操作, 转化成汇编代码如下:as10x.…;lock…有volatile变量修饰的共享变量进行写操作的时候会多出第二行Lock汇编代码, Lock前缀的指令在多核 处理器下会引发了两件事情:1) 将当前处理器缓存行的数据写回到系统内存。 (volatile写的内存语义)2) 这个写回内存的操作会使在其他CPU里
2022-04-13 22:34:01 231
原创 【什么是哈希, 什么是哈希冲突,怎么解决哈希冲突? 】
Hash, 一般翻译为“散列” , 散列值有直接音译为“哈希”的, 这就是把任意长度的输入通过散列 算法, 变换成固定长度的输出, 该输出就是散列值(哈希值) ;这种转换是一种压缩映射, 也就是, 散列值的空间通常远小于输入的空间, 不同的输入可能会散列成相同的输出, 所 以不可能从散列值来唯一的确定输入值。 概括的说就是一种将任意长度的消息压缩到某一 固定长度的消息摘要的函数。哈希冲突: 所有散列函数都有如下一个基本特性: 根据同一散列函数计算出的散列值如果不同,那么 输入值肯定也不同。但是,根据同
2022-04-12 23:06:23 334
原创 Java中如何正确停止一个线程
这个问题在面试过程中或者是实际开发中可能都会遇到,那么我们怎么正确停止一个线程呢?首先说说stop命令,不是说它的好,而是不能使用stop,stop不安全,导致程序异常不安全的,执行时会导致对象被破坏。所以这个方法被弃用了。你应该中断一个线程而不是停止他可以使用的中断线程方法,我们应该保证线程被执行完再中断,其源码中也有注释说明,调用stop()终止一个线程会释放它已经锁定的所有监视器(这将导致沿堆栈向上传播为检查的ThreadDeath异常被抛出),若此时之前受这些被释放的监视器保护的对象存在不一致
2022-04-11 23:31:01 1241
原创 【线程中的 join方法和yeild方法区别】
说说 在项目实践中经常会遇到一个场景, 就是需 要等待某几件事情完成后才能继续往下执 行, 比如多个线程加载资源, 需要等待多 个线程全部加载完毕再汇总处理,或者顺序执行某些线程。1Thread 类中有一个join 方法就可以做这个事情, j oin方法是Thread 类直接提供的。join 是无 参且返回值为void 的方法。2 Thread 类中有一个静态的yield 方法, 当一个线程调用yield 方法时, 实际就是在暗示线程调度器当前 线程请求让出自己的CPU 使用。 我们知道操作系统是为每
2022-04-11 22:22:40 899
原创 阻塞队列实现原理
1.阻塞队列实现原理阻塞队列与普通队列的区别在于,阻塞队列提供了可阻塞的put和take方法。如果队列是空的,消费者使用take方法从队列中获取数据就会被阻塞,直到队列有数据可用;当队列是满的,生产者使用put方法向队列里添加数据就会被阻塞,直到队列中数据被消费有空闲位置可用2.JUC提供了7种适合与不同应用场景的阻塞队列。1)ArrayBlockingQueue:基于数组实现的有界阻塞队列。2)LinkedBlockingQueue:基于链表实现的有界阻塞队列。3)PriorityBlocki
2022-04-10 15:52:36 3085
原创 【什么是MySQL中的聚集索引】
聚集索引 定义I nnoDB存储引擎表是索引组织表, 即表中数据按照主键顺序存放。而 聚集索引 (clustered i ndex) 就是 按照 每 张 表的主键 构造一棵 B+树 , 同时叶子节点中存放的即为整张表的行记录数据, 也将聚集索引的叶子节点称为 数据页。每个数据页都通过一个双向链表来进行链接。由于实际的数据页只能按照一棵B+树进行排序, 因此 每张表 只能拥有 一个聚集索引 。 在多数情况下, 查询优 化器倾向于采用聚集索引。因为聚集索引能够在B+树索引的叶子节点上直接找到数据。此外
2022-04-05 10:29:57 2622
原创 【b树与b+树比较】MySQL的innodb搜索引擎中使用b+树做索引的优势
为什么选用B+树做索引而不选用二叉树或者B树b 树 (balance tree) 和 b + 树应用在数据库索引, 可以认为是 m 叉的多路平衡查找树, 但是从理论上讲, 二叉 树查找速度和比较次数都是最小的,为什么不用二叉树呢? 因为我们要考虑磁盘 I O 的影响, 它相对于内存来说是很慢的。数据库索引是存储在磁盘上的, 当数据量大时, 就不能把整个索引全部加载到内存了, 只能逐一加载每一个磁盘页 (对应索引树的节点) 。 所以我们要减少 I O 次数, 对于树来说, I O 次数就是树的高度, 而
2022-04-05 10:23:01 1490
原创 AQS同步队列实现
Abstract-QueuedSynchronizer是一个抽象同步类,简称AQS。它是实现JUC中绝大部分同步工具的核心组件,都是基于AQS构建的,我们熟知的lock,底层都是通过aqs来实现的AQS提供了一套通用的机制来管理同步状态、阻塞/唤醒线程、管理等待队列等#AQS实现原理AQS维护同步队列,内部使用一个FIFO的双向链表,管理线程同步时的所有被阻塞线程。双向链表这种数据结构,它的每个数据节点中都有两个指针,分别指向直接后继节点和直接前驱节点。所以,从双向链表中的任意一个节点开始,都可以很
2022-04-05 10:12:52 535
原创 Redis-事件
Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件:文件与时间事件;文件事件(file event):Redis服务器通过套接字与客户端(或者其他Redis服务器)进行连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或者其他服务器)的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作。我们使用redis的交互实现过程的事件;时间事件(time event):Redis服务器中的一些操作(比如serverCron函数)需要在给定的时间点执行,而时
2022-04-04 12:15:48 1264
原创 记一次跨越问题处理
跨越问题CORS error场景为啥会出现跨越呢解决方法nginx反向代理方式场景做用户单点登录为啥会出现跨越呢跨越问题出现是因为两个服务不在同一个域下面,导致解决方法经过多次尝试,百度,没有解决两个服务进行免密登录跨越问题,最后通过nginx反向代理解决,让中间进行免密登录代理服务和sso的系统在同一个域下nginx反向代理(部署)优点:可以解决各种不在同域问题,来的实在缺点:添加配置nginx反向代理方式/singleJump 请求的中间服务登录地址#中间服务部署的服务ip和端
2022-03-21 16:43:19 933
原创 服务启动后java.lang.NoClassDefFoundError: Could not initialize class xxx问题处理
处理java.lang.NoClassDefFoundError: Could not initialize class xxx问题场景原因场景切换国产化中间件后出现的报错,java.lang.NoClassDefFoundError: Could not initialize class xxx原因服务启动加载依赖jar加载不到导致初始化的时候,找不到想要的jar,有static代码块需要加载一些类导致,找不到类,初始化失败,再次调用时候就出现找不到类问题;解决思路:找不到类,一般是jar包冲
2022-02-17 19:44:12 1690
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人