自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小灰笔记

学习笔记,仅用于自我参考回忆!

  • 博客(59)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Windows下使用CMD命令复制多层级目录

之前摸索中知道了如何进行目录的遍历,有时候需要拷贝一个目录树的文件夹结构的时候我会借用这个功能写个简单的脚本来实现目录树文件夹层级的拷贝。这样的拷贝其实是创建。后来为了偷懒,也曾经直接把整个目录加文件拷贝一下之后写个脚本删除里面所有的文件。       在一次无意的折腾中发现了Windowsxcopy命令的一个功能,一下子惊叹原来拷贝一个目录时这么简单!       下面是命令帮助中的命令

2017-08-31 00:31:46 14525

原创 Windows DOS builtin命令

刚刚使用xcopy命令的时候发现它跟copy在命令作用行为上有很大区别,我感觉copy似乎更靠近系统内核层级一些。Where查看了一下命令的位置,发现copy找不到,但是xcopy倒是可以找到。       迷惑了一会儿倒是想起了之前学习Linux入门教程时候遇到的builtin命令,猜测这跟当时遇到的cd等命令类似。先看Linux上的相应信息:grey@DESKTOP-3T80NPQ:/

2017-08-30 00:20:08 3104

原创 GNU Emacs与VIM入门操作体验对比

第一次下定决心使用Emacs,跟之前自己已经稍微熟悉了一点的VIM做一下对比:1,大文件的编辑这一点Emacs似乎很有可提升空间,当然,也有可能是是我现在还不熟悉。不过从我目前掌握的初级功能来看,Emacs在编辑大文件的时候反应速度真的是相当慢!而使用VIM的时候,使用的感觉一直是行云流水般顺畅!当然,真正很大的文件我也没有编辑过。不算很大的文件在Emacs已经有一点卡顿了!2

2017-08-27 23:52:53 5759 1

原创 Windows上Emacs的安装

我尝试在Windows上使用Emacs多次,最终都失败了。但是我还是想尽自己的努力做一次尝试并最终把自己的编辑器从VIM切换到Emacs。这并不是说我不喜欢VIM,也不是说我觉得Emacs比VIM好。我之所以箱做这个切换有两个原因:第一,Emacs是GNU的灵魂之作;第二,学习Emacs似乎能够同时再学一门还不错的语言lisp。       Emacs下载完了之后我发现软件是一个绿色版本,直接

2017-08-27 22:48:09 518

原创 Python浅复制中对象的生存周期

Python的浅复制以及深复制我了解的并不多,我不清楚shutil中的copy1和copy2是不是算是浅复制和深复制?这两个操作,一个是文件属性重建,还有一个是文件属性不变。不知道对象的复制是否可以以此类比?       在复制之前,为了能够观看一下GC的执行,定义一个特殊的类和对象。测试代码如下:class Demo:       def __del__(self):      

2017-08-27 22:35:06 267

原创 Python对象中__del__方法起作用的条件

对象的__del__是对象在被gc消除回收的时候起作用的一个方法,它的执行一般也就意味着对象不能够继续引用。       示范代码如下:class Demo:       def __del__(self):              print("calling __del__") obj = Demo()del obj       程序执行结果如下:grey

2017-08-27 21:07:11 3131

原创 Linux 0.12 startup汇编代码的编译

在学习Linux内核的原理,看到了startup的代码。安装了相应的GNU汇编器之后,尝试了一下代码的编译。       我使用的Win10安装了一个内置的Ubuntu子系统,在此系统下编译结果如下:grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/15_linux/01_kernal/03_my_test_code/04_as_demo$lshead.

2017-08-27 20:22:09 823

原创 Linux BIOS启动代码DS与ES寄存器初始化分析

学习Linux内核的时候看到一段代码最初有点不解,具体的代码如下:go:  mov ax,cs       mov ds,ax       mov es,ax       上面的代码是对ds与es两个寄存器的初始化,但是从一般程序设计的角度考虑,总觉得第一句似乎是么有什么意义。为什么不修改成直接用cs寄存器对ds和es两个寄存器进行初始化呢?就向下面这样:go:  mov ds

2017-08-24 00:40:12 1062 1

原创 Bochs上运行BIOS启动失败原因分析

之前写了一段BIOS启动代码,在Bochs中测试启动的时候失败。其实当时的代码出了很多问题,只是文件能够编译通过而已。错误的代码如下:;; boot.s--bootsect.S framework;.globlbegtext,begdata,begbss,endtext,enddata,endbss ;global flag.textbegtext:.databeg

2017-08-24 00:16:00 2063

原创 Bochs上运行BIOS启动代码

安装好了Bochs,也运行了Demo系统没有问题。测试自己的BIOS启动代码的时候却一直不成功。最初,我以为这是我的镜像文件制作错了,花了整个晚上折腾镜像文件还是没有成功。于是又尝试修改启动配置文件,启动配置文件修改了之后依然不成功。睡眼惺忪的时候看了一眼代码发现代码错了!真是醉了!       配置文件如下:########################################

2017-08-23 22:52:22 1943

原创 Windows安装Bochs并运行Linux Demo

起初我做好了折腾一通的准备,却没想到会这么简单!       安装包国内的各种网站我总觉得可能会被偷梁换柱,直接切换到bing国际找到了下载链接,下载了Bochs-2.6.9。       安装的过程很简单,我并没有选择默认,而是安装到了我自己习惯安装软件的位置。在安装的过程中,有可以选择安装的部分,比如是否安装dlx Linux演示版本等等。我选择了安装,安装成功后桌面上出现一个演示版本

2017-08-22 22:28:17 2193 1

原创 使用Python和xlwt向Excel文件中写入中文

Python等工具确实是不错的工具,但是有时候不管是基础的Python还是Python的软件包都让我觉得对中文不是很亲近。时不时地遇到一点问题很正常,刚刚在写Excel文件的时候就又遇到了这样的问题。       为了能够说明情况,假设我想把当前文件夹中所有的文件名称全都写入到Excel文件中。当前的目录信息如下:grey@DESKTOP-3T80NPQ:/mnt/e/01_workspa

2017-08-21 23:54:34 13267

原创 Python中使用property实现类的特性

Python中的特性是一个函数,但是在使用的形式上看起来更像是一个属性。针对一个对象来说,与属性相比,特性是不能够随意添加的。而对象的属性,默认情况下添加是十分简单的。       下面通过代码展示如何使用property实现特性:class MyClass:       def __init__(self,val1,val2):              self.val1 =

2017-08-21 00:52:56 259

原创 Python通过属性手段实现只允许调用一次的方法

如果希望一个对象的某个方法只能够调用一次,按照我之前的惯性思维,我肯定是定义一个状态量然后每次调用的时候修改它的值。通过查看状态量的数值,我可以决定采取执行不同的处理。其实,除此之外还有一种方法,不仅仅能够实现这样的处理,还能够顺便处理对象的属性。       先看一下如下的代码:class DemoClass:       def __init__(self):         

2017-08-20 22:27:52 8402

原创 Linux中dd命令的使用

使用了一次dd命令修改一个编译后的程序,最初抄命令的时候就觉得有点不确定。因为选项参数的形式让我看着有点像程序结构,特别担心因此而导致系统的错误。       之前的命令以及结果如下:grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/15_linux/01_kernal/03_my_test_code$ls -ltotal 9-rwxrwxrwx 1

2017-08-20 19:38:40 538

原创 Linux中使用dd命令修改as86汇编编译链接后的程序

之前抄写了一段代码:;; boot.s --bootsect.S framework;.globlbegtext,begdata,begbss,endtext,enddata,endbss ;global flag.textbegtext:.databegdata:.bssbegbss:.textBOOTSEG = 0x07c0 entry

2017-08-20 19:21:06 407

原创 as86汇编程序的编译与链接

抄好了一份boot.s代码,又搞定了编译器,接下来小结一下编译与链接。       先用as86编译器把汇编代码编译成.o文件:grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/15_linux/01_kernal/03_my_test_code$lsboot.sgrey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/15_

2017-08-20 18:58:49 554

原创 Ubuntu上安装as86汇编器

我使用的Linux版本是Win10中的Ubuntu子系统,为了学习Linux内核现在需要as86汇编器。       测试了一下命令行,发现没有响应的命令。于是又试了链接了命令,依然没有找到。于是借助搜索引擎查了几份英文网页,发现这几个命令其实是在同一个软件包,bin86。于是尝试了sudo apt-get install bin86,安装很顺利!       安装后查看其文档也已经有了:

2017-08-20 18:43:20 1541

原创 Linux启动代码boot.s理解

为了理解Linux的启动代码,我自己也照着书中抄了一遍。具体的代码如下:;; boot.s --bootsect.S framework;.globlbegtext,begdata,begbss,endtext,enddata,endbss ;global flag.textbegtext:.databegdata:.bssbegbss:.textB

2017-08-20 16:48:28 1810

原创 Linux 0.12的任务调度猜测

学习Linux内核原理,看书的时候看到了Linux 0.12版本中对8254定时器芯片的利用只利用了一个0通道。这个通道在方式3下工作,每10ms产生一个信号中断请求。而这个终端控制请求就是Linux 0.12内核工作的脉搏。该信号用于任务的切换或者资源的统计。       从上面来看,当时的Linux系统的实时性应该还是一般的。这么看来,整个系统的执行基本上还是一个时间片轮转的方式。但是,倘

2017-08-20 14:56:24 379

原创 Linux操作系统的BIOS启动流程

要理解大致的启动流程现需要了解几组常用的寄存器:       1,CS + IP:其中CS是段寄存器,或者是CODE段寄存器,存储的是段的基地址。IP是程序段寄存器的偏移量。两者结合,确定下一条CPU指令的执行地址。       2,SS + SP:其实,SS是堆栈寄存器,而SP是堆栈寄存器偏移。前者存储的是堆栈的基地址,后者存储的是栈的栈顶。另外,如果使用到了BP,默认的基地址也是SS,

2017-08-20 14:25:46 3062

原创 BIOS功能思维导图-根据《Linux内核完全剖析》

总结一下BIOS的几个功能方面:一般会把这部分功能跟操作系统的启动联系到一起,真正跟启动相关的代码实现应该属于初始化部分。

2017-08-20 13:37:54 1125

原创 Linux的proc文件系统

最初我是想看一下Win10内置Ubuntu中的I/O信息,但是发现根本找不到相应的文件。好奇中查看了一下整个/proc目录,看了一下似乎这是一个系统信息状态的信息汇集地。       查看文档得知,/proc其实是一个特殊的文件系统,是一种虚拟文件系统。看着像是文件,也能够读取到其中的信息,但是有时候会发现这些文件占用的大小是0。此外,文件的时间戳似乎也一直随着时间而改变。       查

2017-08-20 01:30:40 243

原创 Python实现更相减损术求解最大公约数

先从网上摘录一段算法的描述如下:更相减损法:也叫 更相减损术,是出自《 九章算术》的一种求最大公约数的算法,它原本是为 约分而设计的,但它适用于任何需要求最大公约数的场合。《九章算术》是中国古代的数学专著,其中的“更相减损术”可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”翻译成现代语言如下:第一步:任意给定两个

2017-08-19 20:31:59 1327

原创 辗转相除法求最大公约数

之前总结过一次高德纳TAOCP中的最大公约数求解,其实课后题中的算法修改要求实现的是辗转相除法求解最大公约数。       这个题目我最初的理解理解错了,自然也没有做出标准答案。现在按照标准答案的解答写一下相应的代码实现:defMaxCommDivisor(m,n):       while m * n != 0:              m = m % n         

2017-08-19 19:06:30 611

原创 TAOCP中1.1习题1解答与思考

先大致叙述一下题目:       使用书中给出的标记方法完成数值的序列的替换,比如交换m和n的数值可以通过这样的顺序实现:t ß m,m ß n,m ß t。现在要求用最少的步骤实现一下序列的调换,将(a,b,c,d)调换为(b,c,d,a)。       除了这些要求之外,也没有什么额外的要求。观察上面的序列,其实最简单的一个理解模型是实现一次循环左移的操作。如果是这样,那么比较好的实现

2017-08-19 17:22:35 418

原创 TAOCP中最大公约数算法理解

TAOCP中,介绍了一个求取最大公约数的算法。假设有两个整数m,n,那么求取两个整数最大公约数的方法如下:       E1:m除以n,余数为r;       E2:如果r=0,那么最大公约数就是n;否则,进入E3;       E3:n的值给m,r的值给n,然后返回E1继续。       算法的主要难点在于:如何论证E3生成的整数对儿的最大公约数为什么与初始的m,n最大公约数一致

2017-08-19 16:06:00 326

原创 Python中的@classmethod用法

在Python面向对象编程中的类构建中,有时候会遇到@classmethod的用法。总感觉有这种特殊性说明的用法都是高级用法,在我这个层级的水平中一般是用不到的。不过还是好奇去查了一下。       大致可以理解为:使用了@classmethod修饰的方法是类专属的,而且是可以通过类名进行调用的。为了能够展示其与一般方法的差异,写一段简单的代码如下:class DemoClass:  

2017-08-19 11:53:58 15890 2

原创 Office 2016中修改正文默认字体

之前使用word文档,正文默认的字体一般是宋体。这很不错,因为工作中很多人特别是领导要求看到的字体必须为宋体。买电脑的时候顺道更新了自己的工具为Office 2016,用了一阵子才发现原来正文默认的字体并不是宋体。       简单做了两次手动的调整后,我觉得这个东西应该有修改默认的功能。经过简单的探索,找到了解决的方法。1,       上面这是之前默认的情况,是等线而不

2017-08-19 11:46:10 17296

原创 Python面向对象编程中属性的基本操作

在面向对象编程中,属性与方法的使用十分频繁。接下来对属性的基础操作进行简单的学习小结。    在Python OOP中,属性的操作一般有如下几种:        1,添加属性        2,修改属性的值        3,获取属性的值        4,删除属性    通过一段简单的示范代码来说明一下:class DemoClass:    pass o

2017-08-19 11:15:40 296

原创 Python中最基础类的属性和信息

查看Python中基础类的属性和信息可以看一下Python面向对象编程所接触到的最基本的东西。今天我想探索的是两个不同的大版本之间差异,也就是Python2和Python3之间的差异。       通常,我查看一个类或者对象的属性的时候我会使用dir。使用dir函数可以查看到类或者对象的大多数属性或者方法,但是也不一定全面,有一部分特殊的属性或者方法显示不出来。如果想要显示的完整一些,可以直接

2017-08-18 22:30:09 390

原创 Python中__new__方法的使用

先看一段代码:classdoubleFloat(float):       def __new__(cls,arg = .6):              return float.__new__(cls,arg * 2) a = doubleFloat()print(a) b =doubleFloat(1.9)print(b)       程序执行结果:

2017-08-18 02:23:10 2305

原创 使用__del__方法在Python文件处理时保证文件关闭

__del__方法的一个很好的用途就是用于文件处理中关闭文件,通过与文件关闭功能的关联让关闭成为一种默认的处理方式。       在文件处理的程序中通常会含有__del__= close来保证__del__()方法与close()方法的一致。       这种设计考虑的思想很容易理解,但是到底在什么场景中使用确实是一个比较难考虑的问题。毕竟,这个方法的实现应该是在类中,而相应的功能映射应该

2017-08-18 02:07:43 481

原创 Python中的weakref简单小结

当对一个对象的引用只有弱引用的时候,垃圾回收机制可以把孩子个对象在不用了的时候销毁,把内存用于其他地方。       弱引用其中一个用途是用于实现大对象的缓存或者映射,由于是缓存火映射,对象不需要独立存在。Python weakref中提供WeakKeyDictionary和WeakValueDictionary两个类用于构建非长久驻留内存的对象。当最后一次引用之后,垃圾回收机制会回收其内存。

2017-08-18 01:39:19 6245

原创 Python2与Python3在不同类的对象比较上的差异

之前写了那么多的脚本,没有发现Python2与Python3太大的差异。接触面向对象编程,学习的过程中发现各种不同的差异。       接下来看一下Python2与Python3在不同类的对象对比上的差异。       先看一段示范代码:class myClass:       def __init__(self,value):              self.value

2017-08-16 23:10:03 2057

原创 Python中定制类的比较运算方法

Python中的比较运算有几种:小于、小于等于、等于、大于等于、大于、不等于等。如果我们的数据对象具有明确的物理含义,比如说数值是带有数字与物理单位的字符串组合,那么进行大小比较的时候就可以做此定制。     下面针对6种比较方法中的一种来进行定制示范,选择小于判断来做尝试。写如下示范代码:class myClass:       def __init__(self,value):

2017-08-16 22:39:58 2669

原创 Python2与Python3中__bool__方法的差异

学习Python面向对象编程的时候,遇到了一个很有意思的小问题。Python的__bool__方法不起作用的问题。       我反复读了我手中的教程,确认了我写的代码应该管用。可是在测试的时候却一直不通过,后来发现我实现的__bool__方法似乎并不是Python本身的接口。       代码如下:class Demo():       def __init__(self,val

2017-08-16 22:24:03 2313

原创 Python中的哈希常识小结

Python中,哈希是一种将相对复杂的值简化成小整数的计算方式。哈希值可以表示出原值所有的位,有些哈希值会得出非常大的数值,这样的算法通常用于密码学。       Python中也有基础的模块库可以支持部分哈希的算法。       不同的平台、不同的系统哈希值的计算可能会不同,这里简单对我自己的电脑做一个试探。写如下测试代码:x = object()print(hash(x))

2017-08-16 20:52:27 9963

原创 Office 2016 Excel实现下拉栏

我对Office并不精通,最多就是拿来码码字,Excel以及PPT用的很少。在这几个工具中,我觉得最有技术含量的就是Excel。特别是在数据处理、各种总结、规划等等方面有着很广泛的使用。       之前有个小功能我还是掌握了的,那就是实现下拉栏的功能。掌握这个功能的时候我使用的Office版本还是2007。这个功能用了多年,一直用着不错。今天用了一下2016版本的Excel,发现这个功能找不

2017-08-13 14:52:21 2625

原创 Python中的静态函数的用法

Python中也存在静态函数,查看文档之后,文档解释这个功能跟Java或者C++的功能相同的。       总结Python中的静态函数,先看一段自己写的简单的代码:class MyClass:       @staticmethod       def Func():              print("static function inpython") cla

2017-08-12 19:16:08 1537

空空如也

grey_csdn的留言板

发表于 2020-01-02 最后回复 2020-05-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除