自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(202)
  • 收藏
  • 关注

转载 Sangmado 公共基础类库

Sangmado(发音 /sɔŋmɑːdu:/ ‘桑麻渡’)涵盖了支撑 .NET/C# 项目开发的最基础的公共类库,为团队在不断的系统开发和演进过程中发现和积累的最公共的代码可复用单元。Sangmado 公共类库设计原则:独立性:不与任何业务框架或业务应用耦合;依赖性:最小化外部类库依赖,选择最稳定的依赖库版本;分离性:关注点分离,满足 Separation of C...

2017-08-10 16:47:00 344

转载 Redola.Rpc 集成 Consul 服务发现

Redola.Rpc 解决了什么问题?Redola.Rpc 是一个使用 C# 开发的 RPC 框架,代码开源在 GitHub 上。目前版本仅支持 .NET Framework 4.6 以上版本,未来待系统稳健后再考虑移植 .NET Standard 和 .NET Core。Redola.Rpc 在 0.3.2 版本中,尝试解决几个 RPC 设计问题:我是谁?(Local ...

2017-08-02 08:23:00 286

转载 Redola.Rpc 的一个小目标

Redola.Rpc 的一个小目标Redola.Rpc 的一个小目标:20000 tps。 Concurrency level: 8 threads Complete requests: 20000Time taken for tests: 0.886 seconds Time per request: 0.044 ms (avg) Reques...

2016-10-25 18:33:00 331

转载 Cowboy 开源 WebSocket 网络库

Cowboy.WebSockets 是一个托管在 GitHub 上的基于.NET/C# 实现的开源 WebSocket 网络库,其完整的实现了RFC 6455 (The WebSocket Protocol) 协议标准,并部分实现了 RFC 7692 (Compression Extensions for WebSocket) 协议标准。WebSocket 可理解为建立在 TCP...

2016-02-06 06:31:00 385

转载 C# 高性能 TCP 服务的多种实现方式

哎~~ 想想大部分园友应该对"高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是《猴赛雷,C# 编写 TCP 服务的花样姿势!》。本篇文章的主旨是使用.NET/C# 实现 TCP 高性能服务的不同方式,包括但不限于如下内容:APM 方式,即 Asynchronous Programming ModelTAP 方式,即 Task-based ...

2016-02-05 14:42:00 523

转载 代码的印象派:写点好代码吧

最近有一位猎头顾问打电话询问是否有换工作的意向,对推荐的公司和职位的描述为:"我们这里有一家非常关注软件质量的公司,在寻找一位不仅能完成有挑战的软件开发任务,并且还对代码质量有非常高追求的软件工程师。"。很难得猎头顾问会以这样的切入点来推荐职位,而不是诸如"我们是互联网公司","我们是著名互联网公司","我们可以提供业内领先的薪资","我们创业的方向是行业的趋势","我们提供创业公...

2015-05-04 16:22:00 109

转载 K-Means 聚类算法

K-Means 概念定义:K-Means 是一种基于距离的排他的聚类划分方法。上面的 K-Means 描述中包含了几个概念:聚类(Clustering):K-Means 是一种聚类分析(Cluster Analysis)方法。聚类就是将数据对象分组成为多个类或者簇 (Cluster),使得在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别较大。划分(...

2015-02-09 23:06:00 316

转载 Ford-Fulkerson 最大流算法

流网络(Flow Networks)指的是一个有向图 G = (V, E),其中每条边 (u, v)∈ E 均有一非负容量 c(u, v)≥ 0。如果 (u, v) ∉ E 则可以规定 c(u, v) = 0。流网络中有两个特殊的顶点:源点 s (source)和汇点 t(sink)。为方便起见,假定每个顶点均处于从源点到汇点的某条路径上,就是说,对每个顶点 v∈ E,存在一条路径...

2015-02-06 03:32:00 592

转载 Johnson 全源最短路径算法

解决单源最短路径问题(Single Source Shortest Paths Problem)的算法包括:Dijkstra 单源最短路径算法:时间复杂度为 O(E + VlogV),要求权值非负;Bellman-Ford 单源最短路径算法:时间复杂度为 O(VE),适用于带负权值情况;对于全源最短路径问题(All-Pairs Shortest Paths Probl...

2015-02-02 08:33:00 1594

转载 Floyd-Warshall 全源最短路径算法

Floyd-Warshall 算法采用动态规划方案来解决在一个有向图 G = (V, E) 上每对顶点间的最短路径问题,即全源最短路径问题(All-Pairs Shortest Paths Problem),其中图 G 允许存在权值为负的边,但不存在权值为负的回路。Floyd-Warshall 算法的运行时间为Θ(V3)。Floyd-Warshall 算法由 Robert Floy...

2015-02-02 08:32:00 488

转载 Dijkstra 单源最短路径算法

Dijkstra 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法,由计算机科学家 Edsger Dijkstra 于 1956 年构思并于 1959 年发表。其解决的问题是:给定图 G 和源顶点 v,找到从 v 至图中所有顶点的最短路径。Dijkstra 算法采用贪心算法(Greedy Algorithm)范式...

2015-02-02 08:30:00 157

转载 Bellman-Ford 单源最短路径算法

Bellman-Ford 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法。该算法由Richard Bellman 和 Lester Ford 分别发表于 1958 年和 1956 年,而实际上 Edward F. Moore 也在 1957 年发布了相同的算法,因此,此算法也常被称为 Bellman-Ford-Moo...

2015-02-02 08:29:00 243

转载 Prim 最小生成树算法

Prim 算法是一种解决最小生成树问题(Minimum Spanning Tree)的算法。和 Kruskal 算法类似,Prim 算法的设计也是基于贪心算法(Greedy algorithm)。Prim 算法的思想很简单,一棵生成树必须连接所有的顶点,而要保持最小权重则每次选择邻接的边时要选择较小权重的边。Prim 算法看起来非常类似于单源最短路径Dijkstra 算法,从源点出...

2015-01-31 09:23:00 133

转载 Kruskal 最小生成树算法

对于一个给定的连通的无向图 G = (V, E),希望找到一个无回路的子集 T,T 是 E 的子集,它连接了所有的顶点,且其权值之和为最小。因为 T 无回路且连接所有的顶点,所以它必然是一棵树,称为生成树(Spanning Tree),因为它生成了图 G。显然,由于树 T 连接了所有的顶点,所以树 T 有 V - 1 条边。一张图 G 可以有很多棵生成树,而把确定权值最小的树 T...

2015-01-31 09:22:00 139

转载 Kosaraju 算法检测有向图的强连通性

给定一个有向图 G = (V, E) ,对于任意一对顶点 u 和 v,有 u --> v 和 v --> u,亦即,顶点 u 和 v 是互相可达的,则说明该图 G 是强连通的(Strongly Connected)。如下图中,任意两个顶点都是互相可达的。对于无向图,判断图是否是强连通的,可以直接使用深度优先搜索(DFS)或广度优先搜索(BFS),从任意一个顶点出发,如...

2015-01-30 22:29:00 277

转载 Kosaraju 算法查找强连通分支

有向图 G = (V, E) 的一个强连通分支(SCC:Strongly Connected Components)是一个最大的顶点集合 C,C 是 V 的子集,对于 C 中的每一对顶点 u 和 v,有 u --> v 和 v --> u,亦即,顶点 u 和 v 是互相可达的。实际上,强连通分支 SCC 将有向图分割为多个内部强连通的子图。如下图中,整个图不是强连通的,但...

2015-01-30 22:28:00 272

转载 不相交集合森林的启发式策略

在文章《Union-Find 操作检测无向图有无环算法》中介绍了 Union-Find 算法的一个简单实现,使用一维数组来处理不相交集合数据结构(Disjoint-set data structure)。Union-Find 算法为该数据结构提供了两种非常有用的操作:Find:判断子集中是否存在特定的元素。可以用于检测是否两个元素存在于相同的子集中。Union:将两个不子...

2015-01-30 20:50:00 145

转载 Union-Find 检测无向图有无环路算法

不相交集合数据结构(Disjoint-set data structure)是一种用于跟踪集合被分割成多个不相交的子集合的数据结构,每个集合通过一个代表来标识,代表即集合中的某个成员。Union-Find 算法为该数据结构提供了两种非常有用的操作:Find:判断子集中是否存在特定的元素。可以用于检测是否两个元素存在于相同的子集中。Union:将两个不子集合并成新的子集合。...

2015-01-30 20:49:00 190

转载 深度优先搜索检测有向图有无环路算法

给定有向图 G = (V, E),需要判断该图中是否存在环路(Cycle)。例如,下面的图 G 中包含 4 个顶点和 6 条边。实际上,上图中存在 3 个环路:0->2->0, 0->1->2->0, 3->3。深度优先搜索(DFS:Depth-First Search)可以用于检测图中是否存在环。DFS 会对一个连通的图构造一颗树,如果在...

2015-01-30 20:48:00 1465

转载 深度优先搜索

深度优先搜索(DFS:Depth-First Search)是一种图搜索策略,其将搜索限制到 2 种操作:(a) 访问图中的一个节点;(b) 访问该节点的子节点;在深度优先搜索中,对于最新发现的顶点,如果它还有以此为起点而未探测到的边,就沿此边继续探测下去。当顶点 v 的所有边都已被探寻过后,搜索将回溯到发现顶点 v 有起始点的那些边。这一过程一直进行到已发现从源顶点...

2015-01-30 20:46:00 82

转载 广度优先搜索

广度优先搜索(BFS:Breadth-First Search)是一种图搜索策略,其将搜索限制到 2 种操作:(a) 访问图中的一个节点;(b) 访问该节点的邻居节点;广度优先搜索(BFS)由 Edward F. Moore 在 1950 年发表,起初被用于在迷宫中寻找最短路径。在 Prim 最小生成树算法和 Dijkstra 单源最短路径算法中,都采用了与广度优先搜...

2015-01-30 20:45:00 98

转载 背包问题

背包问题描述:有一个小偷在偷窃一家商店时发现有 n 件物品,第 i 件物品价值 vi元,重 wi磅,此处 vi和 wi都是整数。小偷希望带走的物品价值越高越好,但他的背包至多只能装下 W 磅的东西,W 为整数。那么,小偷应该带走哪些物品呢?背包问题可以包含不同的限定条件:部分背包问题:可以带走物品的一部分,而不必做出 0-1 的二分选择。0-1 背包问...

2015-01-30 20:44:00 100

转载 字符串算法

字符串算法字符串字符判重算法字符串反转算法字符串左旋算法字符串右旋算法字符串旋转匹配算法字符串包含算法字符串删除算法字符串原地替换算法字符串压缩算法字符串变位词检测算法字符串转整数算法字符串全排列算法字符串字典序组合算法字符串的(括号)生成算法字符串字符判重算法给定字符串,确定是否字符串中的所有字符全都是不同的。假设...

2015-01-30 20:43:00 142

转载 Apache Thrift 跨语言服务开发框架

Apache Thrift 是一种支持多种编程语言的远程服务调用框架,由 Facebook 于 2007 年开发,并于 2008 年进入 Apache 开源项目管理。Apache Thrift 通过 IDL 来定义 RPC 的接口和数据类型,然后通过代码生成工具来生成针对不同编程语言的代码,目前支持 C++, Java, Python, PHP, Ruby, Erlang, Perl, ...

2015-01-13 22:51:00 216

转载 开源跨平台数据格式化框架概览

说到数据格式化框架,就不得不提到Google 的 Protocol Buffers,Facebook 的 Thrift,还有 Apache Hadoop 推出的 Avro。Microsoft最近开源的Bond 也是一种用于数据格式化的可扩展框架,其适用的应用场景包括服务间通信、大数据存储和处理等。为什么会有这么多关于数据格式处理的框架?它们都在解决什么问题呢?我们先来观察一下典...

2015-01-12 17:02:00 104

转载 人人都是 DBA(XV)锁信息收集脚本汇编

什么?有个 SQL 执行了 8 秒!哪里出了问题?臣妾不知道啊,得找 DBA 啊。DBA 人呢?离职了!!擦!!!程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA"。索引查看 Session 对应的 Thread 和当前 Command侦测 Deadlocking 或阻塞问题查看 Task 执行中哪个 Wait Type 最慢查看当...

2014-12-11 21:49:00 185

转载 人人都是 DBA(XIV)存储过程信息收集脚本汇编

什么?有个 SQL 执行了 8 秒!哪里出了问题?臣妾不知道啊,得找 DBA 啊。DBA 人呢?离职了!!擦!!!程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA"。索引获取存储过程 SP 执行次数排名查看哪个 SP 执行的平均时间最长查看哪个 SP 执行的平均时间最不稳定查看哪个 SP 耗费了最多的 CPU 时间查看哪个 SP...

2014-12-11 21:33:00 92

转载 人人都是 DBA(XIII)索引信息收集脚本汇编

什么?有个 SQL 执行了 8 秒!哪里出了问题?臣妾不知道啊,得找 DBA 啊。DBA 人呢?离职了!!擦!!!程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA"。索引找出哪些表的 Index 需要改进在指定数据库中查找哪些表的 Index 需要改进根据缓存的查询计划判断 SP 是否需要优化发现那些 Index 的写远多于读的表...

2014-12-11 08:53:00 113

转载 人人都是 DBA(XII)查询信息收集脚本汇编

什么?有个 SQL 执行了 8 秒!哪里出了问题?臣妾不知道啊,得找 DBA 啊。DBA 人呢?离职了!!擦!!!程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA"。索引按页编号查看数据表信息获取查询 SELECT 语句的执行次数排名看看哪些 Ad-hoc Query 在浪费资源查看当前处于等待状态的 Task 在等什么查询谁在...

2014-12-11 08:40:00 112

转载 人人都是 DBA(XI)I/O 信息收集脚本汇编

什么?有个 SQL 执行了 8 秒!哪里出了问题?臣妾不知道啊,得找 DBA 啊。DBA 人呢?离职了!!擦!!!程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA"。索引数据文件和日志文件位置和大小查看指定数据库文件的大小和可用空间服务器 Disk 容量和挂载信息查看 Disk 剩余空间查询数据库设置的 Recovery Mod...

2014-12-10 18:52:00 83

转载 人人都是 DBA(X)资源信息收集脚本汇编

什么?有个 SQL 执行了 8 秒!哪里出了问题?臣妾不知道啊,得找 DBA 啊。DBA 人呢?离职了!!擦!!!程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA"。索引获取数据库的 CPU 使用率过去一段时间里 CPU 利用率的历史情况谁用 CPU 工作的时间最长服务器上安装了多大的 MemorySQL Server 进程用了...

2014-12-10 12:31:00 115

转载 人人都是 DBA(IX)服务器信息收集脚本汇编

什么?有个 SQL 执行了 8 秒!哪里出了问题?臣妾不知道啊,得找 DBA 啊。DBA 人呢?离职了!!擦!!!程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA"。索引SQL Server 安装的是什么版本Windows 操作系统是什么版本SQL Server 是什么时候安装的服务器主机名是什么硬件服务器是谁制造的服务器硬...

2014-12-10 12:16:00 174

转载 人人都是 DBA(VIII)SQL Server 页存储结构

当在 SQL Server 数据库中创建一张表时,会在多张系统基础表中插入所创建表的信息,用于管理该表。通过目录视图 sys.tables, sys.columns, sys.indexes可以查看新建的表的元数据信息。下面使用创建 Customer 表的过程作为示例。USE [TEST]GODROP TABLE [dbo].[Customer]GO...

2014-12-09 08:55:00 140

转载 人人都是 DBA(VII)B 树和 B+ 树

B 树(B-Tree)是为磁盘等辅助存取设备设计的一种平衡查找树,它实现了以 O(log n) 时间复杂度执行查找、顺序读取、插入和删除操作。由于 B 树和 B 树的变种在降低磁盘I/O 操作次数方面表现优异,所以经常用于设计文件系统和数据库。B 树内的节点关系B 树的定义B 树的操作B 树的变种B+ 树的优势B+ 树 C# 代码实现在 1972 年...

2014-12-08 08:22:00 140

转载 人人都是 DBA(VI)SQL Server 事务日志

SQL Server 的数据库引擎通过事务服务(Transaction Services)提供事务的 ACID 属性支持。ACID 属性包括:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)事务日志(Transaction Log)事务日志(Transaction Log)存储的是对数据...

2014-12-03 08:45:00 157

转载 人人都是 DBA(V)SQL Server 数据库文件

SQL Server 数据库安装后会包含 4 个默认系统数据库:master, model, msdb, tempdb。SELECT [name] ,database_id ,suser_sname(owner_sid) AS [owner] ,create_date ,user_access_desc ,state_desc...

2014-12-02 08:47:00 152

转载 人人都是 DBA(IV)SQL Server 内存管理

SQL Server 的内存管理是一个庞大的主题,涉及特别多的概念和技术,例如常见的 Plan Cache、Buffer Pool、Memory Clerks 等。本文仅是管中窥豹,描述常见的内存管理相关概念。在了解内存管理之前,通过 sys.dm_os_memory_clerks 视图可以查询内存的使用职责(Memory Clerks),也就是内存的消耗者。SELECT...

2014-12-01 08:37:00 125

转载 人人都是 DBA(III)SQL Server 调度器

在 SQL Server 中,当数据库启动后,SQL Server 会为每个物理 CPU(包括 Physical CPU 和 Hyperthreaded)创建一个对应的任务调度器(Scheduler),Scheduler 可以看作为逻辑 CPU(Logical CPU)。根据 Affinity Mask 选项的配置,Scheduler 的状态被设置为 ONLINE 或 OFFLINE...

2014-11-28 08:31:00 134

转载 人人都是 DBA(II)SQL Server 元数据

SQL Server 中维护了一组表用于存储 SQL Server 中所有的对象、数据类型、约束条件、配置选项、可用资源等信息,这些信息称为元数据信息(Metadata),而这些表称为系统基础表(System Base Tables)。在这些基础表中,存在于 master 数据库中的一部分基础表包含系统级范围的信息。存在于特定数据库(也包含 master db)中的基础表包含属于该特定数...

2014-11-27 08:56:00 123

转载 人人都是 DBA(I)SQL Server 体系结构

在了解 SQL Server 数据库时,可以先从数据库的体系结构来观察。SQL Server 的体系结构中包含 4 个主要组成部分:协议层(Protocols)关系引擎(Relational Engine),也称为查询处理器(Query Processor)存储引擎(Storage Engine)SQLOS协议层(Protocols)当应用程序与SQ...

2014-11-26 08:48:00 607

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除