前言
在画类图时,空心菱形(聚合关系)和实心菱形(组合关系)两者分别在什么场景下使用?由于两者概念有些相近,相信搞混的人还是存在的。本文通过类图对比来说明两者的根本区别。
X先生的回答
- 空心菱形代表
has - a即持有/拥有的意思 - 实心菱形代表
part - of即 ~的一部分的意思 
	
		
						
	在画类图时,空心菱形(聚合关系)和实心菱形(组合关系)两者分别在什么场景下使用?由于两者概念有些相近,相信搞混的人还是存在的。本文通过类图对比来说明两者的根本区别。
has - a 即持有/拥有的意思part - of 即 ~的一部分的意思通常一台服务器都会开放权限给运维,开发等用户。随着服务器台数增长,用户交接/离职等,服务器的管理及安全也就成为一个重要的课题。如员工离职在服务器上留后门或恶意代码,这样的场景如何追踪该员工?
没错,可以借用键盘按键记录器。本文主要介绍如何通过logkeys来记录用户按键记录。
sudo apt-get install logkeys
			csdn博客
http://blog.csdn.net/huuinn
GIT
git本地删除master以外所有分支
git 别名
git 颜文字
opencv
opencv描绘照片
jupiter
jupiter使用教程
git branch | grep -v "master" | xargs git branch -D
git stash && git checkout master && git branch | grep -v "master" | xargs git branch -D
			只用CSS3实现动画效果。
<div id="box"></div>
#box{
  width:100px;
  height:100px;
  background-color:blue;
}
通过以上代码定义一个蓝色四边形。
使用for循环
int iron (int a, int b) {
    int result = 0;
    for (int i = a; i <= b; i++) {
        result = result + i;
    }
    return result;
}
			import java.security.InvalidKeyException;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.Signature;
import java.security.SignatureException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
 * ECDSA 160bit 签名及签名验证例子
 */
public class ECDSASignature {
    public static void main(String argv[]) {
        signatureTest();
    }
    public static void signatureTest() {
        /**
         * 密钥对生成
         */
        KeyPairGenerator keyPairGenerator = null;
        try {
            keyPairGenerator = KeyPairGenerator.getInstance("EC");
        } catch (NoSuchAlgorithmException ex) {
            return;
        }
        SecureRandom secureRandom = new SecureRandom();
        keyPairGenerator.initialize(160, secureRandom);
        KeyPair pair = keyPairGenerator.generateKeyPair();
        Key publicKey = pair.getPublic();
        Key privateKey = pair.getPrivate();
        // 字符串
        String hako = "test";
        /**
         * 私钥签名(ECDSA 160bit)
         */
        byte[] sign = null;
        try {
            Signature signatureSign = null;
            signatureSign = Signature.getInstance("NONEwithECDSA");
            signatureSign.initSign((PrivateKey) privateKey, secureRandom);
            signatureSign.update(hako.getBytes());
            sign = signatureSign.sign();
            System.out.println("sign: " + new String(sign));
        } catch (InvalidKeyException | NoSuchAlgorithmException | SignatureException ex) {
            Logger.getLogger(ECDSASignature.class.getName()).log(Level.SEVERE, null, ex);
        }
        /**
         * 用公钥进行签名验证
         */
        Signature signatureVerify = null;
        try {
            signatureVerify = Signature.getInstance("NONEwithECDSA");
            signatureVerify.initVerify((PublicKey) publicKey);
            signatureVerify.update(hako.getBytes());
            boolean verifyResult = signatureVerify.verify(sign);
            System.out.println(verifyResult ? "签名OK" : "签名NG");
        } catch (NoSuchAlgorithmException | InvalidKeyException | SignatureException e) {
            Logger.getLogger(ECDSASignature.class.getName()).log(Level.SEVERE, null, e);
        }
    }
}
sign: *************
签名OK