2017年11月22日

Golang源码探索(三) GC的实现原理

摘要: Golang从1.5开始引入了三色GC, 经过多次改进, 当前的1.9版本的GC停顿时间已经可以做到极短. 停顿时间的减少意味着"最大响应时间"的缩短, 这也让go更适合编写网络服务程序. 这篇文章将通过分析golang的源代码来讲解go中的三色GC的实现原理. 这个系列分析的golang源代码是G阅读全文

posted @ 2017-11-22 17:04 q303248153 阅读(2632) 评论(7) 编辑

2017年11月10日

Golang源码探索(二) 协程的实现原理

摘要: Golang最大的特色可以说是协程(goroutine)了, 协程让本来很复杂的异步编程变得简单, 让程序员不再需要面对回调地狱, 虽然现在引入了协程的语言越来越多, 但go中的协程仍然是实现的是最彻底的. 这篇文章将通过分析golang的源代码来讲解协程的实现原理. 这个系列分析的golang源代阅读全文

posted @ 2017-11-10 17:23 q303248153 阅读(1821) 评论(3) 编辑

2017年11月3日

Golang源码探索(一) 编译和调试源码

摘要: GO可以说是近几年最热门的新兴语言之一了, 一般人看到 分布式 和 大数据 就会想到GO, 这个系列的文章会通过研究golang的源代码来分析内部的实现原理, 和CoreCLR不同的是, golang的源代码已经被很多人研究过了, 我将会着重研究他们未提到过的部分. 另一点和CoreCLR不同的是,阅读全文

posted @ 2017-11-03 11:55 q303248153 阅读(677) 评论(0) 编辑

2017年10月28日

AsyncLocal的运作机制和陷阱

摘要: 这是今天帮 "柠檬" 分析一个 "AsyncLocal相关的问题" 时发现的. 试想这个代码输出的值是多少? 答案是123. 为什么修改了 的值却无效呢? 这要从AsyncLocal的运作机制说起. 首先这是 "AsyncLocal的源代码" : 获取和设置值用的是 和`ExecutionConte阅读全文

posted @ 2017-10-28 15:55 q303248153 阅读(204) 评论(2) 编辑

CoreCLR源码探索(八) JIT的工作原理(详解篇)

摘要: 在 "上一篇" 我们对CoreCLR中的JIT有了一个基础的了解, 这一篇我们将更详细分析JIT的实现. JIT的实现代码主要在 "https://github.com/dotnet/coreclr/tree/master/src/jit" 下, 要对一个的函数的JIT过程进行详细分析, 最好的办法阅读全文

posted @ 2017-10-28 11:48 q303248153 阅读(499) 评论(2) 编辑

2017年10月18日

CoreCLR源码探索(七) JIT的工作原理(入门篇)

摘要: 很多C 的初学者都会有这么一个疑问, .Net程序代码是如何被机器加载执行的? 最简单的解答是, C 会通过编译器(CodeDom, Roslyn)编译成IL代码, 然后CLR(.Net Framework, .Net Core, Mono)会把这些IL代码编译成目标机器的机器代码并执行. 相信大多阅读全文

posted @ 2017-10-18 17:27 q303248153 阅读(3204) 评论(21) 编辑

2017年9月19日

ZKWeb网页框架2.0正式发布

摘要: 2.0.0更新的内容有 更新框架要求 框架要求从 netstandard 1.6 升到 netstandard 2.0 框架要求从 netcoreapp1.1 升到 netcoreapp2.0 更新引用类库 Microsoft.AspNetCore.Hosting.Abstractions 2.0.阅读全文

posted @ 2017-09-19 12:13 q303248153 阅读(592) 评论(1) 编辑

2017年8月17日

.Net Core在X86上实现Interlocked.Increment(ref long)的方式

摘要: 因为在X86上long会被分割为两个int进行操作, 那么Interlocked.Increment的实现成为了一个问题。 在一番搜索后未发现有现成的文章解释这个问题,于是我就动手分析了。 这篇是笔记,不会做过多的解释。 首先重现环境是 .Net Core 2.0 Windows (x86) Bin阅读全文

posted @ 2017-08-17 14:36 q303248153 阅读(246) 评论(1) 编辑

2017年8月7日

如何在Linux上使用VIM进行.Net Core开发

摘要: 对于在Linux上开发.Net Core的程序员来说, 似乎都缺少一个好的IDE. Windows上有Visual Studio, Mac上有Visual Studio for Mac, 难道Linux只有Visual Studio Code了吗? Linux上有两个最好的编辑器: VIM和Emac阅读全文

posted @ 2017-08-07 14:39 q303248153 阅读(836) 评论(11) 编辑

2017年6月16日

ZKWeb网页框架1.9正式发布

摘要: 1.9.0更新的内容有 更新项目工具 更好的支持Linux 添加工具函数 Exception.ToDetailedString (获取例外的详细信息) Exception.ToSummaryString (获取例外的简略信息) Expression.ReplaceNode (替换表达式中的节点, 一阅读全文

posted @ 2017-06-16 14:39 q303248153 阅读(210) 评论(1) 编辑

导航

公告