- 博客(15)
- 收藏
- 关注
转载 pytorch tensor数据存储与内存共享
tensor分为头信息区(Tensor)和存储区(Storage)。信息区主要保存着tensor的形状(size)、步长(stride)、数据类型(type)等信息,而真正的数据则保存成连续数组,存储在存储区。通过id(tensor.storage)来获取“存储区”,注意:id(tensor)与id(tensor.storage)不同,id(tensor)是整个tensor所占的内存地址(包括信息区和存储区),而 id(tensor.storage)只是该tensor存储区的内存地址,也就是说某几个
2021-07-14 10:56:24 4276
原创 关于python列表乘法
python列表乘法,实际上是对同一片内存的多次引用,也就是说复制的list都指向同一个list。如下面的代码段,目的是为了生成嵌套字典的列表,但是一种使用了列表乘法,另外一种没有,生成的结果大不相同。可以查看各个列表的id来验证。因此如果采用的是列表乘法生成的列表时,修改其中的某个值,会引起多个项同时发生改变。def generateListWrong(n): list=[[]]*n for i in range(n): if i==0: l.
2020-12-04 15:47:14 2988
原创 Java引用和C++引用
Java引用和C++引用区别:public class Tester{public static void main(String[] args){ Integer var1=new Integer(1); Integer var2=var1; doSomething(var2); System.out.print(var1.intValue()); System.out.print(var1==var2);}public static void doSometh.
2020-11-02 13:31:12 812
原创 java中接口的多继承,对不同返回值,相同方法名和传入参数的相同方法报警?
对于接口来说,传入参数冲突是overload,则不是问题, 只有传出参数这个问题是接口多继承不允许的例如:public interface IA {voiddoSomething();}public interface IB {IntegerdoSomething();}public interface IAB extends IA, IB {@OverridepublicvoiddoSomething();@OverridepublicIntegerdoSomething(...
2020-10-04 15:08:23 1351
转载 使用SWIG实现Python调用C/C++代码
SWIG是个帮助使用C或者C++编写的软件能与其它各种高级编程语言进行嵌入联接的开发工具。SWIG能应用于各种不同类型的语言,包括常用脚本编译语言,例如Perl,PHP,Python, Tcl, Ruby 和 PHP。SWIG普遍应用于创建高级语言解析或汇编程序环境、用户接口、作为一种用来测试C/C++或进行原型设计的工具。工作中碰到了一个小问题:有一个加密/解密的程序原本是用C++语言写的,后来需要用Python来实现调用。简单粗暴的办法是照着C++代码重写一个Python版本的程序,但是很麻..
2020-07-30 11:37:06 370
转载 Windows平台下Python使用swig调用C++
步骤0:swig简介swig是一种可以将C++代码转换为多种脚本语言封装的工具,可以在swig官网www.swig.org下载,解压后将swig.exe的路径添加到环境变量path中即可使用swig步骤1:准备C++代码编写需要在Python中调用的C++代码,最好将函数和类的声明统一放到头文件中,函数和类的实现放到源文件中C++头文件头文件主要包括:#include调用(例如#include <iostream>) 命名空间指定using namespace std;
2020-07-30 11:09:27 239
转载 关于Python的metaclass
在理解metaclass之前,我们需要先理解Python中的class。从某种程度上来说,Python中的class的定位比较特殊。对于大部分面向对象语言来说,class是一段定义了如何产生object的代码块。在Python中这一定义也成立:>>> class example(object):... pass...>>> object1 = example()>>> print(object1)<__main__.
2020-05-11 12:11:27 176
原创 汇编语言注意点
汇编指令不区分大小写,目的操作数是存结果的,原操作数是被操作的分号;后跟注释内容二进制数后跟b,十六进制数后跟h,十进制数不需特殊标记汇编源程序中,数据不能以字母开头,需要在前面加上0,如:0a000h汇编源程序中:mov al,[0] 含义:(al)=0 (debug中此指令与下一指令意义相同) mov al,ds:[0] 含义:(al)...
2020-02-12 15:44:29 522
原创 汇编语言(王爽老师)
自学完王爽老师的汇编语言,对一些关键知识点进行梳理。目录第一章 基础知识第二章 寄存器第三章 寄存器(内存访问)第4章 第一个程序第5章 [BX]和loop指令第6章 包含多个段的程序第7章 更灵活的定位内存地址的方法第8章 数据处理的两个基本问题第9章 转移指令的原理第10章 CALL和RET指令第11章 标志寄存器第12章 内中断第13章...
2020-02-12 15:42:41 9260 2
转载 汇编语言——assume的作用(转载)
1.assume 的作用是关联段名与段寄存器。如果你在数据段中定义了变量名,比如:x db 0而你在代码中,需要直接使用这个变量名,比如:mov al, x那么,汇编程序在汇编时,就会报告错误。因为,mov指令中遇到 x 这个变量名时,汇编程序不知道它要用哪个段寄存器作为段地址。所以:若要用变量名直接访问,或使用语句标号(比如你例子中的标号...
2020-02-07 15:14:13 1941 1
转载 转载:为什么Python中“2==2>1”结果为True
在Python中,你可能会发现这样一个奇怪的现象:>>> 2 == 2 > 1True>>> (2 == 2) > 1False>>> 2 == (2 > 1)False为什么会出现 2==2>1的结果为True?如果说这是运算符的优先级问题,那么后两个式子为什么又都是False?实际上这涉及到了...
2019-11-02 15:59:56 1198
转载 转载:栈的应用--对输入字符串表达式进行计算
在某些情况下,我们需要对输入字符串表达式进行计算,例如一个字符串为:“1 + 2 * 3”,我们需要计算出它的结果,在这里,我提供李春葆老师书中所写的《数据结构教程》里的算法,这种算法精密之处让我惊叹,特此分享。首先这个表达式只允许存在加减乘除和括号,但这也足够复杂了。计算机是无法识别加减乘除的优先计算顺序的,更何况还有括号,这是更难以解决的。这时候必须修改这个表达式,使计算机能够明白它的...
2019-10-29 19:56:28 288
原创 python 字典键值互换
关于python的字典的键值互换,由于可能有多键都对应同一值,故需要用列表存储互换之后字典的值。def reverse_dic(my_dic): reverse = {} for key in my_dic: value = my_dic[key] if value in reverse: reverse[value]....
2019-10-28 21:17:20 1196
原创 c语言 关于指针注意事项
使用指针变量作为函数参数时,只有在获取地址的情况下对元素(*p)进行操作,才能真正地修改变量。因为此时实参传给形参,就是将堆上的申请的首地址传给形参,这样形参和实参都指向了堆上的内存,形参对堆上内存内容的修改,实参也是得到了修改。但是对传入地址(p)进行操作是无法对原指针本身进行修改的。因为函数在接收参数的过程中是单向的一次性值传递,此时的参数传入地址,调用函数时只是对值参产生一个副本,对副本的操...
2019-10-24 13:13:39 421
转载 ANSI C的关键字和基本字符
ANSI编码是一种对ASCII码的拓展:ANSI编码用0x00–0x7f (即十进制下的0到127)范围的1 个字节来表示 1 个英文字符,超出一个字节的 0x80~0xFFFF 范围来表示其他语言的其他字符。每个国家或者地区不一样。ANSI C的32个关键字:auto :声明自动变量 一般不使用double :声明双精度变量或函数int: 声明整型变量或函数struct:声明结构体...
2019-07-28 21:23:40 1257
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人