
Java
文章平均质量分 76
撷思、
这个作者很懒,什么都没留下…
展开
-
冒泡排序与快速排序
一、冒泡排序1、思路:2、具体代码实现://冒泡排序public static void bubbleSort(int[] array) { //bound作为划分界限 for(int bound = 0;bound<array.length;bound++) { for(int cur = array.length-1; cur > bound; cur--...原创 2020-12-21 14:10:02 · 163 阅读 · 2 评论 -
Socket实现简单的TCP网络程序
一、认识Socket套接字Socket=(IP地址:端口号)。 应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。 socket是“open—write/read—close”模式的一种实现。二、TCP网络程序实现步骤:(1)客户端:1.连接服务器Socket;2.发送消息。(2)服务端:1.建立服务端口ServerSocket;2.等待用户连接accept;3.接收消息。TcpServerpackage tcp;import java.io.ByteArra原创 2020-06-01 13:11:19 · 280 阅读 · 0 评论 -
解决Jenkins与Tomcat端口冲突问题
装完Jenkins的我,在第二天发现我的Tomcat出问题了,浏览器中输入127.0.0.1:8080意外发现居然变成了Jenkins的图标,并且使用Tomcat部署项目后,启动时一堆报错,说是8080端口已被占用。无奈之下,选择了先卸载Jenkins,但是发现一个问题,删除了安装路径中的Jenkins,但是127.0.0.1:8080进行测试,依然还是Jenkins的图标,细细一想,可能是并没有卸载干净,之后找到原因,在C盘中其实还存在着一个 .Jenkins 文件夹,这个要一并删除。可是删除不是原创 2020-05-10 10:52:57 · 2074 阅读 · 0 评论 -
Java类加载过程与双亲委派机制
一、JVM体系Java程序运行在虚拟机上,编译器对.java文件进行javac编译成为.class文件,之后.class文件在JVM进行类加载与执行。由上图所示,JVM一共有三个子系统,类加载子系统、运行时数据区、执行引擎。但是本篇主要分析类加载子系统。2. 类加载的定义与过程3.类加载器的分类4. 双亲委派机制5.沙箱机制...原创 2020-04-23 21:09:22 · 271 阅读 · 0 评论 -
工厂模式
一、工厂模式1. 作用:实现了创建者和调用者的分离2. 分类:简单工厂模式、工厂方法模式、抽象工厂模式3. 满足的原则:开闭原则:一个软件的实体应当对扩展开放,对修改关闭。 依赖倒转原则:针对接口编程,不要针对实现编程。 迪米特原则:只与朋友通信,避免与陌生人通信。4. 核心本质:实例化对象不使用new,而是用工厂方法代替。 将选择实现类,创建对象统一管理和控制,从而将...原创 2020-04-17 21:46:55 · 235 阅读 · 0 评论 -
单例模式
1. 核心作用保证一个类只有一个实例,并且提供一个访问该实例的全局访问点2. 常见场景Windows的任务管理器、垃圾回收站 数据库连接池的设计 Servlet编程中,每个Servlet都是单例的 ……3. 饿汉式一开始就把所有的对象都加载,存在浪费空间资源的情况。//饿汉式public class Single{ private Single(){ ...原创 2020-04-15 15:03:24 · 180 阅读 · 0 评论 -
Servlet生命周期
一、Servlet简介 小服务程序或服务连接器,是用Java编写的服务器端程序。 它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。 工作流程:客户端发送请求至服务器;服务器启动并调用 Servlet,Servlet 根据客户端请求生成响应内容并将其传给服务器;服务器将响应返回客户端。相当于用来扩展服务器性能的...原创 2020-04-10 18:59:44 · 132 阅读 · 0 评论 -
通过简单爬取京东商城介绍Jsoup的使用方法
一、JsoupJsoup是一款java版的HTML解析器,可直接解析某个URL地址、HTML文本内容。 解析网页后返回的是一个Document 对象实例,我们可以看到document中有很多类似js的方法 根据相应的标签找到对象的属性,最后输出我们需要的东西即可。 二、爬取京东商城页面1. 创建项目,导入依赖首先创建一个Maven项目,在pom.xml中加入Jsoup的...原创 2020-04-07 15:56:06 · 994 阅读 · 4 评论 -
Synchronized锁及其底层原理
主要说明synchronized锁的过程,应用场景,monitor机制以及synchronized锁的类型原创 2020-04-02 19:27:04 · 319 阅读 · 0 评论 -
Java异常机制
一、异常体系结构1. 异常定义指程序运行中出现的各种状况,比如:文件找不到、网络连接失败等,发生在程序运行期间,影响了正常的程序执行流程。2. 异常类型检查性异常 Exception:用户错误或问题引起的异常,这是程序员无法预见的。例如文件不存在,这在编译时不能被忽略。 运行时异常 RuntimeException:可能被程序员避免的异常,可以在编译时被忽略。 错误 Error:...原创 2020-03-31 11:50:07 · 164 阅读 · 0 评论 -
Java内部类
目录 一、成员内部类 二、静态内部类 三、局部内部类 四、匿名内部类内部类就是在一个类的内部再定义一个类,比如A类中定义了一个B类,那么B就是A的内部类,A则是B的外部类。一、成员内部类内部类的访问通过对应的外部类来实例化内部类 成员内部类可以获得外部类的私有属性public class Outer { ...原创 2020-03-31 00:46:06 · 107 阅读 · 0 评论 -
Java方法
一、方法概述1. Java方法是语句的集合,他们在一起执行一个功能方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在类中被创建,在其他对象被引用2.设计方法的原则方法的本意是功能块,是实现某个功能的语句块的集合,所以最好保持方法的原子性,即一个方法只完成一个功能。二、方法定义方法包括方法头和方法体:修饰符:定义了该方法的访问类型; 返回值类型:方法可能会...原创 2020-03-29 19:28:05 · 213 阅读 · 0 评论 -
Synchronized解决线程不安全
目录一、线程不安全的三个示例二、synchronized关键字三、解决线程不安全四、总结一、线程不安全的三个示例1、买票问题:该情况下很容易出现同一张票被重复购买,是线程不安全的。package syn;public class UnsafeBuyTicket { public static void main(String[] args) { ...原创 2020-03-29 17:04:35 · 259 阅读 · 0 评论 -
多线程生产者消费者模型
一、线程通信Java提供的以下几种方法解决线程通信问题,他们都是Object类方法,只能在同步方法或通步代码块中使用,否则会抛异常。方法 作用 wait ( ) 表示线程一直等待,直到其他线程能够进行通知,与sleep不同,他会释放锁资源 wait ( long timeout ) 指定等待的毫秒数 notify ( ) 唤醒一个处于等待状态的线程 ...原创 2020-03-29 16:00:46 · 116 阅读 · 0 评论 -
Servlet中重定向与转发
一、二者比较 二、重定向三、转发原创 2020-03-07 18:53:52 · 188 阅读 · 0 评论 -
Maven详解
一、什么是MavenMaven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生成周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确...原创 2020-03-05 18:01:41 · 315 阅读 · 0 评论 -
Thread类及其常用方法
一、Thread类是 JVM 用来管理线程的一个类,每个线程都有一个唯一的 Thread 对象与之关联,Thread 类的对象就是用来描述一个线程执行流的,JVM 会将这些 Thread 对象组织起来,用于线程调度,线程管理。二、常见构造方法方法 Thread() 创建线程对象 Thread(Runnnable target) 使用Runnnabl...原创 2019-12-15 22:02:29 · 408 阅读 · 0 评论 -
二叉搜索树
一、定义二叉搜索树:二叉搜索树(Binary Search Tree),它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二、具体操作1、查找。2、插入。3、删除。具体分析如下图所示4.一般不建议修改。因为对于二...原创 2019-12-15 21:27:41 · 145 阅读 · 0 评论 -
JDBC详解
一、JDBC编程必备条件编程语言,如Java,C、C++、Python等 ; 数据库,如Oracle,MySQL,SQL Server等 ; 数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL提 供了Java的驱动包mysql-connector-java,需要基于Java操作MySQL即需要该驱动包 。二、JDBC及其工作原理1、JDBC含义:...原创 2019-12-04 23:05:51 · 343 阅读 · 0 评论 -
【思维导图】JavaSE
我的整个学习过程中,是在集合类里顺带学习了数据结构,因此数据结构就不单独写栏目了,直接归并到Java的学习当中。原创 2019-12-02 20:46:11 · 184 阅读 · 1 评论 -
集合框架
一、简介Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes 。其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索 retrieve 、管理 manipulate ,即平时我们俗称的增...原创 2019-11-23 20:32:28 · 110 阅读 · 0 评论 -
选择排序与堆排序
首先引入一幅图对七大基于比较的排序算法进行浏览:一、选择排序1、思路:每一次从无序区间选出最大(或最小)的一个元素,存放在无序区间的最后(或最前),直到全部待排序的数据元素排完。2、具体代码实现://选择排序public static void selectSort(int[] array) { //bound划分界限 for(int bound = 0; bou...原创 2019-11-23 19:50:00 · 891 阅读 · 0 评论 -
插入排序与希尔排序
首先引入一幅图对七大基于比较的排序算法进行浏览:一、排序1、排序含义:就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作,一般排序通常指的是排升序。通常意义上的排序,都是指的原地排序。2、稳定性:两个相等的数据,经过排序后,能保证其相对位置不发生变化,则我们称该算法是具备稳定性的排序算法。二、直接插入排序1、思路:将整个数组划分为两个区间,一部...原创 2019-11-20 17:14:09 · 206 阅读 · 0 评论 -
优先级队列
优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有(1)入队列(2)出队列 (3)取队首元素,一般情况下,查找操作用来搜索优先权最大的元素,删除操作用来删除该元素 。对于优先权相同的元素,可按先进先出次序处理或按任意优先权进行。优先级队列的实现方式有很多,但常见的是使用堆来构建。1、入队列操作步骤:1)首先按尾插方式放入数...原创 2019-11-17 14:22:18 · 450 阅读 · 0 评论 -
堆
1、概念(1)逻辑上是一颗完全二叉树,物理上是保存在数组当中的。(2).满足任意结点的值都大于其子树中结点的值,叫做大堆,或者大根堆、最大堆;反之则称为小堆,或者最小堆。(3)堆最大的优点是在于可以非常快速的找到最值。2、向下调整(主要以大堆为例)(1)首先确保左右子树均已经是堆,否则无法进行操作。(2)树状结构满足:如果父节点下标为i,左子树下标为2i+1,右子树下...原创 2019-11-13 22:51:38 · 105 阅读 · 0 评论 -
二叉树
1、二叉树和链表类似,主要通过结点的组合来表示二叉树,下面为它的表达形式:class Node { public char val; public Node left; public Node right; public Node(char val) { this.val = val; }}2、下面将构建一个固定结构的二叉树...原创 2019-11-04 23:23:13 · 122 阅读 · 1 评论 -
顺序表
顺序表其实就是我们所熟悉的数组,擅长随机访问,给定位置能够高效的获取/修改指定位置的值,时间复杂度为O(1),但按值查找、插入、删除等时间复杂度均为O(n)。对于尾插和尾删,时间复杂度为O(1)。SeqList的实现:package SeqList;public class SeqList { //数组最大容量为10,但这10个元素不一定都是有效元素 privat...原创 2019-11-02 14:00:04 · 142 阅读 · 0 评论 -
栈和队列
栈 1、stack:特殊的线性表,只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 2、主要有三个核心操作:入栈、出栈、取栈顶元素。 (1)入栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 (2)出栈::栈的删除操...原创 2019-10-31 22:32:42 · 134 阅读 · 0 评论 -
单向不循环链表
LinkedList主要类:class LinkedNode{ public int data = 0; public LinkedNode next = null; public LinkedNode(int data) { this.data = data; } }public class LinkedList { //创建头结点 private Linked...原创 2019-10-31 16:37:39 · 170 阅读 · 0 评论 -
static关键字
一、修饰属性。Java静态属性和类相关,和具体的实例无关。换句话说, 同一个类的不同实例共用同一个静态属性。class TestDemo{ public int a; public static int count; } public class Main{ public static void main(String[] args) { ...原创 2019-10-24 22:53:19 · 86 阅读 · 0 评论 -
图书馆管理系统(简易版)
在图书馆管理系统中首要有两个角色,普通用户(1.查找书籍、2.借阅书籍、3.归还书籍)与管理员(1.查找书籍、2.增加书籍、3.删除书籍、4.打印所有的书籍信息)。在我们设计类的过程中 ,可从需求中找出关键字,其中包括有:单本书籍Book,所有书BookList,普通用户NormalUser,管理员Admin等,对于具体操作将之理解成名词,每个操作对应到一个类,User类只要持有这些...原创 2019-10-21 19:29:54 · 4993 阅读 · 5 评论 -
带头双向循环链表
双向循环链表中,链表的每个节点既指向前面一个节点,也指向后面一个节点,节点具有两个域:prev和next。主要类:package cirLinkedList;class DLinkedNode{ public int val =0; public DLinkedNode prev = null; public DLinkedNode next = null; publ...原创 2019-10-21 18:05:52 · 140 阅读 · 0 评论