C#
palawind
这个作者很懒,什么都没留下…
展开
-
泛型?
????、原创 2018-05-16 13:45:41 · 98 阅读 · 0 评论 -
碰撞检测算法:点和矩形碰撞、点和圆形碰撞、矩形碰撞、圆形碰撞
点和矩形碰撞[java] view plain copy/** * * @param x1 点 * @param y1 点 * @param x2 矩形view x * @param y2 矩形view y * @param w 矩形view 宽 * @param h 矩形view 高 * @return ...原创 2018-05-29 21:16:59 · 5036 阅读 · 0 评论 -
编译器和链接器区别
编译器:把源代码编译成目标文件链接器:把目标文件和库文件链接成可执行文件原创 2018-05-29 21:22:38 · 1555 阅读 · 0 评论 -
线程安全C#
12345678910111213141516171819202122232425262728293031using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading; namespace ThreadTest0902{ public class...原创 2018-05-29 21:28:41 · 964 阅读 · 1 评论 -
字节对齐
1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除; 2) 结构体每个成员相对结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding); 3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节{trailing padding}。 对于以上规...原创 2018-05-29 22:21:55 · 191 阅读 · 0 评论 -
堆排序
构造堆在构造有序堆时,我们开始只需要扫描一半的元素(n/2-1 ~ 0)即可,为什么?因为(n/2-1)~0的节点才有子节点,如图1,n=8,(n/2-1) = 3 即3 2 1 0这个四个节点才有子节点 (图1:初始状态) 所以代码4~6行for循环的作用就是将3 2 1 0这四个节点从下到上,从右到左的与它自己的子节点比较并调整最终形成大顶堆,过程如下: 第...原创 2018-05-29 23:17:04 · 157 阅读 · 0 评论 -
静态链接库LIB和动态链接库DLL的区别
静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可...原创 2018-05-29 23:26:21 · 182 阅读 · 0 评论 -
C# GC原理
不是单纯的引用计数而是标记。从root出发。找到所有reachable object(被引用了的对象)。标记。释放。重新整理地址连续引用计数对于闭环 a->b->c->d->a 是无法回收 Mark-Compact 标记压缩算法阶段1: Mark-Sweep 标记清除阶段,先假设heap中所有对象都可以回收,然后找出不能回收的对象,给这些对象打上标记,最后heap中没有打...原创 2018-06-12 20:43:26 · 2066 阅读 · 0 评论 -
哈希表hashtable 如何保证唯一
哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的 情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。其基本原理是:使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数,也叫做散列函数),使得每个元素的关键字都与一个函数值(即 数组下标,hash值)相对应,于是用这个...原创 2018-06-12 21:36:54 · 1447 阅读 · 0 评论 -
两个栈实现一个队列
队列是先进先出,而栈是先进后出;考虑到我们取栈顶元素的便利性,我们在实现时使得栈顶等于队列头;由于栈的pop弹出栈顶元素,而队列的pop也是弹出栈顶元素,所以我们需要特别处理的是插入操作。由于往栈中添加元素相当于往队列头添加元素,因此我们需要在两个队列中进行元素的转移,比较简单的实现是:1.q1和q2在任一时刻至少有一个为空,即如果有元素,所以元素只在同一个队列中。 2.当有元素需要插入时,将插入...原创 2018-05-30 00:06:04 · 107 阅读 · 0 评论 -
循环移动数组
数组循环右移可以把数组分成两份,第一部分是循环右移的数目,剩下的是另一部分设要移动的为A,剩下的为B那么这个数组的就是AB循环移动后数组变成BA实例:AB = 0 1 2 3 4 5 6 7A =0 1 2B =3 4 5 6 7我们需要实现的结果是BA = 3 4 5 6 7 ...原创 2018-05-29 20:54:08 · 165 阅读 · 0 评论 -
tcp 与udp
TCP与UDP区别总结:1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速...原创 2018-05-29 20:46:31 · 109 阅读 · 0 评论 -
形参:值调用,引用调用,地址调用
void swap (int x,int y)swap (2,3)--------------------------------------------------------------------------void swap(int &x,int &y)swap (2,3) -------------------------------------------------...原创 2018-05-23 18:05:56 · 764 阅读 · 0 评论 -
IEnumerator迭代器
IEnumeratoryield return原创 2018-05-16 13:45:49 · 215 阅读 · 0 评论 -
接口&抽象
interface IStudent:IPeople{ void study();} public void study(){//asdfasdfasdf}----------------------------------------------------------public abstract class myClass{ public abstract void method...原创 2018-05-16 13:46:00 · 118 阅读 · 0 评论 -
面向对象特性&封装&继承&多态
多态应用初始化子类将子类赋值给父类通过父类实现方法省去switch先virtual 然后override或者只要new原创 2018-05-16 13:46:08 · 93 阅读 · 0 评论 -
继承后实现顺序?
??????原创 2018-05-16 13:46:16 · 548 阅读 · 1 评论 -
结构&类
结构 类值 引用栈 堆不能继承 可以继承性能优势 扩展优势底层数据存储 应用程序行为栈: 在函数调用时,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。当本次函数调用...原创 2018-05-16 13:46:24 · 87 阅读 · 0 评论 -
sizeof&len
取里面最大的元素,然后以该元素划分n个如果添加两个char则分配为同一个,如果数组int【5】最大元素为4,分配为4*5 一般32位机子上各个数据类型所占的存储空间如下:char:8位 1short:16位int:32位 4long:32位 ...原创 2018-05-22 16:42:41 · 629 阅读 · 0 评论 -
模板
函数模板template <class T>T Max(T a, T b){return a>b?a:b;} Max(i1,i2);类模板template<class T>class AnyType{T x,y;public : AnyType(T a,T b):x(a),y(b){} T GetX(){retur...原创 2018-05-22 16:43:15 · 99 阅读 · 0 评论 -
运算符重载
class Complex{Complex(double r=0,double i=0):real(r),imag(i){}}Complex Complex ::operator + (Complex &c){ Complex temp; temp.real=real+c.real temp.imag=imag+c.imag r...原创 2018-05-22 16:43:53 · 104 阅读 · 0 评论 -
C++特性
抽象封装继承多态原创 2018-05-22 16:44:03 · 2116 阅读 · 0 评论 -
event 的C++实现
本文章为farproc.com站长袁晓辉(海洋)的原创文章,作者保留所有权利。如果转载,请务必注明来自www.farproc.com!! 作为一个C++程序员,学习C#应该不是一件很困难的事情,因为C#的许多特性都是从C++“继承”(不精确的说法)来的。但是C#作为一门全新的编程语言,它必然有自己的新特性,而这些C++中并不存在的新特性正是我们从C++转向C#的过程中必须认真重新学习的东西。“事...原创 2018-06-12 22:08:09 · 1889 阅读 · 0 评论 -
stringbuilder
String str1 = "myString";String str2 = "myString";str1和str2 具有相同的指针 也就是 内存中只有一个myString如果 改变str1的值 并不会改变myString内存的值 会在内存中重新划分一块区域来存储新的字符串 同时改变str1的指针StringBuilder则不一样 当你new一个StringBuilder时就会划分一块内存给St...原创 2018-06-12 22:13:20 · 111 阅读 · 0 评论 -
2的n次幂
在很多面试的时候都会出现一个数多少次方 怎样最快的计算出来,而这个数大多是2的n次幂比如8的15次方 第一种:很陋的方法for循环int i=1;for(int i=0;i<15;i++){i=i*8;}第二种Math.pow(8, 15);算最常用的一种了第三种这种需要在合适的时候用比如:8的15次方 相当于2的45次方 即1*2的45次方;这个公式是不是想到了什么(提示,二进制)相当于1...原创 2018-06-28 22:48:04 · 1035 阅读 · 0 评论 -
在大数组获取不重复元素
有前端题目大概是这样的:考虑到性能问题,如何快速从一个巨大的数组中随机获取部分元素。比如有个数组有100K个元素,从中不重复随机选取10K个元素。为了演示方便我们将数据简化,先给出方案最后再用大点的数据来测试性能的对比。常规解法常规做法倒也不难,生成一个0到数组长度减1的随机数,这个数也就是被选中元素在原数组中的下标,获得该元素后将值保存到另一个数组同时通过数组的splice方法将该元素从原数组中...原创 2018-07-04 12:57:20 · 511 阅读 · 0 评论 -
linkedlist
using System;using System.Collections.Generic;namespace ConsoleApplication{ class Program { static void Main(string[] args) { LinkedList<int> a = new Link...原创 2018-09-24 21:21:56 · 133 阅读 · 0 评论 -
C# 反射 和 设置数据
obj -> propertyobj.gettype().getpropertyproperty->objinfo.setvalue(obj)info.GetGetMethod().Invoke(obj, null);先拿属性 然后调取他的get{} 方法//对某个类进行实例化object obj = Activator.CreateInstance(msg_typ...原创 2018-10-02 15:40:09 · 492 阅读 · 0 评论 -
vs 模版
//-----------------------------------// File: $safeitemrootname$.cs// Desc: // Author: // Date: $time$//-----------------------------------using System;using System.Collections.Generic;$if$...原创 2018-11-04 15:07:48 · 312 阅读 · 0 评论 -
ref 和out
ref和out的区别在于 一个要提前赋值,一个不用public static void StringBuilderNoRef(StringBuilder s) { s.Append(" World"); s = new StringBuilder("hi"); } public static void Stri...原创 2018-11-03 01:09:59 · 95 阅读 · 0 评论 -
gc 堆和栈
引用类型存在堆值类型存在 声明的地方 栈 或者 堆 在堆的 如果失去引用会被gc掉在栈 如果超过作用域会被回收全局值类型在堆,全局引用类型在堆,局部值类型在栈,局部引用类型在堆 在方法里面引用的局部变量只有地址被回收,具体的值还是需要等待gc回收...原创 2018-11-03 01:24:55 · 413 阅读 · 0 评论 -
正则表达
之前遇到要用正则判断输入字符串的小需求中遇到了问题,连续的字符串不知道怎么判断。 如邮箱结尾的.com .cn .net等。于是乎查阅资料:括号() : 括号是多个匹配,它把括号内的当做一组来处理,限制一些多选的范围,比如上面的需求只能是com cn net结尾的用括号就是最好的选择。 括号能提取字符串,如(com|cn|net)就可以限制,只能是com或cn或net。 括号将...原创 2018-11-15 21:10:55 · 382 阅读 · 0 评论 -
不用循环反转字符串
问题:这是我今天面试时遇到的一道题。要求不使用循环反转字符串,当时被卡住了,一直没有想到要用递归,后面面试官提示用递归,才想到,哎。分析:递归的思路是:构建一个方法,该方法把返回从0到 i 的反转字符串,如果i = 0, 返回当前字符。public class Reverse { public static void main(String[] args) { String str = "abc...原创 2018-06-28 19:47:54 · 521 阅读 · 0 评论 -
dictionary存class key为class
本文对Dict的内部实现会有提出,但不详细讨论,以解决标题问题为主,如果有想详细了解Dictionary内部实现等更多细节,请转到官网: https://msdn.microsoft.com/en-us/library/xfhwa508(v=vs.110).aspx首先需要搞清楚以下问题Dictionary是如何通过key找到的value?需要怎么做才可以让Dictionary认同我们的自定义类作...原创 2018-07-04 11:09:10 · 768 阅读 · 0 评论 -
C#性能优化
用is再用as不要随便装箱拆箱一、用属性代替可访问的字段 1、.NET数据绑定只支持数据绑定,使用属性可以获得数据绑定的好处; 2、在属性的get和set访问器重可使用lock添加多线程的支持。 二、readonly(运行时常量)和const(编译时常量) 1、const只可用于基元类型、枚举、字符串,而readonly则可以是任何的类型; 2、const在编译时将替换成具体的常量,这样如果在...原创 2018-06-28 00:19:50 · 1268 阅读 · 0 评论 -
如何从100万个数中找出最大的前100个数
算法如下:根据快速排序划分的思想 (1) 递归对所有数据分成[a,b)b(b,d]两个区间,(b,d]区间内的数都是大于[a,b)区间内的数 (2) 对(b,d]重复(1)操作,直到最右边的区间个数小于100个。注意[a,b)区间不用划分 (3) 返回上一个区间,并返回此区间的数字数目。接着方法仍然是对上一区间的左边进行划分,分为[a2,b2)b2(b2,d2]两个区间,取(b2,d2]区间。如果...原创 2018-06-12 22:51:48 · 1033 阅读 · 0 评论 -
递归台阶
递归实现.重要的是理解这个逻辑假设有f(n)种走法,当走到N-1阶台阶时,有f(n-1)种走法,再走一步走完。当走到n-2阶台阶时,有f(n-2)种走法, 再走1+1或2,走完。其中走1+1和走到n-1阶时的f(n-1)重复。所以f(n)=f(n-1))+f(n-2)[java] view plain copy public int findStep(int n) { if(n=...原创 2018-06-12 23:46:28 · 494 阅读 · 0 评论 -
好队列
前后 +0 寻找串里面11 或者000好队列:左右为0不能再插数字原创 2018-06-12 23:47:54 · 111 阅读 · 0 评论 -
在排序好的表里面找2数之和
找合适数==数组a[] 已经排序好要在里面找2个数且 2数和 为S 设置2个游标第一个游标指向头部,第二个游标指向尾部当a[min]+a[max] > smax--;当a[min]+a[max] < smin++;while(min<max){ if(a[min] + a[max] > s) max --; if(a[min] ...原创 2018-06-14 21:37:41 · 129 阅读 · 0 评论 -
Google Protocol Buffer 的使用和原理
简介什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍:Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。Protocol Buffer...原创 2018-06-14 21:52:08 · 126 阅读 · 0 评论