C#并发
并发 并发可以通过多线程(线程池)、异步编程、响应式编程实现 多线程包括并行(把正在执行的大量的任务分割成小块,分配给多个同时运行的线程) 异步编程 使用两个关键字: async和await async加在方法声明上, 作用是使方法内的await关键字生效, 如果async方法有返回值, 应该返回Task, 如果没有返回值, 应该返回Task, await用来异步等待, 使得方法可异...
并发 并发可以通过多线程(线程池)、异步编程、响应式编程实现 多线程包括并行(把正在执行的大量的任务分割成小块,分配给多个同时运行的线程) 异步编程 使用两个关键字: async和await async加在方法声明上, 作用是使方法内的await关键字生效, 如果async方法有返回值, 应该返回Task, 如果没有返回值, 应该返回Task, await用来异步等待, 使得方法可异...
KD树 KD树 KD-Tree(k-dimensional tree的简称), 可以实现k近邻搜索, 构造kd树相当于不断地用垂直于坐标轴的超平面将k维空间切分 k-d树每个结点都是k维的点二叉树, 所有非叶子节点可以看作用超平面把空间分成两个部分, 节点左子树代表超平面左边的点, 右子树代表右边的点适合需要进行相邻区间和查询的情况, 比如需要找到一个点附近的一些点, 维护这些点之间...
排序 最近面试遇到手写排序的问题, 虽然记得原理但总有些细节不完善, 所以总结一下 只实现常见的几种排序: 冒泡, 快排, 堆排. 用C#,C++,lua多个语言实现 C#实现 internal class Program { //冒泡排序 static void Sort_Bubble<T>(T[] arr, Func<T, T, int...
八叉树 八叉树是一种空间划分树, 每个结点对应空间中的一片区域, 结点的子节点按八等分继续细分 如果不做限制就会一直细分, 所以需要限制最大划分层级和最大对象数, 如果结点代表的区域包含的对象数大于最大对象数且当前层级小于最大层级,那么就对当前结点进行划分. 适合需要进行相邻区间和查询的情况, 比如需要找到一个点附近的一些点, 维护这些点之间的状态, 就可以用八叉树 C#实现 ...
简介 欧拉函数: 小于n的正整数中与n互质的数的数目 筛法: 埃氏筛, 快速找到小范围(1~1e7)内的素数 欧拉函数 //欧拉函数打表 const int MAX=3000001; long long e[MAX]; void geta() { e[1]=0; for(int i=2;i<MAX;++i) e[i]=i; for...
蒙特卡洛算法 蒙特卡洛算法是一种随机化的模拟统计算法,运用广泛; 适用情况:要求精度不高,时间复杂度要求不高,但精确算法的实现较复杂时,蒙特卡洛算法是一个比较好的选择; C++实现蒙特卡洛算法求圆周率 #include<iostream> #include<cstdio> #include<cmath> #include<ctime&...
树状数组 树状数组 前缀和、修改一个元素的时间复杂度均为O(logn), 适合需要频繁进行区间和查询的情况 C++实现 int a[500001]; inline int lowbit(int x) { return x&(-x); } void up(int x,int val) { for(; x<=maxn; x+=lowbit(x...
DoTween使用方法 直接用法 可以简单的调用,this.transform.DOShakePosition(1f).SetLoops(-1,LoopType.Yoyo);这样就可以以1s的周期,无限次循环抖动了 进阶用法 主要的两个类Tweener和Sequence, 都继承自Tween。 Tweener用于动画控制。 Sequence是个容器用于储存Tweener或Se...
俯视视角游戏高效检测视野边缘的方法 通过在初始时遍历屏幕左下、左上、右上、右下四个点,分别从屏幕发出一条射线,即可获得与地面平面碰撞的四个交点,这四个点构成的平面就是视野范围。如果地面是近似无限的平面,那么把从摄像机初始到当前的位置向量,分别加上与这四个点的偏移,就可以得到当前的摄像机视野范围。假设这四个点围成的线段长度为l1,l2,l3,l4,总长度为L,那么可以求得落在视野边缘的...
动态烘焙navmesh 需要收集每个烘焙的物体的MeshFilter组件, 建议在物体生成时就收集该物体的Mesh信息 通过UnityEngine.AI.NavMeshBuilder中的UpdateNavMeshData实现, 声明如下: public static bool UpdateNavMeshData(NavMeshData data, NavMeshBuildSetti...
分别是普通的单例类以及继承自MonoBehaviour的单例 public abstract class SingletonN<T> where T : class, new() { private static T ins = null; private static readonly object locker = new object(); p...