自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (1)
  • 收藏
  • 关注

原创 指定运行时动态库搜索位置:-rpath链接指令的正确用法(相对路径or绝对路径)

当编译可执行程序时,若采用隐式链接,那么需要在编译时为可执行程序指定运行时动态库搜索地址,即利用rpath选项来告诉链接器在程序执行时到哪里去找它依赖的动态库。例子如下:-Wl,-rpath,<path/to/lib>注:有的编译器也支持-Wl,rpath = <path/to/lib>这种用法那么,这里的路径应该采用相对路径还是绝对路径呢?答:在rpath中使用相对路径是没有意义的,因为相对路径是相对于当前工作路径,而非相对于可执行程序本身所在的路径!!举个例子

2020-09-22 01:00:21 6641

原创 操作系统——底层结构与设计原理知识汇总

JOS源文件安排:inc/ 这个文件夹是一些include文件,即各种类型的头文件。 env.h Public definitions for user-mode environments trap.h Public definitions for trap handling sy...

2020-05-05 21:39:52 914

翻译 回调函数示例(清晰易懂)

#include <stdio.h>#include <stddef.h>#define CALLBACK_MAX 10typedef void (*callback_t)(void);static callback_t callbacks[CALLBACK_MAX];static size_t n = 0;void register_callback(...

2019-12-31 22:53:13 444 1

原创 scanf()函数的真实含义及其正确用法

本文章翻译自公开外文,请谨慎转载。0. scanf()函数有什么问题?规则0: 不要使用scanf()(除非你知道你在干什么)1. 我想从用户那读入一个数下面是一个常见的用法:#include <stdio.h>int a;scanf("%d", &a);printf("你输入的数字是:%d\n", a);你在写这段代码时大概应该知道“%d”是...

2019-11-18 00:20:57 1957

原创 操作系统——进程原理篇

进程进程及线程是操作系统对CPU进行管理的手段,其中最重要的内容是并发。因为要并发,所以发明了进程,又进一步发明了线程。进程是在CPU层面上提供并发的抽象(进程与进程间并行);线程则属于在进程这个层次上再提供一层并发的抽象(进程内部线程与线程间的并行)。进程:一个程序加载到内存后就变为进程,即进程=程序+执行。每个进程占用一片内存空间。因为一个进程的执行过程中只占用其生命周期的一部分来使用...

2019-11-09 11:42:48 1181

原创 操作系统——内存原理篇

操作系统内核的学习大概从2019.2.2开始,之后春节近一个月进展缓慢没做什么具体工作(期间帮张jm做项目浪费了不少时间),从大概3.3开始进行jos实验。内存原理篇的核心思想是虚拟内存:通过这种机制,操作系统将内存的容量扩增至无限大、将内存访问速度大幅提高make //从源代码构建出可执行的boot loader和kernel文件,即obj/kern/kernel.img ...

2019-11-09 11:27:24 368

原创 避免成员函数的参数名与成员变量名相同

例如下面这个简单代码:class Test{private: int action=0;public: void set_action(int action){ action = action; //这条语句并不会将成员变量action的值设为想要的。 } int get_action(){ return action; }};int main()...

2019-10-13 19:43:48 1231

原创 报错dyld: Library not loaded原因:链接时和运行时都需要指定动态库路径(利用@rpath指定运行时动态库路径)

最近在mac上写了一个动态库,然后又写了一个可执行文件来链接它并使用该动态库。链接时一切正常,但是在执行生成的可执行文件时出现了下面的链接报错:dyld: Library not loaded: ./obj/libtest.dylibReferenced from: /Users/zeng/Workspace/practice_make/generate_lib/./testReaso...

2019-10-02 17:09:39 3778

转载 C++的cin/cout输入输出流概念及其与缓冲区关系

转自:https://blog.csdn.net/selina8921/article/details/79067941其他链接:https://blog.csdn.net/selina8921/article/details/79067941https://www.cnblogs.com/gujiayue/p/5536661.html(类比了送快递与cin缓冲)https://bl...

2019-08-26 23:58:27 866

原创 deal.II中文文档

我翻译了deal.II的一些文档,初学者可以用来入门。放在github上了,有意愿的可以继续翻译并且发起pull request。链接:https://github.com/2012ZGZYY/Dual_error_DG/tree/master/deal.II翻译文档禁止转载。...

2019-07-12 08:12:17 1893

原创 如何取消亚马逊AWS云计算服务EC2自动收费

去年用过一次aws的免费云计算服务,免费一年。今天突然收到信用卡扣费短信,原来是去年免费服务自动续约了,老外这消费模式真是傻逼。。。没办法,上官网查一下,把那个服务取消吧。真是折腾了好久才找到那个取消服务的入口,特此记录一下给需要的童鞋。1、登录aws控制台,点击右上角的用户名(你的账户),在下拉菜单中选择我的账单控制面板(billing dashboard)然后可看到如下页面:...

2019-06-04 22:44:19 19489 5

转载 怎么写makefile——超详细指南

https://www.cnblogs.com/mfryf/p/3305778.html

2019-05-25 23:12:20 386

原创 CSAPP深入理解计算机系统笔记

csapp的学习从2019.3.18开始。从05.10-08.01这几个月一直工作,重心转去学了点软件工程和面向对象的东西,中断了这部分的学习。从08.01重新继续这部分的学习,但平时工作忙,只能挤出很少的时间。前言:如果是第一次看csapp这本书,建议先不要看,直接去看上交软院的课程主页,按照上面的课件学习。推荐一个个人博客“不周山之读薄CSAPP”,也可以按这个博客学习。这本书的必...

2019-04-26 22:19:25 8525

原创 内联汇编语法说明

为什么使用内嵌汇编?——解决一些无法直接用C或C++实现的功能,比如C中没有现成的函数或语法可用。内联汇编的使用原理:在内嵌汇编中,可以将C语言变量指定为汇编指令的操作数,而且不用去管如何将C语言变量的值读入哪个寄存器,以及如何将计算结果写回C变量,你只要告诉程序中C语言变量与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。使用内嵌汇编,要先编写汇编指令...

2019-04-23 20:42:32 5966 1

转载 git中的不同分支下的同一文件,到底怎么样才能算作是冲突?

https://segmentfault.com/q/1010000008244754比如有两个分支,master和develop。针对1.txt文件,master分支:2223333 66555develop分支:2224444 77888先是有master,然后我创建了develop分支,然后再在develop分支下修改了1.txt,然后add和commit,然后切...

2019-04-05 21:06:10 3215

原创 为什么使用补码

前言:我在学补码的时候最不明白的是为什么符号位也可以跟后面的位那样做加运算且不对结果造成影响,毕竟符号位代表的是负权重(负的模值)。补码来历可总结如下:计算机里面,只有加法器,没有减法器,所有的减法运算,都必须用加法进行。 用补数代替原数(补一个模),可把减法转变为加法。出现的进位就是模,此时的进位,就应该忽略不计(减一个模)。 二进制下,有多少位数参加运算,模就是在 1 的...

2019-03-24 09:39:54 430

原创 http请求

输入网址进行访问的时候,要做的第一件事就是输入网页链接(url):* url:uniform resource locator:统一资源定位器(协议://域名:端口/路由?参数)而数据传输使用的协议,一般就是http协议:* http:hyper text transfer protocol:超文本传输协议url基本格式:scheme://host[:port#]/path/...

2019-03-18 14:41:40 151

原创 docker入门笔记

docker是个平台,在这个平台上利用container可以开发运行程序。image:是个可执行包,包含了运算程序所需的一切。可认为是用于创建container的模板。container:是image的实例化,只在运行时生成;运行一个image可以启动一个container。docker怎么用呢?以有限元库fenics来举个例子。fenics是个开源有限元库,它每年都在稳定地更...

2019-03-18 14:40:30 344

原创 fenics入门笔记

fenics名称释义:fe:finite element的简写cs:computational software的简写ni:有了fe和cs后,由于最初fenics软件是在芝加哥大学(简称为phoenix)编译的,故而在其间加入ni就很自然而然了。其实就是取个谐音。fenics有如下几个核心部件:1. dolfin:dynamic object-oriented lib...

2019-03-18 14:39:41 11091

原创 利用ROUNDUP函数进行内存对齐

内存对齐:比如一个内存单元的长度为2,为了存取方便我们应该尽量把数据放在2的倍数的位置上(如位置0,2,4,6等),此时称该数据的位置是与某个值(2)对齐的。如果放在了没对齐的地方(比如位置3)上,该数据可能跨过了一次能读取的跨度,就必须读两次才行。为了杜绝这种低效行为,我们使用一个函数ROUNDUP(n, size)来对原地址n进行修改,从而实现内存对齐。举个例子,ROUNDUP(9...

2019-03-17 17:27:24 2771

原创 把二进制文件转换为文本格式(十进制)

首先要清楚文件里,储存的数据的类型,是int,long,longlong还是float,double其次文件有无字节序(大小端)问题这两个问题解决了直接按照数据类型定义一个定长数据,或者数组一次性读入,或者分批读入全部文件。需要的话,读取以后,先转换一下字节顺序fopen,二进制读方式,打开文件,fread读取文件,fclose关闭文件然后转换成十进制ACII格式的数据...

2019-03-04 16:50:31 17597

原创 操作系统——概述

操作系统的角色是管理者,例如管理CPU、内存、磁盘等。具体地讲,包括:* CPU管理(进程管理):如何分配CPU给不同应用和用户,三个目的:1)公平,2)非阻塞,3)优先级* 内存管理:如何分配内存给不同应用和用户,即管理“缓存-主存-磁盘等介质”形成的内存架构* 外存管理(文件系统):如何分配外存(磁盘)给不同的应用和用户,将磁盘变为一个易使用的存储媒介* I/O管理(设备管理)...

2019-02-26 20:43:14 110

原创 git合作流程(collaborator模式和contributor模式)

前言:github的三种合作模式:1)fork;2)organization;3)collaborator,开发者在这三种模式下的权限依次升高。合作者模式:假设我们有两个合作者A和B共同开发维护一个代码仓库(repository),其中A是仓库的拥有者,他可以为项目添加合作者。A在他github项目主页的Settings——Collaborators里面进行添加,邀请B为合作者。B在收...

2019-02-06 20:57:52 11956

翻译 一篇关于开源有限元库Fenics的评论:FEniCS is highly overrated. Avoid it.

最近看到一篇关于fenics的评论,觉得挺有意思,遂搬运过来。大意就是说fenics虽然名为开源库,但实际上开源的效果并不是很好。对于做有限元分析的新手来说它不怎么友好,其实际效果是被高估了的。其实我也研究了一段时间fenics了,不得不承认它的抽象做得确实够好,但过度的抽象就丢失了具体。我只能说想要摸清楚它底层的实现过程,或者想自定义地修改一些模块都太难了。如果想自己来编代码搞搞学术研究吧,只能...

2018-12-31 16:41:55 2969

原创 python报错:can't read /var/mail/tkinter

我犯这个错误的原因是直接在linux的命令窗口输入了:from tkinter import *,而非在python的交互命令窗口下输入。所以解决办法是:先在linux的命令行输入python, 等进入python的shell之后(出现&gt;&gt;&gt;),再执行上述import操作。实际上,如果你是想运行一个.py文件,但却错误地直接使用了linux的shell来运行,而非使用命令...

2018-12-08 22:55:57 5438 1

原创 C++调用C函数用cmake编译时的一个诡吊链接错误

项目中需要用到C++程序调用一个在.c文件中实现的c函数,我按照网上给的方法,用extern声明,但老是链接错误。把问题简单化到很小查了半天,仍然不知为什么编译都正常,就是链接不上那个在.c文件中实现的函数。而且最为诡吊的是,当我把函数名改变后,又能链接成功了。后来经过调试,发现这次链接成功居然又是伪成功,因为它链接到的是一个不知道什么鬼的库函数,而不是我实现的那个函数。也就是说,看上去是链接...

2018-10-22 15:03:36 1449

原创 爬虫练习:爬取网易云音乐热歌榜全部歌曲的热门评论

目标:爬取网易云音乐热歌榜中全部歌曲(共200首)的热门评论(每首歌有15个热门评论)分析:需要分两步走,第一步是定位到热歌榜单所在的资源,从而得到这热歌榜中到底有哪些歌并获得每首歌的id;第二步是根据上一步得到的每首歌的id,定位到单独每首歌所在的资源,从而得到每首歌下的评论信息。具体讲:1)首先我们需要得到热歌榜数据所在的url,经浏览器开发者工具查看网页代码,得知热歌榜的数据所在...

2018-08-28 22:35:45 2572

原创 windows下安装python的各种库——最简单的方法:直接利用anaconda的命令

最近写爬虫需要用到python的一些库,我是win7下用anaconda下的spyder开发,比如最基本的我们想要安装requests库。因为用惯了linux系统,在网上搜了半天怎么在Windows下装这个东西,好多教程用到pip来安装,但问题是我电脑上也没装pip;要么就是还需要自己去确定各种路径,真是费神。后来查到如下简单的方法,特此记录一下:实际上,只要已经安装了anaconda,要...

2018-08-20 22:22:12 3550 3

原创 C++ pow()函数计算结果转换为整型时产生误差的问题

在LeetCode上在线刷题遇到的问题,简化为如下的问题:int main(){ long int x = 61453901951867000; long int y; cout&lt;&lt;fixed&lt;&lt;setprecision(15)&lt;&lt;5*(pow(10, 1))&lt;&lt;endl; //输出50.000000000000000 ...

2018-08-15 15:06:59 2400

原创 求最大子序和的动态规划法(Leetcode第53题)

题目:给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [2,-3, 2,-1, 3],输出: 4解释:连续子数组[2,-1, 3] 的和最大,为4。进阶:如果你已经实现复杂度为 O(n) 的解法(即动态规划法),尝试使用更为精妙的分治法求解。在这里动态规划法对我来说是最不好理解的,所以着重讲一下这...

2018-08-03 17:46:48 927 4

转载 哈希表原理(直观易懂解释)

理解哈希表的原理,其核心是理解所谓的哈希函数(散列函数)。即如何构建一个确定的映射,它能把关键字映射到一个唯一的存储位置。这种映射应该是我们可以进行计算的。已知关键字,我们应该能算出其地址;反之,已知地址,我们可以检索到对应的关键字。一旦建立起这种关系,那么给定关键字,我就能直接利用这个映射(即所谓的哈希函数)直接算出其地址并寻址。这可大大缩减确定关键字存储位置所花的时间。先来了解一下Hash...

2018-07-15 23:19:07 14589 11

原创 用输入文件流读入数据失败的一个错误(应确保开始读数据时文件流是指向文件开头的,而非指向末尾)

今天用输入文件流读文件数据时犯了一个错误,找了半天才排查出来问题在哪,特此记录。简言之,我的错误在于在读入数据之前,使用文件流进行了一些别的操作,导致文件流指向了文件末尾。然后我再使用它来读文件,当然就不对了。文件是很简单的一列小数,比如只有三个数这样:(1.1  2.2  3.3)^T代码为:void read_from_solution_file(const std::string&amp; ...

2018-07-01 16:01:24 863

原创 python安装numpy,scipy,matplotlib

Python版本:2.7.3在命令行中输入即可:[python] view plain copysudo apt-get install python-numpy python-scipy python-matplotlib  

2018-06-15 15:16:25 169

转载 什么时候需要使用引用?使用引用的好处是什么?

作者:谢之易链接:https://www.zhihu.com/question/34267829/answer/58414818来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。记忆里《C++ 的设计与演化》一书提过,当初加入“引用”这个语言特性的契机是运算符重载。为了让运算符重载的语法能够更加接近内建的运算符,需要能够让一个函数返回一个左值,通俗的讲就是要能够对一个函...

2018-05-17 14:34:30 5944

原创 函数返回局部变量的指针或引用

一般来说,由于在离开函数后局部变量会被释放,所以是不允许函数返回指向局部变量的指针或引用的。我们往往需要遵循如下原则:引用作为返回值,必须遵守以下规则:(1)不能返回局部变量的引用。主要原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了"无所指"的引用,程序会进入未知状态。(2)不能返回函数内部new分配的内存的引用。虽然不存在局部变量的被动销毁问题,可对于这种情况(返回函数内部new分...

2018-05-16 23:17:53 4966

原创 成员函数返回引用用法示例

用一个测试函数加以说明:class TEST{   public:   int m =88;   const int&amp; fun()    {      //cout&lt;&lt;"address of m is: "&lt;&lt;&amp;m&lt;&lt;endl;    //m的地址为0x7fff8cad2d48      return m;    }}; int main(){ ...

2018-05-15 13:33:00 958

转载 C++模板编译: 包含编译模式与分别编译模式

写过模板的朋友也许知道,一个模板程序,当编译器看到模板定义时并不立即产生代码,只有在我们用到模板,并对其实例化的时候,才会产生特定的实例。此时,编译器就要访问定义模板的源代码了。如果源代码不可访问,当然,编译器会报错的。记得我初学的时候,采用的是直接将声明和实现全部放在一个.h里面这个方法。但是,有时候我们确实想在.h文件中声明,在CPP文件中实现,从而实现文件分离。那么下面我就写写一般模板函数,...

2018-05-05 17:40:07 878

转载 c++函数模板声明与定义相分离

最近在仿写stl,发现stl源码中将模板的声明与定义写在一起实在很不优雅。自己尝试用“传统”方法,及在.h文件里声明,在.cpp文件里定义,然后在main函数里包含.h头文件,这样会报链接错误。这是因为函数模板要被实例化后才能成为真正的函数,在使用函数模板的源文件中包含函数模板的头文件,如果该头文件中只有声明,没有定义,那编译器无法实例化该模板,最终导致链接错误。  上面这句话有点抽象。要理解为什...

2018-05-05 17:37:33 1431

转载 不要在头文件中使用using namespace

在这里,我毫不回避地说了这句话: 引用我再也不想在任何头文件中看到“using namespace xxx;”了作为一个开发者/团队领导者,我经常会去招聘新的项目成员,有时候也帮助其他组的人来面试应聘者。作为应聘流程之一,我经常要求应聘者写一些代码,因此我检查过相当多的代码。在最近提交的C++代码中,我注意到一个趋势,在任何头文件中,我总是能看到以下代码: C++代码 using namespac...

2018-05-04 10:51:18 6831

原创 error: use 'template' keyword to treat 'xx' as a dependent template name

调用模板类限定的模板函数时,即形如:A&lt;typename_a&gt;::member_function&lt;typename_b&gt;()这样的调用时;必须使用关键字template进行说明,即改为:A&lt;typename_a&gt;:: template member_function&lt;typename_b&gt;();否则可能报错:error: use 'template'...

2018-03-31 16:32:52 3683 1

MIT操作系统课程JOS实验讲义(1-7章)

MIT6.828操作系统课程的中文讲义。这个资料比较系统,比官网的英文书更好,可以与官网英文书互为补充。

2019-03-15

空空如也

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

TA关注的人

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