摘要:
自定义异常类 稍具规模的项目, 一般都要自定义一组异常类, 这样做的好处是:1. 可以充分利用异常的中断特性, 简化代码的逻辑控制. 2. 在自定义的异常类, 可以设置 BusinessErrorCode 和 error message, 有了统一的 BusinessErrorCode, 排查和联调 阅读全文
摘要:
视图函数返回 status code 的方式 Spring 有一个专门的枚举类型 HttpStatus, 比如 HttpStatus.NOT_FOUND1. 视图函数返回 ResponseEntity 类型的对象. 2. 在 exception 类加注解 @ResponseStatus, 一旦视图函 阅读全文
摘要:
JSR 303 规范了bean validation, Hibernate validator实现了JSR 303所有的规范, 同时也是最常用的validator 工具包. 使用 Hibernate validator 可以大大简化数据验证工作. 对于 Web 项目, 通常前端需要做一些输入验证, 阅读全文
摘要:
Web UI项目中, 很多 Spring controller 视图函数直接返回 html 页面, 还有一些视图函数是要重定向或转发到其他的 url 上. redirect 和 forward的区别: 重定向 redirect: 完整的重定向包含两次request-response过程, 第一次是访 阅读全文
摘要:
在本示例中, 使用 INI 文件来定义用户和角色. 首先学习一下 INI 文件的规范. Shiro INI 的基本规范 [main]# 在这里定义 SecurityManager 和 Realms 等 [users]# 每一行定义一个用户, 格式是 username = password, role 阅读全文
摘要:
和 Spring Security 项目一样, Apache Shiro 也是一个被广泛使用安全框架, 它们都能完成认证、授权、会话管理等. 简单对比一下 Apache Shiro 和 Spring Security: 1. 适用范围: Spring Security 必须和 Spring MVC 阅读全文
摘要:
Spring Security 是一个安全框架, 可以简单地认为 Spring Security 是放在用户和 Spring 应用之间的一个安全屏障, 每一个 web 请求都先要经过 Spring Security 进行 Authenticate 和 Authoration 验证. 不得不说, Sp 阅读全文
摘要:
本文转载自 https://blog.fundebug.com/2018/01/10/how-to-clean-docker-disk/ , 感谢原作者. 摘要:用了Docker,好处挺多的,但是有一个不大不小的问题,它会一不小心占用太多磁盘,这就意味着我们必须及时清理。 作为一个有信仰的技术公司, 阅读全文
摘要:
本文基于Pebble官方文档, 对pebble的语法做一些介绍. Pebble 官方资料 主页: https://pebbletemplates.io/github wiki: https://github.com/PebbleTemplates/pebble/wiki Pebble 基本语法 表达 阅读全文
摘要:
Java 模板引擎选择 SpringBoot Starter项目向导中可选的Java模版引擎有:1. Thymeleaf (百里香草叶子)2. Freemarker3. Mustache4. Groovy Templates 简单评价这些模版引擎吧, 1. Thymeleaf: SpringBoot 阅读全文
摘要:
使用 CommandLineRunner 对Spring Bean进行额外初始化 如果想要在Spring 容器初始化做一些额外的工作, 比如要对Spring Bean 对象做一些额外的工作, 首先想到的方式是, 直接将代码写在 main() 函数的 SpringApplication.run()后, 阅读全文
摘要:
RESTful 架构REST 并非一种技术或规范, 而是一种架构风格, 如果一个架构符合Rest的约束条件和原则, 就可以称作是 RESTful 架构. REST全称是Representational State Transfer, 省略了定语 Resource, 完整的讲法是"资源表现性状态转移" 阅读全文
摘要:
Spring Boot 通用配置参数https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html Spring 下所有项目的文档, Spring boot 只是其中一 阅读全文
摘要:
Basic Authorization 规范 Request 头部:Authorization: Basic QWxpY2U6MTIzNDU2其中 QWxpY2U6MTIzNDU2 是user:pwd做 base64 编码, 格式是 user:pwd response 头部: WWW-Authent 阅读全文
摘要:
默认情况下, Spring Security 并不启用方法级的安全管控. 启用方法级的管控后, 可以针对不同的方法通过注解设置不同的访问条件. Spring Security 支持三种方法级注解, 分别是 JSR-205 注解/@Secured 注解/prePostEnabled注解. 这些注解不仅 阅读全文
摘要:
SpringBoot非常适合开发 Restful API程序, 我们都知道为API文档非常重要, 但要维护好难度也很大, 原因有: 1. API文档如何能被方便地找到? 以文件的形式编写API文档都有这个问题, 使用在线 Wiki 等知识平台部分地能解决这个问题. 2. API文档经常过期. API 阅读全文
摘要:
web 项目鉴权 主要的鉴权方式有:1. 用户名/密码鉴权, 然后通过 Session/Cookie 保存鉴权结果. 2. 用户名/密码鉴权, 通过 Basic authentication 方式, 每次请求都要将 appId/appSecret 加到 HTTP [Authorization] he 阅读全文
摘要:
相关的文章 SpringBoot系列: 与Spring Rest服务交互数据https://www.cnblogs.com/harrychinese/p/Springboot_SpringRest.html SpringBoot系列: Spring MVC视图方法的补充https://www.cnb 阅读全文
摘要:
本文基本上摘自纯洁的微笑的博客 http://www.ityouknow.com/springcloud/2018/07/20/spring-cloud-consul.html . 感谢作者的付出. 服务注册基础组件选择 在服务注册这个环节, 业界有很多组件可供选择, 主要有:1. Spring C 阅读全文
摘要:
Spring JdbcTemplate 事务控制 之前使用 JDBC API 操作, 经常用到的对象有: connection 和 preparedStatement. dbConnection.setAutoCommit(false); //transaction block start //so 阅读全文
摘要:
对于一些小的项目, 我们没有必要使用MyBatis/JPA/Hibernate等重量级技术, 直接使用Spring JDBC 即可, Spring JDBC 是对 jdbc的简单封装, 很容易掌握. Spring JdbcTemplate 和 JDBC API 对比 JDBC API的缺点:1. 我 阅读全文
摘要:
承接上个博文, 这次是方案2的实现, 本方案的特点:1. 该方案能很好地从几台服务器中选出一个Master机器, 不仅仅可以用于定时任务场景, 还可以用在其他场景下. 2. 该方案能实现Master节点的自动 failover, 经我测试 failover 过程稍长, 接近1分钟. 综上所述, 本方 阅读全文
摘要:
背景说明: 有一套Web服务程序, 为了保证HA, 需要在多台服务器上部署, 该服务程序有一些定时任务要执行, 现在要保证的是, 同一定时任务不会在多台机器上被同时执行. 方案1 任务级的主备方案: 每个定时任务启动后, 都发起任务级的主节点的竞争, 胜出者执行具体任务. 方案2 服务器级的主备方案 阅读全文
摘要:
Curator Java 客户端 CRUD 使用 Curator 是 Apache 下的开源项目, Spring Cloud 也采用了该库, 可以其功能强大和权威性. Curator 项目包含多个 artifact, 一般情况下, 我们只需要引入 curator-recipes 依赖即可, arti 阅读全文
摘要:
ZooKeeper 背景 ZooKeeper 是一个非常优秀的开源项目, 可以为软件系统提供非常重要的基础特性:1. 分布式锁. 使用场景有: 比如我们有一套系统, 为了保证HA, 在多台需要在多台服务器上部署, 该服务程序有一些定时任务需要执行, 我们需要确保同一个定时任务不会在多台机器上被同时执 阅读全文
摘要:
Sprng Boot 2 actuator变动加大, 网上很多资料都都已经过期. 配置项 在 application.properties 配置文件, actuator 的设置项 management.endpoints(设置 actuator 全局级的属性) 和 management.endpoi 阅读全文
摘要:
用Spring Boot Starter 向导生成了一个很简单SpringBoot程序, 用到了 MySQL, 总是下面不能加载 Mysql driver class 错误. Cannot load driver class: com.mysql.jdbc.Driver 刚开始以为是 applica 阅读全文
摘要:
Web请求的全过程(包含DNS) 完整过程参考 https://blog.csdn.net/yonggeit/article/details/72857630DNS 服务器并不承担 TCP 连接的数据通道, 只是在建立TCP连接之前起作用, 告知目标机器的IP是多少. consul 域名服务 标准的 阅读全文
摘要:
# 查看容器的 dns 解析设置文件, 也可以检查docker 运行环境 DNS docker run busybox:latest cat /etc/resolv.conf # 为容器 mybusybox 运行手动设置一个dns服务器, 并检查是否生效docker run --dns 10.0.0 阅读全文
摘要:
consul 命令行工具 consul 支持 Windows/Linux 等多种平台, 一般生产环境部署在 Linux, 下载包中仅有一个可执行程序, 所有的服务都通过命令行开启. 常用的命令有: consul agent #开启 server agent 或 client agentconsul 阅读全文
摘要:
VirtualBox常用网络 NetworkAddress Translation(NAT)NAT 是VirtualBox建立的虚拟机默认的形式. 虚拟机之间无法沟通, 虚拟机能连接外部网络. GuestOS只能看到从Host发来的数据请求, 但主机不能访问GuestOS(可以通过端口转发来访问虚拟 阅读全文
摘要:
consul 是什么 consul 是 HashiCorp 公司推出的开源工具, 该公司另一个有名的产品是 Vargrant. 用于实现分布式系统的服务发现和配置, 具体功能有:1. 提供KV安全存储, 这点和Zookeeper一样, 可用于Leader选举, 分布式事务协调的够等功能. KV存储的 阅读全文
摘要:
docker 技术已经研究了一段时间, 基本的知识点和使用场景比较清楚了, 还有一些比较高阶的内容未曾尝试, 将来工作中如果能用到, 再深入研究吧. 这篇博文汇总了一些有用的文章链接. 书籍 Docker 从入门到精通 https://yeasy.gitbooks.io/docker_practic 阅读全文
摘要:
本文转载自 搜云库 的文章 https://www.jianshu.com/p/7d76850de03f , 感谢作者 3.png 上一篇文章搭建了一个具有基础功能,权限认证、TLS 的私有仓库,但是Docker Registry 作为镜像仓库,连管理界面都没有,甚至连一些运维必备的功能都是缺失的, 阅读全文
摘要:
docker 基础镜像环境 alpine 可以使用 docker search 命令搜索指定的 image, 或者访问网址 https://hub.docker.com/explore/ 在hub官网会经常能看到 alpine 字样, alpine 是要给非常轻量级的Linux发行版,Docker官 阅读全文
摘要:
docker 主要有两种数据存储形式, 一种是storage driver(也叫做 Graph driver), 另一种是 volume driver. stroage driver主要是存储那些无状态的数据, 写入密集型的场景应该使用 volume driver. storage driver 容 阅读全文
摘要:
本文转载自 (https://segmentfault.com/a/1190000016447161), 感谢作者. " " 📖 节选自 "Awesome CheatSheet/Docker CheatSheet" ,对来自 "官方文档" 及 "Docker Links" 中链接内容的归档整理,包 阅读全文
摘要:
本文转自 https://segmentfault.com/a/1190000016449865 , 感谢作者! 本文的源代码在:https://github.com/chanjarste... 这里先给出一些Docker Image制作的要求,之后我们再看怎么做。 下面具体讲一下具体怎么做到以上几 阅读全文
摘要:
为什么要使用Docker? 容器真是个好东西, (1)容器能提供隔离性; (2)容器能打包环境, 简化部署难度; (3)容器具有很好的迁移性, 开发在不同环境中部署. (4) 容器是轻量级. 详细讲解如下:1. docker能为应用系统提供一个很好的沙箱 比如要部署两套Python Web系统, 一 阅读全文
摘要:
Flyway 和 Liquibase 都是 Java 项目中常用的 DB migration 工具, 从使用简便性看,Flyway 比 Liquibase 更简单, 从 github 的 star 数量看, flyway 更受欢迎. flyway 命令行工具和 maven 插件 对于 SpringB 阅读全文