山东青岛电脑学校 专业软件工程师培训,软件人才就业实训中心0532-85025005

8张图理解Java

 

一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选。如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟。

1、字符串不变性

下面这张图展示了这段代码做了什么
String s = "abcd";
s = s.concat("ef");


2、equals()方法、hashCode()方法的区别

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 16

JVM内存区域划分

 

学习Java不可避免的要学习Java虚拟机,也就是JVM,Java虚拟机规范里面规定了程序运行期间会使用到的运行时数据区,这也是JVM的内存区域划分的模型,应该可以这么理解吧。

这其中有一些是随着虚拟机的启动和退出而创建和销毁的,这些区域是线程共享的,另外有一些是跟各个线程绑定的,随着线程的开始和结束而创建和销毁,我们可以称这些区域是线程私有的。

根据《Java虚拟机规范Java SE 7版》和《Java虚拟机规范Java SE 8版》的规定,我们可以划分出如下几个运行时数据区,如下图所示:

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 17

在线学习Java免费资源推荐

 

你想学习Java吗?来对地方了!这篇文章将会介绍很多高质量的免费资源,包括网页、论坛、电子书和速查表。

Java是一种面向对象的编程语言,拥有独立、多线程、安全、动态和健壮的特点。归功于其多功能的特点,Java已经成为最流行的编程语言之一,可以让你开发出健壮的应用程序。

Java几乎是所有商务应用程序的核心。它有多种脚本语言和流行的框架,可以开发客户端和服务端。因此,学习Java不仅仅可以提高你的知识储备,也有利于你在事业上的发展。

这篇文章将介绍各种各样的网络资源(不包含必读的Java书籍),你可以借助这些资源进行在线学习。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 10

Top11种怎样成为更优秀的程序员的方法

 

1.实践与犯错误

第一个建议是你应该保持不断练习,代码敲得越多就越高效、犯的错误越多收获得就越多。为什么在你练习时,犯错非常重要?你编的代码越多,你就会意识到你在处理错误、设计、线程处理等情况下犯的错误。你将会从这些错误中学习,这时你的技术将会越来越好。

2.利用网络和书籍自学

显而易见,提高你技术最好的方法是自学技术,去关注你所匮乏的技术。最绝大部分的程序员来说,一个比较好的途径是去阅读来自不同地方的技术文档,比如Google的 website for developers,这里有很多经验丰富的程序员写了很多高质量的引导性文章。 Code academy, Code.org, W3 Schools, 以及 HTML5 Rocks 都是一些很好的学习网站。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 15

Java开发熟手该当心的11个错误

 

生产过程中出现的问题正逐渐得到中层和最高管理层的重视。不管是身为开发人员还是架构师,下列的事项都应该得到你足够的重视以避免陷入未来的尴尬境地。你也可以把它作为排查问题的便签。

1、不在属性文件或XML文件中外化配置属性。比如,没有把批处理使用的线程数设置成可在属性文件中配置。你的批处理程序无论在DEV环境中,还是UAT(用户验收测试)环境中,都可以顺畅无阻地运行,但是一旦部署在PROD 上,把它作为多线程程序处理更大的数据集时,就会抛出IOException,原因可能是JDBC驱动版本不同,也可能是#2中讨论的问题。如果线程数目 可以在属性文件中配置,那么使它成为一个单线程应用程序就变得十分容易了。我们不再需要为了解决问题而反复地部署和测试应用了。这种方法也同样适用于配置 URL、服务器和端口号等。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 18

Java对象初始化顺序

 

最近我发现了一个有趣的问题,这个问题的答案乍一看下骗过了我的眼睛。看一下这三个类:

package com.ds.test;publicclass Upper { String upperString; publicUpper() {  Initializer.initialize(this); }}
package com.ds.test;publicclassLowerextendsUpper { String lowerString = nullpublicLower() {  super();  System.out.println("Upper:  " + upperString);  System.out.println("Lower:  " + lowerString); } publicstaticvoidmain(final String[] args) {  new Lower(); }}
package com.ds.test;publicclassInitializer {staticvoid initialize(final Upper anUpper) {  if (anUpper instanceof Lower) {   Lower lower = (Lower) anUpper;   lower.lowerString = "lowerInited";  }  anUpper.upperString = "upperInited"; }}

运行 Lower 这个类可以得到什么输出?在这个极简的例子中可以更容易地看到整个形势,但是这个情形发生在现实中会有非常多的代码分散一个人的注意力。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 17

Java虚拟机类加载机制

 

看到这个题目,很多人会觉得我写我的java代码,至于类,JVM爱怎么加载就怎么加载,博主有很长一段时间也是这么认为的。随着编程经验的日积月累,越来越感觉到了解虚拟机相关要领的重要性。闲话不多说,老规矩,先来一段代码吊吊胃口。

publicclassSSClass{static    {        System.out.println("SSClass");    }}    publicclassSuperClassextendsSSClass{static    {        System.out.println("SuperClass init!");    }    publicstaticint value = 123;    publicSuperClass()    {        System.out.println("init SuperClass");    }}publicclassSubClassextendsSuperClass{static    {        System.out.println("SubClass init");    }    staticint a;    publicSubClass()    {        System.out.println("init SubClass");    }}publicclassNotInitialization{publicstaticvoidmain(String[] args)    {        System.out.println(SubClass.value);    }}

运行结果:

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 18

HTML5的当下与未来?

 

HTML5技术而今已不再陌生,不管是趋之若鹜,热情拥抱,还是远远张望,保持距离,HTML5都是技术论坛热门的话题,给人的感觉就是酷、新、看上去很美

任何技术都有他的适用范围,HTML5技术是一种被夸大了的万金油,在目前浏览器支持不一,开发工具,第三方类库缺乏的情况下,HTML5无法解决一切问题,但如果限定它的使用范围,HTML5确实可以优雅的解决很多问题

HTML5是什么?

狭义的HTML5

狭义的HTML5指HTML下一个主要的修订版本,是W3C制定的标准,目前还在发展中,在HTML 4.01和XHTML1.0标准基础上,HTML5标准增加和修改了一些标签元素,其中多媒体相关的有<video>, <audio>, <canvas>,同时集成了SVG内容,数据内容的元素有<section>, <article>, <header>, <nav>, <menu>等,还提供了新的API,如2D绘图(Canvas),离线存储(Local Storage),加强版的cookie(WebStorage),拖拽,通讯(WebSockets),浏览历史管理,文件API(上传下载本地存储),位置API(Geolocation)等。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 16

iOS App从点击到启动

 

程序启动之前

从exec()开始

main()函数是整个程序的入口,在程序启动之前,系统会调用exec()函数。在Unix中exec和system的不同在于,system是用shell来调用程序,相当于fork+exec+waitpid,fork 函数创建子进程后通常都会调用 exec 函数来执行一个新程序;而exec是直接让你的程序代替原来的程序运行。

system 是在单独的进程中执行命令,完了还会回到你的程序中。而exec函数是直接在你的进程中执行新的程序,新的程序会把你的程序覆盖,除非调用出错,否则你再也回不到exec后面的代码,也就是当前的程序变成了exec调用的那个程序了。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 19

详解 JavaScript 的类

 

Javascript从当初的一个“弹窗语言”,一步步发展成为现在前后端通吃的庞然大物。javascript的受欢迎程度也是与日俱增,今年最受欢迎编程语言又是花落javascript,这实在是一个充满了活力的语言。如今,随随便一个网页 JS 代码量都不下数千行,要是node后端那更不止几千行了。(WTF)代码量的增加给编程带来的首要的问题就是如何去编写和维护如此庞大的代码呢?答案就是模块化思想,其实就是面向对象(OOP)编程,如今比较流行的三大前端框架(angular,react,vue)基本都实现了组件化编程,但组件化和我们所说的模块化又有所不同,应该可以这么理解,组件化是模块化的升级版,模块化是组件化的基础。那么,问题来了,javascript怎么面向对象编程呢?我想这很多老鸟也不定说的清楚吧,前端杂而活跃的各种社区,很多前端er一度依赖各种插件,根本不需要去了解这些深层的东西却照样能完成任务。但我想作为一个有追求的前端er还是很有必要去学习这些看似用不着的东西的,别的不说,就单单因为我们是前端er,只会用jquery一个稍微厉害的后端都能代替你。好吧,废话不多说,到底如何面向对象coding呢…..

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 11