猿人林克
飘渺一人
十年程序猿,早期研究各类源码,现在致力于新产品先的推进,把技术和思维转化为利润
展开
-
Java控_01原创工具类(001)_深度的对象非null转换工具V1.0
Java控01原创工具类(001)深度的对象非null转换工具V1.01、目标需求综述:任意对象及其属性(实例变量)转换为非null对象关键点:任意对象、包括集合容器对象内所有属性,包括父类的属性属性类型包括基本类型、枚举、自定义类、内部类、数组、常用集合容器(List、Set以及Map)每个属性也需要做同样的非null处理我们在实现之前,先准备一个测试用的复杂类,包含我们上述的所有需求。原创 2016-08-07 11:26:17 · 2773 阅读 · 3 评论 -
Java千百问_02基本使用(014)_mac系统如何管理环境变量
点击进入_更多_Java千百问-基本使用1、mac系统如何管理环境变量mac系统中管理环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量。具体配置方法如下:系统级通过修改./etc/profile文件来配置,全局(公有)配置,不管是哪个用户,登录时都会读取该文件。不建议修改这个文件。用户级./etc/bashrc原创 2016-07-30 09:08:52 · 2071 阅读 · 1 评论 -
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中提供了对应的实现类。主要类如下图:下原创 2016-07-24 10:28:16 · 2228 阅读 · 0 评论 -
Java千百问_09基础类库(003)_java.math包有什么功能
点击进入_更多_Java千百问-基础类库1、java.math包有什么功能java.math包提供了java中的数学类。包括基本的浮点库、复杂运算以及任意精度的数据运算。主要类如下图:下面介绍math中的类:任意长度整形 BigInteger,任意长度不可变整形。由于基本类型的整形长度有限,所以java提供了任意长度任意精度的整形。提供了种运算方法。继承于Number。 MutableBig原创 2016-07-24 09:48:34 · 2554 阅读 · 1 评论 -
Java千百问_09基础类库(002)_util包有什么功能
点击进入_更多_Java千百问-基础类库1、util包有什么功能java.util包提供了java中的基础工具类。包括基本的集合框架等基础类以及通用的工具类。主要类如下图:大体将java.util包分为两类:集合、工具,下面分别介绍其中比较常用的类:集合位集合 BitSet,只存储0、1的集合。数据集合 Collection,常用集合容器,包括列表List、数据集Set、队列Queue。原创 2016-07-24 08:20:50 · 3104 阅读 · 8 评论 -
Java千百问_09基础类库(001)_lang包有什么功能
点击进入_更多_Java千百问-基础类库1、lang包有什么功能java.lang包是java语言的核心,它提供了java中的基础类。包括基本Object类、Class类、String类、基本类型的包装类、基本的数学类等等最基本的类。我们介绍一下Java 8中的java.lang包。主要类如下图:大体将java.lang包分为三类:类型、工具、系统,下面分别介绍其中比较常用的类:类型对象基类原创 2016-07-24 07:35:51 · 2568 阅读 · 1 评论 -
Java千百问_02基本使用(015)_java如何通过汇编方式运行
点击进入_更多_Java千百问-基本使用1、java如何通过汇编方式运行java本身不能通过汇编方式运行。但是,我们可以通过某些插件,在运行中将java代码解释为汇编指令,让我们能够通过分析执行的汇编指令来查找一些问题,也可以帮助我们分析和理解JVM是如何解释和编译的(当然java本身的编译和运行和汇编无关)。PrintAssembly是JVM的一个运行参数,它允许我们获取在控制台打印java代码翻原创 2016-07-23 08:40:40 · 3592 阅读 · 3 评论 -
Java千百问_01基本概念(004)_Java都能做些什么
点击进入_更多_Java千百问1、Java都能做些什么在讨论Java能干什么之前,我们要说一下软件系统的体系结构。你不知道Java是什么?请看这里:什么是Java2、什么是纯C架构系统完全脱离网络就可独立使用的软件系统(即客户端C,client),这类软件不受限于网络,只依赖于操作系统。 如:PC上的word、视频播放器等软件。3、什么是C/S架构系统拥有自己独立的一个或多个服务端系统(即服务端S原创 2016-07-17 11:02:42 · 2875 阅读 · 1 评论 -
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原创 2016-07-17 10:59:29 · 3466 阅读 · 1 评论 -
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(原创 2016-07-17 10:16:57 · 3400 阅读 · 0 评论 -
Java千百问_01基本概念(001)_什么是Java
点击进入_更多_Java千百问1、什么是JavaJava是一种开发语言(核心特点:跨平台,面向对象,名称由来看这里:J2EE里面的2是什么意思),对于开发者来讲,Java基本等于Jdk。Jdk的版本介绍看这里:[Java都有那些版本][3]开发人员一般通过IDE(Eclipse、NetBeans、JBuilder等)编写、编译Java代码(在远古没有IDE的时代,都是用文本编辑器编写,使用javac原创 2016-07-17 10:15:43 · 3169 阅读 · 0 评论 -
Java千百问_02基本使用(013)_linux系统如何管理环境变量
点击进入_更多_Java千百问1、linux系统如何管理环境变量我们都知道windows的环境变量的配置已经完全被图形化了,我们可以在我的电脑的属性中简单的进行配置,那么对于linux这样没有图形化配置的操作系统应该如何配置呢?我们具体来看:linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量。具体配置原创 2016-07-10 10:05:36 · 2861 阅读 · 0 评论 -
Java千百问_08JDK详解(019)_jdk工具包有哪些工具
点击进入_更多_Java千百问jdk工具包有哪些工具JDK工具包中提供了很多工具和实用的程序。涵盖了基本工具( javac, java, javadoc, apt, appletviewer, jar, jdb, javah, javap, extcheck),安全工具,国际化工具,RMI工具,IDL, RMI-IIOP工具,部署工具,java插件工具,java Web工具,监控管理工具,故障排查工原创 2016-07-10 10:01:22 · 3518 阅读 · 0 评论 -
Java千百问_08JDK详解(018)_JConsole是什么
点击进入_更多_Java千百问1、JConsole是什么JConsole是一个Java程序性能分析器,可以从命令行或在终端中运行。可以用来监控Java程序的性能以及跟踪代码。同时在com.sun.tools.jconsole包中提供了一组接口,允许访问JConsole,对线程、内存、类、对象进行分析和统计。2、如何使用JConsole工具我们这里主要介绍jconsole工具的用法,在JAVA_HOM原创 2016-07-10 09:59:41 · 3169 阅读 · 0 评论 -
Java千百问_03基础语法(022)_元注解是什么
点击进入_更多_Java千百问1、元注解是什么了解注释看这里:注释是什么 了解自定义注解看这里:[如何自定义注解][3] [3]:元注解就是负责注解其他注解。Java 5定义了4个标准的元注解(meta-annotation):@Target、@Retention、@Documented、@Inherited,这些元注解的类在java.lang.annotation包中,具体如下:@Target原创 2016-07-10 08:26:51 · 2784 阅读 · 0 评论 -
Java千百问_03基础语法(021)_如何自定义注解
点击进入_更多_Java千百问color=”#ff0000”1、如何自定义注解要学习使用注解,我们需要了解注解,并且了解java提供的常见注解。更重要的是学会自定义注解。了解注释看这里:注释是什么 我们自定义注解需要使用@interface关键字,具体语法如下:public @interface 注解名 {定义体} default {默认值}使用@interface自定义注解时,自动继承了java原创 2016-07-09 09:48:52 · 3006 阅读 · 0 评论 -
Java千百问_01基本概念(017)_内存物理地址在CPU中如何形成
点击进入_更多_Java千百问1、什么是内存的物理地址我们通过8086CPU来说明内存地址是如何形成的。首先我们要了解物理地址,当CPU需要访问一个内存单元时,需要给出内存单元的地址,而每一个内存单元在物理内存空间中都有一个唯一的地址,即可以通过这个地址定位到内存单元,而这个地址即为物理地址。CPU通过地址总线将一个内存单元的物理地址送入存储器,而后CPU便可以通过这个物理地址来访问这个物理地址所指原创 2016-07-09 09:20:32 · 3489 阅读 · 0 评论 -
Java千百问_08JDK详解(017)_Javadoc是什么
点击进入_更多_Java千百问1、Javadoc是什么javadoc是Sun公司提供的一个技术,它从程序源代码中抽取类、方法、成员等注释,形成一个和源代码配套的API帮助文档。也就是说,只要在编写程序时以一套特定的标签作注释,在程序编写完成后,通过Javadoc就可以形成开发文档了。了解注释看这里:注释是什么2、如何使用Javadocjava为javadoc技术独立出了一个工具,它位于JAVA_HO原创 2016-07-09 09:05:16 · 3003 阅读 · 0 评论 -
Java千百问_08JDK详解(016)_AttachAPI是什么
点击进入_更多_Java千百问1、AttachAPI是什么Attach API是Sun公司提供的一套扩展API,它并不是Java的标准API。顾名思义,Attach,为JVM附加某些程序。简单来说,就是把一个程序连接到一个正在运行的JVM上,连接之后,这段程序就可以在JVM中运行。这段程序被称为JVMTI Agent程序。我们使用它可以很方便地在运行过程中动态地设置加载代理类(JVMTI Agent原创 2016-07-09 07:50:32 · 2954 阅读 · 0 评论 -
Java千百问_06数据结构(025)_用二进制如何表示浮点型数值
点击进入_更多_Java千百问1、用二进制如何表示浮点型数值我们再了解二进制如何表达浮点型数值前,需要先了解用二进制如何表示整型数值:用二进制如何表示整型数值 由于计算机只认识0、1二进制,所以与表示整数一样,浮点数值最终也都会被解释为二进制机器码,与整型不同的是,所有由计算机储存的浮点类型,都是通过运算转换为十进制的,所以都是高度近似值,并不可能100%精确。具体规则如下:遵循Ieee754标原创 2016-07-03 10:51:37 · 3789 阅读 · 2 评论 -
Java千百问_06数据结构(024)_用二进制如何表示整型数值
点击进入_更多_Java千百问1、用二进制如何表示整型数值我们都知道,计算机只认识0、1二进制,我们一般操作的寄存器和存储单元也都只认识二进制,我们称一个二进制为一个bit(位),一般32位计算机的寄存器允许操作32bit的数据,即32个0或1,由于书写过长,我们一般使用十六进制表示(每两个十六进制成为一个byte字节,即8bit=1byte)。例如:1111 1111 1111 1111 1111原创 2016-07-03 10:44:03 · 3865 阅读 · 1 评论 -
Java千百问_06数据结构(023)_基本数据类型在内存中如何存放
点击进入_更多_Java千百问1、基本数据类型在内存中如何存放了解基本数据类型看这里:java有哪8种基本数据类型 对于java中的8种基本数据类型,可以通过如下方式赋值给变量赋值。int a = 3;float b = 4.0f;a = a + 2;8中基本数据是将具体值直接存放在栈中,在发生变更时,将具体值替换为新的值。具体如下:了解java如何管理内存看这里:jvm是如何管理内存的 了解j原创 2016-07-03 09:52:10 · 2993 阅读 · 0 评论 -
Java千百问_02基本使用(012)_如何编写非阻塞SocketChannel程序
点击进入_更多_Java千百问1、如何编写非阻塞SocketChannel程序了解Socket看这里:Socket是什么 了解 SocketChannel看这里:Socket、SocketChannel有什么区别使用SocketChannel的最大好处就是可以进行非阻塞IO,每次链接后都会直接返回,不会阻塞线程。将需要多个线程的任务通过几个线程就能完成,降低了了性能消耗。了解阻塞、非阻塞看这里:阻原创 2016-07-03 07:53:51 · 2795 阅读 · 0 评论 -
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内部有很大的区别,但原创 2016-07-02 11:53:38 · 3882 阅读 · 1 评论 -
Java千百问_08JDK详解(015)_JVMTI提供哪些功能
点击进入_更多_Java千百问1、JVMTI提供哪些功能了解JVMTI看这里:JVMTI是什么 编写JVMTI程序看这里:如何编写JVMTI agent程序 JVMTI 的功能非常丰富,包含了虚拟机中线程、内存堆/栈、类/方法/变量、事件/定时器处理、代码调试等多种功能,这里我们介绍一些常用的功能。调试功能调试功能是JVMTI的基本功能之一,这主要包括了设置断点、调试等,在JVMTI里面,设置断原创 2016-07-02 11:04:01 · 2930 阅读 · 0 评论 -
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原创 2016-07-02 10:05:15 · 3658 阅读 · 0 评论 -
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是原创 2016-07-02 08:45:26 · 4053 阅读 · 0 评论 -
Java千百问_08JDK详解(012)_JPDA是什么
点击进入_更多_Java千百问1、JPDA是什么我们可以通过常见的Java IDE提供的图形界面调试工具进行代码调试,甚至可以使用JDK自带的jdb工具,以文本命令的形式来调试Java 程序,这些形形色色的调试工具都是通过JPDA开发的。JPDA(Java Platform Debugger Architecture)是 Java平台调试体系结构的缩写,通过JPDA提供的API,开发人员可以方便灵活原创 2016-06-26 10:04:32 · 4755 阅读 · 0 评论 -
Java千百问_03基础语法(020)_注解、注释有什么区别
java注释注解×注释注解区别×注释注解混淆×java注释注解区别×注解与注释不同点× 点击进入_更多_Java千百问1、注解、注释有什么区别了解注释看这里:注释是什么 了解注解看这里:注解是什么注解和注释很多人会混淆,它们之间的应用场景和具体使用完全不同,具体如下:用途不同 注解通过标注包、类、字段、方法、局部变量、方法参数等元素,告诉JVM这些元素的附加信息(元信息)。 注释是用来告诉原创 2016-06-26 09:50:07 · 4388 阅读 · 0 评论 -
Java千百问_03基础语法(019)_注解是什么
点击进入_更多_Java千百问1、注解是什么java中的注解(Annotation),也叫元数据。是Java 5以后版本引入的一个特性。注解与类、接口、枚举是在同一个层次,可以用来标注包、类、字段、方法、局部变量、方法参数等元素,达到对这些元素的描述和说明。注解是可以允许jvm在运行中读取它,这一点与注释完全不同。并且包含多种加载策略,可以灵活配置。2、注解有哪些加载策略注解包含3中可配置的加载策略原创 2016-06-26 09:08:53 · 3363 阅读 · 0 评论 -
Java千百问_01基本概念(015)_阻塞、非阻塞有什么区别
点击进入_更多_Java千百问1、阻塞、非阻塞有什么区别在进行网络编程时,我们通常会看到同步、异步、阻塞、非阻塞四种调用方式以及他们的组合。 了解同步、异步看这里:同步、异步有什么区别 其中阻塞方式、 非阻塞方式主要是针对服务端(server)的,具体如下:阻塞(Block)阻塞调用是指调用结果返回之前,当前线程会被挂起。挂起即线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线原创 2016-06-26 08:25:53 · 4496 阅读 · 1 评论 -
Java千百问_03基础语法(018)_注释是什么
点击进入_更多_Java千百问1、注释是什么java中的注释和其他编程语言中的注释一样,注释的内容不会被编译运行,只是源代码中对代码的解释说明。 通过添加代码注释可以提高源代码的可读性,使得Java程序条理清晰,易于区分代码行与注释行。另外,通常还会在类、方法或者代码段开头加入作者、添加/修改时间、程序版本以及代码功能等内容注释,方便后来的维护以及程序员的交流。(当然,对于好的代码,不写注释也能够原创 2016-06-25 10:06:42 · 3088 阅读 · 0 评论 -
Java千百问_01基本概念(014)_同步、异步有什么区别
点击进入_更多_Java千百问1、同步、异步有什么区别在进行网络编程时,我们通常会看到同步、异步、阻塞、非阻塞四种调用方式以及他们的组合。 了解阻塞、非阻塞看这里:[阻塞、非阻塞有什么区别][2] [2]:其中同步方式、异步方式主要是由客户端(client)控制的,具体如下:同步(Sync)所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作。 根据这个定义,原创 2016-06-25 09:49:40 · 3429 阅读 · 2 评论 -
Java千百问_08JDK详解(011)_jnlp文件是什么
点击进入_更多_Java千百问1、jnlp文件是什么JNLP(Java Network Launching Protocol ,java网络执行协议文件)是java提供的一种可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url链接打开一个java应用程序。Java桌面应用程序可以通过JNLP的方式发布。如果版本升级后,不需要再向所有用户发布版本,只需要更新服务器的版本,原创 2016-06-25 08:49:01 · 3825 阅读 · 0 评论 -
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原创 2016-06-25 08:18:06 · 5906 阅读 · 2 评论 -
Java千百问_02基本使用(011)_如何编写单线程Socket程序
点击进入_更多_Java千百问1、如何编写单线程Socket程序了解Socket看这里:Socket是什么 编写Socket最简单的就是单线程的Socket,但基本上是没有实用意义的,因为在实际的应用中基本上是不止于一个Client的。一般都是多线程Socket程序。了解多线程Socket看这里:如何编写多线程Socket程序 要编写Socket,需要了解java.net包中提供了两个类Sock原创 2016-06-19 12:26:13 · 2603 阅读 · 1 评论 -
Java千百问_01基本概念(013)_Socket、SocketChannel有什么区别
点击进入_更多_Java千百问1、Socket、SocketChannel有什么区别了解Socket看这里:Socket是什么 Socket、SocketChannel二者的实质都是一样的,都是为了实现客户端与服务器端的连接而存在的,但是在使用上,却有很大的区别。具体如下:所属包不同 Socket在java.net包中,而SocketChannel在java.nio包中。异步方式不同 从包的不原创 2016-06-19 10:46:08 · 7064 阅读 · 2 评论 -
Java千百问_02基本使用(012)_如何编写多线程Socket程序
点击进入_更多_Java千百问1、如何编写多线程Socket程序了解Socket看这里:Socket是什么 多线程Socket与单线程类似,只是使用了多线程的方式来管理连接,主线程负责接收连接,在接到连接后变创建新的线程,每个线程负责与自己的客户端进行通信。了解单线程Socket看这里:如何编写单多线程Socket程序与单线程Socket例子相比来说,服务端可以与多个客户端进行通信了,不过多线程频原创 2016-06-19 10:14:34 · 2567 阅读 · 2 评论 -
Java千百问_08JDK详解(009)_java程序如何运行
点击进入_更多_Java千百问1、java程序如何运行java代码首先需要进行编译,编译为.class类文件,然后通过java命令(执行器)去执行。java命令位于jdk/bin目录下。了解如何编译看这里:javac是什么 它通过启动Java运行时环境(JRE),然后加载指定类(JRE在启动时会搜索以下路径进行类加载:引导类路径,扩展包路径,用户的类路径),调用类的main()方法(了解更多mai原创 2016-06-19 09:01:09 · 2835 阅读 · 3 评论 -
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原创 2016-06-19 07:19:37 · 3155 阅读 · 3 评论