Linux系统中用户和权限

三种不同类型的用户:文件拥护者(user),同组用户(group),可以访问系统的其他用户(others)。
三种访问文件或目录的方式:可读文件(r),可写文件(w),可执行文件(x)。

在shell环境中执行ls -la 输出当前目录的详细信息

阅读全文 »

当输入规模足够大,使得运行时间只与增长量级有关时,需要研究算法的渐近效率。也就是,当输入规模无限增加时,在极限中,算法的运行时间如何随着输入规模的变大而增加。本文中所用插图来自《算法导论》。

不同的记号从不同的方面来刻画一个算法的运行效率。将插入排序的最坏运行时间刻画为下式:

阅读全文 »

Makefile 作用

Makefile的作用为实现自动化编译,主要为了解决以下问题:

  • 有很多源文件需要编译时
  • 当存在很多源文件时,只修改了个别源文件,这时只需要编译修改过的文件即可,而无需整个项目都编译一遍。
  • 当多个源文件存在依赖关系时,需要先编译一些文件,后编译一些文件

Makefile安装

阅读全文 »

分别用递归和迭代实现二叉树三种遍历方式:前序遍历,中序遍历,后序遍历。递归的缺点分析。

阅读全文 »

本文包含以下内容:

  • 二叉树概念
  • 使用 C 语言 实现的二叉查找树的动态集合操作:
    • 构造:使用二叉树的前序遍历构造二叉树。
    • 插入,删除,查询
    • 前驱和后继
    • 最大值和最小值
  • 红黑树的概念
阅读全文 »

快速排序使用分治法实现,即一个一个复杂的问题分解为一系列容易解决的小问题,最终得到问题的解。

算法步骤

快速排序的三步分治过程:例如对 A[p…r] 进行快速排序

  1. 分解:数组 A[p…r] 被划分为两个(可能为空)子数组 A[p…q-1] 和 A[p+1…r],使得A[p…q-1] 中的每一个元素都小于 A[q],而 A[q] 也小于等于 A[q+1…r]中的每个元素。其中,计算下标 q 也是划分过程的一部分。
  2. 解决:通过递归调用快速排序,对子数组A[p…q-1] 和 A[p+1…r] 进行排序。
  3. 合并:因为子数组都是原址排序,所以不需要合并操作,数组A[p…r]已经有序
阅读全文 »

umask命令

说明

umask命令指定在建立文件时预设的权限掩码。由3位八进制数字组成。
查看当前系统的文件掩码:umask -S

阅读全文 »

函数定义

1
2
3
4
5
6
7
function abs(x) {
if (x >= 0) {
return x;
} else {
return -x;
}
}
阅读全文 »

文件标记 Ascii 含义
‘\n’ 10 换行
‘\0’ 0 c语言中表示字符串结束符
EOT 4 传输结束符

**EOF(End of File)**是一个宏定义,其真实值根据不同平台有差异,通常为-1。表示操作系统无法从数据源获取更多数据的情况,数据源一般为文件或流。

**EOT(End-of-Transmission)**传输结束字符,是一个控制字符,表示传输的结束。ascii码为04

‘\n’ 在文本文件中,除了最后一行,其余的每一行行尾都有一个换行符,即’\n’,ascii码为10

‘\0’ 等价于NULL,在c语言中,并不存在真正的字符串类型。c语言中的字符串其实是char*指向的地址到’\0’前的字符,字符串的长度并不包括’\0’。例如:

1
2
char *s = "hello\0world";			//表示字符串 hello \0位字符串结束符      
printf("%s",s); //输出hello

JavaScript 简介

JavaScript (也称为JS)是一种高级的,解释型的编程语言。

简洁性

其语法简洁,具有很高的抽象层次,只需很少量的代码就可实现复杂的逻辑交互,支持面向对象,命令式,函数式等编程思想。在JS中,函数也是一种类型,可以作为参数传递给某个函数。

1
2
3
4
5
<script>
//定义一个匿名求和函数,并将其存放到f变量中
var f = function (a, b) { return a + b };
console.log(f(12,12)); //输出24
</script>

安全性

为了保证足够的安全性,语言本身不支持文件I/O,例如读取,修改本地文件等。但可以通过宿主环境实现文件I/O功能,如通过FileReader对象可以实现文件读取。

通用性

目前JS已经被世界主流浏览器所支持,比如:Chrome, Firefox, Safari, Opera,IE 等。

越来越多的网站采用了JS来实现复杂的网页交互,数据验证等。

发展前景

Google开发的V8引擎,直接将JS代码翻译为及机器代码,极大地提高了JS的运行速度,运行缓慢已不在是JS的短板。

Node.js,使JS可以用于服务器端开发。

Electron,是GitHub开发的开源框架,采用Node.js作为后端,Chromium作为前端,是开发跨平台应用的的利器。

使用Electron开发的跨平台应用由:微软的Visual Studio Codd (VScode)

Atom

0%