自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(576)
  • 资源 (31)
  • 收藏
  • 关注

原创 每天一剂开发良药

主要介绍一些小技巧之类,是为备忘也。

2021-10-12 16:25:35 1622 2

原创 轻量级的资源授权:基于 OAuth 规范

感觉 OAuth 太负盛名了,以至于后来在 OIDC 反而难以企及前辈 OAuth。倒是大家谈论比较多的是 JWT(例如),——实际谈 JWT 就是在实现 OIDC,反而 OIDC 大家不怎么爱谈!但我们要知道的是,真正诠释这些的,做点单点登录的,——是 OIDC 规范,JWT 只是 OIDC 规范下的一种 Token 协议,再说句难听的,如果 JWT 不满足或者有问题,换别的 Token 实现规则也行。

2023-11-18 15:51:08 86

原创 轻量级 Java 日志组件

日志记录功能在开发中很常用,不仅可以记录程序运行的细节,方便调试,也可以记录用户的行为,是框架中不可或缺的组件。为最大程度复用现有的组件,我们就地取材使用了 JDK 自带的 JUL()作为日志组件,并对其进行功能上的增强。这是笔者 17 年的时候就研究过了(见博客时至今日,感觉还是使用 Slf4J API 的人群多,顺应潮流,决定打造兼容 Slf4J 风格的整合,使用上也更便捷,可结合 Lombok 强大的功能,在类身上施加一个注解即可。

2023-11-18 15:50:20 278

原创 轻量级 FTP 组件

小巧玲珑的 FTP Java 组件,剥离自 JDK

2023-11-13 21:44:41 102

原创 轻量级 SSO 方略:基于 OIDC 规范(二)

介绍了 SSO 相关的基础数据,这样有了 ClientId 和密钥后,我们就要准备客户端这边的代码。客户端当前指的便是一个网站(也就是 RP),这个网站要求有会员功能,典型地网站导航上通常会有“注册”或“登录”的链接。假设我们这是最简单的网站,采用 Servlet Session 本地记录用户凭证。本身这个网站设计用户的模块,得通过 SSO 完成用户登录。另外我们还要准备一个登录页面,简单的例子如下。这个页面存在 SSO 中心(也就是 OP)的,而不是客户端的。

2023-11-13 21:43:27 214

转载 深入研究线程池

线程池就是以一个或多个线程[循环执行]多个应用逻辑的线程集合。注意这里用了线程集合的概念是我生造的,目的是为了区分执行一批应用逻辑的多个线程和线程组的区别.关于线程组的概念请参阅基础部分。那么如果一个线程循环执行一段代码是否是线程池?如果极端而言,应该算,但实际上循环代码应该算上一个逻辑单元。我们说最最弱化的线程池。这就不能说循环中执行多个逻辑单元,因为它只是简单地对循环外部的初始变量执行++操作。而如果已经有一个队列我们说这个线程就是循环执行多个逻辑单元,可以说这个线程是弱化的线程池。

2023-11-06 20:03:28 29

转载 Java 通用 IO API 设计——赏玩

本文给出了一个通用 Java IO API 设计,并且有 API 的 Demo 代码

2023-11-06 17:23:48 54

转载 也谈谈全栈工程师

一个真正的全栈工程师,目标只有一个:创业

2023-11-06 16:52:39 50

原创 轻量级邮件发送组件:基于 Socket/SMTP 协议的浅层封装

Java 发送邮件组件,大家第一时间想到的就是 JavaMail。JavaMail 本身也不大,才 500kb 的 jar 包,足够轻量级。而今天为大家介绍的,可以说“羽量级”,核心一个类就可以发送邮件了,除了依赖 JDK 无须依赖什么。如果我们了解 SMTP 协议以及 Socket 的简单使用,就知道其中过程并不复杂——实质都是基于文本的协议交互。

2023-11-03 13:44:47 77

转载 微服务安全认证架构是如何演进而来的?

之前有同事问为何要用基于 JWT 令牌的认证架构,然后近期又有童鞋在后台留言问微服务安全认证架构的实践,因此我决定花两篇推文来解答一下。为了答好这个话题,我们先来看看微服务的安全认证架构是如何演进而来的,从而更好地理解。

2023-10-29 19:44:10 52

原创 轻量级 SSO 方略:基于 OIDC 规范(一)

OIDC 是 OpenID Connect,见官网介绍。OIDC 为用户身份认证提供了明确的规范指南,以方便我们更好地设计一个 SSO 产品。

2023-10-29 00:58:18 167

原创 利用 JSqlParser 防止 SQL 注入

高手文章介绍了利用 JSqlParser 防止 SQL 注入,写得很好,只不过有两个问题,代码比较复杂,我于是作了简化,只有两个类;其次检测比较严格,连子查询都禁止,我把它开放了。

2023-10-28 15:54:33 396 2

原创 嵌入式 Tomcat 调校

SpringBoot 嵌入了 Web 容器如 Tomcat/Jetty/Undertow,——这是怎么做到的?我们以 Tomcat 为例子,尝试调用嵌入式 Tomcat。调用嵌入式 Tomcat,如果按照默认去启动,一个 main 函数就可以了。

2023-10-25 22:35:54 982

原创 轻量级仿 Spring Boot=嵌入式 Tomcat+Spring MVC

SpringBoot 嵌入了 Web 容器如 Tomcat/Jetty/Undertow,——这是怎么做到的?我们以 Tomcat 为例子,尝试调用嵌入式 Tomcat。为了说明如何打造轻量级的 SpringBoot,本文分为“嵌入式 Tomcat”、“增强 SpringMVC”和“打包/部署”三个小节来介绍。

2023-10-25 18:12:41 817

原创 轻量级导出 Excel 标准格式

一般业务系统中都有导出到 Excel 功能,其实质就是把数据库里面一条条记录转换到 Excel 文件上。Java 常用的第三方类库有 Apache POI 和阿里巴巴开源的 EasyExcel 等。另外也有通过 Web 模板技术渲染 Excel 文件导出,这实质是 MVC 模式的延伸,数据转为成不同的视图罢了。

2023-10-20 23:06:37 1462

原创 Word 文档转换 PDF、图片

工作有需要 Word 文档转换 PDF、图片 的场景,我们来看看 Java 开发中怎么解决这个问题的。

2023-09-18 22:33:10 892

原创 Java 转换 WebP 图片,使用 webp-imageio

WebP 是 Google 推出的一种新型图片格式,相比于 传统的 PNG/JPG 图片有着更小体积的优势,在当今 Web 中有着广泛的应用。但是Java 和 JDK 本身不支持 WebP 图像,不过我们可以使用库来支持 WebP 图片。顺便提一提其他库支持的方式。WebP 最早是这个 webp project of Luciad 库提供支持的,但它需要手动安装对应的动态链接库,非常不方便。项目作者为了解决这个问题,改进了对动态链接库的读取方式,把从读取改成了从项目 resource 文件中读取。

2023-09-15 23:29:57 658

原创 比较全面的身份证校验、提取的方法

比较全面的身份证校验、提取的方法。

2023-09-15 11:45:03 196

原创 简明 JDBC 数据访问操作库:JdbcHelper(三)

之前写的查询 API,感觉不够清晰,原因是我当时喜欢用方法重载,以为相同的方法名更统一,心智更少,其实不然,在使用过程中发现却是更迷糊,要通过参数不同去甄别。于是,我有了重构代码的想法,并在昨晚改了下,有了这个新的版本。这次我采用链式调用的风格,且不同名字的方法来区分,如果 info()/infoMap, list()/listMap(),有标明 Map 的就返回 Map 结果,否则是返回 Java Bean 的。可见是 Java Bean 优先(简洁的名字给 Java Bean 了)。

2023-09-15 10:59:10 75

原创 简明 JDBC 数据访问操作库:JdbcHelper(二)

上篇文章中,主要简介了 JdbcHelper 及 JdbcReader,其中关于 JdbcReader 都是偏源码、偏底层原理的介绍。这次我们打算介绍 Reader 的应用,怎么用于日常的 SQL 数据查询工作中,——所形成封装的就是。所谓 CRUD,顾名思义就是增删改查的工作。

2023-09-12 23:11:55 158

原创 学习 Java 的多线程开发

在介绍线程 Thread 之前,我们必须先搞清楚程序 Program 和进程 Process 这两个概念。main。

2023-09-07 00:01:14 308

转载 库存仓库:简单匹配算法/库存释放/库存扣减

通常在电商项目的库存项目中,每条库存记录都有一个对应的仓库字段,warehouse,同一个商品可能在多个仓库中都存在的。假设用户添加一个商品 sku1到购物车中,这个 sku1在 warehouse1和 warehouse2 都存在,这个时候到底要扣减哪个仓库中的库存呢?这里有个仓库优先级的概念,一般来说,会有专门的系统来决定仓库扣减的优先级。

2023-09-06 00:54:37 155

转载 TCP 为什么要三次/四次握手(三分钟你看不懂找我)

注意是 TCP 三次握手,不是 HTTP 三次握手,HTTP 基于 TCP 实现。

2023-09-06 00:41:37 66

转载 关于分布式系统的数据一致性问题

最近写了一个关于 铁道部购票系统的若干文章铁道部新客票系统的设计(一)铁道部新客票系统的设计(二)铁道部新客票系统的设计(三)正好遇到一个博友,咨询了一个问题,这个问题正好可以作为分布式系统的数据一致性的简单例子,当然,这个只是比较简单的情况。

2023-09-05 04:00:00 56

转载 Spring 事务管理器设计思想

在最近做的一个项目里面,涉及到多数据源的操作,比较特殊的是,这多个数据库的表结构完全相同,由于我们使用的 iBatis 框架作为持久化层,为了防止每一个数据源都配置一套规则,所以重新实现了数据源,根据线程变量中指定的数据库连接名称来获取实际的数据源。每次调用 Spring 事务管理器之前设置事务提交之后在调用方法即可。但是这样设计实际使用过程中也会遇到一些典型的问题,这就是在仔细了解 spring 中持久化层的设计之后,才能明白所产生的问题的原因。下面主要总结一下 spring 持久化的设计。

2023-09-04 22:44:25 43

原创 学用 CountDownLatch 与 CyclicBarrier

CountDownLatch 强调一个线程等多个线程完成某件事情。CyclicBarrier 是多个线程互等,等大家都完成。CountDownLatch 很明显是可以不限制等待线程的数量,而会限制 countDown的操作数;CyclicBarrier 会限制等待线程的数量写法当然不一样,看看下面的伪代码main(){启动5个线程。。。cd.await();//让当前线程休眠,执行代码... (该代码不会立即执行,等待5个线程执行完成后,当前线程会被唤醒,继续执行后面的代码)

2023-09-02 11:27:02 173

翻译 语言与机器 Languages and Machines

至关重要的是,你不是推理你自己写的代码,而是编译器所写的代码,因为从官方的角度来说,目标代码才是"真正"的代码,而 pidgin 只是一种便利。)一种证明这一观点的方法是,定义一次性的 λ 演算到 RAM 代码的编译器,明确表明 λ 演算的抽象步骤可以在 RAM 上以常数时间执行(即不随输入的大小变化,只随静态程序的大小变化)。嗯,如果你的工作都是在复杂性的多项式因子范围内完成的,并且你只关心自然数(或其他有限对象)上的计算,那么这确实不重要。嗯,尽管这是真的,但我可以告诉你,你的论点是站不住脚的。

2023-08-31 10:47:49 53

原创 Spring 容器启动耗时统计

为了了解 Spring 为什么会启动那么久,于是看了看怎么统计一下加载 Bean 的耗时。

2023-08-24 11:35:10 259

原创 Maven 一键部署到 SSH 服务器

利用 Maven Mojo 功能一键部署 jar 包或 war 包到远程服务器上。

2023-08-23 16:59:58 1070

原创 轻量级 Bean 实体校验器

利用 Spring 自带校验器结合 JSR 注解实现轻量级的 Bean 实体校验器。轻捷、简单、很容易上手,也容易扩展。三个核心类`ValidatorInitializing`、`ValidatorImpl`、`ValidatorEnum`去掉注释不超过共200行源码实现 10多m 的 Hibernate Validator 多数功能。

2023-08-20 12:14:52 140

原创 轻量级 Spring Task 任务调度可视化管理

大家都知道 Spring Scheduler 好用和怎么用,但它没有一个像 XXL-Job 有个后台界面的,好像不太完整,于是笔者打算为 Spring Scheduler 提供一个可视化的操作界面,虽然赶不上 XXL-Job 那么强大,但也算弥补其中缺失的一环。它支持在线监控执行的任务、支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务。另外本组件的特色就是非常简单,或者说“轻量级”,只有两个主要的类和一个前端静态 html 组成,Java 的话总共不超过 500 行代码。

2023-08-12 10:24:16 606 2

原创 Tomcat 编程式启动 JMX 监控

通过这篇,我们可以了解到,利用 JMX 技术可以方便获取 Tomcat 监控情况。但是我们采用自研的框架而非大家常见的 SpringBoot,于是就不能方便地通过设置配置开启 Tomcat 的 JMX,——尽管我们也是基于 Tomcat 的 Web 容器,而是还是 SpringMVC。在笔者一番尝试下,终于实现了“Enable Embedded Tomcat JMX Programmatically”,所谓 Programmatically 就是编程式的用 Java 代码去配置。

2023-08-06 22:56:56 668

原创 工作流与状态机

引言与动机:世界是那么的广阔无垠,姿态万千,我们梦想着计算设备的多元化,而如今我们已经梦想成真,但同时业务模型同样变得纷繁复杂。如果不考虑我们拥有的繁杂的业务模型,就很难谈得上去探索行业发展的方向。MyWF 是基于有限状态机 FSM(Finite State Machine)理论的工作流引擎。状态机、状态机顾名思义着眼点在“状态(State)”上,以“状态”的不同为设计的参考物。一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。每请求一次,状态就更换一次,就执行对应的行为。

2023-08-02 14:11:51 683

转载 学点编码知识又不会死:Unicode的流言终结者和编码大揭秘

如果你没时间读整篇文章或者你仅仅是略读了一下前面的内容。这个世界上从来没有纯文本这回事,如果你想读出一个字符串,你必须知道它的编码。Unicode 是一个简单的标准,用来把字符映射到数字上。Unicode 协会的人会帮你处理所有幕后的问题,包括为新字符指定编码。Unicode 并不告诉你字符是怎么编码成字节的。这是被编码方案决定的,通过 UTF 来指定。还有最重要的:永远记得通过 Content-Type 或者 meta charset 标签来显式指定你的文档的编码。

2023-07-18 12:15:50 84

原创 动手写一个 Java JWT Token 生成组件

OAuth2 中默认使用 Bearer Tokens (一般用 UUID 值)作为 token 的数据格式,但也支持升级使用 JSON Web Token(JWT) 来作为 token 的数据格式。实际来说,OAuth 规范中并无限制 Token 采取何种格式。今天我们就采用 JWT 来作为 Token,它的一个好处是自描述 Token,包含了用户信息而并不需要通过额外的接口获取用户信息。所谓 JWT Token,本身是明文的,前端得到之后进行 Base64 解码,即可获取用户信息(JSON)。

2023-06-24 19:37:21 521

原创 自制微信 SDK

微信 SDK,官方 SDK 也有,但我们自己动手,做一个“轮子”。就按上述列出officalappletmerchant源码包,还有一个公用的common。

2023-06-16 21:48:07 361

原创 简单易行的 Java 服务端生成动态 Word 文档下载

解决方案:无非是模板技术,界定不变和变的内容,预留插值的标记,替换为期待的最终内容。需求:某些合同,被制作成模板,以 Word 格式保存,输入相关的内容参数最终生成 Word 文档下载。总之,整个过程可以简述为:先制作一份 word 文档,预留好模板的插值符,然后让后台识别 word 为 jsp 文件(需改后缀名为。),不是返回到前端的 Response,而是文件流2,保存到服务器的磁盘文件上,然后告诉前端可以下载该文件。其中关键的技术点是 JSP 输出的“劫持”,不是输出到浏览器响应,而是保存到文件。

2023-06-06 00:20:56 628

转载 原来,这才是 HTML+CSS 导出 Word 最佳方式!

原来,这才是 HTML+CSS 导出 Word 最佳方式!

2023-06-04 00:50:43 676

原创 基于 Java 接口的 Spring 控制器

这有点控制器与业务类合二为一的味道。实际上为我们减少不少编码量,还是相当值得使用的。

2023-05-29 22:04:39 121

原创 微信分账功能 Java 开发

提示“没有分账权限”,参考开通。预下单要设为 true,默认是 false 不支持分账的:分账个人接收方姓名 name,这个是可选的。

2023-05-09 16:51:04 706 1

说说面向对象里面的“继承”

Generalization versus Abstraction 英文 PPT

2023-08-02

胡长城工作流系统讲解-干货

很好的资源,早期大神胡长城讲述工作流,干货满满!

2023-01-06

微软百科全书 Encarta 2002 CD-3

包含: MICROSOFT ENCARTA REFERENCE LIBRARY 2002 MICROSOFT ENCARTA ENCYCLOPEDIA DELUXE 2002 MICROSOFT ENCARTA ENCYCLOPEDIA STANDARD 2002

2022-02-02

微软百科全书 Encarta 2002 CD-1

微软百科全书 Encarta 2002 CD-1 包含: MICROSOFT ENCARTA REFERENCE LIBRARY 2002 MICROSOFT ENCARTA ENCYCLOPEDIA DELUXE 2002 MICROSOFT ENCARTA ENCYCLOPEDIA STANDARD 2002

2022-02-02

Peugeot 法国标致汽车宣传多媒体光碟

2004 年出品,Flash 制作

2022-02-02

三洋数码相机驱动光盘 2001 年

VPC-MZ1EX VPC-MZ1E VPC-MZ1

2022-02-02

ERP 进销存软件 锦晖 ERP 推广中心

Microsoft SQL Server 2000

2022-02-02

帝视尼电话商务录音系统

Driver_04_P2311--------型号为P2311的4 路集成卡驱动程序 Driver_08_P2311--------型号为P2311的8 路集成卡驱动程序 Driver_16_P2312--------型号为P2312的16路集成卡驱动程序 DSNPv2.4.7-------------电话录音系统 Popup-----------------PoPuP客户信息弹屏系统 Client----------------录音系统查听客户端 MONITORING TOOL.exe---实时监听工具

2022-02-02

跨终端的 Web 2013-04-12

跨终端的Web qcon-chengdu-2013-04-12-shuwenliang

2022-02-02

跨终端的WebKit渲染机制

跨终端的WebKit渲染机制qcon-beijing-2013-04-26-zhuyongsheng

2022-02-02

商城设计 开发文档 *.odt

作者 颜超敏 http://www.cnblogs.com/winstonyan/ 请用 LiberOffice 打开

2022-01-29

领域驱动设计 精简版 Abel Avram 和 Floyd Marinescu 总结整理

本书是 Eric Evans 的《领域驱动模型》一书的精简版,让你在短时间内理解领域驱动设计的内容。这本书没有介绍任何新的概念,它只是概要总结了领域驱动设计的本质, 抽取了Eric Evans 原书中关于这一主题的大部分内容,以及其他相关资料,包括已经出版的书籍和各种领域驱动设计讨论群组等。这本书可以让你快速了解领域驱动设计的基础知识,但不能替代Eric 书中提供的大量事例和 案例研究或者 Jimmy 书中提供的动手事例等。

2022-01-29

数据结构思维 中文版 Think Data Structures

Think Data Structures: Algorithms and Information Retrieval in Java 译者:飞龙 版本:1.0.0

2022-01-29

简简单单用OpenOffice写书 use_OO_for_writing

很少见、用心写的 OpenOffice 学习资源。*.odt 格式请用 LiberOffice/OpenOffice 打开

2022-01-29

Spring 2.0 技術手冊

正体中文版,内容不错

2022-01-29

JSP 页中的自定义标签 PPT

Tag File 我很喜欢用,其实是不错的技术,用的人不多。前后分离了,用的场合更少了

2022-01-29

电脑报-硬件大师.iso

《硬件大师》按内容分为:硬件基本知识、硬件选购识别、硬件安装、硬件调试和设置、使用维护、故障、小制作和改进、资料、其它 《电脑报》1997年出版

2021-11-20

电脑爱好者-跟我学系列之Photoshop.iso

2001年《电脑爱好者》杂志出品

2021-11-20

二笔输入法(软件、教学 VCD)

二笔输入法(软件、教学 VCD)

2021-11-20

SUPER-SCSI-驱动

连接 SCSI 光驱用的 SCSI 卡驱动,适用型号: ABP-902/03 ABP-915/16 ABP-922/25 ABP-940UA ABP-970UA ABP-940UW ABP-940UW-68 ABP-940UW-D ABP-970UW-68

2021-11-20

SkyRemote驱动.iso

台湾遥控器,手写板“无限飞鼠”的驱动

2021-11-20

U.S. Aircraft Carriers 美国航空母舰百科光碟.iso

ISO 光碟,要求 Win 3.1 系统,1994年出品

2021-11-20

Java 加解密技术.pdf

Java 加解密技术,详细介绍常用算法:BASE64/MD5/SHA/HMAC/DES/3DES/AES/PBE/RSA/DH,25页内容,有代码

2021-06-05

羽量级在线 HTML 编辑器

无任何 JS 库依赖,简单易懂

2021-02-25

商城测试用图片.7z

商城测试用图片,有各种规格,用 7zip压缩。这份是根据电商中所涉及的业务点整理出的图片,更多的偏向于产品功能性的测试。其后所涉及到的性能测试、压力测试、集成测试等,会在进一步分析,作为一名产品经理应该了解到这部分图片。

2020-02-16

Firefox Setup 56.0.2.exe

老版本的Firefox 支持旧插件的最后一个版本,注意安装后立刻断网,禁止自动更新

2019-08-12

DB Browser for SQLite.zip

DB Browser for SQLite 是一款 Sqlite 数据库编辑器,用户通过软件能够非常方便快捷的创建以及查看数据库。开源免费!

2019-08-12

HDTunePro 5(Win8修正版).zip

HD Tune Pro硬盘检测工具是一款小巧易用的硬盘工具软件,其主要功能有硬盘传输速率检测,健康状态检测,温度检测及磁盘表面扫描等。解决 Win8 边框问题,不会过期,好用!

2019-08-12

JDK JavaScript 独立运行时 Nashorn,Java 7 可用

JDK JavaScript 独立运行时 Nashorn,Java 7 可用。比 Rhino 更快,更好用

2016-01-10

数据库转换神器 ESF Database Migration Toolkit - Professional

数据库转换神器 ESF Database Migration Toolkit - Professional

2015-11-25

技术作家林信良博客精华 PDF

本人收集林大大的博客文章,放在一起了。特别是函数式的比较关注

2015-10-21

ASP 空间探针(JScript 写的)

ASP 空间探针(JScript 写的),作者:cocoon sTudio. 2002/12/12

2015-10-13

Ext JS 3.1~3.3 API中文文档(CHM格式)

Ext JS 3.1~3.3 API中文文档(CHM格式) 比较完整的版本。

2010-09-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除