Skip to content

Instantly share code, notes, and snippets.

View Reflaction
1. A General Fast Method Invoker (
public static FastInvokeHandler GetMethodInvoker(MethodInfo methodInfo)
DynamicMethod dynamicMethod = new DynamicMethod(string.Empty,
typeof(object), new Type[] { typeof(object),
typeof(object[]) },
ILGenerator il = dynamicMethod.GetILGenerator();
ParameterInfo[] ps = methodInfo.GetParameters();
Type[] paramTypes = new Type[ps.Length];
CleanCoder / MISC
Created August 24, 2018 02:55
// Rethrow exception with original callstack
CleanCoder / Production Issue
Last active September 7, 2018 08:02
View Production Issue
#自动抓取Dump, 当异常信息包含特定字符串
1. procdump.exe -ma -e 1 -f <Exception Content> <PID>
.i.e. procdump.exe -ma -e 1 -f "Commands ouy of sync" 3368
-ma Write a dump file with all process memory. The default dump format only includes thread and handle information.
-e Write a dump when the process encounters an unhandled exception. Include the 1 to create dump on first chance exceptions.
-f Filter the first chance exceptions. Wildcards (*) are supported. To just display the names without dumping, use a blank ("") filter.
C:\>procdump -e 1 -f "" w3wp.exe
Display without writing a dump, the exception codes/names of w3wp.exe
CleanCoder / MySQL
Last active July 27, 2018 07:24
View MySQL
# 索引
# Create Table If Not Exists
`id` int(64) NOT NULL auto_increment,
CleanCoder / ObjectPool
Created July 20, 2018 02:31
Object Pool
View ObjectPool
public class ObjectPoolAsync<T> : IDisposable
private readonly BufferBlock<T> buffer;
private readonly Func<T> factory;
private readonly int msecTimeout;
public ObjectPoolAsync (int initialCount, Func<T> factory, CancellationToken cts, int msecTimeout = 0)
this.msecTimeout = msecTimeout;
buffer = new BufferBlock<T> ( new DataflowBlockOptions { CancellationToken = cts });
CleanCoder / FP
Created July 20, 2018 02:07
Funtional Programming
View FP
struct Result<T> {
public T Ok { get; }
public Exception Error { get; }
public bool IsFailed { get => Error != null; }
public bool IsOk => !IsFailed;
public Result (T ok) {
Ok = ok;
Error = default (Exception);
CleanCoder / Task Extension
Last active April 8, 2020 09:47
Task Extension
View Task Extension
static async Task<T> Otherwise<T> (this Task<T> task, Func<Task<T>> orTask) {
task.ContinueWith (async innerTask => {
if (innerTask.Status == TaskStatus.Faulted)
return await orTask ();
return await Task.FromResult<T> (innerTask.Result);
}).Unwrap ();
static async Task<T> Retry<T> (Func<Task<T>> task, int retries, TimeSpan delay, CancellationToken cts = default (CancellationToken)) {
View Bash
clear # clean screen
netstat -tulpn | grep LISTEN # check the listening ports and applications
View Generic
// Dynamic Invoke Generic Method
MethodInfo methodInfo = typeof(MyClass).GetMethod("TestProc");
MethodInfo genericMethod = methodInfo.MakeGenericMethod(new[] { typeof(string) });
genericMethod.Invoke(null, new[] { "Hello" }); // the first parameter is null, means it is a static method
// returns property getter
public static Func<TObject, TProperty> GetPropGetter<TObject, TProperty>(string propertyName)
CleanCoder / WinDBG
Last active November 17, 2021 19:58
View WinDBG
1) 准备工作
.loadby sos clr
.cordll -ve -u -l
.load <<path>>\sosex.dll
.load <<path>>\mex.dll
2) 常用方法
!pe [<exceptionAddr>] most recent exception data (don’t forget the external stack)