
Java后端
文章平均质量分 84
WHU_JiangLong
这个作者很懒,什么都没留下…
展开
-
Synchronized对象锁和类锁
Java中的synchronized关键字,用于修饰需要同步的方法或需要同步的代码块,默认以当前对象作为锁的对象。在学习synchronized关键字时,有以下几点注意事项:一把锁只能同时被一个线程获取,没有获得锁的线程只能等待; 每个实例都对应有自己的一把锁(this),不同实例之间互不影响;例外:锁对象是*.class以及synchronized修饰的是static方法的时候,所有对象公用同一把锁; synchronized修饰的方法,无论方法正常执行完毕还是抛出异常,都会释放锁。这里我们原创 2021-05-13 14:49:01 · 963 阅读 · 0 评论 -
Java设计模式精简版总结整理(四):行为型模式(续)
本文承接上一篇设计模式总结内容,继续总结介绍行为型模式的后六种模式:观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式和解释器模式。一、观察者模式观察者模式,又叫做发布-订阅模式,是指多个对象之间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。现实情境中公众号和订阅者、天气预报和听众等都是观察者模式。观察者模式包括以下角色:抽象主题、具体主题、抽象观察者、具体观察者。观察者模式的关键在于将目标与观察者进行分离,通过在目标类中封装观察者对象原创 2021-04-25 16:15:27 · 160 阅读 · 0 评论 -
Java设计模式精简版总结整理(三):行为型模式
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作完成单个对象无法完成的任务。行为型模式包括11种,因篇幅限制,切分为两篇进行总结介绍,本篇介绍前5种行为型设计模式:模板方法模式、策略模式、命令模式、职责链模式与状态模式。一、模板方法模式模板方法模式是指定义一个操作中的算法骨架,将算法的一些步骤延迟到子类当中,使得子类可以不改变该算法结构的情况下重新定义该算法的某些特定步骤。现实情境中的论文模板、简历模板等都是模板方法模式。模板方法模式的关键在于定义一个算法流程的骨原创 2021-04-25 11:20:28 · 202 阅读 · 0 评论 -
Java设计模式精简版总结整理(二):结构型模式
结构型模式描述如何将类或者对象结合在一起形成更大的结构,就像搭积木, 可以通过简单积木的组合形成复杂的、功能更为强大的结构。共包含代理模式、适配器模式、桥接模式、装饰器模式、外观模式、享元模式、组合模式7类。一、代理模式代理模式是指由于某些原因需要给某对象提供一个代理以控制该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,而是以代理对象作为访问对象和目标对象之间的中介。可以理解为生活情境中中介所扮演的角色。代理模式的结构主要是通过定义一个继承抽象主题的代理来包含真实主题,从而实现对真实原创 2021-04-23 14:38:56 · 204 阅读 · 0 评论 -
Java设计模式精简版总结整理(一):创建型模式
一、单例模式单例模式是指一个类只有一个实例,且该类能自行创建这个实例的一种模式。适合需要频繁创建的类或只要求生成一个对象等情况,如ServletContext 、ServletContextConfig、Spring框架应用中的 ApplicationContext、数据库中的连接池等也都是单例模式。单例模式的关键在于:类构造方法的私有化:避免类在外部被实例化 线程安全:懒汉式单例需要保证线程安全public class LazySingleton { private..原创 2021-04-22 17:30:32 · 102 阅读 · 0 评论 -
程序设计面向对象思想笔记
一、三大特性封装封装是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外的接口使其与外部发生联系。通过封装能够让对象使用者无需关心对象内部的细节,同时又可以通过对象对外提供的接口来访问该对象。封装的优点包括:减少耦合:可以独立地开发、测试、优化、使用、理解和修改。 减轻维护的负担:可以更容易得被理解,并且在调试的时候可以不影响其他模块。 有效地调节性能:可以通过剖析来确定哪些模块影响了原创 2021-04-22 10:57:56 · 180 阅读 · 0 评论 -
Java Optional类说明及使用(JDK8)
Optional类是JDK8提供的类,用于防止出现空指针异常。本篇旨在对该类进行说明及具体使用方式列举。一、序言Option在使用中主要是为了简化传统Java的if else形式对null情况进行判断。既然为了简化代码编写,就必须要提到JDK8的Lambda表达式。Lambda表达式是建立在函数式接口(函数式接口由@FunctionalInterface注解标识,接口有且仅有一个抽象方法)上的,具有()->{}的形式的函数表达式,有点类似于JavaScript中ES6的箭头函数形式。其使用场景原创 2020-08-19 11:02:02 · 703 阅读 · 1 评论 -
Java实现基于Socket的聊天室(三)服务器端
服务器端部分搭建思路及实现在阅读本篇之前,建议先阅读本篇的前两个部分:Java实现基于Socket的聊天室(一)序言:https://blog.youkuaiyun.com/Jiang216/article/details/108070585Java实现基于Socket的聊天室(二)客户端:https://blog.youkuaiyun.com/Jiang216/article/details/1080714221.1 构建服务器端图形化界面首先构建服务器端部分的图形化显示界面,构建ChatServerView原创 2020-08-18 13:50:38 · 660 阅读 · 0 评论 -
Java实现基于Socket的聊天室(二)客户端
客户端部分搭建思路及实现在阅读本篇之前,建议先了解Socket的基础相关知识,本文接上篇《Socket基础知识》:https://blog.youkuaiyun.com/Jiang216/article/details/1080705851.1 构建客户端可视化界面搭建ClientView类,该类继承JFrame类,并实现ActionListener, KeyListener两个事件监听接口。添加图形操作控件如下: private JTextArea chatArea;//聊天内容区 ..原创 2020-08-18 10:55:29 · 534 阅读 · 0 评论 -
Java实现基于Socket的聊天室(一)序言
序言1.1 什么是Socket?在网络编程中,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。Socket套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它包含网络通信的五种基本信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。1.2 Socket的原理Socket实质上提供了进程通信的端点。使用Socket进行网络通信,通信双方必须各自创建一个通信端点。可以理解为打电话,打电话原创 2020-08-18 10:23:07 · 611 阅读 · 0 评论 -
Java算法问题学习笔记(三)(数组分排、链表倒数K节点、链表反转、递增链表合并问题)
一、数组奇偶分排问题Q:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。A:分析:若不需要保证奇数和偶数调整后的分别相对顺序,则可使用双指针头尾相向扫描,判断奇偶性后调整位置即可;但若要考虑调整后的相对位置不变,则需要创建新的数组作为中介为妥。及将参数数组复制作为标的,统计数组奇数个数作为奇偶数分界点。再次遍历数组,分别以数组起始点与奇数统计总数点为排序后数组的奇数和偶数的占位起始原创 2020-08-15 16:25:14 · 189 阅读 · 0 评论 -
Java算法问题学习笔记(二)(二维数组查询,字符串空格、链表反向输出、两栈模拟队列、旋转数组问题)
一、顺序二维数组查询问题Q:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。A:分析如下:以一个符合要求的二维数组为例,int[][] array={{1,2,3},{4,5,6},{7,8,9}} 根据二维数组的行列分别递增规则,选取右上角元素为标的,与目标数字进行比较,在行数和列数不超过数组范围的前提下,...原创 2020-08-13 15:36:27 · 239 阅读 · 0 评论 -
Java算法问题学习笔记(一)(兔子问题、素数判断、水仙花数、正整数分解、最大公约数问题)
一、斐波那契数列(兔子问题)Q:有一只兔子,从第3个月开始每月生1只兔子,小兔子长到第3个月开始每个月也会生1只兔子,假如兔子都不死,问每个月的兔子总数是多少?A:本题是一道典型的斐波那契数列问题,斐波那契数列定义如下:斐波那契数列,又称为黄金分割数列,在数学上,指如下被递推的数列定义:F(1)=1,F(2)=1,F(n)=F(n - 1)+F(n - 2)(n≥ 3,n∈ N*)按照递推公式,解决代码如下:public class Fibonacci { pub...原创 2020-08-12 15:32:53 · 297 阅读 · 0 评论 -
Java面向对象设计模式学习(七):行为型模式(迭代器、访问者、备忘录、解释器)
本文主要介绍Java面向对象23种设计模式中行为型模式中的部分设计模式,上接Java面向对象设计模式学习(六)。八、迭代器模式(了解)迭代器模式面向的问题是:通常,集合的创建与遍历都在同一个类中,当遍历方法更换时就必须修改程序源代码,违背了 “开闭原则”。迭代器模式是指在客户访问类与聚合类之间插入一个迭代器,即提供一个对象来顺序访问集合对象中的一系列数据,而不暴露集合对象的内部表示。迭代器模式主要角色如下:抽象聚合(Aggregate)角色:定义存储、添加、删除聚合对象以及创建迭代器对象..原创 2020-08-05 18:04:28 · 327 阅读 · 0 评论 -
Java面向对象设计模式学习(六):行为型模式(责任链、状态、观察者、中介者)
本文主要介绍Java面向对象23种设计模式中行为型模式中的部分设计模式,上接Java面向对象设计模式学习(五)。四、责任链模式责任链模式,也称职责链模式,主要面向以下问题:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。责任链模式是指:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。该模式下客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求.原创 2020-08-05 14:45:32 · 388 阅读 · 0 评论 -
Java面向对象设计模式学习(五):行为型模式(模板方法、策略、命令)
本文主要介绍Java面向对象23种设计模式中行为型模式中的部分设计模式。行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。一、模板方法模式模板方法模式是指定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。模板方法模式使用虚函数的多态性技术以及“不用调用我,让我来调用你”的反向控制技术,主要角色如下:..原创 2020-08-04 18:03:38 · 222 阅读 · 0 评论 -
Java面向对象设计模式学习(四):结构型模式(外观、享元、组合)
本文主要介绍Java23种面向对象设计模式中的结构型模式分类下的部分设计模式,接Java面向对象设计模式学习(三)。四、外观模式当软件系统的功能越来越强,子系统会越来越多,客户对系统的访问也变得越来越复杂。这时如果系统内部发生改变,客户端也要跟着改变,这违背了“开闭原则”,也违背了“迪米特法则”,所以有必要为多个子系统提供一个统一的接口,从而降低系统的耦合度,这就是外观模式的目标。外观模式是指通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接..原创 2020-08-04 16:07:51 · 254 阅读 · 0 评论 -
Java面向对象设计模式学习(三):结构型模式(代理、适配器、桥接)
本文主要介绍Java23种面向对象设计模式中的结构型模式分类下的部分设计模式。一、代理模式即中介模式,代理模式是指给某对象提供一个代理以控制对该对象的访问,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。代理模式通过定义一个继承抽象主题的代理来包含真实主题,从而实现对真实主题的访问。代理模式主要角色如下:抽象主题(Subject)类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。 真实主题(Real Subject)类:实现了抽象主题中的具体业原创 2020-08-04 15:32:36 · 338 阅读 · 0 评论 -
Java面向对象设计模式学习(二):创建型模式(单例、原型、工厂、抽象工厂)
本文主要包括Java设计模式中的创建型模式分类下的部分设计模式:一、单例模式(Singleton)单例模式是指一个类只能有一个实例,且该类能自行创建这个实例的设计模式。通常情况下,普通类的构造函数是公有的,外部类可以通过“new 构造函数()”来生成多个实例。但是,如果将类的构造函数设为私有的,外部类就无法调用该构造函数,也就无法生成多个实例。这时该类自身必须定义一个静态私有实例,并向外提供一个静态的公有函数用于创建或获取该静态私有实例。单例模式结构图如下:单例模式又可以细分为懒汉.原创 2020-08-04 10:31:20 · 246 阅读 · 0 评论 -
Java面向对象设计模式学习(一):设计原则
一、设计模式分类Java的设计模式共包括23种,从设计目的(即要解决的问题)进行划分,分为创建型模式、结构型模式与行为型模式三类:创建型模式:即实现怎样创建对象,将对象的创建与使用分离。包括单例、原型、工厂方法、抽象工厂、建造者5 种创建型模式。 结构型模式:将类或对象按某种布局组成更大的结构,包括代理、适配器、桥接、装饰、外观、享元、组合7 种结构型模式。 行为型模式:将类或对象之间通过职责分配协作完成单个对象都无法单独完成的任务。包括模板方法、策略、命令、职责链、状态、观察者、中介者、迭..原创 2020-08-03 17:11:19 · 220 阅读 · 0 评论 -
Java编程思想学习笔记(一)
1.==与equals==比较两个变量本身的值,即两个对象在内存中的首地址(在内存中存放的起始地址);equals比较字符串中包含的内容是否相同。String s1,s2;s1 = new String("abc");s2 = new String("abc");s1==s2 是 false //两个变量的内存地址不一样,也就是说它们指向的对象不 一样,s1.equals(s2) 是 true //两个变量的所包含的内容是abc,故相等。注:如果是基础类型比原创 2020-07-30 16:29:41 · 156 阅读 · 0 评论 -
MyBatis 相关使用语法(XML方式)及SQL基础知识扩展
在Spring Boot中整合MyBatis时,对基于XML的配置信息部分知识点进行总结整理,并对SQL的联表查询部分基础知识进行了重新整理,以方便后期翻阅复习。相关知识点参照了以下blog:https://www.cnblogs.com/hitechr/p/10408085.htmlhttps://blog.youkuaiyun.com/weixin_40340362/article/details/93128692一、SQL联表查询以简单的A,B两表为例:CREATE TABLE Tabl原创 2020-07-21 14:49:03 · 469 阅读 · 0 评论 -
Java中的集合
Java集合类型Java标准库自带的java.util包提供了集合类:Collection,它是除Map外所有其他集合类的根接口。Java的java.util包主要提供了以下三种类型的集合:List:一种有序列表的集合,例如,按索引排列的Student的List; Set:一种保证没有重复元素的集合,例如,所有无重复名称的Student的Set; Map:一种通过键值(key-value)查找的映射表集合,例如,根据Student的name查找对应Student的Map。Java集合的设计有.转载 2020-07-03 10:50:35 · 362 阅读 · 0 评论 -
Java中的反射
Java中的类(class)class(包括interface)的本质是数据类型(Type)而每加载一种class,JVM就为其创建一个Class类型的实例,并关联起来。一个Class实例包含了该class的所有完整信息:JVM为每个加载的class创建了对应的Class实例,并在实例中保存了该class的所有信息,包括类名、包名、父类、实现的接口、所有方法、字段等。如果获取了某个Class实例,我们就可以通过这个Class实例获取到该实例对应的class的所有信息。通过cla.转载 2020-07-02 13:59:39 · 163 阅读 · 0 评论 -
Java解析XML文件方法介绍(SAX,JDOM,DOM4J)
示例XML文件:<?xml version="1.0" encoding="utf-8" ?><class> <student> <firstname>cxx1</firstname> <lastname>Bob1</lastname> <nickname>stars1</nickname> <marks>85原创 2020-06-13 16:13:10 · 162 阅读 · 0 评论 -
Java多线程实现方式及生命周期
Java中线程的实现方式1.实现Runnable接口class MyThread implements Runnable{ private String name ; // 表示线程的名称 public MyThread(String name){ this.name = name ; // 通过构造方法配置name属性 } public void run(){ // 覆写run()方法,作为线程原创 2020-06-13 14:39:26 · 200 阅读 · 0 评论