UCB CS162: Operating Systems and Systems Programming
Course About 介绍有关操作系统的问题 Links 课程主页 课程视频 Pintos
MIT 6.S081 Lab thread
Compulsory exercises Preparation reading To start the lab, switch to the thread branch: 123git fetchgit checkout threadmake clean Uthread: switching between threads (moderate) Using threads (moderate) Barrier(moderate) Optional challenge exercises The user-level thread package interacts badly with the operating system in several ways. For example, if one user-level thread blocks in a system call, another user-level thread won’t run, because the user-level threads scheduler doesn’t know th...
MIT 6.S081 Lecture 17: Virtual memory for applications
Reading Read Virtual Memory Primitives for User Programs (1991)
Hung-yi Lee ML Lecture1: Introduction of Deep Learning
机器学习 机器学习在教授的讲述中被描述为让机器找到一个函数f(),这个函数可以很复杂,但是可以解决许多问题,建立函数原型的过程叫做建立模型,根据函数的好坏进行不断优化的过程叫做训练,这个过程很像人类不断试错找寻更好的解决方案的过程,就像机器在学习一样。 机器学习的一般步骤是 建立模型:建立含有未知参数的函数 定义loss函数L() 优化:找到使L()最小的未知参数,一般使用梯度下降法 一般来说,使用类神经网络建立函数模型,通过叠加神经网络的层数,来达到更高的测试正确率,这样的方法被称为深度学习,深度学习是机器学习中使用最广泛也最重要的方法之一。 过拟合Overfitting指的是,训练出的模型在训练资料上表现好而在测试集上表现不好。 PyTorch PyTorch是专门用于机器学习的Python库,封装了数据读取、神经网络、激活函数、微分计算梯度下降等机器学习中常用的操作和对象,是广泛使用的机器学习框架。另外,PyTorch还可以使用GPU的并行计算加速Tensor的计算,使训练效率加快。 Colab Colab是谷歌名下类似于jupyter的网页Pyth...
Hung-yi Lee Machine Learning
Course About 介绍有关机器学习的问题。 Links 课程主页
Java
Introduction Java是一种面向对象的编程语言,JVM虚拟机的使用,让java的编译过程十分特殊,接口的引入,也让面向对象的特征十分突出。
Python
Introduction Python是一种面向对象的编程语言,不同于C和C++,它是一种解释型语言。 包管理工具Anaconda Anaconda可以根据需要构建不同的python环境,管理python包,构建独立的python内核 jupyter Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 正则表达式 在线匹配 支持普通字符 元字符 \d 匹配一个数字(0-9) \w 匹配数字、字母、下划线(0-9, a-z, A-Z, _) \W``\D 上述的取反,除了数字字母下划线以外的内容 [abc] 匹配a或b或c [^abc] 取反 . 除了换行符以外 量词控制元字符数量 + 前面元字符出现1次或多次 * 前面元字符出现0次或多次(尽可能多地贪婪匹配) ? 前面元字符出现0次或1次 惰性匹配 a.*b 最长的axxxxxb,贪婪匹配 a.*?b 最短的axxxxxb,懒惰匹配 可以用于爬取<div>xxx...
How to start a Project using C
介绍 将会介绍如何使用C开发在Linux平台上运行的控制台应用程序 和HelloWorld一样😄 选用的项目是自己写一个文本编辑器!(Build Your Own Text Editor) 初步开发这个项目,我觉得从中学到最重要的东西就是,开发不是一蹴而就的,为了更新功能,删改重构是常有的事情,现在这个阶段,很难有一次性铺平,统筹规划好所有东西的能力,所以不能用十分平面的想法去开发。当然这一切要尽可能与其他模块解耦,不能因为这里的重构,影响到其他大的模块。 准备工作 了解所要开发项目的背景知识 环境搭建 gcc作为编译器工具链 Make作为构建工具 项目框架 一个kilo.c文件,但划分模块 开发与测试 运行维护 updating…
x86
Introduction x86是一种复杂指令集架构的汇编语言 register in 32bit x86 esp ebp eip
How to start a Project from Zero
介绍 如何从0开始完成一个项目?这是我在学习过程中遇到的一个难以忽视的问题。这篇文章将会包含如何去开始一个项目,如何去维护一个项目的记录。不过这些想法没有经过认证,仅仅是对于开发过程中的思考方式的归纳和总结。 开发的范式很难总结出来,因此我将尝试分析我在一门程序设计专题课最后的大作业开发流程,通过完善这个远古项目开发的过程,来帮助构建一个开发的范式。 这个项目采用C和visual studio2017开发 项目介绍 项目的名字叫做"排序可视化",要求我们小组实现常见排序的可视化展示。 项目的实现需要借助学校里一个老掉牙的图形库,该图形库为我们封装了某些图形的画法,还有windows窗口的生成等等 这个项目按理来说是简单的,但是还是有一些刚开始难以思考的要素,比如说Windows,比如说图形化,这样就不够把最需要关注的点显露出来,因此我想在另一篇文章中选择一个要素最为稀少的项目,也就是使用C/C++和文本编辑器开发的在Linux平台上运行的控制台应用程序,来阐述我认为的项目开发思路。 准备工作 单拎出来一个排序可视化,我们如何使用我们手...