-
Python schedule任务调度及其使用方式
所属栏目:[语言] 日期:2021-05-27 热度:100
scheduler 类常用的构造方法如下: scheduler(timefunc=time.monotonic, delayfunc=time.sleep) 可以向该构造方法中传入 2 个参数(当然也可以不提供,因为都有默认值),分别表示的含义如下: timefunc:指定生成时间戳的函数,默认使用 time.monotonic 来[详细]
-
Python Timer定时器:控制函数在规定时间实施
所属栏目:[语言] 日期:2021-05-27 热度:118
from threading import Timer def hello(): print(hello, world) # 指定10秒后执行hello函数 t = Timer(10.0, hello) t.start() 上面程序使用 Timer 控制 10s 后执行 hello 函数。 需要说明的是,Timer 只能控制函数在指定时间内执行一次,如果要使用 Time[详细]
-
逻辑运算的结果与优先级分析
所属栏目:[语言] 日期:2021-05-27 热度:157
在编程中,我们一般将零值称为假,将非零值称为真。逻辑运算的结果也只有真和假,真对应的值为 1,假对应的值为 0。1) 与运算()参与运算的两个表达式都为真时,结果才为真,否则为假。例如: 50 5为真,0为假,相与的结果为假,也就是 0。 (50) (42) 50 的[详细]
-
C语言三大编程结构汇总
所属栏目:[语言] 日期:2021-05-27 热度:62
C语言中常用的编程结构有三种(其它编程语言也是如此),它们分别是: 顺序结构:代码从前往后依次执行,没有任何拐弯抹角,不跳过任何一条语句,所有的语句都会被执行到。 选择结构:也叫分支结构。代码会被分成多个部分,程序会根据特定条件(某个表达式[详细]
-
Go语言宕机恢复我有小妙招
所属栏目:[语言] 日期:2021-05-27 热度:153
Recover 是一个Go语言的内建函数,可以让进入宕机流程中的 goroutine 恢复过来,recover 仅在延迟函数 defer 中有效,在正常的执行过程中,调用 recover 会返回 nil 并且没有其他任何效果,如果当前的 goroutine 陷入恐慌,调用 recover 可以捕获到 panic[详细]
-
Go语言处理运行时需要避免的问题
所属栏目:[语言] 日期:2021-05-27 热度:107
net.Dial() 是Go语言系统包 net 即中的一个函数,一般用于创建一个 Socket 连接。 net.Dial 拥有两个返回值,即 Conn 和 error,这个函数是阻塞的,因此在 Socket 操作后,会返回 Conn 连接对象和 error,如果发生错误,error 会告知错误的类型,Conn 会返[详细]
-
延迟执行语句处理方式及资源的使用
所属栏目:[语言] 日期:2021-05-27 热度:77
多个延迟执行语句的处理顺序当有多个 defer 行为被注册时,它们会以逆序执行(类似栈,即后进先出),下面的代码是将一系列的数值打印语句按顺序延迟处理,如下所示: package main import ( fmt ) func main() { fmt.Println(defer begin) // 将defer放入[详细]
-
Go语言可变参数类型简单易懂
所属栏目:[语言] 日期:2021-05-27 热度:109
在C语言时代大家一般都用过 printf() 函数,从那个时候开始其实已经在感受可变参数的魅力和价值,如同C语言中的 printf() 函数,Go语言标准库中的 fmt.Println() 等函数的实现也依赖于语言的可变参数功能。 本节我们将介绍可变参数的用法。合适地使用可变参[详细]
-
OpenCV库的一般使用方式
所属栏目:[语言] 日期:2021-05-27 热度:117
为了用 C++ 开发一个 OpenCV 应用,需要在代码中: 包含 OpenCV 的头文件定义; 链接 OpenCV 库(二进制文件),以获取最终的可执行文件; OpenCV 头文件位于OPENCV_BUILDinstallincludeopencv2目录中,此处对于每个模块都有一个文件(*.hpp)。用 #incl[详细]
-
场景信息可以协助计算机视觉
所属栏目:[语言] 日期:2021-05-27 热度:169
考虑这样一个例子,一个移动机器人需要在一栋建筑中找到并且拿起一个订书机。机器人就可能用到这样的事实:桌子通常放在办公室里,而订书机通常收纳在桌子里。这也同样给出了一个关于尺寸的推断:订书机的大小一定可以被桌子所收纳。 更进一步,这还可以帮[详细]
-
C语言提供了很多功能:函数的概念
所属栏目:[语言] 日期:2021-05-27 热度:90
先来看第 4 行代码,这行代码会在显示器上输出C语言中文网。前面我们已经讲过,puts 后面要带( ),字符串也要放在( )中。 在C语言中,有的语句使用时不能带括号,有的语句必须带括号。带括号的称为函数(Function)。 C语言提供了很多功能,例如输入输出、[详细]
-
stdio.h 和 stdlib.h 是最常用的两个实例
所属栏目:[语言] 日期:2021-05-27 热度:159
还有最后一个问题,示例中第1行的#include stdio.h是什么意思呢? C语言开发者们编写了很多常用函数,并分门别类的放在了不同的文件,这些文件就称为头文件(header file)。每个头文件中都包含了若干个功能类似的函数,调用某个函数时,要引入对应的头文件[详细]
-
typedef 和 #define 的差异
所属栏目:[语言] 日期:2021-05-27 热度:161
typedef 在表现上有时候类似于 #define,但它和宏替换之间存在一个关键性的区别。正确思考这个问题的方法就是把 typedef 看成一种彻底的封装类型,声明之后不能再往里面增加别的东西。 1) 可以使用其他类型说明符对宏类型名进行扩展,但对 typedef 所定义的[详细]
-
C语言const的用法与定义剖析
所属栏目:[语言] 日期:2021-05-27 热度:151
有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定。例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大[详细]
-
LEGB规则是编程语言里必不可少的
所属栏目:[语言] 日期:2021-05-27 热度:109
四个作用域遵循LEGB规则,让我们用一个例子来说明。 importbuiltins builtins.b=builtins g=global defouter(o1,o2=o2): e=enclose definner(i1,i2=i2): print(i1,i2,o1,o2,e,g,b) returninner fun=outer(o1) fun(i1) 其输出为 i1 i2 o1 o2 enclose global[详细]
-
Python变量定义的时间和空间及其作用域的重要性
所属栏目:[语言] 日期:2021-05-27 热度:111
为啥变量要有作用域呢? 我们在Python里遇到的内置、局部、全局及自由变量,就是说变量的作用域。 语言区分作用域,是为了复用变量名。引入作用域,相当于给变量划分了各自的隔离区,在不同隔离区里,查找变量变得很容易。 正是因为有了作用域,我们在函数[详细]
-
信息量大且结构便利的日志调试和跟踪应用程序实践的理想方式
所属栏目:[语言] 日期:2021-05-27 热度:178
关于Python日志记录库,大部分开发人员都善于解释如何设置一个记录系统用于一个Python脚本。但是,几乎找不到如何设置Python日志记录库以在整个应用程序范围内使用,以及如何在所有项目模块中舒适地正确集成和共享日志记录信息的解释器。 在本文中,我将分[详细]
-
java程序调用c++代码是你需要掌握的
所属栏目:[语言] 日期:2021-05-27 热度:175
首先定义一个包含了native方法的类如下,之后我们要使用这个类中的native方法通过jni调用c++编写成的动态链接库中的方法: publicclassJniTest{ static{ System.loadLibrary(MyNativeDll); } publicstaticnativevoidcallCppMethod(); publicstaticvoidmain[详细]
-
并发问题原因分析及解决
所属栏目:[语言] 日期:2021-05-26 热度:201
Unsafe.compareAndSwapXXX 实现CAS更改 state 和 队列指针 内部依赖CPU提供的原子指令 可见性与有序性 volatile 修饰 state 与 队列指针 (prev/next/head/tail) 线程阻塞与唤醒 Unsafe.park Unsafe.parkNanos Unsafe.unpark Unsafe类是在sun.misc包下,[详细]
-
Python打包exe程序的高效处理方法
所属栏目:[语言] 日期:2021-05-26 热度:148
但python的运行环境复杂,编写的程序往往是借助了很多附加的功能库来实现,对简单的打包会造成一定困难。本人也是在经历了多次的打包失败和成功的经历之后,觉得pyinstaller的成功率最高,所以有必要针对pyinstaller写一篇避坑指南。 一、安装 使用python[详细]
-
什么是“类加载过程”你知道吗?
所属栏目:[语言] 日期:2021-05-26 热度:120
计算机能识别的是机器指令码,简称机器码。机器码是二进制的,计算机可以直接识别,但与人类的语言差别太大,不容易被人理解和记忆。后来,就诞生了各种高级语言,人们用高级语言编写程序,然后通过把程序解释或编译成机器码。 比如python,就是一种解释型[详细]
-
nonlocal 和 global的原理及其差异
所属栏目:[语言] 日期:2021-05-26 热度:112
副标题#e# 对变量名的赋值和引用,是两种不同的情况: 赋值:创建一个变量或者修改。 引用:检索其值。 以上两者的差别,会导致我们在函数中: 赋值一个 全局变量:等于创建一个局部变量。 自由变量:等于创建一个局部变量。 引用:正常检索其值。 我们修改[详细]
-
锁的使用至关重要
所属栏目:[语言] 日期:2021-05-26 热度:161
副标题#e# 独占锁的实现,拥有上面列举的除读写锁之外的所有特性,使用比较简单 classX{ //创建独占锁实例 privatefinalReentrantLocklock=newReentrantLock(); //... publicvoidm(){ lock.lock();//blockuntilconditionholds try{ //...methodbody }finall[详细]
-
Lock特点性能完美分析解读
所属栏目:[语言] 日期:2021-05-26 热度:139
像synchronized和ReentrantLock都是可重入锁,可重入性表明了锁的分配机制是基于线程的分配,而不是基于方法调用的分配。 举个简单的例子,当一个线程已经获取到锁,当后续再获取同一个锁,直接获取成功。但获取锁和释放锁必须要成对出现。 可响应中断 当[详细]
-
Semaphore 数据结构分解详解
所属栏目:[语言] 日期:2021-05-26 热度:96
副标题#e# //Go语言中暴露的semaphore实现 //具体的用法是提供sleep和wakeup原语 //以使其能够在其它同步原语中的竞争情况下使用 //因此这里的semaphore和Linux中的futex目标是一致的 //只不过语义上更简单一些 // //也就是说,不要认为这些是信号量 //把这[详细]