Changkun's Blog欧长坤的博客

Science and art, life in between.科学与艺术,生活在其间。

  • Home首页
  • Ideas想法
  • Posts文章
  • Tags标签
  • Bio关于
Changkun Ou

Changkun Ou

Human-AI interaction researcher, engineer, and writer.人机交互研究者、工程师、写作者。

Bridging HCI, AI, and systems programming. Building intelligent human-in-the-loop optimization systems. Informed by psychology, philosophy, and social science.连接人机交互、AI 与系统编程。构建智能的人在环优化系统。融合心理学、哲学与社会科学。

Science and art, life in between.科学与艺术,生活在其间。

276 Blogs博客
165 Tags标签
Changkun's Blog欧长坤的博客

Linux学习笔记 6 网络及配置相关

Published at发布于:: 2013-12-07   |   Reading阅读:: 1 min
网络原理 IP编址 IP编址是一个双层编址方案,一个IP地址表示一个主机(或一个网卡接口),应用最广泛的是IPv4编址,但是已向IPv6编址切换 一个IPv4地址为32位长,IPv6地址为128位长(2^128个) IPv4地址分为2个部分:网络部分(标识所属区域)和主机部分(标识区域中的哪台主机) IPv4共32位,使用点分十进制方式表示,分为四个部分,每部分八位 192.168.1.1(11000000.10101000.00000001.00000001) 子网掩码 通过子网掩码来确定网络部分的位数 子网掩码与IP地址一样,有32bit,每一位与IP地址中的每一位一一对应。 IP地址中对应子网掩码中为1的部分为网络部分。 192.168.1.1 255.255.255.0 证明此IP地址的前24位是网络部分,也就是说此IP地址处在同一个网络的其他主机的IP地址前24位相同,以证明他们在同一网络。 网关/路由 在不同网络之间传输数据的功能叫做路由功能,一般有多个接口,接到不同网络中,并通过路由表进行数据转码 路由表: 目标网络 &nbsp; &nbsp; &nbsp; 子网掩码 &nbsp; &nbsp; &nbsp; 出接口 192.168.1.1 &nbsp; 255.255.255.0 &nbsp; eth0 172.16.1.0 &nbsp; &nbsp;255.255.255.0 &nbsp; eth1 61.1.1.0 &nbsp; &nbsp; &nbsp;255.255.255.0 &nbsp; eth2 域名: 类型:表示此域名的类型 域名:域名名称 主机名:该域中的某台主机名称 DNS 每一个域名代表一个IP,而DNS服务就是用来在IP与域名之间进行转换的。 &nbsp; 基本网络参数: 要配置一个局域网通信的计算机需要: (1)IP地址(2)子网掩码 要配置一个跨网端通信的计算机需要: (1)IP地址(2)子网掩码(3)网关 要配置一个可以上网的计算机需要: (1)IP地址(2)子网掩码(3)网关(4)DNS &nbsp; <span style="font-size:24px;">**Linux网络配置**</span> 以太网接口被命名为:eth0、eth1等(数字表示网卡编号) 通过lspci查看网卡硬件信息(usb网卡需要用lsusb) ifconfig -a &nbsp;查看所有 ifconfig eth0 查看特定接口 ifup ifdown 启用/禁用一个接口 setup配置网卡,配置王成后,使用ifup启用网卡,并使用ifconfig命令查看信息 网络相关配置文件 网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 DNS配置文件 /etc/resolv.
Read More阅读更多 »

Linux学习笔记 5 UGO模型、Linux权限

Published at发布于:: 2013-12-07   |   Reading阅读:: 2 min
Linux 用户与组 用户用于限制使用者或进程可以使用、不可以使用那些资源 组用来方便组织和管理用户 每一个用户拥有一个UserID(UID)每个用户属于一个主组,属于一个或多个附属组 每一个组拥有一个GroupID(GID)每一个进程以用户身份运行,并接受该用户可访问资源限制 每一个可登陆用户拥有一个指定的shell <span style="line-height: 1.6em;">用户:</span> <span style="line-height: 1.6em;">用户ID为32位,从0开始,但是为了和老式系统兼容,用户ID限制在60000以下</span> root用户:ID为0的用户都是root用户 系统用户:ID:1~499 没有Shell 普通用户:ID:&gt;=500 <span style="line-height: 1.6em;">系统文件都有一个所属用户及所属组</span> id: 显示当前用户的信息 passwd:修改当前用户密码 与用户相关的文件有: /etc/passwd 用户信息 /etc/shadow 密码(加密) /etc/group 组信息 passwd文件中格式为: 用户名:密码:UID:GID:描述信息:用户家目录:用户的登陆Shell shadow: 用户名:密码(分为三个部分):.... gourp: 组名:组密码:组ID:.... 查看登陆的用户: 命令whoami显示当前用户 命令who显示已登陆用户 命令w显示登陆用户在做什么 创建一个用户: useradd ock 创建一个新用户ock 这条命令会执行: 1、在/etc/passwd添加用户信息 2、passwd中创建密码,则会加密保存在/etc/shadow中 3、为用户建立一个新的家目录/home/ock 4、将/etc/skel中的文件复制在用户家目录中 5、建立一个与用户用户名相同的组,新建用户默认属于这个同名组 支持参数: -d 家目录 -s 登陆shell -u userid -g 主组 -G 附属组(最多31个,用&quot;,&quot;分割) 也可以通过修改/etc/passwd的方式实现,但是不建议。 &nbsp; 修改用户信息 usermod 参数 username -l 新用户名 -u 新userid -d 用户家目录位置 -g 用户所属主组 -G 用户所属附属组 -L 锁定用户使其不能登陆 -U 解除锁定 <span style="line-height: 1.
Read More阅读更多 »

Linux学习笔记 7 获取帮助

Published at发布于:: 2013-12-07   |   Reading阅读:: 1 min
-h 几乎所有可用的参数 --help 获取帮助 manual: man 获取帮助文档 文档类型: 1、用户命令 2、内核系统调用 3、库函数 4、特殊文件盒设备 5、文件格式和规范 6、游戏 7、规范标准和其他页面 8、系统管理命令 9、Linux内核API man -k 关键字 查询关键字 info 比 man 更详细,以网页形式显示 man /info &quot;/+关键字&quot;进行搜索 /usr/share/doc 中有最为详尽的文档

Linux学习笔记 4 Linux文件系统基本操作

Published at发布于:: 2013-12-07   |   Reading阅读:: 1 min
Linux文件系统支持: ext2(默认不带日志)、<span style="line-height: 1.6em;">ext3(默认带日志)、</span><span style="line-height: 1.6em;">ext4、</span><span style="line-height: 1.6em;">fat(MS-DOS)、</span><span style="line-height: 1.6em;">vfat、</span><span style="line-height: 1.6em;">nfs、</span><span style="line-height: 1.6em;">iso9660、</span><span style="line-height: 1.6em;">proc、</span><span style="line-height: 1.6em;">gfs(global file system)、</span><span style="line-height: 1.6em;">jfs、</span><span style="line-height: 1.6em;">...</span> &nbsp; 创建文件系统: mke2fs -t ext4 /dev/sdb1 常用参数: -b block size 指定文件系统块大小 -c 建立文件系统时,检查损坏块 -L label 指定卷标 -j 建立文件系统日志 &nbsp; mkfs 支持参数较少 不能精细化控制 mkfs ext3 /dev/sda3 mkfs ext4 /dev/sda3 mkfs vfat /dev/sda3 &nbsp; dumpe2fs 查看文件系统的详细信息 dumpe2fs /dev/sda3 &nbsp; ezlabel 为文件系统添加标签 ezlabel /dev/sda2 显示sda2系统标签 ezlabel /dev/sda2 HH 设置标签为HH &nbsp; fsck 检查并修复损坏的文件系统 -y 不提示进行修复 -t 对损坏较严重的文件系统进行检查修复时,需要使用此参数来指定修复文件系统的类型 对于识别为文件的损坏数据(文件系统无记录)fsck会将文件放入lost+found目录系统启动时会对磁盘进行fsck操作 &nbsp; JOURNAL日志 拥有较强的稳定性,在出现错误时可以进行恢复 带日志的文件系统: (1)将准备执行的事务的具体内容写入日志 (2)进行操作 (3)成功后,具体内容从日志中删除 优点:出现意外可查看日志 缺点:丧失一定性能 &nbsp; fdisk 只有超级用户才可以使用 fdisk -l 列出所有安装的磁盘及其分区信息 fdisk /dev/sda 对目标磁盘进行分区操作,分区后使用partprobe让内核更新分区信息,否则重启后才能识别 /proc/partitions 文件也可以用来查看分区信息 分区: 主分区:n -&gt; p -&gt; 1 -&gt; +size(K,M,G) 扩展分区:n -&gt; e -&gt; 2 -&gt; +size(K,M,G) 逻辑分区:n -&gt; l -&gt; enter -&gt; +size(K,M,G) (分区号从5开始) 修改id: t 保存MBR: w 分区后需要创建文件系统才能使用。 &nbsp; 挂载、使用文件系统:磁盘或分区建好后,需挂在到一个目录才能使用 Windows或Mac会进行自动挂载,创建好文件系统后会自动挂载到系统上 Linux需要手工进行挂载或配置系统进行自动挂载 /dev/sda3 ext3 -挂载-&gt; /mnt &nbsp; mount 将格式化好的磁盘或分区挂载到一个目录上 mount /dev/sda3 /mnt 不带参数的mount会显示所有已挂载的文件系统 -t 指定文件系统的类型 -o 指定挂载选项 ro, rw read-only只读,read-write读写,默认rw sync 代表不使用缓存,对所有操作直接写入磁盘 async 使用缓存(默认,提高性能) noatime 代表每次访问文件时,不更新文件的访问时间(提高性能) atime 代表每次访问文件时,更新文件的访问时间 remount 重新挂载文件系统 &quot;,&quot;表示连接参数 &nbsp; umount 卸载挂载的文件系统 umount 文件系统/挂载点 umount /dev/sda3 == umount /mnt 出现device is busy报错:使用fuser -m /mnt查看使用进程 或者 lsof / mnt 查看使用文件 &nbsp; 自动挂载 配置文件/etc/fstab用来定义需要自动挂载的文件系统 fstab每一行代表一个挂载配置 格式: &nbsp;/dev/sda3 &nbsp; /mnt &nbsp; &nbsp;ext4 &nbsp; defaults &nbsp; &nbsp; &nbsp; 0 0 要挂载的设备 挂载点 文件系统 &nbsp;挂载选项 &nbsp;dump,fsck相关选项 可以使用LABEL取代/dev/sda3 mount -a 挂载所有fstab中定义的自动挂载项

又谈 Android

Published at发布于:: 2013-11-29   |   Reading阅读:: 1 min
刚才手残点了4.4kitkat的更新,结果n7直接卡开机画面变砖了,下官方完整包的空当处。。敲点文字勾起我几年前研究安卓root和刷机事宜吧。。。 记得当年折腾自己改系统底层文件,刷recovery,超频,精心调整内存使用空间,用命令行来root+刷机,当时根本没有现在这样一整套的刷机+root的解决方案,得自己研究最新版本如何root。根本不像现在这样root刷机工具一搜一大堆,而且都是封好的shell直接一键安装就搞定。 这个学期开学的时候给gn刷了miui,本来是说新出了4.4准备把gn刷回原生的,结果官方说不支持。这是懒得刷的第一个原因。第二个原因是,gn刷了miui后不是觉得miui如何强大,而是实在懒得折腾回原生,用了ip后确实感受到一个明显的区别,就是安卓本质似乎就是玩机。或许有可能跟我是nexus系列有关。 整理、恢复备份,以前一折腾就是一个晚上,现在变砖了彻底没了玩机折腾的念头。记得买的第一台安卓设备是defy+(后来@牙签 毫不犹豫的跟风跳入了安卓阵营,现在你丫居然还在用这个= =,,膜拜了。。),第一次刷机的时候各种担心,现在回想起来真的好烦人,当时可能沉浸其中吧。第二台是gn,也是热衷折腾。 去年的这个时候第一次接触到了apple(这还得感谢@老夏 赞助了我200刀左右),逐步的对这个公司的产品有了别的一些看法,观点比较长,从这个学期入手了mba后就一直承诺说受@P哥_私人 影响想录个评测视频(或许不应该叫评测视频)的,稿子一直在扩充,入手air后,又进行了一次扩充,现在算下来也有几万字了,不过一直没找到机会给录,上次和@书翻 聊到到现在也一直没搞,确实感到抱歉。因为不是这篇日志讨论的内容,我也就不敲出来了。等下周如果有时间了就了断了它。。 这里主要想表达的观点,大概就是,玩机的时代似乎已经逐步退出历史舞台,刷机已经变得不那么夺人眼球,设备的使用者在追求玩设备的完美性后,已经往追求设备的一种稳定性而过渡,虽然每次系统更新都能给我这样的使用者带来一丝惊喜,无论是google还是apple的升级都是感觉特棒,但是,实在是不想在中午休息那一个小时冲忙升级or刷机然后下午带着不完美的设备前往教室使用上纯粹是糟糕的,这样的玩机折腾实在乏味。ios上给我的体验,无论是流畅度还是是以前的android不能比的。现在依旧是。这里又想多吐槽一句windows了,如今半年重装一次系统已经是习惯了么,这家伙速度又扛不住了。。 敲这篇日志的时候,正在下n7的4.4官方包,刷完就算了,也不想再折腾怎么root了。敲到这里的时候,重刷4.4已经完毕了,滑了滑屏幕看了看软件顺便就说一下4.4吧。 随手拍了两张图,app的icon已经all new了,甚至连收购没多久的quickoffice和以前没有的google drive也集成了,设置选项里面多了个云打印机,显然属于废材功能了(大多数人来说确实如此不是么),因为考虑到想测试google now的唤醒,所以开机的时候选了us,因为是深夜室友睡了,白天再试算了。。初步使用确实流畅,软件一多也就什么都不知道了。 传说中的屏幕录制找了一会儿也没找到,另外,没有发现传说中的art模式,maybe是art是针对高通cpu推出的测试?nvidia的tegra残废了?可能google在为5.0退出正式版攒大招。 多评一句nexus设备,nexus放到国外,毫无疑问的是神一般的存在,尤其是美国本土一些中心城市。幻想我以后有机会studying abroad,那时的android估计已经和ios平起平坐了,到那时新的nexus肯定已经innovation了。 从上学期以来就 一直有和@郭曌阳 谈到我对android和ios的前景,现在看来仍然是比较纠结的,如果说硬是要选个阵营,额- -。。(说老实话,尽管apple的产品这么出色,我依然是喜欢google多得多,好吧好吧,即便如此,一觉起来后nexus这些设备依旧会静静的躺在我的抽屉里) 额好吧,好像不知不觉就敲了这么多废话。。时间好像挺晚了。。就这样吧。。

Linux学习笔记 3 Vim必背命令

Published at发布于:: 2013-11-20   |   Reading阅读:: 1 min
命令模式: 1 2 3 4 5 6 7 8 9 i 在光标前插入文本 o 在当前行的下一行插入新行 dd 删除整行 u 撤销上一个操作 yy 将当前行内容放入缓冲区(复制当前行) nyy 将n行内容放入缓冲区 p 将缓冲区的文本放入光标后 r 替换当前字符 / 查找关键字 n键进行切换 ex模式: 1 2 3 4 5 6 7 : w 保存 : q 退出 : x 保存并退出 : q! 强制退出 : set number 显示行号 : ! [系统命令] 执行一个系统命令并显示结果 : sh 切换到命令行,ctrl+d切换回vim

Linux学习笔记 2 Linux常用必背命令

Published at发布于:: 2013-11-20   |   Reading阅读:: 2 min
日期时间 1 2 3 4 5 6 7 8 9 date # 格式化显示时间 +%Y[任意格式]%m[任意格式]%d # -s: 设置时间 hwclock/clock # 用以显示硬件时钟时间 cal # 查看日历 uptime # 查看系统运行时间 输出、查看 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 echo: 用以显示输入的内容 cat: 显示纯文本文件的内容 more: 用于翻页显示文件内容(只能用于向下翻页) less: 用于翻页显示文件内容(带上下翻页) head: 显示文件的头几行(默认十行) -n: 显示行数 tail: 显示文件的末尾几行(默认十行) -n: 显示行数 -f: 追踪显示文件更新(一般用于查看日志、命令不会退出) 查看硬件信息:** 1 2 3 4 5 6 7 8 lspci: 查看PCI设备 -v: 查看详细信息 lsusb: 查看USB设备 -v: 查看详细信息 lsmod: 查看加载的模块(驱动) 关机/重启 1 2 3 4 5 6 7 8 9 10 11 shutdown [参数] 时间 -h: 关机 -r: 重启 例如: shutdown -h now shutdown -h +10 (十分钟以后) shutdown -r 23:30 (23:30重启) poweroff: 立即关机 reboot: 立即重启 归档和压缩 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 zip: zip myfile.
Read More阅读更多 »

Linux学习笔记 1 Linux基本操作及其文件系统结构

Published at发布于:: 2013-11-19   |   Reading阅读:: 1 min
文件系统结构: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 pwd: print work directory 显示当前工作目录 touch [文件]: 创建一个空白文件或者更新已有文件的时间 ls: 显示当前工作目录的所有非隐藏文件 -a: 显示所有包括隐藏的文件 -l: 显示详细信息 -R: 递归显示子目录结构 -ld: 显示目录和链接信息 file [文件]: 查看文件的类型 cd [目标目录]: 切换目录 上一级目录&quot;..&quot; 当前目录&quot;.&quot; 用户家目录&quot;~&quot; 上一工作目录&quot;-&quot; 基本文件操作: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cp [文件]: 复制文件或目录 -r: 递归复制目录树 -v: 显示详细信息 mv [文件] [目标目录]: 移动或重命名(即移动时进行重命名操作) rm [文件]: 删除文件或者目录 -i: 交互式 -r: 递归的删除目录 -f: 强制删除 mkdir: 创建一个目录 rmdir: 删除一个空目录 Linux系统目录架构说明:
Read More阅读更多 »

《C专家编程》读书笔记

Published at发布于:: 2013-11-05   |   Reading阅读:: 2 min
《C专家编程》是一本94年出版的讲语言的书,如今二十一世纪都已经过去十年多了,书上很多东西是不是依旧有用将是本文将要解答的问题。 尽量不要使用无符号数 当无符号数与有符号数再一起使用时,有符号数会被强转为无符号数。 1 2 3 4 int value_int = -1; unsigned int value_uint = 5; int result = (value_int < value_uint) ? 1 : 0; printf("%d\n",result);// 结果为0 解释:C在计算含有不同类型表达式时,会将类型向上提升,上面代码中的int被提升为了unsigned int,使-1的补码被解析为很大的整数。 相邻的自字符串会被合并 1 2 char *str[] = {"hehe" "lala","woca"}; printf("%s",*str);// hehelala 优先级的问题 . 比 * 高: 1 2 *value.func --> *(value.func) [] 比 * 高: 1 2 int *array[] --> int *(array[]) // array[]的元素为int* 函数() 比 * 高:
Read More阅读更多 »

谈谈二分搜索

Published at发布于:: 2013-11-05   |   Reading阅读:: 1 min
今天读编程珠玑发现这句有意思的话:“提供充足的时间,竟然仅有10%的专业程序员能将这个小程序(指二分搜索)编写正确。” 于是随便写了写: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 // // 二分搜索.c // // 说明:本质是二分法求根。 // // Created by 欧 长坤 on 13-11-05. // Copyright (c) 2013年 欧 长坤. All rights reserved. // #include <stdio.h> int binary_search(int array[], int left, int right, int key) { int middle; while(left <= right) { middle = (left + right)/2; if (array[middle] == key) return middle;// position else if(array[middle] > key) right = middle - 1; else left = middle + 1; } return -1;// not find } int main() { int array[10] = {1,2,3,4,5,6,7,8,9,10}; int ret = binary_search(array, 0, 10, 1); if(ret !
Read More阅读更多 »
16 17 18 19 20 21 22 23 24
© 2008 - 2026 Changkun Ou. All rights reserved.保留所有权利。 | PV/UV: /
0%