- 博客(37)
- 收藏
- 关注
原创 JDK1.8关于运行时常量池, 字符串常量池的要点
网上关于jdk 1.8的各种实验, 结论鱼龙混杂 , 很多都相矛盾,网上有的实验也被后人测试出了不同的结果很多都分辨不了真假, 这里记录一下网络上正确的结论, 欢迎指正!首先自行区分运行时常量池与Class文件常量池(静态常量池)的概念, JVM内存模型 ,方法区与永久代的区别, 有些在我的其他博客有介绍, 连接在文尾在JDK1.7之前运行时常量池逻辑包含字符串常量池存放在...
2018-11-29 22:53:13 28646 45
原创 JVM 1.8 永久代---元空间 的变动
介绍JVM的内存模型的博客:https://blog.csdn.net/q5706503/article/details/84614158JDK8 HotSpot JVM 将移除永久区,使用本地内存来存储类元数据信息并称之为:元空间(Metaspace)以下是JVM内存模型中方法区的变动1.新生代:Eden+From Survivor+To Survivor2.老年代:OldG...
2018-11-29 19:07:25 11010 4
原创 JVM内存区域划分
Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程: 首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加...
2018-11-29 11:06:20 2896
原创 java join()基本用法与说明解释
join()方法的作用,是等待这个线程结束;也就是说,t.join()方法阻塞调用此方法的线程(calling thread)进入 TIMED_WAITING 状态,直到线程t完成,此线程再继续;通常用于在main()主线程内,等待其它线程完成再结束main()主线程。举个例子: public class JoinTester01 implements Runnable { ...
2018-11-28 22:03:30 60256 11
原创 Java多线程notify/notifyAll唤醒的是谁
涉及JAVA线程的状态问题, 不清楚的可以参考我的另一篇:https://blog.csdn.net/q5706503/article/details/84350887我们知道notify是Object的本地final方法,无法被重写, 用来唤醒线程, 那么该怎么用, 唤醒的又是谁呢?用一句话做答复 : notify唤醒的是其所在锁所阻塞的线程不理解看下面的分析和例子:wait...
2018-11-28 20:51:45 9366 9
原创 Direct Memory堆外内存
JVM可以使用的内存分外2种:堆内存和堆外内存. 堆内存完全由JVM负责分配和释放,如果程序没有缺陷代码导致内存泄露,那么就不会遇到java.lang.OutOfMemoryError这个错误。 使用堆外内存,就是为了能直接分配和释放内存,提高效率。JDK5.0之后,代码中能直接操作本地内存的方式有2种:使用未公开的Unsafe和NIO包下ByteBuffer。作为JAVA...
2018-11-28 19:44:00 6538
原创 JAVA中String.intern的理解
intern() 方法返回字符串对象的规范化表示形式。它遵循以下规则:对于任意两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。What---String.intern方法究竟做了什么:Returns a canonical representation for the string obje...
2018-11-28 17:53:15 2502 2
原创 CAS算法简介
CAS是什么?CAS是英文单词CompareAndSwap的缩写,中文意思是:比较并替换。CAS需要有3个操作数:内存地址V,旧的预期值A,即将要更新的目标值B。CAS指令执行时,当且仅当内存地址V的值与预期值A相等时,将内存地址V的值修改为B,否则就什么都不做。整个比较并替换的操作是一个原子操作。CAS是乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新...
2018-11-28 16:14:24 15265 7
原创 JAVA中 try - finally 与return的爱恨情仇
首先看finally :无论try语句发生了什么,无论抛出异常还是正常执行。finally语句都会执行。先看一个现象: public class TestMain { public static void main(String[] args) { System.out.println( test() ); } public static String test() ...
2018-11-26 15:31:40 8838 2
原创 JAVA线程的6种状态及切换
Java语言定义了6中状态,而同一时刻,线程有且仅有其中的一种状态。要获取Java线程的状态可以使用 java.lang.Thread类中定义的 getState()方法,获取当前线程的状态就可以使用Thread.currentThread().getState()来获取。该方法返回的类型是一个枚举类型,是Thread内部的一个枚举,全称为“java.lang.Thread.State”,这个...
2018-11-23 00:49:24 1113
原创 JAVA中runnable和thread的区别
Runnable 是接口。Thread 是类,且实现了Runnable接口。用法:一是写一个类继承自Thread类,然后重写里面的run方法,用start方法启动线程二是写一个类实现Runnable接口,实现里面的run方法,用new Thread(Runnable target).start()方法来启动这两种方法都必须实现RUN方法,这样线程起动的时候,线程管理器好去调用你...
2018-11-22 23:26:52 387
原创 JAVA一个文件写多个类 ( 同级类 ) 规则和注意点
在一个.java文件中可以有多个同级类, 其修饰符只可以public/abstract/final/和无修饰符 public修饰的只能有一个,且必须要与文件名相同;因为jvm虚拟机为了提高查找类的速度,使用import语句导入的时候,只会导入对应空间的文件名所对应的class文件,而public文件是大家都要使用的,因此直接导入这个类名对应的class文件即可。 若没有public...
2018-11-22 22:11:12 20627 1
原创 GET与POST区别
GET和POST是HTTP请求的两种最基本常用的方法最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。GET - 从指定的资源请求数据。 POST - 向指定的资源提交要被处理的数据不过这只是协定,并不是说提交请求就必须用POST, 请求数据必须用GET, 咱们慢慢分析GET 方法查询字符串(key-value键值对)是在 GET 请求的...
2018-11-21 22:06:03 2010
原创 Object类的12个方法(3个为wait重载)
Object类是所有类的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类。1.clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变...
2018-11-21 20:21:06 934
原创 dom4j实现对xml简单的增删改查
xml留了个结课作业: 后台用xml文件作为存储做个迷你系统实现增删改查的功能, 在此记录一下先得引入dom4j的jar包放在项目的WEB-INF-->lib目录下先新建一个读取器, 读取你想操作的xml文件(我这里写的绝对路径)//读取XML文件,获得document对象SAXReader reader = new SAXReader();Document docu...
2018-11-21 10:27:20 628
原创 JAVA内部类详解
广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类成员内部类在成员内部类中要注意两点,第一:成员内部类中不能存在任何static的变量和方法;第二:成员内部类是依附于外围类的,所以只有先创建了外围类才能够创建内部类。public class Test { public static void main(String[] args) { ...
2018-11-20 00:48:34 1983
原创 什么是线程安全
JAVA中线程安全与非安全是对方法或语句的常见描述, 那么什么叫线程安全呢?JAVA线程安全就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对其进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问线程安全: 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的...
2018-11-18 23:09:17 157
原创 什么是Java字节码?
什么是Java字节码?它是程序的一种低级表示,可以运行于Java虚拟机上。将程序抽象成字节码可以保证Java程序在各种设备上的运行Java号称是一门“一次编译到处运行”的语言,从我们写的java文件到通过编译器编译成java字节码文件(.class文件),这个过程是java编译过程;而我们的java虚拟机执行的就是字节码文件。不论该字节码文件来自何方,由哪种编译器编译,甚至是手写字节码文件...
2018-11-18 22:10:14 12992
原创 JAVA中Forward和Redirect的区别
Forward和Redirect代表了两种请求转发方式:直接转发和间接转发。用户向服务器发送了一次HTTP请求,这个请求可能被直接请求转发(Forward)和间接请求转发(Redirect),两种转发方式有何区别呢?直接转发就相当于:“A找B借钱,B没有,B去找C借,并告诉C把钱给A”间接转发就相当于:"A找B借钱,B没有,告诉A去找C借" 直接转发方式(Forward)客...
2018-11-18 19:01:41 1958
原创 MyBatis插入时返回主键值
前几天做项目时需要插入商品后得到数据库中的主键ID值, 于是查了一些资料, 在此记录 添加记录能够返回主键的关键点在于需要在<insert>标签中添加以下三个属性<insert useGeneratedKeys="true" keyProperty="id" keyColumn="id"></insert>useGeneratedKeys:表..
2018-11-18 15:59:11 2614
原创 Mybatis中resultType与resultMap的区别
MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性,而当我们提供的返回类型是resultMap的时候,将数据库中列数据复制到对象的相应属性上,可以用于复制查询,两者不能同时用。resultType当使用resultType做返回结果类...
2018-11-18 15:35:32 549
原创 ArrayList的底层实现与LinkedList区别
ArrayList 是List<T> 下,java的自实现类之一,我们可以将其看作是能够自动增长容量的数组。 属于线程非安全的类型,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArrayList类,还可以考虑使用Vector这个类型...
2018-11-18 13:54:53 2325 1
原创 form表单enctype="multipart/form-data" 时request获取不到值的框架解决
问题描述:当我们想在页面上传文件(图片)到服务器时 , 一般会选用form 表单提交, form 的 enctype 属性值为"multipart/form-data"(多媒体上传) 这样来上传一个文件/图片时没有问题, 后端可以接收到一个MultipartFile类型的值所有的值 都是以二进制进行传递的,问题是我们如果传文件时同时有其他input也在form表单中如...
2018-11-17 22:10:20 14215 2
转载 彻底搞懂hashCode与equals的作用与区别
文章为转载, 原文地址:https://blog.csdn.net/lijiecao0226/article/details/24609559 最近去面试了几家公司,被问到hashCode的作用,虽然回答出来了,但是自己还是对hashCode和equals的作用一知半解的,所以决定把它们研究一下。以前写程序一直没有注意hashCode的作用,一般都是覆盖了equal...
2018-11-14 23:57:29 3349 1
原创 Java对象数组按照其属性排序的方法
问题描述:开发时我们希望用一个类表示某种物品, 用其域来描述物品的特性, 当我们有一组物品也就是一个对象数组时,我们会希望这组物品按照它的某个属性来排序也就是需要对象数组按照其属性排序一 类定义时实现Comparable接口,定义自身的比较算法。要排序就要有比较的方法, 因为是自定义的类, 系统不知道怎么做两个自定义类的比较,所以我们要自己在类内写两个类的比较的方法,也就是...
2018-11-14 23:17:04 9001
原创 SSM框架处理请求原理
该图描述的是一次请求的处理过程, 学识有限, 有错误请指出!DNS负责域名的解析, 比如访问www.baidu.com 先找到DNS获取相应的服务器IP和端口, 请求消息到达端口以后由TOMCAT主动去询问自己占用的端口是否由请求发来, 如果有请求TOMCAT交给对应的项目处理 该项目springmvc的DispatcherServlet拦截请求并查询一个或多个HandlerMapp...
2018-11-14 23:14:18 1752
原创 JAVA 128陷阱
public static void main(String[] args) { Integer a = 127; Integer b = 127; Integer c = 128; Integer d = 128; System.out.println(a==b); System.out.println(c==d); }...
2018-11-14 22:25:12 383
原创 Java抽象类与接口的区别
接口是对动作的抽象,抽象类是对事物本质的抽象。抽象类表示的是对象的本质是什么,表示共性。接口表示的对象能做什么。比如,猫类,狗类,他们的抽象类是动物类。猫可以进食,狗也可以进食,可以把 “ 进食 ” 定义成一个接口,然后猫类, 狗类去实现它.在JAVA中,一个类只能继承一个类(抽象类)(正如猫不可能同时是动物类和非动物类),但是可以实现多个接口(进食接口、移动接口)。抽...
2018-11-14 22:08:35 199
原创 pom.xml中<packaging>war</packaging>报错
第一次搭框架, 刚写pom.xml的时候<packaging>war</packaging>就报错,最后发现是build里的一个资源找不到 (复制别人的样例, 这个文件我还没有建立)我这个是数据库连接的配置文档,补上以后就不报错了供大家参考...
2018-11-08 16:10:37 2038 2
原创 JavaScript返回上一页几种方法
window.history.go(-1); //返回上一页window.history.back(); //返回上一页//如果要强行刷新的话就是:window.history.back();//刷新当前页 window.location.reload(); window.location.go(-1); //刷新上一页 ...
2018-11-07 00:51:06 212
原创 网络支付加密思路
问题引出在C/S模式中, 客户端想要支付就要通过网络向服务器端发送请求,那么问题来了, 在通过网络传输过程中的数据是可以进行拦截和修改伪造的,也就说黑客可以拦截通过某个路由的所有数据,比如你的支付申请, 任意修改后再发送到服务端, 服务端收到的是你的支付申请, 你购买了1双鞋, 被黑客修改成了100000双鞋,显而易见支付, 支付端是要验证判断请求是否正确, 是否被修改,所...
2018-11-07 00:45:23 2387
原创 Cannot switch on a value of type String for source level below 1.7. Only
switch语句的判断条件可以接受int,byte,char,short,不能接受其他类型只有JDK版本1.7以上才可以支持String你可能会说我的jdk是1.7以上啊,这里说的版本是java解释器的版本,eclipse修改办法:项目右键 > project > properties > java compiler > compiler> c...
2018-11-05 11:15:41 3914 1
原创 Servlet同时接收form提交的文件和文本
这里说的是后端Servlet同时接收 JSP通过form表单提交的 文件和文本内容如何上传文件并接受请自行百度, 网络上大多介绍怎么接文件或多个文件,这里介绍对form提交的文件和非文件内容 同时接收处理:核心内容:(后面是具体的POST和JSP) List<FileItem> formItems = upload.parseRequest...
2018-11-04 16:31:57 2481 2
原创 response弹框后再跳转
后端回复前端先弹出提示框用户点击确认后跳转另一个页面response.setHeader("Content-type", "text/html;charset=UTF-8");response.setCharacterEncoding("UTF-8");PrintWriter out=response.getWriter();out.print("<script>aler...
2018-11-04 16:17:19 1537 1
原创 HttpServletResponse中文乱码问题
response返回有两种:字节流outputstream 字符流printwrite。这里示例改成UTF-8编码, 大家可以根据自己需要修改成想要的字节流 //让浏览器用utf-8来解析返回的数据 response.setHeader("Content-type", "text/html;charset=UTF-8"); Output...
2018-11-04 16:04:44 1589
原创 linux下安装配置tomcat
先确定自己的linux是32位还是64位, 下载相应版本的tomcat压缩包并传输到linux系统上, 不会从winsdows传文件到linux的参考另一博客:https://blog.csdn.net/q5706503/article/details/83550498TOMCAT需要JDK环境, 没装的参考装JDK教程:https://blog.csdn.net/q5706503...
2018-11-01 21:23:04 246
原创 linux下安装配置mysql
首先检查自己的linux系统是32位还是64位,到官网下载相应版本的mysql, 并将.tar.gz压缩包传到/usr 目录下不会传的同学, 看一下另一篇讲解怎么从windows给linux传文件:https://mp.csdn.net/postedit/83550498传完不在/usr文件夹,百度一下搜索指令,和移动文件指令, 放到/usr下再继续下面部分准备系统帐户gro...
2018-11-01 09:08:05 432
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人