Ambertime

ivicel's thoughts and writings

设计模式—单例模式

定义 单例模式指全局应用中只有一个实例 构造方法一般为 private 通过静态方法或者枚举返回实例对象 确保在多线程环境下只有一个实例产生 确保实例在序例化和反序例化时不会产生新的实例 饿汉模式 public class Singleton { public static final Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; } } 在类的内部有一个静态变量 instance,...

Dart Tutor

一个基本的 Dart 程序 printInteger(int aNumber) { print('The number is $aNumber.') } // 程序入口 main() { var number = 42; printInteger(number); } 一些重要的概念 在 Dart 中, 所有的一切都是对象, 继承自 Object 类, null 类型也是一个对象 Dart 是强类型语言, 但变量的声明是可以省略类型的, 程序会在第一次赋值时自动推断类型. 也可以使用 dynamic 关键字来声明动态类型 Dart 支持泛型, 如 List 或...

Spring Flasky 开发(三)

1. XSS 保护 不要相信用户每一个输入 我们需要对用户写的 post 进行过滤, 以避免 XSS 攻击. 其他的因为 Thymeleaf 默认输出都是 escape 的, 所以我们不需要对像个人 Profile 的信息输入进行过滤. // 这里设置一些支持的标签, 比如 span, p, h* 之类 private static final PolicyFactory POLICY_FACTORY = new HtmlPolicyBuilder() .allowElements(Const.ALLOWED_HTML_TAG).toFactory(); public static...

Spring Flasky 开发(二)

1. 注册功能 注册需要 4 个字段, 分别是 username, email, password, confirmPassword, 注册的 username 和 email 都是惟一的, 需要从库查找. 两次输入的密码需要相同, 这里自己定义了一个注解约束, 然后实现 ConstraintValidator 接口 // 这个注解作用于类上面, 目标是字段 first 的值要等于字段 second @Retention(RUNTIME) @Target(value = {TYPE, ANNOTATION_TYPE}) // 约束的具体实现类...

Spring Flasky 开发(一)

1. 项目说明 Flasky 是 Flask Web Development 里的一个实例项目, 原项目是使用 Python 开发了, 一个类似微博的小型项目, 我用 Spring Boot 重写了一个 实现了里面提到了主要功能: Post 分页, 及在登录后查看关注的人发的 Post 帐号注册, 登录, 发 Post, 对他人 Post 的评论 个人信息页 权限系统, 帐号角色分配 邮件发送系统, 通过邮件激活帐号, 重置密码 关注, 取消关注功能 Rest API 2. 主要依赖 Spring Boot Spring Security 用于权限控制, 登录 Spring...