-
后端开发实践:Spring Boot项目模板
2024-01-02
60267 浏览
在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为“第0个迭代”要做的事情。但是,当项目运行了一段时间之后再来反观,我总会发现一些不足的地方,要么测试分类没有分好,要么基本的编码架子没有考虑周全。
另外,我在工作中也会接触到很多既有项目,公司内部和外部的都有,多数项目的编码实践我都是不满意的。比如,我曾经新加入一个项目的时候,前前后后请教了3位同事才把该项目在本地运行起来;又比如在另一项目中,我发现前端请求对应的Java类命名规范不统一,有被后缀为Request的,也有被后缀为Command的。
再者,工作了这么多年之后,我越来越发现基础知识以及系统性学习的重要性。诚然,技术框架的发展使得我们可以快速地实现业务功能,但是当软件出了问题之后有时却需要将各方面的知识融会贯通并在大脑里综合反应才能找到解决思路。
基于以上,我希望整理出一套公共性的项目模板出来,旨在尽量多地包含日常开发之所需,减少开发者的重复性工作以及提供一些最佳实践。对于后端开发而言,我选择了当前被行业大量使用的Spring Boot,基于此整理出了一套公共的、基础性的实践方式,在结合了自己的经验以及其他项目的优秀实践之后,总结出本文以飨开发者。
-
软件正版化工作中《使用正版软件承诺书》模板下载
2023-12-21
61344 浏览
软件正版化工作中《使用正版软件承诺书》模板下载
-
多角度的模板匹配
2024-01-02
60398 浏览
背景介绍
熟悉OpenCV的朋友肯定都知道OpenCV自带的模板匹配matchTemplate方法是不支持旋转的,也就是说当目标和模板有角度差异时匹配常常会失败,可能目标只是轻微的旋转,匹配分数就会下降很多,导致匹配精度下降甚至匹配出错。另一个方法是matchShape(形状匹配),匹配时需要轮廓分明才容易匹配成功,但无法的到匹配角度,也不方便使用。本文介绍基于matchTemplate + 旋转 + 金字塔下采样实现多角度的模板匹配,返回匹配结果(斜矩形的端点、角度、匹配得分)。
-
Numeric_Range 模板的定义:
2023-12-31
60910 浏览
template class Numeric_Iterator; // Template type declaration
// Defines a numeric range
template
class Numeric_Range
{
-
ATL":Active Template Library,活动模板库
2024-01-02
60184 浏览
这在VC编程下应该算是比较高级的话题了,它集COM和模板技术于一身,带来了极方便的组件编写方法和极高的学习门槛。可以说,进入ATL领域就算是进入了中级以上的编程领域。
-
使用迭代器模板
2023-12-31
63752 浏览
STL 定义了迭代器模板,用来帮助我们在自己的迭代器类中包含要求的类型别名。 iterator 是一个结构体模板,它定义了 5 个来自于 iterator_traits 模板的类型别名:
-
"STL":Standard Template Library,标准模板库
2024-01-02
60769 浏览
这是最早由Alexander Stepanov和Meng Lee(蛮像中国人的名字)完成,于1994年提交给ANSI/ISO 标准C++委员会并通过而成为标准C++的一部分。望文生义即可知这是一个代码库标准,不是语法标准。简单地说,STL是以C++中的模板语法为基础建立起来的一套包含基础数据结构和算法的代码库。
-
这个迭代器的模板类型定义如下:
2023-12-31
65335 浏览
// Iterator class template- it's a forward iterator
template
class Numeric_Iterator : public std::iterator < std::forward_iterator_tag, T >
{
-
my_swap() 模板实例的具体情况。假设一个程序包含下面的代码:
2023-12-31
60889 浏览
std::vector words {"one", "two", "three"};
my_swap(std::begin(words), std::begin(words)+1); //Swap first two elements
当编译器遇到 my_swap() 调用时,它会生成一个基于调用参数的函数模板实例。模板类型的迭代器是 iterator。在 my_swap() 模板的主体中,编译器不得不处理 tmp 的定义,编译器知道模板的类型参数是 iterator,因此在向模板添加了这个类型后,tmp 的定义变为:
-
C++的函数模板
2023-12-26
61889 浏览
一、简介
在C++中,数据的类型也可以通过参数来传递,在函数定义时可以不指明具体的数据类型,当发生函数调用时,编译器可以根据传入的实参自动推断数据类型。这就是类型的参数化。
函数模板是一种特殊的函数,可以使用不同的类型进行调用,对于功能相同的函数,不需要重复编写代码,并且函数模板与普通函数看起来很类似,区别就是类型可以被参数化。