-
Queue和Pipe进程间通信的实现方式
所属栏目:[编程] 日期:2021-05-27 热度:95
前面讲解了使用 Queue 模块中的 Queue 类实现线程间通信,但要实现进程间通信,需要使用 multiprocessing 模块中的 Queue 类。 简单的理解 Queue 实现进程间通信的方式,就是使用了操作系统给开辟的一个队列空间,各个进程可以把数据放到该队列中,当然也可[详细]
-
Python schedule任务调度及其使用方式
所属栏目:[编程] 日期:2021-05-27 热度:161
scheduler 类常用的构造方法如下: scheduler(timefunc=time.monotonic, delayfunc=time.sleep) 可以向该构造方法中传入 2 个参数(当然也可以不提供,因为都有默认值),分别表示的含义如下: timefunc:指定生成时间戳的函数,默认使用 time.monotonic 来[详细]
-
Python Timer定时器:控制函数在规定时间实施
所属栏目:[编程] 日期:2021-05-27 热度:167
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 热度:89
在编程中,我们一般将零值称为假,将非零值称为真。逻辑运算的结果也只有真和假,真对应的值为 1,假对应的值为 0。1) 与运算()参与运算的两个表达式都为真时,结果才为真,否则为假。例如: 50 5为真,0为假,相与的结果为假,也就是 0。 (50) (42) 50 的[详细]
-
C语言三大编程结构汇总
所属栏目:[编程] 日期:2021-05-27 热度:89
C语言中常用的编程结构有三种(其它编程语言也是如此),它们分别是: 顺序结构:代码从前往后依次执行,没有任何拐弯抹角,不跳过任何一条语句,所有的语句都会被执行到。 选择结构:也叫分支结构。代码会被分成多个部分,程序会根据特定条件(某个表达式[详细]
-
C语言const的用法与定义剖析
所属栏目:[编程] 日期:2021-05-27 热度:63
有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定。例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大[详细]
-
在视图中处理GET请求的高效措施
所属栏目:[编程] 日期:2021-05-27 热度:157
通过获取发出GET请求 通过向其提供视图的URL和适当的headers参数来进行获取GET请求。发出请求后,视图返回请求的数据,然后需要将响应转换为JSON,然后才能将其用于其他操作。 fetch(URL,{ headers:{ Accept:application/json, X-Requested-With:XMLHttpRe[详细]
-
开发过程中安全代码的实例项目分析
所属栏目:[编程] 日期:2021-05-27 热度:80
1.转义/逃逸输入(Escape the Input) 所谓转义攻击是指攻击者将执行命令/查询,伪装并嵌入到普通的文字输入中,通过欺骗应用程序的执行引擎,而让其能够向攻击者提供各种信息与控制权。可见,为避免此类攻击的发生,我们需要对用户的输入进行转义,将其解释[详细]
-
GraphQL 发展的未来
所属栏目:[编程] 日期:2021-05-27 热度:98
一些比较有名的公司正在转换 REST API 到 GraphQL,比如 Twitter、IBM、Coursera、Airbnb、Facebook、Github、携程等,特别是 Github,它的 v4 版外部 API 只使用 GraphQL。据一位在 Twitter 工作的大佬说硅谷不少一线二线的公司都在想办法转到 GraphQL 上[详细]
-
构建Vue CLI插件的基本操作
所属栏目:[编程] 日期:2021-05-27 热度:115
如果你正在使用Vue框架,你可能已经知道什么是Vue CLI了。它是一个用于快速开发Vue.js的完整系统,提供项目脚手架。 CLI的一个重要部分是cli-plugins。它们可以修改内部的webpack配置并向vue-cli服务注入命令。 一个很好的例子是 @vuecli-plugin-typescrip[详细]
-
border与outline 语法和用法详解
所属栏目:[编程] 日期:2021-05-27 热度:90
自网络诞生之初,边框就已经成为设计的标准。 与我们将要介绍的其他两种方法相比,一个重要的区别是,默认情况下,border 包含在元素的计算尺寸中。即使您设置 box-sizing:border-box,border 仍然会计入计算中。 Border 最基本的语法定义了边框的宽度和[详细]
-
Spring Boot 发展历史说明
所属栏目:[编程] 日期:2021-05-27 热度:200
首先三个按钮分别对应了三个不同的样式,我们先把这三个不同的样式定义出来,分别如下: blue.css: body{ background-color:#05e1ff; } green.css: body{ background-color:#aaff9c; } red.css: body{ background-color:#ff0721; } 主题的定义,往往是[详细]
-
教你快速找到及时序列的最小值
所属栏目:[编程] 日期:2021-05-27 热度:161
推入元素到 mainstack,只有当当前元素小于tmpstack栈顶(实际存储为mainstack中元素索引)元素时,才入栈到tmpstack,入栈的是索引。 假设mainstack当前有n个元素,则tmpstack内元素至多有n个。等于n时,表明原入栈序列为单调递减序列。 出栈分析: 元素从m[详细]
-
这还是我最了解的package.json吗?
所属栏目:[编程] 日期:2021-05-27 热度:154
files定义了哪些文件应该被包括在 npm install 后的 node_modules中。 当然,有些文件是自动暴露出来的,不管你是不是配置了files,比如: package.json README / CHANGELOG / LICENSE ... 很多库都定义了 files,避免一些不必要的文件暴露到 node_modules[详细]
-
逻辑编程语言处理SQL的局限性
所属栏目:[编程] 日期:2021-05-27 热度:68
谷歌为什么要推出这样一门新的编程语言? 有道是,数据是新世纪的石油。 SQL作为处理数据的通用语言,因为它基于自然语言的设计,好理解好入门,已流行了很多年,但,也并非完美无缺: 没有将逻辑分成小块的设计 没有模块和导入的概念 更没有高级点的构造[详细]
-
设备OTA空中升级方案解析
所属栏目:[编程] 日期:2021-05-27 热度:55
没有完美的软件,因为设计缺陷、业务需求更新,软件始终都在不断升级完善。新软件如何替换正在运行的旧软件就是本文关注的重点,尤其是针对电子产品,设备空中升级OTA,受限于硬件资源,需要选择不同的方案进行软件升级。 2. 空中升级流程 在线升级流程,[详细]
-
LEGB规则是编程语言里必不可少的
所属栏目:[编程] 日期:2021-05-26 热度:68
四个作用域遵循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-26 热度:200
为啥变量要有作用域呢? 我们在Python里遇到的内置、局部、全局及自由变量,就是说变量的作用域。 语言区分作用域,是为了复用变量名。引入作用域,相当于给变量划分了各自的隔离区,在不同隔离区里,查找变量变得很容易。 正是因为有了作用域,我们在函数[详细]
-
信息量大且结构便利的日志调试和跟踪应用程序实践的理想方式
所属栏目:[编程] 日期:2021-05-26 热度:153
关于Python日志记录库,大部分开发人员都善于解释如何设置一个记录系统用于一个Python脚本。但是,几乎找不到如何设置Python日志记录库以在整个应用程序范围内使用,以及如何在所有项目模块中舒适地正确集成和共享日志记录信息的解释器。 在本文中,我将分[详细]
-
java程序调用c++代码是你需要掌握的
所属栏目:[编程] 日期:2021-05-26 热度:54
首先定义一个包含了native方法的类如下,之后我们要使用这个类中的native方法通过jni调用c++编写成的动态链接库中的方法: publicclassJniTest{ static{ System.loadLibrary(MyNativeDll); } publicstaticnativevoidcallCppMethod(); publicstaticvoidmain[详细]
-
并发问题原因分析及解决
所属栏目:[编程] 日期:2021-05-26 热度:195
Unsafe.compareAndSwapXXX 实现CAS更改 state 和 队列指针 内部依赖CPU提供的原子指令 可见性与有序性 volatile 修饰 state 与 队列指针 (prev/next/head/tail) 线程阻塞与唤醒 Unsafe.park Unsafe.parkNanos Unsafe.unpark Unsafe类是在sun.misc包下,[详细]
-
锁的使用至关重要
所属栏目:[编程] 日期:2021-05-26 热度:141
副标题#e# 独占锁的实现,拥有上面列举的除读写锁之外的所有特性,使用比较简单 classX{ //创建独占锁实例 privatefinalReentrantLocklock=newReentrantLock(); //... publicvoidm(){ lock.lock();//blockuntilconditionholds try{ //...methodbody }finall[详细]
-
Lock特点性能完美分析解读
所属栏目:[编程] 日期:2021-05-26 热度:154
像synchronized和ReentrantLock都是可重入锁,可重入性表明了锁的分配机制是基于线程的分配,而不是基于方法调用的分配。 举个简单的例子,当一个线程已经获取到锁,当后续再获取同一个锁,直接获取成功。但获取锁和释放锁必须要成对出现。 可响应中断 当[详细]
-
Semaphore 数据结构分解详解
所属栏目:[编程] 日期:2021-05-26 热度:174
副标题#e# //Go语言中暴露的semaphore实现 //具体的用法是提供sleep和wakeup原语 //以使其能够在其它同步原语中的竞争情况下使用 //因此这里的semaphore和Linux中的futex目标是一致的 //只不过语义上更简单一些 // //也就是说,不要认为这些是信号量 //把这[详细]
-
isEmpty和isBlank的差异
所属栏目:[编程] 日期:2021-05-26 热度:104
我们在对字符串进行操作的时候,需要经常判断该字符串是否为空。如果没有借助任何工具,我们一般是这样判断的: if(null!=source!.equals(source)){ System.out.println(notempty); } 但是如果每次都这样判断,会有些麻烦,所以很多jar包都对字符串判空做[详细]

浙公网安备 33038102330471号