目录 引言 一、前期准备工作 1.搭建新的MySQL数据库 2.建立相应的数据表 2.1数据库兼容性分析 2.1.1字段类型兼容性分析 2.1.2函数兼容性分析 2.1.3是否使用存储过程?存储过程的个数?复杂度? 2.1.4是否使用触发器?个数?使用的场景? 2.2建表过程中其他需要注意的事项 3.为项目配置Oracle和MySQL双数据源 4.对项目进行改造添加MySQL数据CRUD代码 二、数据迁移操作步骤 1、配置初始化 2、同步数据检查 3、全量数据迁移 4、检查全量迁移的数据 5、开启双写 6、获取迁移过程中oracle数据库的增量数据 7、增量数据脚本...

  nGBUY19HfgTu   2024年04月11日   64   0   0 MySQL

前言 redis是一个非常快速‎‎的非关系数据库‎‎解决方案。其简单的键值数据模型使Redis能够处理大型数据集,同时保持令人印象深刻的读写速度和可用性。‎redis提供了五种数据类型,分别是是:1、string(字符串);2、hash(哈希);3、list(列表);4、set(集合);5、sortset(有序集合)(其实随着Redis版本的更新,后面又支持了四种数据类型:BitMap(2.2版新增)、HyperLogLog(2.8版新增)、GEO(3.2版新增)、Stream(5.0版新增),本文暂不作介绍。)。接下我就给大家介绍一下这五种数据类型的基本用法和使用场景。 Redis五大数...

  nGBUY19HfgTu   2023年11月02日   112   0   0 R语言

​去年年底的因为业务需要需要在使用tk.mybaits框架的系统中实现指定字段的更新,可是tk.mybaits框架本身并不支持这个功能,我翻遍了CSDN和其他相关的技术相关的网站都没有找到相关的解决方法。于是我通过几天的翻阅相关资料和摸索后终于实现了这个功能。最近事情不是很多,想到又想到了去年解决的这个问题,于是有了这篇文章。分享一下当时的解决方法,为有同样需求的小伙伴抛砖引玉。 ​这个问题如果系统使用的是Mybatis-Plus框架的话,实现只更新指定的字段是一件很简单的事情。只需要写以下代码即可: UpdateWrapperupdateWrapper=newUpdateWrapper();...

  nGBUY19HfgTu   2023年11月01日   102   0   0 Java

通常的数据同步中,如果数据量比较少的话可以直接全量同步,默认情况下,完整的检索结果集会将其存储在内存中。在大多数情况下,这是最有效的操作方式,并且由于MySQL网络协议的设计,因此更易于实现。但是如果数据量很大的话,全量同步需要大量的内存,如果内存不足的话则可能会导致内存溢出。 通常的会采用分页的方式,一批一批的同步,大体的实现方式如下: `` intpage=1; intpageNum=1000; while(true){ UserQueryRequestrequest=newUserQueryRequest(); request.setPage(page); request.setPage...

  nGBUY19HfgTu   2023年11月01日   92   0   0 Java

前言 最近在弄文件上传、下载、在线预览时经常需要设置请求标头或者响应标头的Content-Type属性。所以研究了一下spring支持哪些Content-Type,通过研究MediaTypeFactory.getMediaType的源码,可以得知spring是将支持的Content-Type维护在/org/springframework/http/mime.types文件中。 privatestaticMultiValueMap<String,MediaType>parseMimeTypes(){ InputStreamis=MediaTypeFactory.class.getRe...

  nGBUY19HfgTu   2023年11月01日   52   0   0 Java

关于在线预览的实现方案除了之前说的转图片、html、pd以及利用前端组件以外方式,还有就是在服务器端引入一些开源或者商用的组件来实现在线预览的实现方案。通过这次的调研找到了kkfileview、OnlyOffice、officeonlineserver、LibreOfficeOnline、CollaboraOnline等五种组件,接下来我们就来一个一个看着这些组件是如何安装和使用的吧。 一、kkfileview 1、简介 kkfileview是一个开源的文件文档在线预览项目解决方案。该项目使用流行的springboot搭建,易上手和部署以及二次开发,并提供Docker镜像发行包,方便在容器环境...

  nGBUY19HfgTu   2023年11月01日   53   0   0 Java

前几天在项目读取resources目录下的文件时碰到一个小坑,明明在本地是可以正常运行的,但是一发到测试环境就报错了,说找不到文件,报错信息是:classpathresource[xxxx]cannotberesolvedtoabsolutefilepathbecauseitdoesnotresideinthefilesystem:jar:file:xxxx.jar!/BOOT-INF/classes!xxxx。 看了半天代码感觉没有问题,于是怀疑是打成项目jar包后和原项目存在差异导致的。于是我把的项目打成jar包,在本地直接调试jar,果然发现问题所在。下面我将以一个自己的测试项目api-...

  nGBUY19HfgTu   2023年11月01日   85   0   0 Java

@ 目录 实现方式一、由后端统一将文档转成图片,再返回给前端进行展示 实现方式二、由后端统一将文档转成html,再返回给前端进行展示 实现方式三、由后端统一将文档转成pdf,再返回给前端进行展示 实现方式四、纯前端实现在线预览 实现方式五、服务器安装组件实现在线预览 1、kkfileview 2、OnlyOffice 3、officeonlineserver 4、LibreOfficeOnline(不推荐) 5、CollaboraOnline 总结 最近因为工作需求,调研了实现文档在线预览功能的方式,总结了一下,大概的实现方式由后端统一转成图片或者pdf或者html返回前端,再...

  nGBUY19HfgTu   2023年11月01日   60   0   0 Java

@ 目录 一、准备模板 1、创建模板文件 2、处理模板 2.1处理普通文本 2.2处理表格 2.3处理图片 二、项目代码 1、引入依赖 2、生成代码 三、验证生成word 一、准备模板 1、创建模板文件 首先先建立一个word文件,输入模板内容freemaker的内容,下面是本次演示的word文件。 然后将word文件另存为.xml文件,然后再把文件后缀改成.ftl。将项目的resource目录下建立一个templates目录(非必须步骤)将模板文件放到templates目录下 打开模板文件按Ctrl+Shift+L将模板内容格式化。 2、处理模板 2.1处理普通文本 处...

  nGBUY19HfgTu   2023年11月01日   46   0   0 Java

@ 目录 一、前言 1、什么是poi-tl 2、官方信息 2.1源码仓库 2.2中文文档 2.3开源协议 3、poi-tl的优势 3.1poi-tl和其他模板引擎的对比 3.2poi-tlWord模板引擎支持的功能 二、基本的使用配置 1、引入依赖 1.1Maven 1.2Gradle 2、配置 2.1新建配置 2.2标签前后缀替换 2.3加载模板 2.4填充数据 2.5输出文件 三、各类模板标签替换和填充 1文本 1.1文本的标签如下 1.2支持数据类型 1.3文本数据填充方式如下 2图片 2.1图片的标签如下: 2.2支持数据类型 2.3图片数...

  nGBUY19HfgTu   2023年11月01日   114   0   0 Java

目录 一、前言 二、工具类的依赖和简单介绍 1、添加依赖 2、简单的使用 3、加载需要处理的图片 4、添加图片处理规则 4.1Builder的方式 4.2使用规则工厂的方式 5、输出处理后的图片 三、使用方式 1、图片裁剪 图片裁剪规则实体类 1.1按长宽裁剪 1.1.1示例代码 1.1.2实现效果 1.2按比例裁剪 1.2.1示例代码 1.2.2实现效果 2、图片压缩 图片压缩规则实体类 2.1按长宽压缩不保持比例 2.1.1示例代码 2.1.2实现效果 2.2按长宽压缩按宽度保持长宽比例 2.2.1示例代码 2.2.2实现效果 2.3按长宽压缩自动...

  nGBUY19HfgTu   2023年11月01日   72   0   0 Java

  Java内存区域包含程序计数器、虚拟机栈、本地方法栈、Java堆、方法区五个区域。                 运行时数据区分类                   Java内存区域   一、程序计数器   程序计数器(ProgramCounterRegister)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的信号指示器。 字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式...

  nGBUY19HfgTu   2023年11月01日   80   0   0 Java

基于实用优先的原则,以常用的虚拟机HotSpot和常用的内存区域Java堆为例,深入探讨HotSpot虚拟机在Java堆中对象分配、布局和访问的全过程。以下是本节内容的脑图。   HotSpot虚拟机对象探秘脑图   一、对象的创建 创建对象大致分为5步:1.检查类是否加载,没有加载先加载类2.分配内存3.初始化4.设置对象头5.执行初始化方法例如构造方法等。   1、类加载检查 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行...

  nGBUY19HfgTu   2023年11月01日   104   0   0 Java

本节内容的概要如下;                                         对象已死吗?   一、判断对象是否存活的算法 1、引用计数器算法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。 客观地说,引用计数算法(ReferenceCounting)的实现简单,判定效率也很高,在大部分情况下它都是一个不错的算法,但是,至少主流的Java虚拟机里面没有选用引用计数算法来管理内存,其中最主要的原因是它很难解决对象之间相互循环引用的问题。   2、可达...

  nGBUY19HfgTu   2023年11月01日   67   0   0 Java

由于垃圾收集算法的实现涉及大量的程序细节,而且各个平台的虚拟机操作内存的方法又各不相同,因此本节不打算过多地讨论算法的实现,只是介绍几种算法的思想及其发展过程。                 垃圾收集算法概要   1、标记-清除算法   标记-清除算法最基础的收集算法是“标记-清除”(Mark-Sweep)算法,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象,它的标记过程其实在前一节讲述对象标记判定时已经介绍过了。之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其不足进行改进而得到的。它的主要不足有...

  nGBUY19HfgTu   2023年11月01日   121   0   0 Java

HotSpot的算法实现                       HotSpot的算法实现概要 1、枚举根节点   由于目前的主流Java虚拟机使用的都是准确式GC(这个概念在第1章介绍ExactVM对ClassicVM的改进时讲过),所以当执行系统停顿下来后,并不需要一个不漏地检查完所有执行上下文和全局的引用位置,虚拟机应当是有办法直接得知哪些地方存放着对象引用。 在HotSpot的实现中,是使用一组称为OopMap的数据结构来达到这个目的的,在类加载完成的时候,HotSpot就把对象内什么偏移量上是什么类型的数据计算出来,在JIT编译过程中,也会在特定的位置记录下栈和寄存器...

  nGBUY19HfgTu   2023年11月01日   87   0   0 Java

                         垃圾收集器     HotSpot虚拟机包含的所有收集器如图3-5所示。图3-5展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用。   新生代收集器:Serial、ParNew、ParallelScavenge,新生代收集器均采用复制算法   老年代收集器:SerialOld(标记-整理算法)、ParallelOld(标记-整理算法)、CMS(标记-清除算法)   不分代的收集器:G1(整体来看基于标记-整理和局部来看基于复制算法)         图3-5HotSpot虚拟机的垃圾收集...

  nGBUY19HfgTu   2023年11月01日   151   0   0 Java

  Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存。关于回收内存这一点,我们已经使用了大量篇幅去介绍虚拟机中的垃圾收集器体系以及运作原理,现在我们再一起来探讨一下给对象分配内存的那点事儿。 对象的内存分配,往大方向讲,就是在堆上分配,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数的设置。                        ...

  nGBUY19HfgTu   2023年11月01日   38   0   0 Java

                                    Class类文件的结构     Sun公司以及其他虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的的程序存储格式——字节码(ByteCode),从而实现了程序的“一次编写,到处运行”。                   Java虚拟机提供的语言无关性     “Class文件”这种特定的二进制文件格式所关联,Class文件中包含了Java虚拟机指令集和符号表以及若干其他辅助信息。使用Java编译器可以把Java代码编译为存储字节码...

  nGBUY19HfgTu   2023年11月01日   68   0   0 Java

字节码指令简介     Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。由于Java虚拟机采用面向操作数栈而不是寄存器的架构(这两种架构的区别和影响将在第8章中探讨),所以大多数的指令都不包含操作数,只有一个操作码。   字节码指令集是一种具有鲜明特点、优劣势都很突出的指令集架构,由于限制了Java虚拟机操作码的长度为一个字节(即0~255),这意味着指令集的操作码总数不可能超过256条;又由于Class文件格式放弃了编译后代码的操作数长度对齐,这...

  nGBUY19HfgTu   2023年11月01日   29   0   0 Java
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~