- 博客(29)
- 资源 (1)
- 问答 (8)
- 收藏
- 关注
原创 Apache FOP-4 使用笔记 中文OOM问题
FOP当使用TTF字体文件进行导出时,数据量较大会触发OOM问题,通过分析OOM日志,发现问题在于fonts下的两个对象的重复生成,这个时候可以通过生成builder的方式解决这种问题。代码类似于,其中baseURI 需要一个文件路径参数,是TTF文件所在的路径,setComplexScriptFeatures可以让项目不循环生成字体文件。
2024-07-02 09:38:15 111
原创 Apache FOP 使用笔记-3
gardle集成fop后进行导出pdf,与打成jar包后运行中碰到的,图片引用,jar包冲突,包依赖缺失,实例化失败的解决方案
2024-05-29 09:37:42 282
原创 Apache FOP 使用笔记-2
这是一个充满了示例的网站,没有文档,但是可以通过参考在线的PDF文档,然后下载FO文件进行反向解析。比如参考从参考例子中解析了,region-body 可以通过增加 column-count属性,来将body分为多列,这样就可以将多个block并行放置,但是实际放置是先填满一列,在填第二列。
2024-05-10 17:58:29 397
原创 python爬虫实践总结
分析link间的联系,比如小说首页为http://xxx.xxxx.com/book/yyyyy,目录页为http://xxx.xxxx.com/book/yyyyy/index,第一页为http://xxx.xxxx.com/book/yyyyy/1.html,这样就意味着可以以http://xxx.xxxx.com/book/yyyyy为基准,拼接不同后缀访问页面。这里要考虑的点是目录信息是用什么标签包裹的,是ul还是自定义,页面是否同时有多个相同标签,这里决定了获取的目录信息是否正确。
2024-03-20 14:26:02 867
原创 Java-调用String的replaceAll方法替换结果错误
场景: 整理sql,历史遗留的sql中,表的别名都是用al1之类的格式写的,整理column字段时需要转化为表名字段模式。这里将al1 表标识为 temp ,al18标识为table 方便理解。简化sql如下 select al18.column from temp al1,table al18业务实际经历了两个阶段,第一个阶段直接进行了替换,此阶段碰到的问题是,因为关联的表过多,replace的后出现了将al18 替换成了 al1 +“8”的情况(al18.column -&...
2021-12-15 10:31:38 955
原创 通过SwaggerApi反向生成代码
先上网址:https://editor.swagger.io/ 平时使用swagger都是通过正向来做,通过在代码中加注释等方式,生成一个swagger-ui的文档,这个页面将这个过程逆转,先生成文档,再反向生成api。 项目中实际使用的生成文档,加上注释并且去除相关敏感信息后,加上了一些实际使用的经验,如有不对,往给予指正。openapi: 3.0.0#声明对应生成器的版本info: title: example #项目的名称 description...
2021-07-22 10:23:08 1042
原创 H2运行Oracle日期运算sysdate语法问题
前置信息:项目中使用H2数据库代替Oracle在开发与编译阶段进行测试,测试中有对八小时前数据的查询需求。在oracle中使用 sysdate-8/24可以获得8小时前的时间,在H2环境的单体测试中,sysdate-8/24作为条件,总是过滤了应该查询出的结果。检查后发现,运行语句后,返回的时间是没有减去8小时的。后期查询资料时发现有个回复说H2支持Oracle的时间运算符,但是计算结果为整数,在另一篇资料(http://www.nazmulhuda.info/use-of-sysdate-in-ora
2021-07-21 17:36:07 628
原创 记一次后台批量值转化
·业务场景 前端动态报表头,给出的方案的动态组成报表头,说是不能在前端做值转化。 数据从数据库中查出,列中字段较多,需要转化的字段也较多,不想太多的改造原代码逻辑。 想到JSON的拼接实际是调用了类中的get方法获取值,决定使用父子类的方式,在子类中重写get方法,想要获取原值时使用super调用父类中方法即可。使用中面临了PageInfo分页组件中声明类型为父类,set子类对象类型检查异常等问题。伪代码PageInfo<fatherDto> pageIn...
2021-05-19 20:56:01 96
原创 使用lombok@Data标签遇到的问题
关键词:hash hashCode toString equals data标签包含了get,set,hash等一系列代码,如果是单纯的bean并不会碰到问题,当bean是继承来的时候,equals等方法就会出现一个问题,在计算hash值,调用equals时不会调用父类属性进行对比,当子类属性一致,父类属性变更时,计算值无变更。 此问题同样会导致hashSet,hashMap等使用hash值进行对比的结果,会导致已修改的数据判断为属性一致导致去重。类上加上@Equals...
2021-05-15 11:04:14 279
原创 vlookup对比数据的一点使用经验
·需求 切换数据源后,担心两个数据源数据差异要对数据进行对比。·工具 2007版excelVLOOKUP(要对比的值,对比的数据源,对比成功从数据源中获取哪一列的值显示,是否精确匹配)使用中总结了几点。1.对比数据源可以为一个范围内的值,但是对比时只会对比第一列,要注意调整对比数据源,把要匹配的列放在第一列。2.参数3为匹配上后从数据源的哪一列显示值,下标从1开始。3.参数4实际应该标注为是否模糊匹配,模糊匹配规则类似 sql中 like 值%。 数据源切换后lea...
2021-05-15 10:44:06 581
原创 oracle数据通过触发器使用merge语句同步
场景:项目中表变更情况复杂,可能有行级的增减情况。与另外的系统产生联动,判断表状态,写入接口表,接口表中另外的数据由另外系统来补充。在业务开始初期,没有直接确定使用触发器的方案,后期与leader确认时发现数据发生变化的场景很多且复杂。商议后确定使用触发器。CREATE OR REPLACE TRIGGER 表空间.触发器名AFTER(触发时机,可以是之前或者之后) update(触发的操作是什么,可以是新增修改之类的操作) OF 变更的行中的值 ON 表 FOR EACH ROW ...
2021-04-18 20:39:59 585 1
原创 Java流的重复读取
Java中普遍应用流来与外部交换数据。比较典型的操作是操作文件与HttpServletRequest/Response流。 而Java中流处理中有个小型知识点在于流是不能重复读取的。伪代码如下 File file = new File( fileName); FileInputStream fi = new FileInputStream(file); HSSFWorkbook book =...
2021-04-03 11:36:59 2122
原创 Java泛型
java的泛型机制是种伪概念,因为编译后的class文件中并不含有泛型,泛型创立的机制是为了将错误预先进行检查,将错误暴漏在写代码的过程中而不在编译运行期间报错。比较典型的一种用法是将返回值声明为T,同时可以通过 extends 与 super 在创建T类型时声明类型的上下限,与之相等的是不声明上下限时,将规定值声明为Object,并在调用处,将类型通过(类型)形式强转类型。声明上下限就是一个返回父类的问题,类似与工厂类返回不同子类的方法。...
2021-03-21 20:42:46 66
原创 数据库大数量迁移思路
数据库: oracle场景: 从其他表中获取大量数据,补充到表中使用方法是使用循环方式,将每条数据单独插入,伪代码如下declare cursor 循环对象 is ( 查询sql );begin for 单次对象 in 循环对象 loop 修改或插入sql end loop;end;方式的核心是将数据分条插入,这样可以降低数据库的压力,可以通过每次修改或插入后将数据提交的方式,降低风险。单次对象相当于数据库中的单行数据,通过单次对象.列名的方...
2021-03-05 11:16:16 292 2
原创 后端导出PDF
项目环境:前端:VUE+html2canvas后端:SpringBoot+ITEXT之前导出pdf的功能都是在前端导出,或者在后端另外画一套模版,项目组不允许前端导出,担心兼容性问题,并且要求所见及所得,页面本身比较复杂,导致后端使用模版的话工作量会比较大。经同事推荐使用了html2canvas,这个前台插件可以将前台页面截图,转为base64编码,将值传递到后端。后端代码为:...
2019-08-20 20:32:37 1217
原创 java对象赋值
java对象bean的赋值方法有很多种,这里说4种。1.最基本的等号赋值。优点是节省内存,因为这种方法实际是将一个内存地址给了两个容器共用。缺点嘛,因为容器中地址共用,修改一个时,另一个也会同时发生改变2.在声明bean时实现克隆接口。克隆方法会产生一个新的内存地址装一份重复的内容在其中;3.使用json的序列化与反序列化,此种方法也会产生一个全新的对象引用;4.使用BeanUti...
2017-07-22 16:45:42 691
原创 java方法参数传递
某天听过了向天老师的课程之后抱着一点疑问,自己写了一点代码验证下。很小的一个知识点,却牵扯了java方法的传值方法,克隆,序列化一系列内容。我们为调用一个方法,在方法内改变入参的值。此时分为两种情况。情况1:传入值为基本类型,改变的值并未返回;情况2:传入值为一个对象bean时,修改其中属性内容。属性发生改变。结论:java入参时为值传递,为何bean的属性发生了变化了。个人理解为
2017-07-22 16:29:20 238
原创 关于springCloud下使用resttemplate
在springCloud环境下使用resttemplate要注意是否为resttemplate对象是否为spring注入。实际工程中使用验证,如果要通过eureka进行连接,必须使用spring注入后的才可以。反之如果想要使用resttemplate连接其他未在eureka管理的接口时。必须自行在工程中实例化resttemplate。实际理由未知。工程中亲测...
2017-06-28 14:20:01 1759
原创 字符串date类型格式时间串转化
程序中可能会将Date类型直接存在数据库类似 Thu Jun 22 19:37:49 CST 2017 类型,此时该字符串即不是普通的日期类型转换的字符串类型,也不是日期类型,此时想要转化为普通的字符串日期类型,需要先转化为普通的日期类型,使用正常的SimpleDateFormat格式不能进行转化,需要在平时的类型中加入Locale.ENGLISH时区,此时可以转化为普通的时间类型,之后可
2017-06-28 14:16:59 386
原创 bootstrap-获取行内数据
使用bootstraptable遍历表格,获得选中的数据时使用将id拼接为数组传递到后即可var rows = $('#tableNormal').bootstrapTable("getSelections"); var pId=new Array(); for(var i=0;i<rows.length;i++){ pId.push(rows[i].id)
2017-02-25 18:00:05 1913
原创 sql日期比较
问题出现在一次查询时,查询的开始日期明明晚于数据库中记录的时间,查询结果中却出现了。比较sql后,又进行公司的大神。解决了问题进行总结如下:使用mbatis时,有时要传递时间标识,有时时间标识为了方便要转为字符串传递,之后就出现了一些问题,假如没有补零设计的时候会导致比较时间时出现4比29大的情况。愿意是当使用String传递时会从头比较大小会使用4与2比较,而不是4与29比较,这时的解决
2017-02-25 17:56:53 390
原创 sql条件查询
培训时,讲的都是很基础的一些sql知识,工作中接触了一些没有学过的编写方式,用自己的语言解释下Case When Then Else End如果 条件 就 否则 结束或者理解为if ( ){ } else{} 结束一个case,end中可以包裹多个When Then
2017-02-25 17:49:18 400
原创 MBatis# $的区别
使用#时不指定类型时会自动认为是varchar类型即使用时会自动加上‘ ’,使用$时会认为是对象而不是字符串。即不会自动加上‘ ’。重构项目,需求很多需要根据id,进行查询。mybatis提供一种方式 #{item} 要查询的集合放到collection后即可。结果为(元素1,元素2,,元素n)。item为list中元素的结果。另一种方式是in(“$对象名”) 这种使用
2017-02-25 17:26:10 472
原创 springboot-restTemplate
学习时使用的是spring,到公司后使用的框架是spring的升级版,springboot在工程中使用时将前后台分开,前台调用前台工程的Controller,之后使用restTemplate ,再去调用后台工程的控制层。restTemplate 使用时发现无法传递list。当时不知道具体的原理。只是发现接收后类型变成hashMap。解决的方法是转成json。传递字符串。接收时也接收为字符串后使
2017-02-25 17:09:47 564
原创 前段的一点小心得-label标签
刚刚开始工作的新人菜鸟,望大家多多给予指点。虽然是做java开发,但小公司并没有几个专业的前台,于是交互只好也做了。个人倒是没在后台碰到过太多问题。那些听起来就很高深的问题都没有遇到过。于是觉得痛苦的就是前后台交互了。努力之后也算是积累了点经验。做个记录,也可能只是片面之谈,理解深度不够。其实只是凑巧解决。还望斧正。前段使用bootstrap框架。大量内容使用label标签包括包括输入框。
2017-02-25 16:48:40 315
转载 MySQL存储过程详解 mysql 存储过程 转载
转载自 王者佳暮的博客mysql存储过程详解1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。一个
2016-12-30 10:11:33 204
原创 Java学习笔记(一)
Java学习笔记(一) 整理的学习内容,想要将学习的东西整理成体系。而不是继续使用知识点记录知识。所学有限,水平有限,如有错误希望给与指正。 Java是一种编译型语言。编写Java代码需要根据系统下载JDK(JDK是java开发工具包)。使用JDK中的javac将.java文件编译为.class文件即字节码文件。 JDK中包含JRE目录。程序运行时使用JRE中的ja
2016-12-04 10:14:15 173
java配置修改代码后自动启动
2017-06-10
SpringBoot Junit测试问题
2017-06-10
ajax可否传递两个对象
2017-04-06
bootstrap 页码下拉框不可点击
2017-02-23
maven工程没有web.xml文件
2017-02-15
java工程发布时为何要打包成为jar包
2017-02-14
bootstrap分页功能实现
2017-02-13
正则验证页面input输入值
2016-12-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人