
java
文章平均质量分 93
yunyun1886358
这个作者很懒,什么都没留下…
展开
-
Kafka(十二)Streams
Kafka因其可靠的消息传递能力,被很多流式处理系统作为唯一可靠的数据来源。常见的流式处理系统有:从0.10.0版本开始,Kafka提供了一个强大的流式处理开发库:Kafka Streams。有了它,开发人员可以直接在程序中进行流式处理,无需再引入上述的外部处理框架。下面一起来进入Streams的世界。我们知道Kafka Streams是用来做流式处理的,那么首先要理解什么是流式处理。首先,流式处理是一种编程范式,是指实时地处理一个或多个事件流/数据流。首先来比较以下三种常用的编程范式:那么事件流/数据流原创 2024-04-28 17:30:25 · 2068 阅读 · 0 评论 -
Java加解密(十一)PGP协议
PGP(Pretty Good Privacy),是一个基于公匙加密体系的安全传输协议,包括数字签名、压缩、加密、数字信封以及 Base64编码等过程。PGP Java示例。原创 2023-03-12 19:31:01 · 2053 阅读 · 0 评论 -
Java加解密(十)持久化秘钥
它的格式遵循Base64编码规则,以“-----BEGIN CERTIFICATE-----“和”-----END CERTIFICATE-----"两句作为文件头尾标识。加密算法的秘钥持久化是是一个不可避免的话题,如何安全的存储更是重中之重。将秘钥保存在文件中是最简单的一种方法,下面来讨论如何使用Java代码将秘钥保存到文件中。PEM文件通常以.pem, .crt, .cer, .key等扩展名命名。下面介绍几种简单的保存秘钥的方式,以RSA秘钥为例。引入bouncycastle依赖。原创 2023-03-12 18:28:31 · 823 阅读 · 0 评论 -
Java加解密(八)数字证书
数字证书(Digital Certificate),一般指公钥证书(Public Key Certificate,PKC),类似于我们生活中的身份证,用于标识网络中的用户(计算机)身份,里面记有姓名、组织,邮箱,地区,国家等个人信息,以及属于此人的公钥,还包含由认证机构(Certification Authority,CA)施加的数字签名。公钥证书也简称为证书(Certificate)。上面的描述是不是很抽象,下面我们来具体看一看一个证书包含的具体数据。下面的内容是通过Java程序从证书文件。原创 2023-01-15 14:47:42 · 5804 阅读 · 1 评论 -
Java加解密(七)数字签名
数字签名(digital signature)是一种电子签名,也可以表示为一种数学算法,通常用于验证消息(例如,电子邮件、信用卡交易或数字文档)的真实性和完整性。数字签名并没有创建新的算法,主要是结合使用信息摘要算法(MD,SHA)和非对称加密算法(RSA,DSA)。信息摘要算法用来验证数据完整性,非对称加密算法用来进行身份验证。消息发送方用摘要算法和私钥加密生成签名,接收方用公钥解密验证签名,再用相同的摘要算法验证数据完整性。一个典型的消息发送过程如下:数字签名具有许多重要的应用,例如在电子政务活动中的电原创 2023-01-11 23:05:22 · 1233 阅读 · 3 评论 -
Java加解密(六)基于口令(PBE)加密
PBE(Password Based Encryption,基于口令加密)算法是一种基于口令的加密算法,其特点在于口令是由用户自己掌握的,采用随机数杂凑多重加密等方法保证数据的安全性。PBE算法没有密钥的概念,密钥在其它对称加密算法中是经过算法计算得出来的,PBE算法则是使用口令替代了密钥。密钥的长短直接影响了算法的安全性,但不方便记忆。即便是我们将密钥经过Base64编码转换为一个可见字符,长密钥一样不容易记忆。因此,在这种情况下密钥是需要存储的,但是口令则不然。原创 2023-01-11 18:51:38 · 2028 阅读 · 0 评论 -
Java加解密(五)信息摘要算法
数据摘要算法(信息摘要)是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于算法具有其不可逆性,有时候也会被用做敏感信息加密。消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,可以被解密逆向的只有CRC32算法,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。消息摘要算法也叫散列函数、哈希函数,严格的说并不算是一种加密算法。消息摘要算法的主要作用不是完成数据的加密与解密工作的,它是用来验证数据完整性的重要技术。原创 2023-01-10 23:14:30 · 1098 阅读 · 0 评论 -
Java加解密(四)非对称加密
非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。由于安全性较好,并且密钥可以公开,无交换过程泄密的风险,因此非对此密钥算法被广泛使用,比如SSH、HTTPS、电子证书、数字签名、加密通讯等领域。公钥既可以进行加密,也可以解密,私钥也是一样,用于支持不同场景:1977年,三位数学家Rivest、Shami原创 2023-01-10 20:33:51 · 2122 阅读 · 0 评论 -
Java加解密(三)对称加密
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。原创 2023-01-10 15:37:25 · 1170 阅读 · 0 评论 -
Java加解密(二)核心类
JCA核心引擎类的使用,Cipher,Transform, 转换,padding,填充模式,mode,工作模式原创 2023-01-08 19:12:32 · 538 阅读 · 0 评论 -
Java加解密(一)概述
JCA( Java Cryptography Architecture, Java加密体系结构):JCA提供基本的加密框架, 如证书、 数字签名、消息摘要和密钥对产生器。JCE( Java Cryptography Extension, Java加密扩展包):JCE在JCA的基础上作了扩展, 提供了各种加密算法、 消息摘要算法和密钥管理等功能。JCE的实现主要在javax.crypto包( 及其子包) 中。原创 2023-01-07 19:32:14 · 2353 阅读 · 0 评论 -
Java I/O(五)NIO应用之Netty
Netty是一个客户端/服务器框架,它在Java的NIO网络组件上提供了一个简化的封装层。这使得它成为创建低级别非阻塞网络应用程序的一个不错的候选。让我们看看Netty框架的主要亮点:易用性:Netty比普通Java NIO更易于使用,并且有一套涵盖大多数用例的广泛示例最小依赖性:我们将在一分钟内看到,您只需一个依赖性即可获得整个框架性能:Netty比核心Java API具有更好的吞吐量和更低的延迟。由于其内部资源池,它还具有可扩展性。安全性:完全支持SSL/TLS和StartTLS。Bootst原创 2022-12-27 17:34:51 · 601 阅读 · 0 评论 -
Java I/O(三)文件I/O
Java文件I/O 字节流 字符流 输入流 输出流原创 2022-11-19 21:47:12 · 23938 阅读 · 0 评论 -
Java I/O(四)示例代码
使用Java 中的BIO,NIO,AIO,实现一个简单的客户端/服务端聊天系统原创 2022-11-10 21:27:53 · 645 阅读 · 0 评论 -
Java I/O(二)BIO, NIO, AIO
Java I/O, BIO, NIO, AIO, Channel, Buffer, Selector, Reactor模式,Proactor模式,多路复用原创 2022-11-09 23:38:10 · 487 阅读 · 0 评论 -
Java I/O(一)I/O概述
I/O,内存I/O,磁盘I/O,网络I/O,Java I/O,同步 I/O,异步I/O, 阻塞I/O,非阻塞I/O原创 2022-11-09 21:48:37 · 816 阅读 · 0 评论 -
Java函数式编程(五)设计和架构的原则
java 函数式编程 Lambda表达式 Stream 设计模式原创 2022-10-04 12:05:17 · 659 阅读 · 0 评论 -
Java函数式编程(四)JDK8对库的增强
java 函数式编程 Lambda表达式 Stream 设计模式原创 2022-10-04 11:58:17 · 555 阅读 · 0 评论 -
Java函数式编程(三)Stream
java 函数式编程 Lambda表达式 Stream 设计模式原创 2022-10-04 11:52:18 · 359 阅读 · 0 评论 -
Java函数式编程(二)Lambda表达式
java 函数式编程 Lambda表达式 Stream 设计模式原创 2022-10-04 11:29:33 · 477 阅读 · 0 评论 -
Java函数式编程(一)概述
java 函数式编程 Lambda表达式 Stream 设计模式原创 2022-10-04 11:19:16 · 629 阅读 · 0 评论 -
Java并发编程组件实例大全五:锁
锁内置锁(synchronized)显式锁Lock可重入锁(ReentrantLock)ReentrantLockReentrantReadWriteLockStampedLock线程的等待和唤醒LockSupportAQSAbstractOwnableSynchronizerAbstractQueuedSynchronizerAbstractQueuedLongSynchronizer原创 2022-05-21 17:36:02 · 1695 阅读 · 0 评论 -
Java并发编程组件实例大全四:同步工具
倒计数锁存(CountdownLatch)循环屏障(CyclicBarrier)信号量(Semaphore)exchanger原创 2022-04-10 18:33:41 · 590 阅读 · 0 评论 -
Java并发编程组件实例大全三:原子操作
原子操作类AtomicBoolean一个可以原子更新的布尔值。原子布尔值用于原子更新标志等应用程序中,不能用作布尔值的替代品。#mermaid-svg-4sRiwvQHECRVw9GZ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-4sRiwvQHECRVw9GZ .error-icon{fill:#552222;}#mermaid-svg-4sRiwvQHECRV原创 2022-03-19 23:03:54 · 197 阅读 · 0 评论 -
Java并发编程组件实例大全二:线程池
线程池类结构#mermaid-svg-2u0BVQytIAwZtdbo {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2u0BVQytIAwZtdbo .error-icon{fill:#552222;}#mermaid-svg-2u0BVQytIAwZtdbo .error-text{fill:#552222;stroke:#552222;}#mermaid-svg原创 2022-03-19 23:01:04 · 413 阅读 · 0 评论 -
Java 集合大全(一)
目录接口总览列表/栈(List/Stack)VectorStackArrayListLinkedList集合(Set)HashSetLinkedHashSetTreeSetEnumSet队列/栈(Queue/stack)PriorityQueueArrayDeque字典(Map)HashMapLinkedHashMapTreeMapTreeMapHashTableHashTablePropertiesWeakHashMap/IdentityHashMap/EnumMapWeakHashMapIdentity原创 2022-01-16 22:51:41 · 402 阅读 · 0 评论 -
java集合大全(二)并发
Java并发集合示例讲解:ArrayBlockingQueue, LinkedBlockingQueue, PriorityBlockingQueue, SynchronousQueue, DelayQueue, LinkedBlockingDeque, LinkedTransferQueue, CopyOnWriteArrayList, ConcurrentSkipListMap, ConcurrentHashMap原创 2022-01-16 17:13:07 · 568 阅读 · 0 评论 -
Java并发编程
Java并发编程1 概述1.1 引入并发的原因资源利用率:充分利用系统资源(CPU,内存),例如等待IO时运行计算逻辑公平性:多用户,多程序轮流使用系统资源,避免严格串行的执行便利性:将一个执行复杂任务的程序拆分为多个执行简单任务的程序1.2 线程进程:(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指原创 2021-09-09 21:11:06 · 365 阅读 · 0 评论 -
Java实现排序算法(待续)
Java实现排序算法,目前只实现了冒泡和快速原创 2015-03-30 16:58:35 · 582 阅读 · 0 评论 -
Java泛型实现排序算法
使用Java泛型实现了快速排序算法原创 2015-04-22 17:42:41 · 6303 阅读 · 0 评论 -
Java I/O 学习笔记(7) new I/O
代码段展示了通道、缓冲区、内存映射文件的使用原创 2015-04-23 00:19:02 · 546 阅读 · 0 评论 -
Java I/O 学习笔记(1) 文件遍历
代码段实现了如何遍历目录下的文件,并用正则表达式实现文件名过滤原创 2015-04-21 23:16:13 · 697 阅读 · 0 评论 -
Java I/O 学习笔记(2) 基本输入输出流
代码片段实现了各种基本输入输出流的使用原创 2015-04-21 23:27:52 · 615 阅读 · 0 评论 -
Java I/O 学习笔记(3) 基本输入输出流过滤
代码片段展示了在基本输入输出流之上使用装饰器进行过滤原创 2015-04-22 17:35:48 · 613 阅读 · 0 评论 -
Java I/O 学习笔记(6) 进程IO流
代码段展示了如何访问进程的输出流原创 2015-04-23 00:18:04 · 556 阅读 · 0 评论 -
Java I/O 学习笔记(4) reader和writer
代码段展示了reader、writer、过滤器的使用原创 2015-04-22 17:39:22 · 912 阅读 · 0 评论 -
Java I/O 学习笔记(5) 随机访问文件
代码段展示了随机访问文件类的基本使用原创 2015-04-23 00:16:52 · 610 阅读 · 0 评论 -
Java I/O 学习笔记(8) 文件压缩
代码段展示了使用ZipOutputStream压缩,ZipInputStream解压缩原创 2015-04-23 15:39:05 · 663 阅读 · 0 评论 -
Java I/O 学习笔记(9) 对象持久化
代码段展示了对象持久化的三种方式原创 2015-04-23 15:41:53 · 652 阅读 · 0 评论 -
Log4j使用总结
Log4j使用总结一、介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。Log4j由三个重要的组件构成:日志信息转载 2013-10-15 13:47:50 · 642 阅读 · 0 评论