- 博客(53)
- 收藏
- 关注
原创 设计模式-责任树模型
责任树模型通常用于解决多个层级关系复杂业务场景,业务执行时,可以像树一样,路由到适配的节点进行处理,也可以使用所有的节点处理同一个事件。责任树模型由责任链+策略模式构成。
2023-07-27 16:36:02
234
原创 Flink 原理与项目实战
Flink是新的stream计算引擎,用java实现。既可以处理stream data也可以处理batch data,可以同时兼顾Spark以及Spark streaming的功能,与Spark不同的是,Flink本质上只有stream的概念,batch被认为是special stream。Flink在运行中主要有三个组件组成,JobClient,JobManager 和 TaskManager。主要工作原理如下图。
2023-07-05 17:29:10
332
原创 frps 内网穿透docker 部署
2. 放入docker共享文件路径,启动docker配置。1. 修改或创建服务端frps.ini 脚本。3.按照需求配置fprc客户端脚本启动。
2023-06-16 15:48:30
1079
原创 资源使用记录情况方案初探
在业务需求中,有时对与危险操作,比如删除需要提醒用户删除该资源可能造成的影响。特别是对于基础资源被创建后,其他业务资源有可能处于正在使用该基础资源的状态。对于该基础资源的删除,有必要提醒用户当前有哪些业务资源在使用。下面将重点介绍一种通过数据库结合AOP来维护管理基础资源使用情况的方案。其他基于事件的方案将做简要分析。 对于资源的使用情况记录,在这里只是简单的记录下当前...
2020-03-24 17:09:38
66
原创 Spring boot 重试机制用法与实现
在调用第三方接口或者使用mq时,会出现网络抖动,连接超时等网络异常,所以需要重试。为了使处理更加健壮并且不太容易出现故障,后续的尝试操作,有时候会帮助失败的操作最后执行成功。例如,由于网络故障或数据库更新中的DeadLockLoserException导致Web服务或RMI服务的远程调用可能会在短暂等待后自行解决。 为了自动执行这些操作的重试,Spring Batch具有RetryOperatio...
2019-08-22 20:13:21
3405
原创 EasyExcel 集成国际化实现导入导出
1、配置文件准备1.1 pom.xml 导入EasyExcel 依赖包 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency> <groupId>org.apac...
2019-08-22 14:35:14
7048
原创 frp 内网穿透设置
下载首先到下载页面下载对应版本的服务端和客户端。我的服务器是Ubuntu 16.04 64位,客户端也是Ubuntu 16.04 64位,所以下面都以我自己的为准。大家根据自己情况配置。在linux操作系统上,执行下面的命令,下载frp服务器端。cd /optsudo mkdir frpcd frpsudo wget https://github.com/fatedier/fr...
2019-07-12 14:00:26
828
原创 使用Lambda和反射对两个List循环,根据条件赋值
lambda表达式对两个List进行循环,根据符合条件,进行相关的赋值操作并返回这个对象的集合测试类:@Datapublic class Girl { private String id; private String name;}@Datapublic class SchoolBoy { private String girlId;...
2019-07-12 11:07:31
4038
原创 使用LocalDateTime处理时间与前端和数据库的无缝对接
一、简介 通常与前端互相传递时间相关参数,一般为String或Date 类型,而DTO中一般用LocalDateTime处理,这样会发生多次时间格式或类型转换,产生冗余代码。故可以通过全局AOP实现前端所传String类型时间自动映射转化为LocalDateTime类型,后端处理后也自动映射LocalDateTime为String 返回前段。 其中对于PostgreSQL数...
2019-07-02 19:49:44
19172
5
原创 Orika配置使用及解决LocalDateTime映射问题
一、简介Orika是java Bean映射框架,可以实现从一个对象递归拷贝数据至另一个对象。在开发多层应用程序中非常有用。在这些层之间交换数据时,通常为了适应不同API需要转换一个实例至另一个实例。有很多方法可以实现:硬代码拷贝或Dozer实现bean映射等。总之,需要简化不同层对象之间映射过程。Orika使用字节码生成器创建开销最小的快速映射,比其他基于反射方式实现(如,Dozer)...
2019-07-02 19:19:12
3369
原创 jar文件打包瘦身与部署为Windows服务
需求: 由于spring boot 结合cloud 可以有多个微服务,可以打很多jar包,其中有很多maven库是重复的,package生成的jar中由于重复会占用大量的体积。造成在操作系统上部署时占用磁盘空间,安装过程也较慢。 同时,为了便于在操作系统上一键化部署jar服务,可以编写install.exe或install.sh来实现。在云平台上由于有install文件,也可以方便以组件的形式安装...
2019-02-27 21:30:14
603
原创 docker 部署java web项目
主要步骤安装docker卸载旧版本docker如果centos系统中存在老版本的docker,可以先卸载掉旧版本的docker,再安装新版本docker。yum remove docker docker-common docker-selinux docker-engine安装docker-ce版 参见上一篇安装docker: https://blog.csdn.net...
2018-04-10 20:14:08
1160
原创 docker 安装与部署本地私人存储服务
安装dockerUbuntu 14.04 16.04 (使用apt-get进行安装)# step 1: 安装必要的一些系统工具sudo apt-get updatesudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common# step 2: 安装GPG证书curl -...
2018-04-10 15:58:32
1774
原创 win10 搭建完整深度学习开发环境
硬件环境: win10 64位, GPU GTX1070必须安装软件: python3.6 Anaconda CUDA8.0 (不能选CUDA9.0, 目前不支持) cudnn-8.0选择安装的软件或库: Keras tensorlayer TFLearn Visual Studio 2015 JetBrains PyCharm安
2017-12-08 16:39:57
6321
原创 数据结构与算法分析 c++ 排序
排序 外部排序不能在主存中完成而必须在磁盘或磁带上完成的排序为外部排序 内部排序 内部排序是数据记录在内存中进行排序。 几种常用的内部排序:冒泡排序,简单选择排序,直接插入排序,希尔排序,快速排序,归并排序,堆排序,基数排序。 下面将从算法思想, 时间空间复杂度和算法例程来归纳一下这八中排序:冒
2017-11-28 16:07:57
275
原创 散列(hashing)
散列散列表的实现常常叫做散列。散列是一直用于以常数平均时间执行插入,删除和查找的技术。一种简单的散列函数。int hash( const string & key, int tableSize){int hashVal = 0;for ( char ch : key ) hashVal += ch; /
2017-10-23 20:03:04
318
原创 SQL Group by
SQL GROUP BY 语句参考:http://www.w3school.com.cn/sql/sql_groupby.aspSQL sum()SQL Having合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句。GROUP BY 语句GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
2017-10-23 20:00:45
233
原创 SQL join
SQL JOINSQL AliasesSQL Inner JoinSQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。Join 和 Key有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,
2017-10-23 19:57:48
393
原创 数据库索引
SQL CREATE INDEX 语句索引类型:(1)按照索引列值的唯一性,索引可分为唯一索引和非唯一索引①非唯一索引:B树索引create index 索引名 on 表名(列名) tablespace 表空间名;②唯一索引:建立主键或者唯一约束时会自动在对应的列上建立唯一索引(2)索引列的个数:单列索引和复合索引(3)按照索引列的物理组织方式①B树
2017-10-23 19:38:04
196
原创 数据结构与算法分析 C++ 查找等长单词且只有一个元素不同的所有单词
第四版map set 实现章节(P143) 书中提到的 :编写一个程序来找出通过单个字母的替换可以变成至少15个其他的单词的单词。如: 单词wine 可以变成dine、fine、line、nine、pine、或vine。单词wine 可以变成wind、wing、wink、wins。#include #include #include #include #include
2017-06-23 20:30:02
464
原创 数据结构与算法分析 c++11 红黑树 (Red black tree)
红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树,没有一条路径长度是其他路径长度的两倍。没有AVL树那样要求平衡条件为路径长度相差正负一这种严格平衡。红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。红黑树的高最多是2log(N+1)。除了具备该特性之外,红黑树还包括许多
2017-06-23 15:18:57
475
原创 数据结构与算法分析 c++11 伸展树(splay tree)
一、什么是伸展树(splay tree)伸展树(splay tree)是特殊的二叉查找树,它通过将访问过的节点旋转移到根节点处,来降低再次访问的时间。它保证从空树开始任意连续M次对树的操作最多花费O(MlogN)时间。 普通AVL树的旋转和伸展树的旋转不同之处: AVL树的旋转操作目的是缩小左右子树的高度差,它是全局调控即目的是缩小整棵树的
2017-06-22 14:30:17
979
原创 数据结构与算法分析 c++11 AVL tree 另一种实现方法
AVL tree 的另一种实现方法,这种AVL tree 是在插入删除过程中分别考虑左右子树的平衡,调用左右调整规则“leftBalance(t) 和 rightBalance(t)”,并及时调整。 第四版书上P125页介绍的是放弃平衡条件,允许有任意的深度,但是在每次操作之后使用一个调整规则(P125 调整规则void balance(AvlNode * &t))调整。AVLTre
2017-06-21 20:32:06
355
原创 数据结构与算法分析 c++ 平衡二叉树 AvlTree
一棵AVL 树(AVL tree) 是其每个节点的左子树和又子树的高度最多差1的二叉查找树。 可以通过单旋转和双旋转来达到平衡条件。 这个实现起来有一定难度,参考书上和网上的程序实现。AvlNode.h#pragma once#include #include #define LH +1 //左高 #define EH 0 //等高 #define RH -1 /
2017-06-21 19:20:12
582
原创 数据结构与算法分析 c++11 查找二叉树 BinarySearchTree
查找二叉树的实现,参考第四版教材P109页。binarySearchTree.h 文件:#pragma once#include template class BinarySearchTree{public: BinarySearchTree():root(nullptr){}; BinarySearchTree(const BinarySearchTree & rhs)
2017-06-20 14:15:57
405
原创 数据结构与算法分析 c++11 练习3.22 中缀表达式转后缀表达式,后缀表达式计算, 多项式计算
练习3.22 中缀表达式转后缀表达式,后缀表达式计算, 多项式计算polynome.h#pragma once#include #include #include //判断字符类型需要的头文件#include #include #include class Polynome {public: Polynome() = default; Polyno
2017-05-22 20:41:09
555
原创 hadoop 单词个数及所处文件位置统计
一、题目描述 输入若干个文件,得到所有文件中某单词的所在文件名,单词在文档中出现的次数和具体的位置信息例如,输入文件如下:1.txt:it iswhat it iswhat isitit is abanana2.txt:i is whathe ishaoop isitit he abanana3.txt:hadoop iswhat he
2017-05-22 20:00:50
1005
原创 数据结构与算法分析 c++11 练习3.21 检测平衡符号
练习3.18】用下列语言编写检测平衡符号的程序a.Pascal ( begin/end, ( ), [ ], { } )。b.C语言( /* */, ( ), [ ], { })。c.解释如何打印出错信息用c++实现,思路差不多,按书上的思路,碰见平衡符号起始标准压入栈中,碰见平衡符号结束标志弹出栈,如果弹出的不匹配,中断循环提前跳出报错“不
2017-05-16 13:52:34
1835
原创 数据结构与算法分析 P86 Stack 栈的实现
链表实现Stackstack.h #pragma once#include #include struct Node;typedef struct Node *PtrToNode;typedef PtrToNode Stack;typedef int ElementType;bool IsEmpty(Stack S);Stack CreateStack();
2017-05-16 10:12:04
302
原创 数据结构与算法分析 c++11 练习3.6 JosePhus 问题(Josephus problem)
练习 3.6 JosePhus 问题(Josephus problem)是下面的游戏:N个人编号1~N,围坐成一个圆圈。从1号人开始传递一个热土豆。经过M次传递后拿着热土豆的人被清除离座,围坐的圆圈锁紧,由坐在后面的人拿起热土豆继续进行游戏。最后剩下的人获胜。因此,如果M=0和N=5,则游戏人依序被清除,5号游戏人获胜。如果M=1 和N=5,那么被清除的人的顺序是2,4,1,5.a. 编
2017-05-13 15:40:44
1341
原创 Python3.6 连接mysql 数据库,增删改查,及多线程简单运用
readme: 导入 pymysql 连接数据库,完成数据处理后的增删改查操作。导入到其他Python文件就可以直接调用。后面一个文件是处理曲线拟合和积分的然后数据和数据库交互的运用。aliyunMySQL_test.pyimport numpy as npimport pymysqlfrom scipy.optimize import leastsqfrom
2017-05-10 16:23:36
4462
原创 Python 做曲线拟合和求积分
这是一个由加油站油罐传感器测量的油罐高度数据和出油体积,根据体积和高度的倒数,用截面积来描述油罐形状,求出拟合曲线,再用标准数据,求积分来验证拟合曲线效果和误差的一个小项目。 主要的就是首先要安装Anaconda python库,然后来运用这些数学工具。###最小二乘法试验###import numpy as npimport pymysqlfrom scipy.opt
2017-05-10 16:13:19
5074
原创 数据结构与算法分析 c++11 练习3.4 3.5 给定两个已排序的表L1和L2,求交集和并集
这个小问题没怎么考虑效率,用List标准库的函数实现下吧。#include #include using namespace std; void printList(list t){ auto itr = t.begin(); while (itr!=t.end()) { cout << *itr++<<" "; } cout << endl;
2017-05-10 15:56:20
1230
原创 数据结构与算法分析 c++11 练习3.2 通过只调整链(而不是数据)来交换两个相邻的元素
练习3.2 通过只调整链(而不是数据)来交换两个相邻的元素,分别使用a. 单链表。b. 双链表。singlyList.h#pragma once#include struct ListNode { int value; ListNode * pNext;};void addListNode(ListNode * & p, int v) { if (p
2017-05-10 13:35:25
3162
原创 数据结构与算法分析 c++11 题3.1 由一个链表元素指定另一个链表对应位置的元素输出
练习 3.1 给定一个表L和另一个表P,他们包含以升序排列的整数。操作printLots(L,p)将打印L中那些由P所指定的位置上的元素。例如,如果P=1,3,4,6,那么L中位于第1个,第3个,第4个和第6个位置上的元素就被打印出来。写出过程printLots(L,P).只可使用共有型STL 容器操作。该过程的运行时间是多少?#include #include #in
2017-05-09 21:19:11
681
原创 数据结构与算法分析 c++11 List实现
在设计时,需要以下四个类:1. List 类本身,它包含连接到链表两端的链、表的大小,以及一些方法。2. Node 类,它是一个私有的内嵌类。一个节点包含数据和指向前后两个节点的两个指针,以及一些适当的构造函数。3.const_iterator 类,它抽象了位置的概念,而且是一个共有的内嵌类,该const_iterator 存储一个指向“当前”节点的指针,并提供基本迭代器操作的实现,所
2017-05-07 14:30:30
1280
原创 数据结构与算法分析 c++ P75 Vector 实现
按书中的方式,实现一下简单的Vector ,加深理解。#pragma once#include template class Vector {public : explicit Vector(int initSize = 0) : theSize(initSize),theCapacity(initSize+SPARE_CAPACITY) { } Vector(const Vec
2017-05-03 19:48:40
288
原创 数据结构与算法分析 c++11 题2.27 找K是否在N*N 矩阵中
题目: 输入是一个N*N的数字矩阵并且已读入内存,每一行均从左到右递增,每一列从上到下递增,给出一个算法决定数m是否在该矩阵中解析:从矩阵的右上角的元素开始,若m小于此元素,则向左移动到下一个元素,若m大于此元素,则向下移动,直到寻找到此元素。#include #include using namespace std;templateint searchWor
2017-05-02 21:54:56
328
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人