![](https://img-blog.csdnimg.cn/20200626084646998.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java学习
文章平均质量分 75
Java学习笔记
深度学习推荐算法
用技术提升美好事物发生的概率。
展开
-
前后端分离博客项目
文章总体分为2大部分,Java后端接口和vue前端页面.先看效果:Java后端接口开发1、前言从零开始搭建一个项目骨架,最好选择合适,熟悉的技术,并且在未来易拓展,适合微服务化体系等。所以一般以Springboot作为我们的框架基础,这是离不开的了。然后数据层,我们常用的是Mybatis,易上手,方便维护。但是单表操作比较困难,特别是添加字段或减少字段的时候,比较繁琐,所以这里我推荐使用MybatisPlus(mp.baomidou.com/),为简化开发而生,只…CRUD...原创 2020-06-17 18:00:00 · 1492 阅读 · 4 评论 -
HTTP
前言HTTP入门1. 为什么要学HTTP?2. HTTP基础概念3.网站通信粗略过程4. 告知服务器请求的意图5. HTTP是不保存状态的协议6.持久连接7.提升传输效率8.常用的状态码简述2XX3XX4XX5XX9.服务器与客户端之间的应用程序10. HTTP首部简述10.1 HTTP请求报文10.2 HTTP响应报文11.HTTPS简述HTTP/2 && HTTPS1. HTTP协议的今生来世1.1 HTTP1.0和HTTP1.1区别1.2 H原创 2021-01-29 16:08:24 · 587 阅读 · 0 评论 -
银行系统设计
单例模式(Singleton):用于创建银行服务对象,确保只有一个银行服务对象被创建,可以提供唯一的存款、取款、查询余额等服务。工厂模式(Factory):用于创建银行账户对象,可以通过传入账户ID和账户名等参数来创建银行账户对象。BankService类:银行服务类,采用单例模式,包含存款、取款、查询余额等服务。AccountFactory类:银行账户工厂类,用于创建银行账户对象。BankAccount类:银行账户类,包含账号、账户名称、余额等要素。使用工厂模式(Factory)创建银行账户对象。原创 2023-10-20 20:17:04 · 113 阅读 · 0 评论 -
Java常见混淆点
Java常见混淆点原创 2023-10-15 15:10:32 · 107 阅读 · 1 评论 -
深入理解Java虚拟机笔记---底层原理分析与性能优化
概念虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Java虚拟机,简称JVM)。Java虚拟机阵营:Sun HotSpot VM、BEA JRockit VM、IBM J9 VM、Azul VM、Apache Harmony、Google Dalvik VM、Microsoft JVM…启动流程基本架构Java运行时编译源码(.java)原创 2021-03-13 23:00:37 · 133 阅读 · 0 评论 -
面向对象分析与设计
一、三大特性封装利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。用户无需知道对象内部的细节,但可以通过对象对外提供的接口来访问该对象。优点:减少耦合:可以独立地开发、测试、优化、使用、理解和修改减轻维护的负担:可以更容易被程序员理解,并且在调试的时候可以不影响其他模块有效地调节性能:可以通过剖析确定哪些模块影响了系统的性能提高软件的可重用性降低了构建大型系统的风险原创 2020-07-03 19:27:35 · 3747 阅读 · 0 评论 -
设计模式
一、概述设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。源码以及 UML 图二、创建型1. 单例(Singleton)Intent确保一个类只有一个实例,并提供该实例的全局访问点。Class Diagram使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。ImplementationⅠ原创 2020-07-03 19:18:17 · 116 阅读 · 0 评论 -
Java虚拟机
一、运行时数据区域程序计数器记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。Java 虚拟机栈每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小:java -Xss512M HackTheJava该区域可能抛出以下异常:当线程请求的栈深度超过最大值,会抛原创 2020-06-30 12:09:31 · 215 阅读 · 0 评论 -
JavaStream
参考文档:Java8-Stream API 详解java8 stream常用方法简介Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借.原创 2020-06-28 08:32:23 · 197 阅读 · 0 评论 -
Java基础
数据类型基本类型byte/8char/16short/16int/32float/32long/64double/64boolean/~boolean 只有两个值:true、false,可以使用 1 bit 来存储,但是具体大小没有明确规定。JVM 会在编译时期将 boolean 类型的数据转换为 int,使用 1 来表示 true,0 表示 false。JVM 支持 boolean 数组,但是是通过读写 byte 数组来实现的。包装类型基本类型都有对应的包装类型,基本类型与原创 2020-06-28 08:31:35 · 148 阅读 · 0 评论 -
Java异常
Java异常简介Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在哪”抛出,异常信息回答了“为什么”会抛出。Java异常架构ThrowableThrowable 是 Java 语言中所有错误与异常的超类。Throwable 包含两个子类:Error(错原创 2020-06-28 08:30:43 · 84 阅读 · 0 评论 -
Java虚拟机
JVM 的主要组成部分JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。Class loader(类装载):根据给定的全类名(如:java.lang.Object)来装载class文件到运行时区域中的方法区。Runtime data area(运行时数据区域):这就是我们常说的JVM的内存。Executi原创 2020-06-28 08:30:03 · 75 阅读 · 0 评论 -
Java多线程
基础知识并发编程的优缺点优点充分利用多核CPU的计算能力:通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升方便进行业务拆分,提升系统并发能力和性能:在特殊的业务场景下,先天的就适合于并发编程。现在的系统动不动就要求百万级甚至千万级的并发量,而多线程并发编程正是开发高并发系统的基础,利用好多线程机制可以大大提高系统整体的并发能力以及性能。面对复杂业务模型,并行程序会比串行程序更适应业务需求,而并发编程更能吻合这种业务拆分 。缺点并发编程的目的就是为了能提高程序的执行效率,原创 2020-06-28 08:29:23 · 304 阅读 · 0 评论 -
Java开发中的23种设计模式详解
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型原创 2020-06-27 14:33:25 · 447 阅读 · 0 评论 -
Java集合
集合概述集合分类Java 容器分为 Collection 和 Map 两大类:Collection集合主要有List和Set两大接口Set:一个无序(存入和取出顺序有可能不一致)容器,不可以存储重复元素,只允许存入一个null元素,必须保证元素唯一性。Set 接口常用实现类是 HashSet、LinkedHashSet 以及 TreeSet。List:一个有序(元素存入集合的顺序和取出的顺序一致)容器,元素可以重复,可以插入多个null元素,元素都有索引。常用的实现类有 ArrayList、L原创 2020-06-26 18:12:36 · 209 阅读 · 0 评论 -
Java设计模式
设计原则S.O.L.I.D简写全拼中文翻译SRPThe Single Responsibility Principle单一责任原则OCPThe Open Closed Principle开放封闭原则LSPThe Liskov Substitution Principle里氏替换原则ISPThe Interface Segregation Principle接口分离原则DIPThe Dependency Inversion Principle原创 2020-06-26 15:44:18 · 188 阅读 · 0 评论 -
Java并发volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volatile关键原创 2020-06-26 14:37:09 · 143 阅读 · 0 评论 -
GRASP设计模式及OO设计原则浅谈
面向对象(Object-Oriented,OO)是当下软件开发的主流方法。在OO分析与设计中,我们首先从问题领域中抽象出领域模型,在领域模型中以适当的粒度归纳出相关的类;然后定义各个类之间的关联关系,并给这些类分配相应的职责,同时定义这些类之间的协作方式。将相应的职责分配给具体的类是OO过程中非常重要的一步。GRASP设计模式是职责分配过程中的一套非常重要的设计模式。它给出了在给类分配职责的过程中,设计者们所需要遵从的一些原则或者指导性的建议。说到设计模式,更为人所知的当然是GoF(Gangof..原创 2020-07-01 09:48:02 · 542 阅读 · 0 评论 -
java复习笔记
1.java中int类型范围:-2^31~2^31-1,即-2147483648-2147483647.int j = (int) Math.pow(2,31); //j的值2147483647当int的最大值+1后,会变成int的最小值:int j = 2147483647;System.out.println("j的值" + (j + 1)); //j的值-2147483648总结:java中int的取值范围是2的32次方,最大值是2的31次方,最小值是负值...原创 2020-06-16 16:59:14 · 186 阅读 · 0 评论 -
Java web学习总结——Servlet开发
javaweb学习总结(五)——Servlet开发(一) 一、Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术。 Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤: 1、编写一个Java类,实现servlet接口。 2、把开发好的Java类部署到web服务器中。 按照一种约定俗成的称呼习惯,通常我们也把...原创 2020-06-14 23:05:11 · 145 阅读 · 0 评论 -
java集合框架复习
Java集合框架综述两大基类Collection与Map在集合框架的类继承体系中,最顶层有两个接口:Collection表示一组纯数据 Map表示一组key-value对一般继承自Collection或Map的集合类,会提供两个“标准”的构造函数:没有参数的构造函数,创建一个空的集合类 有一个类型与基类(Collection或Map)相同的构造函数,创建一个与给定参数具有相同元素的新集合类因为接口中不能包含构造函数,所以上面这两个构造函数的约定并不是强制性的,但是在目前的集合框架中,原创 2020-06-10 14:28:23 · 185 阅读 · 0 评论 -
java 集合框架 - Deque方法 Stack和Queue的常用方法
一.概述Deque是Queue的子接口,我们知道Queue是一种队列形式,而Deque则是双向队列,它支持从两个端点方向检索和插入元素,因此Deque既可以支持LIFO形式也可以支持LOFI形式.Deque接口是一种比Stack和Vector更为丰富的抽象数据形式,因为它同时实现了以上两者。二.主要方法修饰符和返回值方法名描述*添加功能voidpush(E)向队列头部插入一个元素,失败时抛出异常voidaddFirst(E)向队列头部插入一个元素,失败时抛原创 2020-06-10 12:48:00 · 415 阅读 · 0 评论 -
在Java中的String类函数总结
String类常用函数包括:例如length()、charAt()、getChars()、replace()、toUpperCase()、toLowerCase()、trim()、toCharArray()等,用法如下:1 string.length()是用来求字符串的长度,返回值为字符串的长度。2 string.charAt()为取该字符串某个位置的字符,从0开始,例如string.charAt(0)就会返回该字符串的第一个字符。3 string.getChars()为将这个字符串中的字符复制到目原创 2020-06-08 23:12:50 · 396 阅读 · 0 评论 -
String类及其常用函数
String类适用于描述字符串事物。字符串最大特点:一旦被初始化就不可以被改变;字符串直接赋值和new对象存在区别,后者会比前者多创建一个对象,一般建议使用字符串直接赋值;String类复写了Object类中equals方法,只用于判断字符串是否相同,不判断是否是同一个对象。常见对字符串的操作:1 获取1.1 length():获取长度字符串中的包含的字符数,也就是字符串的长度,返回值为int类型。int length():获取字符串长度。1.2 charAt(int index):获取字原创 2020-06-08 23:08:51 · 619 阅读 · 0 评论 -
Java synchronized原理总结
synchronized的底层是使用操作系统的mutex lock实现的。内存可见性:同步快的可见性是由“如果对一个变量执行lock操作,将会清空工作内存中此变量的值,在执行引擎使用这个变量前需要重新执行load或assign操作初始化变量的值”、“对一个变量执行unlock操作之前,必须先把此变量同步回主内存中(执行store和write操作)”这两条规则获得的。操作原子性:持有同一个锁的两个同步块只能串行地进入锁的内存语义当线程释放锁时,JMM会把该线程对应的本地内存中的共享变量刷新到主内原创 2020-06-05 16:37:46 · 225 阅读 · 0 评论 -
volatile原理总结
内存可见性内存可见性相关概念:线程对共享变量修改的可见性。当一个线程修改了共享变量的值,其他线程能够立刻得知这个修改。volatile使用Lock前缀的指令禁止线程本地内存缓存,保证不同线程之间的内存可见性。Java代码如下:Singleton volatile instance = new Singleton(); // instance是volatile为了提高处理速度,处理器不直接和内存进行通信,而是先将系统内存的数据读到内部缓存(L1,L2或其他)后再进行操作,但操作完不知道何时会写到内存原创 2020-06-05 15:54:49 · 211 阅读 · 0 评论 -
Java内存模型(JMM)总结
Java内存模型(JMM)我们常说的JVM内存模式指的是JVM的内存分区;而Java内存模式是一种虚拟机规范。Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果;JMM规范了Java虚拟机与计算机内存是如何协同工作的:规定了一个线程如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。原始的Java内存模型存在一些不足,因此J原创 2020-06-05 15:17:27 · 177 阅读 · 1 评论 -
java复习索引
一、Java基础Java基础-继承 Java基础-抽象 Java基础-接口 Java基础-多态 Java基础-重写 Java基础-匿名对象 Java基础-内部类 Java基础-final、static关键字 Java基础-ArrayList集合 Java基础-IO字符流、File类 Java常用类(一):Object 类、String 类、StringBuffer类、StringBuilder 类 Java常用类(二):Data类、DateFormat类、Calendar类 Ja原创 2020-06-03 16:45:36 · 162 阅读 · 0 评论 -
Java基础-ArrayList集合
一、概述ArrayList集合是程序中最常见的一种集合,属于引用类型,在AyyayList内部封装了一个长度可变的数组,当存储元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,可以看做ArrayList是一个长度可变的数组。1、创建集合导包:import java.util.ArrayList;创建对象:ArrayList<要存储的数据类型>变量名=newArrayList<要存储的数据类型>();注意:<要存储的...原创 2020-06-03 16:04:58 · 630 阅读 · 0 评论 -
java并发编程:Executor框架
目录一、什么是Executor框架?二、Executor框架结构图解1、Executor框架包括3大部分2、Executor框架的使用示意图三、Executor框架成员:ThreadPoolExecutor实现类、ScheduledThreadPoolExecutor实现类、Future接口、Runnable和Callable接口、Executors工厂类摘要:1.Exexctor简介Executor的UML图:(常用的几个接口和子类)2.ThreadPool.原创 2020-06-03 15:34:24 · 200 阅读 · 0 评论 -
java数组负责以及深浅拷贝的理解
一、数组的基本概念数组:数组是一种数据结构,用来存储通哪一类型值的集合。通过整形下标可以访问数组中的每一个值。(1)java中两种数据:primitive(原始类型)和 Object(引用类型)。(2)数组属于Object,需要new来创建数组,在使用之前一定要开辟空间(实例化)(3)java数组的特征: 1、数组必须经过初始化才能使用2、一旦创建了数组就不能再改变它的...原创 2020-05-31 17:30:38 · 219 阅读 · 0 评论 -
Java异常处理中对于finally的一些思考
1.return与finally到底谁先执行?我们经常会使用try/catch/finally语句块。当然,return关键字使用也是很平常的事,但是不知道大家有没有注意个这样一个问题。当在try语句块里面使用return语句,在finally里面去修改return所要返回的内容会出现什么情况。首先,我们知道return是结束方法的标志,一旦方法执行到return语句就将返回不再往下执行。其次,我们也知道,finally里面的语句是无论方法怎样执行,最后都要执行finally里面的语句。原创 2020-05-28 14:10:37 · 285 阅读 · 0 评论 -
java 类方法和实例方法 调用关系
java 类方法和实例方法1. 类方法也可称静态方法,使用static修饰的类中方法;2.实例方法非静态方法,没有用static修饰的方法。3.测试案例public class Test { private int a = 5; private static int b = 10; public static void yiStatic() {// a = 10;//静态方法无法访问非静态成员变量 System.o原创 2020-05-21 15:45:56 · 308 阅读 · 1 评论