如果产品代码格式错误,客户名称过长或地址验证服务超时,该怎么办?任何系统都会有错误,我们如何处理它们很重要。一致且透明的错误处理对于任何类型的生产系统都是至关重要的。 在上一章中,我们故意从 pipeline...
Understanding Functions 在很多现代语言中, 函数也是一等对象, 但只是使用函数并不意味着在进行函数式编程. 函数式编程范例的关键在于, 函数无处不在, 应有尽有,...
现在开始对 Place Order 工作流建模, 下面是我们需要建模的摘要: workflow "Place Order" = input: UnvalidatedOrder output (on success):...
现在, 我们构建了一组丰富的领域模型. 接下来要做的是 “保护好” 它, 因此应该采取一些预防措施, 以确保此域中的任何数据都是有效和一致的. 我们的目标是创建一个界限上下文, 该上下文始终包含我们可以信任的数据,...
Reviewing the Domain Model TODO: 补充需求. 现在让我们看下已有领域模型的伪代码 (在与领域专家讨论需求时记录下来的): context: Order-Taking //...
在本章中, 我们将简要介绍面向函数式的领域模型的典型软件架构以及将 DDD 概念(如 “界限上下文” 和 “领域事件”)转换为软件的方法. 当然, 软件架构本身就是一个领域, 因此, 让我们遵循我们自己的建议,...
DDD 社区指导我们如何创建通用的模型: 关注业务事件和工作流程, 而不是数据结构 (ps: 职责驱动) 将问题域划分为较小的子域 为每个子域创建解决方案模型 (Bounded Contexts – Domain...
本书大纲 第一部分 — 了解领域 什么是 DDD 通用模型的重要性 理解领域事件 拆分领域为子域 界限上下文 通用的语言 总结 DDD 的概念
工具: 油猴插件 添加以下脚本: // ==UserScript== // @name 使用等宽字体 // @namespace https://github.com/uldaman/ // @version 1.0.0...
Fantasy land Fantasy Land 是一套 TypeClass 的 JS 描述, 包括但不限于 Functor, Applicative, Monad. 以下是几个常用的 TypeClass....
list function object relation logic math string type adjust __ assoc clamp allPass add match is all addIndex...
学习 Haskell 过程中接触到的 FP (functional programming) 的一些概念, 并不是 FP 的全部 (PS: 为了容易理解, 尽可能的忽略了数学描述, 而改用开发容易理解的字眼,...
Reference: 读书与皇帝的金扁担 SQ3R 阅读方法 解构目录 读书不是从第一页开始, 而是从目录开始. 了解这本书的目录章节, 然后开始思考: 作者为何这样编排结构? 设想你是作者, 在这样的结构下,...
Currying: 因为是美国数理逻辑学家哈斯凯尔·柯里(Haskell Curry)发明了这种函数使用技巧, 所以这样用法就以他的名字命名为 Currying, 中文翻译为 “柯里化”....
函数式编程 函数式编程是一种编程典范, 比起指令式(过程式)编程的复杂执行过程, 函数式编程更加强调程序执行的结果, 倡导利用若干简单的执行单元让计算结果不断渐进, 仔细定义每个运算的输入, 以及每个运算返回的内容,...
AUP: Agile Unified Process 敏捷统一过程, 轻量级的 RUP. 本书通过两个案例 和 将 AUP 贯穿起来. 从 OOA/D...
转自 hatlonely Golang 语言社区 最近在做性能优化, 有个函数里面的耗时特别长, 看里面的操作大多是一些字符串拼接的操作, 而字符串拼接在 golang 里面其实有很多种实现. 直接使用运算符 func...
需先提升英语水平致赖世雄高级水平. 以下内容转自公众号「恶魔奶爸Sam」 1, 选书, 选择单页生词率低于 10 个以下的 (相关书籍推荐原书都有), 最简单的原文书应该是 Goose bump 跟 Magic Tree...
只有当感知和分离困难时, 才需要使用这三个特殊 Object. Reference:《修改代码的艺术》. Fake Object 仿对象, 实现了依赖的接口, 包含一些简单的数据处理逻辑, 可对外部调用进行感知....
尾递归 == 伪递归, 只有递, 没有归… 不是所有的递归都可以转成尾递归, 例如回溯的递归实现就不行, 因为回溯是每一次执行都有 n (n > 1) 种状态, 即在递归的每一层都会有多个递归调用. 递归 (回溯除外)...
去除 golint 对方法接收者命名为 self、this 的警告.
PlantUML for VSCode 在 VSCode 的插件中安装 plantuml brew install graphviz brew cask install java plantuml 文件后缀是 .wsd....
VSCode 中写 go test 时支持直接运行测试, 但是却输不出 log 信息, 这是因为 VSCode 默认执行 go test 时没有 -v 参数 (详细输出). 打开用户设置 (首选项 -> 设置): {...
oh-my-zsh go2shell Adobe Reader
在 VSCode 的资源管理器中打开文件会”冲”掉当前打开的文件, 很不方便. 这是由于默认在 VSCode 的资源管理器中单击文件是预览模式, 双击才是真正的打开文件, 通过用户设置可以改变这种行为. 打开用户设置...
打开用户设置 (首选项 -> 设置): { "go.inferGopath": true, "go.toolsGopath": "/Users/hanxiao/Desktop/commonGoPath" }...
socks5 设置方式: export ALL_PROXY=socks5://127.0.0.1:1086 Shadowsocks 是常用的代理工具, 它使用 socks5 协议, 而终端很多工具目前只支持 http 和...
Go 中没有提供继承的语义, 可以使用组合设计模式, 只需简单的将一个类型嵌入另一个类型就能实现复用.
Tox 是一个与众不同的即时通讯软件, 最大的特点是 P2P 通讯, 没有服务商的服务器储存各种信息, 所有的一切, 都储存在自己的电脑中, 并且完美兼容 Windows、Linux、MAC、IOS 以及 Android...
从程序员到软件架构师, 那些年走过的路.
Watch、star、fork 如上图所示, 每个 github 项目的右上角, 都有三个按钮: Watch、star、fork. Watch 这个单词在调试程序时经常遇到, 意为监视, 当把某个变量添加到监视后,...
位运算在程序设计中的使用 – 位掩码
一部分书是早几年就读过 PDF 的 (还是挑着章节读的 ~ ~), 很多内容其实没搞懂, 当时技术能力跟不上也就得过且过了; 随着这几年不断的提升自我, 对技术也越来越有比较深的领悟, 感觉应该把那些年当糟粕丢弃的精华重新捡起来再读次.
序号 0: 保存 Log, 页面跳转后, 控制台和网络控制台的内容暂时不清空, 保留下来 序号 1: 禁用缓存, 打钩后, 刷新页面, 所有请求都是 200, 不打勾当你打开重复页面会出现 304 序号 2:...
成也框架, 败也框架.
rebase 比较复杂, 应该是 git 中的高级应用了, 所以单独拿出来做篇 wiki, 转自: ihower blog. 使用 git rebase 避免無謂的 merge git pull 預設的行為是將遠端的...
在 AUP 中, 需求也不是一次性分析完的, 会是一个不断迭代精化的过程. 先来个总结: 摘要/非正式/用例图, 用来快速收集需求, 表达用户可以利用系统作什么, 是粗粒度级别的 详述用例,...
软件世界是对现实世界的抽象, 而传统的三层架构或 MVC 架构 (参考: 三层架构与 MVC), 却是结构化的生搬硬套, 在这些架构中的设计出来的对象是贫血的, 是“业务逻辑”类, 跟现实世界甚至毫无关系,...
错误信息如下: fatal: The remote end hung up unexpectedly fatal: early EOF fatal: unpack-objects failed 解决方案一: 1. 先启动...
微软已经彻底免费了 OneNote, 试用一段时间后感觉超级棒, 以后都将 OneNote 作为主要笔记工具. 笔记 (读书、学习等)、日志类 -> OneNote 拾遗、碎片知识、操作指南类 -> wiki 总结、感想、分析类 -> blog
回收站的使用
2.x 用 HA 实现 NameNode 高可靠 及 Federation (联盟)
小文件解决方案
RUP 项目模板 密码: ownc RUP 中有 9 个核心工作流, 分为 6 个核心过程工作流 (Core Process Workflows) 和 3 个核心支持工作流 (Core Supporting...
SecureCRT 是一款支持 SSH(SSH1 和 SSH2)的终端仿真程序, 同时支持 Telnet 和 rlogin 协议; 它可用于连接运行包括 Windows、Unis 和 linux 在内的远程系统....
简单聊聊架构师及其职责.
介绍 maven 是一个基于 POM (项目对象模型) 的项目管理和构建自动化工具, 通过它便捷的管理项目生命周期. 即项目的 jar 包依赖、开发、测试、打包和发布. 可以下载最新版本, 也可以下载经典版本:...
云计算
export 导出变量的作用域只即在当前进程及其子进程. SSH 远程会话是没有远程主机的环境变量, 解决方法: ssh 远程主机 ". ~/etc/profile && 命令". 有兴趣深纠可参考: ssh 连接远程主机执行脚本的环境变量问题
zookeeper 简介
今天因测试需要, 需要第二台 hadoop 虚拟机, 于是就从 smallcpp01 克隆了一份, 命名为 smallcpp02. 对第二台主机设置了 主机名、静态IP、 HOSTS、hadoop...
安装图形界面客户端: sudo add-apt-repository ppa:hzwhuang/ss-qt5 sudo apt-get update sudo apt-get install...
cd ~ 进入根目录 ls -la 查看下当前目录文件, 可以看到有个隐藏的 .ssh 文件夹 (点开头就是隐藏的) cd .ssh/ 进入 .ssh 目录, ls 一下, 看看该目录下有没有...
使用 rest 操作 HDFS
基于 bootstrap 的 jQuery 多级列表树插件 (支持 checkbox) 基于javascript和css开发的 Web 富文本编辑器
DDD: 领域驱动设计, 《领域驱动设计》 TDD: 测试驱动开发, 《敏捷软件开发》 BDD: 行为驱动开发, 《C# 测试驱动开发》 FDD: 特性驱动开发, 《彩色 UML 建模》 MDD: 元数据驱动开发,...
配置文件 整体 vim 的设置值一般是放置在 /etc/vimrc 这个文件, 不过, 不建议你修改它, 可以修改 ~/.vimrc 这个文件(默认不存在, 请你自行手动创建! ), 这是 vim 的用户配置文件....
nginx + keepalived 的组合通常被用来实现前端高可用. 在这个组合中, 利用 nginx 的反向代理实现前端的动静分离和负载均衡, 如下图. 在以上的体系中, 我们接着将一些通用的服务从动态 Server...
如何使用 Shell 操作 HDFS 参考 Blog: 使用 Shell 操作 HDFS 常用命令 get == copyToLocal put == copyFromHdfs cp 源和目标都是 hdfs -f 覆盖...
基础使用 执行方式 方式一: + 需在脚本开头指定解释器: #!/bin/bash + 给脚本 +x 权限, + 输入脚本绝对路径或相对路径: * /root/test.sh * ./test.sh +...
supervisor node.js 的 supervisor 插件可以帮我们监控文件的改动, 自动重启服务器, 这个 supervisor 是 node.js 的一个包 (而不是 python 的那个...
Missing semicolon: + 缺少分号 Use the function form of "use strict": + 使用标准化定义 function Unexpected space after...
使用 Java Api 操作 HDFS
使用 Shell 操作 HDFS
Hadoop 2.x 新特性
先在 windows 7 下搭建好 eclipse 项目环境, 参考 Eclipse 配置 Java 开发环境 导入依赖包 创建一个 Java 工程后, 在工程下新建个 lib 文件夹, 导入 hdfs 的相关 jar...
近些年, 微软对其分布式文件系统 (Distributed File System, DFS) 做了很多改良, 其中的一项技术对文件系统资源提供了统一视图. DFS 重新定向了来自 UNC 途径的请求,...
Java 安装 访问 oracle 官网 : http://www.oracle.com/index.html 下载下来直接安装即可, 安装的时候, 不要勾选 公共 JRE, 因为 JDK 中已包含一个专用的 JRE....
仅为实验集群或者小型集群的添加节点方法, 一般大型的集群都有专门的运维. 安装系统 首先安装好系统, 配置好 IP、JDK 及 Hadoop, 参考 搭建 Hadoop 分布式实验环境 前三步. 设置域名解析 到...
Hadoop 存在多种日志文件, 其中 Master 上的日志文件记录全面信息, 包括 Slave 上的 JobTracker 与 DataNode 也会将错误信息写到 Master 中, 而 Slave...
HDFS 简介
常用插件 有个老外推荐了他使用的一些包, 我觉得都很好, 这里也推荐一下 传送门. 我常用的大部分插件在之前的几篇 Wiki 都介绍配置过了. 如果出现快捷键失灵, 那么可能是热键冲突引起的, 此时可以 Ctrl +...
语法提示 使用插件: SublimeText-Nodejs 插件(Github) 注意, 这个插件不要用 Sublime 的 Package Control 来安装, Package Control...
Hadoop 初识
实验最终成品: 宿主机: win7 64位, 16G 虚拟化工具: VMware Workstation 虚拟机系统: Ubuntu 32位, 1.5G, 20G, NAT 主机名: smallcpp01...
安装系统 宿主机: win7 64位, 16G 虚拟机系统: Ubuntu 32位 1. 创建新的虚拟机 2. 使用自定义模式 3. 下一步直到选择安装源 4. 选择操作系统 5. 设置虚拟机名称及安装路径 6....
stl 提供了三个最基本的容器: vector, list, deque. vector vector 为存储的对象分配一块连续的地址空间, 因此对 vector 中的元素随机访问效率很高. 在 vecotor...
面对信息量爆炸的时代, 做为一名程序员, 如何才能在诸多知识碎片中逆水行舟?
转自少数派 添加待办事项 除了进入奇妙清单应用添加添加待办事项外, 这里列举了一些其他方法. 邮件添加 只需要用登录奇妙清单的邮箱账号作为发信人, 向 me@wunderlist.com 发送邮件,...
Genshi XML Template Language Genshi provides a XML-based template language that is heavily inspired by Kid,...
需要注意, 有时获取出来并测试成功的 XPath 用 xlml 来实现的话有可能获取不到, 那时就要手动分析了 获取 XPath 测试 XPath 在 console 中用 $x(' . . . ') 来测试 XPath
JVisualVM JConsole: Java 性能分析器, 用于连接正在运行的 JVM, 不过此 JVM 需要使用可管理的模式启动 (在启动时设置 com.sun.management.jmxremote)...
JDBC 中注册驱动为什么使用 Class.forName("com.mysql.jdbc.Driver") 而不使用 new com.mysql.jdbc.Driver()? 其原因有二. 原因一 new 一个类需要...
事务并发引起的问题 脏读 (Drity Read): 某个事务已更新一份数据, 另一个事务在此时读取了同一份数据, 由于某些原因, 前一个 RollBack 了操作, 则后一个事务所读取的数据就会是不正确的. 不可重复读...
在默认的情况下, MySQL 从自动提交 (autocommit) 模式运行, 这种模式会在每条语句执行完毕后把它作出的修改立刻提交给数据库并使之永久化. 事实上, 这相当于把每一条语句都隐含地当做一个事务来执行....
近来对架构这块又有了新认识, MVC 也好, 三层也罢, 都是结构性模式, 由于结构化, 而可能忽视了行为事件, 这类的架构大多是一种 “失血”、”贫血” 模式 (这段话不理解先看完下面的分析, 再看下最后的小结,...
RUP 软件工程管理概述 软件工程模型 瀑布式开发 迭代式开发 敏捷开发模型 瀑布式开发 传统的瀑布式开发, 也就是从需求到设计, 从设计到编码, 从编码到测试, 从测试到提交, 大概这样的流程;...
UML 架构及 StarUML UML 架构 UML 图形分类: 对象图 + 类图 + 组件图 + 部署图 交互图 + 用例图 + 时序图 + 协作图 + 活动图 状态图 + 状态图 参考文档 这里重点学习...
事务与锁是不同的, 事务具有 ACID (原子性、一致性、隔离性和持久性), 而锁是用于解决其中隔离性的一种机制. 事务的隔离级别通过锁的机制来实现. 隔离级别, 一般有四种: 读未提交 Read uncommitted...
悲观锁 (Pessimistic Lock), 顾名思义, 就是很悲观, 每次去拿数据的时候都认为别人会修改, 所以每次在拿数据的时候都会上锁, 这样别人想拿这个数据就会 block 直到它拿到锁....
读锁 读锁的意义在于, 当前线程告诉别人: “我要读东西啦, 你们先不要改数据, 免得我读到错的数据.” 由于可见, 对数据加读锁后, 其他线程还能读 (因为大家都是读的话, 就不会产生正在读的过程中数据被修改的问题),...
编码/解码 任何数据在内存中都是以二进制的形式保存, 也就是说一个文本文件, 不管你看到的是中文还是英文或者是法文, 它在内存也都是一串二进制数据 (或者说是一串字节数组), 那么当用一个文本浏览器打开一个文本文件时,...
打磨 由于 GFW 的原因, 直接使用 gem 会报错: Errno::ECONNRESET: Connection reset by peer - SSL_connect...
使用 rvm 管理 ruby 版本 这是推荐的方式, 但是由于 GFW 的原因, rvm 不一定安装成功, 如果不成功则参考下面的从源码安装. Reference: 在ubuntu中安装及使用rvm管理ruby版本...
介绍 Travis CI 是在软件开发领域中的一个在线的、分布式的持续集成服务, 用来构建及测试在 Github 托管的代码, 简单的说, 就是它可以监控你 Github 仓库的某个分支, 当你提交修改到这个分支的时候,...
DIY 主题 Simiki 自带的主题稍微有点 low, 可以使用官网推荐的另一款主题: yasimple, Clone 到本地后替换掉 ~/themes/simple 下的文件; 这些主题都没有网站图标, 所以要再...
开始 从 Hansong Xiao 的程序员的知识管理中学到用 wiki 来进行知识碎片整理, 确实, 一些零散的知识, 如某个常用命令的语法、特定的软件配置等等, 记到博客上太零碎, 本地记录的也不够系统, 放到个人...
将我的博客从 User Pages site 迁移到 Project Pages site.
一、初始化 Openshift Django 应用 首先去 Openshift 上创建一个 Django 应用, 关于怎么创建 Openshift 应用参考我另一篇笔记 我这里创建了一个...
序言 Putty 基本是用来登陆 Linux/Unix 终端的不二之先, 因其小, 开源, 界面也非常实用. 可是当你要在私有的机器上, 经常性的要登陆很多机器的时候就觉得烦琐了, 不光打开一堆的窗口,...
1. 中文文件名方框 这个是 sublime text 3 的 bug, 当 Windows 个性化显示中的设置自定义文本大小 (DPI) 大于默认的 100% 的时候, 就会出现这个bug. 解决方法: 在...
貌似安装 VM Tools 后也无法直接拖拽, 只能让 win7 与 VMware ubuntu 虚拟机实现文件共享了~~ 第一步 当然是安装 VM Tools 啦. 在 VMware 虚拟机界面, 点 VM ->...
Redmine 是一个开源的项目管理平台, 用于项目的需求管理和缺陷跟踪, Redmine 可以和多种版本库 (如 Git) 整合, 可以直接通过 Web 界面浏览 Git 提交, 还实现了提交和问题的关联.
一. 介绍 Openshift OpenShift 是红帽的云开发平台即服务(PaaS). 在 OpenShift 上, 开发人员能够创建、测试和运行他们的应用程序, 并且可以把它们部署到云中. Openshift...
1. git 配置 git config --list git config --global user.name “your name” git config --global user.email...
语法高亮 Sublime Text 内置 Markdown 文档的语法高亮, 只是默认的太挫了… Monokai Extended 和 Markdown Extended 是一套解决方案. 安装完两个插件后, 首先在...
考虑了很久, 终于下定决心把博客从 wordpress 迁移到 github 上了, 这里作个记录, 方便以后查询.
正则基础 常用符号 比较常用的是: ?, 代表前面的字符能出现 0 次或 1 次, 比如 colou?r 表示在目标串中找到 color 或 colour 并返回, 即 u 可以出现 0 次或 1 次 *,...
函数注释 /************************************************************************ ◇ 名称: $SymbolName$ ◇ 参数:...
在 Google 编程规范 中提到过: 用来做基类的类, 其析构函数应该为虚函数. 那么为什么呢? 看下面这个例子: #include "stdafx.h" #include using...
工欲善其事, 必先利其器. 这里推荐一款很不错的思维导图编辑软件 – XMind, 下载传送门. XMind界面简介 XMind有五种不同类型的主题,如下: 中心主题:每一张思维图有且仅有一个中心主题....
两者都是一种开发模式, 就像设计模式一样, 考虑的角度不一样, 个人感觉谈不到取代一说. 传统的瀑布式开发, 也就是从需求到设计, 从设计到编码, 从编码到测试, 从测试到提交大概这样的流程,...
类图和接口图 首先动物矩形框, 它就代表一个类图, 分三层: 第一层显示类的名称, 如果是抽象类, 则用斜体表示 第二层是类的属性 第三层是类的方法 注意前面的符号: ‘+’ –> public ‘-’ –>...