![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java程序设计
文章平均质量分 85
郝伟博士
郝伟,男,留日计算机博士,副研究员,硕士生导师。师从东京大学松崎公纪教授,主要研究方向为网络安全、并行计算与大数据,尤其是在网络环境下大数据安全性的研究。北京华云安信息技术有限公司首席研究员,中新网安技术研究员,上海莱镁晟信息科技有限公司技术顾问。参与国家973项目和国家科技重大专项各1项,主持国家科研项目1项,13项国家发明专利,各类论文25篇,合肥市政认定高层次人才。与清华大学、海克斯康、国防科技大学等多家单位有技术合作。
展开
-
【性能测试】使用自定义程序对CPU的程序运行性能进行测试
现在市面上可用的CPU的性能测试有很多,比如CPUZ, GeekBench, 鲁大师等。这些工具从不同的角度对CPU的性能进行测试评价,我们可以使用这些工具对CPU的性能有一定的了解。但是,对于一名开发人员来说,CPU的性能对程序的性能影响到底是怎样的,事实上并没有哪款软件以为这个目的服务的。因此,本文就通过一个求质数的Java代码对CPU的性能进行测试。通过这个程序,可以对 CPU执行Java程序的性能影响有初步的认识。原创 2022-02-13 21:28:07 · 2246 阅读 · 0 评论 -
【给力】.Net5.0 跨平台的计算性能已经与Java持平
本文对.Net5.0和Java在Macbook M1 Pro上进行性能测试,发现两者性能几乎相同。原创 2022-02-10 23:00:45 · 625 阅读 · 0 评论 -
一个自建的Java命令行解析参数类ArgumentsParser
文章目录1 简介2 参数格式定义3 类功能介绍3.1 初始化3.2 主要函数4 源代码5 输出结果6 小结1 简介在前文中,介绍了一个Python中的 argparse.ArgumentParser 类,能够实现对命令行输入参数的控制。搜索了一下,发现在Java中并没有提供相应的类。因此,为了在Java实现类似的功能,本文编写了一种用于处理main函数中的输入参考 String[] args 的类 ArgumentsParser。2 参数格式定义首先,对参数进行定义。一般而言,命令行中的输入参数通用原创 2021-05-09 11:46:48 · 699 阅读 · 1 评论 -
手工编译运行Servlet程序
手工编译运行Servlet程序2020/11/01 郝伟 参考 https://www.runoob.com/servlet/servlet-first-example.htmlStep 1: 编写Java类 MyServlet.java首先,MyServlet 类需要从 HttpServlet 派生,并实现 doGet 函数。import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class My原创 2021-01-10 07:20:10 · 721 阅读 · 0 评论 -
在JSP中引用统计刚刚记录访客的IP和链接
需求说明本文介绍了在使用JSP的时候,如何获得用户访问过链接的信息,并记录在本地的文件中。实现原理在任何JSP的页面的头部,添加内容<%@include file="counter.jsp"%>即可。只要用户访问此访问后,就能在 `visited_info.txt"中追加类似以下内容:20201120_145630.053 60.175.65.30 /home/index.jsp20201120_145720_762 60.175.65.30 /home/index.jsp...原创 2020-11-20 15:32:03 · 294 阅读 · 0 评论 -
使用Java对一个自然数进行因式分解
问题给定一个自然数,返回其因式分解,如:35: [5, 7]28: [2, 2, 7]46: [2, 23]512: [2, 2, 2, 2, 2, 2, 2, 2, 2]320: [2, 2, 2, 2, 2, 2, 5]3234: [2, 3, 7, 7, 11]算法对指定的自然数进行循环,每次循环中使用计数器i与之求余,如果可以整除则进行记录到一个List中,当除的值最终为1时,循环结果,最后将计算结果输出。代码import java.util.ArrayList;publ原创 2020-10-18 08:52:36 · 1314 阅读 · 2 评论 -
使用计算机求函数极限示例
问题求值:limx→∞4x2+x−4x2\lim_{x \rightarrow \infty} \sqrt{4x^2 + x} - \sqrt{4x^2}x→∞lim4x2+x−4x2数学方法上下同乘以 4x2−x+4x2\sqrt{4x^2 - x} + \sqrt{4x^2}4x2−x+4x2 得:limx→∞(4x2+x−4x2)(4x2−x+4x2)4x2+x+4x2=limx→∞4x2+x−4x24x2−x+4x2=limx→∞x4x2+x+4x2\lim_{x \rig原创 2020-10-13 14:08:12 · 3703 阅读 · 0 评论 -
多线程会占用大量的内存?NO,每个线程只会用几百KB内存。
文章目录1 问题描述2 测试原理3 测试数据4 测试结论附1:测试代码附2:一些测试图片1 问题描述今天讨论的时候,有人提出了这个的一个观点:多线程会占用大量的内存。事实上,前操作系统已经发展了半个多世纪,对多线程的调度已经达到了极高的效率,对CPU资源和内存资源的占用已经完全可以忽略。下面让我们通过一个测试来理解这个结论。2 测试原理在Windows操作系统下,启动10万个线程,比较前后内存的占用量,以计算出每个线程的内存占用情况。这里有几点注意:本测试结果不应该受语言影响,因为线程的调度原创 2020-09-23 20:46:50 · 5369 阅读 · 0 评论 -
一个对文本信息统计的熵增验证程序
文章目录简介熵的数学定义验证原理结论附:源代码简介熵增定律是基于第二热力学定律的著名定律,描述了任何一个系统,包括宇宙本身的熵都是不断增加的定律。本文通过对TXT格式的文章进行测试,以验证为熵增定律。熵的数学定义给定一离散分布变量XXX,其可能值为 x1,x2,...,xnx_1, x_2, ..., x_nx1,x2,...,xn,每个值出现的对应概率为P(x1),P(x2),...,P(xi)P(x_1), P(x_2), ..., P(x_i)P(x1),P(x2),...,P(xi原创 2020-08-20 16:49:32 · 367 阅读 · 0 评论 -
查表法比计算要快多少?
36000000 / 3600 = 10000 每秒约1万次 sin 计算,查表每秒可以进行300万次。根据 https://blog.csdn.net/weixin_43145361/article/details/84305067 的测试,内存读写大约5百万次左右,与本次测试结果基本一致。---------------------------------Table.length = 36000000, sum(table) = -0.1235.test0: 361 ms, test1: 3944原创 2020-08-08 10:48:40 · 711 阅读 · 0 评论 -
一个简单的测试检测阿里的ecs.s6-c1m1.small云主机CPU性能
简介今天购买了一台阿里的云主机,只有1核心1GB内存,结果如下。测试结果CPU内存硬盘测试结果Intel® Xeon® Platinum 8269CY @ 2.50GHz1GB40GB23.40 sIntel® Core™ i7-9750H CPU @ 2.60GHz32GB512 GB11.57s测试代码和结果public class test3 { public static void main(String[] args){原创 2020-08-05 17:09:50 · 827 阅读 · 0 评论 -
在Ubuntu18.0.4LST下手工配置JDK11
第1步 下载JDK首先,下载Java安装包,地址:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html注意:现在Oracle下载需要账户,注册后才可以下载。第2步 解压JDK至指定目录tar –zxvf jdk-11.0.8_linux-x64_bin.tar.gz解压后会得到文件夹 jdk-11.0.8,将其移动至opt目录下mv jdk-11.0.8 /opt/java-11.0.8第3步 配置环境变原创 2020-08-05 06:36:38 · 313 阅读 · 0 评论 -
Java中的ArrayList,LinkedList和Vector
文章目录1.List概述2. ArrayList,LinkedList 与 Vector3. ArrayList 示例4. LinkedList 示例5. Vector6. ArrayList 与 LinkedList 的性能原文地址:ArrayList vs. LinkedList vs. Vector,https://dzone.com/articles/arraylist-vs-linkedlist-vsby Ryan Wang · Mar. 28, 13 · Java Zone · Anal翻译 2020-07-05 22:13:03 · 280 阅读 · 0 评论 -
Java性能优化经验总结
在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序中代码的编写习惯。良好的编码习惯非常重要,能够显著地提升程序性能;反之一些不好的习惯会极大地影响性能。关于Java代码优化的文章很多,本文是一个经验总结文章,通过网上的一些文章和自己多年的使用经验对Java的使用进行总结。原创 2020-06-23 20:00:29 · 343 阅读 · 0 评论 -
MD5算法的Java高效精简的实现
源代码本文只给出了具体的实现,至于算法原理请参考相关文章。注:本算法系数参考百度百科:MD5。算法经过简化后,如下所示。public class MD5 { private static final int[] mix = { 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1原创 2020-06-05 07:58:10 · 638 阅读 · 0 评论 -
Kad算法模拟测试程序
本代码主要用于Kad算法的模拟测试,以理解其工作原理。原创 2020-06-03 17:01:07 · 749 阅读 · 1 评论 -
面试题:如何读取长度不确定的文件的数据以填充指定长度的数组
问题描述给定一个文件长度为 nnn,现在要求读取长度为 mmm 的内容,当 m<=nm<=nm<=n 时,只读取 mmm 个字节,当 m>nm > nm>n时,循环读取文件进行填充, 直到读取 nnn 填充满为止。解决办法可以利用 FileInputStream 的 read(byte[], start, length) 方法来解决,因为这个函数返回读取到的数据长度。实现代码如下所示。public static byte[] readBytes(String fi原创 2020-05-27 00:13:36 · 445 阅读 · 0 评论 -
高效计算一个字节中所有的1的个数。
就如何高效计算一个字节中所有的1的个数的问题,本文提了三种方法。原创 2020-05-26 20:02:42 · 1805 阅读 · 0 评论 -
Junit在Eclipse中的快速上手
本文以最快速的方式写明JUnit的使用方法,方便学者快速上手。原创 2020-05-09 09:37:44 · 234 阅读 · 0 评论 -
Java集合类型常见操作的时间复杂度
Java中的Collection中的数据类型很多,以下为主要数据类型的时间复杂度,这个时间复杂是根据理论推导出来,是作者的知识和经验总结,如果有错误欢迎指正。原创 2020-05-07 17:16:43 · 999 阅读 · 0 评论 -
理解文章《拥有多个A的概率:又一个条件概率悖论》中的一个看似奇怪的现象
在阅读了文章[拥有多个A的概率:又一个条件概率悖论]以后,觉得很难理解,于是就做了一个简单的实验,终于理解了其中的原因。原创 2020-05-06 22:30:56 · 471 阅读 · 0 评论 -
编写Java代码实现求1001的803次方除以137的余数
求余运算是Java的基本功能,可以直接使用 (int)Math.power(a,b) % p 进行计算,但是由于指数运算增长太快,非常容易就超出 Integer 的数据类型,即便我们使用 Long,其最大值也不过是 264-1,约为 1.84X1019,远远小于 1001803,所以显然是无法直接求的。原创 2020-05-05 10:06:02 · 531 阅读 · 0 评论 -
Java中的hashCode的计算方法与原理
在Java中,每个对象都有一个从Object基类派生出的 hashCode() 方法,用于根据当前对象的某些特征返回一个整型变量。其核心源代码中有个奇怪的数字31,本文就计算公式和取这个数字的含义进行详细的说明。原创 2020-05-03 17:08:13 · 8336 阅读 · 2 评论 -
找到Java中长整型(long)所能表示的最大素数: 9223372036854775783
素数在信息安全领域经常被用于数据摘要或密钥的生成算法中,为了计算大素数也有很多的算法,本文只是通过最简单的算法找出在Java中long数据类型所能表示的最大素数。原创 2020-04-21 17:22:45 · 2318 阅读 · 0 评论 -
DH算法的简单的Java实现
前言DH加密算法是Diffie-Hellman于2014年提出的一种用于在不安全网络交换密钥的一种算法。这种算法目前已经在数学是一个无解问题,即暂时还没有找到破解办法。所以是一种安全的被广泛应用于密钥加密算法。本文给出了一个Java实现,输出和源代码如下所示。具体的DH算法原理可参考此文。执行结果************************ DH算法演示 ****************...原创 2020-04-20 13:39:28 · 1579 阅读 · 4 评论 -
在C#和Java间使用AES加密和解密
AES 是 Advanced Encryption Standard 的缩写,即 高级加密标准。使用AES加密最大好好处在于可以使用2把钥匙,一把公钥一把私钥进行加密和解密处理。这样即便公钥暴露,还有私钥保护,数据仍然是安全的。由于C#和Java的语言特性不同,加密和解密端如果分别使用了这两种不同的语言,那么应该如何设置呢,会不会报错呢。本文就这个问题,以具体的实例给出了答案。原创 2019-01-10 17:33:56 · 1245 阅读 · 0 评论 -
NumPy性能小测:与Java性能相当
测试目的简单了解在Python中 NumPy 与 list 的性能差及与源生Java的性能对比情况。测试环境硬件:ADM R7 3700X, 16GB DDR4 26666软件:Windows10 1909 18363.720 | Java11.0.6 | Python3.7.4测试代码Python代码,使用IPython进行计时。In [1]: import numpy as np...原创 2020-04-06 08:59:44 · 943 阅读 · 0 评论 -
在Eclipse中安装配置JDK11
JDK11于2018年发布现在已经有2年了,由于JDK是Java8之后的稳定版本(LTS),所以有升级的价值,下面简述一下JDK11升级的坑。下载从请官方下载,地址为:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html,选择相应的版本下载即可。注意,现在需要注册才能下载。安装双击可执行文件一路下一步即可。...原创 2020-03-14 15:33:49 · 7668 阅读 · 5 评论 -
待解决问题:T[] ts = new T[0]如何实现?
数组和列表转换一直以来都要自己手工写代码,没有一个合适的方式进行转换,所以今天就写了一个基于泛型的数据转换,结果就出了这个问题。根本问题是T[] ts = new T[0]; 如何实现?虽然找到了一个方法 Array.newInstance 可以实现,但是必需得有一个实例。当数组长度为0时,则无法实现。所以在以下的代码中,当输入为 null 或为 0时,返回均为 null 算是不完美解决。如有...原创 2020-03-06 17:07:42 · 553 阅读 · 0 评论 -
一个简单易用的Java文本按行读取类TextReader
1 前言为了降低耦合并提供强大的功能,Java提供了非常丰富多样的Stream类,如InputStream, OutputStream, BufferedStream等。强大的功能同样也是一把双刃剑,给使用记忆带来了很多麻烦,不是每个人都是天天使用Java的这些类,并把它们记得非常清楚。相信有很多和笔者一样的人,每次在使用的时候,都需要查看相应的代码。为了解决这个问题,笔者根据常用的功能,编写了...原创 2020-02-21 20:47:19 · 557 阅读 · 0 评论 -
一个简单易用的Java文本写入类TextWriter
1 前言为了降低耦合并提供强大的功能,Java提供了非常丰富多样的Stream类,如InputStream, OutputStream, BufferedStream等。强大的功能同样也是一把双刃剑,给使用记忆带来了很多麻烦,不是每个人都是天天使用Java的这些类,并把它们记得非常清楚。相信有很多和笔者一样的人,每次在使用的时候,都需要查看相应的代码。为了解决这个问题,笔者根据常用的功能,编写了...原创 2020-02-19 22:36:16 · 570 阅读 · 0 评论 -
Java小技巧:将System.out.println() 简化成 println()
在Java中,System.out.println() 非常常用,但是即便环境会帮我们补全,但是每次都写全很麻烦,其实只要在源文件的头部引入以下内容,就可以直接使用 out.println()。import static java.lang.System.out;原理是引入了 System 中的 静态对象 out,所以可以直接使用这个静态对象的名称 out,而不用指名其所在的类 System...原创 2020-02-12 12:40:01 · 2107 阅读 · 0 评论 -
安装和运行HanLP详解
文章目录使用 pip install pyhanlp 安装错误安装成功但运行提示缺省dataEclipse运行方法Python运行方法使用 pip install pyhanlp 安装错误可能会遇到网络下载错误,解决办法很简单,在网络好的时候多试几次即可。$ pip install pyhanlpCollecting pyhanlp Downloading https://files....原创 2019-12-11 09:58:00 · 2117 阅读 · 0 评论 -
通过专用和通用两种解法求解连续阶乘求和
问题已经函数F定义如下,F(m)=∑n=1mf(n),其中f(n)=n!F(m) = \sum_{n=1}^{m} f(n),其中 f(n) = n!F(m)=n=1∑mf(n),其中f(n)=n!求m=20时的值。解法1:先定义函数再调用。根据一般的习惯,我们先定义一个函数用于计算n!,然后再对其进行调用 ,生成最终结果。以下为实现代码。/*** 此函数返回 n!*/public...原创 2019-12-10 15:03:26 · 823 阅读 · 0 评论 -
Java8接口的新关键字 default 实例学习
前言Java 8为表提供了一些全新的功能,包括 lambda 表达式, 函数式接口, 方法引用, 流, Optional, 以及接口中的缺省方法和静态方法等。在本文中,我们将讨论如何在接口中使用静态和默认方法,并介绍一些有用的用例。1. default 关键字介绍首先,我们看接口的缺省方法。我们知道,接口中定义的方法是公共的抽象方法,只包括函数签名,即函数名称、参数列表和返回类型,不包括方法...原创 2019-08-01 11:25:16 · 729 阅读 · 0 评论 -
Java 多线程之 Future 接口
简介FutureTask是Future接口的实现。Future 代表了异步计算的结果(the result of an asynchronous computation),并提供相应的方法以检查计算是否完整或者是否等待等操作。 结果只能在计算完成时使用方法get检索,如果必要则阻塞直到准备就绪。 取消由取消方法执行。 提供了其他方法来确定任务是否正常完成或被取消。 一旦计算完成,计算就无法取消。...原创 2019-07-23 07:28:55 · 632 阅读 · 0 评论 -
Java 多线程之 Callable 接口
上次讲了Runnable接口,通过它可以定义需要执行的任务。但是这个任务是不返回结果的。所以很多人通过在类中添加公共字段的方式进行数据接收。实际上Java根据此需求已经提供了相应的接口,即Callable。定义由于返回类型是不确定的,所以Callable接口使用了泛型来定义返回类型,以下代码演示了使用Callable方法定义求 1+2+...+1001 + 2 + ... + 1001+2+....原创 2019-07-22 10:04:44 · 764 阅读 · 0 评论 -
关于this指针的使用注意事项详解
this 指针简介在面向对象的程序设计语言中,都有一个默认的this关键字。这个关键字的作用就是代表当前对象,可以通过 this 引用所有的类内的全局变量或方法。但是 this 指针在使用的时候,有很多要注意的地方,如果不注意的话,会造成滥用带来未知的麻烦。使用限制只能在非静态方法中使用,包括普通方法和构造函数;可以引用所有的类的成员,包括字段和方法;只能在方法体内使用,包括普通方法和...原创 2019-08-25 20:09:58 · 905 阅读 · 0 评论 -
【博文汇总】Java程序设计语言
用蛮力法解决埃及分数问题Java多线程安全的三大特性之有序性使用Java抓取指定CSDN博文的文章信息使用Java 抓取 CSND 中指定博主的所有文章列表Java多线程安全的三大特性之原子性一个完整的Java版的分数类Java多线程安全的三大特性之可见性分治法之并行计算(附多台机器测试结果)Java程序设计英语考试题目及答案(计算机16-1数字媒体)Java文件读写的性能测试(...原创 2019-09-10 08:52:17 · 515 阅读 · 0 评论 -
从一个让人费解的示例学习利用Java源码解决问题
一个让人费解的案例先看一个安全。以下代码的结果,相信绝大部分人都以为是返回两个 true,但是实际的情况,却让人非常费解,第1个为true,而第2个为false。肯定有人不相信,欢迎自己测试。 public static void main(String[] args) { // case 1: a1 == a2 is true. Integer a1 = 10; Integer...原创 2019-09-27 09:06:29 · 381 阅读 · 0 评论