Ruby 琐记一
1、嵌入字符串在字符串中使用#{…}这样的写法, 可以把通过计算得到的值嵌入到字符串中, 输出结果除了可以嵌入变量名也可以嵌入公式
puts "Area = #{area}"
2、times循环次数固定使用times方法会更简单
10.times do
puts 'hahaha'
end
3、symbol符号(symbol)与字符串对象相似,符号也是一种对象,一般作为名称标签来使用,用来表示方法等对象的名称可以将符号简单理解为一种轻量级的字符串
symbol1 = :foo #表示符号:foo
symbol2 = :"foo" #意义同上
4、变量变量的命名决定了变量的种类 + 局部变量: 以英文字母或_开头 + 全局变量: 以$开头 + 实例变量: 以@开头 + 类 变 量 : 以@@开头
5、多重赋值一些小技巧:
a, b, *c = [1,2,3,4,5] # a=1,b=2,c=[3,4,5]
a, *b, c = [1,2,3,4,5] # a=1,b=[2,3,4],c ...
拓扑学入门二
前言江辉有《拓扑学》的内容很全面, 以后再看拓扑学大概就可以对照这这本书的目录来了
点集拓扑学拓扑空间之间的连续映射与同胚
连续映射的定义
连续映射的性质
同胚映射
嵌入与嵌入映射
拓扑基与Tychonoff积空间
拓扑基与子基
乘积空间
分离性公理与可数性公理
分离性公理
可数性公理
拓扑性质的可遗传性与可乘性
Uryshon引理及其应用
Uryshon引理
Tietze扩张引理
Uryshon度量化定理
拓扑空间的紧致性与列紧性
紧致与列紧的定义
列紧空间的性质
紧致空间的性质
局部紧性与仿紧性
局部紧性
仿紧性
连通性与道路连通性
连通性的定义及例子
连通空间的性质
连通分支
局部连通性
道路及其运算
道路连通空间
道路连通分支
局部道路连通
商空间与商映射
商空间
拓扑锥
贴空间
映射柱与映射锥
商映射
闭曲面及其分类
拓扑流形的概念
闭曲面
两类闭曲面
闭曲面分类定理
点网、滤子与收敛性概念的扩张
点网
滤子
函数空间
点态收敛拓扑
X上的一致收敛拓扑
紧开拓扑
k-空间与Ascoli定理
代数拓扑学映 ...
Dancing Links
1. 简介参考维基百科
2. 分析实现参考这里, 写的很详细
Graph DFS
dfs添加顶点到集合在调用dfs的过程中,有四种添加顶点到集合的顺序:
Pre-Order,在递归调用dfs之前将当前顶点添加到queue中
Reverse Pre-Order,在递归调用dfs之前将当前顶点添加到stack中
Post-Order,在递归调用dfs之后将当前顶点添加到queue中
Reverse Post-Order,在递归调用dfs之后将当前顶点添加到stack中
Union-Find Structure
并查集这篇文章写的很好懂
Linux琐记三
1. who命令who命令查询utmp文件并报告当前登录的每个用户。Who的缺省输出包括用户名、终端类型、登录日期及远程主机。
2. w命令执行这项指令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行linux w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
3. 查看端口使用情况netstat -anp | grep portno比如netstat –apn | grep 8080
4. cat命令高级用法搭配EOF和输入输出流>>及<<使用,例如Haskell的官方安装教程:
cat >> ~/.bashrc <<EOF
export PATH="\$HOME/.cabal/bin:/opt/cabal/1.20/bin:/opt/ghc/7.10.3/bin:\$PATH"
EOF
export PATH=~/.cabal/bin:/opt/cabal/1.22/bin:/opt/ghc/7.10.3/bin:$PATH="
以上可以实现文件追加功能,在.bashrc文件最后追加两句环 ...
C++琐记三
1. C++堆与栈的区别和大神一起从良乡回来, 地铁上突然想起了这个问题就问了下, 大神解释之后茅塞顿开、、、回来又查了查网上的东西, 再看发现理解起来轻松了许多
具体可以参考这篇文章, 还有这个问题
2. NULL在C++中0是NULL
C++琐记二
1. vector1.1 erase以前用vector时只是使用push_back(),pop_back(),begin(),end(),front(),back()等,没用过erase(), 今天搭配iterator用了一下, 才发现很神奇。比如删除一个vector上指定值为val的元素:
for(vector<int>::iterator it = nums.begin(); it != nums.end(); ) {
if( nums[i] == val ) {
nums.erase(it++);
} else {
it++;
}
}
上面这段代码是错误的,而且只要改一处就可以正确。修改后为:
for(vector<int>::iterator it = nums.begin(); it != nums.end(); ) {
if( nums[i] == val ) {
nums.erase(it);
...
Android Studio 与 Gradle
1. 描述
以前是用IntelliJ IDEA直接玩安卓程序的, 但是自从Google根据IDEA开发了新的ide后, 很多开发者都转向Android Studio了, 网络上的有些源代码无法直接在IDEA上编译, 于是下了个Android Studio折腾, 用过IntelliJ IDEA后安装、配置环境都很简单, 不太相同的地方是Google采用Gradle作为Android app开发的包管理器之后, 其自家推出的Android Studio自然得默认下载它, 于是在新建工程的最后一步, 提醒你可能需要配置一下代理才能使用成功的下载安装Gradle, 使用SS代理, 成功下载安装
2. 项目结构新建空白项目的结构:
3. Gradle简介
Gradle是一种依赖管理工具, 基于Groovy语言, 面向Java应用为主, 它抛弃了基于XML的各种繁琐配置, 取而代之的是一种基于Groovy的内部领域特定(DSL)语言。其优点有很多:
像Ant一样,通用灵活的构建工具可以切换的,基于约定的构建框架强大的多工程构建支持基于Apache Ivy的强大的依赖管理支持maven, Iv ...
操作系统六
1. 进程同步和P、V操作若有三个并发进程互斥,如果利用信号灯方式控制其同步关系,那么三个进程的同步过程如下图:
2. Linux系统功能调用的实现机制2.1 Linux系统调用的进入Linux系统的软中断指令是汇编语言指令int 0x80,执行该指令会发生中断,处理机的状态由用户态自陷到内核态(在更新的芯片中添加了sysenter汇编语言指令等)。int 0x80指令使用的异常向量号是128(即16进制的80),该异常向量包含了内核系统调用程序的入口地址。在内核初始化时,已将系统调用处理程序的入口地址送入向量128的中断描述符表表项中,设置段地址为内核开始的地方,段内偏移则指向系统调用处理程序system_call()。当应用程序请求操作系统服务,发出int 0x80指令时,就会从用户态自陷到内核态,并从system_call()开始执行系统调用处理程序。当系统调用处理完毕后,通过iret汇编语言指令返回到用户态。
2.2 系统调用号和系统调用表2.2.1 系统调用号在Linux中,每个系统调用被赋予一个唯一的系统调用号。用户空间的进程通过系统调用号指明要执行的具体系统调用系统调 ...