
Java
黎先生你好
这个作者很懒,什么都没留下…
展开
-
深入Java底层之HashMap
HashMap的基本操作map.put("Chinese", 1);map.put("Math", 2);map.put("Englist", 3);map.put("Chemistry", 4);map.put("Biology", 5);for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue());原创 2020-05-27 08:23:41 · 459 阅读 · 0 评论 -
虚拟机字节码执行引擎
运行时栈帧结构栈帧stack frame是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法调用从开始执行至执行完成的过程,都对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。局部变量表是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量。在Java程序编译为Cla...原创 2020-04-17 02:29:30 · 409 阅读 · 0 评论 -
JVM类加载机制
JVM把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这既是虚拟机的类加载机制。与那些在编译时需要进行连接工作的语言(如C,C++)不同,Java语言里,类型的加载、连接和初始化都是在程序的运行期间完成的,Java里天生可以动态扩展的语言特性就是依赖运行期间动态加载和动态链接这个特点实现的。类加载的时机类从被加载到虚拟...原创 2020-04-16 01:05:58 · 255 阅读 · 0 评论 -
JVM Class类文件结构
Class类文件结构任何一个Class文件都对应着唯一一个类或接口的定义信息,但反过来说,类或者接口并不一定都得定义在文件里,譬如类或接口也可以通过类加载器直接生成。Class文件是一组以8位字节为基础单位的二进制流,整个数据项目严格紧凑的排列在Class文件之中,中间没有添加任何分隔符,这使得Class文件存储的内容几乎都是程序运行必要的数据,没有空隙存在。当遇到需要占用8位字节以上的空间的...原创 2020-04-15 23:25:56 · 298 阅读 · 0 评论 -
Java Synchronized方法和方法块的理解
synchronized 关键字,它包括两种用法:synchronized 方法synchronized 块。synchronized 方法通过在方法声明中加入 synchronized关键字来声明 synchronized 方法。如:public synchronized void accessVal(int newVal);synchronized 方法控制对类成员变量的访问...原创 2020-04-15 09:34:08 · 537 阅读 · 0 评论 -
源码角度分析Java ArrayList为什么是线程不安全的
面试中一个经常被问到的问题就是:ArrayList是否是线程安全的?答案当然很简单,无论是背来的还是自己看过源码,我们都知道它是线程不安全的。那么它为什么是线程不安全的呢?它线程不安全的具体体现又是怎样的呢?我们从源码的角度来看下。public class ArrayList<E> extends AbstractList<E> implements ...原创 2020-04-15 07:59:49 · 342 阅读 · 0 评论 -
JVM性能监控与故障处理工具
文章目录jps:虚拟机进程状况工具jstat: 虚拟机统计信息监视工具jinfo:java配置信息工具jmap:java内存映射工具jhap:虚拟机堆转储快照分析工具jstack:Java堆栈跟踪工具HSDIS:JIT生成代码反汇编JDK可视化工具:JConsoleJDK可视化工具2:VisualVM名称主要作用jpsJVM Process Status Tool,心事指定...原创 2020-04-15 01:57:54 · 268 阅读 · 0 评论 -
JVM垃圾收集器
文章目录判断对象是否存活引用计数法可达性分析再谈引用垃圾收集算法标记清除算法复制算法标记整理/标记压缩算法分代收集算法垃圾收集器内存分配与回收策略参考判断对象是否存活垃圾收集器在回收堆内存的时候-,需要先判断哪些对象还存活,哪些对象已经“死去(不能再被任何途经使用的对象)”引用计数法给对象添加一个引用计数器,每当有一个地方引用它时,计数器的值就+1。当引用失效时,计数器值就-1.当计数器的...原创 2020-04-14 21:47:27 · 245 阅读 · 0 评论 -
Java 并发JUC
java.util.concurrentjava.util.concurrent.atomicjava.util.concurrent.locks原创 2020-04-13 08:17:55 · 289 阅读 · 0 评论 -
详解Java反射机制
Class类JVM为每个加载的class及interface创建了对应的Class实例来保存class及interface的所有信息;获取一个class对应的Class实例后,就可以获取该class的所有信息;通过Class实例获取class信息的方法称为反射(Reflection);JVM总是动态加载class,可以在运行期根据条件来控制加载class。/*如何获取一个class的C...转载 2020-04-13 05:22:12 · 268 阅读 · 1 评论 -
Java内存模型JMM
JMM只是一种概念,定义了多线程下如何访问内存。程序应当保证以下特性可见性原子性有序性class Mynum{ public int i = 1;}public class Test { public static void main(String[] args) throws InterruptedException { Mynum myn...原创 2020-04-12 21:52:58 · 207 阅读 · 0 评论 -
JVM字节码详解
Java字节码是Java虚拟机所使用的指令集。在解释执行过程中,每当为Java方法分配栈桢时,Java虚拟机往往需要开辟一块额外的空间作为操作数栈,来存放计算的操作数以及返回结果。具体来说便是:执行每一条指令之前,Java虚拟机要求该指令的操作数已被压入操作数栈中。在执行指令时,Java虚拟机会将该指令所需的操作数弹出,并且将指令的结果重新压入栈中。下面我们来看个例子:public clas...原创 2020-04-12 09:12:34 · 714 阅读 · 1 评论 -
Java操作栈
实例public class OperationStack { public static void main(String[] args) { int i = 1; i = i++; int j = i++; int k = i + ++i* i++; System.out.println("i=" + i + ...原创 2020-04-11 09:42:38 · 230 阅读 · 0 评论 -
Java局部变量和成员变量
实例分析public class Test { static int s; int i; int j; { int i = 1; i++; j++; s++; } public void func(int j){ i++; j++; s+...原创 2020-04-11 07:33:24 · 233 阅读 · 0 评论 -
Java方法的参数传递机制
先来看个例子,分析一下输出结果。package com.jian8.basic;import java.util.Arrays;public class test { public static void main(String[] args){ int i = 1; String str = "hello"; Integer nu...原创 2020-04-11 05:22:37 · 293 阅读 · 0 评论 -
浅析JVM
JVM架构图1位JVM的架构图。下面的各个章节将以此为基础分别叙述。图1: JVM架构图重点是运行时数据区(Runtime Date Area),RDA包括:方法区:存放类的描述信息,也就是说放模板的信息Java栈本地方法栈堆程序计数器Class Loader负责加载class文件,class文件开头有特定的文件标示(不只是看文件扩展名)。将class文件字节码加载到内存...原创 2020-04-10 01:50:32 · 512 阅读 · 0 评论 -
java web如何防止sql注入
只要按照规范来写代码,就不会存在sql注入的风险。以下是好的和坏的代码示例JDBC// good example// The user we want to find, usually passed into the method.String email = "user@email.com";// Connect to the database.Connection conn = ...原创 2019-12-27 02:04:07 · 708 阅读 · 1 评论 -
第七届蓝桥杯省赛java本科A组试题及解答
煤球数目有一堆煤球,堆成三角棱锥形。具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), …. 如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。2生日蜡烛某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。现在算起原创 2018-03-30 17:33:07 · 2012 阅读 · 0 评论 -
第五届蓝桥杯java本科A组省赛试题及答案
1. 标题:猜年龄问题: 小明带两个妹妹参加元宵灯会。别人问她们多大了,她们调皮地说:“我们俩的年龄之积是年龄之和的6倍”。小明又补充说:“她们可不是双胞胎,年龄差肯定也不超过8岁啊。” 请你写出:小明的较小的妹妹的年龄。注意: 只写一个人的年龄数字,请通过浏览器提交答案。不要书写任何多余的内容。public class Main{ public static void main(St原创 2018-03-26 22:18:00 · 743 阅读 · 0 评论 -
简单理解递归
递归算法概念是函数调用自己来实现的某种功能,按以下方法理解递归你会恍然大悟。1.递归是高中数学中的数列那一章讲的内容。数列这章讲了一个概念叫递推公式:如果已知数列的第1项(或前几项),且从第二项(或某一项)开始的任一An与它的前一项An-1(或前几项)间的关系可以用一个公式来表示,那么这个公式就叫递推公式,递推公式是给出数列的一种方法。2.例如斐波那契数列的递推公式就是:An=An-1+An-2(n原创 2018-03-26 22:27:46 · 1668 阅读 · 0 评论 -
记中国工商银行(后台开发)的一次实习面试
面试过程是两人一起面,对面是两个面试官。 首先是普通的自我介绍,时间限制在了一分钟。我首先简单的介绍了自己学校专业以及年级。接着谈了一下自己是本身专业是偏向于硬件开发的,但是大学接触到web开发后很感兴趣,开始自学web开发,一开始主要是负责前端开发,但是后来发现不够用就开始学习后端开发。大二的时候,做了几个学校的小项目。这个在简历里写了。然后就到这了,第一次面试很仓促,自己完全...原创 2018-06-10 19:46:25 · 4397 阅读 · 0 评论 -
如何学习java
Java is application layer programming language and is not very difficult to learn. It does not require any prior programming experince to learn java coding. Learning Java can be really easy if you alr...翻译 2018-07-19 20:36:37 · 258 阅读 · 0 评论 -
idea新建servlet项目
原创 2018-09-27 00:08:10 · 362 阅读 · 0 评论 -
使用idea maven创建java web-app项目
修改idea安装目录中的maven3 setting.xml文件,添加阿里mirror如下<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>htt...原创 2019-06-13 14:28:20 · 756 阅读 · 0 评论 -
递归实现排列组合问题
在做递归问题时,要保证对递归跳跃的信任,继而对相应的问题寻找其递归实现(1)组合:先从原始数组中选择一个,再从剩下的集合中选择m-1个;而后,再从剩下的集合中挑选m个元素。/*组合代码(eg:5选2)*/int a[5]={1,2,3,4,5};//原始数组int b[2];//挑选的结果const int need=2;//需要选择的个数void combine(int start,int原创 2018-03-31 12:17:20 · 2368 阅读 · 0 评论