2021年10月2日
经典分层 分层是打破复杂软件系统的最广为人知的技术之一。它已被推广到许多流行的书籍,如马丁·福勒的企业应用架构模式。 图层允许我们在不知道任何较低级别层的详细信息的情况下在较低级别层之上构建软件。在理想世界中,我们甚至可以用不同的实现替换低层。虽然层数可能有所不同,但我们在实践中大多……
阅读全文
2021年10月1日
概率基础 概率例子 质地均匀 ,每个面按照古典概率,概率都一样 已知条件,发生的概率 : 条件概率 条件概率 生活中就不是古典概型 分子 分母 同时除总数 转换成概率公式 例子 AB的概率 ,也就是B的概率 概率相除得到条件概率 例子 贝叶斯公式 利用新的证据修改已有的看法 联合概率 同时除 AB同时发生的概率 链式法则 先x……
阅读全文
2021年9月27日
Go 语言高效分词, 支持英文、中文、日文等 词典用双数组trie(Double-Array Trie)实现, 分词器算法为基于词频的最短路径加动态规划。 支持普通和搜索引擎两种分词模式,支持用户词典、词性标注,可运行JSON RPC服务。 分词速度单线程9MB/s,goroutines并发42M……
阅读全文
2021年9月27日
本地存储 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 package db import ( "database/sql" "fmt" _ "github.com/mattn/go-sqlite3" "log" "os" ) var db *sql.DB var err error func init() { if isExist("./keybase.db") { db, err = sql.Open("sqlite3", "./keybase.db") if err != nil { log.Fatal(err) } }else{ db, err = sql.Open("sqlite3", "./keybase.db") if err != nil { log.Fatal(err) } sqlStmt :=……
阅读全文
2021年9月26日
简介 本项目基于golang开发,是一个开放的垂直领域的爬虫框架,框架中将各个功能模块区分开,方便使用者重新实现子模块,进而构建自己垂直方方向的爬虫。 本项目将爬虫的各个功能流程区分成Spider模块(主控),Downloader模块(下载器),PageProcesser模块(页面分……
阅读全文
2021年9月25日
对象映射对象 当两个对象具有相同或相似属性时,自动对象到对象映射是将值从一个对象复制到另一个对象的有用方法。 DTO 和实体类通常具有相同的/类似的属性,您通常需要从实体创建 DTO 对象。 ABP 的对象对象映射系统与自动映射器集成使这些操作比手动映射容易得多。 仅使用自动对象映射进行实体输出 DTO 映射。 不要……
阅读全文
2021年9月25日
需要外部服务的实体中的业务逻辑 当业务逻辑仅使用该实体的属性时,只需在实体方法中实施业务规则就很简单。 如果业务逻辑要求查询数据库或使用应从依赖性注入系统解决的任何外部服务,该怎么办? 记住:实体不能注入服务! 实现这种商业逻辑有两种常见方法: 在实体方法上实现业务逻辑,并获取外部依赖作为……
阅读全文
2021年9月25日
实现:构建基块 这是本系列的重要组成部分。我们将用实例介绍和解释一些明确的规则。您可以遵循这些规则,并在实施域驱动设计时应用到您的解决方案中。 示例领域 示例将使用 GitHub 使用的一些概念,如问题、存储库、标签和用户,您已经熟悉。 下图显示了一些聚合、聚合根、实体、价值对象及其之间的关系: 问题聚……
阅读全文
2021年9月24日
简单代码! 踢足球很简单,但踢简单的足球是最难的。- 约翰 · 克鲁伊夫 如果我们把这个著名的名言作为编程,我们可以说: 编写代码非常简单,但编写简单的代码是最 难的事情。 什么是域驱动设计? 域驱动设计 (DDD) 是将实现与 不断发展的模型连接起来,满足复杂需求的软件开发方法; DDD 适用于复杂的领域和大……
阅读全文