幽灵雾的专栏

一个以维护世界和平为己任的帅气大叔
私信 关注
幽灵雾
码龄12年

飘渺一人 十年程序猿,早期研究各类源码,现在致力于新产品先的推进,把技术和思维转化为利润

  • 853,601
    被访问量
  • 202
    原创文章
  • 4,917
    作者排名
  • 1,399
    粉丝数量
  • 目前就职 猎聘网
  • 于 2009-07-23 加入CSDN
获得成就
  • 博客专家认证
  • 获得327次点赞
  • 内容获得174次评论
  • 获得168次收藏
荣誉勋章
兴趣领域
  • #后端
    #Java
TA的专栏
  • java300讲
    付费
    166篇
  • swift从零到精通
    付费
    25篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

Kenai的java转汇编插件mac版hsdis-amd64.dylib

PrintAssembly是JVM的一个运行参数,它允许我们获取在控制台打印java代码翻译成的汇编指令。使用PrintAssembly需要一些插件的支持,这些并不是JVM直接提供的,Kenai项目则提供了可用的插件。根据不同的环境下在对应的指令集。本人是mac系统,所以下载了hsdis-amd64.dylib。
dylib
发布资源于 4 年前

Broken pipe异常分析及解决

Broken pipe异常分析报告错误描述ClientAbortException: java.io.IOException: Broken pipe可能出现原因:TCP服务端write数据时,收到SIGPIPE信号(连接已经终止)
原创
129967阅读
9评论
10点赞
发布博客于 4 年前

Java控_01原创工具类(001)_深度的对象非null转换工具V1.0

Java控01原创工具类(001)深度的对象非null转换工具V1.01、目标需求综述:任意对象及其属性(实例变量)转换为非null对象关键点:任意对象、包括集合容器对象内所有属性,包括父类的属性属性类型包括基本类型、枚举、自定义类、内部类、数组、常用集合容器(List、Set以及Map)每个属性也需要做同样的非null处理我们在实现之前,先准备一个测试用的复杂类,包含我们上述的所有需求。
原创
2519阅读
3评论
1点赞
发布博客于 5 年前

Java千百问_02基本使用(014)_mac系统如何管理环境变量

点击进入_更多_Java千百问-基本使用1、mac系统如何管理环境变量mac系统中管理环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量。具体配置方法如下:系统级通过修改./etc/profile文件来配置,全局(公有)配置,不管是哪个用户,登录时都会读取该文件。不建议修改这个文件。用户级./etc/bashrc
原创
1920阅读
1评论
0点赞
发布博客于 5 年前

Java千百问_09基础类库(004)_java.lang.management包有什么功能

点击进入_更多_Java千百问-基础类库1、java.lang.management包有什么功能java.lang.management包提供了全面的监控和管理工具,包括JVM的监管API、监管API日志、jconsole和其他监控工具、out-of-the-box的监管工具(开箱即用)、Java管理扩展平台(JMX)等等。sun在sun.management中提供了对应的实现类。主要类如下图:下
原创
2019阅读
0评论
0点赞
发布博客于 5 年前

Java千百问_09基础类库(003)_java.math包有什么功能

点击进入_更多_Java千百问-基础类库1、java.math包有什么功能java.math包提供了java中的数学类。包括基本的浮点库、复杂运算以及任意精度的数据运算。主要类如下图:下面介绍math中的类:任意长度整形 BigInteger,任意长度不可变整形。由于基本类型的整形长度有限,所以java提供了任意长度任意精度的整形。提供了种运算方法。继承于Number。 MutableBig
原创
2351阅读
1评论
0点赞
发布博客于 5 年前

Java千百问_09基础类库(002)_util包有什么功能

点击进入_更多_Java千百问-基础类库1、util包有什么功能java.util包提供了java中的基础工具类。包括基本的集合框架等基础类以及通用的工具类。主要类如下图:大体将java.util包分为两类:集合、工具,下面分别介绍其中比较常用的类:集合位集合 BitSet,只存储0、1的集合。数据集合 Collection,常用集合容器,包括列表List、数据集Set、队列Queue。
原创
2260阅读
8评论
3点赞
发布博客于 5 年前

Java千百问_09基础类库(001)_lang包有什么功能

点击进入_更多_Java千百问-基础类库1、lang包有什么功能java.lang包是java语言的核心,它提供了java中的基础类。包括基本Object类、Class类、String类、基本类型的包装类、基本的数学类等等最基本的类。我们介绍一下Java 8中的java.lang包。主要类如下图:大体将java.lang包分为三类:类型、工具、系统,下面分别介绍其中比较常用的类:类型对象基类
原创
2317阅读
1评论
4点赞
发布博客于 5 年前

Java千百问_02基本使用(015)_java如何通过汇编方式运行

点击进入_更多_Java千百问-基本使用1、java如何通过汇编方式运行java本身不能通过汇编方式运行。但是,我们可以通过某些插件,在运行中将java代码解释为汇编指令,让我们能够通过分析执行的汇编指令来查找一些问题,也可以帮助我们分析和理解JVM是如何解释和编译的(当然java本身的编译和运行和汇编无关)。PrintAssembly是JVM的一个运行参数,它允许我们获取在控制台打印java代码翻
原创
3264阅读
3评论
2点赞
发布博客于 5 年前

Java千百问_01基本概念(004)_Java都能做些什么

点击进入_更多_Java千百问1、Java都能做些什么在讨论Java能干什么之前,我们要说一下软件系统的体系结构。你不知道Java是什么?请看这里:什么是Java2、什么是纯C架构系统完全脱离网络就可独立使用的软件系统(即客户端C,client),这类软件不受限于网络,只依赖于操作系统。 如:PC上的word、视频播放器等软件。3、什么是C/S架构系统拥有自己独立的一个或多个服务端系统(即服务端S
原创
2672阅读
1评论
2点赞
发布博客于 5 年前

Java千百问_01基本概念(003)_J2EE里面的2是什么意思

点击进入_更多_Java千百问1、J2EE里面的2是什么意思J2SE,J2SE,J2ME中2的含义要追溯要1998年。 1998年Java 1.2版本发布,1999年发布Java 1.2的标准版,企业版,微型版三个版本,为了区分这三个版本,分别叫做Java2SE,Java2EE,Java2ME,简称J2SE,J2EE,J2ME。故,2的含义为1.2版本。 但是,这种叫法已经在2005年Java
原创
3132阅读
1评论
1点赞
发布博客于 5 年前

Java千百问_01基本概念(002)_Java都有那些版本

点击进入_更多_Java千百问1、Java都有那些版本Java最初由sun公司出品,2009年被orcale公司(即甲骨文)收购,它的版本体系分为两个纬度,纵向和横向。 纵向的版本即为我们常说的Jdk版本,通过近20年的时间,从1996年正式发布1.0版本,发展到2014年的8.0版本。 横向的版本即为我们所说的Java体系,从Java 2.0开始有所区分。2、什么是Java体系Java SE(
原创
2904阅读
0评论
2点赞
发布博客于 5 年前

Java千百问_01基本概念(001)_什么是Java

点击进入_更多_Java千百问1、什么是JavaJava是一种开发语言(核心特点:跨平台,面向对象,名称由来看这里:J2EE里面的2是什么意思),对于开发者来讲,Java基本等于Jdk。Jdk的版本介绍看这里:[Java都有那些版本][3]开发人员一般通过IDE(Eclipse、NetBeans、JBuilder等)编写、编译Java代码(在远古没有IDE的时代,都是用文本编辑器编写,使用javac
原创
2869阅读
0评论
1点赞
发布博客于 5 年前

致我的markdown

出生于我们这个年代的人,经历了在毫无美感的文本编辑器上一行行码字,见证了过使用html自定义样式带来的格式跑飞,最终被一个个大型文档编辑软件的复杂程度打败。我们不禁要问,在这个技术横飞的时代,写一点点简约的文章是不是真的很难呢?    直到2004年,John Gruberis大神灵光一现,markdown凭空出世,一种傻瓜式的标记语言,一种纯文本格式的语法,让文章的排版和样式有了前所未有的
原创
2993阅读
2评论
3点赞
发布博客于 5 年前

Java千百问_02基本使用(013)_linux系统如何管理环境变量

点击进入_更多_Java千百问1、linux系统如何管理环境变量我们都知道windows的环境变量的配置已经完全被图形化了,我们可以在我的电脑的属性中简单的进行配置,那么对于linux这样没有图形化配置的操作系统应该如何配置呢?我们具体来看:linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量。具体配置
原创
2735阅读
0评论
0点赞
发布博客于 5 年前

Java千百问_08JDK详解(019)_jdk工具包有哪些工具

点击进入_更多_Java千百问jdk工具包有哪些工具JDK工具包中提供了很多工具和实用的程序。涵盖了基本工具( javac, java, javadoc, apt, appletviewer, jar, jdb, javah, javap, extcheck),安全工具,国际化工具,RMI工具,IDL, RMI-IIOP工具,部署工具,java插件工具,java Web工具,监控管理工具,故障排查工
原创
3092阅读
0评论
0点赞
发布博客于 5 年前

Java千百问_08JDK详解(018)_JConsole是什么

点击进入_更多_Java千百问1、JConsole是什么JConsole是一个Java程序性能分析器,可以从命令行或在终端中运行。可以用来监控Java程序的性能以及跟踪代码。同时在com.sun.tools.jconsole包中提供了一组接口,允许访问JConsole,对线程、内存、类、对象进行分析和统计。2、如何使用JConsole工具我们这里主要介绍jconsole工具的用法,在JAVA_HOM
原创
2985阅读
0评论
0点赞
发布博客于 5 年前

Java千百问_03基础语法(022)_元注解是什么

点击进入_更多_Java千百问1、元注解是什么了解注释看这里:注释是什么 了解自定义注解看这里:[如何自定义注解][3] [3]:元注解就是负责注解其他注解。Java 5定义了4个标准的元注解(meta-annotation):@Target、@Retention、@Documented、@Inherited,这些元注解的类在java.lang.annotation包中,具体如下:@Target
原创
2651阅读
0评论
0点赞
发布博客于 5 年前

Java千百问_03基础语法(021)_如何自定义注解

点击进入_更多_Java千百问color=”#ff0000”1、如何自定义注解要学习使用注解,我们需要了解注解,并且了解java提供的常见注解。更重要的是学会自定义注解。了解注释看这里:注释是什么 我们自定义注解需要使用@interface关键字,具体语法如下:public @interface 注解名 {定义体} default {默认值}使用@interface自定义注解时,自动继承了java
原创
2794阅读
0评论
0点赞
发布博客于 5 年前

Java千百问_01基本概念(017)_内存物理地址在CPU中如何形成

点击进入_更多_Java千百问1、什么是内存的物理地址我们通过8086CPU来说明内存地址是如何形成的。首先我们要了解物理地址,当CPU需要访问一个内存单元时,需要给出内存单元的地址,而每一个内存单元在物理内存空间中都有一个唯一的地址,即可以通过这个地址定位到内存单元,而这个地址即为物理地址。CPU通过地址总线将一个内存单元的物理地址送入存储器,而后CPU便可以通过这个物理地址来访问这个物理地址所指
原创
3212阅读
0评论
1点赞
发布博客于 5 年前

Java千百问_08JDK详解(017)_Javadoc是什么

点击进入_更多_Java千百问1、Javadoc是什么javadoc是Sun公司提供的一个技术,它从程序源代码中抽取类、方法、成员等注释,形成一个和源代码配套的API帮助文档。也就是说,只要在编写程序时以一套特定的标签作注释,在程序编写完成后,通过Javadoc就可以形成开发文档了。了解注释看这里:注释是什么2、如何使用Javadocjava为javadoc技术独立出了一个工具,它位于JAVA_HO
原创
2827阅读
0评论
0点赞
发布博客于 5 年前

Java千百问_08JDK详解(016)_AttachAPI是什么

点击进入_更多_Java千百问1、AttachAPI是什么Attach API是Sun公司提供的一套扩展API,它并不是Java的标准API。顾名思义,Attach,为JVM附加某些程序。简单来说,就是把一个程序连接到一个正在运行的JVM上,连接之后,这段程序就可以在JVM中运行。这段程序被称为JVMTI Agent程序。我们使用它可以很方便地在运行过程中动态地设置加载代理类(JVMTI Agent
原创
2660阅读
0评论
0点赞
发布博客于 5 年前

手机底层板子设计人员告诉你一般手机电池的正确使用方法

电池性能系统环境、手机的设定、玩游戏、播放音乐、照相和使用数据业务等操作均会影响手机的待机时间。进行通话或开启背光灯等会比待机状态消耗较多的电量,待机时间将缩短。无服务区域中的待机时间要比正常待机时间短。电池的性能随着充电状态、温度高低、当地网络情况以及背景灯的状态变化而变化。充电时间如果交流电源电压较低,电池则需要较长时间的充电;充电时间根据电池的具体情况而变化;使用电脑等非标准充
原创
1754阅读
0评论
0点赞
发布博客于 5 年前

Java千百问_06数据结构(025)_用二进制如何表示浮点型数值

点击进入_更多_Java千百问1、用二进制如何表示浮点型数值我们再了解二进制如何表达浮点型数值前,需要先了解用二进制如何表示整型数值:用二进制如何表示整型数值 由于计算机只认识0、1二进制,所以与表示整数一样,浮点数值最终也都会被解释为二进制机器码,与整型不同的是,所有由计算机储存的浮点类型,都是通过运算转换为十进制的,所以都是高度近似值,并不可能100%精确。具体规则如下:遵循Ieee754标
原创
3461阅读
2评论
2点赞
发布博客于 5 年前

Java千百问_06数据结构(024)_用二进制如何表示整型数值

点击进入_更多_Java千百问1、用二进制如何表示整型数值我们都知道,计算机只认识0、1二进制,我们一般操作的寄存器和存储单元也都只认识二进制,我们称一个二进制为一个bit(位),一般32位计算机的寄存器允许操作32bit的数据,即32个0或1,由于书写过长,我们一般使用十六进制表示(每两个十六进制成为一个byte字节,即8bit=1byte)。例如:1111 1111 1111 1111 1111
原创
3506阅读
1评论
2点赞
发布博客于 5 年前

Java千百问_06数据结构(023)_基本数据类型在内存中如何存放

点击进入_更多_Java千百问1、基本数据类型在内存中如何存放了解基本数据类型看这里:java有哪8种基本数据类型 对于java中的8种基本数据类型,可以通过如下方式赋值给变量赋值。int a = 3;float b = 4.0f;a = a + 2;8中基本数据是将具体值直接存放在栈中,在发生变更时,将具体值替换为新的值。具体如下:了解java如何管理内存看这里:jvm是如何管理内存的 了解j
原创
2772阅读
0评论
2点赞
发布博客于 5 年前

Java千百问_02基本使用(012)_如何编写非阻塞SocketChannel程序

点击进入_更多_Java千百问1、如何编写非阻塞SocketChannel程序了解Socket看这里:Socket是什么 了解 SocketChannel看这里:Socket、SocketChannel有什么区别使用SocketChannel的最大好处就是可以进行非阻塞IO,每次链接后都会直接返回,不会阻塞线程。将需要多个线程的任务通过几个线程就能完成,降低了了性能消耗。了解阻塞、非阻塞看这里:阻
原创
2628阅读
0评论
1点赞
发布博客于 5 年前

Java千百问_01基本概念(016)_32位和64位计算机有什么区别

点击进入_更多_Java千百问1、32位和64位计算机有什么区别我们通常说的32位、64位计算机是指计算机的CPU位数。当然很早还有8位、16位的CPU,以Intel的80x86系列来说,8位的8080,16位的8086、8088、80186、80286,而32位的CPU最早始于80386,64位就是大家熟悉的EM64T技术以及AMD的x86-64。当然不同的厂商间同位数的CPU内部有很大的区别,但
原创
3514阅读
1评论
2点赞
发布博客于 5 年前

Java千百问_08JDK详解(015)_JVMTI提供哪些功能

点击进入_更多_Java千百问1、JVMTI提供哪些功能了解JVMTI看这里:JVMTI是什么 编写JVMTI程序看这里:如何编写JVMTI agent程序 JVMTI 的功能非常丰富,包含了虚拟机中线程、内存堆/栈、类/方法/变量、事件/定时器处理、代码调试等多种功能,这里我们介绍一些常用的功能。调试功能调试功能是JVMTI的基本功能之一,这主要包括了设置断点、调试等,在JVMTI里面,设置断
原创
2737阅读
0评论
2点赞
发布博客于 5 年前

Java千百问_08JDK详解(014)_如何编写JVMTI agent程序

点击进入_更多_Java千百问1、如何编写JVMTI agent程序了解JPDA看这里:JPDA是什么 了解JVMTI看这里:JVMTI是什么 我们需要使用C++编写agent程序,JVM在不同时机回调下面的接口函数:JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *jvm, char *options, void *reserved)JNIEXPORT j
原创
3423阅读
0评论
1点赞
发布博客于 5 年前

Java千百问_08JDK详解(013)_JVMTI是什么

点击进入_更多_Java千百问1、JVMTI是什么JVMTI(JVM Tool Interface)是JPDA体系中的最底层, 由Java虚拟机提供的native编程接口,是JVMPI(Java Virtual Machine Profiler Interface)和 JVMDI(Java Virtual Machine Debug Interface)的更新版本。了解JPDA体系看这里:JPDA是
原创
3555阅读
0评论
2点赞
发布博客于 5 年前

Java千百问_08JDK详解(012)_JPDA是什么

点击进入_更多_Java千百问1、JPDA是什么我们可以通过常见的Java IDE提供的图形界面调试工具进行代码调试,甚至可以使用JDK自带的jdb工具,以文本命令的形式来调试Java 程序,这些形形色色的调试工具都是通过JPDA开发的。JPDA(Java Platform Debugger Architecture)是 Java平台调试体系结构的缩写,通过JPDA提供的API,开发人员可以方便灵活
原创
3998阅读
0评论
2点赞
发布博客于 5 年前

Java千百问_03基础语法(020)_注解、注释有什么区别

java注释注解×注释注解区别×注释注解混淆×java注释注解区别×注解与注释不同点× 点击进入_更多_Java千百问1、注解、注释有什么区别了解注释看这里:注释是什么 了解注解看这里:注解是什么注解和注释很多人会混淆,它们之间的应用场景和具体使用完全不同,具体如下:用途不同 注解通过标注包、类、字段、方法、局部变量、方法参数等元素,告诉JVM这些元素的附加信息(元信息)。 注释是用来告诉
原创
4015阅读
0评论
6点赞
发布博客于 5 年前

Java千百问_03基础语法(019)_注解是什么

点击进入_更多_Java千百问1、注解是什么java中的注解(Annotation),也叫元数据。是Java 5以后版本引入的一个特性。注解与类、接口、枚举是在同一个层次,可以用来标注包、类、字段、方法、局部变量、方法参数等元素,达到对这些元素的描述和说明。注解是可以允许jvm在运行中读取它,这一点与注释完全不同。并且包含多种加载策略,可以灵活配置。2、注解有哪些加载策略注解包含3中可配置的加载策略
原创
3185阅读
0评论
6点赞
发布博客于 5 年前

Java千百问_01基本概念(015)_阻塞、非阻塞有什么区别

点击进入_更多_Java千百问1、阻塞、非阻塞有什么区别在进行网络编程时,我们通常会看到同步、异步、阻塞、非阻塞四种调用方式以及他们的组合。 了解同步、异步看这里:同步、异步有什么区别 其中阻塞方式、 非阻塞方式主要是针对服务端(server)的,具体如下:阻塞(Block)阻塞调用是指调用结果返回之前,当前线程会被挂起。挂起即线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线
原创
4267阅读
1评论
2点赞
发布博客于 5 年前

Java千百问_03基础语法(018)_注释是什么

点击进入_更多_Java千百问1、注释是什么java中的注释和其他编程语言中的注释一样,注释的内容不会被编译运行,只是源代码中对代码的解释说明。 通过添加代码注释可以提高源代码的可读性,使得Java程序条理清晰,易于区分代码行与注释行。另外,通常还会在类、方法或者代码段开头加入作者、添加/修改时间、程序版本以及代码功能等内容注释,方便后来的维护以及程序员的交流。(当然,对于好的代码,不写注释也能够
原创
2880阅读
0评论
2点赞
发布博客于 5 年前

Java千百问_01基本概念(014)_同步、异步有什么区别

点击进入_更多_Java千百问1、同步、异步有什么区别在进行网络编程时,我们通常会看到同步、异步、阻塞、非阻塞四种调用方式以及他们的组合。 了解阻塞、非阻塞看这里:[阻塞、非阻塞有什么区别][2] [2]:其中同步方式、异步方式主要是由客户端(client)控制的,具体如下:同步(Sync)所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作。 根据这个定义,
原创
3246阅读
2评论
1点赞
发布博客于 5 年前

Java千百问_08JDK详解(011)_jnlp文件是什么

点击进入_更多_Java千百问1、jnlp文件是什么JNLP(Java Network Launching Protocol ,java网络执行协议文件)是java提供的一种可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url链接打开一个java应用程序。Java桌面应用程序可以通过JNLP的方式发布。如果版本升级后,不需要再向所有用户发布版本,只需要更新服务器的版本,
原创
2914阅读
0评论
2点赞
发布博客于 5 年前

Java千百问_08JDK详解(010)_java、javaw、javaws有什么区别

点击进入_更多_Java千百问1、java、javaw、javaws有什么区别java、javaw、javaws这三个都是jdk自带的三个工具,都在jdk/bin路径下,这三个工具都是为了启动java应用存在的,具体区别如下:java java命令即java应用的执行器,通过它执行的应用日志会再控制台console显示输出与错误信息。了解更多java命令看这里:java程序如何运行javaw j
原创
5156阅读
2评论
1点赞
发布博客于 5 年前

Java千百问_02基本使用(011)_如何编写单线程Socket程序

点击进入_更多_Java千百问1、如何编写单线程Socket程序了解Socket看这里:Socket是什么 编写Socket最简单的就是单线程的Socket,但基本上是没有实用意义的,因为在实际的应用中基本上是不止于一个Client的。一般都是多线程Socket程序。了解多线程Socket看这里:如何编写多线程Socket程序 要编写Socket,需要了解java.net包中提供了两个类Sock
原创
2493阅读
1评论
1点赞
发布博客于 5 年前

Java千百问_01基本概念(013)_Socket、SocketChannel有什么区别

点击进入_更多_Java千百问1、Socket、SocketChannel有什么区别了解Socket看这里:Socket是什么 Socket、SocketChannel二者的实质都是一样的,都是为了实现客户端与服务器端的连接而存在的,但是在使用上,却有很大的区别。具体如下:所属包不同 Socket在java.net包中,而SocketChannel在java.nio包中。异步方式不同 从包的不
原创
5861阅读
2评论
2点赞
发布博客于 5 年前

Java千百问_02基本使用(012)_如何编写多线程Socket程序

点击进入_更多_Java千百问1、如何编写多线程Socket程序了解Socket看这里:Socket是什么 多线程Socket与单线程类似,只是使用了多线程的方式来管理连接,主线程负责接收连接,在接到连接后变创建新的线程,每个线程负责与自己的客户端进行通信。了解单线程Socket看这里:如何编写单多线程Socket程序与单线程Socket例子相比来说,服务端可以与多个客户端进行通信了,不过多线程频
原创
2424阅读
2评论
0点赞
发布博客于 5 年前

Java千百问_08JDK详解(009)_java程序如何运行

点击进入_更多_Java千百问1、java程序如何运行java代码首先需要进行编译,编译为.class类文件,然后通过java命令(执行器)去执行。java命令位于jdk/bin目录下。了解如何编译看这里:javac是什么 它通过启动Java运行时环境(JRE),然后加载指定类(JRE在启动时会搜索以下路径进行类加载:引导类路径,扩展包路径,用户的类路径),调用类的main()方法(了解更多mai
原创
2505阅读
3评论
1点赞
发布博客于 5 年前

Java千百问_08JDK详解(008)_通过代码如何编译java文件

点击进入_更多_Java千百问1、通过代码如何编译java文件编译器是一个命令行工具(jdk自带的编译工具javac,了解javac看这里:javac是什么),但也可以使用API来调用(一般的IDE都会使用这一组API来封装自己的编译功能)。编译器遵循Java语言规范(The Java Language Specification,JLS)和Java虚拟机规范(The Java Virtual Ma
原创
2944阅读
3评论
1点赞
发布博客于 5 年前

无情的独裁者-特斯拉的马斯克

“如果让我给马斯克打工,那我一定会在工作的第一周便离开,并对着他的脸来上几拳。”埃隆·马斯克(Elon Musk),2016年处在风口浪尖的人,在世人眼中,有着堪比当年乔帮主的地位,作为特斯拉这一个一开口就能有数十万粉丝捧着1000刀定金来预定一个未来产品公司的Boss,他有着君临天下一般的气魄。然而,他的团队,对他却有一个共同的称号:无情的独裁者。 对很多人来说,埃隆·马斯克实在太令人着迷了,他
原创
8406阅读
0评论
11点赞
发布博客于 5 年前

Java千百问_02基本使用(010)_java、javax、sun、org包有什么区别

点击进入_更多_Java千百问1、java、javax、sun、org包有什么区别java、javax、org、sun包都是jdk提供的类包,且都是在rt.jar中。rt.jar是JAVA基础类库(java核心框架中很重要的包),包含lang在内的大部分功能,而且rt.jar默认就在根classloader的加载路径里面,所以放在classpath是多此一举 。他们之间的区别具体如下: 了解jav
原创
6481阅读
0评论
3点赞
发布博客于 5 年前

Java千百问_01基本概念(012)_Socket是什么

点击进入_更多_Java千百问1、什么是SocketSocket也称作“套接字”。网络上的两个应用程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket,所以Socket都是成对出现的。Socket通常用来实现客户方和服务方的连接,一个Socket由一个IP地址和一个端口号唯一确定。Socket是TCP/IP协议的一个十分流行的解决方案,是支持TCP/IP协议的网络通信的基
原创
3713阅读
0评论
1点赞
发布博客于 5 年前

Java千百问_08JDK详解(007)_javac是什么

点击进入_更多_Java千百问1、javac是什么javac即Java编程语言编译器,位于jdk/bin目录下,读取使用Java编程语言编写的源文件(.java),并编译成字节码类文件(.class)。编译器会一并编译源代码中的注解(annotations),但是会移除注释。了解注解注释看这里:[注解、注释有什么区别][2]javac还可以隐式编译一些没有在命令行中提及的源文件。当编译源文件时,编译
原创
3825阅读
1评论
0点赞
发布博客于 5 年前

Java千百问_02基本使用(009)_eclipse如何设置BuildPath

点击进入_更多_Java千百问1、eclipse如何设置BuildPath我们知道运行java应用需要依赖jre以及程序中使用的第三方jar包,我们使用java命令运行时,一般会手工指定-classpath(默认为操作系统的CLASSPATH环境变量),eclipse提供了方便的引入功能,针对不同工程可以选择加载不同的classpath。了解java如何运行看这里:[java程序如何运行][2]
原创
3306阅读
0评论
0点赞
发布博客于 5 年前

Java千百问_04异常处理(008)_java中常见的错误有哪些

点击进入_更多_Java千百问java中常见的错误有哪些想了解异常看这里:什么是java中的异常 常见的运行时异常看这里:常见的Java异常有哪些(运行时) 常见的非运行时异常看这里:常见的java异常有哪些(非运行时) java中除了异常Exception之外,还有一大类错误,即ERROR,我们常见的ERROR如下:1、java.lang.Error错误。是所有错误的基类,用于标识严重的
原创
2867阅读
1评论
0点赞
发布博客于 5 年前

Java千百问_04异常处理(007)_常见的java异常有哪些(非运行时)

点击进入_更多_Java千百问1、常见的java运行时异常有哪些了解非运行时异常看这里:什么是java中的异常 常见的运行时异常看这里:常见的运行时异常有哪些我们所说的常见异常是jdk或者其他常用第三方jar中的异常,出现频次很高的异常。常见的非运行时异常(即检查异常,checked exception)包括:操作数据库异常:SQLException输入输出异常:IOException文件未
原创
2822阅读
0评论
1点赞
发布博客于 5 年前

Java千百问_04异常处理(006)_常见的Java异常有哪些(运行时)

1、常见的java运行时异常有哪些了解运行时异常看这里:什么是java中的异常 常见的非运行时异常看这里:[常见的非运行时异常有哪些][3] [3]:我们所说的java常见异常是指jdk或者其他常用第三方jar中,出现频次很高的异常。常见的运行时异常(RuntimeException)包括: 空指针异常类:NullPointerException 数组下标越界异常:ArrayIndexOut
原创
2645阅读
0评论
2点赞
发布博客于 5 年前

Java千百问_03基础语法(017)_static有什么用

点击进入_更多_Java千百问1、static有什么用static是java的关键字,用static声明达到静态的目的。所谓静态,就是在程序编译后就能被使用,不需要创建任何实例。static能够修饰类、方法、变量以及类代码块,具体如下:static方法 被static声明的方法叫做静态方法,不需要实例化对象通过类名直接调用的方法,最常见的是main()。了解main方法看这里:main方法是什么
原创
2431阅读
1评论
2点赞
发布博客于 5 年前

Java千百问_01基本概念(011)_JavaApplet是什么

点击进入_更多_Java千百问1、JavaApplet是什么Applet是采用Java编程语言编写的小应用程序,该程序可以包含在HTML(标准通用标记语言的一个应用)页中,与在页中包含图像的方式大致相同。Applet不需要main()方法,由Web浏览器中内嵌的Java虚拟机调用执行。在Java Applet中,可以实现图形绘制、字体和颜色控制、动画和声音的插入、人机交互及网络交流等功能。Apple
原创
2567阅读
0评论
2点赞
发布博客于 5 年前

Java千百问_08JDK详解(006)_jdk用户界面类库都有什么

点击进入_更多_Java千百问1、jdk用户界面类库都有什么了解java核心框架看这里:java核心框架是什么样的 1. 输入法框架(Input Method Framework) 输入法框架包括文本编辑组件与文本输入。文本输入是软件组件,使得用户输入文本而不是简单的在键盘上打字。它们通常用于输入日本、中国或韩国的语言,输入比键盘按键多出数百倍的文本。当然,框架还支持其他语言,以及完全不同的输入
原创
2500阅读
0评论
1点赞
发布博客于 5 年前

Java千百问_01基本概念(010)_Solaris操作系统是什么

点击进入_更多_Java千百问1、Solaris操作系统是什么Solaris是Sun公司研发的计算机操作系统。它是UNIX操作系统的衍生版本之一。 目前Solaris属于混合开源软件。2005年6月14日,Sun公司将正在开发中的Solaris 11的源代码开放,这版本就是OpenSolaris。Sun的操作系统最初叫做SunOS,由于Sun的创始人之一Bill Joy来自于U.C.Berkeley
原创
2455阅读
0评论
1点赞
发布博客于 5 年前

Java千百问_08JDK详解(005)_jdk服务集成类库都有什么

点击进入_更多_Java千百问1、jdk服务集成类库都有什么了解java核心框架看这里:java核心框架是什么样的 1. 数据库链接工具(Java Database Connectivity,JDBC) JDBC API提供了使用java访问数据库的通用接口,使用JDBC 3.0或以上,开发人员编写的应用程序可以访问几乎任何数据源,从关系数据库到电子表格甚至文本文件,JDBC技术还提供了很多通用
原创
2699阅读
0评论
1点赞
发布博客于 5 年前

Java千百问_08JDK详解(004)_jdk基础扩展类库都有什么

1、jdk基础扩展类库都有什么了解java核心框架看这里:java核心框架是什么样的 jdk基础类库分为两大部分,基础库、扩展基础库,提供了相当大量的功能,扩展基础库具体如下:I/O工具(I/O) java.io和java.nio包提供了一组非常丰富的api来管理应用程序的I/O(输入/输出)。包括文件和设备I/O、对象序列化、缓冲区管理、字符集支持等。此外,API还为服务端提供了包括多路复用
原创
3457阅读
0评论
0点赞
发布博客于 5 年前

Java千百问_01基本概念(009)_CLASSPATH是什么

点击进入_更多_Java千百问1、CLASSPATH是什么CLASSPATH是Java解释器中用来指定搜索包路径的集合,Java解释器是这样工作的:Java解释器找到环境变量CLASSPATH(将Java或者具有Java解释能力的工具,如浏览器,安装到机器中时,通过操作系统环境变量进行设定)。CLASSPATH包含了一个或多个目录,它们作为一种特殊的“根路径”使用,从这里展开对.class文件的
原创
2845阅读
0评论
0点赞
发布博客于 5 年前

Java千百问_03基础语法(016)_main方法是什么

点击进入_更多_Java千百问1、main方法是什么某个类中有main()方法,说明这是一个java应用程序,可以直接启动运行的程序(操作系统中安装了jdk或者jre)。任何一个非抽象类/接口都可以添加main()方法。了解抽象类、接口看这里:接口和抽象类有什么区别 在java的规范中,main()方法的声明为:public static void main(String args[]){}当通过
原创
3685阅读
0评论
2点赞
发布博客于 5 年前

Java千百问_08JDK详解(003)_jdk基础类库都有什么

点击进入_更多_Java千百问1、jdk基础类库都有什么了解java核心框架看这里:java核心框架是什么样的 jdk基础类库分为两大部分,基础库、扩展基础库,提供了相当大量的功能,基础库具体如下:lang包、util包(Lang and Util Packages) lang包提供的基本Object类、Class类、String类、基本类型的包装类、基本的数学类等等最基本类。 util包提
原创
2977阅读
0评论
3点赞
发布博客于 5 年前

Java千百问_03基础语法(015)_System.exit(0)有什么用

点击进入_更多_Java千百问1、System.exit(0)有什么用查看java.lang.System的源代码,我们可以找到System.exit(status)这个方法,源代码如下:public final class System {/** * Terminates the currently running Java Virtual Machine. The * argu
原创
2681阅读
0评论
1点赞
发布博客于 5 年前

Java千百问_07JVM架构(019)_运行时常量池是什么

点击进入_更多_Java千百问1、运行时常量池是什么运行时常量池(Runtime Constant Pool),它是方法区的一部分。Class文件中除了有类的版本、字段、方法、接口等描述等信息外,还有一项信息是常量池(Constant Pool Table),用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后存放到常量池中。了解java内存管理看这里:jvm是如何管理内存的 如图:
原创
3299阅读
0评论
2点赞
发布博客于 5 年前

Java千百问_01基本概念(008)_jar是什么

点击进入_更多_Java千百问1、jar是什么JAR(Java Archive)是一个独立于平台的文件格式。可以包含多个文件,若干Java applet及其必要的组件(.class文件、图片和声音等)可以被打包在一个JAR文件中。了解JavaApplet看这里:JavaApplet是什么JAR文件格式以各种操作系统均能够压缩/解压的zip文件格式为基础。与zip不同的是,jar文件不仅仅用于压缩和发
原创
3022阅读
0评论
1点赞
发布博客于 5 年前

Java千百问_08JDK详解(002)_jdk工具集都有什么

点击进入_更多_Java千百问1、jdk工具集都有什么工具了解java核心框架看这里:java核心框架是什么样的 jdk工具集包含了java开发、编译和运行过程中所使用的工具,主要有以下这些:调试体系(Debugger Architecture)具备完善的体系结构和使用规格的调试体系,允许在开发环境中可以用来进行代码调试(调试即逐行执行代码,并且可以监控变量和运行情况)。Java平台调试器体系结构
原创
2846阅读
0评论
3点赞
发布博客于 5 年前

Java千百问_01基本概念(007)_线程的状态有哪些

点击进入_更多_Java千百问1、线程的状态有哪些在java中java.lang.Thread类有一个变量threadStatus,标示了该线程的当前状态,它是一个int类型,但是对应的get方法返回值是一个枚举(Thread的内部类),源码如下:public enum State { /** * Thread state for a thread which ha
原创
6584阅读
6评论
4点赞
发布博客于 5 年前

Java千百问_03基础语法(014)_volatile关键字有什么用

点击进入_更多_Java千百问1、volatile关键字有什么用volatile是java语言的关键字,是变量修饰符。它是被设计用来修饰被不同线程访问和修改的变量。volatile的作用是: 作为指令关键字,确保本条指令不会被编译器优化,且应用的所有线程读取这个变量的值是一致的。简单的说,就是禁止编译器对代码进行优化,且强迫所有线程从共享内存读取该变量(而不是读取寄存器中的备份),变量发生改变时强行
原创
2257阅读
0评论
1点赞
发布博客于 5 年前

Java千百问_08JDK详解(001)_java核心框架是什么样的

点击进入_更多_Java千百问1、java核心框架是什么样的我们知道,我们所说的java包含jdk、jre、jvm等(jdk包含jre,jre包含jvm),下面是一个Java SE的模型图(本文部分摘自Oracle官方文档,非常权威):了解jdk、jre、jvm看这里:什么是Java 了解Java SE看这里:Java都有那些版本2、jdk都包含哪些组件jdk主要包含Java Language语言
原创
3536阅读
0评论
4点赞
发布博客于 5 年前

Java千百问_07JVM架构(018)_如何监控jvm的运行情况

点击进入_更多_Java千百问1、如何监控jvm的运行情况了解jvm内存模型看这里:java内存模型是什么样的 了解jvm内存管理看这里:jvm是如何管理内存的 了解jvm垃圾回收机制看这里:java垃圾回收机制是什么 了解jvm内存优化看这里:java内存如何优化我们通常使用Jdk工具来监控jvm的运行情况,当然目前有很多第三方产品是通过jdk提供的api来组织数据进行监控的。具体来说有如下
原创
7333阅读
0评论
2点赞
发布博客于 5 年前

Java千百问_05面向对象(014)_如何获取范型的类Class

点击进入_更多_Java千百问1、如何获取范型的类Classjava中,无法获取范型的类型,例如:public class Box<T> { public static void main(String[] args) { System.out.printf(T);//编译错误 }}其实,由于java是强类型语言,在编译时我们并不知道T是什么具体类型,只有在编译后,不同场景指定之后
原创
3067阅读
0评论
2点赞
发布博客于 5 年前

Java千百问_07JVM架构(017)_jvm常见配置都有哪些

点击进入_更多_Java千百问1、jvm常见配置都有哪些了解jvm内存模型看这里:java内存模型是什么样的 了解jvm内存管理看这里:jvm是如何管理内存的 了解jvm垃圾回收机制看这里:java垃圾回收机制是什么jvm配置非常多,按照不同类型划分,常常用来优化jvm内存(了解jvm内存优化看这里:java内存如何优化),常见配置如下:了解垃圾回收器看这里:java垃圾回收都有哪些方式堆设置
原创
3033阅读
0评论
3点赞
发布博客于 5 年前

Java千百问_03基础语法(013)_>、>>、>>>有什么区别

点击进入_更多_Java千百问1、>、>>、>>>有什么区别了解java运算符看这里:java种的运算符都有哪些 了解java运算符优先级看这里:java运算符的优先级是怎样的 “>”属于关系运算符,而“>>”、”>>>”则按位运算符,看一下它们各自的含义:运算符> 关系运算符,表示大于。 如:if(a>b)…结果是boolean类型。运算符>> 按位运算符,表示右移。<<表示左移。
原创
2958阅读
0评论
1点赞
发布博客于 5 年前

Java千百问_02基本使用(008)_eclipse如何关闭代码验证

点击进入_更多_Java千百问1、eclipse如何关闭代码验证我们知道eclipse会在编译时对java代码、文本、标记文本等等进行验证,但是,这个过程在文件多的时候非常缓慢,通常会影响我们的开发效率。这里我们介绍一下如何选择性关闭这个功能。选择性关闭:具体方法:windows–>Preferences–>Validation在下面有一个列表,可以根据自己需要选择关闭验证功能(选中状态是需要验证)
原创
4222阅读
0评论
2点赞
发布博客于 5 年前

Java千百问_07JVM架构(016)_java内存如何优化

点击进入_更多_Java千百问1、java内存如何优化了解jvm内存管理看这里:jvm是如何管理内存的 了解堆内存看这里:java堆内存是什么样的 java内存的优化主要是通过合理的控制GC来实现,主要原则: 1. 不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况(因为GC过后这个值是不会变化的)。 2. 使用JDK提供的内存查看工具,比如JConso
原创
6809阅读
1评论
5点赞
发布博客于 5 年前

Java千百问_03基础语法(012)_transient关键字有什么用

点击进入_更多_Java千百问1、transient关键字有什么用transient是java语言的关键字,是变量修饰符。如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。Java的serialization(序列化)提供了一种持久化对象实例的机制,当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭
原创
4424阅读
0评论
3点赞
发布博客于 5 年前

Java千百问_07JVM架构(015)_XmnXmsXmxXss有什么区别

点击进入_更多_Java千百问1、XmnXmsXmxXss有什么区别首先,Xmn、Xms、Xmx、Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果。了解jvm内存管理看这里:jvm是如何管理内存的Xms、Xmx-Xms、-Xmx分配用来设置进程堆内存的最小大小和最大大小。了解堆内存看这里:java堆内存是什么样的 了解java垃圾回收机制看这里:jav
原创
5691阅读
1评论
4点赞
发布博客于 5 年前

Java千百问_07JVM架构(014)_什么是Dump文件

点击进入_更多_Java千百问1、什么是Dump文件Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中。Dump文件是用来给驱动程序编写人员调试驱动程序用的,这种文件必须用专用工具软件打开。当我们的程序发布出去之后,在客户机上是无法跟踪代码的,所以Dump(扩展名是 .dmp)文件对于我们来说特别重要。我们可以通过.dmp文件把出现问题的情况再现,然后根据再现的状况(包
原创
5914阅读
1评论
3点赞
发布博客于 5 年前

Java千百问_07JVM架构(013)_java什么情况会内存溢出

点击进入_更多_Java千百问1、Java堆什么情况会溢出所有对象的实例都在Java堆上分配内存,堆大小由-Xmx和-Xms来调节,如果程序使用的内存超过了堆最大内存(-Xmx),则会溢出Java heap space。了解java内存模型看这里:java内存模型是什么样的 了解堆内存看这里:java堆内存是什么样的 了解java垃圾回收机制看这里:java垃圾回收机制是什么实例:public
原创
2891阅读
1评论
5点赞
发布博客于 5 年前

Java千百问_03基本语法(011)_final,finally,finalize有什么区别

点击进入_更多_Java千百问1、final,finally,finalize有什么区别final,finally是java的关键字,finalize是jdk的一个方法名,它们虽说字面意思类似,但是他们的使用却完全不同。具体如下:finalfinal是一个修饰符关键字。 如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。 如果一个变量或方法声明为final,可以保证
原创
3836阅读
2评论
2点赞
发布博客于 5 年前

Java千百问_07JVM架构(012)_fullGC、minorGC、magorGC有什么区别

点击进入_更多_Java千百问1、fullGC、minorGC、magorGC有什么区别fullGC、minorGC、magorGC还有youngGC是Java垃圾处理机制(GC)的名词,区分这几个概念非常简单:老生代进行一次垃圾清理,被称为fullGC或者magorGC。新生代进行一次垃圾清理,被称为youngGC或者minorGC。了解java垃圾回收机制看这里:java垃圾回收机制是什么
原创
6004阅读
4评论
3点赞
发布博客于 5 年前

Java千百问_07JVM架构(011)_java垃圾回收都有哪些方式

点击进入_更多_Java千百问1、java垃圾回收都有哪些方式所谓垃圾回收方式,是指JVM提供的几种不同的垃圾回收器,不同的垃圾回收器进行垃圾回收时采用不同的方式。当然,总体原则遵循java垃圾回收机制。了解java内存模型看这里:java内存模型是什么样的 了解堆内存看这里:java堆内存是什么样的 了解java垃圾回收机制看这里:java垃圾回收机制是什么每种方式都有自己的优势与劣势。我们编
原创
4215阅读
4评论
3点赞
发布博客于 5 年前

Java千百问_07JVM架构(010)_什么是老生代的标记算法

所谓标记算法(Mark),分为多种,最简单直观的即标记-清除算法(Mark-Sweep)。即将认定为可回收的内存做一个标记,然后统一将被标记的清理,算法图解如下:算法过程: 1. 先判定对象是否可回收,对其标记。 2. 统一回收(简单地删
原创
4634阅读
1评论
2点赞
发布博客于 5 年前

Java千百问_07JVM架构(009)_什么是新生代的复制算法

所谓复制算法(Copying),即将内存平均分成A区、B区两块,进行复制+清除垃圾的操作,算法图解如下:算法过程:新生对象被分配到A块中未使用的内存当中。当A块的内存用完了, 把A块的存活对象复制到B块。清理A块所有对象。
原创
3434阅读
4评论
6点赞
发布博客于 5 年前

Java千百问_02基本使用(007)_eclipse变量高亮如何打开

点击进入_更多_Java千百问1、eclipse变量高亮如何打开在开发中,我们经常会有这样的需求:想看某个变量或者方法在哪里被使用。eclipse提供了这样的功能,在选中变量后,会在同一文本中显示所有该关键字出现的地方那个,加上灰色背景高亮。开启/关闭该功能:windows-> preferences->java->Editor->Mark Occurrences选中“Mark Occurrence
原创
3895阅读
0评论
1点赞
发布博客于 5 年前

Java千百问_07JVM架构(008)_java垃圾回收机制是什么

1、如何判断垃圾对象垃圾收集的第一步就是先需要算法来标记哪些是垃圾,然后再对垃圾进行处理。通常的编程语言都会用以下算法之一进行判断:引用计数(ReferenceCounting)算法 这种方法比较简单直观,核心思路是,给每个对象添加一个被引用计数器,被引用时+1,引用失效-1,等于0时就表示该对象没有被引用,可以被回收。FlashPlayer/Python使用该算
原创
2992阅读
3评论
1点赞
发布博客于 5 年前

Java千百问_02基本使用(006)_eclipse如何保存时格式化

点击进入_更多_Java千百问1、eclipse如何打开保存时格式化我们都知道,为了让代码可读性更高,eclipse提供了代码格式化的功能,一般指定了对应format文件(eclipse会默认自带)后,通过快捷键Ctrl+Shift+F来进行格式化。然而,很多时候并不方便,而且在修改完代码后容易忘记。其实还有一种更好的方法:保存时自动格式化。每次保存都会自动格式化,十分方便。方法如下:具体方法:wi
原创
3980阅读
0评论
1点赞
发布博客于 5 年前

Java千百问_06数据结构(022)_String在内存中如何存放

点击进入_更多_Java千百问1、String在内存中如何存放了解String是什么看这里:String是什么 String是一个特殊的包装类数据。 可以用两种的形式来创建:String str = new String( "abc" );String str = "abc" ;了解java如何管理内存看这里:jvm是如何管理内存的 了解java堆和栈的区别看这里:java堆和栈有什么区别第
原创
2825阅读
0评论
0点赞
发布博客于 5 年前

Java千百问_07JVM架构(007)_java堆内存是什么样的

点击进入_更多_Java千百问1.堆内存是什么样的了解jvm实例模型看这里:jvm实例的结构是什么样的 了解java内存框架看这里:jvm是如何管理内存的 了解堆栈的区别看这里:java堆和栈有什么区别 每一个jvm实例都会被分配一个被所有线程共享的堆内存空间,用来存放对象和数组,作为jvm的数据集中管理区,存取效率、空间释放就成为了重中之重,jvm通过多区架构来完成这两个目标的达成。其结构如
原创
3696阅读
4评论
1点赞
发布博客于 5 年前

Java千百问_07JVM架构(006)_java堆和栈有什么区别

在《jvm是如何管理内存的》这篇文章中,已经对PC寄存器(计数器 pc registers)、方法区(method area)、本地方法栈(native method stacks)、栈(stacks)、堆(heap)内存区域做了介绍,其中栈(stacks)、堆(heap)是java内存管理
原创
5038阅读
1评论
4点赞
发布博客于 5 年前

Java千百问_07JVM架构(005)_显示内存管理有什么弊端

点击进入_更多_Java千百问1、显示内存管理有什么弊端手动内存管理一般被称为显示内存管理,显示内存管理经常发生两种情况:引用悬挂 当一个被某个引用变量正在使用的内存空间,在重新分配过程中被释放掉了,释放后,该引用变量就处于悬挂状态(所引用的对象已经不存在了)。 如果这个被悬挂引用变量,试图操作原来对象的时候,由于该对象本身的内存空间已经被手动释放掉了(已经不存在了),所以这个执行结果是不可预
原创
4595阅读
1评论
1点赞
发布博客于 5 年前

Java千百问_06数据结构(021)_StringBuffer/StringBuilder有什么区别

点击进入_更多_Java千百问1、StringBuilder是什么StringBuilder是非线程安全的可变字符串类。 java.lang.StringBuilder这个可变的字符序列类是5.0新增的。继承于AbstractStringBuilder(大部分方法都在该类实现),并不是线程安全的,当多个线程同时修改一个对象时很可能会冲突。了解String是什么看这里:String是什么部分Abst
原创
10493阅读
0评论
2点赞
发布博客于 5 年前

Java千百问_06数据结构(020)_String是什么

点击进入_更多_Java千百问1、String是什么java.lang.String类表示字符串常亮,所谓字符串,就是一组字符组成的字符集合。它有以下几个特点:String是不可变的对象 每次对String进行改变的时候,其实都等同于生成了一个新的String对象,然后将指针指向新的String对象(若不使用new构造,实际是从堆中的String池查找是否已经再存该字符串,若有则直接指向;若没有则
原创
2001阅读
1评论
1点赞
发布博客于 5 年前

Java千百问_07JVM架构(004)_jvm是如何管理内存的

点击进入_更多_Java千百问1、JVM是如何管理内存的Java中,内存管理是JVM自动进行的,无需人为干涉。了解java内存模型看这里:java内存模型是什么样的 了解jvm实例结构看这里:jvm实例的结构是什么样的 创建对象或者变量时, JVM会自动分配内存(当然这个分配是遵循严格规则的)。当JVM发现某些对象不再需要的时候,就会对该对象占用的内存进行重分配(释放)操作,而且使得分配出来的内
原创
7378阅读
4评论
3点赞
发布博客于 5 年前

Java千百问_07JVM架构(003)_内存分配有哪些策略

点击进入_更多_Java千百问1、内存分配有哪些策略我们从编译原理讲起,不同的开发环境、开发语言都会有不同的策略。一般来说,程序运行时有三种内存分配策略:静态的、栈式的、堆式的静态存储 是指在编译时就能够确定每个数据目标在运行时的存储空间需求,因而在编译时就可以给它们分配固定的内存空间。 这种分配策略要求程序代码中不允许有可变数据结构的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编
原创
4858阅读
1评论
0点赞
发布博客于 5 年前

Java千百问_07JVM架构(002)_jvm实例的结构是什么样的

点击进入_更多_Java千百问1、jvm实例的结构是什么样的在Java虚拟机规范中,一个虚拟机实例的行为主要组成部分为:子系统、内存区域、数据类型和指令。 这些组件描述了JVM内部的一个抽象结构。与其说这些组成部分的目的是进行JVM内部结构的一种支配,不如说是提供一种对外部行为的严格定义,该规范定义了这些抽象组成部分的相互作用,以及Java虚拟机执行所需要的行为。了解jvm内存管理看这里:java
原创
2768阅读
1评论
0点赞
发布博客于 5 年前

Java千百问_01基本概念(006)_线程和进程有什么区别

点击进入_更多_Java千百问1、进程是什么进程(process)是具有一定独立功能的程序,操作系统利用进程把工作划分为一些功能单元。进程是进行资源分配和调度的一个独立单位。它还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。一个应用程序(application)是由一个或多个相互协作的进程组成的。例如,Visual Studio开发环境就是利用一个进程编辑源文件,并利用另一个进程完成编
原创
5465阅读
2评论
3点赞
发布博客于 5 年前

Java千百问_07JVM架构(001)_java内存模型是什么样的

点击进入_更多_Java千百问1、什么是内存模型  Java平台自动集成了线程以及多处理器技术,这种集成程度比Java以前诞生的计算机语言要厉害很多。Java针对多种异构平台的独立性,使得多线程技术也具有了开拓性的一面。   我们有时候在Java开发中,对于同步和线程安全要求很严格的程序时,往往容易混淆的一个概念就是内存模型。那究竟什么是内存模型呢?   内存模型描述了程序中各个变量(实例域、静
原创
7343阅读
1评论
2点赞
发布博客于 5 年前

Java千百问_06数据结构(019)_Arrays类有什么功能

点击进入_更多_Java千百问1、Arrays类有什么功能java.util.Arrays中的类包含了很多静态方法,用于排序数组、搜索数组、比较数组和填充数组元素等功能。了解一维数组看这里:java中的数组是什么常见方法如下:public static int binarySearch(Object[] a, Object key) 使用二分法搜索数组中指定值的位置(下标)。如果数组类型非基本数
原创
4164阅读
0评论
0点赞
发布博客于 5 年前

Java千百问_06数据结构(018)_多维数组如何储存在内存中

点击进入_更多_Java千百问1、多维数组如何储存在内存中了解一维数组如何储存看这里:java数组如何存储在内存中从底层来看,数组元素可以存放引用类型,数组也是引用类型的一种。也就是说,在数组元素的内部还可以包含数组(如int[][] numbers = new int[length][]),即二维数组可当作一维数组(数组长度为length)来处理。了解数组和普通引用对象在内存中的区别看这里:数组和
原创
4659阅读
0评论
1点赞
发布博客于 5 年前

Java千百问_06数据结构(017)_什么是二维数组

点击进入_更多_Java千百问1、二维数组如何定义Java语言中,多维数组被看作数组的数组。 了解一维数组看这里:java中的数组是什么 定义方式和一维数组类似,如下:type arrayName[ ][ ]; type [ ][ ]arrayName;2、二维数组如何初始化二维数组初始化和一维数组一样,分为静态初始化和动态初始化静态初始化 Java语言中,由于把二维数组看作是数组的数组,
原创
4223阅读
0评论
1点赞
发布博客于 5 年前