- 博客(30)
- 收藏
- 关注
原创 深入了解计算机系统——利用循环展开对程序的优化
理论上,随着循环展开数量的不断增加,操作的时延应该会不断逼近Issue. 而如果有两个处理单元的话,那么1个lock里就能执行两个操作,这使得时延变为0.5!比方说,一个整数乘法需要3个时钟周期,但如果用pipeline执行,每一个clock都能“发射”一条微指令,这样每一个clock都能执行一条指令.在本例中优化幅度很小.但是由于length()的时间复杂度是O(n), 当v的长度很大的时候, 循环执行n次, 时间复杂度为O(n^2), 增长速度远远大于O(n)现代的处理器都有多个处理单元。
2024-04-24 21:04:21
963
1
原创 HTML5详解!在HTML上增加的特性
controls: 控件(播放器控制条- autoplay: 自动播放\: 用于定义\元素的媒体资源。可以提供多个 `` 元素以支持不同的视频格式。浏览器将选择第一个支持的格式进行播放。- src: 路径- type: 文件格式\: 用于在 `` 元素不受支持时提供替代内容。这里提供了一个 Flash 视频(SWF 格式)的备用方案.`` 元素是 `` 的一种替代方式,这里用于嵌入
2024-02-27 00:08:20
1069
原创 全面介绍HTML的语法!轻松写出网页
HTML,即**Hypertext Markup Language(超文本标记语言)**, 是网页显示的核心语言.HTML中最重要的要素是tag(标签). 所有的关键词都被一组标签包含.```html My First Heading My first paragraph. ```例如\和\,
2024-02-26 21:38:51
1343
原创 操作系统详解(5.2)——信号(Signal)的题目进阶
Q3中的问题:由于fork()以后子进程最后一定会直接exit返回,所以跳出while循环的父进程最少拥有两个子进程。以child为例,如果不屏蔽信号,那么很可能会使进程接收到信号后使child+1=1, 那么当fork以后,的时候就会执行handler, 并且回收所有子进程,这样就会使child >=2,不会执行pause().:由上图标红的n=4, n=3, n=2可以知道,sum分别是3, 2, 1.上面的流程图虽然表明了n的取值,但是不能反映出父进程与子进程之间的关系。
2024-01-15 21:30:23
1108
原创 操作系统详解(5.1)——信号(Signal)的相关题目
前面说过,handler不会被同种信号再次打断,所以一旦执行过一次handler, pre_alarm和post_alarm都会置1,所以不存在post_alarm为0而pre_alrm为1的情况。所以31行的alarm可能返回0,1,2. 即30执行完后可能被阻塞了0, 1, 2秒甚至更长的时间。由代码可知,第30,31,38,9行都可能会向子进程发送信号, 故最多发送4个信号。了31行的alarm,要么第9行发送的信号被31行发送的pending signal。这里很有意思的是,第33行的。
2024-01-14 15:35:30
916
原创 操作系统详解(5)——信号(Signal)
与Exception(异常处理)相比,signal是软件层面的,更高级的处理机制。signal能使当前的进程和kernel打断其它的进程。Signals 提供了机制,能把exceptions的出现暴露给用户进程本文介绍了signal的基本原理与实现机制, 并给予了signal发送,接收,处理的使用用例. 但信号的知识点非常复杂, 接下来的文章将辅以实际的案例, 通过题目以及手搓一个简单的shell来加深对signal的理解.
2024-01-14 00:07:09
1716
原创 文件批量修改文件名
笔者在使用jekyll生成网页时,需要把每个md文档的前面加上形如"2023-12-26-"的前缀,那么如何批量地修改文件名呢?
2023-12-26 10:16:16
1120
原创 QT GUI代码大全(MainWindow, QFile, QPainter, QGraphicsItem/Scene/View)
例子:return QRectF(-TILE_SIZE, -TILE_SIZE, TILE_SIZE * 2, TILE_SIZE * 2 );//使用实例:scene->setSceneRect(-100, -100, 200, 200);//设置scene的位置。//设置事件过滤器, filterObj会拦截并处理this的实践。对应的intersect(相交),而contain是包含(区域)使用:serData(GD_Type, GO_Food);
2023-12-20 00:37:45
2003
原创 关于指针的辨析——指针,数组,数组指针,指针数组,函数指针,返回指针的函数
当遇见一个无比复杂的定义时,只要看括号最里面是什么即可,更准确地说,是看*这就又涉及到操作符的运算顺序了,数组名可以看作是指针常量。
2023-12-11 10:31:07
421
1
原创 操作系统详解(4)——进程控制(fork, waitpid, sleep, execve)
介绍了进程控制的相关函数, 包括fork, waitpid, sleep, execve, 其中fork与wait是极其重要且难懂的.下一章将讲解信号机制以及实现.
2023-12-10 15:40:57
1585
1
原创 操作系统详解(3)——进程、并发和并行
进程是计算机科学中 最深刻、最成功的概念之一。进程的经典定义就是一个执行中程序的实例。系统中的每个程序都运行在某个进程的上下文(context)中。介绍了进程的概念以及并发的内涵,并区分了并发与并行的区别。下一章将讲解进程的控制,包括子进程的创建(fork), 子进程回收(waitpid), 加载并运行程序(execve)
2023-12-07 20:23:03
1413
1
原创 操作系统详解(2)——异常处理(Exception)
介绍了操作系统的异常处理机制,并区分了异常的种类以及它们相应不同的处理方式。下一章将讲解进程的具体内容,包括并发的概念以及如何用Fork创建子进程。
2023-12-06 23:37:53
1533
1
原创 操作系统详解(1)——操作系统的作用
操作系统是管理电脑硬件的程序,为应用程序提供基础,是用户与硬件间的桥梁。它保护硬件不被应用程序误用。应用程序通过简单且统一的方法操作硬件分工:applications 不能直接访问I/O设施通过操作系统提供的services(比如syscall)简要介绍了什么是操作系统。下一章会说明操作系统的异常处理机制。数据在内存中的对齐问题计算机编译程序的原理函数调用的汇编原理汇编语句详解(持续更新)关于位运算必须记住的事C语言中的类型转换。
2023-12-05 13:06:07
572
原创 图论(2)——道路与回路
设C是简单图G中含结点数大于3的一个初级回路,如果结点vi和vj在C中不相邻,而边 (vi,vj)∈\in∈E(G),则称(vi,vj)是C的一条弦。该回路也称为带弦回路(chordal circuit)。设G=(V,E)是无向图,如果V(G)可以划分为子 集X和Y,使得对所有的e=(u,v)∈\in∈E(G), 都有u 和v分属于X和Y,则称G是二分图。无向连通图G=(V, E)中的一条经过所有边的简单回路(道路)称为G的欧拉回路(道路)包含欧拉回路的图为欧拉图。
2023-11-28 11:23:02
2669
原创 图论(1)——图的基本概念
二元组(V(G),E(G))称为图。其中, V(G)是非空集合,称为结点集E(G)是V(G)诸结点之间边的集合常用G=(V,E)表示图即结点数|V|=n, 边数|E|=m两个图G1=(V1, E1), G2=(V2, E2),如果V1和V2之间存在双射f, 而且(u, v)∈\in∈E1, 当且仅当(f(u), f(v))∈\in∈E2时, 称G1和G2同构记作G1≅G2。
2023-11-23 18:18:23
461
原创 如何在Windows下使用Valgrind
Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。可惜这么强大的工具(几乎)只能在linux上运行, Windows上是不能直接使用的.好在可以通过Windows下的linux子系统进行使用.本文是配置linux子系统并初步使用Valgrind的教程
2023-11-15 21:37:40
5962
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人