JAVA Web
文章平均质量分 98
爱得恋
这个作者很懒,什么都没留下…
展开
-
IntelliJ IDEA对tomcat配置详细过程
解决IntelliJ IDEA控制台输出中文乱码问题原创 2020-11-22 12:18:27 · 1776 阅读 · 1 评论 -
Maven的配置及使用
这里写目录标题一、什么是maven?二、maven项目的基本结构三、maven的配置文件1、全局配置文件(settings.xml)1)settings.xml文件位置2)指定本地仓库3)配置阿里云镜像:2、项目配置文件(pom.xml)1)依赖2)插件四、maven的生命周期一、什么是maven?Apache Maven 是一种用于软件项目管理工具,基于 Project Object Model(POM),用来管理项目的构建,汇报及文档生成等功能。我们知道了maven是一种项目管理工具之后,最主要的原创 2020-11-21 18:04:10 · 955 阅读 · 2 评论 -
IntelliJ IDEA中创建一个Maven项目以及对maven的设置
我们在做一个基于maven的web项目时,离不开一些开发工具和配置,常用的开发工具有:jdk、 maven、maven仓库、tomcat等。在使用他们之前,我们首先要下载安装,对于下载安装的路径我们建议:不要放在C盘路径不要带中文、不带空格或者特殊符号一、IDEA创建maven项目在idea中选择file—>new—>project在newProject中左侧选择maven,右侧在Create from archetype前面的勾打上对号,然后选中下面的序号三。完了之后点击右下原创 2020-11-21 11:43:59 · 402 阅读 · 0 评论 -
冯诺依曼体系结构
冯诺依曼说到冯诺依曼体系结构 ,当然得首先介绍一下冯诺依曼这位科学巨擘和他的天才发明。冯诺依曼是20世纪最伟大的科学家之一。在现代计算机、博弈论、核武器和生化武器等领域内的科学全才之一,被后人称为“计算机之父”、“博弈论之父”。他还在第二次世界大战期间曾参与曼哈顿计划,为第一颗原子弹的研制作出了贡献。他的主要著作有《计算机与人脑》(1958年)、《量子力学的数学基础》(1926)、《经典力...原创 2019-10-12 21:37:31 · 721 阅读 · 0 评论 -
JVM II —— 类加载
类加载一、类加载的理解二、类的生命周期1、加载2、验证3、准备4、解析5、初始化< clinit>()方法介绍:初始化顺序需要初始化的5种情况:二、类加载器启动类加载器(Bootstrap ClassLoader)扩展类加载器(Extension ClassLoader)应用程序类加载器(Application ClassLoader)三、类加载机制一、类加载的理解什么时候会进行类加载?---------->当用到一个类,但是这个类不在内存中,这个时候就需要发生类加载。那麽问题来了原创 2020-10-25 16:10:55 · 117 阅读 · 1 评论 -
JVM之垃圾回收 III ——垃圾回收算法、垃圾回收器
垃圾回收一、垃圾回收算法1、标记-清除算法(Mark-Sweep算法)2、复制算法(Copying算法)3、标记-整理算法(Mark-Compact算法)4、分代收集算法(Generatinal Collection)二、垃圾回收器1、Serial收集器1、ParNew收集器一、垃圾回收算法1、标记-清除算法(Mark-Sweep算法)1)最基础的收集算法,老年代收集算法:之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其不足进行改进的。2)算法分为“标记”和“清除”两个阶段:原创 2020-10-22 17:52:01 · 121 阅读 · 0 评论 -
JVM之垃圾回收 II ——方法区和堆区的垃圾回收、STW
一、需要垃圾回收的内存我们在上一篇博客中已经对JVM运行时内存的各个区域分析了他们是否需要垃圾回收。JVM之垃圾回收 I .栈区/PC区: 它两是线程私有内存,和线程是强相关的,线程创建划分内存,线程结束释放,他是有严格的内存划分的,不需要垃圾回收。常量池+方法区: 由于Java大量框架的使用(反射、动态代理等),而反射代码会造成方法区中的类急速膨胀,经常调用反射会造成方法区中的类特别多,因此方法区的回收会变得更严格。因此方法区也是垃圾回收考虑的一部分。堆区: 堆是对象的主要区域,创建的对象大多数在原创 2020-10-21 18:24:30 · 1937 阅读 · 2 评论 -
JVM之垃圾回收 I —— 垃圾回收策略、finalize()方法、四种引用
垃圾回收我们在上一篇博客:JVM I——JVM理解及内存区域划分 中提到了JVM中的动态内存管理器,它主要为程序动态的分配/回收内存空间的。而我们现在要说的垃圾回收(GC)的本质就是动态内存分配器。对比我们之前学过的c/c++,我们创建对象是通过new来创建这个对象并且分配好内存空间,在使用结束后需要通过free来释放掉这个对象的内存空间。这些都是我们程序员需要注意的问题,如果一味的创建对象开辟空间而不释放的话就会导致内存溢出。那么,Java是如何做的呢?我们知道Java中没有free来通过程序员原创 2020-10-19 21:28:50 · 400 阅读 · 0 评论 -
JVM I——JVM理解及内存区域划分
一、JVM介绍JVM 即:java 虚拟机。JVM最早的设计理念是:一次编写,多次运行。即,当时是为了让一份代码能够兼容多个操作系统的初衷。比如一份业务在不同的操作系统上有不同的代码(也就是一份相同的逻辑需要写多份),而Java为了解决这个问题就设计出了JVM来能够兼容多个操作系统的代码来执行。但是随着技术的不断发展,现在很少将Windows的程序放在Linux上,所以Java还是保留了这个特性,不算优点也不算缺点。JVM与其他的虚拟机有什么不同呢?jvm:只虚拟了部分功能,相当于只为Java系原创 2020-10-17 16:21:46 · 784 阅读 · 2 评论 -
java.util.concurrent包
我们知道java.util.concurrent包是一个解决并发问题的包,通常用在并发编程中。在前面的博客链接: 多线程 6 —— Lock体系、Lock锁原理(AQS).中已经接触了这个包,这篇博客主要说一下这个包下的其他接口以及实现类。一、java.util.concurrent.locks包这个包构成了Lock体系。关于Lock锁以及它的实现原理请看博客多线程 6 —— Lock体系、Lock锁原理(AQS)此处主要说一下java.util.concurrent.locks包下的接口以及实现类原创 2020-09-24 18:19:03 · 518 阅读 · 0 评论 -
多线程 6 —— Lock体系、Lock锁原理(AQS)
一、什么是Lock体系Lock体系其实是另一类锁的集合,是jdk提供的一种除synchronized之外的加锁方式。Lock是一个接口,它在java.util.concurrent.locks包下,并且这个包下有很多Lock接口的实现类。说到java.util.concurrent.locks包,我们先来看看java.util.concurrent包,它是一个解决并发问题的包,通常用在并发编程中。java.util.concurrent包...原创 2020-09-22 20:45:08 · 650 阅读 · 0 评论 -
Synchronized实现原理及优化
这里写目录标题一、synchronized实现原理1.Java对象结构2.synchronized实现原理二、synchronized优化1、自适应的CAS自旋锁2、偏向锁3、轻量级锁4、锁消除5、锁粗化一、synchronized实现原理为了解决线程安全问题,java提供了synchronized关键字来保证线程的同步互斥,使得同一时间只有一个线程来访问共享资源,而这个同步互斥就来自于监视锁Monitor。1.Java对象结构说到监视锁Monitor我们不得不说一下Java对象的构成,如下图所示:原创 2020-09-17 20:12:20 · 320 阅读 · 0 评论 -
多线程 5——常见锁策略、CAS机制、死锁
这里写目录标题一、常见锁策略1、乐观锁和悲观锁2、读写锁(readers-writer lock)3、重量级锁和轻量级锁4、自旋锁(Spin Lock)二、CAS机制一、常见锁策略1、乐观锁和悲观锁乐观锁和悲观锁是设计上解决线程安全一种思想悲观锁: 悲观的认为总是有其他线程并发修改,每次都是加锁操作悲观锁的问题:总是需要竞争锁,进而导致发生线程切换,挂起其他线程;所以性能不高。乐观锁: 设计上总是乐观的认为数据修改大部分场景都是没有线程并发修改,只有少量情况下才存在。线程安全上采取版本号来控制—原创 2020-09-14 13:03:30 · 342 阅读 · 0 评论 -
多线程 4——线程通信、线程池、定时器
一、线程通信1、等待集对于java中的每一个对象:1)对象上关联着一个monitor lock(监视器锁);2)对象上还关联着一个数据结构,即:等待集(Wait Set)———保存的所有调用过这个对象.wait()方法的线程。线程通信这引入了对象的等待集,是三个非常重要的方法:wait():让当前线程进入等待状态notify():唤醒当前对象上的等待的单个线程notifyAll():唤醒当前对象上的等待的所有线程这三个方法都是Object类的方法。另外,我们需要知道一个数据结构——原创 2020-09-04 22:05:04 · 196 阅读 · 0 评论 -
多线程 3——线程安全三大特性、volatile、synchronized、单例模式
一、线程安全什么是线程安全?如果多线程环境下代码运行的结果100%是符合我们预期的,即在单线程环境应该的结果,则说这个程序是线程安全的。如果出现一次或者多次错误的结果就说明是线程不安全的。我们先观察一段代码:public class UnsafeThread { private static int K; public static void main(String[] args) { //同时启动二十个线程,每个线程对同一个变量操作,循环1000次,每次循环++操作原创 2020-08-30 13:09:37 · 507 阅读 · 0 评论 -
多线程2——线程状态、Thread类API
一级标题二级标题三级标题原创 2020-08-27 13:45:59 · 145 阅读 · 0 评论 -
多线程1——线程基础、创建线程的三种方式
一、线程与进程1.线程与进程1)并发、并行2)线程与进程的区别3)线程的优点2.Java程序创建的流程(进程、线程)1)进程的启动过程2)Java程序的退出二、创建线程的三种方式1.继承 Thread 类2.实现Runnable接口3.Callable结合Futuretask对象创建线程一、线程与进程1.线程与进程1)并发、并行并发并行在操作系统章节已经说过了,现在再来简单复习一下。并发(假同时) : 单个CPU多个任务在一个时间范围以时间片轮转方式不停的轮流执行(时间片轮转调度)并行(真同.原创 2020-08-26 18:55:03 · 360 阅读 · 0 评论 -
java—IO流总结 2(Scanner和序列化)
一,Scanner1,System类2,Scanner类1)Scanner的常用方法:2)Scanner的进一步理解二,序列化和反序列化一,Scanner1,System类首先,我们先了解以下System类对IO的支持。System.in:标准输入(键盘)。System.out:标准输出(显示屏),打印出来为黑色。System.err :错误输入,打印出来颜色为红色。这三个标准输入输出是我们经常能够使用到的。2,Scanner类java.util.Scanner(Scanner与i.原创 2020-08-26 10:07:53 · 328 阅读 · 0 评论 -
Java—IO流总结1
一、IO的了解1、IO、文件的概念文件:文件 = 文件描述元信息(文件大小,文件名,文件类型等) + 文件中的内容是在磁盘外设上存储数据的一种方式。 在windows操作中,经常在硬盘上创建的各种.txt, .doc, .exe, .java, .lib, .mp3等等,都可以称之为文件。文件夹是一类特殊的文件。文件系统使用 树形结构 来组织管理文件的,后面具体介绍。IO(Input、Output):即我们对文件的读取和写入内容的过程。IO进一步也可以理解为:向外设中写数据 +原创 2020-08-04 13:33:53 · 144 阅读 · 0 评论 -
TCP和UDP协议原理及理解2——TCP
TCP:一、[UDP](https://blog.csdn.net/yuiop123455/article/details/107529748).二、TCP协议1、TCP协议段格式2、确认应答机制:3、超时重传机制:4、连接管理机制1)什么是连接?2)连接的生命周期3)连接管理——三次握手4)连接管理——四次挥手5、滑动窗口----->发送端机制1)那么如何知道对方的接受能力呢?2)滑动窗口模型:3)那么如果出现了丢包, 如何进行重传?6、流量控制 ------>接收端的机制7、拥塞控制8、延迟原创 2020-08-02 11:16:39 · 690 阅读 · 0 评论 -
TCP和UDP协议原理及理解1——UDP
一、什么是TCP/UDP协议?TCP和UDP协议是TCP/IP协议的核心。TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。TCP协议: TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;UDP协议:UDP则不为IP提供原创 2020-07-25 13:57:04 · 2367 阅读 · 0 评论 -
网络互联、局域网、广域网的传输流程
首先,我们先了解一些前置知识:一、五元组与数据封装分用1)五元组五元组:源IP+源端口号+目的IP+目的端口号+协议号源端口是系统指定的启动应用程序之后所在的端口目的端口是接收端的一个进程进程可以提供很多种协议,所以需要指定一个协议号来指定我发送的协议到底是什么协议,并且在接收后就能知道用什么协议来解析目的端口是应用程序指定的源IP源端口号是发送端的IP和端口号IP和端口号在上一篇博客中已经详细说明,此处就不一一解释了。我们都知道: IP+端口号可以定位到某一台主机的某一进程所以:原创 2020-07-22 13:02:27 · 1622 阅读 · 0 评论 -
网络分层(OSI七层模型、TCP/IC四层/五层模型)
一、OSI七层模型1、OSI七层模型概念OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型。把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备。OSI七层网络模型最主要的功能使就是帮助不同类型的主机实现数据传输。2、OSI七层模型分别是:第一层 (物理层): 是以0 101的二进制数据进行发送到网络其他设备中的第二层 (实数据链路层): 实现网络互联,连接到不同的主机,不同主机之间还要进行数据传输第三层 (原创 2020-07-21 14:58:17 · 5274 阅读 · 0 评论 -
操作系统
一、概念1.什么是操作系统?任何计算机系统都包含一个基本的程序集合,称为操作系统(Operator System)那么,我们为什么要设计操作系统呢?在上图中可以看出,操作系统是衔接用户模块和硬件模块的关键。因此,设计操作系统的目的就是:与硬件交互,管理所有的软硬件资源(对内且对下)为用户程序(应用程序)提供一个良好的执行环境(对外且对上)2.操作系统包括什么?内核(进程管理,内存管理,文件管理,驱动管理)其他程序(例如函数库,shell程序等等)3.操作系统是如何管理硬件和原创 2020-07-19 11:16:39 · 150 阅读 · 0 评论