- 博客(26)
- 收藏
- 关注
原创 类加载过程
加载→验证→准备→解析→初始化1、加载此阶段是由类的加载器根据类的全限定名读取此类的二进制字节码到JVM内部,并存储在运行时内存区的方法区,然后将其转变为一个java.lang.Class对象实例,这个Class对象日后就会作为方法区中该类的各种数据入口;2、链接此阶段是要将加载到JVM中的二进制字节流的类数据信息合并到JVM运行时状态中,经由验证、准备和解析三个阶段;①验证: ...
2019-12-04 19:13:06 161
原创 对象创建过程
过程一共有五步:类加载检查→分配内存→初始化零值→设置对象头→执行init()**①类加载检查:**检查该对象所代表的的类是否已经被加载、解析和初始化过,没有的话先执行类的加载过程;**②分配内存:**在通过第一之后虚拟机为对象分配内存。对象经过类加载之后大小就基本确定了,分配空间就是在堆中划出一块大小确定的内存;**③初始化零值:**内存分配完成后,虚拟机需要对内存初始化为零值,这一步...
2019-12-04 18:50:50 202
原创 MyBatis缓存复习
缓存:内存中临时存储的数据;防止相同查询语句多次查询;一级缓存:默认开启;一级缓存跟SqlSession对象密切相关,同一个session对象缓存才可使用;当session对象换了,或者调用clearCache()方法清除缓存;也可以在xml局部配置,设置刷新属性,也可以让它刷新缓存;二级缓存:二级缓存需要手动开启与SqlSessionFactory绑定1.在核心配置中配置ca...
2019-12-04 15:31:53 140
原创 hashMap在jdk1.7与jdk1.8中的原理及不同
hashMap采用hash表存储数据,而hash表的底层则又是数组,数组存储entry对象,默认长度为16。当我们往hash表中存储数据时,会先对用对象的hashcode方法,计算出该对象的hash值,查找对应索引中的数组是否存在对象,不存在则直接放进去。如果存在的话,则通过equals方法比较两个对象的key,如果相等则覆盖。如果不相等则形成链表结构,这种情况下就叫做碰撞。这种碰撞应该尽量...
2019-11-18 15:00:21 350
原创 一条SQL语句执行得很慢的原因有哪些?(主要分析索引)
一条SQL语句执行的很慢,那是每次都很慢呢?还是多数情况下正常,偶尔会很慢?所以我们需要分两种情况讨论:一、偶尔很慢的情况一条SQL语句如果大多数情况下运行状况良好,偶尔会出现执行很慢的话,那我们一般认为该SQL语句没什么问题,应该是其他问题导致。1.数据库一直刷新脏页当我们要执行一条sql语句时,我们知道数据库会在内存中更新对应字段,但是更新过后字段并不会马上同步持久化到磁盘中,而是把更...
2019-11-15 19:30:49 539
原创 生命周期钩子函数
生命周期钩子函数一共经历四个过程:1. 创建时期*beforeCreated()*这个阶段表示实例完全被创建出来之前,会执行它,注意:在beforeCreated生命周期函数执行的时候,data和methods中的数据都还没有初始化,现在输不出data和methods中的数据。created钩子函数:在created中,data和methods都已经初始化好了,如果要调用meth...
2019-11-13 11:05:49 388
原创 MVC与MVVM区别
MVC在MVC里,View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑。 MVC模型关注的是Model的不变,所以,在MVC模型里,Model不依赖于View,但是 View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。特点:把业务逻辑、模型数据、用户界面...
2019-11-12 19:20:19 117
原创 富文本编辑器
富文本编辑器1步:官网下载http://ueditor.baidu.com/website/index.html2步:UEditor在JavaWeb中的应用(1)解压(2)拷贝解压后的文件到工程webroot中(3)解压文件中的jsp/lib中的.jar全部拷贝到工程中lib中(4)书写代码4.1导入js4.2调用编辑器<script id="editor" type=...
2019-10-28 11:22:51 112
原创 jsp四大作用域
四大作用域Web应用中,JSP创建的对象有一定的生命周期,也有可能被其他组件或者对象访问。对象的声明周期和可访问性称为作用域。四种范围对象作用域从小到大顺序如下:pageContext----request----session----application。(1)pageContext:页面域页面作用域仅限于当前页面对象,可以近似于理解为java的this对象,离开当前JSP页面(无论是r...
2019-10-20 16:13:37 361
原创 Cookie与Session区别和用法
flask中cookie和session介绍一、cookie:在网站中,http请求是无状态的,也就是说即使第一次和服务器连接后并且登陆成功后,第二次请求服务器依然不能知道当前请求用户是哪个用户。cookie的出现就是为了解决这个问题,第一次登录服务器后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求时,就会自动把上次请求存储的cookie数据自动的携带...
2019-10-18 10:52:22 160
原创 get与post区别
GET与POST的区别这个问题因为在很多面试题都出现过,所以上网搜索答案,可以发现一大堆,大多数答案看起来都大同小异,但没有一个标准的答案,都是各自对GET与POST的理解,因此,我也根据自己的理解,说明GET与POST的异同。 GET与POST都是HTTP协议(HTTP协议详解)中的请求方式,而HTTP是基于TCP/IP协议进行数据传输,所以从本质上这两种请求方式并无区别,但是,如果HT...
2019-10-09 21:39:21 91
原创 java 如何使用@test
import org.junit.Test;public class TestMethods {@Testpublic void test() {System.out.println(“hello world”);}}1:首先需要导入import org.junit.test这个jar包,@Test注解要写在你要测试的方法上面2:然后点击–运行方式,再点击Junit测试,就可以了。...
2019-09-06 19:19:55 13025
原创 Before与After区别
Before与After区别:before:(insert、update)可以对new进行修改,after不能对new进行修改,两者都不能修改old数据。对于INSERT语句, 只有NEW是合法的;对于DELETE语句,只有OLD才合法;对于UPDATE语句,NEW、OLD可以同时使用。after—是在记录操纵之后触发,是先完成数据的增删改,再触发,触发的语句晚于监视的增删改操作,无法影...
2019-08-22 14:38:30 1056
原创 TCP与UDP区别
OSI和TCP/IP模型在传输层定义两种传输协议:TCP(传输控制协议)和UDP(y用户数据报协议)。UDP:UDP与TCP的主要区别在于UDP不一定提供可靠的数据传输。事实上,该协议不能保证数据准确无误的到达目的地。UDP在许多方面非常有效。当某个程序的目标是尽快的传输尽可能多的信息时,可使用UDP。ICQ短消息使用UDP协议发送消息。许多程序将适用单独的TCP连接和单独的UDP连接。重...
2019-08-16 16:31:50 88
原创 volatile和synchronized的区别
1.volatile的本质是高速jvm当前变量在寄存器中的值是不确定的,需要从主内存中读取;synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。2.volatile仅能使用在变量级别;sychronized则可以使用在变量、方法、和类上。3.volatile仅能实现变量的修改可见性,不能保证原子性;而sychronized则可以保证变量的修改可见性和原子性。...
2019-08-15 19:04:55 137
原创 sleep与wait
sleepThread类的静态方法。让当前线程休眠指定时间。休眠时间的准确性依赖于系统时钟和CPU调度机制。不释放已获取的锁资源,如果sleep方法在同步上下文中调用,那么其他线程是无法进入到当前同步块或者同步方法中的。可通过调用interrupt()方法来唤醒休眠线程。waitObejct的方法。让当前线程进入等待状态,当别的其他线程调用notify()或者notifyAll()...
2019-08-12 19:11:35 93
原创 线程的一生
当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、**阻塞(Blocked)和死亡(Dead)**5种状态。尤其是当线程启动以后,它不可能一直"霸占"着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换新建状态,当程序使用new关...
2019-08-06 15:55:32 208
原创 Thread和Runnable区别
1、Runnable适合于多个相同程序代码线程去处理统一资源的情况,把虚拟的cpu(线程)同程序的代码,数据有效分离,较好体现面向对象的编程的思想2、Runnable可以避免由于java的单继承机制带来的局限。可以再继承其他类的同时,还能实现多线程的功能。3、Runnable能增加程序的健壮性。代码能够被多个线程共享。...
2019-08-02 18:35:58 115
原创 进程和线程的区别
1、进程和线程的区别?解析:(1)进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元 (2)同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进行至少包括一个线程。 (3)进程...
2019-08-02 16:49:38 75
原创 【java】记一次io输出流的DEBUG
这次的Bug真的让我头大,话不多说,先上让我遇到问题的题目:(Data 流)利用Data 流,完成下面操作:1)判断当前目录下是否存在一个“test.dat”的文件,如果该文件不存在,则往该文件中写入一个long 类型的数值:10000L2)如果该文件存在,则从该文件中读出数值,并把该数值加1 之后,再存回文件中。本来我是刚学习完IO流不过关于Data流还不了解,不过我自己也事先看一了遍...
2019-07-11 19:47:06 472
原创 递归遍历子目录
用到的方法方法名方法作用今天正在学习IO流,首先利用File文件的listFiles()方法获取File数组,然后foreach遍历打印;代码如下: String pathname = "e:" + File.separator + "a"; File file = new File(pathname); File[] fileArr = fil...
2019-07-09 15:41:26 249
原创 java设计模式之单例模式
单例模式所谓的单例设计指的是一个类只允许产生一个实例化对象。最好理解的一种设计模式,分为懒汉式和饿汉式。饿汉式:构造方法私有化,外部无法产生新的实例化对象,只能通过static方法取得实例化对象class Singleton {private static Singleton instance = new Singleton();private Singleton() {}p...
2019-07-08 15:43:09 88
原创 break continue return 区别
1)break 直接跳出当前的循环,从当前循环外面开始执行,忽略循环体中任何其他语句和循环条件测试。他只能跳出一层循环,如果你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐步使用break来跳出.public class Main {public static void main(String[] args) { for(int i=0;i<10;i++) { if(i=...
2019-07-01 13:55:14 91
原创 Map集合基础知识
Map一、概述Map和Collection没有直接关系Collection:看着是“单列”集合ListArrayListLinkedListVectorSetHashSetTreeSetMap:将键映射到值的对象。看着是“双列”集合二、基本使用Map:不允许键重复,但值可以重复,如果键重复,值会覆盖HashMap :效率高,线程不安全允许键和值为null,前提是key...
2019-06-25 13:27:21 225
原创 手动实现ArrayList
package myArrayList;import java.util.Arrays;public class MyArrayList {private Object[] elementData;// 属性 数组private int size;// 属性 大小 表示数组中存储数据的多少 不是表示数组的长度;public MyArrayList() { elementData = n...
2019-06-18 12:51:29 76
原创 正则表达式对网址排序
代码:import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 本文基本思想是冒泡排序; * 相比数字数组的冒牌排序,不同的只是比较大小的方式; * 利用group()方法获取每一段数字然后再比较; * */public class IpSort { public static void main(S...
2019-05-28 15:25:57 242
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人