Claire_ljy
码龄7年
  • 856,794
    被访问
  • 暂无
    原创
  • 1,228,377
    排名
  • 166
    粉丝
关注
提问 私信
  • 加入CSDN时间: 2015-08-07
博客简介:

weixin_30432579的博客

查看详细资料
个人成就
  • 获得183次点赞
  • 内容获得0次评论
  • 获得1,141次收藏
创作历程
  • 702篇
    2019年
  • 766篇
    2018年
  • 689篇
    2017年
  • 540篇
    2016年
  • 415篇
    2015年
  • 275篇
    2014年
  • 299篇
    2013年
  • 209篇
    2012年
  • 165篇
    2011年
  • 116篇
    2010年
  • 110篇
    2009年
  • 77篇
    2008年
  • 61篇
    2007年
  • 35篇
    2006年
  • 18篇
    2005年
  • 5篇
    2004年
成就勋章
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

实现一个正则表达式引擎in Python(三)

项目地址:Regex in Python前两篇已经完成的写了一个基于NFA的正则表达式引擎了,下面要做的就是更近一步,把NFA转换为DFA,并对DFA最小化DFA的定义对于NFA转换为DFA的算法,主要就是将NFA中可以状态节点进行合并,进而让状态节点对于一个输入字符都有唯一的一个跳转节点所以对于DFA的节点就含有一个nfa状态节点的集合和一个唯一的标识和对是否是接收状态的fla...
转载
发布博客 2019.09.25 ·
264 阅读 ·
0 点赞 ·
0 评论

实现一个正则表达式引擎in Python(二)

项目地址:Regex in Python在看一下之前正则的语法的 BNF 范式group ::= ("(" expr ")")*expr ::= factor_conn ("|" factor_conn)*factor_conn ::= factor | factor factor*factor ::= (term | term ("*" | "+" | "?"))*term...
转载
发布博客 2019.09.24 ·
182 阅读 ·
0 点赞 ·
0 评论

实现一个正则表达式引擎in Python(一)

前言项目地址:Regex in Python开学摸鱼了几个礼拜,最近几天用Python造了一个正则表达式引擎的轮子,在这里记录分享一下。实现目标实现了所有基本语法st = 'AS342abcdefg234aaaaabccccczczxczcasdzxc'pattern = '([A-Z]+[0-9]*abcdefg)([0-9]*)(\*?|a+)(zx|bc*)([a-z]...
转载
发布博客 2019.09.24 ·
445 阅读 ·
1 点赞 ·
0 评论

我是如何学习写一个操作系统(九):文件系统

前言这个应该是这个系列的尾声了,一个完整的操作系统可能最主要的也就是分成这几大模块:进程管理、内存管理和文件系统。计算机以进程为基本单位进行资源的调度和分配;而与用户的交互,基本单位则是文件生磁盘文件正是对生磁盘的抽象磁盘的组成一个磁盘由多个盘面串联而成,而一个盘面又被分为磁道,磁道又由扇区组成。磁盘的访问单元就是扇区,一个扇区为512字节磁盘的使用CPU向磁盘的控...
转载
发布博客 2019.09.01 ·
335 阅读 ·
0 点赞 ·
0 评论

我是如何学习写一个操作系统(完结):总结和系列索引

前言从一开始的引导程序到现在的文件系统已经有十篇了,算是自己对操作系统的学习的一个笔记,原本是想结合自己之前写的玩具操作系统FragileOS,但是之后就转到了结合Linux 0.11的代码去写这个笔记。因为现在是马上开学了,后劲不足,也有点焦虑,所以这个系列写得非常乱。没有之前那个从零写编译器的系列学习笔记写得顺畅,收获也没有那么多。所以之后开学后可能会打算再读一下Linux 0....
转载
发布博客 2019.09.02 ·
195 阅读 ·
0 点赞 ·
0 评论

我是如何学习写一个操作系统(八):内存管理和段页机制

前言多进程和内存管理是紧密相连的两个模块,因为运行进程也就是从内存中取指执行,创建进程首先要将程序和数据装入内存。将用户原程序变成可在内存中执行的程序,而这就涉及到了内存管理。内存的装入绝对装入。在编译时,如果知道程序将驻留在内存的某个位置,编译程序将产生绝对地址的目标代码。绝对装入程序按照装入模块的地址,将程序和数据装入内存。装入模块被装入内存后,由于程序中的逻辑地址与实际地...
转载
发布博客 2019.08.30 ·
128 阅读 ·
0 点赞 ·
0 评论

我是如何学习写一个操作系统(七):进程的同步与信号量

前言在多进程的运行环境下,进程是并发执行的,不同进程间存在着不同的相互制约关系。为了协调进程之间的相互制约关系,达到资源共享和进程协作,避免进程之间的冲突,引入了进程同步的概念。临界资源多个进程可以共享系统中的各种资源,但其中许多资源一次只能为一个进程所使用,我们把一次只允许一个进程使用的资源成为临界资源。对临界资源的访问,必须互斥的进行。每个进程中,访问临界资源的那段代码成为临...
转载
发布博客 2019.08.29 ·
83 阅读 ·
0 点赞 ·
0 评论

我是如何学习写一个操作系统(五):故事的高潮之进程和线程1

前言为什么取这个标题呢?一是进程和线程是作为操作系统里最重要最核心的一部分。二是确实吃冰棍拉冰棍,没话,强行凑标题和之前的标题差不多字数。前一章写了系统调用的过程,算是一个小插曲,这个部分不管在哪里应该都是可以的。现在的这个系列已经和之前的标题渐行渐远了,原本是想以之前写的一个玩具型操作系统FragileOS为主线,但是在看书学习的过程中稍微改了一下方向,已经不是特别关注一个操作系...
转载
发布博客 2019.08.27 ·
63 阅读 ·
0 点赞 ·
0 评论

我是如何学习写一个操作系统(六):进程的调度

前言既然引进了多进程,其实也就是在进程之间来回切换,那么就会有进程之间的调度问题。实则是在可运行进程之间分配有限的处理器时间资源的内核子系统。几个简单的CPU调度算法First Come, First Served(FCFS)其实就是一个先进先出队列了,也就是说先申请的进程,先执行。当CPU空闲时,它会分配给位于队列头部的进程,并且这个运行进程从队列中移去。FCFS调度代码编...
转载
发布博客 2019.08.28 ·
123 阅读 ·
0 点赞 ·
0 评论

我是如何学习写一个操作系统(三):操作系统的启动之保护模式

前言上一篇其实已经说完了boot的大致工作,但是Linux在最后进入操作系统之前还有一些操作,比如进入保护模式。在我自己的FragileOS里进入保护模式是在引导程序结束后完成的。实模式到保护模式属于操作系统的一个大坎,所以需要先提一下从实模式到保护模式实模式和保护模式都是CPU的工作模式,它们的主要区别就是寻址方式实模式出现于早期8088CPU时期。当时由于CPU的性能有...
转载
发布博客 2019.08.25 ·
199 阅读 ·
0 点赞 ·
0 评论

我是如何学习写一个操作系统(四):操作系统之系统调用

前言最近有点事情,马上要开学了,所以学习的脚步就慢下来了。这一篇主要是来说操作系统的系统调用的,像C语言的printf深入到内部就是一个有关屏幕输出的系统调用什么是系统调用之前提过操作系统是对硬件的抽象,也是软硬件之间的一层。之前比如如果我们想要在屏幕上输出一些字符,就需要一些指令操作,然后把数据放到显存上。但是在有了操作系统后,就不需要这样做,也不能这样做了。这时候只要操作系统提...
转载
发布博客 2019.08.26 ·
186 阅读 ·
0 点赞 ·
0 评论

我是如何学习写一个操作系统(一):开篇

前言有人说程序员的三大浪漫分别是编译原理、操作系统和计算机网络在之前完成了一两个小软件和网站后遇见了编译原理,也不知道为什么就傻傻的学,还写了一个从零写编译器的系列学习笔记,不过都是小打小闹,只能算作摸到了一点点入门的门槛。再后来想深入学习的时候,因为暑假在家很多书买来的话再带去学校很麻烦,就索性找了一本操作系统的书,也不懂原理就撸了一个玩具型的操作系统几句感概在身边同学都...
转载
发布博客 2019.08.23 ·
149 阅读 ·
1 点赞 ·
0 评论

我是如何学习写一个操作系统(二):操作系统的启动之Bootloader

前言今天本来的任务看书和把之前写的FragileOS整理一下,但是到现在还在摸鱼,书也只看一点。后来整理了一下写这个系列的思路,原本的目的是对操作系统原理性的学习和对之前写的一个玩具型操作系统的回顾,就是想对操作系统的知识的轮廓能有一个了解,现在想来想减少对之前写的系统的回顾,毕竟也只有2000多行,但是还是要有对整个思路的展现。然后增加对Linux 0.12源码的一些学习。所以离标题...
转载
发布博客 2019.08.24 ·
195 阅读 ·
0 点赞 ·
0 评论

从零写一个编译器(完结):总结和系列索引

前言这个系列算作我自己的学习笔记,到现在已经有十三篇了,加上这篇一共十四篇。一步一步的从词法分析到语法分析、语义分析,再到代码生成,准备在这一篇做一个总结收尾和一个这个系列以前文章的索引。(另外,由于我现在的这个主题不能对markdown的一级标题作目录,所以这个系列文章的目录都是有问题的)索引从零写一个编译器(一):输入系统和词法分析从零写一个编译器(二):语法分析之前置知识...
转载
发布博客 2019.08.22 ·
505 阅读 ·
0 点赞 ·
0 评论

从零写一个编译器(十三):代码生成之遍历AST

项目的完整代码在 C2j-Compiler前言在上一篇完成对JVM指令的生成,下面就可以真正进入代码生成部分了。通常现代编译器都是先把生成IR,再经过代码优化等等,最后才编译成目标平台代码。但是时间水平有限,我们没有IR也没有代码优化,就直接利用AST生成Java字节码入口进行代码生成的入口在CodeGen,和之前解释器一样:先获取main函数的头节点,从这个节点开始,先进入...
转载
发布博客 2019.08.21 ·
504 阅读 ·
0 点赞 ·
0 评论

从零写一个编译器(十二):代码生成之生成逻辑

项目的完整代码在 C2j-Compiler前言在上一篇解释完了一些基础的Java字节码指令后,就可以正式进入真正的代码生成部分了。但是这部分先说的是代码生成依靠的几个类,也就是用来生成指令的操作。这一篇用到的文件都在codegen下:Directive.javaInstruction.javaCodeGenerator.javaProgramGenerator.jav...
转载
发布博客 2019.08.21 ·
488 阅读 ·
0 点赞 ·
0 评论

从零写一个编译器(十一):代码生成之Java字节码基础

项目的完整代码在 C2j-Compiler前言第十一篇,终于要进入代码生成部分了,但是但是在此之前,因为我们要做的是C语言到字节码的编译,所以自然要了解一些字节码,但是由于C语言比较简单,所以只需要了解一些字节码基础JVM的基本机制JVM有一个执行环境叫做stack frame这个环境有两个基本数据结构执行堆栈:指令的执行,都会围绕这个堆栈来进行局部变量数组,参数...
转载
发布博客 2019.08.20 ·
189 阅读 ·
0 点赞 ·
0 评论

从零写一个编译器(三):语法分析之几个基础数据结构

项目的完整代码在 C2j-Compiler写在前面这个系列算作为我自己在学习写一个编译器的过程的一些记录,算法之类的都没有记录原理性的东西,想知道原理的在龙书里都写得非常清楚,但是我自己一开始是不怎么看得下来,到现在都还没有完整的看完,它像是一本给已经有基础的人写的书。在parse包里一共有8个文件,就是语法分析阶段写的所有东西啦Symbols.javaProductio...
转载
发布博客 2019.08.17 ·
319 阅读 ·
1 点赞 ·
0 评论

从零写一个编译器(九):语义分析之构造抽象语法树(AST)

项目的完整代码在 C2j-Compiler前言在上一篇完成了符号表的构建,下一步就是输出抽象语法树(Abstract Syntax Tree,AST)抽象语法树(abstract syntax tree 或者缩写为 AST),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码。树上的每个节点都表示源代码中的一种结构。AST对于编译器是至关重要的,现在的编译型语...
转载
发布博客 2019.08.19 ·
922 阅读 ·
0 点赞 ·
0 评论

从零写一个编译器(七):语义分析之符号表的数据结构

项目的完整代码在 C2j-Compiler前言有关符号表的文件都在symboltable包里前面我们通过完成一个LALR(1)有限状态自动机和一个reduce信息来构建了一个语法解析表,正式完成了C语言的语法解析。接下来就是进入语义分析部分,和在第二篇提到的一样,语义分析的主要任务就是生成符号表来记录变量和变量的类型,并且发现不符合语义的语句描述变量在C语言里对变量声...
转载
发布博客 2019.08.18 ·
489 阅读 ·
0 点赞 ·
0 评论
加载更多