自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

rv0p111

学习的脚步

  • 博客(897)
  • 收藏
  • 关注

原创 线性表当中的顺序存储结构

顺序存储结构是线性表当中的物理存储结构之一,线性表的顺序存储结构指的是一段地址连续的存储单元依次存储线性表的数据元素顺序存储方式就是在内存当中找了块地,通过占位的形式,把一定内存空间给占了,然后把相同数据类型的数据元素依次存放在这块空地当中 线性表当中的每个数据元素的类型都是相同的,所以我们可以用C语言的一维数组去实现这个顺序存储结构下面就简单的介绍下其的结构的定义#in...

2018-07-02 13:39:20 287

原创 线性表的基本概念

线性表:其实就是零个或多个数据元素的有限序列线性表当中元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继,其结构如下所示我们把线性表元素的个数n(n>=0)定义为线性表的长度,当n=0的时候就称为空表 在复杂的线性表当中会有很多个数据元素,一个数据元素可以由若干个数据项组成关于线性表的抽象数据...

2018-07-02 12:35:20 349

原创 算法绪论

基本介绍 怎么说呢,我觉得这部分知识还是有必要去了解下的,所以这边也是做一个整理和记录算法其实就是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作 算法具有五个基本特性:输入、输出、有穷性、确定性和可行性输入和输出其实就是指比如说算法具有零个或多个输入,算法至少有一个或多个输出,比如说我通过printf去打印出Hello wo...

2018-07-02 09:37:55 226

原创 C++当中的子类构造函数后面跟随冒号调用父类构造方法

C++忘得也差不多了,最近突然看到一个可能忘记了的用法来记录一下,就是我子类当中的构造函数要去调用父类的构造方法可以直接通过在类中定义构造函数的时候后面用冒号然后再写上父类构造函数的调用#include <iostream>#include <cstring>#include <cstdio>#include <cstdlib&a

2018-07-02 07:24:49 1327

原创 数据结构基本概念和术语

我觉得数据结构是需要理论和实践相结合的,其实我很不愿意听到说理论没有用的话,我觉得知识是需要成体系的,你连一个面都没有,为什么就能成长的很厉害?当然纯理论肯定是不够的,所以其实还需要配合一定的实践操作,我觉得读书就是一个修养问题,下面就先简单的介绍下其基本的概念数据结构其实是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科 数据是描述客观事...

2018-07-01 22:36:59 677

原创 基于LLVM-分析Pass的制作

分析Pass在实际不修改IR的情况下提供关于IR的更高级的信息,而这些信息可以被其他的分析Pass使用来计算其结果,只要一个分析的Pass计算得出了结果,这个计算结果可以被不同的Pass拿来多次使用,直到一个Pass改变了这个IR我们先编写下我们需要去进行测试的代码int func(int a,int b){ int sum=0; int iter; fo...

2018-06-29 19:36:28 828

原创 基于LLVM-自定义Pass

首先我们要先去编写一个 FuncBlockCount.c文件#include "llvm/IR/Function.h"#include "llvm/Pass.h"#include "llvm/Support/raw_ostream.h"//引入llvm命名空间,可以让其实用LLVM当中的函

2018-06-29 14:46:25 1395

原创 基于LLVM的Pass优化

当我们如果完成了对源码的转换,得到了LLVM的IR表示形式,它是作为一种向汇编代码转换的一个公共平台,依赖不同的后端会得到不同的汇编码,在转换为汇编码之前,如果我们对IR进行优化的话就可以得到执行效率更高的代码在LLVM的架构当中,Pass的作用就是优化LLVM IR,Pass作用于LLVM IR,用来处理IR,分析IR,寻找优化的机会并修改IR,从而产生优化的代码。在下面命令行工具o...

2018-06-29 12:12:31 2549

原创 基于LLVM-增加JIT支持

JIT其实就是Just-In-Time也就是即时编译,在程序运行的时候会将代码翻译成机器码并且去执行,与之相对的就是AOT(Ahead Of Time),它在程序运行之前就会将代码翻译成机器码,JIT结合了AOT和解释执行的优势,它能够产生高效的机器码,并且具备足够的灵活性首先我们定义一个执行引擎作为全局静态变量static ExecutionEngine *TheExecutio...

2018-06-28 10:24:39 2031

原创 基于LLVM-自定义二元运算符的重载

下面就简单的介绍下,我们去构造 | (逻辑或运算符)作为样例,TOY语言当中的 | 运算符是这样使用的,其中前面的binary代表的是标识符,代表的是二元运算符的表示,然后后面就是| 运算符,再就是(LHS RHS) 根据这两个参数进行选择def binary | 5 (LHS RHS)if LHS then1else if RHS then1else0;这段代码的意思...

2018-06-27 22:40:39 545

原创 命令模式浅析

简单的举个例子就比如说电灯,开关和风扇,我们可以通过开关去控制风扇和电灯的开和关。其中开关是发送者,电线是命令对象,而风扇和电灯就是接受者。电线是可以换的,所以就是说开关可以做两个不同的操作命令模式:其实就是把请求封装成一个对象,从而可以使用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作 这样的好处就在于我们在给接受者去发送请求的时候,然后让接受者...

2018-06-27 10:37:08 254

原创 基于LLVM-for循环结构的支持

循环结构通常需要先初始化一个归纳变量,然后之后就要对这个变量做更新(增加或减少其数值),以及一个表示循环结束的终止条件,我们的for循环可以定义如下所示,其中i=1表示的是条件、idef printstar(n x) for i = 1, i < n, 1.0 in x + 1 还是一样的我们先去配置tokenenum Token_Type { ...

2018-06-25 13:23:15 1796 4

原创 离散型随机变量分布习题

下面主要是做个记录,也分享下解题思路要想用二项分布,首先要判断这个实验是不是n重伯努利试验,伯努利试验表示的是一个试验只有两个结果,将伯努利试验重复、独立的进行n次,叫做n重伯努利试验 ...

2018-06-24 15:35:38 2347

原创 基于LLVM-处理if/then/else结构

感觉自己这个辣鸡,深入怕是难度太大,还是先简单的介绍下上层的使用吧,这里的讲解还是基于之前所讲的来的,我们主要进行某些方法的改动以及另一个AST类的添加和解析首先我们如果要去添加对if、else、then的判断,那么我们的token的解析肯定是要有的,所以我们需要在枚举类型当中去添加它们相应的token,这样方便判断enum Token_Type { EOF_TOKEN...

2018-06-24 11:50:36 2138

原创 二项概率公式习题

关于题目的记录如下所示

2018-06-23 16:09:58 1569

原创 贝叶斯公式习题

简单记录下

2018-06-23 13:23:12 8876 2

原创 全概率公式习题

简单的记录下关于全概率公式的习题我们可以先看下抓阄不分先后的一个例子设袋中装有10个阄,其中8个是白阄,2个是有物之阄,甲、乙二人依次抓取一个,求没人抓得有物之阄的概率 设A,B分别为甲、乙抓得有物之阄的事件,显然P(A)=2/10,下面求P(B)因为B只有当A发生或者A的对立事件发送时才能发生,所以B⊂(A的对立事件)+A事件,所以B=B(A+(A对立事件))=BA...

2018-06-23 10:37:07 25387 3

原创 条件概率习题

关于条件概率的习题

2018-06-23 09:02:21 3067

原创 古典概率习题

对于至少有一个人中奖,我们都要将其转换为没有人中奖,然后再拿1减去这个概率

2018-06-22 22:13:06 2120

原创 操作系统习题

主要做一个整理1.1、在多道程序和分时环境中,多个用户同时共享一个系统,这种情况导致多种安全问题。a. 列出此类的问题 b.在一个分时机器中,能否确保像在特殊用途系统中一样确认同样的安全程序,并解释之 先简单的介绍下分时系统,分时是指多个用户分享使用同一台计算机。多个程序分时共享硬件和软件资源。分时操作系统是指在一台主机上连接多个带有显示器和键盘的终端,同时允许多个用户通过主机...

2018-06-21 11:29:18 8934

原创 网易2018实习生招聘笔试题-ios开发实习生(13道)

1、若对如下无向图进行遍历,则下列序列中,不是广度优先遍历序列的是() 广度优先搜索其实就是从图中某顶点v出发,在访问了v之后依次访问v的各个未曾访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使得“先被访问的顶点的邻接点先于后被访问的顶点的邻接点被访问,直至图中所有已被访问的顶点的邻接点都被访问到。如果此时图中尚有顶点未被访问,则需要另选一个未曾被访问过的顶点作...

2018-06-21 00:19:35 1304

原创 网易2018实习生招聘笔试题-ios开发实习生(10道)

不得不说自己的算法实力可能是真的没有锻炼太多,还有数据结构,操作系统这部分知识刚刚结束不久也不记得了… 下面就简单的介绍下这些题目1、MyClass *ref1 = [MyClass new];__weak MyClass *ref2 = ref1;MyClass *ref3 = ref1;__unsafe_unretained MyClass *ref4 = ref1;...

2018-06-20 20:26:20 1284

原创 Linux系统发展历程

基本概念Linux系统是UNIX的一种版本,它开始于1991年,当时是一名学生编写的,当时的Linux内核很小但是完整可以运行在80386处理器上 Linux的历史是来自世界各地的许多使用者合作开发给搭建起来的,刚开始内核只能部分执行UNIX系统服务程序的一个小子集,但是现在Linux系统以及包含了大多数UNIX的功能早期Linux发展围绕的中心就是操作系统内核,它是一种拥有特权...

2018-06-20 13:09:48 2358

原创 为AST类定义IR代码的生成

上次说到的是现在所有的必要的信息都是存储在AST这一个数据结构当中,下一个阶段就是从AST中生成的LLVM IR在代码的生成的过程当中,我们可以去使用LLVM的API,通过内建的API可以生成预定义格式的LLVM IR我们需要在BaseAST类和其的子类当中去添加Codegen函数,因为我们需要去生成其的中间表示形式的代码,其中在有些子类当中的Codegen函数的返回值是LLVM Va...

2018-06-19 23:28:13 3042

原创 语法分析器的基本要素

语法分析是编译的第二个阶段,语法分析的基本任务就是根据指定的文法识别输入的句子当中的各类短语并构造它的分析树,其实也就是识别由词法分析给出的单词符号串是否是给定文法的正确句子(程序)语法分析器根据语言的语法规则来解析代码,解析阶段决定了输入的代码是否能够根据既定的语法组成token流语法分析器则会定义一些函数来把代码组织成一种被称为AST的数据结构。解析器可以采用递归下降的解析技术...

2018-06-19 17:59:20 1334

原创 定义抽象语法树结构

有的时候真的觉得技术更新换代的太快以致于有些版本不同就会很容易的造成很多错误的产生..历经九九八十一难,才可以成功一个技术点…下面就简单的讲下抽象语法树的一些概念和定义其的具体结构 抽象语法树是一门编程语言源码的抽象语法结构的树形表示各种语言组件,例如表达式、条件控制语句等,都有相应的AST,并被区分为操作符和操作数AST并不表示这些代码如何生成,而是表达了语言组件之...

2018-06-19 16:46:06 2377

原创 简易C++词法分析程序

词法分析往往是编译程序的第一步,词法分析器会把程序代码的输入流切分为token,然后语法分析器会接受这些token,并且去把token流构建成AST(抽象语法树),一般来说,被解析成token的语言是基于上下文无关语法的,一个token可以是一个字符串,由一个或者多个同一范畴的字符组成 输入字符流构成token的过程称为符号化,我们如果要把输入的字符分组成token,还需要有特定的分界符...

2018-06-18 14:48:59 1217

原创 I/O文件的具体操作

对于一个磁盘来说,文件系统是通过文件目录从文件名来进行映射,从而得到了文件的空间分配,比如说MS-DOS将文件名映射为一个数,这个数显示了文件访问表的一个条目,这个条目说明了哪些磁盘块被分配给文件。在UNIX当中将文件名映射为inode号,相应的inode包含了空间分配信息从文件名到磁盘控制器的连接是如何建立的?下面就举个例子来说明 在MS-DOS当中,其文件名在冒号前的部分有...

2018-06-18 10:28:15 436

原创 内核数据结构

内核需要保存I/O组件使用的状态信息,可以通过若干内核数据结构比如说文件打开表等来完成 UNIX系统中在读取一个用户文件的时候,内核需要去检查下缓存,然后再去决定是否执行磁盘I/O,在读一个进程镜像时候,内核只需要从内存当中读取数据UNIX当中采用面向面向对象的技术采用统一结构来封装这些差异,有的操作系统当中是广泛的使用了面向对象的方法。例如Window NT的I/O采用消息传递来实...

2018-06-18 09:57:02 578

原创 I/O内核的子系统

基本概念 内核提供了许多和I/O有关的服务。像调度、缓冲、高速缓存、假脱机、设备预留以及错误处理是由内核I/O子系统提供的并且是建立在硬件和设备驱动程序结构之上的,I/O子系统还负责保护自己免受错误进程和恶意用户的危害下面简单的介绍下I/O的调度 其实调度I/O请求就是确定一个合适的顺序来执行这些请求,如果调用的顺序选择的合理,那么调度就能改善系统整体性能,能够在进程之间公平...

2018-06-18 09:45:23 1188

原创 阻塞和非阻塞I/O

下面就简单的介绍下阻塞和非阻塞I/O的区别当应用程序发出一个阻塞系统调用的时候,应用程序的执行就会被挂起,应用程序是会从操作系统的运行队列移到等待队列上,当系统调用完成之后,应用程序就会移回到运行队列,可以继续执行并能收到系统调用返回的值对于非阻塞的I/O,其实一个例子就是一个视频应用程序,它用来从磁盘文件上读取帧,同时解压缩并在显示器上进行输出 我们的进程当中有可能含有多...

2018-06-17 22:32:22 460

原创 Clang的不同作用

clang编译器可以拿来作为预处理器、编译器驱动、前端以及代码生成器使用,它的输出是取决于你指定的参数的接下来我们写下如下的代码#include<stdio.h>int main(){ printf("Hello World\n"); return 0;}使用下面的命令可以生成可执行文件,clang可以用作编译器驱动,编译得到可执行文件a.ou...

2018-06-17 19:30:09 1353

原创 LLVM简单介绍

LLVM全称为Lower Level Virtual Machine,最初是以C/C++为编译目标,现如今LLVM已经能够为ActionScript、D、Fortran、Haskell、Java、Objective-C、Swift、Python、Ruby、Rust、Scala等众多语言提供了编译支持,有一些新兴的语言就直接使用LLVM作为后端编译简单来说其实就是把人类可读的高级语言映射...

2018-06-17 12:37:45 1567

原创 时钟和定时器

目前很多系统都有硬件时钟和定时器来提供一些函数,比如说设置定时器在A时刻去猝发操作X,比如说获取当前时间,获取已经逝去的时间 测量逝去的时间和触发操作的硬件称为可编程间隔定时器(programmable interval timer)。它可被设置为等待一定的时间,然后去触发中断,它也可以设置成做一次或重复多次,以产生周期性中断,调度程序可以使用这种机制来产生中断,以抢占时间片用完的进程...

2018-06-16 13:33:19 1106

原创 直接内存访问DMA

如果我们要在磁盘拷贝大量文件的话,我们如果用CPU来进行控制的话,这就显着有点浪费了,因为CPU还有其他很重要的事情要处理,所以很多计算机为了减去CPU的负担,就把一部分任务下放给一个专用的处理器,称为DMA控制器 我们在进行DMA传输的时候,主机向内存中写入DMA命令块,这个块当中包括传输的源地址指针、传输的目的地址指针、传输的字节数CPU在将这个命令块的地址写入到DMA控制器的时...

2018-06-16 11:22:01 807

原创 ARKit&&Vision的识别物体

简单了解下,ARKit是苹果的增强虚拟与现实的框架,是苹果在2017年WWDC推出的AR开发平台,而Vision框架是 Apple 在 WWDC 2017 推出的图像识别框架 我们下面就来做下物体识别的例子,首先从官网下载模型下载完成之后将其导入到我们新建的工程当中 然后我们将模型给导入 然后目前我们要做的就是点击屏幕的中间部分需要有小球产生以及显示出识别的物体...

2018-06-16 09:19:01 3957 1

原创 概率论--点估计

首先我们来看下什么是参数估计 那么参数估计问题又是什么? 参数估计分为两大类,一类是点估计,还有一类是区间估计,点估计分为矩估计和最大似然估计,就比如说估计降雨量,预计今天的降雨量如果是550mm就是点估计,如果是500-600mm就是区间估计 点估计的主要任务就是去寻求位置参数的点估计量或者说是点估计值,我们可以通过矩估计和最大似然估计法来求下面再简单看下矩估计法...

2018-06-15 07:47:49 5045

原创 CPU轮询和中断机制

主机和控制器之间交互的完成协议可能会很复杂,我们可以用两个位来协调控制器和主机之间的生产者和消费者之间的关系,控制器工作忙的时候就把状态寄存器的忙位设置为1,而如果控制器可以接收下一条指令的时候就清除忙位。如果是主机就是通过命令寄存器中命令就绪位来表示其意愿,当主机有命令需要控制器执行的时候就设置命令就绪位 当主机需要通过端口来写输出数据的时候,主机和控制器之间握手协调如下所示...

2018-06-14 17:50:05 2662

原创 spring-boot配置thymeleaf实现html界面跳转

不得不说配置真的是烦,最近由于有个需求是上传图片到本地磁盘,然后url字段保存在数据库当中,于是乎就用了下spring-boot,下面就简单的整理下遇到的坑首先我们需要去配置spring-boot-starter-thymeleaf的时候,如果我们用的是 Spring Boot 2.0.2的话是会报错了,而且是一大堆错,所以这里建议将2.0.2改成使用1.5.10,所以我们在pom.x...

2018-06-14 15:34:27 2774

原创 交换空间概念

交换空间基本概述在以前,当物理内存的数量达到来了临界低点,通常会选择最不活跃的进程从内存移到交换空间以释放内存空间,但是现在的操作系统是将交换和虚拟内存技术以及交换页给结合在一起了,这样就不必对整个进程进行交换 虚拟内存是使用磁盘空间作为内存的扩充,由于磁盘访问比内存访问要慢很多,所以我们在使用交换空间的时候就会严重的影响系统性能,交换空间的设计和实现的主要目的就是为虚拟内存提供最佳吞...

2018-06-14 07:18:50 1407

空空如也

空空如也

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

TA关注的人

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