java-bits

java符号位

java所有的数值基础类型int,double,float,byte都是有符号位的。

java位展示

int i = xcafe ; // hexadecimal case
int j = 045 ;    // octal case
int l = 42 ;     // decimal case
int z = b1100110011 // binary case

java数值类型的位数

int 32byte 8double 64float 32

java基础位操作

1. `|` or 操作
2. `&` and 操作
3. `^` Xor 操作
4. `~` Not 操作
5. `<<` 左移位,右边补零
6. `>>>` 逻辑移位,右边补零
7. `>>` 算法移位,右边补符号位

参考资料:

  1. http://stackoverflow.com/questions/842817/how-does-java-convert-int-into-byte
  2. https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html

vim-encode

网上已经有很多关于vim的编码设置,但是我觉得这个设置很重要:

如果已经打开了解码错的文件,想重新设置编码格式:

1
:edit ++enc=utf8

DOCTYPE-html-error

今天遇到了一个错误:
error

这个错误出现的原因是:
有一个异步请求返回的数据不是标准的json或者jsonp数据,就会报这个错误

url-encode-tomcat

自认为对tomcat和浏览器的编码很熟悉了,但是这周遇到了一个自动检测编码的问题。突然发现自己还是那么一知半解了。然后又费点研究一下。

主要讲:

  1. http协议对编码的支持
  2. 浏览器对编码的支持
  3. tomcat 这类web容器对编码的支持

1. http协议

自己感觉 request头主要做的事情是:指示,它传递的信息大多数的泛化的。比方说:告诉server,当前环境支持什么语言,什么编码方式。request中带的信息不多。而response头中信息都是具体的,具体告诉浏览器该做什么,怎么做。

request 头具体指明编码方式的字段是:

Content-Type

但是content-type只有在 Post 和 Put 的时候生效,具体含义是表明当前表单是什么编码类型。

response 头中也有一个 Content-Type,它的含义是当前html的编码是什么。

2. 浏览器编码

浏览器编码分为两部分:

  • url编码
    一般情况下,用户直接在浏览器中输入url编码为utf-8。如果点击页面上的链接,编码方式为当前页面的编码,具体的html代码为,例如:
    1
    <meta http-equiv="Content-Type" content="text/html;charset=gbk">

这样点击url的编码就变成了gbk。

  • html编码
    html编码方式是根据response中返回的Content-Type指定。浏览器根据该值来解码当前的页面。

3. web容器对编码的支持

web容器是根据httpservlet request中的getRequestCoding 来去确定,当前请求的编码。RequestCoding的值只有在Post和Put的时候,浏览器会传递进来。如果是Get请求的话,将不会有值传进来。这时候用什么编码方式呢?是由web容器一个默认配置项指定的。一般情况下,我们会通过spring的一个处理编码的filter来配置。
如果说出现一个请求的url是gb编码,但是你的服务器设置的确是utf-8编码,这时候就会出现乱码问题。一般情况下的处理方式是:

  • 告诉调用我们url的网站我们的编码
  • 动态的检验当前url的编码。(等下继续说如果动态检测url编码)

文档位置:

  1. http协议:http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
  2. 浏览器url编码:http://stackoverflow.com/questions/912811/what-is-the-proper-way-to-url-encode-unicode-characters

ranger

刚从windows系统转到ubuntu的时候,总觉得ubuntu文件系统的文件系统很难用。在terminal和文件系统中切换感觉成本相当的高,而且ubuntu的文件系统非常难用,换了几个文件系统,都不理想。直到我发现ranger在terminal中的文件系统,相当好用,相当强大。下面我来介绍一下ranger。

先来看看效果:
ranger

1. 在ubuntu下安装:

1
sudo apt-get install ranger caca-utils highlight atool w3m poppler-utils mediainfo

安装了除了ranger之外的其他软件,主要是用来预览文件用的。安装好ranger以后,运行

1
2
ranger // 进入
q // 退出

ii ranger在安装目录有自己的配置文件,你可以把复制到自己的文件目录下,通过命令:

1
ranger --copy-config=all

配置文件的目录位置在:

1
cd ~/.config/ranger

2. 使用技巧

ranger的操作是vim-style。平时使用vim的话,会十分顺手。如果你使用terminal是xterm或者其它支持多256色的终端,则可以预览图片。因为我使用的是yakuake,研究了半天都不知道怎么才可以预览图片,这个问题先放在这里,以后有时间再解决。

导航操作:

正常移动

  • j = Move down
  • k = Move up
  • h = Move to parent directory
  • gg = Go to the top of the list
  • G = Go to the bottom of the list
  • -f = Page down
  • -b = Page up
  • J = Page down 1/2 page
  • K = Page up 1/2 page
  • H = Go back through navigation history
  • L = Go forward through navigation history
    目录快捷切换
  • gh = cd ~
  • ge = cd /etc
  • gu = cd /usr
  • gd = cd /dev
  • go = cd /opt
  • gv = cd /var
  • gm = cd /media
  • gM = cd /mnt
  • gs = cd /srv
  • gr = cd /
  • gR = cd to ranger’s global configuration directory
    我觉得这软件做的特别好的一点,当你在输入g的时候,它会跳出所有能和g配对的命令,而且还有相应的提示。提示信息非常人性化,一看就懂。

    文件操作:

    ranger的文件操作也是很方便:
  • i = Display file (useful if you’d like to view a text file in a pager instead of editing it)
  • l or E = Open file (opens file in default file-handler)
  • r = Open file with… (allows you to choose program to use)
  • o = Change sort order (follow by character in menu selection)
  • z = Change settings (commonly used toggle settings)
  • zh = View hidden files
  • = Select current file
  • t = Tag file (you can perform actions on tagged files)
  • cw = Rename current file
  • / = Search for files
  • n = Jump to next match
  • N = Jump to previous match
  • yy = Yank (copy) file
  • dd = Mark file for cut operation
  • = Delete selected file

    tab切换

    ranger也支持多tab:
  • -n = Create new tab
  • -w = Close current tab
  • = Next tab
  • = Previous tab

    通用命令

  • ? = View ranger man page
  • 1? = Keybindings help
  • 2? = Command help
  • 3? = Settings help
  • R = Reload current directory
  • Q = Quit

    外部调用接口

    ranger除了自己的支持,还有支持外部的shell调用
  • ! = Execute a command from the shell (non-ranger commands)
  • : = Execute a ranger command
  • du = Measure disk usage of current directory
  • chmod = Change permissions of current file

结束

应该还有很多方便的功能,以后再慢慢挖掘。

linux-shortcut

命令行快捷键

  1. CTRL + U – 剪切光标前的内容
  2. CTRL + K – 剪切光标至行末的内容
  3. CTRL + Y – 粘贴
  4. CTRL + E – 移动光标到行末
  5. CTRL + A – 移动光标到行首
  6. ALT + F – 跳向下一个空格
  7. ALT + B – 跳回上一个空格
  8. ALT + Backspace – 删除前一个单词
  9. CTRL + W – 剪切光标前一个单词
  10. Shift + Insert – 向终端内粘贴文本

sudo !!

sudo repeat last command

htop 进程查看