【Java 核心笔记】04.04. 代码块

代码块就是使用 {} 括起来的一段代码,根据位置不同,可分为四类: 普通代码块 构造代码块 静态代码块 同步代码块 普通代码块 直接定义在方法中的代码块称为普通代码块。 public class Demo { public static void main(String args[]) { { // 普通代码块 int x = 30; // 属于局部变量 System.out.println("普通代码块 --> x = " + x); } int x = 100; // 与局部变量名称相同 System.out.println("代码块之外 --> x = " + x); } } // 输出 // 普通代码块 --> x = 30 // 代码块之外 --> x = 100 构造代码块 直接在类中定义的代码块,称为构造块。...

October 14, 2017 · Zi WANG

scp 命令简明介绍

安全复制(英语:Secure copy,缩写SCP)是指在本地主机与远程主机或者两台远程主机之间基于Secure Shell(SSH)协议安全地传输电脑文件。“SCP”通常指安全复制协议或者程序本身。安全复制 - 维基百科,自由的百科全书 其使用方法类似于 cp 命令。 复制文件或目录命令: 复制文件: 将本地文件拷贝到远程 scp 文件名 --用户名@计算机IP或者计算机名称:远程路径 从远程将文件拷回本地 scp --用户名@计算机IP或者计算机名称:文件名 本地路径 复制目录: 将本地目录拷贝到远程 scp -r 目录名 用户名@计算机IP或者计算机名称:远程路径 从远程将目录拷回本地 scp -r 用户名@计算机IP或者计算机名称:目录名 本地路径 注意,如果远程主机使用非默认端口22,可以在命令中指定。例如,从远程主机复制一个文件到本地。 scp -P 2222 user@host:directory/SourceFile TargetFile

October 11, 2017 · Zi WANG

《鸟哥的Linux私房菜》笔记——04. 简单命令行

键入命令 [zill@hiwangzi.com ~]$ command [-options] parameter1 parameter2 ... 指令 选项 参数(1) 参数(2) 注意:有时也可以使用 + 放置于选项或参数之前 例如: zill@zill-pc:~$ date +%Y/%m/%d 2017/10/09 zill@zill-pc:~$ date +%H:%M 17:32 几个程序 显示日期与时间的指令: date 显示日历的指令: cal 简单好用的计算器: bc(进入交互界面后 scale=number 设置小数点位数) 几个按键 [Tab]:主要用于自动补全 [Ctrl]-c:中断当前程序 [Ctrl]-d:通常代表「键盘输入结束(End Of File, EOF 或 End Of Input)」的意思(可以代替手动输入 exit) [Shift]+{[PageUP]|[Page Down]}:向前翻页|向后翻页 关于帮助文档 1. man 表格的第一行,可以看到「DATE(1)」,其中(1)代表「一般使用者可以使用的指令」。 常见代号及含义(可以通过 man man 获得更详细的说明): 代号 代表内容 1 使用者在shell环境中可以操作的指令 2 系统核心可调用的函数与工具等 3 一些常用的函數(function)与函数库(library),大部分为C的函数库(libc) 4 硬件的说明,通常在/dev下的文件 5 设置文件或者是某些文件的格式 6 游戏(games) 7 惯例与协定,例如Linux文件系统、网络协议、ASCII code等等的说明 8 系统管理员可以使用的管理指令 9 跟kernel有关的文件 可以使用 man -f 指令 查找相关指令(名称完全相同)。 可以使用 man -k 指令 搜索相关指令。...

October 9, 2017 · Zi WANG

《鸟哥的Linux私房菜》笔记——03. 磁盘分区

Everything is a file. 常见硬件对应于 Linux 下的文件(/dev目录下) 装置 装置在Linux内的档名 SCSI/SATA/U盘硬盘机 /dev/sd[a-p] U盘 /dev/sd[a-p](与SATA相同) VirtI/O界面 /dev/vd[a-p](用于虚拟机内) 软盘机 /dev/fd[0-1] 打印机 25针: /dev/lp[0-2]; USB: /dev/usb/lp[0-15] 鼠标 PS2: /dev/psaux; USB: /dev/usb/mouse[0-15] CDROM/DVDROM /dev/scd[0-1](通用); /dev/sr[0-1](通用,CentOS较常见) 当前CDROM/DVDROM /dev/cdrom 当前的鼠标 /dev/mouse 磁带机 IDE: /dev/ht0; SATA/SCSI: /dev/st0 IDE硬盘机 /dev/hd[a-d](近乎被淘汰) MBR 分区方式 硬盘的第一个扇区主要记录了两个重要的信息,分别是:...

October 9, 2017 · Zi WANG

【Java 核心笔记】04.03. 匿名对象与字符串缓冲池

匿名对象 匿名对象:只在堆内存中开辟空间,不存在栈内存的引用。 由于匿名对象没有对应的栈内存引用所指向,所以使用一次之后,就等待被垃圾回收了。 例:一个单独的字符串就是一个 String 的匿名对象。System.out.println("Hi"); 字符串缓冲池 public class Test { public static void main(String[] args) { String str = "hello" ; System.out.println("hello".equals(str)) ; // true System.out.println("hello" == str); // true // String 池:Java为了优化字符串操作 提供了一个缓冲池; // str 指向字符串 "hello", 第二句中字符串 "hello" ,为同一指向。 // 这是因为字符串在常量池中已经存在,第二句中字符串 "hello" 就不再开辟新空间。 // 所以不管是 equals 比较内容, == 比较内存地址都为 true。 // 但请不要使用这种方式比较字符串,不稳键。 } } 下面的代码验证了我去「XXXX」面试时真的是乱吹🙈: /* * 当时我以为 JVM 的缓冲池可以实现“变量(a)连接字符串("b")可以与"ab"使用同一个堆内存” * 但是事实是并不可行 */ public class StringTest{ public static void main(String [] args){ String ab="ab"; String a="a"; // 「变量」与「变量连接字符串(匿名对象)」比较 System....

October 7, 2017 · Zi WANG

【Java 核心笔记】04.02. Override 的补充

方法的覆写 当子类定义了与父类方法名称相同、参数的类型及个数、返回值相同的方法时,就被称为方法的覆写。 被覆写的方法不能拥有比父类方法更严格的访问权限。private < default < protected < public 如果父类中的方法使用了 private 声明,而子类中同样的方法使用了 public 声明,这样属于覆写么?不属于。 class A { public void fun() { print(); } /*①*/ void print() { System.out.println("父类中的 print() 方法"); } } class B extends A { /*②*/ void print() { // 覆写的是 print() 方法 System.out.println("子类中的 print() 方法"); } } public class OverrideDemo { public static void main(String [] args) { B b = new B(); b....

October 7, 2017 · Zi WANG

【Java 核心笔记】04.01. 继承与多态、重写Object类方法

继承 Java 中只允许单继承。 继承的UML类图表示,关于UML 在使用继承的时候应该注意的是:子类不能直接访问父类中的私有成员,但是子类可以调用父类中的非私有方法。(详见下文访问控制) 使用super()方法调用父类构造函数 class A { A(String str) { System.out.println(str); } } class B extends A { B() { // 1. 因为A类缺少默认构造方法,所以必须显示调用父类A的构造函数, // 否则无法编译通过。 // 2. 另外,使用super,显示调用父类构造函数时,必须在方法体首行。 super("default"); System.out.println("Hello"); System.out.println("World"); } B(String str) { // 此处调用本类的无参构造函数,已经传递调用了父类A的构造函数。 this(); } } public class SuperTest { public static void main(String [] args) { B b = new B("Hi"); } // 输出结果如下: // default // Hello // World } 一个对象变量可以指示多种实际类型的现象被称为多态(polymorphism)。 子类不能覆盖父类中 final 修饰的方法(final 类中所有方法自动地成为 final 方法,并且 final 类不能被继承)。 在父类转子类的类型转换前,可以先借助 instanceof 操作符,查看是否能够转换成功。 if (staff instanceof Manager) { boss = (Manager) staff; } 在超类(父类)设计合理的情况下,很少会使用到类型转换和 instanceof 运算符。 动态绑定、静态绑定 在运行时能够自动地选择调用哪个方法的现象称为动态绑定(dynamic binding)。 如果是 private 方法、static 方法、final 方法或者构造器,编译器可以准确知道应该调用哪个方法,此种调用方式称为静态绑定(static binding)。 抽象类 包含一个或多个抽象方法的类本身必须被声明为抽象的(abstract)。 除了抽象方法,抽象类还可以包含具体数据和具体方法。 扩展抽象类有两种选择: 一是部分实现抽象方法,此时子类仍需标记为抽象类; 二是定义全部抽象方法。 类即使不包含抽象方法,也可以将类声明为抽象类。 抽象类不能被实例化。 访问控制 仅对本类可见—— private...

October 7, 2017 · Zi WANG

《鸟哥的Linux私房菜》笔记——02. 关于Linux

Unix 历史 1969年以前:伟大的梦想——Bell, MIT 与 GE 的「Multics」系统 1969年:Ken Thompson 的小型 file server system 1973年:Unix 正式诞生(Ritchie等人以 C 语言写出第一个正式 Unix核心) 1977年:重要的 Unix 分支——BSD 的诞生 1979年:重要的 System V 架构(支持x86)与版权宣告 1984年之一:x86 架构的 Minix 操作系统开始编写并于两年后诞生 1984年之二:GNU 计划与 FSF(Free Software Foundation) 基金会的成立 1988年:图形界面 XFree86(X Window System + Free + x86) 计划 1991年:芬兰大学生 Linux Torvalds 的一则简讯 Linux 的核心版本 2.6.18-92.el5 主版本.次版本.释出版本-修改版本 核心被分为两个分支: 主、次版本为奇数:发展中版本(development) 如2.5.xx,这种核心版本主要用在测试与发展新功能,所以通常这种版本仅有核心开发工程师会使用。 如果有新增的核心程序代码,会加到这种版本当中,等到众多工程师测试没问题后,才加入下一版的稳定核心中; 主、次版本为偶数:稳定版本(stable) 如2.6.xx,等到核心功能发展成熟后会加到这类的版本中,主要用在一般家庭计算机以及企业版本中。 重点在于提供使用者一个相对稳定的Linux作业环境平台。 Linux 是一个操作系统最底层的核心以及其提供的核心工具。他是 GNU GPL 授权模式,所以,任何人均可取得源代码,并且可以修改。...

October 2, 2017 · Zi WANG