freemarker典型场景

将原始的, 用户给过来的 origin.docx 另存为 xml格式 生成origin.xml用https://tool.oschina.net/codeformat/xml 将xml格式化, 便于修改定位到要替换的变量将origin.xml 改名为 origin.ftlOver模板制作完毕,代码里用就可以了这样做有一个巨大的好处是, docx是用户给的,他需要考虑所有情况,包括字段过长自动扩展列的高度等等所有问题.开发只需要替换变量就行了.将处理word格式这个无底洞给了用户, 而且.
分类: 其他 发布时间: 03-28 10:53 阅读次数: 0

水晶报表 linux下字体不生效的问题

https://blog.csdn.net/zozoxxma/article/details/84023805解决其他的能代码指定字体路径的情况不会有这个问题. 这类模板类型的,是需要给jdk安装字体的
分类: 其他 发布时间: 03-28 10:53 阅读次数: 0

pid调参

1.5, //P 比例 0.1, //I 积分 0.05 //D 微分期望100 1.5/0.1/0.05 2ms控制周期期望100 1.5/0.1/0.05 10ms控制周期1.5/0.1/01.5/0.1/0.21.5/0.1/0.75
分类: 其他 发布时间: 03-28 10:53 阅读次数: 0

python 抓取网页元素

最近工作中也用python做了些东西,之后补一下, 创建个分类昨天有自动化拍卖车牌的点子,今天弄了下首先selenium 然后xpath完
分类: 其他 发布时间: 03-28 10:52 阅读次数: 0

vue父子组件互相访问11

父子组件互相访问
分类: 其他 发布时间: 03-28 10:52 阅读次数: 0

vue组件插槽slot12

组件插槽slot为什么在组件内使用slot同一个组件可能会在不同的地方多次使用,最好的封装方式是抽取共性,保留不同。把大部分地方都需要的相同的部分直接写在组件内,少部分不相同的地方则在预留的插槽中实现,可以更好的让使用者根据自己的需求决定slot中要插入什么内容。slot插槽作用:使封装的组件更具扩展性。slot的基本使用方法普通组件具体效果:含slot插槽的组件具体效果:slot插槽中含默认内容的组件具体效果:含具名插槽的组件具体效果:...
分类: 其他 发布时间: 03-28 10:52 阅读次数: 0

认识webpack、理解webpack与grunt、glup的核心区别01

认识webpack什么是webpack官方解释At its core,webpack is a static module bundler for modern JavaScript application.即 webpack是一个现代的JavaScript应用的静态模块打包工具关键词:模块化、打包从模块化和打包两个关键词来解释webpack1、模块化前端模块化方案:AMD、CMD、CommonJS、ES6ES6之前:开发人员进行模块化开发必须要借助其他工具;在通过模块化开发完成
分类: 其他 发布时间: 03-28 10:52 阅读次数: 0

Java进行复杂的排序(自定义Comparator)

Java进行复杂的排序(自定义Comparator)在完成一个Java List 的比较复杂的排序中, 使用了自定义Comparator这里记录一下使用的过程.public static void main(String[] args) { List<CardVo> vos = new ArrayList<>(); vos.add(CardVo.builder().batchType(TicketBatchTypeEnum.TONG_TICKET).expired
分类: 其他 发布时间: 03-28 10:52 阅读次数: 0

剑指 Offer ------------ 二维数组中的查找

题目链接!思路:这道题的话,我们可以从题目中约束数组的条件出发,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序,这样我们可以从左上角开始遍历,如果当前元素大于target,那么就把这一列去掉;如果小于则把这一行去掉即可。代码:class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { if(m.
分类: 其他 发布时间: 03-28 10:32 阅读次数: 0

剑指 Offer ------- 替换空格

思路:这道题的话就是统计一下空格的个数,然后再换成%20的总的字符串长度,采取双指针。从后面开始往前遍历即可,具体看代码。代码:class Solution {public: string replaceSpace(string s) { int tmp = 0; for(auto &i:s){ if(i==' ') ++tmp; } int len = s.size() + tmp*2;.
分类: 其他 发布时间: 03-28 10:32 阅读次数: 0

剑指 Offer ------------ 用两个栈实现队列

思路:这道题的话,就是用栈的思想去做,一个栈用来进数,然后当要出数字的时候,只需要看看另外一个栈有没有数字,如果没有的话,就把栈1的数字放进栈2,此时栈2就相当于是队列中放置的元素。代码:class CQueue {public: CQueue() { } void appendTail(int value) { st1.push(value); return ; } int deleteHead() {.
分类: 其他 发布时间: 03-28 10:32 阅读次数: 0

剑指 Offer ------- 重建二叉树

题目链接!思路:这道题的话,我们只需要知道二叉树的遍历特点即可,前序数组的第一个数字就是我们要建立的第一个根节点的值,那么我们就需要在中序数组上遍历得到左右子树的划分,我们知道中序是LDR,所以在根节点x的左边一定是左子树,周而复始递归即可。代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; .
分类: 其他 发布时间: 03-28 10:32 阅读次数: 0

剑指 Offer ------- 旋转数组的最小数字

思路:这道题其实有点坑的。那就是如果数组李曼有重复值情况。比如3,1,1,2,2,2,2,2这种情况,这道题无疑就是用二分来做,只需要查找数组最后一个元素的分界线即可,但就是怕出现上面那种特殊的情况,这里的做法就是把要比较分界线末尾的元素再往前挪一位,用前一位去找分界线,如果前一位还有重复值,那么继续往前挪即可。代码:class Solution {public: int minArray(vector<int>& numbers) { int i = .
分类: 其他 发布时间: 03-28 10:32 阅读次数: 0

剑指 Offer -------矩阵中的路径

题目链接!思路:这道题的话,我们主要是用dfs(当然你也可以用bfs),是道很典型的搜索模板题,这里值得注意的一点就是,我自己写这个dfs的时候,很喜欢用一个book数组来标记哪个节点是否走过,但是其实我们是可以不需要的,在dfs中,我们可以改变这个节点的值来告知这个节点已经遍历过,在回溯的时候恢复成原先的数据即可。代码:class Solution {public: bool exist(vector<vector<char>>& board, stri.
分类: 其他 发布时间: 03-28 10:32 阅读次数: 0

剑指 Offer ------- 机器人的运动范围

题目链接!思路:这道题也是典型的搜索题,你可以用bfs或者dfs写都可以,我这里用的是bfs,就从(0,0)这个点出发,然后从这个点开始向周围遍历,一般是上下左右,但是这道题可以缩减为向下或者向右,然后用一个二维数组进行点的标记即可,把符合的点放入队列中,再循环遍历即可。代码:class Solution { // 计算 x 的数位之和 int get(int x) { int res=0; for (; x; x /= 10) { .
分类: 其他 发布时间: 03-28 10:32 阅读次数: 0

剑指 Offer ------- 剪绳子

题目链接!思路:这道题是个数学证明题,当然也是很容易就能想得出,用贪心的思维去做,我们可以知道这个推论:尽可能将绳子以长度 3 等分为多段时,乘积最大。 那么就会有余数的情况下,如果为2则不用拆分,如果为1的话,那么就要把一个3加上这个1拆分成2+2。具体证明点击此处!代码:class Solution {public: int cuttingRope(int n) { if(n==2) return 1; if(n==3) return 2; .
分类: 其他 发布时间: 03-28 10:32 阅读次数: 0

剑指 Offer -------- 二进制中1的个数

思路:这道题有很多种做法,最简单的就是循环遍历32位,还有一种高效的做法就是利用lowbit去做,lowbit返回值表示元素的二进制中最后一个1的数值,哪怕是负数,他也会计算所有位的,包括符号位。代码:class Solution {public: int low_bit(uint32_t n){ return n&(-n); } int hammingWeight(uint32_t n) { int ans = 0; .
分类: 其他 发布时间: 03-28 10:32 阅读次数: 0

C++ -------- atoi() 函数与stoi()函数

前言:在C++中有几个处理字符串转换数字的函数很好用,可以学习一下。atoi() 与stoi()函数都是c++的字符处理函数,把数字字符串转变为int输出头文件都是#include< cstring >那他们的区别是什么呢?atoi()的参数是const char *,因此对于字符串str我们必须调用c_str()的方法把这个string 转换成const char *类型的;stoi()的参数是const string *,可直接使用;stoi()会做范围检查,
分类: 其他 发布时间: 03-28 10:32 阅读次数: 0

STL算法next_permutation的原理和使用

Source:http://leonard1853.iteye.com/blog/14500851、碰到next_permutation(permutation:序列的意思)今天在TC上碰到一道简单题(SRM531 - Division Two - Level One),是求给定数组不按升序排列的最小字典序列(Sequence of numbers A is lexicographically smaller than B if A contains a smaller number on the fi
分类: 其他 发布时间: 03-28 10:32 阅读次数: 0

Linux-------软链接和硬链接

前言:在网上搜索了好久,看了很多博客,某度知道等等。关于软硬链接的解释都太模糊,还有什么i节点,跨分区根本弄不明白,在查阅了书籍和询问老师后决定自己写一篇简单的博文,然初学者都能够明白的博文。 一 建立软链接和硬链接的语法 软链接:ln -s 源文件 目标文件 硬链接:ln 源文件 目标文件 源文件:即你要对谁建立链接 二 ...
分类: 其他 发布时间: 03-28 10:32 阅读次数: 0