Java常用容器类与接口
不同系统的换行问题(Git相关)
写在前面
- 在直接用 Git 命令行上传爬下来的代码的时候,发现上传到Github上的代码文件异常,具体表现为,在代码文件使用 txt 格式结尾的时候,浏览代码结构松散,进一步检查发现在行末有不可见的符号,使用 cc 结尾的文件,在行尾都有一个 ==^M==, 后来谷歌出了结果,记录如下(确实吐槽某度)
- 换行符和回车符的区别
- 换行符是另起一行,使用 ‘\n’来表示,意味 ‘newline‘
- 回车符是回到一行的开头,使用 ‘\r’来表示, 意味 'return'
- 不同操作系统平台的换行符
- Unix / Linux 使用的是 'LF' (0x0A)
- 现在的MacOS使用的是 'CR' (0x0D)
- DOS / Windown 上使用的是 'CRLF' (0x0D0A)
- 换行符底层标识符不同也就导致了在不同的平台上,阅读和执行的体验结果可能有区别,这次将在Win平台上爬下来的以 UTF-8 编码保存的文档上传到Github时,就成功入坑了
- Git 有一个功能叫做 换行符自动转换,在使用 git 的时候,该功能时默认开启的,作用就是,当你将项目clone到本地的时候,git自动的将文件中的换行符换成Win的CRLF,而当add和push 的时候,git再自动的把项目文件的所有CRLF换成LF,WTF?这样首先就把所有的文件每一行都改变了,diff看不出具体修改了哪里
推荐解决方法
- 首先,在安装Git客户端被询问是否开启自动换行符转换的时候,选择 'Checkout as-is, commit as-is',(尤其是UTF-8,尤其是包括中文)
- 推荐在命令行下更改设置为不自动替换换行符,但是强制开启换行符检查功能,避免发布的文件出现问题
--------------------------------------
git config --global core.autocrlf false
git config --global core.safecrlf true
- 再就是如果是爬下来的,或者是编辑时选择的不是Unix格式的换行符的,Git提供了一个叫做dos2unix的命令让文件替换成Unix格式,Linux如果没有的话apt / yum安装一下就好
Java 方法详解
[HDU-2181] 哈密顿绕行世界问题
Describe 一个规则的实心十二面体,它的 20 个顶点标出世界著名的 20 个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。 Input 前 20 行的第 i 行有 3 个数,表示与第 i 个城市相邻的 3 个城市.第 20 行以后每行有 1 个数 m,m<=20,m>=1.m=0 退出. Output 输出从第 m 个城市出发经过每个城市 1 次又回到 m 的所有路线,如有多条路线,按字典序输出,每行 1 条路线.每行首先输出是第几条路线.然后个一个: 后列出经过的城市.参看 Sample output