【Java 原理性文章收录】教程文章相关的互联网学习教程文章

JAVA过滤机制——过滤器的概念、工作原理、生命周期【图】

一、JAVA过滤机制——过滤简介 1、过滤器三部分:过滤源(用户请求)——>过滤规则——>过滤结果 2、过滤器不处理结果,只做辅助性操作(过滤器不处理请求,只对请求放行或者拒绝) 3、定义:过滤器是一个【服务器端】的组件,它可以【截取用户端的请求和响应信息】,并对这些信息过滤 4、案列:登录案例、编码转换案例二、过滤器的工作原理用户发送请求到过滤器,过滤器将用户请求发送到web资源,web资源将响应发送到过滤器,过滤...

70后、80后的程序员,你知道什么是Java web的原理吗?【图】

如果你是70、80后的程序员,你一定要看一看这篇文章,保证满满的回忆。如果你是90后,那你更要看看这篇文章,因为你能找到java web发展的历史。 言归正传,Java语言能长期霸占语言排行榜一个重要的原因就是强大的web开发能力,web开发是java的基石(在EJB推出的时候当时的Sun用基石来描述EJB),所以了解java web开发原理是非常重要的。如果仅仅跟大家聊java web开发原理未免有点单薄,今天我将把java web开发包含的主体内容跟头条...

Java集合ArrayList数组实现原理及源码分析详解_一点课堂(多岸学院)【代码】【图】

arraylist源码分析数组介绍 数组是数据结构中很基本的结构,很多编程语言都内置数组。 在java中当创建数组时会在内存中划分出一块连续的内存,然后当有数据进入的时候会将数据按顺序的存储在这块连续的内存中。当需要读取数组中的数据时,需要提供数组中的索引,然后数组根据索引将内存中的数据取出来,返回给读取程序。在Java中并不是所有的数据都能存储到数组中,只有相同类型的数据才可以一起存储到数组中。因为数组在存储数据时...

Java并发编程,3分分钟深入分析volatile的实现原理【代码】【图】

volatile原理volatile简介Java内存模型告诉我们,各个线程会将共享变量从主内存中拷贝到工作内存,然后执行引擎会基于工作内存中的数据进行操作处理。 线程在工作内存进行操作后何时会写到主内存中? 这个时机对普通变量是没有规定的,而针对volatile修饰的变量给Java 虚拟机特殊的约定,线程对 volatile变量的修改会立刻被其他线程所感知,即不会出现数据脏读的现象,从而保证数据的“可见性”。一言以蔽之,被volatile修饰的变量...

java数据结构和算法08(B树的简单原理)【图】

这一篇首先会说说前面剩余的一点知识2-3树,然后简单说说B树,不写代码,只是简单看看原理吧!为什么要说一下2-3树呢?了解2-3树之后能更快的了解B树; 1.简单看看2-3树其实我们学过了前面的2-3-4树之后,再看2-3树就太容易了,2-3树中任意一个节点最多只有三个子节点,而且节点中只有两个空位置可以存数据;除了分裂,其他的都和2-3-4树一样的,就不多说了,下面我们就随意看看节点分裂吧!首先要区分2-3-4树和2-3树分裂的的不同...

JavaWeb学习笔记(十三)--JSP入门和基本原理【代码】【图】

1. 什么是JSP JSP全称是Java Server Pages,它和Servlet技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。 JSP这门技术最大的特点:写JSP就像在写HTML,相比HTML而言,HTML只能为用户提供静态数据,而JSP允许在页面中嵌套Java代码,为用户提供动态数据。 相比Servlet而言,Servlet很难对数据进行排版,而JSP除了可以用Java代码产生动态数据的同时,也很容易对数据进行排版。2. JSP原理 2.1 Web服务器如何调用并执行一个...

Java synchronized 关键字的实现原理【图】

数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令,大家可能会进一步追问:JVM底层又是如何实现synchronized的? 本文所指说的JVM是指Hotspot的6u23版本,下面首先介绍synchronized的实现: synrhronized关键字简洁、清晰、语义明确,因此即使有了Lock接口,使用的还是非常广泛。其应用层的语义是可以把任何一个非null 对象 作为"锁",当syn...

Java加载Class文件的原理机制

详见:http://blog.sina.com.cn/s/blog_6cbfd2170100ljmp.html 1.Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中 2.java中的类大致分为三种: 1.系统类 2.扩展类 3.由程序员自定义的类 3.类装载方式,有两种 1.隐式装载, 程序在运行过程中当碰到通过new 等方式生成对象时,隐式调用类装载器加载对应的类到jvm中。 ...

深入分析Java的编译原理

在《Java代码的编译与反编译》中,有过关于Java语言的编译和反编译的介绍。我们可以通过javac命令将Java程序的源代码编译成Java字节码,即我们常说的class文件。这是我们通常意义上理解的编译。 但是,字节码并不是机器语言,要想让机器能够执行,还需要把字节码翻译成机器指令。这个过程是Java虚拟机做的,这个过程也叫编译。是更深层次的编译。 在编译原理中,把源代码翻译成机器指令,一般要经过以下几个重要步骤:根据完成任务...

Java AOP的底层实现原理【代码】

Java AOP的底层实现原理 一、什么是AOP 1、AOP:Aspect Oriented Programming(面向切面编程),OOP是面向对象编程,AOP是在OOP基础之上的一种更高级的设计思想。 2、OOP和AOP之间也存在一些区别,OOP侧重于对象的提取和封装。----封装对象 AOP侧重于方面组件,方面组件可以理解成封装了通用功能的组件,方面组件可以通过配置方式,灵活地切入到某一批目标对象方法上。----封装功能 3、AOP用于处理系统中分布于各个模块的横切关注点...

常见排序算法原理及java实现

/*** * 冒泡排序 @author :manzi Create Date : 2019年4月29日 下午6:55:20* * 原理:比较两个相邻的元素,将值大的元素交换至右端。* * 1思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。* 2即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。* 3然后比较第2个数和第3个数,将小数放前,大数放后,* 4如此继续,直至比较最后两个数,将小数放前,大数放后。* 5重复第一趟步骤,直至全部排序完成。*/public ...

深入理解(16)java多线程之线程池工作的原理【图】

我们在工作中或多或少都使用过线程池,但是为什么要使用线程池呢?从他的名字中我们就应该知道,线程池使用了一种池化技术,和很多其他池化技术一样,都是为了更高效的利用资源,例如链接池,内存池等等。 数据库链接是一种很昂贵的资源,创建和销毁都需要付出高昂的代价,为了避免频繁的创建数据库链接,所以产生了链接池技术。优先在池子中创建一批数据库链接,有需要访问数据库时,直接到池子中去获取一个可用的链接,使用完了之...

深入理解(8)Java并发之synchronized实现原理【代码】

原文:https://blog.csdn.net/javazejian/article/details/72772461线程安全是并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据。因此为了解决这个问题,我们可能需要这样一个方案,当存在多个线程操作共享数据时,需要保证同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再进行,这种方式有个高尚的名...

Java线程池的使用及原理分析【代码】【图】

概述 线程池是管理一组同构工作线程的资源池。合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池...

Java常用消息队列原理介绍及性能对比

为什么要使用消息队列: 解耦 在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 冗余 有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风...