java数字相关知识
-
Java 添加、验证PDF 数字签名在设置文档内容保护的方法中,除了对文档加密、添加水印外,应用数字签名也是一种有效防伪手段。数字签名的文件很容易验证,并且具有较高的权威性和可信度。在Adobe PDF文档中,有直接添加或验证数字签名的功能和方法,下面的文章中,将通过Java程序来介绍添加数字签名到PDF文档,以及验证签名是否有效。使用工具:Spire.PDF for JavaJar文件获取及导入方法:方法1:可通过官网下载jar文件包。下载后,解压文件,并将lib文件夹下的Spire.Pdf.jar文件导入到Java程序。参考如下导入效果:(这里程序将jar文件分别导入了两个module)方法2:可通过maven仓库安装导入。Java代码示例【示例1】添加数字签名到PDFimport com.spire.pdf.*; import com.spire.pdf.graphics.PdfImage; import com.spire.pdf.graphics.PdfTrueTypeFont;
-
Java 字节的常用封装一. Java 的字节 byte (字节) 是 Java 中的基本数据类型,一个 byte 包含8个 bit(位),byte 的取值范围是-128到+127。 byte 跟 Java 其他基本类型的关系: 基本类型 所占字节数 备注 byte 1 short 2 int 4 long 8 char 2 float 4 double 8 boolean 1、4 《Java虚拟机规范》给出了4个字节,和boolean数组1个字节的定义,具体还要看虚拟机实现是否按照规范来 二. 常用封装 由于工作关系,我封装了一个操作字节的库 github 地址:https://github.com/feng
-
Java 添加、检测和删除Excel数字签名Excel中可添加数字签名以供文档所有者申明文档的所有权或有效性。本篇文章以Java代码示例介绍如何在Excel文档中对数字签名功能进行相关操作,将分别从添加签名到Excel、检测Excel文档是否已签名,以及删除Excel文档等3种需求来展示通过Java代码来实现的方法。【本次代码测试环境】Excel版本:2013编译环境:IntelliJ IDEA2018JDK版本:1.8.0Excel库工具:spire.xls.jar 4.3.4Pfx数字证书(及密码)方法解释:Spire.Xls.jar提供了Workbook.addDigitalSignature()方法用于添加数字签名,Workbook.isDigitallySigned()用于检测文档是否签名,以及Workbook.removeAllDigitalSignatures()可删除所有签名。下面分别以三个代码块来展示如何实现。1. 添加签名import com.spire.xls.*;import com.spire.xls.digital.Cer
-
Java-------字符流和字节流(III)字符流 1) 编码问题 2)认识文本和文本文件 java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码) 文件是byte byte byte ...的数据序列 文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果 3)字符流(Reader Writer)---->操作的是文本文本文件 字符的处理,一次处理一个字符 字符的底层任然是基本的字节序列 字符流的基本实现 InputStreamReader 完成byte流解析为char流,按照编码解析 OutputStreamWriter 提供char流到byte流
java数字相关课程
java数字相关教程
- Java 字符串 在 Java 基本数据类型一节中,我们已经知道 Java 中有两大数据类型:一个是基本数据类型,另一个是引用数据类型。字符串(String)便属于引用数据类型。字符串在 Java 程序中无处不在,其实我们在第一个 Java 程序中就已经使用过了字符串,打印语句中双引号中的Hello World就是一个字符串:System.out.println("Hello World");本小节我们将介绍字符串的基础知识,告诉你如何创建一个字符串,也会讲到 Java 13支持的多行字符串的创建方法和注意事项,还会介绍很常用的字符串的连接操作,最后我们也会着重讨论字符串的一个重要特性:不可变性。需要注意的是,String是在java.lang包中定义的内置类,了解它的相关操作需要面向对象的前置知识,为了减少初学者的困扰,字符串的相关操作不会在本小节讨论。我们将在完成面向对象的学习后专门讲解String类。
- 5. Java ByteBuffer 的字节序 那么 JVM 作为一部独立运行的机器,它的字节序又是如何呢?通过 Java 程序测试字节序的思路和 C 程序的一致,代码片段如下: public static void checkEndian() { int x = 0xAABBCCDD; ByteBuffer buffer = ByteBuffer.allocate(Integer.BYTES); buffer.putInt(x); byte[] lbytes = buffer.array(); for (byte b : lbytes){ System.out.printf("%X\n", b); } }关于 JAVA 程序需要说明的是 JAVA 中没有指针的概念,所以不能通过取地址的方式直接打印内存的值。需要借助 JAVA 的 ByteBuffer,将 int 型数值存储到 ByteBuffer 中,然后将 ByteBuffer 转换成字节数组,通过打印数组的方式来达到我们的目的。引用 ByteBuffer 需要通过语句 import java.nio.ByteBuffer; 导入ByteBuffer 类。JAVA 测试结果:AABBCCDD从输出结果可以看出 ByteBuffer 默认是以大端序来存储整数的,因为 Java 虚拟机本身采用的就是大端序,ByteBuffer 也要和整个系统保持一致。当然,ByteBuffer 也提供了 ByteBuffer order() 和 ByteBuffer order(ByteOrder bo) 方法,用来获取和设置 ByteBuffer 的字节序。另外,像一些多字节 Buffer,如 IntBuffer、LongBuffer,它们的字节序规则如下:如果多字节 Buffer 是通过数组(Array)创建的,那么它的字节序和底层系统的字节序一致。如果多字节 Buffer 是通过 ByteBuffer 创建的,那么它的字节序和 ByteBuffer 的字节序一致。测试程序如下: public static void checkByteBuffer(){ ByteBuffer byteBuffer = ByteBuffer.allocate(Long.BYTES); long [] longNumber = new long[]{ 0xAA,0xBB,0xCC,0xDD }; LongBuffer lbAsArray = LongBuffer.wrap(longNumber); System.out.println("The byte order for LongBuffer wrap array: " + lbAsArray.order()); LongBuffer lbAsByteBuffer = byteBuffer.asLongBuffer(); System.out.println("The byte order for LongBuffer from ByteBuffer: " + lbAsByteBuffer.order()); }执行结果:The byte order for LongBuffer wrap array: LITTLE_ENDIANThe byte order for LongBuffer from ByteBuffer: BIG_ENDIAN如果在上面的 checkByteBuffer 方法中,首先将对象 byteBuffer 的字节序设置为 ByteOrder.LITTLE_ENDIAN(通过 ByteBuffer 的 order 方法设置),然后再创建 lbAsByteBuffer 对象,那么 lbAsByteBuffer 的字节序该是什么呢?
- 2. Java 字节流结构 Java 的 java.io.* 包中包含了 InputStream 和 OutputStream 两个类,是 Java 字节流 I/O 的基础类,其他具体的 Java I/O 字节流功能类都派生自这两个类。图中只列出了我们 Socket 编程中常用的 I/O 字节流类。java.net.SocketInputStream 类是 Socket 的输入流实现类,它继承了 java.io.FileInputStream 类。java.net.SocketOutputStream 类是 Socket 的输出流实现类,它继承了 java.io.FileOutputStream 类,下来我们逐一介绍这些类的基本功能。
- 5.1 切割为字串数组 String[] split(String regex)方法可将字符串切割为子串,其参数regex是一个正则表达式分隔符,返回字符串数组。例如,我们使用空格作为分隔符来切割I love Java字符串,结果将返回含有3个元素的字符串数组:624运行结果:I love Java 注意,有几种特殊的分隔符:* ^ : | . \,要使用转义字符转义。例如:// 以*切割String str2 = "I*love*Java";String[] strArr2 = str2.split("\\*");// 以\切割String str3 = "I\\love\\Java";String[] strArr4 = str3.split("\\\\");// 以|切割String str4 = "I|love|Java";String[] strArr4 = str4.split("\\|");另外,还有一个重载方法String[] split(String regex, int limit),其第二个参数limit用以控制正则匹配被应用的次数,因此会影响结果的长度,此处不再一一举例介绍。
- Java 数组 数组在编程语言中是非常重要的数据结构。本小节我们来一起学习 Java 数组,通过本小节的学习,你将了解到数组的基本概念,如何声明数组以及数组的声明有哪些方式,如何初始化数组以及数组初始化有哪些方式,数组的常用操作有哪些,多维数组的声明、创建、初始化以及迭代等等。多维数组部分将以二维数组进行为例讲解,理解了二维数组,再去理解多维数组就相对容易了。
- 4. Java ByteOrder 我们知道 Java 是平台无关的编程语言,它是运行在 Java 虚拟机之上的,而 Java 虚拟机又是运行在 Native 系统上的。那么,如何通过 Java 程序检测系统本身的字节序呢?可以通过 java.nio.ByteOrder 类来测试当前 Native 系统的字节序。调用 ByteOrder 的 nativeOrder 方法,就能返回系统本身的字节序。另外,ByteOrder 还定义了两个 ByteOrder 类型的常量常用:ByteOrder.BIG_ENDIAN 表示大端序ByteOrder.LITTLE_ENDIAN 表示小端序检测程序也很简单,如下:public static void testByteOrder(){ System.out.println("The native byte order: " + ByteOrder.nativeOrder());}检测结果如下:The native byte order: LITTLE_ENDIAN
java数字相关搜索
-
j2ee
j2ee是什么
jar格式
java
java api
java applet
java c
java jdk
java list
java map
java script
java se
java socket
java swing
java switch
java web
java xml
java 程序设计
java 多线程
java 环境变量