MySQL学习笔记
这篇文章是记录我学习 MySQL 时的一些笔记,不成体系,仅为以后快速学习准备,由于记录的是从零学习 MySQL 的笔记,所以笔记的内容是十分的基础的,基本上是以用为主,不牵涉到具体的原理性问题。
MySQL基本概念我们使用Java编写程序,一般数据都是存储在内存中的,一旦程序终止或断电,那么数据就会丢失,所以我们需要将数据存储到本地文件中,我们一般存储到数据库中,而 MySQL 正是这么一款数据库。
安装 MySQL 很简单,直接使用搜索引擎搜索 MySQL,进入官网进行安装,MySQL 是开源的软件。目前企业使用的是5.5-5.7的版本,选择进行下载即可。若要卸载 MySQL,在手动卸载 MySQL 后,还要删除 C:\ProgramData\MySQL 这个文件夹,否则重新安装时不能成功。
连接MySQL在命令行中输入
mysql -uroot -p
然后会提示你输入密码
输入的密码以密文的形式显示,以保证安全。当然你也可以直接在 -p 后面输入密码,不过这样并不安全。
SQL语句分类SQL 语句按功能分为
DDL:操作数据库,表
DML:增、删、改数据
DQL:查询数据 ...
Java Web笔记
TomcatWeb服务器软件
服务器:安装了服务器软件的计算机
服务器软件:接收用户请求,处理请求,做出响应
Web服务器软件:用户通过浏览器进行访问我们部署的项目
webLogic:oracle公司,大型JavaEE服务器,收费,支持所有的JavaEE规范
webSphere:IBM公司,大型JavaEE服务器,收费,支持所有的JavaEE规范
JBOSS:JBOSS公司,大型JavaEE服务器,收费,支持所有的JavaEE规范
Tomcat:Apache基金组织,中小型JavaEE服务器,仅仅支持少量的JavaEE规范,开源的,免费的
下载、安装、卸载下载:tomcat.apache.org(Tomcat 8)
安装:解压压缩包即可(路径不要含中文)
卸载:删除文件夹
bin 可执行文件conf 配置文件lib 依赖jar包logs 日志文件temp 临时文件webapps 存放web项目的work 运行时数据LICENSEN ...
JDBC
初识JDBC如果我们要使用Java来操作数据库,由于数据库的种类繁多,并且sql语句并不完全相同,总而言之不同的数据库千差万别,这是不是意味着我们要对不同的数据库写不同的程序,这样的话对程序员的要求有点高,并且学习的成本也很大,所以我们要定义一套规范,要求对所有的数据库程序员只要写相同的程序就可以了。就相当于插座,我们定义好插座的标准,那么所有的商家必须按我的标准来,否则就不能使用插座。同理,在Java中定义好数据库的接口,定义接口中的方法有什么作用,而具体的实现细节则有数据库的厂商进行编写,程序员只要调用接口里面的方法就可以了。这里给出一个摘至维基百科的定义
Java Database Connectivity (JDBC) is an application programming interface (API) for the programming language Java, which defines how a client may access a database. It is a Java-based data access technology used for ...
Java注解
我们在之前就有接触过注解,比如@Override,它可以帮我们检查是否重写了方法,如果没有,它在编译阶段就会报错。注解一般有下面三个功能
编译检查
比如@Override
代码分析
读取注解的属性,然后使用反射技术进行分析
编写文档
比如javadoc
系统自定的注解下面介绍三个系统自定义的注解
@Override
检查方法是否是重写父类的方法
@Deprecated
将该注解标记的内容显示为已过时
@SuppressWarnings(“all”)
压制所有的警告
如果有一个方法被@Deprecated修饰了,如
@Deprecatedpublic static void show() { System.out.println("show ...");}
那么在调用时会这样
代表这个方法已经过时了,但是你想调用还是可以调用的。
在我们写代码时,经常会弹出一些警告,如
我们可以使用@SuppressWarnings(“all”)表示压制所有的警告
这时类里面所有的警告都压制了。
自定义 ...
Java异常
所谓的异常就是不正常,我们在之前很多地方有碰到异常,比如对象向下转型时有碰到ClassCastException。所有的异常都继承自Exception类。Exception下面有一个重要的的子类叫做RuntimeException。
异常分为编译期异常和运行时异常,如Exception就是编译期异常,而RuntimeException是运行时异常,如果在方法中抛出了一个编译期异常,那么必须处理该异常,继续向上抛出或者就地处理,而对于运行异常可以选择不处理,那么就会默认交给JVM处理。
处理异常的过程首先JVM检测到了异常,这时JVM会创建一个异常对象,该对象包含发生错误的内容、原因和位置。如果在发生异常处的方法内没有异常处理逻辑,那么JVM会把该异常抛给这个方法的调用者,如果该调用者也没有异常处理逻辑,那么就会一直向上抛出,直到遇到main方法,如果main方法也没有异常处理逻辑,那么这时异常就会抛给JVM,JVM会打印红色字体至控制台,并且终止Java程序的运行。
与异常有关的关键字有五个,分别为throw, throws, try, catch, finally。下面介绍这五个关键 ...
Java文件操作
FileFile类代表的是文件或者文件夹(目录),将目录和文件抽象为一个类。File提供了很多方法用来操作文件夹或者文件。下面具体介绍该类。
静态成员变量File类有四个成员变量
pathSeparator
pathSeparatorChar
这两个保存的路径分隔符
Windows下为;,Linux下为:
separator
separatorChar
这两个保存的是文件名称分隔符
Windows下为\反斜杠,Linux下为/正斜杠
下面看这个例子
import java.io.File;public class TestFile { public static void main(String[] args) { System.out.println(File.pathSeparator); System.out.println(File.pathSeparatorChar); System.out.println(File.separator); System.out.println(Fi ...
Java网络编程
网络编程主要是客户端与服务器之间的交互,与客户端有关的类是Socket,与服务器有关的类是ServerSocket。客户端与服务器之间的通信主要是通过字节流实现的,客户端Socket含有方法
getInputStream()
getOutputStream()
来获得流,而服务器通过accept()监听请求的客户端,该方法返回一个Socket类对象,这个对象就是访问的客户端,服务器通过这个Socket获得流,通过该流与客户端通信。
构造方法客户端Socket类的构造方法为
Socket(String host, int port)
第一个参数为域名地址或者IP地址
第二个参数为端口号
服务器端ServerSocket的构造方法为
ServerSocket(int port)
这个参数为端口号
客户端与服务器之间的简单通信下面写一个简单的示例来进行客户端与服务器的通信。
客户端代码
import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java. ...
Java反射
反射是框架设计的灵魂,通过反射我们可以在程序运行时读取配置文件动态的创建一个类,也可以通过读取注解来达到我们想到的功能。与反射有关的类是Class类。
Class类对象的获取方法Class类对象的获取方法有三种
Class.forName(String name)
参数是类的全类名(包名+类名),可以获得该类的Class对象
类名.class
通过类的静态属性class可以获取Class对象
对象.getClass()
通过对象的getClass()方法可以获取Class对象
假设一个Animal类
public class Animal { public Animal(String name, int age) { this.name = name; this.age = age; } public Animal() { } public String name; private int age; public void eat() { ...
Java8新特性
本篇文章会介绍Java 8中的一些新特性(不包括Lambda表达式,因为在Java多线程这篇文章中介绍过了)。主要内容是Java 8中新增的函数式接口以及Stream流,还有方法引用。
常用函数式接口函数式接口指的就是接口里面只含有一个抽象方法。这样我们就可以使用Lambda表达式编程,这是一种函数式编程的思想,强调的是怎么做。Java 8提供了很多的函数式接口,这里我们介绍常见的函数式接口。
Supplier\<T>
Consumer\<T>
Predicate\<T>
Functional\<T,R>
Supplier<T>该接口里面有一个T get()方法,按照字面意思,是提供者的意思,表示生产出一个与泛型类型T相同的数据。下面我们来讲一个例子说明此接口的使用。假设有一个方法,需要返回一个字符串,该字符串由Supplier接口的get()方法产生,而产生什么样的字符串,则由程序员在调用该方法是传入Lambda决定。如下方法传入一个Supplier接口得到一个字符串
public static String getSt ...
Java多线程
多线程概述一个软件可以同时干多件事情,就是多线程,目前我们编写的程序都是单线程的,在main方法中从上到下的进行,执行完上面的程序才能执行后面的程序。下面就将讲解如何写多线程程序。
在Java中创建多线程有两种放法,一种是继承Thread类,然后重写它的run()方法。第二种是实现Runnable接口,并且实现run()方法。
继承Thread类继承Thread类实现多线程的步骤为
继承Thread类,重写run()方法
创建类对象,调用继承的start()方法
我们写一个MyThread类继承自Thread类,并重写run方法如下
public class MyThread extends Thread { @Override public void run() { for (int i = 0; i < 20; i++) { System.out.println("thread" + i); } }}
新建一个测试类,在其m ...