java管道流 PipedInputStream & PipedOutputStream 的应用

前言 PipedInputStream 和 PipedOutputStream 设计用来解决跨线程的字节数据传输。它们总是成对出现的,而在使用上,也只能 工作在两个不同的线程上,在一个线程里使用管道输入和输出流可能会造成死锁。网上有很多介绍这两个存在于 io 包下的 api。却几乎 找不到一个写 PipedInputStream 的使用场景的,所以本文结合实际业务,来聊一聊 PipedInputStream 的应用。 原理简介 我们知道,输出流写数...

阅读全文 »

我们的开源项目kkFileView v2.2.0发布了

kkfileview 文件在线预览 此项目为文件文档在线预览项目解决方案,项目使用流行的 spring boot 搭建,易上手和部署,部署好后可以独立提供预览服务,使用 http 接口访问,不需要和应用集成,具有跨系统跨语言使用的特性。提供 zip/tar.gz 发行包、自定义配置文件、和启动/停止脚本等,极大方便部署使用,同时官方发布 Docker 镜像,方便容器环境中部署使用。基本支持主流办公文档的在线...

阅读全文 »

java开源区块链jdchain-初始化创世区块

java开源区块链jdchain-初始化创世区块

前言 搭建区块链服务第一步就是初始化创世区块,创建账本。生成dchain初始化创世区块有两种方式,一种是通过官方提供的区块链部署工具,在页面上操作初始化,一种是通过初始化脚本创建。目前,部署工具初始化账本功能有限,只支持btfsmart共识算法的节点初始化,如果要支持mq的共识,只能使用初始化账本的脚本创建, 第一步、生成公私钥 使用部署工具生成公私钥,虽然部署...

阅读全文 »

一天入门java开源区块链-jdchain

一天入门java开源区块链-jdchain

前言 jdchain是京东数科开源的区块链平台,目标是实现一个面向企业应用场景的通用区块链框架系统,能够作为企业级基础设施,为业务创新提供高效、灵活和安全的解决方案。之所以选择jdchain研究是因为jdchain是为数不多的底层也是采用java实现的一个区块链平台 项目地址: https://github.com/blockchain... 文档地址: http://ledger.jd.com/setup.html 部署组件 peer:区块链主节点,参与共识、账本操...

阅读全文 »

一个巧合踩了MapStruct表达式的坑

一个巧合踩了MapStruct表达式的坑

前言 MapStruct是一个代码生成器,它基于约定优于配置的方法大大简化了Java Bean类型之间的映射的实现。生成的映射代码使用简单的方法调用,因此速度快,类型安全且易于理解。 MapStruct的 表达式功能是为了处理特殊对象属性的映射问题,比如DTO中的status属性转换成PO中的status需要进一步的处理,这个时候就需要用到表达式功能了。这里不再赘述关于 MapStruct的使用问题,更多的使用教...

阅读全文 »

J.U.C并发包诞生的那些事儿

前言 J.U.C是java包java.util.concurrent的简写,中文简称并发包,是jdk1.5新增用来编写并发相关的基础api。java从事者一定不陌生,同时,流量时代的今天,并发包也成为了高级开发面试时必问的一块内容,本篇内容主要聊聊J.U.C背后的哪些事儿,然后结合LockSupport和Unsafe探秘下并发包更底层的哪些代码,有可能是系列博文的一个开篇 关于JCP和JSR JCP是Java Community Process的简写,是一种开发和修...

阅读全文 »

java线程池ThreadPoolExecutor八种拒绝策略浅析

前言 谈到java的线程池最熟悉的莫过于ExecutorService接口了,jdk1.5新增的java.util.concurrent包下的这个api,大大的简化了多线程代码的开发。而不论你用FixedThreadPool还是CachedThreadPool其背后实现都是ThreadPoolExecutor。ThreadPoolExecutor是一个典型的缓存池化设计的产物,因为池子有大小,当池子体积不够承载时,就涉及到拒绝策略。JDK中已经预设了4种线程池拒绝策略,下面结合场景详细聊聊这些策...

阅读全文 »