-
C++ new和delete运算符讲解
所属栏目:[语言] 日期:2021-05-26 热度:107
在C语言中,动态分配内存用 malloc() 函数,释放内存用 free() 函数。如下所示: int *p = (int*) malloc( sizeof(int) * 10 ); //分配10个int型的内存空间 free(p); //释放内存 在C++中,这两个函数仍然可以使用,但是C++又新增了两个关键字,new 和 delet[详细]
-
面向对象编程有着举足轻重的作用
所属栏目:[语言] 日期:2021-05-26 热度:64
类是一个通用的概念,C++等很多编程语言中都支持类,都可以通过类创建对象。可以将类看做是结构体的升级版,C语言的晚辈们看到了C语言的不足,尝试加以改善,继承了结构体的思想,并进行了升级,让程序员在开发或扩展大中型项目时更加容易。 因为 C++、Java[详细]
-
10分钟让你知道C++类和对象到底是什么?
所属栏目:[语言] 日期:2021-05-26 热度:89
C++ 中的类(Class)可以看做C语言中结构体(Struct)的升级版。结构体是一种构造类型,可以包含若干成员变量,每个成员变量的类型可以不同;可以通过结构体来定义结构体变量,每个变量拥有相同的性质。例如: #include stdio.h //定义结构体 Student struc[详细]
-
了解学会Python 代码优化原则
所属栏目:[语言] 日期:2021-05-26 热度:121
第一个基本原则是不要过早优化。很多人一开始写代码就奔着性能优化的目标,让正确的程序更快要比让快速的程序正确容易得多。因此,优化的前提是代码能正常工作。过早地进行优化可能会忽视对总体性能指标的把握,在得到全局结果前不要主次颠倒。 第二个基本[详细]
-
使用异步的必要性与高效性
所属栏目:[语言] 日期:2021-05-26 热度:82
操作系统可以看作是个虚拟机(VM),进程生活在操作系统创造的虚拟世界里。进程不用知道到底有多少 core 多少内存,只要进程不要索取的太过分,操作系统就假装有无限多的资源可用。 基于这个思想,线程(Thread)的个数并不受硬件限制:你的程序可以只有一[详细]
-
Python打包exe程序的高效处理方法
所属栏目:[语言] 日期:2021-05-26 热度:176
但python的运行环境复杂,编写的程序往往是借助了很多附加的功能库来实现,对简单的打包会造成一定困难。本人也是在经历了多次的打包失败和成功的经历之后,觉得pyinstaller的成功率最高,所以有必要针对pyinstaller写一篇避坑指南。 一、安装 使用python[详细]
-
什么是“类加载过程”你知道吗?
所属栏目:[语言] 日期:2021-05-26 热度:199
计算机能识别的是机器指令码,简称机器码。机器码是二进制的,计算机可以直接识别,但与人类的语言差别太大,不容易被人理解和记忆。后来,就诞生了各种高级语言,人们用高级语言编写程序,然后通过把程序解释或编译成机器码。 比如python,就是一种解释型[详细]
-
nonlocal 和 global的原理及其差异
所属栏目:[语言] 日期:2021-05-26 热度:196
副标题#e# 对变量名的赋值和引用,是两种不同的情况: 赋值:创建一个变量或者修改。 引用:检索其值。 以上两者的差别,会导致我们在函数中: 赋值一个 全局变量:等于创建一个局部变量。 自由变量:等于创建一个局部变量。 引用:正常检索其值。 我们修改[详细]
-
两个经典例子让你彻底明白Java回调机制
所属栏目:[语言] 日期:2021-05-25 热度:108
先让我们通过一个生活中的场景来还原一下回调的场景:你遇到了一个技术难题(比如,1+1等于几?太难了!),于是你去咨询大牛,大牛说现在正在忙,待会儿告诉你结果。 此时,你可能会去刷朋友圈了,等大牛忙完之后,告诉你答案是2。 那么,这个过程中询问问题([详细]
-
这两种常用的编程语言之间的主要区别是什么?
所属栏目:[语言] 日期:2021-05-25 热度:97
Python VS JavaScript:实际应用 我们将从快速浏览它们的实际应用程序开始。 Python 由于其强大的功能和多功能性,Python已经成为世界上几乎每一个科学应用程序中必不可少的工具,它是一种支持不同编程范式的通用编程语言。 它广泛用于科学和专业应用,包[详细]
-
快亦有道!让 Python 变快的 5个办法
所属栏目:[语言] 日期:2021-05-25 热度:120
在CPython的替代品中,PyPy是最显眼的那一个(比如Quora就在生产环境中使用它)。它也最有机会成为默认解释器,它和现存Python代码高度兼容。 PyPy使用适时编译来加速Python,这项技术Google也在使用,Google在V8引擎中使用它加速Javascript。最近的版本PyPy[详细]
-
LEGB规则是编程语言里必不可少的
所属栏目:[语言] 日期:2021-05-25 热度:99
四个作用域遵循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-25 热度:142
为啥变量要有作用域呢? 我们在Python里遇到的内置、局部、全局及自由变量,就是说变量的作用域。 语言区分作用域,是为了复用变量名。引入作用域,相当于给变量划分了各自的隔离区,在不同隔离区里,查找变量变得很容易。 正是因为有了作用域,我们在函数[详细]
-
信息量大且结构便利的日志调试和跟踪应用程序实践的理想方式
所属栏目:[语言] 日期:2021-05-25 热度:182
关于Python日志记录库,大部分开发人员都善于解释如何设置一个记录系统用于一个Python脚本。但是,几乎找不到如何设置Python日志记录库以在整个应用程序范围内使用,以及如何在所有项目模块中舒适地正确集成和共享日志记录信息的解释器。 在本文中,我将分[详细]
-
java程序调用c++代码是你需要掌握的
所属栏目:[语言] 日期:2021-05-25 热度:180
首先定义一个包含了native方法的类如下,之后我们要使用这个类中的native方法通过jni调用c++编写成的动态链接库中的方法: publicclassJniTest{ static{ System.loadLibrary(MyNativeDll); } publicstaticnativevoidcallCppMethod(); publicstaticvoidmain[详细]
-
并发问题原因分析及解决
所属栏目:[语言] 日期:2021-05-25 热度:76
Unsafe.compareAndSwapXXX 实现CAS更改 state 和 队列指针 内部依赖CPU提供的原子指令 可见性与有序性 volatile 修饰 state 与 队列指针 (prev/next/head/tail) 线程阻塞与唤醒 Unsafe.park Unsafe.parkNanos Unsafe.unpark Unsafe类是在sun.misc包下,[详细]
-
锁的使用至关重要
所属栏目:[语言] 日期:2021-05-25 热度:82
副标题#e# 独占锁的实现,拥有上面列举的除读写锁之外的所有特性,使用比较简单 classX{ //创建独占锁实例 privatefinalReentrantLocklock=newReentrantLock(); //... publicvoidm(){ lock.lock();//blockuntilconditionholds try{ //...methodbody }finall[详细]
-
Protobuf序列化这么强,为什么不花五分钟掌握一下呢?
所属栏目:[语言] 日期:2021-05-24 热度:199
一、为什么要使用protobuf? 使用protobuf的原因肯定是为了解决开发中的一些问题,那使用其他的序列化机制会出现什么问题呢? (1)java默认序列化机制:效率极低,而且还能不能跨语言之间共享数据。 (2)XML常用于与其他项目之间数据传输或者是共享数据,但是[详细]
-
自学Python需要多长时间从入门到掌握?
所属栏目:[语言] 日期:2021-05-24 热度:87
如果是自学,从零基础开始学习Python,依照每个人理解能力的不同,大致上需要半年到一年半左右的时间。如果有其它编程语言的经验,入门还是非常快的,大概需要2~3个月可以对上手Python语言编写一些简单的应用。 无论是新手还是有一定基础的朋友,建议找一[详细]
-
函数是一等公民,这究竟在说什么?
所属栏目:[语言] 日期:2021-05-24 热度:66
对于有些人来说这根本不是问题,但有些人却想不明白。我提到,在 Go 语言中,函数是一等公民,但对方不清楚这到底在说什么。看来有必要解释下什么是一等公民。 再往下看之前,你能说出什么是一等公民吗? 关于一等公民[1](First-class citizen)看看维基百科[详细]
-
一文教你掌握Visual C++、Dev C++、codelite、code::blocks
所属栏目:[语言] 日期:2021-05-24 热度:109
C语言在这两个平台上语法都是相同的,都支持C89。不同的主要是外观及效率这些东西。 Visual C++6.0用的是vc编译器,DEV-C++用的是mingw-gcc编译器。两个东西不同的。要说标准,肯定是gcc比较符合c++标准。但是要说效率,在windows平台上,gcc的效率还是比不上v[详细]
-
Python正则表达式总结
所属栏目:[语言] 日期:2021-05-24 热度:130
正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为元字符))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个规则字符串,这个规则字符串用来表达对字符串的一种过滤逻辑。正则表达式[详细]
-
小心使用!从入门到精通,一文带你学会Python面向监狱爬虫
所属栏目:[语言] 日期:2021-05-24 热度:134
API (应用程序接口)是为了以标准的方式在不同的系统之间交换数据。但是,大多数时候,网站所有者并不提供任何 API。在这种情况下,我们只能使用 web 抓取提取数据了。 基本上,每个 web 页面都以 HTML 格式从服务器返回,这意味着我们的实际数据被很好地包[详细]
-
用Python制作一个数据预处理小神器,多种操作
所属栏目:[语言] 日期:2021-05-24 热度:102
老规矩,先讲思路再上代码,首先还是说一下,使用PySimpleGUI还是那四个流程 引入模块==创建元素并填充layout== 创建窗体 ==创建事件循环 从元素看,从图中可以知道我们需要的元素有使用说明这个菜单栏、看上去是凹下去的数据预处理框、框内的3个单选项值[详细]
-
写代码的16个好习惯,减少大部分的bug
所属栏目:[语言] 日期:2021-05-24 热度:104
入参校验也是每个程序员必备的基本素养。你的方法处理,「必须先校验参数」。比如入参是否允许为空,入参长度是否符合你的预期长度。这个尽量养成习惯吧,很多「低级bug」都是「不校验参数」导致的。 如果你的数据库字段设置为varchar(16),对方传了一个32[详细]