自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Boy next door

alone coding g**

  • 博客(24)
  • 收藏
  • 关注

原创 教你教电脑下圈叉棋

原理主要是看了这一篇Get a taste of reinforcement learning — implement a tic tac toe agent,里面作者提出了大概的训练思路,我基本没有参照他的具体实现,但是思路肯定是差不多的。而且训练结果是我几乎下不过这个AI,比这篇的结果要好很多(不过这种明显算法可以解决的问题用AI也没什么意思)。实现核心在于训练一个模型MMM,这个模型用...

2018-10-12 21:30:35 1343 1

原创 MSVC X64 函数中的 RSP, RBP 和 Calling Convention

上一篇 博文提到了 X64 下 MSVC 如何传递参数,但是没有涉及到当参数个数大于 4 的时候如何分配内存空间的问题,接下来我们来探究这个问题。RSP 和 RBP按照上面提到的博文,我们进行如下实验:所有参数都是 struct Arg, 并且 sizeof(Arg) == 16。实验中,参数的个数 k = 6, 7, 8,先观察汇编后 rsp 和 rbp 寄存器的变化。实验...

2018-09-14 10:46:37 2422

原创 C# Redis 超时问题解决

https://stackexchange.github.io/StackExchange.Redis/TimeoutsRedis本身非常快,如果感觉是因为请求量过大想要 write in batch 的话排查方向可能错了,这里是 C# 本身默认设置的问题: 主要是这篇文章的 Are you seeing high number of busyio or busyworker threads...

2018-08-13 19:48:52 3845

原创 如何使用 Dockerfile 进行multi-stage building

需求: 1. 环境 A 用于 build 框架 a (不需要改动,编译时间很长) 2. 环境 B 用于 build 应用 b (需要频繁改动) 怎么办? https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds...

2018-08-01 16:37:14 358

原创 MSVC在x64模式下如何传参?

由于我需要写一个编译器,为了汇编程序和MSVC生成的C++进行交互,必须了解MSVC在x64下如何运作。查了一下基本没有中文的资料,MSDN是有文档的,但是讲的也不太清楚,这里根据这篇 进行一些试验,关键是弄懂 struct 是如何作为参数传递的。首先你需要阅读上面那个连接,了解 Windows 下 64 位的基本调用规范,包括整数、浮点数参数如何传递等等,然后这篇文章是用来解答上面的文档中需...

2018-07-25 14:25:55 976

原创 C++ 利用变长模板生成类型安全的变参函数

阅读本文需要理解 C++ 变长模板、函数重载等基本操作,可以自行百度别的博客void eat(int i){ cout << "eat " << i << endl;}void eat(char c){ cout << "eat " << c << endl;}// 利

2018-07-24 17:18:24 308

原创 C++ 利用宏批量定义类型/常量信息

标题起得比较模糊,是因为我才疏学浅,不知道怎么去描述这个事情探究的兴趣来源于 V8 的代码:bytecode.h它定义了一段我看不懂的宏 [code-0]#define BYTECODE_LIST(V) \ /* Extended width operands */ ...

2018-07-11 17:55:50 2080

原创 VS2017 Resharper的安装与使用

Resharper 有什么用https://www.jetbrains.com/resharper/如何安装打开 Visual Studio 2017,依次点击 工具 -> 扩展和更新 点击 联机在 搜索(Ctrl+E) 中输入 Resharper点击 下载(D) 会连接到外网,下载下来一个下载器,运行时是这样安装时记得勾选 Resharper C++ ,...

2018-07-08 19:10:51 49231 2

原创 彻底搞懂 c++ 函数参数的 & 和 &&

&如果你在网上看到 c++ 的几种传参方式,肯定就分成两种,“值传递”和“引用传递”。值传递很简单,复制一份就是了;“引用传递”就说的马马虎虎了。“传递的是实参的本身”,说起来很轻松,实际上很有问题。最简单的一个问题就是:“实参”本身不是一个东西怎么办?例如:void f_ck(int & i) { i++;}... fuck(1); // 编译不通过,...

2018-07-02 23:51:45 38854 7

原创 如何利用std::initializer_list<T>让你的初始化函数很骚

好久以前随便瞎转的时候看到一个 c++ 的 json 库支持这样的写法,觉得非常酷,颠覆了c++的三观。 (https://github.com/nlohmann/json)// a way to express an _array_ of key/value pairs [[&quot;currency&quot;, &quot;USD&quot;], [&quot;value&quot;, 42.99]]json array_not_objec..

2018-06-29 00:32:03 5459

原创 如何用 VS2017 检测 c++ 内存泄漏

https://msdn.microsoft.com/zh-cn/library/x98tx3cf.aspx要获得内存泄漏的报错信息,只需要三步,咱们不懂原理,只能复制代码。开始必须要有这样的引用#define CRTDBG_MAP_ALLOC #include &amp;lt;stdlib.h&amp;gt; #include &amp;lt;crtdbg.h&amp;gt; c++...

2018-06-27 22:49:27 6938

原创 C++值函数的初始化与拷贝

非常坑!当把对象作为值类型的时候,比如SomeType是SomeSucker的一个值类型class SomeSucker { SomeType something; SomeSucker() { something = SomeType(); } };class SomeType() { int arr[100]; int* ptr...

2018-06-27 12:03:01 147

原创 用最小堆优化 Dijkstra 算法

偷一份算法导论 dj 算法的伪代码:DIJKSTRA(G, w, s)1 INITIALIZE-SINGLE-SOURCE(G, s)2 S ← Ø3 Q ← V[G] //V*O(1)4 while Q ≠ Ø5 do u ← EXTRACT-MIN(Q) //EXTRACT-MIN,V*O(...

2018-06-10 22:57:16 2918 1

原创 C# 同时运行多个 Task

public static async Task&lt;int&gt; CalcAsync(int wait, int shit) { await Task.Run(() =&gt; Thread.Sleep(wait)); return shit; } public static as...

2018-06-08 17:53:55 9882

原创 C#: 如何使用VS 2017不依赖 ASP.NET Core 使用 EF Core 管理 sqlite 数据库

基本 follow 这篇,但是需要把一些命令行操作转化为 VS 操作。 https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/new-db EF Core 与 asp.n...

2018-06-07 11:10:10 2941

原创 Xunit test 如何捕获并显示 output

定义时使用 ITestOutputHelper outputHelper; public TestService(ITestOutputHelper output) { this.output = output; }之后利用 output.WriteLin...

2018-06-05 18:30:14 1453

原创 C# 的 async 和 await

C# 中可以利用 async 定义一个会进行非阻塞等待的函数,函数内部用 await Task.Run&lt;TResult&gt;(function) 来实现非阻塞等待,运行到 await 时,这个函数(所在的线程)会放弃控制权,然后当 function 返回后,再继续执行。 using System;using System.Collections.Generic;using Syst...

2018-06-01 14:21:36 287

原创 C# List<T> 一步初始化

原理: 数组可以通过int [] arr = new int[]{1, 2, 3};初始化 List 可以通过List&lt;int&gt; list = new List&lt;int&gt;(arr);初始化。两者组合起来就可以一步初始化列表 List&lt;Product&gt; pList = new List&lt;Product&g...

2018-05-31 16:46:24 36196 1

原创 VS C# 装逼自动构造代码片段

类中输入 prop\t\t 得到 public int MyProperty { get; set; }光标移动到 int 后方。输入 ctor\t\t 得到构造器函数 public Seat() { }输入 cw\t\t 得到 Console.WriteLine();光标移动到括号里。...

2018-05-31 14:11:15 1617

原创 C# lambda 表达式和 var 关键字

lambda 表达式 (int x, int y) =&amp;amp;gt; { return x + y }delegate 所引用的函数可以用匿名的方式定义 和 js 一样,lambda 表达式会捕捉定义时上下文中的变量,形成闭包。using System;using System.Collections.Generic;using System.IO;using System.Linq;...

2018-05-31 10:37:45 648

原创 C# 迭代器

方法一可以通过申明一个迭代器的属性实现迭代器 方法是 &amp;amp;lt;访问控制符&amp;amp;gt; IEnumerable &amp;amp;lt;T&amp;amp;gt; 迭代器名称 每次访问迭代器,会从老地方进入迭代器函数,然后迭代器 yield 或终止,下次再从 yield 的下一行开始执行。 如果迭代器函数已经结束,不需要返回任何东西,foreach 会结束对其的访问。using System.Text;na...

2018-05-29 18:52:18 295

原创 一个不同二叉搜索树结构个数的证明

https://leetcode.com/problems/unique-binary-search-trees/description/给定 1~n 共 n个 数字,建立一个二叉搜索树,则 n 个节点的有根树的所有结构,都有一个二叉搜索树与之结构相同。这里用数学归纳法证明:n = 1,没有问题。n = k,k 个节点的有根树的所有结构,都有一个二叉搜索树与其相同。 那么,我们只...

2018-05-25 18:15:52 762

原创 C# 如何从控制台读取输入和输出

// Console 是 namespace System 的一个类 string str = Console.ReadLine(); // 读入一行字符串,去掉其中的读入的换行符int a = Console.Read(); // 读入下一个输入,键盘按下瞬间相应,回车也会相应// VS 命令行下,一次回车会输入\r\n两个字符,满足两次Read()...

2018-05-24 15:44:57 17237

原创 如何用python-opencv对图片进行投影变换?

perspective_matrix = cv2.getPerspectiveTransform(np.float32(src_points), np.float32(target_points))projected_image = cv2.warpPerspective(image, perspective_matrix, (w, h))注意是np.float32, 否则会报错 ...

2018-05-24 00:02:30 1499

空空如也

空空如也

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

TA关注的人

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