ikki@github.io:~$

  • 领域驱动设计

    领域驱动设计实践 一些事实 常见软件状况 软件在第一版设计质量最高, 随着需求的变更, 打乱了原有设计, 软件质量会逐渐退化 代码变更了, 但是模型没有更新, 越积越多, 后续维护会退缩 常见的误解 一套模型打天下: 因为对业务的理解误差, 领域模型是随时都会发生变化的, 模型变化了,代码也是要变化的 DDD 和现有框架的冲突: DDD 是设计思想, 框架是编程工具, 两者并不冲突,关键是要让人读懂代码,看懂模型 对领域的拆分和实践 (战略层面) 先给领域起个名: 用一个名词概括一个领域, 比如 身份认证 就要比 登录 好的多,同时包括了多种业务的可能性 这个名词要偏向于业务, 便于沟通和理解 不能偏向于业务的某一种可能性, 可能会僵化部分人对业务的理解。 比如 提到 登录, 大部分脑海里第一时间想到两个框框, 一个填用户名,一个填密码 但是提到 身份认证, 部分人除了想到上面的以外,还会想到,验证码登录,刷脸,指纹识别等内容 限界上下文 减少误解:能穿多少穿多少 这句话在冬天和夏天 有着不同的理解 如果对一个领域中的实体,值对象,领域事件等 的理解没有歧义,限界上下文也就清晰了 大胆使用值对象...

  • 带薪那啥悟出的锁的原理

    带薪 ** 悟出的锁的原理 前段时间,带薪 ** 的事再次被热议,可恰恰是利用带薪** 的时间,想明白了常见的各种说的原理。 锁 是 处理并非问题经常用到的工具之一,关于常见的锁的分类和使用场景,下面结合带薪** 一 一给大家介绍。 悲观锁: ​ 要想带薪**,首先我们要找到一个没有人的坑位,但是坑位门上是关着的,我们并不知道坑位是否被别人占着,所以进坑之前,得先礼貌的问一句 “有人么?” (尝试加锁),如果我们收到了回应(加锁失败),则放弃此坑位;如果没有收到回应(加锁成功),这意味着资源可用 。这一套操作需要反复问询,特别耗费时间(性能低)。 乐观锁: ​ 为了解决性能低下的问题,物业将坑位的门设计成自动打开的,需要有人在里面并手动关上。每一位使用者都希望 门是开着 (期望的状态),而且,也避免了资源使用者的 访问效率低下的问题。 死锁: 有时候,遇到两个人抢同一个坑位,两个人都不谦让,都希望对方把资源让给自己,结果两个人都没有好下场。 ​ 活锁: 有时候,遇到两个人都很礼貌:”我不急,你先请”, 结果谦让半天,最后也都没有好下场。 不公平锁: 在坑位有限的情况下,有一些人总是抢不到坑位,有时候会发生惨烈的爆炸的事件。 公平锁: 为了保证所有人都能痛快的释放,不至于发生惨烈事件,大家都排起了队伍(队列),以确保所有人都有机会。 分段锁: 办公楼每一层都有厕所,每一层的员工抢坑位互不影响。 可重入锁 有些人没有安全感,进入坑位后,自己又加装了几把锁,但是同样的,这些锁需要他自己释放,

  • Wsl下docker使用

    WSL下Docker使用 WSL 简介 WSL 是 Window Subsystem for Linux 简称, 是Windows 和 Canonical 在windows 10 下面推出的一个Ubuntu 发行版 它可以在windows10 下运行原生的Linux 程序 相比于虚拟机的和物理机的优势 相比于虚拟机, 占用的 内存 和 CPU 资源更少, 可以直接访问windows 上文件资源, 不需要建立Samba服务或共享盘符 相比于物理机, 重新安装 UWP(universal windows platform) 应用即可, 可以随时快速重新安装系统, 所以不建议在此运行数据库软件和保存关键性数据 相比于MinGW Cygwin, 有更好的兼容性和原生体验 安装WSL 打开 powershell ,输入神秘代码 Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux, 重启电脑...