详情

全站展示位

C++ inline关键字详解方寸之间

当程序执行函数调用指令时,CPU将存储该函数调用后指令的内存地址,将函数的参数复制到堆栈上,最后将控制权转移到指定的函数。然后,CPU执行函数代码,将函数返回值存储在预定义的内存位置/寄存器中,并将控制权返回给调用函数。如果函数的执行时间少于从调用者函数到被调用函数(被调用者)的切换时间,则这...。。。

推荐

分类目录归档:ENglISh |

技術文章及人生思考

心灵鸡汤

  晋代名臣陶侃年轻时曾任浔阳县吏。

  一次,他派人给母亲送了一罐腌制好的鱼。他母亲湛氏收到后,又原封不动退回给他,并写信给他说:“你身为县吏,用公家的物品送给我,不但对我没任何好处,反而增添了我的担忧。”

  这件事陶侃受到很深的教育。

列表展示

主站展示位

PGP工作原理方寸之间

前言最近在浏览博客的时候发现博主的PGP Key页面,虽然之前知道是用于邮件通信加密的,但是具体原理及使用却不太清楚,所以找了时间查阅了相关资料,整理一下PGP加密的一些内容。定义Pretty Good Privacy(PGP)是一个加密程序,为数据通信提…

安装Linux后Windows EFI分区消失的问题解决方寸之间

最近在电脑上安装了最新的Arch Linux,这次不同于之前,使用了Gnome的桌面环境,用起来还不错,所以就按照我之前的配置文件,光速配置了一下电脑。然而当我配置Windows双启动的时候,却找不到Windows的EFI分区了,很奇怪,我的两个系统安装在两个硬盘里,所…

Arch Linux 如何切换内核方寸之间

Notice切换内核不是一件容易的事。我建议你有一个实际的理由这样做,而不仅仅是实验/为了好玩。虽然这本身并不是一个困难的过程。因为 linux 发行版通常设置为与特定内核配合使用。虽然有些不像其他发行版那样与内核紧密相连,但许多发行版维护者选择特…

Arch Linux 如何切换内核方寸之间

切换内核不是一件容易的事。我建议你有一个实际的理由这样做,而不仅仅是实验/为了好玩。虽然这本身并不是一个困难的过程。因为 linux 发行版通常设置为与特定内核配合使用。虽然有些不像其他发行版那样与内核紧密相连,但许多发行版维护者选择特定的内核是有原因的。Arch Linux 发行版不像 Ubuntu,RHEL

Linux的cron命令详解方寸之间

Cron是Linux一个很有用的工具,也是开发人员最喜欢的工具,因为它可以让你使用通用脚本和特定于任务的脚本在特定的时间段、日期和间隔自动运行命令。有了该描述,你可以想象系统管理员如何使用它来自动执行备份任务、目录清除、通知等。

Linux创建systemd服务方寸之间

创建自定义systemd Service 创建一个脚本或者使用可执行文件,本文以一个test.bash脚本为例: DATE=`date '+%Y-%m-%d %H:%M:%S'` echo

如何将Julia添加到Jupyter Notebook方寸之间

Julia是一门灵活的动态语言,适合用于科学计算和数值计算,并且性能可与传统的静态类型语言媲美。JupyterNotebook是目前最流行的数据科学Web程序,功能涵盖数据清理和转换,数值模拟,统计建模,数据可视化,机器学习等。本文旨在使用IJulia将Julia集成到Jupyter交互式环境中。本文假设你已经安装好了Julia和Jupyter环境。 第一步 在命令行键入julia,运行Julia程序,出现以下提示: $ julia _ _ _(_)_ | Documentation:

快速查看github代码库中某次commit的记录方寸之间

本文介绍了如何快速查看 GitHub 代码库中某次 commit 的记录。通过本文介绍的方法,你可以快速查看 commit 的相关信息,包括提交时间、提交者、提交内容等。

C++ Static关键字详解方寸之间

C++的static有两种用法:面向过程程序设计中的static(延续C语言)和面向对象程序设计中的static。 面向过程: 静态全局变量: 该变量在全局数据区分配内存; 未经初始化的静态全局变量会被程序自动初始化为0(自动变量的值是随机的,除非它被显式初始化); 静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的; 静态全局变量不能被其它文件所用; 其它文件中可以定义相同名字的变量,不会发生冲突; 静态局部变量: 该变量在全局数据区分配内存; 静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化; 静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0; 它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束; 静态函数: 在函数的返回类型前加上static关键字,函数即被定义为静态函数。静态函数与普通函数不同,它只能在声明它的文件当中可见,不能被其它文件使用。 其它文件中可以定义相同名字的函数,不会发生冲突; 面向对象 静态数据成员 对于非静态数据成员,每个类对象都有自己的拷贝。而静态数据成员被当作是类的成员。无论这个类的对象被定义了多少个,静态数据成员在程序中也只有一份拷贝,由该类型的所有对象共享访问。 静态数据成员存储在全局数据区。静态数据成员定义时要分配空间,所以不能在类声明中定义。 静态数据成员和普通数据成员一样遵从public,protected,private访问规则。 静态数据成员在全局数据区分配内存,属于本类的所有对象共享,所以,它不属于特定的类对象,在没有产生类对象时其作用域就可见,即在没有产生类的实例时,我们就可以操作它。 类的静态数据成员有两种访问形式:<类对象名>.<静态数据成员名> 或 <类类型名>::<静态数据成员名> 静态数据成员初始化的格式为:<数据类型><类名>::<静态数据成员名>=<值> 静态数据成员主要用在各个对象都有相同的某项属性的时候。比如对于一个存款类,每个实例的利息都是相同的。所以,应该把利息设为存款类的静态数据成员。这有两个好处,第一,不管定义多少个存款类对象,利息数据成员都共享分配在全局数据区的内存,所以节省存储空间。第二,一旦利息需要改变时,只要改变一次,则所有存款类对象的利息全改变过来了; 同全局变量相比,使用静态数据成员有两个优势: 静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其它全局名字冲突的可能性; 可以实现信息隐藏。静态数据成员可以是private成员,而全局变量不能; 静态数据函数 类体外的函数定义不能指定关键字static; 静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数; 非静态成员函数可以任意地访问静态成员函数和静态数据成员; 静态成员函数不能访问非静态成员函数和非静态数据成员; 调用静态成员函数,可以用成员访问操作符(.)和(->)为一个类的对象或指向类对象的指针调用静态成员函数,也可以直接使用如下格式:<类名>::<静态成员函数名>(<参数表>)调用类的静态成员函数; 由于没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长; 静态成员函数可以继承和覆盖,但无法是虚函数 Rerference

[译]费曼技巧:最好的学习方式方寸之间

写在前面 最近读书的时候偶然发现了费曼技巧,所以查阅了一些资料,找到了这篇文章,写的还不错,就翻译了一下给大家看看,原文在这里。 其实费曼技巧原理很简单,当时了解到的时候,就感觉有点像我给自己的父母去解释一些新的概念的时候的思路:用简单的语言去解释一些较为复杂的概念,在这个思路的转换期间,你也就学会了这个概念。 如果你正在寻找一种方法来增强你的学习并变得更聪明,那么费曼技术可能就是绝对学习任何东西的最佳方法。 费曼技巧(Feynman Technique)有四个步骤: 选择想学习的概念 假装正在将其教给小孩子 找出解释中的空白(gaps,自己不理解的部分);回到原始资料,以更好地理解它。 查看并简化(可选) 如果你不学习,就表示停滞不前。但是,我们如何获得关于所学知识的反馈?以及我们如何去学习新的学科并找出我们现有知识中的空白? 两种知识 费曼了解了解某事和知道某事的名字之间的区别,这是他成功的最重要原因之一。我们大多数人专注于错误的知识类型。第一种知识集中在知道事物的名称,即所谓的事物名称。第二种知识重点是实际了解一些东西,即了解一些东西。 “说自己知道自己的想法但无法表达的人通常不知道自己的想法。” —莫蒂默·阿德勒 费曼技巧 第一步:教给孩子(Teach it to a child) 取出一张空白的纸。在顶部写下你要学习的主题。现在,把你要了解的所有知识写出来,就像在教给孩子一样。不是你的聪明成人朋友,而是12岁的孩子,而且他的词汇量和注意力跨度足以理解基本概念和关系。 事实证明,我们欺骗自己的方法之一就是我们使用了复杂的词汇和行话,以掩盖我们缺乏理解的事实。 当你以一种可以让孩子理解的简单语言从头到尾写下一个想法时,你会强迫自己更深入地理解该概念,并简化这些想法之间的关系和联系。其中一些可能很容易理解。在这些地方你可以清楚地了解该主题。在其他时候,你会很挣扎。这些是你在理解上有一些空白的地方。 第二步:检查(Review) 只有当你遇到知识上的空白时,即你忘记了重要的东西,无法解释它,或者只是在思考一些因素如何相互作用时,才能真正开始学习。 既然你已经知道自己陷于何处,那就回到原始资料重新学习它,直到可以用基本术语进行解释。当你可以不加专业术语地阐述自己的理解时,就可以表明自己真正理解它了。这是学习新知识所必需要的努力,如果你跳过这一步会导致“已经理解了“的错觉。 确定自身的理解范围还可以限制您可能犯的错误,并增加应用知识时获得成功的机会。 第三步:组织和简化(Organize and Simplify) 现在,你有了一组手工制作的笔记。检查它们,以确保你没有错误地从原始资料中借用任何专业术语。将它们整理成一个简单的解释,你可以说出来给自己听。如果阐述的不简单或听起来令人困惑,则表明你对该领域的理解仍需要一些努力。 如果你一遍又一遍地遵循这种方法去学习新的知识,最终将得到一个装订满各种主题页的活页夹。如果你每年花费一些时间整理这种活页夹,你会发现你已经学会了很多东西。 第四步:可选:传播(Transmit) 如果你真的想确定自己的理解力,那就把它说给某个人听(最好是对这门学科了解甚少的人,或者找到那个12岁的孩子!)。对你掌握的知识的最终考验是你将知识传达给他人的能力。 费曼技巧不仅是学习的绝妙方法,而且还是进入不同思维方式的窗口,可让你将想法分解并从头开始进行重构。你不仅可以加强自己的学习,而且还可以加强他们的学习。重要的是,以这种方式处理问题可以使你了解那些不知道他们自己在说什么的人。(请参阅贝茨模拟)Feynman的方法直观地认为,智力是成长的过程,与Carol Dweck的著作很好地吻合,后者很好地描述了固定和成长心态之间的差异。

Archlinux Install & ConfigArch Linux Installation Guide on HP Pavilion方寸之间

My computer details: Computer: HP Pavilion laptop CPU: Intel i5-8250U GPU: NVIDIA MX150 Pre-installation Verify the boot mode To verify if it is UEFI mode, use this command: ls /sys/firmware/efi/efivars If it show some details, the system is UEFI. Otherwise, the system may be booted in BIOS or CSM mode. Connect to the internet Because I'm using HP laptop. so i just need connect to wifi with this command wifi-menu. If you want to connect to wired network, reference official guide about dhcpcd You can check this connection by ping www.archlinux.org. Update the system clock Use timedatectl set-ntp true to ensure the system clock is accurate, to check the service status, use timedatectl status. Partition the disks Use lsblk or fdisk -l to vertified device. First, run fdisk /dev/sda(note: if your device is /dev/sdX, run fdisk /dev/sdX), and you will enter the fdisk dialog. Next enter m...

Git中的一个特殊hash方寸之间

最近了解了一点Git的内部原理,看到了一个特殊的hash,所以写了这一篇文章来分享自己的看法。 ============== 既然你读这篇文章,那就意味着你应该比较熟悉Git的一系列操作,不过,在你使用 Git 的时候,你有没有遇到以下hash: 4b825dc642cb6eb9a060e54bf8d69288fbee4904 可能你会觉得git中的每个对象都有一个hash值,谁会注意hash的数值。确实,没有人会注意。 但是上面的这个hash确实是一个很特别的hash,接下来就来说明为什么这个hash是一个特殊的存在。 git中hash从哪里来? 每个 git 存储库,即使是空存储库也将包含这段hash。这可以通过 git show 验证: $ git show 4b825dc642cb6eb9a060e54bf8d69288fbee4904 tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 那么这个hash是从哪里来的呢?在这之前我们需要了解一点Git的知识:Git 的核心部分是一个简单的键值对数据库(key-value data store)。 你可以向 Git 仓库中插入任意类型的内容,它会返回一个唯一的键,通过该键可以在任意时刻再次取回该内容。 我们可以使用git hash-object命令来存储一个对象并获取该对象的键。 $ echo 'test' | git hash-object -w --stdin 9daeafb9864cf43055ae93beb0afd6c7d144bfa4 Git 内部存储的数据类似下面这样,其中每个对象都有其对应的hash值: ps:如果你仍然好奇,Pro Git 的 Git Internals 章节有更多详细介绍。 那么接下来说正题,这个特殊hash是如何产生的呢?它实际上是一棵空树的哈希值。可以通过为空字符串的/dev/null创建对象哈希来验证: $ git hash-object -t tree /dev/null 4b825dc642cb6eb9a060e54bf8d69288fbee4904 //或者 $ echo -n '' | git hash-object -t tree --stdin 4b825dc642cb6eb9a060e54bf8d69288fbee4904 空树hash的特殊用处 空树hash可以与git diff一起使用。例如,如果你想检查目录中的空白错误,您可以使用 --check 选项并将 HEAD 与空树进行比较: $ echo

恢复“新建”文件类型方寸之间

有的时候我们会发现自己常用的“新建”文件类型丢失了,这时候我们可以修改注册表来添加找回。 假设丢失的是新建.txt 文件类型 用记事本新建一个文本文件,命名为“ADDTXT.REG” 输入以下代码:Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\.TXT\ShellNew]

友情链接方寸之间

欢迎交流联系,互换友链!

Auto emailing TODO list with Github Actions方寸之间

What's Github Actions Github Actions is a CI(continuous integration) and CD(continuous deployment) service that help you automate your software development workflows in the same place you store code and collaborate on pull requests and issues. It was launched in October 2018 and was officially available to all users in November 2019. With Github Actions you can write individual tasks, called actions, and combine them to create a custom workflow. Workflows are custom automated processes that you can set up in your repository to build, test, package, release, or deploy any code project on GitHub. You can create workflows using actions defined in your repository, open source actions in a public repository on GitHub, or a published Docker container image. But workflows in forked repositories don't run by default. If you don't want to create your actions by yourself, you can discover actions in the GitHub Marketplace, also...

Linux挂起和休眠的区别方寸之间

linux的挂起和休眠之间的区别到底是什么? Linux有三种挂起方式:挂起至RAM(通常称为suspend),挂起至磁盘(通常称为hibernate)和混合挂起(hybrid suspend) 挂起至RAM(Suspend,译为睡眠) 该模式通过将系统状态保存在RAM 中使计算机进入睡眠状态。在这种状态下,计算机进入低功耗模式,但是系统仍然需要电源才能将数据保留在RAM中。 需要明确的是,挂起不会关闭计算机。 挂起至磁盘(Hibernate,译为休眠) 该模式将内存的当前内容移入[SWAP]空间。在这种状态下,计算机不需要电源。当你启动计算机时,所有内容都会复制回RAM,然后从上次中断的地方继续。 需要明确的是,计算机已完全关闭了Hibernate的电源。 混合挂起(Hybrid Suspend) 该模式结合了以上两种模式的特点,将计算机的状态保存到交换空间中,但不关闭计算机电源,而是是调用suspend模式。因此,如果电池没有耗尽,则系统可以从RAM恢复。如果电池电量耗尽,则可以从磁盘恢复系统,这比从RAM恢复速度要慢得多,但是计算机的状态并未丢失。 对于ArchLinux,默认的管理接口是systemd,如果你没有安装其他的电源管理软件的话,你需要手动设置才可以正常使用休眠功能。当然,前提是你有设置SWAP分区。

Linux挂起和休眠的区别方寸之间

linux的挂起和休眠之间的区别到底是什么? Linux有三种挂起方式:挂起至RAM(通常称为suspend)

博客寄语:

    There are two wolves who are always fighting. One is darkness and despair. The other is light and hope. The question is... which wolf wins?

实时播报:

博客号-学习成长

相信每一分耕耘都有每一分收获,致力帮助博客主所创作的博客能更快的被收录! 如果有其它需求,可联系下方邮箱。