![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
王者生辉
如果程序猿是最好的编剧,那么计算机就是最好的演员
展开
-
设计模式的六大基本原则
基本原则: 迪米特法则,最少知道原则 单一职责原则 开放-封闭原则 (构造抽象来隔离那些变化,对修改封闭,对扩展开放,加减乘除运算器) 依赖倒转原则 (抽象不应该依赖细节,细节应该依赖抽象,也就是针对接口编程,而不是针对实现编程,计算机主板接口) 里氏代换原则 (子类型必须能够替换掉他们的父来行 Animal a = new Cat()) 接口隔离原则 找IT部比找具体的某个人要好不管公司和人,找IT部就可以了,不管认不认识人.原创 2021-09-29 09:08:28 · 178 阅读 · 0 评论 -
值传递和引用传递经典例题
class Value{ public int i=15;}public class Test{ public static void main(String argv[]){ Test t=new Test( ); t.first( ); } public void first( ){ int i=5; Value v=new Value( ); v.i=25; second(v,i); System.原创 2021-09-01 20:27:29 · 349 阅读 · 1 评论 -
接口和抽象类的特点
抽象类特点:1.抽象类中可以构造方法2.抽象类中可以存在普通属性,方法,静态属性和方法。3.抽象类中可以存在抽象方法。4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。6,抽象类不能被实例化,抽象类和抽象方法必须被abstract修饰关键字使用注意:抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问原创 2021-09-01 08:53:43 · 176 阅读 · 0 评论 -
过滤器和拦截器的区别
过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调。 ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。 ④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。 ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。 ⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一原创 2021-08-31 14:30:14 · 127 阅读 · 0 评论 -
JS、JSP、JQuery区别
JS 和 JSP 一样吗?—— 肯定不一样啊。但是很多人对于js和jsp这两者,一直处于迷糊状态。今天就简单的介绍下两者的区别。1、JSP全称是java server page是JAVA企业应用的一种动态技术 用于java语言的web开发方向。JS全称是javaScript是一种页面脚本语言,与java没有关系,语法相似而已,由以前的livescript转化而来,为了敢时髦改成了javacript,.js文件一般是以javascript为语法写的一些为html元素服务的函数/方法的库文件。2..翻译 2021-08-28 12:00:00 · 1754 阅读 · 0 评论 -
简单讲一下java的跨平台原理,JVM简介,JVM架构图
简单讲一下java的跨平台原理由于各操作系统(windows,liunx等)支持的指令集,不是完全一致的。就会让我们的程序在不同的操作系统上要执行不同程序代码。Java开发了适用于不同操作系统及位数的java虚拟机来屏蔽个系统之间的差异,提供统一的接口。对于我们java开发者而言,你只需要在不同的系统上安装对应的不同java虚拟机、这时你的java程序只要遵循java规范,就可以在所有的操作系统上面运行java程序了。Java通过不同的系统、不同版本、不同位数的java虚拟机(jvm),...原创 2021-08-28 07:19:17 · 792 阅读 · 0 评论 -
二分查找:循环与递归分别实现
将循环转化为递归:循环和递归函数是能够相互转换的。 区别在于,使用递归函数极少被迫修改任何一个变量 —— 只需要将新值作为参数传递给下一次函数调用。 这就使得您可以获得避免使用可更新变量的所有益处,同时能够进行重复的、有状态的行为。下面还是以阶乘为例子,循环写法为:...原创 2021-08-27 16:14:30 · 168 阅读 · 0 评论 -
类加载过程
类加载过程:public class HelloLoader {public static void main(String[] args) {System.out.println("谢谢ClassLoader加载我....");}}它的加载过程是怎么样的呢?1、执行 main() 方法(静态方法)就需要先加载承载类 HelloLoader2、加载成功,则进行链接、初始化等操作,完成后调用 HelloLoader 类中的静态方法 main...原创 2021-08-27 11:49:37 · 121 阅读 · 0 评论 -
JVM中 类加载器作用
类加载器作用:类加载器子系统作用:1. 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。2. ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。3. 加载的类信息存放于一块称为方法区的内存空间。类加载器ClassLoader作用:1. class file,可以理解为设计师画在纸上的模板,而最终这个模板在执行的时候是要加载到JVM当中来根据这个文件实例原创 2021-08-27 11:40:02 · 434 阅读 · 2 评论 -
什么是线程池,线程池的作用
线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。创建销毁线程是一个非常消耗性能的。我们详细的解释一下为什么要使用线程池?在java中,如果每个请求到达就创建一个新线程,开销是相当大的。在实际使用中,创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源。如果在一个jvm里创建太多的线程,可能会使系统由..原创 2021-08-27 10:29:21 · 2842 阅读 · 0 评论 -
设计模式:简单工厂模式
简单工厂模式到底实例化谁,将来是不是增加实例化的对象,比如增加开跟运算,这是很容易变化的地方,应该考虑让一个单独的类来做这个创造实例的过程,,这就是工厂。public abstract class Cal{ protected double numA ; protected double numB ; public double getNumA() { return numA ;}...原创 2021-08-26 20:42:17 · 54 阅读 · 0 评论 -
排序算法的时间复杂度、空间复杂度、稳定性(图表)
原创 2021-08-26 08:20:35 · 563 阅读 · 0 评论 -
java中有三种移位运算符
java中有三种移位运算符<< : 左移运算符,num << 1,相当于num乘以2(除符号位外,整体左移一位,右面空位补零)>> : 右移运算符,num >> 1,相当于num除以2(除符号位外,整体右移一位,左面空位补零)>>> : 无符号右移,忽略符号位,空位都以0补齐...原创 2021-08-26 08:00:03 · 213 阅读 · 0 评论 -
线程常用方法
让线程暂时停止可以选择sleep方法。比如Thread.sleep(1000),当前线程睡眠1秒。需要知道的是,1秒后,线程是回到可执行状态,并不是执行状态,什么时候执行那是由虚拟机来决定的。所以sleep(1000)并不是在睡眠1秒后立即执行。yield:解释它之前,先简述下,多线程的执行流程:多个线程并发请求执行时,由cpu决定优先执行哪一个,即使通过thread.setPriority(),设置了线程的优先级,也不一定就是每次都先执行它Thread.yield();,表示暂停当前线...原创 2021-08-25 11:59:18 · 63 阅读 · 0 评论 -
java线程join方法会释放锁吗
java线程join方法会释放锁吗,虽然join底层使用wait,wait是释放锁的但当给对象加锁,wait释放的锁是对象的锁,可以认为释放锁当给线程加锁,wait释放的锁是线程的锁,此时认为不释放锁wait()和join()的调用方的区别:object.wait()和thread.join()join()的底层确实是wait(),wait()也确实释放锁,但是释放的是thread的对象锁也就可以这么说synchronized(obj){ thread.joi...原创 2021-08-25 11:34:10 · 3471 阅读 · 5 评论 -
设计模式:单例模式(Singleton)
设计模式是对已有问题固定的解决方法的总结。单例模式: (单例:单个实例)单例模式保证只有一个实例,就要保证外界不能随便的new这个对象,所以要私有化构造方法。私有化构造方法后就是把new这个对象控制权收回了,只能在类内部去实例化这个对象,让类自身负责保存他的唯一实例。单例模式(Singleton)保证一个类仅有一个实例,并提供一个访问他的全局访问点。保证类仅有一个实例最好的办法就是,让类自身负责保存他的唯一实例。这个类可以保证没有其他实例被创建,并且他可以提供一个访问该实例...原创 2021-08-25 11:22:59 · 100 阅读 · 0 评论 -
JAVA的JVM的内存可分类:堆(heap)、栈(stack)和方法区(method)
JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)栈区:每个线程包含一个栈区,栈中只保存方法中(不包括对象的成员变量)的基础数据类型和自定义对象的引用(不是对象),对象都存放在堆区中 每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。 栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。堆区:存储的全部是对象实例,每个对象都包含一个与之对应的class的信息(class信息存放在方法区)。 jvm只有一个堆区(h原创 2021-08-24 17:26:04 · 230 阅读 · 0 评论 -
JSP内置对象和属性列举
JSP内置对象和属性列举如下:1.request对象 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。2.response对象 response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。3.session对象 session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开...翻译 2021-08-24 17:10:13 · 213 阅读 · 0 评论 -
线程的基本概念、线程的基本状态以及状态之间的关系
线程的基本概念、线程的基本状态以及状态之间的关系从图中可以看出从执行状态出来后都不能直接回到执行状态,包括Thread.yield()/wait/sleep/io完成,首先回到可执行状态。 1. 新建( new ):新创建了一个线程对象。2. 可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 start ()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获 取 cpu 的使用权 。3. 运行( runni...原创 2021-08-24 16:53:07 · 419 阅读 · 0 评论 -
线程中:wait、notify、notifyAll概述
每个实例都有个线程的休息室wait set。Wait方法——把线程放入wait set使用wait方法时,线程便进入wait set,假设现在已经执行如下语句:obj.wait();则目前的线程停止执行,进入实例obj的的wait set.这个操作成为:线程在obj上wait().(这个obj不是线程而是对象)如果实例方法还有如下的语句时:wait();则其意义同:this.wait();故执行wait的线程就会进入this的wait set.此时就变成了在this上wait...原创 2021-08-24 15:30:47 · 387 阅读 · 0 评论 -
线程:生产者和消费者问题(序列图)
生产者和消费者问题: 名字 说明 Cake 蛋糕类 Panzi 蛋糕的队列 ProducerThread 生产蛋糕的线程 ConsumerThread 消费蛋糕的线程 Main 测试类 Sequence序列图:对于同步和异步的控制都是在Panzi原创 2021-08-24 11:51:35 · 798 阅读 · 0 评论 -
事务属性的种类: 传播行为、隔离级别、只读和事务超时
事务属性的种类:传播行为、隔离级别、只读和事务超时a)传播行为定义了被调用方法的事务边界。 传播行为 意义 PROPERGATION_MANDATORY 表示方法必须运行在一个事务中,如果当前事务不存在,就抛出异常 PROPAGATION_NESTED 表示如果当前事务存在,则方法应该运行在一个嵌套事务中。否则,它看起来和PROPAGATION_REQUIRED看起来没什...原创 2021-08-24 08:50:47 · 290 阅读 · 0 评论 -
Constructor构造函数的反射
Constructor的反射:public void testConstructor() {Class clazz = Student.class;Constructor[] constructors = clazz.getDeclaredConstructors();for (Constructor constructor : constructors) {System.out.println(constructor);System...原创 2021-08-24 07:59:30 · 186 阅读 · 0 评论 -
使用字节流完成复制一张图片
字节流:InputStream:FileInputStreamOutputStream: FileOutputStream任意一张图片粘贴到对应的项目下代码:public void fileInputStreamCopy() { FileInputStream fileInputStream = null; FileOutputStream fileOutputStream = null; try {fileInputStream = new ...原创 2021-08-23 20:59:06 · 270 阅读 · 0 评论 -
什么是反射机制
定义:在编译时候不知道加载的是哪个类,在运行时可以动态的获取类的属性调用对象的方法的机制就叫做反射。反射使Java这种静态编译型的语言具有了动态性。反射具有看透类的能力,类的信息在反射面前都是透明的(包括private的属性和方法都是可以调用)。Java反射机制主要提供一下功能:1、在运行时判断任意一个对象所属的类。2、在运行时构造任意一个类的对象。3、在运行时判断任意一个类所具有的成员变量和方法。4、在运行时调用任意一个对象的方法。反射使我们在编译的时候知道.原创 2021-08-23 20:51:57 · 187 阅读 · 0 评论 -
IO流体系分类图
IO体系IO流的分类:1、 根据处理的数据类型不同可以分为:字符流和字节流。2、根据数据的流向不同可以分为:输入流和输出流。只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。...原创 2021-08-23 20:43:29 · 473 阅读 · 0 评论 -
ArrayList和LinkedList的比较
ArrayList和LinkedList均实现了List接口ArrayList访问速度比LinkedList快随机添加和删除元素时,ArrayLink的表现更加快速HashMap实现Map接口,它允许任何类型的键和值对象,并允许将NULL用作键或值原创 2021-08-23 08:19:29 · 204 阅读 · 0 评论 -
前台线程和后台线程的区别和联系
后台线程:指为其他线程提供服务的线程,也称为守护线程。JVM的垃圾回收线程就是一个后台线程。前台线程:是指接受后台线程服务的线程,其实前台后台线程是联系在一起,就像傀儡和幕后操纵者一样的关系。傀儡是前台线程、幕后操纵者是后台线程。由前台线程创建的线程默认也是前台线程。可以通过isDaemon()和setDaemon()方法来判断和设置一个线程是否为后台线程。main()函数即主函数,是一个前台线程,前台进程是程序中必须执行完成的,而后台线程则是java中所有前台结束后结束,不管有没有完成,后原创 2021-08-23 07:57:33 · 856 阅读 · 1 评论 -
EL与JSTL概述
EL/JSTL目的就是去掉JSP中的java代码,都是以标签的形式表示,以标签的形式美工或者前端都可以修改,利于团队的合作。这套标签和java语言无关。JSP核心语法:JSP表达式<%=%> JSP脚本<%%>JSP开发的原则:尽量在JSP页面少写甚至不写java代码,Java代码放在Servlet。使用EL表达式来代替JSP表达式EL表达式的作用:向浏览器输出域对象(只能输出域对象)的变量或者表达式计算的结果。语法:${变量或表达式} ${l..原创 2021-08-23 07:47:27 · 238 阅读 · 0 评论 -
什么是ajax 什么是同步 什么是异步
什么是ajax Ajax: asynchronousjavascriptandxml (异步js和xml)其是可以与服务器进行(异步/同步)交互的技术之一。ajax的语言载体是javascript。最大特点:异步请求,不刷新整个页面,只刷新局部也叫局部刷新。什么是同步,什么是异步同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待卡死状态异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡死...原创 2021-08-20 17:08:12 · 607 阅读 · 0 评论 -
JSON和XML的比较
JSON和XML:相比XML,JSON的优势如下:1、没有结束标签,长度更短,读写更快。2、能够直接被JavaScript解析器解析。3、可以使用数组。JSON:{ "id" : 12, "name" : "gao", "age" : 30, "gender" : "男", "interests" : ["篮球", "爬山", "旅游"]}XML:<root>...原创 2021-08-20 08:40:16 · 355 阅读 · 0 评论 -
JSON的作用及语法规则
json是一种与语言无关的数据交换的格式,作用:1、使用ajax进行前后台数据交换2、移动端与服务端的数据交换JSON的语法规则:JSON的语法规则十分简单,可称得上“优雅完美”,总结起来有:JSON有两种结构:1、对象格式:{"key1":obj1, "key2":obj2, "key3":obj3...}2、数组/集合格式: [obj1,obj2,obj3...]注意:JSON的key是字符串,JSON的value是Object规则如下:1)映射用冒号(“:”原创 2021-08-20 08:35:06 · 1917 阅读 · 0 评论 -
Java和C++的区别
Java和C++的区别:1. Java是解释型语言,所谓的解释型语言,就是源码会先经过一次编译,成为中间码,中间码再被解释器解释成机器码。对于Java而言,中间码就是字节码(.class),而解释器在JVM中内置了。2. C++是编译型语言,所谓编译型语言,就是源码一次编译,直接在编译的过程中链接了,形成了机器码。3. C++比Java执行速度快,但是Java可以利用JVM跨平台。4. Java是纯面向对象的语言,所有代码(包括函数、变量)都必须在类中定义。而C++中还有面向过程的东西,比如原创 2021-08-19 09:07:37 · 1297 阅读 · 0 评论 -
常见到的mark到底是什么意思
作为一个程序员我们经常会在好的文章下面的留言见到mark一次,我第一次见到时也不明其意,那么它到底是什么意思呢?下文我进行了查阅与总结一、这几种常见的动词mark是什么意思 做记号;做标记(即是我们经常说的插眼) eg: The teacher marked the absent students on the name list. 有人看到了好的视频或者文章留言mark。 留下痕迹;弄污;使有污点 eg: The ink marked his white shirt.原创 2021-08-18 19:26:27 · 6116 阅读 · 1 评论 -
用JQuery实现给div设置透明度的动画操作
<!DOCTYPE html><html> <head> <title>新建网页</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="description" content="" /> <meta name="key.原创 2021-08-18 19:10:06 · 341 阅读 · 0 评论 -
mouseout、mouseover和mouseleave、mouseenter的区别
mouseenter:当鼠标移入某元素时触发。mouseleave:当鼠标移出某元素时触发。mouseover:当鼠标移入某元素时触发,移入和移出其子元素时也会触发。mouseout:当鼠标移出某元素时触发,移入和移出其子元素时也会触发。mousemove:鼠标在某元素上移动时触发,即使在其子元素上也会触发。mouseout、mouseover和mouseleave、mouseenter最大的区别,在于子元素连带触发代码:<!DOCTYPE html><原创 2021-08-18 17:31:03 · 1318 阅读 · 0 评论 -
JavaScript与JQuery的比较及说明
原创 2021-08-18 17:17:12 · 111 阅读 · 0 评论 -
jQuery介绍及基本操作
jQuery:其是对javascript封装的一个框架包,简化对javascript的操作javascript代码:获得页面节点对象、ajax元素节点对象实现、事件操作、事件对象jquery代码:无需考虑浏览器兼容问题、代码足够少jQuery:javascript+query使用前期,jquery侧重快速找到页面上各种节点。后期jquery丰富了事件操作、ajax操作、动画效果、DOM操作等等。选择器 基本选择器 $(‘#id属性值’) ---------...原创 2021-08-18 17:13:55 · 836 阅读 · 0 评论 -
被static修饰的语句或者变量的特点
被static修饰的语句或者变量有如下特点:1.随着类的加载而加载2.优先于对象存在3.被所有对象所共享4.可以直接被类名所调用使用注意:1.静态方法只能访问静态成员2.静态方法中不可以写this,super关键字3.主函数是静态的...原创 2021-08-18 07:50:42 · 684 阅读 · 1 评论 -
过滤器Filter原理及用法
顾名思义,过滤器就是对问题的筛选,选择应该通过的,挡住不应该通过的比如常见的登录系统,只有登录后才能查看系统信息,就可以用过滤器Filter,通过判断是否登录,没有登陆的阻挡其查看内部信息为什么要用过滤器?项目开发中,经常会用到重复代码的实现。1、请求每个servlet都要设置编码。2、判断用户是否登录,只有登录了才有操作权限。过滤器相关Api:interface Filter 过滤器核心接口1、init(FilterConfig filterConfig) 初始原创 2021-08-17 19:49:47 · 472 阅读 · 1 评论