0%

Code 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class WaterBottle {
private String brand;
private boolean empty;
public static void main(String[] args){
WaterBottle1 wb = new WaterBottle1();
System.out.print("Empty = " + wb.empty);
System.out.print(" ");
System.out.print("Brand = " + wb.brand);
}
}

class WaterBottle1 {
private String brand;
private boolean empty;
}
Read more »

Java has precise rules about identifiers names.

  • The name must begin with a letter or the symbol $ or _
  • Subsequent characters may also be numbers
  • You cannot use the same name as Java reserved word. Please remember Java is case sensitive, so Public and public are different.
Read more »

JavaSE Overriding Methods With Exception

Scenario A

1
2
3
4
5
6
7
8
9
10
11
12
13
class CanNotHopException extends Exceotion{ }

class Hopper {
public void hop() throw Exception{

}
}

class Bunny extends Hopper {
public void hop() throws CanNotHopException{

}
}
Read more »

What is https?

From Wikipedia, HTTPS(HTTP Secure) is an adaption of the Hypertext Transfer Protocol(HTTP) for secure communication over a computer network. The communication protocol is encrypted by Transport Layer Security(TLS), or formerly, its predecessor, Secure Sockets Layer(SSL).

Read more »

Go Programming Intro

为什么学习Go?

  • DLL,Jar地狱
    • 项目管理工具, 包之间会产生冲突,包的依赖(版本),如果一个包出现安全问题,上千个系统都要更换
    • Semantic version x.x.x, 特别是第一个编号的不一样,使得包的依赖更加
  • 变更legacy code的继承方式有多难?
    • 旧的代码和新的代码融合,还要写adapter,delegator
  • 有多少次忘了关闭资源?
    • JDBC, 及时你close statement,catch里面还要close一次
  • Java不能做到多地运行
    • 尽管JVM做了隔离,但是包的数量非常庞大,不兼容问题
Read more »

Git Pinciple


Git使用命令有很多,参数也很多,如何把它迅速掌握?就应该从原理开始。从建立git跟踪文件到最后多次提交,内部文件数据结构是怎样的呢?结合Git Simple Tutorial的基本概念,本节将一步一步揭开它的不为人知的秘密。一般初学者掌握这个以后,使用命令就不会那么迷茫了。

Read more »

Git Simple Usage


本文主要对Git的基本概念做一个总结。


  • 安装Git
    下载

  • 初步使用

    git init: initialize git's directory
    
    # 提交需要一个名字
    # 全局配置
    git config --global user.name [your_name]
    
    # 局部配置,只对本工程
    git config user.name [your_name]
    
    # 查看配置
    git config -l
    
    # 新建一个文件, 加入全部文件
    git add .
    
    # 状态说明
    git status
    
    # 提交, 输入commit信息, git commit -m '输入commit信息'
    git commit
    
    # 查看commit情况
    git log
    
    
  • Git 的关键核心概念

    • 工作区: 电脑里可以看到的目录

    • 版本库(Repository)
      workflow.png

    • Git工作方式

      • 在工作目录中修改文件。
      • 暂存文件,将文件的快照放入暂存区域。
      • 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。
        • 传统版本控制工具工作方式
          只记录更改的部分
        • Git工作方式
          记录所有文件全貌
          可能空间很大?空间换时间
          只记录改动文件的全貌,不记录文件的本身,使用指针指向没有改动 的文件
          working-style.png
    • 几乎所有操作都本地执行

    • Git一般只添加数据,一旦提交,不用担心数据丢失,有后悔药吃

    • 四种基本对象类型

      • Blob
        每个blobs代表一个(版本)文件,只包含文件的数据,忽略元数据,如名字、路径和格式
      • Tree
        每个trees代表一个目录,包含此目录下的blobs、子目录、文件名、路径等元数据。对于子目录的目录,git相当于存储了嵌套的trees
      • Commit
        每个commit记录了提交一个更新的所有元数据,如指向的tree,父commit,作者、提交者、提交日期、提交日志等。每次提交都指向一个tree对象,记录了当次提交时的目录信息。一个commit可以有多个(至少一个)父commits。
      • Tag
        tag用于给某个上述类型的对象指配一个便于开发者记忆的名字, 通常用于某次commit。相当于给上面的一个commit打上一个标记,代表一个里程碑。

        思考:
        Trees数据、Commits提交行为、Tags版本分离,就像设计模式的单一职责

    • SHA1哈希值

      • Git中每一个“对象名”都是对“对象”内容做SHA1(SHA1是一种密码学的哈希算法)哈希计算得来的,所以对于内容不同的对象,会有不同的SHA1哈希值
      • git log
        查看commit的哈希值
      • 使用哈希值(16进制)的前两位作为文件夹名称(oxff最多256个文件),后面的位数作为文件名名称
      • ./git/objects 对象存储位置
      • git cat-file -t 哈希值
        查看对象类型
      • git cat-file -p 哈希值
        查看对象内容
      • 对象以二进制存储,所以要使用cat-file命令
        object-diagram.png
    • 引用解析器 git rev-parse Head
      头部总是指向当前工作的commit
    • git init 发生什么了? git add 发生了什么? git commit 发生了什么?
Read more »