- 浏览: 543155 次
- 性别:
- 来自: 广州
-
最新评论
-
liuxiuhao:
前端通过时间戳传递 也可以解决
fastjson对Date的处理 -
Yunba云巴:
我们(https://yunba.io/)是基于MQTT协议实 ...
mqtt消息中间件Mosquitto的安装和配置 -
yyyj8j8:
感谢楼主分享
使用Django1.9开发博客教程 - 目录汇总贴 -
mohaowen1989:
马马虎虎,还行吧。。哈哈哈哈
企鹅日记(三):文件权限与目录配置 -
mohaowen1989:
马马虎虎 还行吧
字符编码笔记:ASCII,Unicode和UTF-8
文章列表
第74条:谨慎地实现Serializable接口:
第75条:考虑使用自定义的序列化形式:
public final class StringList implements Serializable {
private transient int size = 0;
private transient Entry head = null;
// No longer Serializable!
private static class Entry {
String data;
Entry next;
Entry previous;
}
...
第66条:同步访问共享的可变数据:
使用volatile可以在两个线程中通信
public class StopThread {
private static volatile boolean stopRequested;
public static void main(String[] args) throws InterruptedException {
Thread backgroundThread = new Thread(new Runnable() {
public void run() {
int i = 0;
while (! ...
第57条:只针对异常情况才使用异常:
第58条:对可恢复的情况使用受检异常,对编程错误使用运行时异常:
第59条:避免不必要地使用受检异常:
第60条:优先使用标准异常:
第61条:抛出与抽象相对应的异常:
第62条:每个方法抛出的异常都要有文档:
第63条:在细节消息中包含能够捕获失败的信息:
第64条:努力使失败保持原子性:
第65条:不要忽略异常
本人博客已搬家,新地址为:http://yidao620c.github.io/
第45条:将局部变量的作用域最小化:
几乎每个局部变量声明都应该包含一个初始化表达式。这个有个例外,就是try catch,在try的外部定义,然后在try里面初始化。
第46条:for-each循环优先于传统的for循环:
第47条:了 ...
第39条:必要时进行保护性拷贝:
第40条:谨慎设计方法签名:
避免过长的参数列表,目标是四个参数或者更少,如果多于四个了就该考虑重构这个方法了。
三种方法可以缩短过长的参数列表:
①,把方法分解成多个方法,每个方法只需要参数的一个子集,不推荐。
②,创建辅助类helper class,用来保存参数的分组。这些辅助类一般为静态成员类。
③,从对象构建到方法调用都采用Builder模式,如果方法带有多个参数,尤其是其中某些事可选的时候,最好定义一个对象来表示所有参数,并允许客户端在这个对象上多次setter调用,玩了后执行execute,它对参数进行有效性检测并执行实际的逻辑 ...
第30条:用enum代替int常量:
public enum Operation {
PLUS("+") {
double apply(double x, double y) {
return x + y;
}
},
MINUS("-") {
double apply(double x, double y) {
return x - y;
}
},
TIMES("*") {
double apply(double x, double y) {
return ...
磁盘阵列的英文全称是Redundant Arrays of Inexpensive Disks(RAID),即容错廉价磁盘阵列。可以通过一些技术将多个较小的磁盘整合成为一个较大的磁盘设备;而这个设备可不止存储功能而已,它还具有数据保护功能。
RAID的等级:
× RAID-0(等量模式,stripe):性能较佳
这种模式使用相同型号和容量的磁盘来组成,可以有多个,RAID会将每个磁盘划分成等量的区块(一般为4K,2K等等),然后当一个文件被写入时,该文件会依据块大小切割好,之后依序放到各个磁盘里面去,由于每个磁盘交错存放数据,因此当你的数据要写入RAID时,数据会被等量的放置到各个磁盘 ...
磁盘配额(quota)比较常用的几个情况是:
* 针对WWW server,例如:每个人的网页空间的容量限制
* 针对mail server,例如:每个人的邮件空间限制
* 针对file server:每个人最大的可用网络硬盘空间(教学环境中比较常见)
上面的是针对网络服务的设计,如果是针对linux系统主机上面的设置,用途有下面这些:
* 限制某一用户组最大磁盘配额,可用设置普通用户组和VIP用户组,有点类似会员制,VIP用户相应的磁盘空间大小比较大些,普通用户想成为VIP,嘿嘿,交会费就行。
====账号管理配置文件====
vim /etc/passwd,显示系统内所有账号内容,每一行代表一个账号,比如:
yidao:x:1000:1000:fedora17:/home/yidao:/bin/bash
解释下这7个字段的含义:
1:账号名称 | 2:密码 | 3:UID | 4:GID | 5:用户信息说明 | 6:主文件夹 | 7:shell
vim /etc/shadow,显示密码信息,每一行代表一个账号密码信息,比如:
其实,shell script就是利用shell的功能缩写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重导向等功能,达到我们想要的目的。
bash的两种不同 ...
正则表达式就是处理字符串的方法,它以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。
正则表达式基本上就是一种“表示法”,只要工具程序支持这种表示法,那么该工具程序就可以利用正则表达式处理字符串。例如vi,grep,awk,sed等。
正则表达式和之前的bash通配符是两个完全不同的东西,两者毫无关系,这个要注意下。
# grep [-A] [-B] [--color=auto] ‘string’ filename
-A:后面加数字,为after的意思,除了列出该行,后续的n行也列出
只要能够操作应用程序的接口都能称为shell。狭义的shell指的是命令行方面的软件,包括bash。广义的shell则包括图形界面软件,因为图形界面其实也可以操作各种应用程序来调用内核工作,不过,在这里我们主要指的是bash。
# type [-tpa] command –> 查看命令是否为bash的内置命令或者是外部命令
* 利用$var或者是${var}可获取变量var的值
* bash中的双引号:特殊字符如$等,可以保有原本的特性
* bash中的单引号:所有的字符均为普通的字符,没有其他含义
* 可以用\将特殊字符变成一般字符
在命令模式下输入 :wq 表示保存离开,输入 :wq! 表示强制写入并离开,前提是你的权限可以改变。
一般模式下的按键列表:
移动光标的方法
h 或 向左方向键(←)
光标向左移动一个字元
j 或 向下方向键(↓)
光标向下移动一个字元
k 或 向上方向键(↑)
光标向上移动一个字元
l 或 向右方向键(→)
光标向右移动一个字元
Google Guava Collections 使用介绍
Google Guava Collections(以下都简称为 Guava Collections)是 Java Collections Framework 的增强和扩展。每个 Java 开发者都会在工作中使用各种数据结构,很多情况下 Java Collections Framework 可以帮助你完成这类工作。但是在有些场合你使用了 Java Collections Framework 的 API,但还是需要写很多代码来实现一些复杂逻辑,这个时候就可以尝试使用 Guava Collections 来帮助你完成这些工作。这些高质量 ...
====gzip压缩命令====
# gzip [-cdtv#] 文件名 –> 可以解开compress,zip,gzip软件压缩的文件
-c:将压缩数据输出到屏幕上,可通过数据重定向来处理
-d:解压缩参数
-t:验证一个压缩文件的一致性,看看文件是否有无错误
-v:显示源文件/压缩文件的压缩比等信息
-#:压缩等级,