Java基础学习
从头开始学Java,其中大部分知识记录来自于尚学堂高琪老师的300讲,用作学习笔记
dxt_snow
每天进步一点点
展开
-
12.1 JDBC编程
12.1 JDBC编程JDBC简介访问数据库流程JDBC下载环境编程开发建立数据库连接JDBC简介JDBC:Java Database Connectivity,Java数据库连接JDBC为开发者使用数据库提供了统一的编程接口,它由一组java类和接口组成,是java程序与数据库系统通信的标准API。JDBC API使得开发人员可以使用纯java的方式来连接数据库,并执行操作。不同厂商的数据库程序代码不同,无法使用一套代码来使用所有数据库,所以sun公司提出了一套API,凡是数据库想与java进行原创 2020-08-20 18:38:36 · 133 阅读 · 0 评论 -
11.1 正则表达式
11.1 正则表达式简介语法普通字符简单的转义字符标准字符集合自定义字符集合量词字符边界选择符和分组使用流程java编程中的应用简介概念正则表达式(Regular Expression)是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。功能(1)测试字符串内的模式。例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。(2)替换文本。可以使用正原创 2020-08-10 11:46:05 · 215 阅读 · 0 评论 -
10.1 java注解
10.1 java注解Annotation内置注解元注解Annotation注解(Annotation)是从JDK5.0开始引入的新技术。注解不是程序本身,可以对程序作出解释;注解可以在编译,类加载,运行时被读取,并执行相应的处理,以便于其他工具补充信息或者进行部署。注解可以对package(包),class(类),method(方法),field(属性)等使用,相当于给它们添加了额外的辅助信息。内置注解限定父类重写方法:@Override当子类重写父类方法时,子类可以加上这个注解,确保原创 2020-07-28 23:30:24 · 164 阅读 · 0 评论 -
9.5 基于HTTP协议的web服务器响应程序
9.5 基于HTTP协议的服务器响应程序原创 2020-07-07 19:50:49 · 459 阅读 · 0 评论 -
9.4 HTTP协议整理
9.4 HTTP协议整理HTTP简介HTTP工作原理HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP是一个简单的请求-响应协议,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。HTTP是应用层协议。HTTP是否是面向连接的?面向连接和无连接指的都是协议。也就是说,这些术语指的并不是物理介质本身,而是用来说明如何在物理介质上传输数据。面向连接和无连接协议可以、而且通常也确实会共享一条物理介质。它们的本质区别在于原创 2020-07-04 11:36:42 · 237 阅读 · 0 评论 -
9.3 webxml解析及反射应用
9.3 webxml解析SAX方式获取webxml内容反射处理webxml数据SAX方式获取webxml内容数据<?xml version="1.0" encoding="UTF-8"?><web-app> <servlet> <servlet-name>login</servlet-name> <servlet-class>com.dxt.LoginServlet</servlet-class> <原创 2020-07-02 17:21:17 · 159 阅读 · 0 评论 -
9.2 Sax方式对xml数据进行解析
9.2 xml数据解析介绍解析流程数据处理介绍xml: 可扩展标记语言,作为数据的一种存储格式或用于存储软件的参数,程序解析此配置文件,就可以达到不修改代码就能更改程序的目的。xml数据示例在这里插入代码片解析方式解析流程数据处理...原创 2020-06-30 18:08:19 · 139 阅读 · 0 评论 -
9.1 java反射
9.1 java反射概念作用使用方法概念 Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。(百度百科) 反射把java类中的各种结构(方法、属性、构造器原创 2020-06-29 22:56:27 · 356 阅读 · 0 评论 -
7.21 线程使用方式
7.21 线程使用方式正常使用静态内部类使用线程局部内部类使用线程匿名内部类使用线程lambda表达式使用线程(jdk8)正常使用 写一个类来实现Runnable接口,通过创建对象来使用线程。代码:/** * 测试线程的使用方式 * 正常使用,实现Runnable接口,通过创建对象来使用线程 * @author dxt * */public class Thread01 implements Runnable{ /*原创 2020-06-25 22:16:10 · 98 阅读 · 0 评论 -
8.14 Java聊天室
8.14 聊天室基本逻辑单人自言自语版多人自言自语版基本逻辑 单人自言自语版特点 一个客户端可连接到服务器端,客户端可以发送信息给服务器端,也可以接受服务器端发送的信息。但只能发送一条信息,接收一条信息,即发送与接受不独立。 服务器端只能接收一个客户端的接入,然后将该客户端发送的信息在转发原创 2020-06-25 15:05:12 · 197 阅读 · 0 评论 -
8.13 TCP通信:多用户登录
TCP通信:多用户登录分析代码分析 实现一个服务器端响应多个客户端的连接请求。代码服务器端import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.Server...原创 2020-04-03 23:37:02 · 316 阅读 · 0 评论 -
8.12 TCP通信:文件传输
TCP通信:文件传输客户端向服务器端发送数据客户端向服务器端发送文件客户端向服务器端发送数据code服务器端import java.io.DataInputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;/** * 熟悉TCP通信流程 * 服务器端 *...原创 2020-04-03 14:31:48 · 194 阅读 · 0 评论 -
8.11 TCP编程基本方法
TCP编程基本方法分析TCP通信原理分析UDP使用数据包进行数据传输,TCP使用IO流实现数据的传输。网络爬虫使用的是Http协议,但Http协议底层是TCP协议。TCP协议基于请求-响应模式。通话双方分为服务器和客户端。TCP通信原理...原创 2020-04-02 18:01:49 · 189 阅读 · 0 评论 -
8.10 UDP实现双机通信
UDP实现双机通信版本1简介代码版本1简介 发送端可多次向接受端发送数据,接收端可多次接收数据,但发送端不可接收数据,接收端不可发送数据。 无实用价值,但存在一个问题:使用了字节缓冲流BufferedReader(InputStreamReader(S...原创 2020-03-31 09:40:23 · 577 阅读 · 0 评论 -
8.9 UDP编程:基本类型数据传输与对象数据传输
UDP编程:基本类型数据传输与对象数据传输基本类型数据传输对象数据传输基本类型数据传输code接收端import java.io.BufferedInputStream;import java.io.ByteArrayInputStream;import java.io.DataInputStream;import java.io.IOException;import java.n...原创 2020-03-30 16:42:25 · 427 阅读 · 0 评论 -
8.8 网络编程:UDP编程基本方法
网络编程:UDP编程基本方法分析JDK中封装好的工具类分析使用基于UDP协议的Socket网络编程不需要利用IO流实现数据的传输,也就是数据在网络中传输时不需要使用IO流。IO流可以用来在网络上读写数据,比如使用URL扒取网页数据。每个数据发送单元被统一封装成数据报包(简称数据包)的方式,发送方将数据包发送到网络中,数据包在网络中去寻找它的目的地。即数据在网络中以数据包的形式传输,数据包...原创 2020-03-29 21:13:03 · 186 阅读 · 0 评论 -
8.7 Socket套接字
Socket套接字我们开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层如何使用传输层的服务呢?在应用层和传输层之间,则是使用套接字来进行分离。套接字就像是传输层为应用层开的一个小口,应用程序通过这个小口向远程发送数据,或者接收远程发来的数据;而这个小口以内,也就是数据进入这个口之后,或者数据从这个口出来之前,是不知道也不需要知道的,也不会关心它如何传输,这属于网络其它层次...原创 2020-03-29 20:56:21 · 148 阅读 · 0 评论 -
8.6 网络编程:传输协议
网络编程:传输协议TCP传输协议概念特点协议基本内容UDP传输协议概念特点协议基本内容TCP传输协议概念 TCP(transfer control protocl),是一种面向连接的、可靠的、基于字节流的运输层通信协议。特点面向连接点到点的通信高可靠性占用系统资源多、效率低协议基本内容UDP传输协议概念...原创 2020-03-27 12:35:33 · 195 阅读 · 0 评论 -
8.5 网络爬虫
网络编程:爬虫原理网络获取数据获取数据的两种方式网络获取数据获取网络数据的URL通过URL对数据进行下载分析数据,使数据规格化(正则表达式)对数据进行抽取、清洗、存储。获取数据的两种方式code1:import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader...原创 2020-03-26 22:25:58 · 92 阅读 · 0 评论 -
8.4 网络编程:URL
网络编程:URLURLURLURI:Uniform Resource Identifier 统一资源标识符,用来标识抽象或物理资源的一个紧凑字符串。包括两种形式:URL和URNURL:Uniform Resource Locator 统一资源定位符,一种定位资源的主要访问机制的字符串,一个标准的URL必须包括:protocol、host、port、path、parameter、anchor...原创 2020-03-26 11:16:57 · 123 阅读 · 0 评论 -
8.3 网络编程:端口
网络编程:端口端口端口与IP的关系控制台命令查看端口状态端口IP地址用来标志一台计算机,但是一台计算机上可能提供多种应用程序,使用端口来区分这些应用程序。端口是虚拟的概念,并不是说在主机上真的有若干个端口。通过端口,可以在一个主机上运行多个网络应用 程序。端口范围0—65535,16位整数Oracle、MySQL、QQ、迅雷等应用程序都有自己的端口。分类:公任端口,0-1023,比如...原创 2020-03-26 09:55:58 · 184 阅读 · 0 评论 -
8.2 网络编程:IP
网络编程:IPIP地址IP地址定义:用来标识网络中的一个通信实体的地址。通信实体可以是计算机、路由器等。比如互联网的每个服务器都要有自己的IP地址,而每个局域网的计算机要通信也要配置IP地址。路由器是连接两个或多个网络的网络设备。分类(1)IPV4:32位地址,以点分十进制表示,如192.168.0.1。(2)IPV6:128位地址(16字节)写成8个16位的无符号整数,每个整数用四个...原创 2020-03-25 18:38:24 · 139 阅读 · 0 评论 -
8.1 网络编程:基本概念
网络编程:基本概念计算机网络网络分层计算机网络定义:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。分析(1)功能:资源共享、信息传递(2)组成:硬件有计算机、外部设备和通信线路,软件有网络操作系统,网络管理软件及网络通信协议。分类:按照规模分类有局...原创 2020-03-25 17:55:02 · 113 阅读 · 0 评论 -
7.20 线程组和线程池
线程组和线程池线程组介绍作用线程池介绍优势线程组介绍• 线程组表示一个线程的集合。• 线程组也可以包含其他线程组。线程组构成一棵树。在树中,除了初始线程组外,每个线程 组都有一个父线程组。• 顶级线程组名system,线程的默认线程组名称是main• 在创建之初,线程被限制到一个组里,而且不能改变到一个不同的组作用• 统一管理:便于对一组线程进行批量管理线程或线程组对象• 安全隔...原创 2020-03-24 23:22:37 · 106 阅读 · 0 评论 -
7.19 线程:CAS
线程:CAS简介锁的分类Compare and Swap(比较并交换)简介锁的分类悲观锁:synchronized是独占锁即悲观锁,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。乐观锁:每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,知道成功为止。Compare and Swap(比较并交换)...原创 2020-03-24 22:51:30 · 101 阅读 · 0 评论 -
7.18 线程:可重入锁
线程:可重入锁简介测试简介 锁作为并发共享数据保证一致性的工具,大多数内置锁都是可重入的,也就是说,如果某个线程试图获取一个已经由它自己持有的锁时,那么这个请求会立刻成功,并且会将这个锁的计数值加1,而当线程退出同步代码时,计数器将会递减,当计数值等于0时,锁释放。如果没有可重入锁的支持,在第二次企图获得锁时将会进入死锁状态...原创 2020-03-24 14:40:36 · 114 阅读 · 0 评论 -
7.17 线程:ThreadLocal
线程:ThreadLocal简介测试简介在多线程环境下,每个线程都有自己的数据。一个线程使用自己的局部变量比使用全局变量好,因为局部变量只有线程自己能看见,不会影响其他线程。ThreadLocal能够放一个线程级别的变量,其本身能够被多个线程共享使用,并且又能够达到线程安全的目的。说白了,ThreadLocal就是想在多线程环境下去保证成员变量的安全,常用的方法,就是get/set/ini...原创 2020-03-24 10:14:18 · 93 阅读 · 0 评论 -
7.16 线程:单例模式
线程:单例模式介绍实现介绍 单例模式是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一...原创 2020-03-22 22:36:16 · 111 阅读 · 0 评论 -
7.15 线程:volatile
线程:volatile介绍实例测试介绍 volatile保证线程间变量的可见性,简单地说就是当线程A对变量X进行了修改后,在线程A后面执行的其它线程能看到变量X的变动,更详细的说是要符合以下两个规则:线程对变量进行修改之后,要立刻写回到主存线程对变量读取的时候,要从主内存读,而不是缓存。 &nb...原创 2020-03-22 22:14:51 · 66 阅读 · 0 评论 -
7.15 线程:简单任务调度
线程:任务定时调度介绍简单任务调度使用类测试代码介绍可以指定时间点,在指定时间点执行某一段固定的代码。简单任务调度使用类 通过Timer和TimeTask,我们可以实现定时启动某个线程。java.util.Timer:类似闹钟的功能,本身就是一个线程;java.util.TimerTask:一个抽象类,该类实现了R...原创 2020-03-22 21:46:53 · 126 阅读 · 0 评论 -
7.14 线程通信:生产者消费者问题
线程通信:生产者消费者问题应用场景分析解决问题所需方法解决方法1:管程法原理解决方法2:信号灯法应用场景• 假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费• 如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止• 如果仓库中放有产品,则消费者可以将产品取走消费,否则停止消费并等待,直到仓库中再次放入产品为止...原创 2020-03-22 10:17:45 · 176 阅读 · 0 评论 -
7.13 线程死锁
线程死锁简介简介当两个线程相互等待对方释放“锁”时就会发生死锁出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续过多的同步可能会造成死锁。...原创 2020-03-19 22:13:05 · 72 阅读 · 0 评论 -
7.12 线程同步实例
线程同步实例模拟电影院购票模拟电影院购票import java.util.ArrayList;import java.util.List;/** * 使用多线程模拟实现影院选位子 * @author dxt * */public class Cinema { public static void main(String[] args){ //影院位子 List<...原创 2020-03-19 20:20:18 · 163 阅读 · 0 评论 -
7.11 线程同步
线程同步线程同步synchronized同步方法线程同步当多个线程访问同一个数据时,容易出现线程安全问题。需要让线程同步,保证数 据安全。为了保证数据在方法中被访问时的正确性,在访问时加入了锁机制。当一个线程获得对象的排它锁,其它线程必须等待,使用后释放锁即可。假如锁机制后会产生新问题:一个线程锁会导致其它所有需要此锁的线程挂起;在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延...原创 2020-03-19 11:19:41 · 121 阅读 · 0 评论 -
7.10 线程安全问题
多线程安全问题简介安全问题示例简介产生安全问题的条件存在共享数据 (也称临界资源)存在多条线程共同操作共享数据安全问题原因分析首先要知道线程如何访问临界资源的:一个线程建立,具有了线程自己的内存空间,当需要访问临界资源时(对临界资源进行读取,计算、重新赋值等操作),会先从临界资源中取得一个所需数据的备份到自己的内存空间中,然后在线程操作中对备份数据进行读取,计算、重新赋值...原创 2020-03-19 10:08:31 · 90 阅读 · 0 评论 -
7.9 线程中的常用方法
线程中的常用方法介绍测试介绍isAlive() :判断线程是否还未终止setName() :给线程起一个名字getName() :获取线程的名字currentThread() :获取当前正在运行的线程对象,即获取自己本身。测试code:/** * 测试线程中的常用方法 * @author dxt * */public class InfoTest { public...原创 2020-03-18 21:49:06 · 84 阅读 · 0 评论 -
7.8 守护线程
守护线程介绍测试代码介绍线程分为用户线程和守护线程虚拟机必须确保用户线程执行完毕虚拟机不用等待守护线程执行完毕守护线程作用:后台记录操作日志、监控内存使用等测试代码/** * 测试守护线程 * 守护线程为用户线程服务;jvm不用等待守护线程结束 * 默认线程都是用户线程 * @author dxt * */public class DaemonTest { pub...原创 2020-03-18 14:43:51 · 68 阅读 · 0 评论 -
7.7 线程优先级
线程优先级priority测试代码priorityJava提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程。线程调度器 按照线程的优先级决定应调度哪个线程来执行。线程的优先级用数字表示,范围从1到10。例如:Thread.MIN_PRIORITY = 1 、 Thread.MAX_PRIORITY = 10 、 Thread.NORM_PRIORITY = 5 。使用下述方法获...原创 2020-03-18 12:11:12 · 221 阅读 · 0 评论 -
7.6 在程序中观察线程状态
在程序中观察线程状态程序中的线程状态代码测试程序中的线程状态创建线程对象,处于NEW状态就绪和运行状态,都显示为RUNNABLE状态阻塞状态,显示为TIMED_WAITING状态结束状态是Terminated获取线程个数:Thread.activeCount();代码测试import java.lang.Thread.State;/** * 观察线程状态 * * @...原创 2020-03-18 11:12:24 · 99 阅读 · 0 评论 -
7.5 线程终止、暂停、礼让、插队
线程终止、暂停、礼让、插队线程终止线程终止code:/** * 终止线程 * 1. 线程执行完毕-->次数 * 2. 外部干涉--->加入标识 * 不要使用stop() 或 destory()来终止线程 * @author dxt * */public class TerminateThread implements Runnable{ //加入标识 priv...原创 2020-03-17 17:42:50 · 212 阅读 · 1 评论