随笔分类 -  Java基础

摘要:J.U.C并发包(1) AbstractQueuedSynchronizer AbstractQueuedSynchronizer是JUC并发包中锁的底层支持,AbstractQueuedSynchronizer是抽象同步队列,简称AQS,是实现同步器的基础组件,并发包中锁的实现底层就是使用AQS实 阅读全文
posted @ 2019-08-20 20:36 家铭 阅读(276) 评论(0) 推荐(0)
摘要:Java内存模型 1、Java内存模型定义 描述多线程环境中线程与内存的关系 Java内存模型定义了程序中各个变量的访问规则,即虚拟机将变量存储到内存和从内存取出变量的底层细节。 这里的变量可以理解为堆和方法区的,不包括线程私有的栈。 解决了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进 阅读全文
posted @ 2019-08-11 10:58 家铭 阅读(167) 评论(0) 推荐(0)
摘要:JVM总结(3)Class文件,类加载机制、编译过程 Java编译器先把Java代码编译为存储字节码的Class文件,再通过Class文件进行类加载。 Class类文件的结构 Java编译器可以把Java代码编译为存储字节码的Class文件 Class文件格式采用一种类似C语言结构体的伪结构来存储数 阅读全文
posted @ 2019-08-11 10:27 家铭 阅读(177) 评论(0) 推荐(0)
摘要:JVM总结(2)java内存区域、字节码执行引擎 1、内存区域 程序计数器:知道线程执行位置,保证线程切换后能恢复到正确的执行位置。 虚拟机栈:存栈帧。栈帧里存局部变量表、操作栈、动态连接、方法返回地址。局部变量表又存了各种基本数据类型和对象引用(句柄)。 本地方法栈:为Native方法服务 堆:存 阅读全文
posted @ 2019-08-11 10:07 家铭 阅读(145) 评论(0) 推荐(0)
摘要:JVM总结(1) 1、JVM组成: JVM由类加载器子系统、运行时数据区、执行引擎以及本地方法接口组成。 2、JVM运行原理: Java源文件经编译器,编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。 3.Java垃圾回收区域 Java垃圾回收只针对堆和方法区的内存。 阅读全文
posted @ 2019-08-10 16:02 家铭 阅读(300) 评论(0) 推荐(0)
摘要:注意只有可运行(就绪态)和运行中(运行态)可以相互转换 阅读全文
posted @ 2019-07-30 09:23 家铭 阅读(161) 评论(0) 推荐(0)
摘要:Throwable是Error和Exception的基类 Exception(异常) :是程序本身可以处理的异常。 Error(错误): 是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,一般不需要程序处理。 检查异常(编译器要求必须处置的异常) : 除了Err 阅读全文
posted @ 2019-07-28 20:13 家铭 阅读(147) 评论(0) 推荐(0)
摘要:值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。 引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对 阅读全文
posted @ 2019-07-26 17:05 家铭 阅读(159) 评论(0) 推荐(0)
摘要:Servlet的生命周期一般可以用三个方法来表示: init():仅执行一次,负责在装载Servlet时初始化Servlet对象 service() :核心方法,一般HttpServlet中会有get,post两种处理方式。在调用doGet和doPost方法时会构造servletRequest和se 阅读全文
posted @ 2019-07-25 19:14 家铭 阅读(145) 评论(0) 推荐(0)
摘要:存根类是一个类,它实现了一个接口,它的作用是:如果一个接口有很多方法,如果要实现这个接口,就要实现所有的方法。但是一个类从业务来说,可能只需要其中一两个方法。如果直接去实现这个接口,除了实现所需的方法,还要实现其他所有的无关方法。而如果通过继承存根类就实现接口,就免去了这种麻烦。 RMI 采用stu 阅读全文
posted @ 2019-07-24 09:56 家铭 阅读(1053) 评论(0) 推荐(0)
摘要:1.sleep()方法 在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”。不推荐使用。 sleep()使当前线程进入阻塞状态,在指定时间内不会执行。 2.wait()方法 在其他线程调用对象的notify或notifyAll方法前,导致当前线程等待。线程会释放掉它所占有的“锁标志”,从 阅读全文
posted @ 2019-07-24 09:36 家铭 阅读(440) 评论(0) 推荐(0)
摘要:sleep不出让系统资源;wait是进入线程等待池等待,让出系统资源线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(millise 阅读全文
posted @ 2019-07-19 11:43 家铭 阅读(369) 评论(0) 推荐(0)
摘要:1、request request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。 1、req 阅读全文
posted @ 2019-07-18 17:26 家铭 阅读(213) 评论(0) 推荐(0)
摘要:1、分派发生在编译期和运行期,编译期的分派为静态分派,运行期的为动态分派。 2、编译期是根据对象声明的类型来选择方法,运行期是根据对象实际类型来选择方法。 3、单分派和多分派取决于宗量, 方法调用者和方法参数都是宗量. 4、Java中静态分派的方法调用,首先确定调用者的静态类型是什么,然后根据要调用 阅读全文
posted @ 2019-07-18 16:39 家铭 阅读(812) 评论(0) 推荐(0)
摘要:当使用 +、-、*、/、%、运算操作时,遵循如下规则: 1、只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型; 2、如果两个操作数中有一个是float类型的,另一个将会被转换为float类型,并且结果也是float类型; 3、如果两个操作数 阅读全文
posted @ 2019-07-17 17:17 家铭 阅读(139) 评论(0) 推荐(0)
摘要:final关键字可以用于成员变量、本地变量、方法以及类。 2、 final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误。 3、 你不能够对final变量再次赋值。 4、 本地变量必须在声明时赋值。 5、 在匿名类中所有变量都必须是final变量。 6、 final方法不能被 阅读全文
posted @ 2019-05-27 19:13 家铭 阅读(143) 评论(0) 推荐(0)
摘要:input.nextLine() 和input.next()的区别及用法注意事项 阅读全文
posted @ 2019-05-19 21:20 家铭 阅读(7297) 评论(0) 推荐(0)
摘要:解决顺序存储结构不足的问题 顺序存储结构最大的缺点是插入和删除时需大量移动元素,其原因在于相邻两元素的存储位置也相邻。为了解决这一问题提出链式存储结构。 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,存储元素既可以是连续的,也可以是不连续的。这意味着这些数据元素可以存在于内存 阅读全文
posted @ 2019-04-04 11:02 家铭 阅读(307) 评论(0) 推荐(0)
摘要:List接口继承了Collection接口,位于java.util包中。它包含Collection接口的所有方法,外加其他一些方法(具体实现参考源码),比较重要的有: anyType get(int index) anyType set(int index, anyType newVal) void 阅读全文
posted @ 2019-04-03 11:25 家铭 阅读(595) 评论(0) 推荐(0)
摘要:单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。 软件设计真正要做的许多内容,就是要发现职责并把这些职责相互分 阅读全文
posted @ 2019-04-02 21:00 家铭 阅读(163) 评论(0) 推荐(0)