12 张鑫

广州活映信息技术有限公司 - CTO/CIO/技术总监

我要认证

热爱 Web 开发

等级
TA的排名 675

Java Web 实现 HTTP Basic 认证

Basic 认证是一种较为简单的 HTTP 认证方式,客户端通过明文(Base64 编码格式)传输用户名和密码到服务端进行认证,通常需要配合 HTTPS 来保证信息传输的安全。界面如下。下面基于 Servlet 标准 Filter 实现一个 HTTP Basic 登录机制,可以用作测试时的临时发布用。部分函数利用了 AJAXJS 库。package com.ajaxjs.web;import java.io.IOException;import javax.servlet.Filter;im

2020-07-03 16:44:55

部署时决定-插件机制

什么是插件如果我们的项目依赖了一个接口,但是我们在开发时,真的没办法确定,部署的时候,到底采用哪个实现。比如 Nutz 的 Log。 它在运行时,会判读当前运行环境 log4j 是否可用(有 log4j 的org.apache.log4j.Logger类), 如果没有,那么它就把日志信息输出到控制台上。它的实现,就是依靠的方式。但是,同复杂强大的 OSGI 插件体系不同,这里的插件只是强调,在部署时决定采用什么实现。在运行时,它是没 办法更改的。因此 Nutz 虽然在编译时依赖了 Log4j,但是在运行时

2020-06-29 12:47:17

调用百度统计 API

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

2020-06-27 01:04:40

JSP 导出 Excel 格式备忘

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

2020-06-01 18:12:46

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

第三方账号登录流程"首先, 每个第三方账号(QQ/微博/微信等)都有产生一个唯一性的 openID, 首次登录是这个 openID, 第二次登录也是这个 openID,每次登录都是这个不会变的,所以,基于这种特性我们可以让这些第三方账号首次登录时, 进行的是(注册–自动登录)这两个过程, 把它 openID 当成一个字段存入数据库中,之后的每次登录都先进行判断下,若存在该 openID,...

2020-05-31 11:32:28

简简单单做一个带过期时间的内存缓存

做手机验证码的时候,一般都有五分钟或十分钟的限时机制,所以就需要把“号码–验证码”的信息暂存起来,过期便无效——类似于 Redis 自带过期的机制就适合了。不过应用 Redis 此类缓存模块要专门搭建环境和配置——比较繁琐,于是想到用 JVM 的缓存来做。关键地,我参考了该资源:https://blog.csdn.net/wab719591157/article/details/78029861并在这个基础上重写一遍,主要是改造为我自己的编码风格(例如泛型的处理,函数式 Lambda 代替 Inte

2020-05-25 00:49:55

Java 压缩/混淆 JavaScript 代码

基本上都是自己写的工具构建前端工程,压缩/混淆 JavaScript 代码的工具必不可少。我们是 Java 平台的,就是说用 Java 去压缩 JS,这样比较方便。虽然咱们可以外部调用 node 等专门的前端构建工具,但那样不省事,能在 Java 圈子里面搞定就行,我们不搞太复杂的。好~闲话不多说,先看看低配版的。低配版这个低配版就几个函数组成,没以前来其他第三方的包,故称为“低配版”。简单实用也可以,我也用了很久。/** * This file is part of the Echo Web Ap

2020-05-10 19:35:19

Istio 可以代替 Spring Cloud 吗?

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

2020-04-06 15:32:47

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

四年前写过一篇《用 nodejs 做反向代理服务器》,那时基于 HTTP 的,时过境迁,HTTPS 已是主流。怎么把 HTTP 升级到 SSL 呢?这里为大家稍作介绍一下,作法稍有不同。支持 SSL首先 nodejs 支持 HTTPS 很简单,只需要把 require(‘http’) 变为 require(‘https’),然后导入证书文件即可,当然也要把监听端口 80 变为 443。...

2018-05-13 17:48:21

Java 中国大陆身份证处理

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

2020-03-27 14:55:38

巧用 ServletOutputStream 制作代码生成器

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

2020-03-25 00:21:26

常见网络安全攻击分析

本文所述的常规性防御问题包括 XSS 攻击、 SQL 注入、CSRF 攻击、CRLF 注入,下面就逐一来分析这四种问题。跨站脚本攻击 XSS跨站脚本攻击(Cross Site Script,XSS,单词 Cross 可作“X”)是 Web 常见攻击的类型。同一域下面资源可以自由相互访问;不同域下面的资源,浏览器是会严格限制的。访问不同域称作“跨域”或“跨站”。如果主机名不相同(即使 a.qq....

2020-03-23 21:09:28

Vue Tab 组件再探究

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

2020-03-22 23:00:46

Java 处理 JSON 标准规范

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

2020-03-05 15:45:17

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

Tomcat产生的日志以文件形式保存在服务器上。如果要在 Web 上浏览这些日志,采用 WebSocket + tail 命令是简单可行的方式,例如这文章介绍得都很好。只是在 Win 系统上面就没有类似 tail 命令行的工具,除非找第三方或者 PowerShell 的,多少有点不便,——尽管多数 Win 用于开发环境,日志直接在 IDE 控制台上看就可以了。这里为大家介绍的是一种原生 Java ...

2020-02-20 16:15:36

Java8 Zip 压缩与解压缩

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

2020-02-16 23:22:57

免 mysqldump 命令备份 MySQL 数据库

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

2020-02-10 17:01:19

H5 动画大师 TweenMax.js/GSAP

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

2019-12-06 17:42:27

GoldenDict:一款免费的词典工具

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

2009-08-24 23:30:00

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

9月Libra开发人员更新-路线图#1 September Libra Developer Update - Roadmap #1October 02, 2019Libra Association自六月份正式发布 Libra 项目以来,来自开发人员社区的反响一直非常令人激动。开发者已发布了多个区块链浏览器(libranaut,libraview,librabrowser 和 libex...

2019-10-09 12:14:18

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 图书勋章
    图书勋章
    CSDN技术图书作者专属勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。