#49 Java 环境变量的配置
Java 2014-01-08突然用到了一下 JDK,感觉以前学过的东西都忘光了,所以这次记个笔记。
coding in a complicated world
突然用到了一下 JDK,感觉以前学过的东西都忘光了,所以这次记个笔记。
a = 7
"{:04b}".format(a)
# 0111
f"{a:04b}"
# 0111
bin(a)
# 0b111
被一个简单的位运算给唬住了~
列举所有的 CSS 选择器。
想通过 CMD 脚本实现一个功能:点击脚本打开某个指定目录。
cd . > a.txtcd.表示改变当前目录为当前目录,即等于没改变;而且此命令不会有输出。
表示把命令输出写入到文件。后面跟着a.txt,就表示写入到a.txt。
而此例中命令不会有输出,所以就创建了没有内容的空文件。
copy nul a.txtnul表示空设备,从概念上讲,它不可见,存在于每个目录中,可以把它看成一个特殊的 “文件”,它没有内容;一般可把输出写入到nul,来达到屏蔽输出的目的,如pause>nul,此命令执行效果是暂停,并且不会显示“请按任意键继续. . .”。
此例子表示将空设备复制到a.txt,同样创建了没有内容的空文件。
type nul > a.txt此例子表示显示空设备的内容,并写入到a.txt。
echo a 2> a.txt“2” 表示错误输出的句柄,此例中没有错误输出,所以创建了没有内容的空文件。
其实>默认都是重定向了句柄1,即标准输出句柄。比如 cd . > a.txt,其实就是 cd . 1> a.txt。
同样,句柄 3 到 9 也可以使用在本例中,它们是未经定义的句柄,也不会有输出,如 echo a 3> a.txt。
fsutil file createnew d:\a.txt 0使用 fsutil 创建了一个空文件。
只要没有输出,并重定向到文件就可以了
最常用的是 echo 命令,此例子表示把字母a和回车换行覆盖输出到 a.txt(如果 a.txt 原来已有内容则覆盖掉原来的内容),如果追加内容,可以使用>>,如 echo b >> a.txt,表示把 b 和回车换行追加到文件末尾。
type a.txt > b.txt
copy a.txt b.txt
fsutil file createnew d:\a.txt 1
collections.namedtuple 是一个工厂方法,用来创建一个 tuple 子类。
# python2
collections.namedtuple(typename, field_names[, verbose=False][, rename=False])
# verbose = True 对于 Python 初学者来说非常好,创建类型时,会输出类的完整定义,用来学习 Python 类的一些特性。
# 这个参数在 python3.7 版被移除
# python3
collections.namedtuple(typename, field_names, *, rename=False, defaults=None, module=None)
from collections import namedtuple
DBConn = namedtuple('MySQL', ('host', 'port', 'username', 'password', 'db'))
conn = DBConn('localhost', '3306', 'root', '123456', 'test')
conn
# MySQL(host='localhost', port='3306', username='root', password='123456', db='test')
conn._asdict() # python2 输出 OrderedDict 类型
# {'host': 'localhost',
# 'port': '3306',
# 'username': 'root',
# 'password': '123456',
# 'db': 'test'}
conn.__class__
# __main__.MySQL
conn.host
# 'localhost'
刚刚读了一遍 Discuz 系列产品中广泛使用的加密解密算法 authcode,受益匪浅,真是设计巧妙。
为了真的理解其中的想法,用 Python 改写了一遍。
新制定一张作息时间表,规范一下自己的作息安排,不论寒暑,不分休息日和工作日。
Cygwin 是一款能在 Windows 平台上运行的类 UNIX 模拟环境的开发工具。
重新运行一遍 setup.exe,通过搜索找到需要安装的包,勾选就行了;
cwgwin 默认安装了 svn,可以通过 svn 命令下载:
svn --force export https://apt-cyg.googlecode.com/svn/trunk/ /bin/
chmod +x /bin/apt-cyg
或者:
wget https://apt-cyg.googlecode.com/svn/trunk/apt-cyg -P /bin
网上都说要 “chmod +x /bin/apt-cyg”,但是用 ls 查看的结果发现已经是可执行的了。
里面默认使用的安装源是 ftp://mirror.mcs.anl.gov,改成网易安装源:
apt-cyg -m https://mirrors.163.com/cygwin
先查看一下帮助:

先更新一下库的相关情况:apt-cyg update,竟然失败,报了 404。

查看网易的安装源,再比对刚才 update 的地址,发现原来网易安装源下面还有“x86”,“x86_64”这类架构,所以就把重新设置安装源:
apt-cyg -m https://mirrors.163.com/cygwin/x86
总算成功的 update 了,注意到安装目录下多出来了一个 setup 目录,有一个 setup.ini 文件。
随便试着安装一个 httping 试一下,结果失败了,一看下载路径中出现了两个 /x86。
找了一会儿原因,原来是因为 apt-cyg 是通过 setup.ini 中的路径下载软件,所以只好试着把里面所有的 x86/release 都替换成 release,然后通过 apt-cyg 的 -u 参数来禁止每次安装时都更新 setup.ini 文件,果然是有效的。
为了防止每次都需要加一个参数,况且总是将 apt-cyg 输成 apt-get,干脆可以设置别名:alias apt-get="apt-cyg -u"。
用了一段时间之后,发现这不是最佳方案,网友提供的方法才是问题的根源:
apt-cyg 其实是一个 bash 文件,可以直接在其中找出症结,就是每次更新都是通过 wget 命令实现,搜索 "wget -N $mirror/setup" 可以找到两行:
wget -N $mirror/setup.bz2
wget -N $mirror/setup.ini
可以将其中的 $mirror 后面接上 /x86 或者 /x86_64。
我想,一定有一个什么变量对应着这个架构目录名称,setup.ini 中有一个 arch,于是我把 $mirror 替换成 $mirror/$arch 但是还是报错(https://mirrors.163.com/cygwin//setup.bz2),应该是 arch 变量不存在所致。
我并不会弄 bash,这个问题只能留着以后解决了。
上海交大的安装源应该不会存在路径的问题,因为下面没有分 CPU 架构目录:
https://ftp.sjtu.edu.cn/cygwin/