
Java
文章平均质量分 53
1、Java入门学习知识体系
2、Java常用类库方法
……
HernSong
HernSong
展开
-
Java虚拟机支持多少个线程
作者:miracle1919 来源:http://sina.lt/getPMcGovernTheory在StackOverflow提了这样一个问题:Java虚拟机最多支持多少个线程?跟虚拟机开发商有关么?跟操作系统呢?还有其他的因素吗?Eddie的回答:这取决于你使用的CPU,操作系统,其他进程正在做的事情,你使用的Java的版本,还有其他的因素。我曾经见过一台Windows服务器在...转载 2020-02-25 22:19:19 · 448 阅读 · 0 评论 -
Java开发邮件方面的基本常识
在网络社交中经常使用邮件来发送我们的信息。如我们需要邮件“自动”发出:例如找回密码的时候,密码会发送到你的安全邮箱中,例如游戏付费激活的时候,会以邮箱的形式给你发送激活码进行激活;再如,当你的信用卡消费的时候,你绑定的服务邮箱就会收到账单提醒邮件。所以,实现自动发送邮件和接收邮件,也是一个软件系统中不可获取的功能,接下来我们就来学习如何使用Java开发邮件系统。我们要学习的内容很简单,只有两个:...转载 2020-02-22 21:45:15 · 866 阅读 · 0 评论 -
Java——获取IP地址(Nginx为例)
想必大家对这段代码并不陌生:publicStringgetIpAddr(HttpServletRequestrequest){Stringip=request.getHeader("x-forwarded-for");if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){...原创 2019-11-21 21:48:24 · 2087 阅读 · 0 评论 -
Java——isEmpty和isBlank区别
org.apache.commons.lang.StringUtils类提供了String常用操作,最为常用的判空有如下两种isEmpty(String str)和isBlank(String str)。源码:public static boolean isEmpty(String str) { return str == null || str.length() == ...原创 2019-11-17 21:58:54 · 1038 阅读 · 0 评论 -
Java——StringJoiner
简介public final class StringJoinerextends ObjectStringJoiner是java.util包中的一个类,用于构造一个由分隔符分隔的字符序列(可选),并且可以从提供的前缀开始并以提供的后缀结尾。虽然这也可以在StringBuilder类的帮助下在每个字符串之后附加分隔符,但StringJoiner提供了简单的方法来实现,而无需编写大量代码。...原创 2019-11-15 14:35:01 · 462 阅读 · 0 评论 -
Java——LocalDateTime类
前言LocalDateTime类是不可变的和线程安全的,从JDK1.8开始出现!!!public final class LocalDateTimeextends Objectimplements Temporal, TemporalAdjuster, ChronoLocalDateTime<LocalDate>, Serializable在ISO- 2007-12-...原创 2019-11-10 17:24:05 · 1182 阅读 · 0 评论 -
Java公平锁和非公平锁
前言Java语言中有许多原生线程安全的数据结构,比如ArrayBlockingQueue、CopyOnWriteArrayList、LinkedBlockingQueue,它们线程安全的实现方式并非通过synchronized关键字,而是通过java.util.concurrent.locks.ReentrantLock来实现。 刚好对这个很感兴趣, 因此写一篇博客详细分析此 “可重入锁实现原...原创 2019-10-21 21:37:44 · 522 阅读 · 0 评论 -
Java——Collections类和方法
public class Collectionsextends Object此类仅由静态方法组合或返回集合。 它包含对集合进行操作的多态算法,“包装器”,返回由指定集合支持的新集合,以及其他一些可能的和最终的。如果提供给它们的集合或类对象为null,则此类的方法都抛出一个NullPointerException 。该类中包含的多态算法的文档通常包括实现的简要说明 。 这些描述应被视...原创 2019-10-21 10:00:23 · 334 阅读 · 0 评论 -
Java——CopyOnWriteArrayList、CopyOnWriteArraySet写时复制
CopyOnWriteArrayListpublic class CopyOnWriteArrayList<E>extends Objectimplements List<E>, RandomAccess, Cloneable, Serializable的一个线程安全的变体ArrayList ,其中所有可变操作( add , set ,等等)通过对底层数组的最...原创 2019-10-21 09:52:50 · 354 阅读 · 0 评论 -
Java——AtomicStampedReference<V>版本号原子引用
一个AtomicStampedReference维护对象引用以及整数“印记”,可以原子更新。构造方法 构造方法和描述 AtomicStampedReference(VinitialRef, intinitialStamp) 创建一个新的 AtomicStampedReference与给定的初始值。 方法摘要 修饰和类型 方法和描述 boole...原创 2019-10-20 21:28:06 · 483 阅读 · 0 评论 -
Java——AtomicInteger原子整型
public class AtomicIntegerextends Number一个int可能原子更新的值。 有关原子变量属性的描述,请参阅java.util.concurrent.atomic包规范。 一个AtomicInteger用于诸如原子增量计数器的应用程序中,不能用作Integer的替代品。 但是,这个类确实扩展了Number以允许通过处理基于数字类的工具和实用程序的统一访问...原创 2019-10-20 21:24:47 · 2024 阅读 · 0 评论 -
Java——AtomicReference原子引用
AtomicReference<V>(在java.util.concurrent.atomic.AtomicReference<V>中)可以原子更新的对象引用。构造方法 构造方法和描述 AtomicReference() 使用null初始值创建新的AtomicReference。 AtomicReference(VinitialVal...原创 2019-10-20 21:20:57 · 1701 阅读 · 0 评论 -
Java——CAS
一、什么是CAS? 在计算机科学中,比较和交换(Conmpare And Swap)是用于实现多线程同步的原子指令。 它将内存位置的内容与给定值进行比较,只有在相同的情况下,将该内存位置的内容修改为新的给定值。 这是作为单个原子操作完成的。 原子性保证新值基于最新信息计算; 如果该值在同一时间被另一个线程更新,则写入将失败。 操作结果必须说明是否进行替换; 这可以通过一个简单的布尔响应(...转载 2019-10-20 21:05:54 · 248 阅读 · 0 评论 -
Java——Unsafe类
Java和C++语言的一个重要区别就是Java中我们无法直接操作一块内存区域,不能像C++中那样可以自己申请内存和释放内存。Java中的Unsafe类为我们提供了类似C++手动管理内存的能力。Unsafe类,全限定名是sun.misc.Unsafe,从名字中我们可以看出来这个类对普通程序员来说是“危险”的,一般应用开发者不会用到这个类。Unsafe类是"final"的,不允许继承。且构造函数...原创 2019-10-20 20:29:37 · 833 阅读 · 0 评论 -
NIO网络模型
NIO网络模型NIO本身是基于事件驱动思想来完成的,其主要想解决的是BIO的大并发问题: 在使用同步I/O的网络应用中,如果要同时处理多个客户端请求,或是在客户端要同时和多个服务器进行通讯,就必须使用多线程来处理。也就是说,将每一个客户端请求分配给一个线程来单独处理。这样做虽然可以达到我们的要求,但同时又会带来另外一个问题。由于每创建一个线程,就要为这个线程分配一定的内存空间(也叫工作存储器)...原创 2019-09-26 20:09:57 · 400 阅读 · 0 评论 -
BIO网络模型
BIO(同步阻塞)在JDK1.4出来之前,建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如果有的话,客户端会线程会等待请求结束后才继续执行。同步并阻塞,服务器实现模式为一...原创 2019-09-26 19:26:22 · 623 阅读 · 0 评论 -
传智——银行业务调度系统Java代码
模拟实现银行业务调度系统逻辑,具体需求如下:银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。 异步随机生成各种类型的客户,生成各类型用户的概率比例为:VIP客户 :普通客户 :快速客户 = 1 :6 :3。 客户办理业务所需时间有最大值和最小值...转载 2019-08-28 17:04:39 · 263 阅读 · 0 评论 -
自增变量
注意1、赋值=:最后计算2、=右边的从左到右加载值依次压入操作数栈3、实际先算哪个,看运算符优先级4、自增、自减操作都是直接修改变量的值,不经过操作数栈5、最后的赋值之前,临时结果也是存储在操作数栈中6、i++、i--:先赋值在计算7、++i、--i:先计算在赋值例如:import java.util.Arrays;public class Main {...原创 2019-08-21 16:52:43 · 489 阅读 · 0 评论 -
Java中的String长度限制
编译时期首先,我们先来合理的推断一下,当我们在代码中使用String s = "";的形式来定义String对象的时候,""中字符的个数有没有限制呢?既然是合理的推断,那就要要足够的依据,所以我们可以从String的源码入手,根据public String(char value[], int offset, int count)的定义,count是int类型的,所以,char value[]中...转载 2019-08-21 10:49:27 · 10815 阅读 · 0 评论 -
StringBuffer和StringBuilder的3个区别
两者都继承了一个抽象的字符串父类:AbstractStringBuilder区别1、线程安全StringBuffer线程安全,StringBuilder线程不安全。因为 StringBuffer 的所有公开方法都是 synchronized 修饰的,而 StringBuilder 并没有 StringBuilder 修饰。StringBuffer 代码片段:@Overr...转载 2019-08-20 13:43:15 · 297 阅读 · 0 评论 -
Java 主流日志工具库详解
日志框架java.util.logging (JUL)JDK1.4 开始,通过 java.util.logging 提供日志功能。它能满足基本的日志需要,但是功能没有 Log4j 强大,而且使用范围也没有 Log4j 广泛。Log4jLog4j 是 apache 的一个开源项目,创始人 Ceki Gulcu。Log4j 应该说是 Java 领域资格最老,应用最广的日志工具。从诞生之...转载 2019-08-06 15:54:38 · 405 阅读 · 0 评论 -
Synchronized 与 ReentrantLock 的区别
可重入性从名字上理解,ReentrantLock的字面意思就是再进入的锁,其实synchronized关键字所使用的锁也是可重入的,两者关于这个的区别不大。两者都是同一个线程每进入一次,锁的计数器都自增1,所以要等到锁的计数器下降为0时才能释放锁。锁的实现Synchronized是依赖于JVM实现的,而ReenTrantLock是JDK实现的,有什么区别,说白了就类似于操作系统来控制实...转载 2019-07-27 20:55:10 · 225 阅读 · 0 评论 -
Java实现IDEA算法(分别通过JDK、Bouncy Castle、Commons Codec实现)
package com.imooc.security.idea;import java.security.Key;import java.security.Security;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.c...原创 2019-06-11 18:11:14 · 1413 阅读 · 0 评论 -
Java实现RSA算法(分别通过JDK、Bouncy Castle、Commons Codec实现)
package com.imooc.security.rsa;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;...转载 2019-06-11 16:57:40 · 975 阅读 · 0 评论 -
Java实现DH算法(分别通过JDK、Bouncy Castle、Commons Codec实现)
package com.imooc.security.dh;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;...转载 2019-06-11 16:45:53 · 1765 阅读 · 0 评论 -
Java实现PBE算法(分别通过JDK、Bouncy Castle、Commons Codec实现)
package com.imooc.security.pbe;import java.security.Key;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.PBEKeySpec;i...转载 2019-06-11 16:39:50 · 765 阅读 · 0 评论 -
Java实现AES算法(分别通过JDK、Bouncy Castle、Commons Codec实现)
package com.imooc.security.aes;import java.security.Key;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;impor...转载 2019-06-11 16:30:52 · 1408 阅读 · 0 评论 -
Java实现3DES算法(分别通过JDK、Bouncy Castle、Commons Codec实现)
package com.imooc.security.des;import java.security.Key;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import java...转载 2019-06-11 15:07:49 · 1104 阅读 · 0 评论 -
Java实现DES算法(分别通过JDK、Bouncy Castle、Commons Codec实现)
package com.imooc.security.des;import java.security.Key;import java.security.Security;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.cr...转载 2019-06-11 15:07:15 · 1292 阅读 · 0 评论 -
Java实现MAC算法(分别通过JDK、Bouncy Castle、Commons Codec实现)
package com.imooc.security.hmac;import javax.crypto.KeyGenerator;import javax.crypto.Mac;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;import org.apache.commons.codec.bi...转载 2019-06-11 14:38:41 · 1724 阅读 · 0 评论 -
Java实现SHA算法(分别通过JDK、Bouncy Castle、Commons Codec实现)
package com.imooc.security.sha;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.security.Security;import org.apache.commons.codec.binary.Hex;import ...转载 2019-06-11 14:36:54 · 1093 阅读 · 0 评论 -
Java 类的初始化时机
会初始化的情况1、创建类的实例。2、类的静态变量,或者为静态变量赋值。(被final修饰、已在编译期把结果放入常量池的静态字段除外)3、类的静态方法。4、使用反射来强制创建爱你某个类或接口对应的java.lang.Class对象。5、初始化某个类的子类。6、直接使用java.exe命令来运行某个主类。7、如果初始化一个类的时候,如果发现父类还没有初始化,则需要先触发其父...原创 2019-06-11 07:59:28 · 953 阅读 · 0 评论 -
Java实现消息摘要MD5算法(分别通过JDK、Bouncy Castle、Commons Codec实现)
package com.imooc.security.md;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.security.Security;import org.apache.commons.codec.binary.Hex;import...转载 2019-06-10 19:07:14 · 1514 阅读 · 0 评论 -
Java实现Base64算法(分别通过JDK、Bouncy Castle、Commons Codec)
package com.imooc.security.base64;import java.io.IOException;import org.apache.commons.codec.binary.Base64;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;public class ImoocBase6...转载 2019-06-10 18:49:28 · 1051 阅读 · 0 评论 -
密码常用术语与分类
密码常用术语明文:待加密信息密文:经过加密后的明文加密:明文转为密文的过程加密算法:明文转为密文的转换算法解密:将密文转为明文的过程解密算法:密文转为明文的算法解密密钥:通过解密算法进行解密操作用的密钥密码分析:截获密文者试图通过分析截获的密文从而推断出原来的明文或密钥的过程。主动攻击:攻击者非法入侵密码系统,采用伪造、修改、删除等手段向系统注入假消息进行欺骗。...原创 2019-06-10 17:23:17 · 3605 阅读 · 0 评论 -
通过Java JDK实现数字签名ECDSA算法
package com.imooc.security.ecdsa;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.NoSuchAlgorithmException;import java.sec...转载 2019-06-10 16:09:35 · 1315 阅读 · 0 评论 -
通过Java JDK实现数字签名DSA算法
package com.imooc.security.dsa;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;...转载 2019-06-10 16:08:38 · 697 阅读 · 0 评论 -
通过Java JDK实现数字签名RSA算法
使用到了commons-codec jar包 !!!package com.hern.rsa;import org.apache.commons.codec.binary.Hex;import java.security.*;import java.security.interfaces.RSAPrivateKey;import java.security.interf...原创 2019-06-10 16:06:47 · 815 阅读 · 0 评论 -
阿里出品的 EasyExcel —— 7 行代码实现 Excel 文件导出
点击进入阿里巴巴EasyExcel 项目GitHub仓库地址阿里出品的 EasyExcel,安利一波什么是 EasyExcel? 见名知意,就是让你操作 Excel 异常的酸爽。先来看下 EasyExcel GitHub 官方截图:截止目前为止已有 5519 Star, 官方对其的简介是:快速、简单避免OOM的java处理Excel工具!以下是官方介绍:EasyE...转载 2019-06-01 19:02:03 · 2528 阅读 · 0 评论 -
Java —— CountDownLatch闭锁
public class CountDownLatchextends Object允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助。CountDownLatch用给定的计数初始化。 await方法阻塞,直到由于countDown()方法的调用而导致当前计数达到零,之后所有等待线程被释放,并且任何后续的await 调用立即返回。 这是一个一次性的现象 - 计数无法重置。 ...原创 2019-05-25 21:21:54 · 350 阅读 · 0 评论