折纸的不归路(3)
一,补充内容
一..sh
脚本文件编辑步骤
1.写脚本的行首 #!/bin/bash
2.输入你想批量执行的命令
3.修改文件的u的权限,变成可执行文件
4.执行 ./xx.sh
二.查看/杀死进程
查看进程:ps
杀死进程:kill -9 PID
二,Java
一.java和c的区别
Java:面向对象编程
C:面向过程编程
举个栗子:
西红柿炒鸡蛋
c关注如何做
Java关注谁去做→哪个对象调用了哪个方法
二.Java是什么为什么怎么做
1,是什么
java一种编程语言:语法规则,词法规则,句法规则,高级应用
开发环境:开发程序,不管是桌面应用还是服务器应用,均需要JDK的支持。
运行环境:面向应用程序,而不是开发系统程序或者硬件编程,比如说驱动就是系统程序,系统程序一般用c语言
部署环境:服务器应用程序需部署运行在服务器应用程序上,服务器本身也是一个Java程序,用Java语言编写的服务器应用程序部署运行时也需要Java语言的支持,将java代码打成一个包,部署到服务器这个过程叫做部署环境
java的一些版本包括:
Java SE:开发桌面应用程序,比如QQ
Java EE:开发企业级应用程序
Java ME:开发移动应用
2,为什么(为什么学java)
简单易学→面向对象思想一次编译,多端运行(可移植性)
1为什么发明了java?
1.1提供一个解释环境→JVM
a.加速开发: Java当初目的是开发适用于智能化电子消费设备上的软件,它是基于C++语言,但做了简化,能加速软件的开发过程
b.一次编译到处运行: 跨平台
c.多线程:多线程编程的简单性是Java成为流行的服务器端开发语言的主要原因之一
d.支持动态更新: 软件代码文件的替换即更新,类与类之间有调用,如果其中某一个改变不会影响其他程序。并且也不需要都编译打包。只需要做软件代码文件的替换操作。
1.2提供一个比较容易的方式编程
a.更健壮:没有指针、没有内存管理;在开发者层面上没有指针,但是在底层还是有指针。
C:malloc()手动分配内存,free()手动释放内存
C++:new手动分配内存,delete()手动释放内存
手动释放内存对内存回收比较好。但是也有释放错误(释放一个已经释放的内存,释放一个没有开辟的内存)
Java开发程序员不需要关心什么时候释放内存,由GC垃圾回收器来管理内存的回收。
b.纯粹的面向对象的编程:在Java中认为一切均是对象,对象有属性以及改变属性值的方法。通过Java编程围绕着构建对象的模板、实例化对象、调用对象的方法和属性等来进行。
Java源码:xxx.java
通过javac命令,能够把源码变成字节码文件xxx.class
通过java命令,来运行.class
文件
在windows上编译好的.class
文件在Linux系统上依旧可以运行
多线程→语言层面的多线程
动态更新→程序A调用了程序B,程序B的源代码发生了改变,程序B需要重新编译。
JVM的特性
Jvm简称java 虚拟机(java virtual machine),是用软件来模拟一个虚拟的环境。我们 用java编写的源程序经过编译以后生成字节码文件,Jvm 提供了一个解释运行 java字节码文件的环境,只要在不同操作系统上安装了jvm后,就能对同一个java程序进行解释运行,这就java的跨平台,一次编译,到处运行。
垃圾回收机制:GC
1.GC由JVM虚拟机通过一个系统级别的垃圾回收器线程自动完成,可以让我们免于内存管理的麻烦,不需要手动释放内存,解放了程序员的时间和精力
2.GC的特点:
A.优先级较低的后台线程
B.由虚拟机通过垃圾回收器线程自动完成
C.没有办法去控制该线程运行
(进程:是资源分配的最小单位。线程:是程序运行的最小单位)
3.GC什么时候会运行呢?
A.内存不足时
B.程序空闲时
4.GC回收什么样的内存(如何定义垃圾)?
无用对象所占据的内存空间,只有当对象不再被使用,它的内存才有可能被回收
5.GC垃圾回收的方法
Java.lang.system.gc()
Java.lang.runtime.gc()
这两个方法只提供建议功能
6.GC垃圾回收的算法:
标记法:清扫所有带标记的垃圾,不会整理内存,效率快。
迁移法:把非垃圾的内存搬到另一个区域,会整理内存,效率慢。
3,怎么做
一,Java使用前的准备
1.获得JDK,当前使用的是1.8可以去orclae官网进行下载
2.安装JDK
LInux:
在shell中运行
a)拷贝到家目录
b)sudo chmod 777 /opt
c)cp jdk_6u32_liunx_i586.bin /opt
d)cd /opt
e)sudo ./jdk_6u32_liunx_i586.bin
如果是.tar.gz
文件:
a)将tar.gz拷贝到家目录并解压
b)sudo chmod 777 /opt
c)sudo mv jdk1.7.0_04 /opt
Windows:像安装软件一样,双击JDK无限下一步
3.配置环境变量
LInux:
配置文件:
系统配置文件/etc/profile
用户配置文件~/.bashrc
在.bashrc中配置环境变量,打开该文件,追加内容
vi ~/.bashrc
//添加以下内容
CLASSPATH=.
JAVA_HOME=/opt/jdk1.6.0_32
PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH JAVA_HOME PATH
CLASSPATH
指定类加载的路径JAVA_HOME
指定JDK的安装目录
配置完成之后:记得:source配置文件
Windows:
右键我的电脑(计算机)→左侧高级系统设置→环境变量→上层是用户变量,下层是系统变量→需要手动添加JAVA_HOME
【和CLASSPATH
】→在Path
中添加%JAVA_HOME%/bin
→三个确定全部点完→重启cmd进行验证
4.如何验证
Java -version
Java
Javac
三个命令不报错即完成环境变量设置
二,JDK:Java Development Kit
Sun公司在推出Java语言的同时,也推出了Java的一系列开发工具, 如JD—— Java Development Kit(Java开发工具包)。可以从网上免费下载。通常以JDK的版本来定义Java的版本。
JDK包含的内容
JVM:java虚拟机:负责解析和执行Java程序,Java虚拟机可运行在各种平台上
JRE:Java Runtime Environment
Java类库
Java的运行命令:
Java:执行java类
Javac:编译Java类
Javadoc:生成Java的api
Jar…:打包…
三,如何开始第一个java程序
1.我们手动编写的只有.Java文件
2.需要创建一个文件,名字叫做Hello.java
3.使用vi打开Hello.java开始编写
4.Java文件的头行有三部分内容
(1)Package(可选的)
定义包名
java.lang.Date;
Javax.Swing.JButton
包名有什么作用
1.给.java文件和.class文件进行文件夹分层,让代码保存的位置有一个良好的树形结构
2.可以区分同名的文件
Java.util.Date
Java.sql.Date
3.包名+类名的这种写法:全限类名
4.包名有自己的取名规则
一般是组织或域名的反写
www.baidu.com→com.baidu.util
www.briup.com→com.briup.day01
(2)Import(可选的)
导包
Java中默认导入java.lang
如果要使用lang包之外的代码,需要导入
Import可以导入那些包?
A.jdk提供的类库
B.自己写的java代码所在的包
C.借用导入的第三方jar包
(3)Public class(必须有的)
每个java文件有且只有一个,且后面跟的单词必须和文件名字保持一致,区分大小写
Main方法(现在看来是必须的):
Java程序的入口方法,如果你的java程序想要运行,必须有主方法
Main方法有自己的写法规则,必须固定格式,一般不修改
5.语句及分析
1.public static void main(String[] args)
Public:定义的是方法的权限 公共的
Ststic:定义的是静态的方法
Void:方法的返回值类型 无返回值用void
Main:方法名称
()要放参数的列表,参数列表的形式数据类型+形式参数
多个之间用,隔开
String[] args:main方法的参数是一个字符串类型的数组,形式参数的名字叫做args
{}:代码块,代表实际执行的部分,也叫做方法体,里面的代码从头到尾执行完毕,程序运行结束
2.System.out.println()
System:类
.out:内部类
.println:静态方法
(“Hello ,World!”);:小括号内是参数字符串类型的参数,引号里的内容会被打印到终端,每一行必须用;结尾。
四,编写一个Hello ,World!
vi Hello.java //新建一个Hello.java文件,并用vi 编辑器打开
cat Hello.java //浏览编辑好的Hello.java的文本内容
package com.briup.day01;
import java.lang;
public class Hello{
public static void main(String[] args){
System.out.println("Hello ,World!");
}
}
javac -d . Hello.java //编译Hello.java
java -cp . com.briup.day01.Hello //运行Hello.class
Hello ,World!
//或者
java com.briup.day01.Hello //运行Hello.class,
Hello ,World!
三,心得
今天开始正式的学习java相关的内容了,在接受上感觉还好,刚开始并没有太难,在编写语句时对package 的相关内容产生了一些疑惑,没有太弄懂这个东西,不过后来经过查找资料以及跟同学讨论,才明白了pakcage是保存编译生成的.class
文件,同时也明白了java语句在运行程序的时候是找编译生成的.class文件而不是创建的.java文件。整体来说,今天收获还挺多的,明天加油!