腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
lgp20151222
专栏成员
举报
272
文章
618393
阅读量
26
订阅数
订阅专栏
申请加入专栏
全部文章(272)
其他(111)
java(38)
spring(22)
xml(19)
云数据库 SQL Server(18)
数据库(15)
git(13)
人工智能(13)
https(10)
http(9)
windows(9)
html(8)
sql(8)
maven(8)
linux(8)
容器镜像服务(8)
编程算法(8)
servlet(7)
云数据库 Redis(7)
存储(7)
jsp(6)
json(6)
容器(6)
mybatis(6)
apache(5)
缓存(5)
jvm(5)
ide(4)
eclipse(4)
struts(4)
go(3)
mvc(3)
github(3)
tomcat(3)
网络安全(3)
jdk(3)
ssh(3)
面向对象编程(3)
dns(3)
hashmap(3)
tcp/ip(3)
bash(2)
ajax(2)
access(2)
打包(2)
svn(2)
api(2)
bash 指令(2)
开源(2)
zookeeper(2)
rpc(2)
jenkins(2)
微信(2)
安全(2)
数据结构(2)
root(2)
php(1)
javascript(1)
bootstrap(1)
vue.js(1)
jquery(1)
android(1)
oracle(1)
postgresql(1)
ubuntu(1)
负载均衡缓存(1)
容器服务(1)
文件存储(1)
腾讯云qapm(1)
mongodb(1)
网站(1)
企业(1)
erp(1)
jdbc(1)
决策树(1)
unity(1)
npm(1)
grep(1)
kotlin(1)
rabbitmq(1)
gradle(1)
数据处理(1)
腾讯云开发者社区(1)
default(1)
mysql(1)
ps(1)
push(1)
return(1)
service(1)
sh(1)
version(1)
yaml(1)
编程(1)
部署(1)
翻译(1)
服务(1)
镜像(1)
框架(1)
连接(1)
配置(1)
源码分析(1)
注解(1)
搜索文章
搜索
搜索
关闭
Java虚拟机详解----JVM常见问题总结
java
jvm
http
html
编程算法
文章来源:http://www.cnblogs.com/smyhvae/p/4810168.html
ydymz
2018-11-09
472
0
OracleJDK与OpenJDK的区别和联系
oracle
jdk
java
开源
jvm
OpenJDK原是SunMicrosystems公司为Java平台构建的Java开发环境(JDK)的开源版本,完全自由,开放源码。 OracleJDK里面包含的JVM是HotSpotVM,HotSpot VM只有非常非常少量的功能没有在OpenJDK里,那部分在Oracle内部的代码库里。
ydymz
2018-09-10
1.1K
0
Java引用外部字体(路径引用)的一些坑
java
jvm
windows
linux
然后,一路踩了jvm关于字体的坑,重点是,java的报错很随意,甚至不报错,建议直接看最后面.
ydymz
2018-09-10
2.6K
0
kotlin查看编译后的Java代码
kotlin
java
jvm
android
java学一下kotlin,由于用的是同样的jvm,那就说明他们的字节码文件应该是一样的,那么,如果我们能看到编译后的文件,那么学的更快了。
ydymz
2018-09-10
1.5K
0
Class.forName()用法详解
jvm
java
主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类, 也就是说JVM会执行该类的静态代码段 下面,通过解答以下三个问题的来详细讲解下Class.forName()的用法。 一.什么时候用Class.forName()? 先来个热身,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?你第一想到的肯定是new,但是注意一点: A a = (A)Class.forName(“pacage.A”).newInstance(); 这和你 A a = new A(); 是一样的效果。 现在言归正传。 动态加载和创建Class 对象,比如想根据用户输入的字符串来创建对象时需要用到: String str = “用户输入的字符串” ; Class t = Class.forName(str); t.newInstance(); 在初始化一个类,生成一个实例的时候,newInstance()方法和new关键字除了一个是方法,一个是关键字外,最主要有什么区别?它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。那么为什么会有两种创建对象方式?这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。 Java中工厂模式经常使用newInstance()方法来创建对象,因此从为什么要使用工厂模式上可以找到具体答案。 例如: class c = Class.forName(“Example”); factory = (ExampleInterface)c.newInstance(); 其中ExampleInterface是Example的接口,可以写成如下形式: String className = “Example”; class c = Class.forName(className); factory = (ExampleInterface)c.newInstance(); 进一步可以写成如下形式: String className = readfromXMlConfig;//从xml 配置文件中获得字符串 class c = Class.forName(className); factory = (ExampleInterface)c.newInstance(); 上面代码已经不存在Example的类名称,它的优点是,无论Example类怎么变化,上述代码不变,甚至可以更换Example的兄弟类Example2 , Example3 , Example4……,只要他们继承ExampleInterface就可以。 从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证: 1、这个类已经加载; 2、这个类已经连接了。 而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载 java API的那个加载器。 现在可以看出,newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。 这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。 二.new 和Class.forName()有什么区别? 其实上面已经说到一些了,这里来做个总结: 首先,newInstance( )是一个方法,而new是一个关键字; 其次,Class下的newInstance()的使用有局限,因为它生成对象只能调用无参的构造函数,而使用 new关键字生成对象没有这个限制。 简言之: newInstance(): 弱类型,低效率,只能调用无参构造。 new: 强类型,相对高效,能调用任何public构造。 Class.forName(“”)返回的是类。 Class.forName(“”).newInstance()返回的是object 。 三.为什么在加载数据库驱动包的时候有用的是Class.forName( ),却没有调用newInstance( )? 在Java开发特别是数据库开发中,经常会用到Class.forName( )这个方法。 通过查询Java Documentation我们会发现使用Class.forName( )静态方法的目的是为了动态加载类。 通常编码过程中,在加载完成后,一般还要调用Class下的newInstance( )静态方法来实例化对象以便操作。因此,单单使用Class.forName( )是动态加载类是没有用的,其最终目的是为了实例化对象。 有数据库开发经验朋友会发现,为什么在我们加载数据库驱动包的时候有的却没有调用newIn
ydymz
2018-09-10
1.4K
0
没有更多了
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
立即查看
Python精品学习库
代码在线跑,知识轻松学
立即查看
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
立即体验
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
立即查看
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档