自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 网易云对象存储 HTTP 文件上传

网易数帆的对象存储服务不错,企业用户免费,可以绑定 https 域名等等。官方提供了 SDK 调用对象存储的各种服务,是挺好的挺方便的,不过就是 SDK 依赖臃肿,本人不是很待见,于是改用其 HTTP 接口来简单完成文件上传的服务,可以说是折腾了一把。本文采用 Java 语言完成。 生成授权信息 ...

2020-09-10 09:54:00 87 0

原创 简单实现 Bean 字段校验

关于 Bean 字段校验,我之前曾用 Apache BVal 探讨过,现在连这货都不想用,少一个依赖是一个。自己做,若完全按照 JSR 303 规范来实现会非常麻烦,没有那个必要。于是取舍一下,还是沿用 JSR 303 的注解作为约束条件,参考这位仁兄的基于反射的做法,自己实现一套 Bean 校验...

2020-08-01 00:02:13 147 0

原创 AJAXJS MVC 使用教程之五:过滤器

过滤器的主要目的是拦截每次请求之前和之后的一些操作。有别于 Servlet 标准过滤器,这是 MVC 框架中重写的过滤器。为简化概念,框架中不单独另设 AOP 机制,但可把过滤器当作 AOP 的代替品。其发挥如下作用:初始化数据库连接、日志记录、权限校验等等。 如下例子中注解 @MvcFilter...

2020-07-30 17:33:04 86 0

原创 AJAXJS MVC 使用教程之四:模板和返回响应数据

控制器处理完业务后会返回结果数据给前端:要么在前后端分离的情况下直接返回 JSON 数据,无须经过视图层;要么返回 HTML 则要在 View 层进行转化。 输出 HTML AJAXJS Web 提供中介媒介 ModelAndView 对象,用于存储页面所要显示的数据。在控制器方法中加入 Mode...

2020-07-30 17:30:49 84 0

原创 AJAXJS MVC 使用教程之三:处理请求参数

请求参数出现的地方将变成控制器的方法的输入参数,即每个 Java 参数映射着 HTTP 请求参数;然后控制器方法执行后返回的结果就是响应客户端的结果。 原生请求响应对象 原生对象指的是 HttpServletRequest、HttpServletResponse 这类由 Servlet 提供的接口...

2020-07-30 17:28:59 89 0

原创 AJAXJS MVC 使用教程之二:定义路由路径

写一个控制器很简单,但有下面注意的事项需要遵守的。 每个控制器类必须要实现IController接口,才能表明为控制器组件,否则不被视为控制器。 至少要一个@Path路径的注解定义在类声明上。 控制器的类名推荐以Controller结尾,比如ApplicationController, Hell...

2020-07-28 10:48:50 92 0

原创 AJAXJS MVC 使用教程之一:创建第一个 Hello World! 路由控制器

我们利用MVC来建立一个Hello World!的Web应用程序1。首先在项目pom.xml添加ajaxjs-web的JAR包依赖。 <dependency> <groupId>com.ajaxjs</groupId> <artifactI...

2020-07-27 23:57:57 95 0

转载 OO之美:好代码和坏代码

本节将介绍以下内容: 编码的规范 面向对象指导 引言 好的代码,是练出来的。坏的代码,是惯出来的。 那么,代码是写给计算机的吗?不是,代码其实是写给人的。Martin Fowler说:任何一个傻瓜都可以写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀程序员。那么,本文要探讨的其...

2020-07-27 19:53:00 111 0

转载 OO之美:面向对象和基于对象

本节将介绍以下内容: 基于对象的澄清 面向对象的差别 引言 这是一个常常被问起的话题,对于面向对象(Object-Oriented)我们可能有清晰的概念,对于基于对象(Object-Based)我们可能有模糊的认知,而对于二者一词之差的细节,又有多少概念值得深究呢? 关于面向对象的论述,本书第...

2020-07-27 19:43:51 74 0

转载 OO之美:依赖的哲学

依赖的哲学 本节将介绍以下内容: 关于依赖和耦合 面向抽象编程 依赖倒置原则 控制反转 依赖注入 工厂模式 Unity框架应用 引言 “不要调用我们,我们会调用你”是对DIP最形象的诠释。作为5大设计原则之一的DIP原则,有了2.4节“依赖倒置原则”由概念而实例的单纯讨论,还不能全面阐释清楚:...

2020-07-27 19:19:02 110 0

转载 OO 之美:设计的分寸

本节将介绍以下内容: 设计的由来 浅谈重构 设计的分寸 引言 有了前面两章“OO 大智慧”和“OO 大原则”的铺垫,相信读者已经有了对面向对象的基本认知。而本章将继续深入关于面向对象和设计问题的讨论,挑起设计与架构的话题。在高级语言横行的今天,对于静态语言的设计都源于面向对象思想,重构与设计都...

2020-07-27 18:06:40 79 0

转载 解耦设计手法小结

设计是一个平衡的产物,需要在各个约束条件下(组织目标,业务目标,开发流程,技术能力,学习及维护成本等)不断地进行演进。 我们虽然不提倡做大而全的设计,但会坚持进行基础性设计,以保证我们的设计一直在正确的方向上演进。 设计演进的过程既可以是自上而下的,也可以是自下而上的。 基本设计原则 业界普遍被接...

2020-07-27 15:13:22 65 0

转载 JDBC和数据库事务详解

现在还在写 JDBC 事务的文章,我觉得我一定是相当的 Out 了,现在主流的 java 应用,框架都是分布式的,各种分布式的事务,或者容器事务才是需要学习的重点,在这里谈 JDBC 确实有点不合时宜,但任何的 java 开发人员,如果不能够深入的理解数据库的事务,那在做数据处理的方面就一定是有所...

2020-07-27 12:15:12 79 0

转载 支付系统经验谈

支付系统各接口总结 接口:同步调用, 重试调用(框架自动重试),自己定时任务自动重试、主动查询、主动查询后自动重试,异步回调,对账,网关层处理对后续逻辑。定时关闭 正常支付: 正常获取支付签名. 重试调用(框架自动重试): 支付宝普通支付不交互,支付宝app支付交互可重试,微信支付交互...

2020-07-27 11:52:45 90 0

转载 自然而然的设计

设计,似乎有点高深莫测! 一堆的模式、模型,让人无所适从。学了记不住,记住又用不上。我觉得设计应当是自然而然的事,从实际问题出发找出实际的解决方案就可以了。其实难点在于能不能看到问题。 回想起 12 年前的 2000 年,当时刚进入一家 ERP 公司,被安排为一家灯饰公司"客制"...

2020-07-27 11:31:34 87 0

转载 用 Java 8 lambda 优化 JDBC

首先创建一个函数接口 ResultSetProcessor : @FunctionalInterface public interface ResultSetProcessor { public void process(ResultSet resultSet, long currentR...

2020-07-27 10:33:48 88 0

原创 权限设计算法基础
原力计划

权限管理在一个系统中是不可或缺的,总的来说还是一个数学的问题。 最笨的方法 之前这个系统的权限管理是通过配置文件来处理的,大概流程是这样的,把用户分成多个用户组,然后每个用户组对应着多个用户的 id,每次访问页面的时候,都会读取这个配置文件的信息,判断登录用户的 id 属于哪个用户组,然后在页面判...

2020-07-23 10:25:41 204 1

原创 聊聊数据库表结构设计心得

本文讨论是一般表的设计,有一定的普遍性和通用性,当然对于特殊性的考量则不在本文讨论之列。 自增 id Java 层的 CRUD 都是围绕自增 id 的,以这个 id 为依据的,所以自增 id 不可或缺,每张表都应该有。当然其他类型的 id,如 uuid、雪花 id 都可以并存。 还有分页、表与表的...

2020-07-22 12:09:03 2100 8

原创 六行代码写个 Tab 控件

其实之前的方法都不是太聪明(例如我写过的《Vue Tab 组件再探究》),个人认为这种方法,区区六行代码,搞定! changeTab = function(e) { var old = aj('.show'); old.classList.remove('show...

2020-07-18 22:33:25 120 0

原创 Java Web 实现 HTTP Basic 认证

Basic 认证是一种较为简单的 HTTP 认证方式,客户端通过明文(Base64 编码格式)传输用户名和密码到服务端进行认证,通常需要配合 HTTPS 来保证信息传输的安全。界面如下。 下面基于 Servlet 标准 Filter 实现一个 HTTP Basic 登录机制,可以用作测试时的临时...

2020-07-03 16:44:55 282 0

转载 部署时决定-插件机制

什么是插件 如果我们的项目依赖了一个接口,但是我们在开发时,真的没办法确定,部署的时候,到底采用哪个实现。比如 Nutz 的 Log。 它在运行时,会判读当前运行环境 log4j 是否可用(有 log4j 的org.apache.log4j.Logger类), 如果没有,那么它就把日志信息输出到控...

2020-06-29 12:47:17 164 0

原创 调用百度统计 API

百度统计为用户提供了 API 接入的方式,使得用户可以自定义 UI 而无须进入百度统计网站。百度统计存在两种账号体系:百度商业账号和百度账号,前者就是统计早期的用户账号,本文基于百度商业账号,说明如何接入统计 API。

2020-06-27 01:04:40 929 3

原创 JSP 导出 Excel 格式备忘

兼容 Excel 和 Libre Office Calc 的单元格“文本”设置 <td style="mso-number-format:'/@';" sdnum="2052;0;@">${item.id}</td>...

2020-06-01 18:12:46 207 0

原创 微博、QQ、微信第三方登录 Java 实现实录

第三方账号登录流程"首先, 每个第三方账号(QQ/微博/微信等)都有产生一个唯一性的 openID, 首次登录是这个 openID, 第二次登录也是这个 openID,每次登录都是这个不会变的,所以,基于这种特性我们可以让这些第三方账号首次登录时, 进行的是(注册–自动登录)这两...

2020-05-31 11:32:28 809 0

原创 简简单单做一个带过期时间的内存缓存
原力计划

做手机验证码的时候,一般都有五分钟或十分钟的限时机制,所以就需要把“号码–验证码”的信息暂存起来,过期便无效——类似于 Redis 自带过期的机制就适合了。不过应用 Redis 此类缓存模块要专门搭建环境和配置——比较繁琐,于是想到用 JVM 的缓存来做。关键地,我参考了该资源: https:/...

2020-05-25 00:49:55 449 0

原创 Java 压缩/混淆 JavaScript 代码

基本上都是自己写的工具构建前端工程,压缩/混淆 JavaScript 代码的工具必不可少。我们是 Java 平台的,就是说用 Java 去压缩 JS,这样比较方便。虽然咱们可以外部调用 node 等专门的前端构建工具,但那样不省事,能在 Java 圈子里面搞定就行,我们不搞太复杂的。好~闲话不多说...

2020-05-10 19:35:19 403 0

原创 Istio 可以代替 Spring Cloud 吗?

背景 过去,我们运维着“能做一切”的大型单体应用程序。 这是一种将产品推向市场的很好的方式,因为刚开始我们也只需要让我们的第一个应用上线。而且我们总是可以回头再来改进它的。部署一个大应用总是比构建和部署多个小块要容易。 集中式: 分布式: 集群 分布式和集中式会配合使用。 我们在搭建网站的时...

2020-04-06 15:32:47 3744 0

原创 一台 VPS 主机运行多个网站,多个 HTTPS 域名(基于 nodejs)

四年前写过一篇《用 nodejs 做反向代理服务器》,那时基于 HTTP 的,时过境迁,HTTPS 已是主流。怎么把 HTTP 升级到 SSL 呢?这里为大家稍作介绍一下,作法稍有不同。 支持 SSL 首先 nodejs 支持 HTTPS 很简单,只需要把 require(‘http’) ...

2020-03-28 23:39:08 2313 2

原创 Java 中国大陆身份证处理

开发过程中有涉及身份证的业务,首先是对身份证号码合法性的校验。我们先看看一个简单的版本,出处是 https://blog.csdn.net/ZWLJavaWeb/article/details/55047332。 简单检测 /** * 快速检测 * * @author https:/...

2020-03-27 14:55:38 511 6

原创 巧用 ServletOutputStream 制作代码生成器

代码生成器(CodeGenerators)能够极大地提高工作效率。我们知道,模板技术推崇一种模式:输出=模板+数据。代码生成器的原理也可以同样如是,这里不妨借鉴 JSP 生成的思路,页面 HTML 换成 Java 语句,成为固定不变的内容,即是“模板”;数据就是动态获取的内容,即实体信息和数据库的...

2020-03-25 00:21:26 422 1

原创 常见网络安全攻击分析

本文所述的常规性防御问题包括 XSS 攻击、 SQL 注入、CSRF 攻击、CRLF 注入,下面就逐一来分析这四种问题。 跨站脚本攻击 XSS 跨站脚本攻击(Cross Site Script,XSS,单词 Cross 可作“X”)是 Web 常见攻击的类型。同一域下面资源可以自由相互访问;不同域...

2020-03-23 21:09:28 690 0

原创 Vue Tab 组件再探究

初学 Vue 的时候,发现用 Vue 来写 Tab 组件是如此简单,利用“数据驱动”的思路还真和 js 控制 dom 不一样。请见下面第一版的代码,没有 js dom 那样 for 遍历各元素控制显示或隐藏,而是用 {‘selected’: index === selected} 控制样式,非常简...

2020-03-22 23:00:46 965 0

原创 Java 处理 JSON 标准规范

某日我瞎逛 Github,咦~发现 JSON 处理也有 javax, import javax.json.Json; import javax.json.JsonArrayBuilder; import javax.json.JsonNumber; import javax.json.JsonOb...

2020-03-05 15:45:17 282 0

原创 用 WebSocket + Java 原生功能实现 Web 实时日志(兼容Win平台)

Tomcat产生的日志以文件形式保存在服务器上。如果要在 Web 上浏览这些日志,采用 WebSocket + tail 命令是简单可行的方式,例如这文章介绍得都很好。只是在 Win 系统上面就没有类似 tail 命令行的工具,除非找第三方或者 PowerShell 的,多少有点不便,——尽管多数...

2020-02-20 16:15:36 555 0

原创 Java8 Zip 压缩与解压缩

网上找过几个例子都有点小问题,还是谷歌找出来的靠谱。主要是增加了指定文件的功能,通过 Java8 的 Lambda 判断是否加入 ZIP 压缩,比较方便。函数表达式的签名是 Function<File, Boolean>,参数是待加入的 File 对象,返回值 true 表示允许,反之...

2020-02-16 23:22:57 1779 0

原创 免 mysqldump 命令备份 MySQL 数据库

使用官方提供的 mysqldump 命令可以轻松地备份SQL,但是通常应用服务器和数据库服务器不是放在一块的儿,是否可以通过纯 Java 或 JDBC 来实现备份呢?答案是可以的,笔者根据此思路进行了与 AJAJX-Data 的整合,代码行数更精简,只有 200 多行代码。 但是,必须指出,这种思...

2020-02-10 17:01:19 438 0

原创 H5 动画大师 TweenMax.js/GSAP

手写过 CSS3 做 H5 动画,那过程很累,很低级。于是这次改用 TweenMax 库,感觉非常不错,原来它是做动画的老行尊,失敬失敬,早在 Adobe Flash 时代,这款就是知名的类库,知道现在还可以在其 GitHub 上找到它的 ActionScript 2/3 的开源代码,怪不得现在转...

2019-12-06 17:42:27 427 0

原创 GoldenDict:一款免费的词典工具

开源软件 GoldenDict 是一款“词典”管理软件。为什么称之为“词典”管理软件呢?因为准确地说,GoldenDict 它本身并没有提供任何的“词典”,而是仅提供词典所需的各方面功能,好比一些词典常见的功能也包含在内,即普通查询单词和屏幕截取单词、单词发音三大功能。GoldenDict 的界面...

2019-10-29 15:26:48 14709 1

翻译 9月Libra开发人员更新-路线图#1

9月Libra开发人员更新-路线图#1 September Libra Developer Update - Roadmap #1 October 02, 2019 Libra Association 自六月份正式发布 Libra 项目以来,来自开发人员社区的反响一直非常令人激动。开发者已发...

2019-10-09 12:15:59 257 0

翻译 Libra 开发者采风

Libra Developer Spotlight September 12, 2019 Michael Engle, Libra Association 我们很高兴看到全球各地有如此众多的开发者率先在 Libra 测试网上进行创新的工作。这里就把那些有亮点的例子分享出来! We’re s...

2019-10-07 09:39:57 392 0

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