c# async/await
Talk is cheap, Show you the code first! 123456789101112131415161718192021222324252627private void button1_Click(object sender, EventArgs e){ Console.WriteLine("111 balabala. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId); AsyncMethod(); Console.WriteLine("222 balabala. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId);}private async Task AsyncMethod(){ var ResultFromTimeConsumingMethod = TimeConsumingMethod(); string Result = ...
C#反射机制
C#反射机制资料转载自知乎:https://zhuanlan.zhihu.com/p/41282759 何为反射?首先我们通过两个实例来说明反射的大体概念。 B超:大家体检的时候大概都做过B超,B超可以透过肚皮探测到你内脏的生理情况。这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时候就会产生一定的“回音”反射,然后把“回音”进行处理就可以显示出内脏的情况了。 地球内部结构:地球的内部结构大体可以分为三层:地壳、地幔和地核。如何在地球表面不用深入地球内部就知道其内部的构造呢?我们可以向地球发射“地震波”,“地震波”分两种一种是“横波”,另一种是“纵波”。“横波”只能穿透固体,而“纵波”既可穿透固体又可以穿透液体。通过在地面对纵波和横波的反回情况,我们就可以大体断定地球内部的构造了。 大家注意到这两个例子的共同特点,就是从一个对象的外部去了解对象内部的构造,而且都是利用了波的反射功能。在.NET中的反射也可以实现从对象的外部来了解对象(或程序集)内部结构的功能,哪怕你不知道这个对象(或程序集)是个什么东西,另外.NET中的反射还可以运态创 ...
C#学习-C# 3.0
C# 3.0 版本C# 3.0 新增的语法特性,如下: 自动实现的属性 匿名类型 查询表达式(LINQ) 表达式 表达式树 扩展方法 隐式类型本地变量 分部方法 对象和集合初始值设定项 自动实现属性这个特性非常简单,代码如下: 1234567891011121314public class PropertyExample{ // C# 3.0之前 private string mNickName; public string NickName { get { return mNickName; } set { mNickName = value; } } // C# 3.0 public string Name { get; set; }} 非常简单,看代码就懂了。 匿名类型代码也很简单,如下: 12var person = new {Title = "Name"};Debu ...
C#学习-C# 2.0
C# 2.0 版本在 C# 2.0 版本提供的特性如下: 泛型 分部类型(partial) 匿名方法 可以为 null 的值类型 迭代器 协变和逆变 getter/setter 单独可访问性 方法组转换(委托) 静态类 委托推断 泛型最常用的 List 就是泛型的一个应用。 C# 文档地址:泛型 泛型 API 的设计要设计一个泛型 的 API 非常简单,看以下代码中的 GetTypeName 方法。 123456789101112131415161718192021using UnityEngine;namespace QFramework.Master{ public class ReflectionExample : MonoBehaviour { string GetTypeName<T>() { var type = typeof(T); return type.Name; } private void Awake() { Debug.Log(GetTypeName<string& ...
javascript 高性能数组去重
一、测试模版数组去重是一个老生常谈的问题,网上流传着有各种各样的解法 为了测试这些解法的性能,我写了一个测试模版,用来计算数组去重的耗时 123456789101112131415161718192021// distinct.jslet arr1 = Array.from(new Array(100000), (x, index)=>{ return index})let arr2 = Array.from(new Array(50000), (x, index)=>{ return index+index})let start = new Date().getTime()console.log('开始数组去重')function distinct(a, b) { // 数组去重}console.log('去重后的长度', distinct(arr1, arr2).length)let end = new Date().getTime()console.l ...
C#学习-C# 1.0
C# 1.0我们先罗列一下 C# 1.0 发布时所包含的语法特性,如下: 类(class) 结构(struct) 接口(interface) 事件(event) 属性(property) 委托(delegates) 表达式 语句 特性(有时候也叫属性)(Attribute) C# 1.0 的特性只有以上这些。 基本上它涵盖了 C# 中最常用、最核心、最基础部分的内容。C# 使用进阶,一些非常基础的东西就不记录了。 类单纯从功能上来说,类可以: 包含变量(属性) 包含方法(行为) 继承 用来创建对象 面向对象与面向过程有了类我们比较容易地进行面向对象编程,没有类当然也可以面向对象编程,只不过会不那么容易做到。 那么什么是面向对象编程呢? 我的理解只有两个字,建模。 建模就是对需要实现的功能或者需要解决的问题建立业务模型。 比如要实现购买商品功能,就需要我们创建商品对象,还要把购买商品的行为归属到另一个对象中,这个对象有可能是顾客对象,也有可能是平台对象。 这就是非常典型的面向对象建模案例。 那么如果是面向过程中的购买商品会是什么样的呢? 我们也许这样考虑,购买商品先创建一个 ...
四叉树碰撞检测算法
实现原理四叉树是什么?四叉树本身是树结构的一种,如果物体过多的话,先根据物体所处位置划分成四块,如果每个块的中的物体数量还是很多的话,继续划分成四块。如下图红线所示。 检测的时候,就是根据待测试对象的位置,去找属于哪个块,再把这个块中的物体告诉你。如下图中的绿色物体。 那么怎么实现四叉树呢?用好 github 就行了(误),搜了一下,找到一个库,直接拿来改改就行了。 GitHub - timohausmann/quadtree-js: A lightweight quadtree implementation for javascript 代码解析构造函数1234567891011function Quadtree( bounds, max_objects, max_levels, level ) { this.max_objects = max_objects || 10; //每个区域可以容纳的最大对象数,超过就需要划分 this.max_levels = max_levels || 4; //最多划几层四叉树 th ...
GitHub+Hexo 搭建个人博客(四):SEO 优化及站点被搜索引擎收录设置
前言我们必须把我们的网站推送到搜索引擎那, 不然别人除了输入我们的域名或者搜索文章,是没法发现我们的博文。 如何查看我的网站是否被收录: site:你的网站比如我的:site:liuyingbo.com 站点地图站点地图即 sitemap, 是一个页面,上面放置了网站上需要搜索引擎抓取的所有页面的链接。站点地图可以告诉搜索引擎网站上有哪些可供抓取的网页,以便搜索引擎可以更加智能地抓取网站。所以我们首先需要生成一个站点地图 安装百度和 Google 的站点地图生成插件: 12npm install hexo-generator-baidu-sitemap --savenpm install hexo-generator-sitemap --save 然后来到站点目录配置文件_config.yml,在下面添加: 12345# 站点地图sitemap: path: sitemap.xmlbaidusitemap: path: baidusitemap.xml 然后重新推送到服务器,在访问如下 URL: 12https://你的域名/sitemap.xmlhttps://你的域名/bai ...
GitHub+Hexo 搭建个人博客(三):使用 GitHub Actions 实现 Hexo 博客自动部署
Hexo 相关知识点静态博客简单,但是发布博文时稍显麻烦,一般需要下面两步: 12hexo cleanhexo g -d // 相当于 hexo g + hexo d 如果考虑到同步源文件,还需要每次更改后,将源文件 push 到指定仓库: 1git push origin main 我们可以将 Hexo 文件分为两类,一类是源文件,即下面这些文件: 12345678.├── _config.yml├── package.json├── scaffolds├── source| ├── _drafts| └── _posts└── themes 一类是 public 文件,即网站文件: 12345public├── 2020├── categories├── tags.... 发布博文的这三个操作代表: hexo clean:删除网站(public)文件 hexo g:生成网站(public)文件 hexo d:将本地网站(public)文件同步到指定仓库(如:yourname.github.io)中 我使用一个私有仓库存放 Hexo 源文件,在 deppwang/depp ...
GitHub+Hexo 搭建个人博客(二):使用GitHub PicGod搭建图床
图床图床这是个老生常谈的问题了,流行过不少的图床但是基本都凉凉了。 背景图床是个啥东西就不用过多介绍了,先来对比一下各路图床: 微博图床:以前用的人比较多,从2019年4月开始开启了防盗链,凉凉 SM.MS:运营四年多了,也变得越来越慢了,到了晚上直接打不开图片,速度堪忧 其他小众图床:随时有挂掉的风险 Imgur等国外图床:国内访问速度太慢,随时有被墙的风险 语雀图床,语雀用的oss本来挺好用,也开启防盗链了 大厂储存服务:例如七牛云、又拍云、腾讯云COS、阿里云OSS等,容量限制,操作繁琐,又是实名认证又是域名备案的,麻烦,而且还要花钱(有钱又不怕麻烦的当我没说) Github图床Gitee 图床 如果舍得花钱可以选择大厂存储服务,定期交流量费即可。略过第2步直接往下看,如果喜欢稳定且免费的图床可以继续往下看gitee 就是github在国内的一个翻版,操作基本一致,github有时候访问会有抽风现象,原因你懂的 毕竟方校长的GFW不是吃素的。 因此,GitHub 图床是个不错的选择,利用 jsDelivr CDN 加速访问(jsDelivr 是一个免费开源的 CDN 解决 ...