zoukankan      html  css  js  c++  java
  • 常见问题集锦

    Linux进程间通信(IPC,Inter-Process Communication)方式
    管道   管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
    命名管道 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
    信号量 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
    信号 信号是Unix、类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知机制,用来提醒进程一个事件已经发生。当一个信号发送给一个进程,操作系统中断了进程正常的控制流程,此时,任何非原子操作都将被中断。
    消息队列 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。和信号相比,消息队列能够传递更多的信息。与管道相比,消息队列提供了有格式的数据,这可以减少开发人员的工作量。消息队列仍然有大小限制。
    套接字 套解口也是一种进程间通信机制,与其他通信机制不同的是它可用于不同及其间的进程通信。
    共享内存 共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
    远程进程调用

    linux文件系统为索引式文件系统(indexed allocation),磁柱是分割槽的最小单位,第一个扇区里面有MBR(446Bytes)及磁盘分割表(64Bytes)。 在Linux下的 ext2 文件系统建立一个目彔时, ext2 会分配一个 inode 和至少一块 block 给该目彔。其中,inode 记彔该目彔的相关权限不属性,并可记彔分配到的那块 block 号码; 而 block 则是记彔在这个目彔下的文件名不和该文件名占用的 inode 号码数据。

    nginx默认的欢迎页面 /usr/share/nginx/www/index.html,修改www路径sudo vi /etc/nginx/sites-available/default
    增加location ~ http://stackoverflow.com/questions/15852884/nginx-connect-failed-error sudo vim /etc/nginx/sites-available/default

    光标移动:
    w光标以单词向前移动, nw向前移动n个单词,落在单词第一个字母上
    b光标以单词向后移动, nb向后移动n个单词,落在单词第一个字母上
    e光标以单词向前移动, ne向前移动n个单词,落在单词最后一个字母上
    ge光标以单词向后移动, nge向后移动n个单词,落在单词最后一个字母上
    单词:全字母或全中文(每个标点符号都是分隔符,标点符号的组合也是分隔符)

    安装squid3
    http://forum.ubuntu.org.cn/viewtopic.php?t=107488
    http://raysmond.com/?q=zh-hans/article/79
    http://forum.ubuntu.org.cn/viewtopic.php?t=107488

    /etc/vim/vimrc中设置对系统所有用户有效,~/.vimrc对当前用户有效,~/.vimrc文件中的配置会覆盖/etc/vimrc中的配置。http://blog.carlcarl.tw/584/vim-neocomplcache-sudo-vim
    vim打开一个文件时,其会产生一个filename.swap文件,用于保存数据,当文件非正常关闭时,可用此文件来恢复,当正常关闭时,此文件会被删除,非正常关闭时,不会被删除,所以提示存在.swap文件,此时你可以恢复文件:vim -r filename.c 恢复以后把.swap文件删掉,在打开时就不会用提示良,注意.swap文件是个隐藏文件。可用:la查看。以.开头的是隐藏文件。

    .* 是一个字符循环0次或者很多次,多一个?在后面,意思是懒惰循环。
    eg.对于字符串aaaaaaa, a*一下子很勤劳的把整个字符串都匹配完了,结果是aaaaaaa。a*? 很懒,发现匹配字符串中一个a后,就完成了匹配,就不用再继续尝试下去了,因此就第一次只匹配a,然后进行第二轮匹配了,还是只匹配一个a就结束。

    EditPlus文件默认ANSI编码,xshell会话窗口编码默认不是UTF-8,所以EditPlus里的文件先修改编码为UTF-8,后通过xshell的sftp功能传送至服务器/var/www目录,本地默认目录为xshell.exe所在目录。

    JRE就是java runtime environment。也就是java程序运行环境,它提供java程序运行所需的一些函数和资源。
    JDK是java development kit的简称,主要是开发java程序的时候要用到。JDK是整个java的核心,它不但包括了java标准类库及java API,还包括了开发java程序所需的编辑、编译器等。
    JRE顾名思义是JAVA程序要运行所需要的环境,所谓跨平台就是要各种平台都有一个中间代理,那就是JRE。JDK中包括了JRE,但是对于不需要开发只是运行的用户是可以只单独安装JRE的,所以sun提供了JRE下载。Ubuntu 配置JDK环境 http://www.cnblogs.com/fnng/archive/2013/01/30/2883815.html

    bash启动配置文件 《鸟哥的Linux私房菜》p388

    PCI 机箱 硬件  http://zh.wikipedia.org/wiki/%E7%94%B5%E8%84%91%E7%A1%AC%E4%BB%B6

    X86结构是小端模式,http://zh.wikipedia.org/wiki/%E5%AD%97%E8%8A%82%E5%BA%8F

    编码方案:

    用于简体中文的GB2312和用于繁体中文的big5。

    GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。GB2312支持的汉字太少。

    1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。

    从ASCII、GB2312到GBK,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK都属于双字节字符集 (DBCS)。

    2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。从汉字字汇上说,GB18030在GB13000.1的20902个汉字的基础上增加了CJK扩展A的6582个汉字(Unicode码0x3400-0x4db5),一共收录了27484个汉字。CJK就是中日韩的意思。Unicode为了节省码位,将中日韩三国语言中的文字统一编码。GB13000.1就是ISO/IEC 10646-1的中文版,相当于Unicode 1.1。

    GB18030的编码采用单字节、双字节和4字节方案。其中单字节、双字节和GBK是完全兼容的。4字节编码的码位就是收录了CJK扩展A的6582个汉字。例如:UCS的0x3400在GB18030中的编码应该是8139EF30,UCS的0x3401在GB18030中的编码应该是8139EF31。

    Unicode也是一种字符编码方法,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。Unicode的学名是"UniversalMultiple-Octet Coded Character Set",简称为UCS。UCS可以看作是"Unicode CharacterSet"的缩写。Unicode只与ASCII兼容(更准确地说,是与ISO-8859-1兼容)

    UCS只是规定如何编码,并没有规定如何传输、保存这个编码。例如“汉”字的UCS编码是6C49,我可以用4个ascii数字来传输、保存这个编码;也可以用utf-8编码:3个连续的字节E6 B189来表示它。关键在于通信双方都要认可。UTF-8、UTF-7、UTF-16都是被广泛接受的方案。UTF-8的一个特别的好处是它与ISO-8859-1完全兼容。UTF是“UCS Transformation Format”的缩写。

    UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下:

    UCS-2编码(16进制) UTF-8 字节流(二进制) 
    0000 - 007F 0xxxxxxx 
    0080 - 07FF 110xxxxx 10xxxxxx 
    0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx 
    例如“汉”字的Unicode编码是6C49。6C49在0800-FFFF之间,所以肯定要用3字节模板了:1110xxxx 10xxxxxx10xxxxxx。将6C49写成二进制是:0110 110001 001001, 用这个比特流依次代替模板中的x,得到:1110011010110001 10001001,即E6 B1 89。

  • 相关阅读:
    【贪心】【堆】Gym
    【并查集】Gym
    【拓扑排序】【bitset】Gym
    【递归】【线段树】【堆】AtCoder Regular Contest 080 E
    【二分图】【并查集】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem L. Canonical duel
    【动态规划】【滚动数组】【bitset】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem J. Terminal
    【二分】【字符串哈希】【二分图最大匹配】【最大流】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem I. Minimum Prefix
    【枚举】【最小表示法】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem F. Matrix Game
    【推导】【构造】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem E. Space Tourists
    【推导】【贪心】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem D. Clones and Treasures
  • 原文地址:https://www.cnblogs.com/francfu/p/3451601.html
Copyright © 2011-2022 走看看