Java
文章平均质量分 89
以实战出发,记录Java开发中的一些事
xcbeyond
CSDN西安城市开发者社区主理人、云原生技术社区主理人。(欢迎共办线下活动,WX联系:xcbeyond001)
一个热爱编程、热爱技术的人,乐于技术输出、分享。
展开
-
Java应用中各类环境变量的优先级及最佳实践
深入理解这些环境变量的优先级关系,将使得Java应用程序更加灵活和易于维护。本文将详细介绍这些环境变量的优先级,结合实际场景提供最佳实践,以帮助开发人员更好地配置和管理Java应用程序。原创 2024-02-07 13:24:52 · 1177 阅读 · 0 评论 -
解读《Java开发手册(泰山版)》- 会当凌绝顶,一览众山小 (附下载地址)
阿里的《Java开发手册》被Java开发者所拜读,基本人手一册,就在前几天(2020.04.22)发布了泰山版 -会当凌绝顶,一览众山小,而这次发布新增了很多干货内容,在此,给大家分享...原创 2020-04-25 21:05:13 · 1480 阅读 · 0 评论 -
性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(一)
前言在平时工作过程中,有时会遇到OutOfMemoryError,我们知道遇到Error一般表明程序存在着严重问题,可能是灾难性的。所以找出是什么原因造成OutOfMemoryError非常重要。现在向大家引荐Eclipse Memory Analyzer tool(MAT),来化解我们遇到的难题。如未说明,本文均使用Java 5.0 on Windows XP SP3环境。转载 2018-01-15 10:56:48 · 770 阅读 · 0 评论 -
Java实现远程桌面连接
最近因为项目的原因,需要在系统(基于Java语言的)中调用远程桌面连接登录到其它三方系统,于是需要采用Java实现远程桌面连接。Java嘛,开源代码很多,于是搜集资料,找到了一个不错的开源Java RDP项目,即:properJavaRDP,关于它的详细资料:http://properjavardp.sourceforge.net/1.官网下载源码:https://source...原创 2017-09-01 15:36:30 · 15328 阅读 · 24 评论 -
WebStart JNLP参数传递
通过WebStart 启动打开JNLP文件,虽说可以通过url在浏览器中直接打开,但其中参数的传递该如何弄呢?有两种方法:1.修改WebStart源码 需修改jnlp.sample.servlet.JnlpFileHandler.java中的specializeJnlpTemplate 方法原方法为:private String specializeJnlpTemplate原创 2017-08-17 17:19:00 · 2211 阅读 · 0 评论 -
JNLP文件详细说明
Java Web Start 是一个 helper 应用程序,它和 WEB 浏览器关联在一起。当用户点击指向一个特定的launch 文件 (JNLP 文件 ) 时,会促使浏览器装载 java Web Start, JAWS 然后自动下载、缓冲、运行给定的基于 Java 技术的应用程序。整个过程无需和用户进行交互。JNLP URLs 也可以从 JAWS 应用程序管理直接打开并且能制成书签 ,转载 2017-08-16 17:55:10 · 9443 阅读 · 2 评论 -
Java Web编程技术基础
在Java Web编程中,不得不了解一些基础技术(概念),如:Internet、www、浏览器、TCP/IP协议、Web服务器等。在此,我只涉及以下几处:1、TCP/IP协议 协议,在计算机网络中的计算机需要相互通信、传输数据,所遵循的统一的沟通规则。有人也曾形象的把协议称之为“世界语”,是一种公认交流的规则而已。通常TCP/IP协议不是靠单指一个协议,而是由相关的许多协原创 2012-07-08 01:09:42 · 2014 阅读 · 0 评论 -
XML文件解析
XML解析: 在xml文件中由于更多的是描述信息的内容,所以在得到一个xml文档之后应该利用程序按照里面元素的定义名称取出对应的内容,这一过程就称为xml解析。解析xml文件的4种方式:1.DOM 2.SAX 3.JDOM 4.DOM4J文档对象模型(DOM)DOM---对象化的XML数据接口 它定义了XML文档的逻辑结构,给出了原创 2012-08-06 23:01:46 · 1332 阅读 · 0 评论 -
jvm性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(二)
前言在本文中,将介绍MAT如何根据heapdump分析泄漏根源。由于测试范例可能过于简单,很容易找出问题,但我期待借此举一反三。一开始不得不说说ClassLoader,本质上,它的工作就是把磁盘上的类文件读入内存,然后调用Java.lang.ClassLoader.defineClass方法告诉系统把内存镜像处理成合法的字节码。Java提供了抽象类ClassLoader,所有用户自转载 2018-01-15 10:35:44 · 1120 阅读 · 0 评论 -
JVM参数配置大全
当你看见类似如下参数配置时,或许一脸闷逼的模样。这就是JVM相关参数的配置。/usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=300M -XX:SurvivorRatio=...原创 2018-05-11 16:59:49 · 474 阅读 · 0 评论 -
线程安全性
线程的使用一直是难以把控掌握的。如果使用得当,线程可以有效地降低程序的开发和维护等成本,同时提升复杂应用程序的性能。在GUI应用程序中,提高用户界面的响应灵敏度,在服务器应用程序中,提升资源利用率以及系统吞吐量。 然而,如果使用不当,线程将会带来一系列不可预估的风险。Java对线程的支持其实就是一把双刃剑。虽然Java明确是一种跨平台(编写异常,随处运行)的语言,JDK并提供了相...原创 2018-05-08 23:28:19 · 272 阅读 · 0 评论 -
[git使用技巧] git提交忽略不必要的文件或文件夹
在使用git用来管理代码后,如果采用eclipse中git插件,可以更加便利的在eclipse中进行代码的提交及更新操作。对于创建的maven项目而言,本地工程项目中往往会有一些本地项目配置文件,而这些配置文件却是不需要提交至版本库的,如maven项目的target文件夹、bin文件夹等。如下图,实际开发中我们只需提交:src、pom.xml、.gitignore等。(.gitig...原创 2018-06-08 09:07:45 · 2625 阅读 · 0 评论 -
gRPC的使用
1、概述 gRPC是由google开发的,是一款语言中立、平台中立、开源的RPC(Remote Procedure Call,远程过程调用)框架。 在gRPC里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC框架类似,gRPC也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(...原创 2019-03-11 15:56:00 · 7850 阅读 · 5 评论 -
如何利用JWT来实现对API的授权访问
什么是JWTJWT(JSON Web Token)是一个开放标准(RFC 7519),它定义了一种紧凑且独立的方式,可以在各个系统之间用JSON作为对象安全地传输信息,并且可以保证所传输的信息不会被篡改。JWT通常有两种应用场景: 授权。这是最常见的JWT使用场景。一旦用户登录,每个后续请求将包含一个JWT,作为该用户访问资源的令牌。 信息交换。可以利用JWT在各个系统之间...原创 2019-05-07 23:56:34 · 991 阅读 · 1 评论 -
HTTP方式文件分片断点下载
前言 在进行大文件或网络带宽不是很好的情况下,分片断点下载就会显得很有必要,目前各大下载工具,如:迅雷,都是很好的支持分片断点下载功能的。本文就通过http方式进行文件分片断点下载,进行实战说明。HTTP之Range 在开始之前有必要了解一下相关概念及原理,即:HTTP之Range,才能更好的理解分片断点下载的原理。什么是Range Range是一个H...原创 2019-05-11 12:05:25 · 8262 阅读 · 8 评论 -
Maven的爱恨情仇
前言在如今的互联网项目开发当中,特别是Java开发中,可以说Maven是随处可见。Maven的仓库管理、依赖管理、继承和聚合等特性为项目的构建提供了一整套完善的解决方案,可以说如果你搞不懂Maven,那么一个多模块的项目足以让你头疼,依赖冲突就会让你不知所措,甚至搞不清楚项目是如何运行起来的。相信使用过Maven的人,一定曾经被Maven伤害过,但又不得不去让它来伤害,谁让它能给项...原创 2019-05-25 15:18:12 · 2488 阅读 · 4 评论 -
Java统一异常处理(配置文件集中化定义)
0、前言 无论任何项目,都避免不了在运行期间出现的一些异常,并伴随着因业务逻辑的需要而给出相应的提示,使得系统变得更加友好,这类提示处理,我们统称为异常处理(exceptionahandling)。 在项目中异常处理所抛出的异常码、异常提示,都需要进行一定的封装,以确保异常的统一,提高程序的可维护性。而不是随心所欲的来进行异常提醒,如:一些硬编码异常信息(thro...原创 2019-06-02 15:24:33 · 2552 阅读 · 3 评论 -
Unsupported major.minor version 51.0解决办法
因为需要验证个东西,所以今天在服务器上面,修改了应用启动时的JAVA_HOME,变为jdk1.6,服务启动时,发现在解析Java类时报“Unsupported major.minor version 51.0”。将jdk换位1.7,就没不会报错。经分析发现,是由于编译程序时使用的jdk版本为1.7,而现在修改为1.6了,不同JDK版本而导致的。切记,在项目中一定保证编译和运行使用的JD原创 2017-03-31 12:22:07 · 1035 阅读 · 0 评论 -
杂谈socket编程
最近在写一些与网络编程相关的小工具,不得不再把网络编程的知识再回顾回顾了。一提起网络编程,势必局想到了一位核心人物Socket,是她撑起了网络编程的半边天,使得网络编程得以继续。 什么是Socket? 通常也称作"套接字",应用程序通过Socket向网络发出请求或者应答网络请求。它是在应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,用来组织传输的原创 2014-06-07 22:19:00 · 1375 阅读 · 0 评论 -
通过eclpise打jar包
通过Eclipse编写程序后,大家都希望像exe那样的程序一样来执行,而不是依赖编译来执行,因此,都会想到了把它打成jar包。一般都是用Eclipse来自动打包的吧,但有时打好的jar包,却无法正常运行而出现java.lang.NoClassDefFoundError的异常,令人郁闷至极。不要问我是怎么知道的,呜呜…… 其实,生成jar是有那种情况的,一种是不带第三方jar包的,另原创 2014-06-07 21:30:37 · 1389 阅读 · 0 评论 -
在eclipse中误创建了超长的文件夹而引发的“无法删除指定的文件名无效或太长”问题
今天由于在eclipse的使用中,建工程空间时,误产生了一个超长的文件夹而引发的“无法删除指定的文件名无效或太长”问题,经过查阅相关资料,最终找到了解决方案,分享如下:在http://download.zol.com.cn/detail/10/91484.shtml下载了robocopy,然后解压再把robocopy.exe放到系统文件夹systerm32里。试着在那个存在超长文件夹所在目原创 2012-03-10 21:13:41 · 2639 阅读 · 0 评论 -
Layout Managers(布局管理器)
import java.awt.*;import javax.swing.*;public class LayoutManagers { public static void main(String[] args) { JFrame frame=new JFrame(“Layout Managers”); frame.setDefaultCloseOperation(JFrame.原创 2012-03-10 21:41:21 · 1109 阅读 · 0 评论 -
关于Java对象序列化您不知道的5件事
Java对象序列化是JDK1.1中引入的一组开创性特性之一,用于作为一种将Java对象的状态转换为字节数组,以便存储或传输的机制,以后,仍可以将字节数组转换回Java对象原有的状态。Java对象序列化是JDK1.1中引入的一组开创性特性之一,之前51CTO也曾介绍过Java序列化的机制和原理,这里我们将使用Person来发现您可能不知道的关于Java对象序列化的5件事。51CT转载 2012-03-10 21:32:39 · 775 阅读 · 0 评论 -
String类常用方法
说明:①、所有方法均为public。 ②、书写格式: [修饰符] 返回类型>方法名([参数列表])> 例如:static int parseInt(String s) 表示此方法(parseInt)为类方法(static),返回类型为(int),方法所需要为String类型。1. char charAt(int index原创 2012-03-10 21:46:50 · 935 阅读 · 0 评论 -
如何将java程序直接运行(生成.jar文件)
我们都知道,每次要运行java程序的时候,总是要打开elplise或者在DOS下敲命令来一步一步的运行,感觉很麻烦的,难道有没有其他方法可以直接运行java程序吗?就像c、c++一样,可以直接运行.exe文件就可以直接运行,答案是肯定可以直接运行的,就是把java运行的相关东西打包起来,压缩在一个.jar文件里,就可以了,下次运行的时候就可以直接点击.jar文件来运行你的程序了。好了,还是讲讲如何原创 2012-03-10 21:34:58 · 4921 阅读 · 1 评论 -
JDK 中常用的包
java的学习中,我们会经常用到JDK中的包,也就是使用“import”导入,这些包往往会达到事半功倍的效果,因此学会使用它,是最为学习者必备掌握的。java.lang—-包含一些 Java 语言的核心类,包含构成 Java 语言设计基础的类。在此包中定义的最重要的一个类是“Object”,代表类层次的根,Java 是一个单根系统,最终的根就是“Object”,这个类会在后面讲到。Ja原创 2012-03-10 21:49:15 · 3909 阅读 · 0 评论 -
你确信你了解时间吗?
今天,我又在StackOverflow上看到一个关于时间的问题——为什么1927年12 月31日的午夜时间这么奇怪?提问题的这个人给了下面的一段java代码(我做一些修改,保证让你可以copy过去就可以编译运行) 我在其中高亮了几行,这个程序就是想比较一下“1927-12-31 23:54:07” 和 “1927-12-31 23:54:08” 差几秒,很明显,是差一转载 2012-03-28 01:35:30 · 639 阅读 · 0 评论 -
Java中堆、栈、常量池等概念解析
程序运行时,我们最好对数据保存到什么地方做到心中有数。特别要注意的是内存的分配。有六个地方都可以保存数据:(1) 寄存器。 这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部。然而,寄存器的数量十分有限,所以寄存器是根据需要由编译器分配。我们对此没有直接的控制权,也不可能在自己的程序里找到寄存器存在的任何踪迹。(2) 栈(stack)。转载 2012-03-13 00:02:03 · 707 阅读 · 0 评论 -
Java基础篇——基本数据类型
1、基本数据类型:(8种基本数据类型) 4个整型:int short long byte 默认类型:int 2个浮点型:double float 默认类型:double 1个字符型:char 1个布尔型: boolean 注:在使用每种数据类型时,切记不要超过其取值范围,以免出现溢出异常!原创 2012-03-13 19:46:29 · 1102 阅读 · 0 评论 -
java核心内容----分配管理
JAVA内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到以下区域:寄存器:我们在程序中无法控制 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 堆:存放用new产生的数据转载 2012-03-12 23:54:23 · 929 阅读 · 0 评论 -
Java对象池
在JDK5.0里,JVM在启动的时候会实例化9个对象池,这9个对象池分别用来存储8种基本数据类型的包装类对象和String对象。当我们直接用8种基本类型的包装类的对象或用双引号括起来一个字符串时,JVM就要在其对象池里面去找是否有一个相同的对象,如果有,就直接从对象池中拿这个现成的对象,如果没有,就在对象池里面创建一个新的对象。 1、基本类型的包装类对象池 Integer i1原创 2012-04-06 01:28:48 · 1721 阅读 · 0 评论 -
java基础篇——面向对象
引言: 面向对象的思想正是Java学习的核心部分,要是没有搞懂面向对象,那么就称不上学过Java,因此,搞懂面向对象是至关重要的。对于初学者而言,首次接触面向对象时,总感觉怪怪的,不知道究竟在干什么(我刚开始接触也是这种感觉,渐渐的就找到感觉了),这其实都是正常现象的,不然怎么有人说他是很抽象的啊。面向对象,简单的理解就是把一切事物按照它自己本有存在的特征、属性通过自然组织语言组原创 2012-04-02 00:39:01 · 1793 阅读 · 2 评论 -
大数运算
说明: 基于内存的有效运用,程序语言中规定了各种不同的数据型态,也因此变量所可以表达的最大整数受到限制,例如123456789123456789这样的整数就不可能储存在long变量中(例如C/C++等),我们称这为long数,这边翻为超长整数(避免与数据型态的长整数翻译混淆),或俗称大数运算。解法: 一个变量无法表示超长整数,则就使用多个变量,当然这使用数组最转载 2012-04-30 16:26:16 · 3000 阅读 · 0 评论 -
关于TreeSet的排序问题
TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。 1、自然排序TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然排序。(比较的前提:两个对象的类型相同)。 java提供了一个Comparable接口,该接口里定义了一个compareTo(Object原创 2012-04-26 17:12:20 · 9982 阅读 · 0 评论 -
Java笔试题分析
引言: 到目前为止,接触java总的时间大致也就是一年吧。在Java的学习过程中,我也无不例外的是跟着老师的步伐学习着,但学习了一段时间过后,就找了些笔试面试题目拿来看了看,发现面试题中的遇到的题目知识点都是那么的细微,平时没过多的注意,于此我开始有了自己新的学习方案:大体跟着老师的步伐走,自己下面再深入的学习探讨每一个知识点,做到“理解高于一切”的原则。其中一个重要的途径就是通过“原创 2012-04-30 16:36:45 · 2271 阅读 · 1 评论 -
抽象类和接口的区别,使用场景
1、相同点 A.两者都是抽象类,都不能实例化。 B.interface实现类及abstrctclass的子类都必须要实现已经声明的抽象方法。2.、不同点 A.interface需要实现,要用implements,而abstractclass需要继承,要用extends。 B.一个类可以实现多个interface,但一个类只能继承一个abstract...原创 2012-06-15 21:43:27 · 19855 阅读 · 2 评论 -
Java序列化的那些事
下面和大家分享的是java序列化的一些基础知识,希望能够带给大家帮助。1 Java 序列化技术概述Java 序列化技术可以使你将一个对象的状态写入一个Byte 流里,并且可以从其它地方把该Byte 流里的数据读出来。重新构造一个相同的对象。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化到数据库、文件等系统里。Java的序列化机制是RMI、EJB、JNNI等技术的技转载 2012-09-18 21:44:39 · 1736 阅读 · 0 评论 -
Java基础篇——数组
数组也是一种数据结构,是一种引用类型的数组类型,它是用来存放同一类数据类型的集合,通过下标可以访问数组中每一个元素。1、数组的声明:(必须要指明其类型) int[] ary; int ary[]; //不推荐的写法,(继承了C++ 的声明方式)这只是声明了整型数组变量ary(即:一个引用变量),而没有把ary初始化为一个真正的数组。2、初始化 1原创 2012-03-25 01:03:22 · 1264 阅读 · 0 评论