基础 -- Java笔记2--故事汇
Java笔记2–故事汇
2016年1月20日
14:49
java储存数据的空间:
寄存器(registers):读取速度最快的地方,位于处理器内部。
栈(stack):位于RAM(random-access memory 随机访问内存)
堆(heap):位于RAM,对象存储的位置。
静态存储空间:静态属性的数据
常量存储空间:常量数据
this的故事:
this相当于是一个对自己的引用,当该类的第一个对象在被创建后,this便会指向这个对象,于是当该类还没有创建对象之前我们不能去调用this,所以在静态的方法中不能出现this。
12345678910111213141516171819202122232425
package com.firefly.javatest.pojo; public class Student { public int id; public String name; public Student(String name) { super(); ...
基础 -- Java笔记3--.class文件的流程
Java笔记3–.class文件的流程
2016年1月20日
14:51
JAVA运行过程:
关于装载:
java文件经过编译会形成一个class文件,class程序代码只有在初次被使用时才会被装载。
首次使用class的时间点是静态初始化的进行时机,static对象或者程序区被装载时,是依据他们在程序代码中的次序。
1.找到main方法,故事由这个类开始展开
2.装载这个类的父类(如果父类仍有父类,则总是先装载父类,递归装载)
3.装载该类 1)static修饰的代码块,变量,方法依次执行
2)执行main方法中的代码
(成员变量的赋值是在对象的创建后完成的)
class生命周期:
1.装载:将.class文件加载进入jvm的运行时数据区的方法区中以二进制数据流的方式存储,同时在堆中创建java.lang.Class对象,这个对象封装了 ...
基础 -- Java笔记4--集合框架
Collection:最基本的集合接口;有一个帮助类叫做Collections用于表示任何对象或元素组,想要尽可能以常规方式处理一组元素师,就使用这一类,实际上使用很少;
List:继承了Collection接口以定义一个允许重复项的有序集合;该接口是连续的所以面向位子的操作对它来说很方便,也就是对第几个位子上的元素进行操作;
LinkedList:它是链表结构,它添加了一些处理列表两端的元素的方法;这个就是应为它的结构导致了它在插入元素方面有优势,而在遍历方便有缺陷;Java中这个类提供了对首尾元素的获取和修改和删除的方法;使用这些方法我们可以把它当做一个堆栈、队列或其他一些面向端点的数据结构;
ArrayList:封装了一个动态再分配的Object[]数组;它是线性结构决定它在对某个位置的元素的操作上有优势,但是在插入元素上有缺陷,因为你如果向第一个位置插入元素,那么后面的所有元素都要移动,明显是很浪费资源的;
Vector:类似于ArrayList只不过它是线程安全的;
Set:继承Collection接口,而且它不允许集合中存在重复项,它是依赖对象的equal方法来 ...
基础 -- Java笔记5--多线程
1.进程与线程:dos系统有一个非常明显的特点,一旦有一种病毒之后,系统就会立刻死机,因为dos系统是单进程的。
线程间共享资源,而每个进程都有自己独立的内存,且难以共享和切换。
线程是在进程基础上的进一步划分。而且线程是在进程上并发执行的。
如果有多个任务同时执行,则所有的系统资源是共享的,被所有的线程公用,但是程序的执行需要cpu,当我们只有一个CPU时,在一个时间点上就只会有一个程序运行。
2.java中多线程的实现的两种方法:
继承thread类:
thread类是java.lang包中的,而这个包是在程序运行时自动导入的,所以我们不需要手动的导入包。
继承了thread后这个类就有了开启多线程的能力,我们必须去复写run方法,将我们希望每个线程中执行的代码写到里面。
然后我们创建这个类的对象,用对象调用start方法就可以了,关于start方法:start方法中有相关的判断,如果我们把一个 ...
基础 -- Java笔记6--内嵌类
Java笔记6–内嵌类
2016年1月20日
14:58
6 java中的几种典型类:
6.1 java静态类:
特性:静态类不能实例化(静态类在运行时静态的加载到内存中,不需要初始化,没有实例,不能用this),类的成员都要是静态成员和静态方法。
静态方法不需要实例调用,类名.方法名(静态方法存在的意义就是为该程序中的其他类提供一些工具,为了方便使用)
静态变量是存在了常量池中。
静态代码块是在一个类第一次装载时运行,且只运行一次。
静态内部类:通常普通类是不允许用static修饰的,只有一个内部类才可以,静态内部类不需要实例化一个外部类,只要通过 外部类.内部类 引用就行了
6.2 java匿名类:
应用场景:当我们想要一个对象但却不值得为它而创建一个全新的对象(所需要的类过于简单,或者是我们只是要在一个方法内部使用)
...
基础 -- Java笔记7--IO流
Java笔记7–IO流
2016年1月20日
14:59
7 IO流
7.1 标准设备输入/输出
标准输出:System.out.println();
System是java的系统类,它包含了许多的静态方法和变量。
System的常用功能:
标准输入 输出和错误输出流、
对外部定义的属性和环境变量的访问、
加载文件和库、快速复制数组、
取得系统时间即System.currentTimeMillis();
系统推出命令:System.exit();
...
基础 -- Java笔记8--常见的实体类
Java笔记8–常见的实体类
2016年1月20日
15:01
8 常见的实体类
8.1 系统类 System
它的重要功能:
1.访问系统属性:系统属性是系统固有的属性,是在操作系统安装和软件安装后就已存在的属性。
两种方法获取系统属性,方法一:使用System.getProperties()函数取得一个Properties对象,该对象包含了所有的系统属性的键值对。
方法二:直接使用System.getProperties(key)来取得对应的属性。如果我们输入的键不存在,则返回一个null。
当我们查询的键不存在时我们可以直接通过System.getProperties(key,value);来给这个键赋值。我们也可以通过S ...
基础 -- Java笔记11--虚拟机
Java发展趋势
模块化:将一个庞大的系统分为若干个子模块;人们不愿意为了系统中一个小块的功能而下载安装一套庞大的系统;
混合语言:当单一的Java开发已经无法满足当前软件的复杂需求时,将系统划分出层次,每个应用层将使用不同的编程语言来完成,而且,接口对每一层的开发者都是透明的,各种语言间不存在交互上的困难;通过特定的语言区解决特定领域的问题是当前软件开发应对日趋复杂的项目需求的一个方向;
多核并行:计算机CPU的发展方向从高频率转变为多核心,为了适配计算机的性能编程语言也要进入多核时代;
进一步丰富的语法
64位的虚拟机:主流CPU支持64位架构了,Java虚拟机在很早以前就推出了64位系统的版本,但问题是现在64位的虚拟机将比32位的虚拟机多消耗内存且性能更低;Java正在试图通过压缩堆内对象的指针来改善这一情况;
解析jdk
自动内存管理机制
java内存区域与内存溢出异常
概述:java与c++的区别,java为编程者写好了内存管理和垃圾回收,使用者不用关注这方便的问题,但是当出现内存溢出时,同样也很难找出问题发生的地方;c++则是把这个东西全部交给了程序员,人们要去写自己的内 ...
网络工具 -- 带宽测试工具iperf3
简述官方一点说是用来测量一个网络最大带宽的工具。
个人常用于跑流量、测带宽,以检测一些路由限速规则是否生效,以及线路流量监控是否准确。
iperf支持TCP、UDP协议,默认使用TCP。
安装Ubuntu
安装非常简单apt-get install iperf3
查看版本iperf3 -v
使用服务端一台公网服务A作为服务端,IP为:139.159.96.26
开启服务:
1234iperf3 -s -i 10 -p 5201# -s 作为服务端运行# -i 每10s生成一次报告# -p 端口,默认5201
客户端基础命令1-b # 指定带宽
指定测试时间123456789101112131415161718192021222324iperf3 -c 139.159.96.26 -p 5201 -t 5 -P 1 -R# -c client# 139.159.96.26服务端IP# -p 服务端端口# -t 传输时间,默认10s# -P 发送连接数# -R 表示测试为下载Connecting to host 139.159.96.26, port 5201Reverse ...