- 博客(127)
- 资源 (1)
- 收藏
- 关注
原创 Halcon基于灰度值的模板匹配
然后将检测图像与模板图像进行粗匹配,在检测图像与模板图像中任选一点,采取隔点拽索的方式计算二者灰度的相似性,这样粗匹配一遍得到粗相关点;由于这种方法是利用模板图像的所有灰度值进行匹配,但在光照发生变化的情况下灰度值会产生强烈的变化,因此该方法不能适应光照发生变化的情况,也不能用于多通道图像的匹配,一般只用于简单图像的匹配,如图所示。基于灰度值的模板匹配是最经典的模板匹配算法,也是最早提出来的模板匹配算法。这种方法适用于目标图像光照比较稳定的情况,多数情况下还是优先考虑基于相关性的匹配和基于形状的匹配。
2024-09-03 06:46:39 481 38
原创 图像二值化方法介绍
本文介绍超过十种以上的基于全局阈值的图像二值化方法,其中最大值为255表示白色, 0 表示黑色,H表示图像直方图。该方法假设直方图是一个双峰模式的直方图,对直方图使用平滑滤波迭代多次,知道只剩下两个最大的峰J与K则阈值为T=(J+K)/2, 如果图像形成直方图只会有一个单峰或者有大片平坦区域的时候,该方法不太适合。Otsu主要是图像直方图进行阈值分类,从0~255之间,然后求它们的最小内方差对应直方图灰度索引值作为阈值实现图像二值化,OpenCV中已经实现,而且是OpenCV2.x全局阈值二值化方法。
2024-08-13 08:21:16 889 23
原创 C++要求或禁止在堆中产生对象
把operator new声明为private就足够了,但是把operator new声明为private,而把iperator delete声明为public,这样做有些怪异,所以除非有绝对需要的原因,否则不要把它们分开声明,最好在类的一个部分里声明它们。当调用onHeap时,它的栈框架(stack frame)(也就是它的activation record)被放在程序栈的顶端,因为栈在结构上是向下扩展的(趋向低地址),onTheStack的地址肯定比任何栈中的变量或对象的地址小。这种类几乎都是抽象类。
2024-08-12 07:46:02 997 16
原创 C++限制某个类所能产生的对象数量
你很痴迷于对象,但是有时你又想束缚住你的疯狂。例如你在系统中只有一台打印机,所以你想用某种方式把打印机对象数目限定为一个。或者你仅仅取得16个可分发出去的文件描述符,所以应该确保文件描述符对象存在的数目不能超过16个。你如何能够做到这些呢?如何去限制对象的数量呢? 如果这是一个用数学归纳法进行的证明,你会从n=1开始证明,然后从此出发推导出其它证明。幸运的是这既不是一个证明也不是一个归纳。而从n=0开始更具有启发性,所以我们就从这里开始。你如何能够彻底阻止对象实例化(instantiate)呢?允许建
2024-08-12 07:44:28 553 1
原创 C++理解虚拟函数、多继承、虚基类和RTTI
但是如果你过分喜欢声明虚函数为内联函数(参见Effective C++条款33),如果在类中的所有虚函数都内声明为内联函数,启发式算法就会失败,大多数基于启发式算法的编译器会在每个使用它的object文件中生成一个类的vtbl。实际上虚函数不能是内联的。这些实现的细节当然是由编译器来决定的,并且不同的编译器有不同的方法实现语言的特性。(一些编译器使用链表来代替数组,但是基本方法是一样的)在程序中的每个类只要声明了虚函数或继承了虚函数,它就有自己的vtbl,并且类中vtbl的项目是指向虚函数实现体的指针。
2024-08-11 07:57:51 618 15
原创 C++将构造函数和非成员函数虚拟化lzp
然而,既然一个函数能够构造出不同类型的新对象是可以理解的,那么同样也存在这样的非成员函数,可以根据参数的不同动态类型而其行为特性也不同。但是输出操作符是operator
2024-08-11 07:56:45 475
原创 C++变更程序库
iostream和stdio之间性能的对比不过是一个例子,这并不重要,重要的是具有相同功能的不同的程序库在性能上采取不同的权衡措施,所以一旦你找到软件的瓶颈(通过进行profile 参见条款M16),你应该知道是否可能通过替换程序库来消除瓶颈。另外,使用stdio的程序的尺寸比与相应的使用iostream的程序要小(有时是小得多)。程序库的设计就是一个折衷的过程。理想的程序库应该是短小的、快速的、强大的、灵活的、可扩展的、直观的、普遍适用的、具有良好的支持、没有使用约束、没有错误的。
2024-08-10 08:56:38 554 7
原创 C++理解虚拟函数、多继承、虚基类和RTTI所需的代价
但是如果你过分喜欢声明虚函数为内联函数(参见Effective C++条款33),如果在类中的所有虚函数都内声明为内联函数,启发式算法就会失败,大多数基于启发式算法的编译器会在每个使用它的object文件中生成一个类的vtbl。实际上虚函数不能是内联的。这些实现的细节当然是由编译器来决定的,并且不同的编译器有不同的方法实现语言的特性。(一些编译器使用链表来代替数组,但是基本方法是一样的)在程序中的每个类只要声明了虚函数或继承了虚函数,它就有自己的vtbl,并且类中vtbl的项目是指向虚函数实现体的指针。
2024-08-10 08:55:53 344 1
原创 C++用运算符的赋值形式(op=)取代其单独形式(op)
确保operator的赋值形式(assignment version)(例如operator+=)与一个operator的单独形式(stand-alone)(例如 operator+ )之间存在正常的关系,一种好方法是后者(指operator+ 译者注)根据前者(指operator+= 译者注)来实现(参见条款M6)。这里谈论的命名对象、未命名对象和编译优化是很有趣的,但是主要的一点是operator的赋值形式(operator+=)比单独形式(operator+)效率更高。// 参见下面的讨论。
2024-08-09 08:31:42 552 9
原创 C++通过重载避免隐式类型转换
同样如果你正在使用numerical(数字)类,例如complex(参见条款M35),你想让int和double这样的类型可以使用在numerical对象的任何地方。如果我们想要把UPInt和int对象相加,通过声明如下几个函数达到这个目的,每一个函数有不同的参数类型集。让编译器完成这种类型转换是确实是很方便,但是建立临时对象进行类型转换工作是有开销的,而我们不想承担这种开销。上面只给出了三种重载函数,唯一漏掉的是带有两个int参数的operator,所以我们想把它加上。//生成的临时对象。
2024-08-09 08:30:35 341 2
原创 C++协助完成返回值优化
返回constructor argument而不出现局部对象,这种方法还会给你带来很多开销,因为你仍旧必须为在函数内临时对象的构造和释放而付出代价,你仍旧必须为函数返回对象的构造和释放而付出代价。从效率的观点来看,你不应该关心函数返回的对象,你仅仅应该关心对象的开销。你所应该关心的是把你的努力引导到寻找减少返回对象的开销上来,而不是去消除对象本身(我们现在认识到这种寻求是无用的)。一个返回对象的函数很难有较高的效率,因为传值返回会导致调用对象内的构造和析构函数(参见条款M19),这种调用是不能避免的。
2024-08-08 06:15:56 850 12
原创 C++通过重载避免隐式类型转换
同样如果你正在使用numerical(数字)类,例如complex(参见条款M35),你想让int和double这样的类型可以使用在numerical对象的任何地方。让我们回退一步,认识到我们的目的不是真的要进行类型转换,而是用UPint和int做为参数调用operator+。如果我们想要把UPInt和int对象相加,通过声明如下几个函数达到这个目的,每一个函数有不同的参数类型集。让编译器完成这种类型转换是确实是很方便,但是建立临时对象进行类型转换工作是有开销的,而我们不想承担这种开销。
2024-08-08 06:15:16 285 2
原创 C++理解临时对象的来源
假设建立一个临时对象,那么临时对象将被传递到upeercasify中,其会修改这个临时对象,把它的字符改成大写。然而概念和现实之间又一个黑暗地带,叫做优化,有时你能以某种方法编写返回对象的函数,以允许你的编译器优化临时对象。综上所述,临时对象是有开销的,所以你应该尽可能地去除它们,然而更重要的是训练自己寻找可能建立临时对象的地方。这样的类型转换很方便(尽管很危险-参见条款M5),但是从效率的观点来看,临时string对象的构造和释放是不必要的开销。建立临时对象的第二种环境是函数返回对象时。
2024-08-07 07:48:17 722 13
原创 C++协助完成返回值优化
返回constructor argument而不出现局部对象,这种方法还会给你带来很多开销,因为你仍旧必须为在函数内临时对象的构造和释放而付出代价,你仍旧必须为函数返回对象的构造和释放而付出代价。从效率的观点来看,你不应该关心函数返回的对象,你仅仅应该关心对象的开销。你所应该关心的是把你的努力引导到寻找减少返回对象的开销上来,而不是去消除对象本身(我们现在认识到这种寻求是无用的)。一个返回对象的函数很难有较高的效率,因为传值返回会导致调用对象内的构造和析构函数(参见条款M19),这种调用是不能避免的。
2024-08-07 07:47:41 439 1
原创 C++牢记80-6.2 20准则(80-6.3 20 rule)
一方面80-20准则表示大多数时间你能够编写性能一般的代码,因为80%的时间里这些代码的效率不会影响到整个系统的性能,这会减少一些你的工作压力。如果用缺乏代表性的数据profile你的程序,你就不能抱怨profiler导致你优化程序的那80%的部分,从而不曾对程序通常的性能有什么影响。通过经验、直觉、算命纸牌、显灵板、传闻或者其它更荒唐的东西,一个又一个程序员一本正经地宣称程序的性能问题已被找到,因为网络的延迟,不正确的内存分配,编译器没有进行足够的优化或者一些笨蛋主管拒绝在关键的循环里使用汇编语句。
2024-08-06 07:57:54 550 13
原创 C++考虑使用lazy evaluation(懒惰计算法)
以上这四个例子展示了lazy evaluation在各个领域都是有用的:能避免不需要的对象拷贝,通过使用operator[]区分出读操作,避免不需要的数据库读取操作,避免不需要的数字操作。实际上,如果你的计算都是重要的,lazy evaluation可能会减慢速度并增加内存的使用,因为除了进行所有的计算以外,你还必须维护数据结构让lazy evaluation尽可能地在第一时间运行。虽然好程序员不会进行不需要的计算,但是在维护中程序员修改了程序的路径,使得以前有用的计算变得没有了作用,这种情况是常见的。
2024-08-06 07:56:43 938 1
原创 C++审慎使用异常规格(exception specifications)
一个函数调用了另一个函数,并且后者可能抛出一个违反前者异常规格的异常,(A函数调用B函数,但因为B函数可能抛出一个不在A函数异常规格之内的异常,所以这个函数调用就违反了A函数的异常规格 译者注)编译器不对此种情况进行检测,并且语言标准也禁止编译器拒绝这种调用方式(尽管可以显示警告信息)。因为你的编译器允许你调用一个函数,其抛出的异常与发出调用的函数的异常规格不一致,并且这样的调用可能导致你的程序执行被终止,所以在编写软件时应该采取措施把这种不一致减小到最少。综上所述,异常规格是一个应被审慎使用的特性。
2024-08-05 06:22:00 1079 17
原创 C++了解异常处理的系统开销
如果你知道你程序的任何部分都不使用try,throw或catch,并且你也知道所连接的程序库也没有使用try,throw或catch,你就可以采用不支持异常处理的方法进行编译,这可以缩小程序的尺寸和提高速度,否则你就得为一个不需要的特性而付出代价。如果说支持异常对于大多数编译器来说是一个较新的特性,如果说不同的编译器的异常方法也不同,那么我如何能说程序的尺寸将增大5%-10%,它的速度也同比例减慢,而且如果有大量的异常被抛出,程序运行速度会呈数量级的减慢呢?为了减少开销,你应该避免使用无用的try块。
2024-08-05 06:20:45 795 1
原创 C++了解异常处理的系统开销
如果你知道你程序的任何部分都不使用try,throw或catch,并且你也知道所连接的程序库也没有使用try,throw或catch,你就可以采用不支持异常处理的方法进行编译,这可以缩小程序的尺寸和提高速度,否则你就得为一个不需要的特性而付出代价。如果说支持异常对于大多数编译器来说是一个较新的特性,如果说不同的编译器的异常方法也不同,那么我如何能说程序的尺寸将增大5%-10%,它的速度也同比例减慢,而且如果有大量的异常被抛出,程序运行速度会呈数量级的减慢呢?为了减少开销,你应该避免使用无用的try块。
2024-08-04 07:51:56 541 9
原创 C++审慎使用异常规格(exception specifications)
一个函数调用了另一个函数,并且后者可能抛出一个违反前者异常规格的异常,(A函数调用B函数,但因为B函数可能抛出一个不在A函数异常规格之内的异常,所以这个函数调用就违反了A函数的异常规格 译者注)编译器不对此种情况进行检测,并且语言标准也禁止编译器拒绝这种调用方式(尽管可以显示警告信息)。因为你的编译器允许你调用一个函数,其抛出的异常与发出调用的函数的异常规格不一致,并且这样的调用可能导致你的程序执行被终止,所以在编写软件时应该采取措施把这种不一致减小到最少。综上所述,异常规格是一个应被审慎使用的特性。
2024-08-04 07:50:39 704
原创 C++理解“抛出一个异常”与“传递一个参数”或“调用一个虚函数”间的差异
不论通过传值捕获异常还是通过引用捕获(不能通过指针捕获这个异常,因为类型不匹配)都将进行lcalWidget的拷贝操作,也就说传递到catch子句中的是localWidget的拷贝。如果把localWidget本身(而不是它的拷贝)传递给catch子句,这个子句接收到的只是一个被析构了的Widget,一个Widget的“尸体”。(因为这样的代码在C++里通常是不合法的。这两个catch块的差别在于第一个catch块中重新抛出的是当前捕获的异常,而第二个catch块中重新抛出的是当前捕获异常的一个新的拷贝。
2024-08-03 08:17:40 416 10
原创 C++通过引用(reference)捕获异常
这样的sliced对象实际上是一个基类对象:它们没有派生类的数据成员,而且当本准备调用它们的虚拟函数时,系统解析后调用的却是基类对象的函数。四个标准的异常――bad_alloc(当operator new(参见条款M8)不能分配足够的内存时,被抛出),bad_cast(当dynamic_cast针对一个引用(reference)操作失败时,被抛出),bad_typeid(当dynamic_cast对空指针进行操作时,被抛出)和bad_exception(用于unexpected异常;能够捕获标准异常类型;
2024-08-03 08:17:06 485
原创 C++理解“抛出一个异常”与“传递一个参数”或“调用一个虚函数”间的差异
不论通过传值捕获异常还是通过引用捕获(不能通过指针捕获这个异常,因为类型不匹配)都将进行lcalWidget的拷贝操作,也就说传递到catch子句中的是localWidget的拷贝。如果把localWidget本身(而不是它的拷贝)传递给catch子句,这个子句接收到的只是一个被析构了的Widget,一个Widget的“尸体”。(因为这样的代码在C++里通常是不合法的。这两个catch块的差别在于第一个catch块中重新抛出的是当前捕获的异常,而第二个catch块中重新抛出的是当前捕获异常的一个新的拷贝。
2024-08-02 07:37:45 523 10
原创 C++禁止异常信息(exceptions)传递到析构函数外
程序没有记录下释放对象的信息,这是不幸的,甚至是一个大麻烦。综上所述,我们知道禁止异常传递到析构函数外有两个原因,第一能够在异常转递的堆栈辗转开解(stack-unwinding)的过程中,防止terminate被调用。catch表面上好像没有做任何事情,这是一个假象,实际上它阻止了任何从logDestruction抛出的异常被传递到session析构函数的外面。如果在catch中调用operator<<时导致一个异常被抛出,我们就又遇到了老问题,一个异常被转递到Session析构函数的外面。
2024-08-02 07:36:20 318 2
原创 C++使用析构函数防止资源泄漏
(我们至少必须加上拷贝构造函数,赋值operator和将在条款M28讲述的pointer-emulating函数),但是它背后所蕴含的原理应该是清楚的:用auto_ptr对象代替raw指针,你将不再为堆对象不能被删除而担心,即使在抛出异常时,对象也能被及时删除。更重要的是你必须写双份清除代码,一个为正常的运行准备,一个为异常发生时准备。隐藏在auto_ptr后的思想是:用一个对象存储需要被自动释放的资源,然后依靠对象的析构函数来释放资源,这种思想不只是可以运用在指针上,还能用在其它资源的分配和释放上。
2024-08-01 08:04:53 665 6
原创 C++理解各种不同含义的new和delete
这个操作符就象sizeof一样是语言内置的,你不能改变它的含义,它的功能总是一样的。把operator new 返回的未经处理的指针传递给一个对象是new操作符的工作。new操作符调用一个函数来完成必需的内存分配,你能够重写或重载这个函数来改变它的行为。它生成的代码或多或少与下面的代码相似(更多的细节见Effective C++条款8和条款10,还有我的文章Counting object里的注释。比如说new操作符(new operator)和new操作(operator new)的区别。
2024-08-01 08:01:40 459 1
原创 C++自增(increment)、自减(decrement)操作符前缀形式与后缀形式的区别
这个函数必须建立一个临时对象以做为它的返回值,(参见条款M19),上述实现代码建立了一个显示的临时对象(oldValue),这个临时对象必须被构造并在最后被析构。由此得出一个令人惊讶的结论,如果仅为了提高代码效率,UPInt的调用者应该尽量使用前缀increment,少用后缀increment,除非确实需要使用后缀increment。然而有一个句法上的问题,重载函数间的区别决定于它们的参数类型上的差异,但是不论是increment或decrement的前缀还是后缀都只有一个参数。
2024-07-31 09:01:29 566 7
原创 C++运算符“&&”与“||”
首先当函数被调用时,需要运算其所有参数,所以调用函数functions operator&& 和 operator||时,两个参数都需要计算,换言之,没有采用短路计算法。一个包含逗号的表达式首先计算逗号左边的表达式,然后计算逗号右边的表达式;在遇到&&, ||, 和 ,时,找到一个好理由是困难的,因为无论你怎么努力,也不能让它们的行为特性与所期望的一样。如果你写一个非成员函数operator,你不能保证左边的表达式先于右边的表达式计算,因为函数(operator)调用时两个表达式做为参数被传递出去。
2024-07-31 09:00:14 618 1
原创 C++谨慎定义类型转换函数
Proxy对象能帮你更好地控制软件的在某些方面的行为,否则你就不能控制这些行为,比如在上面的情况里,这种行为是指隐式类型转换,所以它值得你去学习和使用。因为它把这个调用看成用Array<int>参数(对于a)和int(对于b[i])参数调用operator==函数,然而没有operator==函数是这样的参数类型,我们的编译器注意到它能通过调用Array<int>构造函数能转换int类型到Array<int>类型,这个构造函数只有一个int类型的参数。幸运的是,有一个方法可以让你鱼肉与熊掌兼得。
2024-07-30 10:02:07 407 9
原创 C++避免无用的缺省构造函数
例如标准的vector模板(生成一个类似于可扩展数组的类)对它的类型参数没有必须有缺省构造函数的要求。在一些公司里,所有的设备都必须标有一个公司ID号码,所以在建立对象以模型化一个设备时,不提供一个合适的ID号码,所建立的对象就根本没有意义。在一个完美的世界里,无需任何数据即可建立对象的类可以包含缺省构造函数,而需要数据来建立对象的类则不能包含缺省构造函数。因为这些强加于没有缺省构造函数的类上的种种限制,一些人认为所有的类都应该有缺省构造函数,即使缺省构造函数没有足够的数据来完整初始化一个对象。
2024-07-30 10:00:26 235 1
原创 C++避免无用的缺省构造函数
例如标准的vector模板(生成一个类似于可扩展数组的类)对它的类型参数没有必须有缺省构造函数的要求。在一些公司里,所有的设备都必须标有一个公司ID号码,所以在建立对象以模型化一个设备时,不提供一个合适的ID号码,所建立的对象就根本没有意义。在一个完美的世界里,无需任何数据即可建立对象的类可以包含缺省构造函数,而需要数据来建立对象的类则不能包含缺省构造函数。因为这些强加于没有缺省构造函数的类上的种种限制,一些人认为所有的类都应该有缺省构造函数,即使缺省构造函数没有足够的数据来完整初始化一个对象。
2024-07-29 07:17:23 1021 9
原创 不要对数组使用多态
如果如此的话,printBSTArray函数生成的指针算法将是错误的,没有人知道如果用BalancedBST数组来执行printBSTArray函数将会发生什么样的后果。这里的array[I]只是一个指针算法的缩写:它所代表的是*(array)。它们的间隔是i*sizeof(一个在数组里的对象),因为在array数组[0]到[I]间有I个对象。参数array被声明为BST类型,所以array数组中每一个元素都是BST类型,因此每个元素与数组起始地址的间隔是i*sizeof(BST)。// 还会运行正常么?
2024-07-29 07:14:59 316 2
原创 C++风格的类型转换
在这些类型转换中存在着巨大的不同,例如把一个指向const对象的指针(pointer-to-const-object)转换成指向非const对象的指针(pointer-to-non-const-object)(即一个仅仅去除const的类型转换),把一个指向基类的指针转换成指向子类的指针(即完全改变对象类型)。这个含义被编译器所约束。如果你使用的编译器缺乏对新的类型转换方式的支持,你可以用传统的类型转换方法代替static_cast, const_cast, 以及reinterpret_cast。
2024-07-28 10:23:44 373 11
原创 C++指针与引用的区别
因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。总的来说,在以下情况下你应该使用指针,一是你考虑到存在不指向任何对象的可能(在这种情况下,你能够设置指针为空),二是你需要能够在不同的时刻指向不同的对象(在这种情况下,你能改变指针的指向)。当你知道你必须指向一个对象并且不想改变其指向时,或者在重载操作符并为防止不必要的语义误解时,你不应该使用指针。因为引用肯定会指向一个对象,在C++里,引用应被初始化。
2024-07-28 10:19:13 379 1
原创 ChatGPT 中文指南,ChatGPT 中文调教指南,指令指南,应用开发指南,精选资源清单
以下是 ChatGPT 为大家做的自我介绍:你好!我是ChatGPT,一个由OpenAI开发的大型语言模型,基于GPT-4架构。我的任务是通过自然语言处理技术,与用户进行交流并提供帮助。我可以回答问题、提供建议、进行简单对话等。我的知识截止于2021年9月,所以关于那之后的信息可能无法为您提供准确的答案。请随时向我提问,我会尽我所能帮助您。
2024-04-13 22:03:34 1153 31
原创 ChatGPT API和llm的GUI。支持代理,基于文件的QA, GPT微调和web搜索查询
一个浏览器窗口将会自动打开,此时您将可以使用。与ChatGPT或其他模型进行对话。然后,在项目文件夹中复制一份。加载Prompt模板。
2024-04-13 21:50:15 1105 2
原创 ChatGLM2-6B_ An Open Bilingual Chat LLM _ 开源双语对话语言模型
更强大的性能:基于 ChatGLM 初代模型的开发经验,我们全面升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 [GLM]的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,评测结果显示,相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同尺寸开源模型中具有较强的竞争力。更长的上下文。
2024-04-12 22:02:13 1738 16
原创 基于可变形卷积的大规模视觉基础模型的探索
本模型包括大规模视觉基础模型"InternImage",预训练算法"M3I-Pretraining",通用解码器"Uni-Perceiver"系列,以及自动驾驶感知通用编码器"BEVFormer"系列。
2024-04-12 21:49:26 511 2
原创 基于模型预测算法的含储能微网双层能量管理模型
代码主要做的是一个微网双层优化调度模型,微网聚合单元包括风电、光伏、储能以及超级电容器,在微网的运行成本层面考虑了电池的退化成本,对其全寿命周期进行建模,并转换为实时相关的短期成本,采用双层调度模型,上层为EMS系统最小化总运行成本,下层为EMS消除预测误差引起的波动最小,更加创新,而且求解的效果更好。
2024-04-11 23:10:54 501 15
Golang_Gognarkcrypto提供BN BLS12 BLS24和BW6曲线上的椭圆曲线和基于配对的加密。它还.zip
2024-05-26
Golang_Gogroupache是一个缓存和缓存填充库,在许多情况下用作memcached的替代品.zip
2024-05-26
Golang_GoGitness是一个开源开发者平台,具有源代码控制管理、持续集成和持续交付功能.zip
2024-05-26
Golang_Gogithubcomcontainers repos中共享公共文件的位置.zip
2024-05-26
Golang_Gogitlfs自定义传输适配器,它简单地使用一个文件夹作为远程LFS媒体存储,例如共享NAS文件夹.zip
2024-05-26
Golang_GoGithub pull request resource for Concourse.zip
2024-05-26
Golang_GoCursusDB是一个开源的分布式内存持久化面向文档的数据库系统,具有实时功能.zip
2024-05-26
Golang_GoConsul是一种分布式高可用性和数据中心感知的解决方案,用于跨动态分布式基础设施连接和配置应用程序.zip
2024-05-26
Golang_GoCoroot是一个开源APM可观察性工具,是DataDog和NewRelic的替代品,由eBPF提供.zip
2024-05-26
C#迈德威视海康威视视觉框架csharp
2024-08-17
Golang_GoKubergrunt是一个独立的二进制文件,包含一系列命令,用于填补Terraform Helm和K.zip
2024-05-26
Golang_GoKaytu CLI通过分析历史使用情况和提供量身定制的建议(如更改实例大小)来提高云工作负载的效率,.zip
2024-05-26
Golang_GoHyperledger Fabric是用于开发解决方案和应用程序的企业级许可分布式账本框架,其模块化.zip
2024-05-26
Golang_GoGithooks perrepo和共享的Git钩子带有版本控制和自动更新Star(如果你使用它的话).zip
2024-05-26
Golang_Goflyscraper是一个命令行网页抓取工具,专为那些没有高级编程技能.zip
2024-05-26
Golang_Godnsx是一个快速的多用途DNS工具包,允许使用用户提供的解析器列表运行您选择的多个DNS查询.zip
2024-05-26
Golang_GoDapr是一个可移植的事件驱动运行时,用于跨云和边缘构建分布式应用程序.zip
2024-05-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人