-
Go语言可变参数类型简单易懂
所属栏目:[语言] 日期:2021-05-29 热度:117
在C语言时代大家一般都用过 printf() 函数,从那个时候开始其实已经在感受可变参数的魅力和价值,如同C语言中的 printf() 函数,Go语言标准库中的 fmt.Println() 等函数的实现也依赖于语言的可变参数功能。 本节我们将介绍可变参数的用法。合适地使用可变参[详细]
-
延迟执行语句处理方式及资源的使用
所属栏目:[语言] 日期:2021-05-29 热度:164
多个延迟执行语句的处理顺序当有多个 defer 行为被注册时,它们会以逆序执行(类似栈,即后进先出),下面的代码是将一系列的数值打印语句按顺序延迟处理,如下所示: package main import ( fmt ) func main() { fmt.Println(defer begin) // 将defer放入[详细]
-
Go语言处理运行时需要避免的问题
所属栏目:[语言] 日期:2021-05-29 热度:181
net.Dial() 是Go语言系统包 net 即中的一个函数,一般用于创建一个 Socket 连接。 net.Dial 拥有两个返回值,即 Conn 和 error,这个函数是阻塞的,因此在 Socket 操作后,会返回 Conn 连接对象和 error,如果发生错误,error 会告知错误的类型,Conn 会返[详细]
-
Go语言宕机恢复我有小妙招
所属栏目:[语言] 日期:2021-05-29 热度:155
Recover 是一个Go语言的内建函数,可以让进入宕机流程中的 goroutine 恢复过来,recover 仅在延迟函数 defer 中有效,在正常的执行过程中,调用 recover 会返回 nil 并且没有其他任何效果,如果当前的 goroutine 陷入恐慌,调用 recover 可以捕获到 panic[详细]
-
Go语言内嵌结构体成员名字歧义的解决办法
所属栏目:[语言] 日期:2021-05-29 热度:185
嵌入结构体内部可能拥有相同的成员名,成员重名时会发生什么?下面通过例子来讲解。 package main import ( fmt ) type A struct { a int } type B struct { a int } type C struct { A B } func main() { c := C{} c.A.a = 1 fmt.Println(c) } 代码说明如[详细]
-
清除编译文件需要用到的语言
所属栏目:[语言] 日期:2021-05-29 热度:125
Go语言中go clean命令可以移除当前源码包和关联源码包里面编译生成的文件,这些文件包括以下几种: 执行go build命令时在当前目录下生成的与包名或者 Go 源码文件同名的可执行文件。在 Windows 下,则是与包名或者 Go 源码文件同名且带有.exe后缀的文件。[详细]
-
利用反射获取指针指向的元素类型的处理方式极为安全
所属栏目:[语言] 日期:2021-05-29 热度:51
Go语言程序中对指针获取反射对象时,可以通过 reflect.Elem() 方法获取这个指针指向的元素类型。这个获取过程被称为取元素,等效于对指针类型变量做了一个*操作,代码如下: package main import ( fmt reflect ) func main() { // 声明一个空结构体 type c[详细]
-
C++ inline内联函数分析大全
所属栏目:[语言] 日期:2021-05-28 热度:119
如果函数体代码比较多,需要较长的执行时间,那么函数调用机制占用的时间可以忽略;如果函数只有一两条语句,那么大部分的时间都会花费在函数调用机制上,这种时间开销就就不容忽视。 为了消除函数调用的时空开销,C++ 提供一种提高效率的方法,即在编译时[详细]
-
C++ new和delete运算符讲解
所属栏目:[语言] 日期:2021-05-28 热度:52
在C语言中,动态分配内存用 malloc() 函数,释放内存用 free() 函数。如下所示: int *p = (int*) malloc( sizeof(int) * 10 ); //分配10个int型的内存空间 free(p); //释放内存 在C++中,这两个函数仍然可以使用,但是C++又新增了两个关键字,new 和 delet[详细]
-
面向对象编程有着举足轻重的作用
所属栏目:[语言] 日期:2021-05-28 热度:150
类是一个通用的概念,C++等很多编程语言中都支持类,都可以通过类创建对象。可以将类看做是结构体的升级版,C语言的晚辈们看到了C语言的不足,尝试加以改善,继承了结构体的思想,并进行了升级,让程序员在开发或扩展大中型项目时更加容易。 因为 C++、Java[详细]
-
10分钟让你知道C++类和对象到底是什么?
所属栏目:[语言] 日期:2021-05-28 热度:134
C++ 中的类(Class)可以看做C语言中结构体(Struct)的升级版。结构体是一种构造类型,可以包含若干成员变量,每个成员变量的类型可以不同;可以通过结构体来定义结构体变量,每个变量拥有相同的性质。例如: #include stdio.h //定义结构体 Student struc[详细]
-
了解学会Python 代码优化原则
所属栏目:[语言] 日期:2021-05-28 热度:187
第一个基本原则是不要过早优化。很多人一开始写代码就奔着性能优化的目标,让正确的程序更快要比让快速的程序正确容易得多。因此,优化的前提是代码能正常工作。过早地进行优化可能会忽视对总体性能指标的把握,在得到全局结果前不要主次颠倒。 第二个基本[详细]
-
使用异步的必要性与高效性
所属栏目:[语言] 日期:2021-05-28 热度:84
操作系统可以看作是个虚拟机(VM),进程生活在操作系统创造的虚拟世界里。进程不用知道到底有多少 core 多少内存,只要进程不要索取的太过分,操作系统就假装有无限多的资源可用。 基于这个思想,线程(Thread)的个数并不受硬件限制:你的程序可以只有一[详细]
-
Python打包exe程序的高效处理方法
所属栏目:[语言] 日期:2021-05-28 热度:199
但python的运行环境复杂,编写的程序往往是借助了很多附加的功能库来实现,对简单的打包会造成一定困难。本人也是在经历了多次的打包失败和成功的经历之后,觉得pyinstaller的成功率最高,所以有必要针对pyinstaller写一篇避坑指南。 一、安装 使用python[详细]
-
什么是“类加载过程”你知道吗?
所属栏目:[语言] 日期:2021-05-28 热度:195
计算机能识别的是机器指令码,简称机器码。机器码是二进制的,计算机可以直接识别,但与人类的语言差别太大,不容易被人理解和记忆。后来,就诞生了各种高级语言,人们用高级语言编写程序,然后通过把程序解释或编译成机器码。 比如python,就是一种解释型[详细]
-
nonlocal 和 global的原理及其差异
所属栏目:[语言] 日期:2021-05-28 热度:146
副标题#e# 对变量名的赋值和引用,是两种不同的情况: 赋值:创建一个变量或者修改。 引用:检索其值。 以上两者的差别,会导致我们在函数中: 赋值一个 全局变量:等于创建一个局部变量。 自由变量:等于创建一个局部变量。 引用:正常检索其值。 我们修改[详细]
-
计算机视觉是一门高端技术
所属栏目:[语言] 日期:2021-05-28 热度:144
计算机视觉这种技术可以将静止图像或视频数据转换为一种决策或新的表示。所有这样的转换都是为了完成某种特定的目的而进行的。 输入数据可能包含一些场景信息,例如相机是搭载在一辆车上的或者雷达发现了一米之外有一个目标。一个新的表示,意思是将彩色图[详细]
-
OpenCV 的应用和使用开源许可证
所属栏目:[语言] 日期:2021-05-28 热度:99
许多计算机科学家和经验丰富的程序员多多少少都了解计算机视觉的某些方面,但是很少有人熟谙计算机视觉的每一个应用。比如: 很多人了解计算机视觉在安保行业的应用; 一些人也知道它在网页端的图像和视频处理中的应用在逐渐增加。 但很少有人知道计算机视[详细]
-
OpenCV 与IPPICV 加速的高效性
所属栏目:[语言] 日期:2021-05-28 热度:119
1999 年,Gary Bradski(加里布拉德斯基)当时在英特尔任职,怀着通过为计算机视觉和人工智能的从业者提供稳定的基础架构并以此来推动产业发展的美好愿景,他启动了 OpenCV 项目。 OpenCV 库用C语言和C++语言编写,可以在 Windows、Linux、Mac OS X 等系统[详细]
-
PyTorch 的基础入门及重要基础
所属栏目:[语言] 日期:2021-05-28 热度:192
为什么使用 Numpy?实际上 Python 本身含有列表(list)和数组(array),但对于大数据来说,这些结构是有很多不足的。 由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。例如为了保存一个简单的[1,2,3],都需要有 3 个指针和 3 个整数对象[详细]
-
两种典型的使用继承的情景情况叙述
所属栏目:[语言] 日期:2021-05-27 热度:117
派生类除了拥有基类的成员,还可以定义自己的新成员,以增强类的功能。 以下是两种典型的使用继承的场景: 1) 当你创建的新类与现有的类相似,只是多出若干成员变量或成员函数时,可以使用继承,这样不但会减少代码量,而且新类会拥有基类的所有功能。 2)[详细]
-
在派生类的构造函数中调用基类的构造函数极为重要
所属栏目:[语言] 日期:2021-05-27 热度:60
副标题#e# 前面我们说基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承。构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成为派生类的构造函数,当然更不[详细]
-
C++里面设置类成员的访问权限有何优势
所属栏目:[语言] 日期:2021-05-27 热度:117
在类的内部(定义类的代码内部),无论成员被声明为 public、protected 还是 private,都是可以互相访问的,没有访问权限的限制。 在类的外部(定义类的代码之外),只能通过对象访问成员,并且通过对象只能访问 public 属性的成员,不能访问private、prote[详细]
-
对private和public的更多阐述
所属栏目:[语言] 日期:2021-05-27 热度:160
声明为 private 的成员和声明为 public 的成员的次序任意,既可以先出现 private 部分,也可以先出现 public 部分。如果既不写 private 也不写 public,就默认为 private。 在一个类体中,private 和 public 可以分别出现多次。每个部分的有效范围到出现另[详细]
-
类的成员变量和成员函数的差异
所属栏目:[语言] 日期:2021-05-27 热度:149
类可以看做是一种数据类型,它类似于普通的数据类型,但是又有别于普通的数据类型。类这种数据类型是一个包含成员变量和成员函数的集合。 类的成员变量和普通变量一样,也有数据类型和名称,占用固定长度的内存。但是,在定义类的时候不能对成员变量赋值,[详细]