- 博客(54)
- 资源 (5)
- 收藏
- 关注
原创 gc 和 out
GC回收堆上的内存避免方法1)减少new产生对象的次数2)使用公用的对象(静态成员)3)将String换为StringBuilder//编译报错需要给int赋值 public int RRay(out int hit) { //hit.intValue = 1; return hit; }...
2018-06-30 20:41:43 234
原创 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 1075
原创 不用循环反转字符串
问题:这是我今天面试时遇到的一道题。要求不使用循环反转字符串,当时被卡住了,一直没有想到要用递归,后面面试官提示用递归,才想到,哎。分析:递归的思路是:构建一个方法,该方法把返回从0到 i 的反转字符串,如果i = 0, 返回当前字符。public class Reverse { public static void main(String[] args) { String str = "abc...
2018-06-28 19:47:54 537
原创 C++ 函数中返回字符串的一个陷阱
1 #include<iostream> 2 using namespace std; 3 char * getname(void); 4 int main() 5 { 6 char * name; 7 name = getname(); 8 cout << "My name is : " << name <<...
2018-06-28 00:28:34 2512
原创 C#性能优化
用is再用as不要随便装箱拆箱一、用属性代替可访问的字段 1、.NET数据绑定只支持数据绑定,使用属性可以获得数据绑定的好处; 2、在属性的get和set访问器重可使用lock添加多线程的支持。 二、readonly(运行时常量)和const(编译时常量) 1、const只可用于基元类型、枚举、字符串,而readonly则可以是任何的类型; 2、const在编译时将替换成具体的常量,这样如果在...
2018-06-28 00:19:50 1296
原创 lua 求长度 和ipair 和pairs
--例如有序的local xiang = {10,22,34,42,51}print("xiang length ==",table.getn(xiang)) --结果为:[LUA-print] xiang length == 5--例如无序的local song = {s=10,h=22,x=34,m=42,n=51}print("song length ==",table.getn(song)...
2018-06-28 00:01:43 740
原创 C++构造
1、构造函数的调用顺序 基类构造函数、对象成员构造函数、派生类本身的构造函数 2、析构函数的调用顺序派生类本身的析构函数、对象成员析构函数、基类析构函数(与构造顺序正好相反) ...
2018-06-27 23:37:45 157
原创 foreach 删除
C#遍历List并删除某个或者几个元素的方法,你的第一反应使用什么方法实现呢?foreach? for?如果是foreach,那么恭喜你,你答错了。如果你想到的是用for,那么你只是离成功进了一步。正确的做法是用for倒序遍历,根据条件删除。下面我们用代码来演示foreach,for删除list数据的情况:class Program { public class Stude...
2018-06-27 23:22:37 4724
原创 数据结构教程与题解 读后总结
线性表 有一定联系的数顺序表存储 :节点逻辑关系由物体位置反映,储存密度为1,储存为o(1),插入删除需要移动平均一半节点链表存储:额外空间表示逻辑关系,储存密度小于1,储存为o(n),插入删除只需要修改指针,==========栈的顺序存储,链式存储队列的顺序存储,链式存储串的顺序储存,链式存储,索引存储,匹配的算法BF算法,KMP算法==============数组的储存三元组表(顺序储存...
2018-06-24 14:55:11 601
原创 光照模型
自发光===========环境光fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz;漫反射兰伯特定律Lambert's lawdiffuse = c light * m diffuse * max(0, dot (n * l) )l为光源方向,c为光源颜色,m为漫反射颜色高光反射phong模型specular = c light * m specula...
2018-06-19 17:31:50 208
原创 Unity中的混合因子
SrcFactor 为源颜色 DstFactor 为目标颜色Orgb=SrcFactor×Srgb+DstFactor×DrgbOa=SrcFactorA×Sa+DstFactorA×DaShaderLab中设置混合因子的命令:命令描述Blend SrcFactor DstFactor开启混合,并设置混合因子,具体公式如上,降最终颜色混合Blend SrcFactor DstFactor,ScrF...
2018-06-19 15:58:58 441
原创 模板测试
模板测试(Stencil testing)当片段着色器处理完片段之后,模板测试(stencil test) 就开始执行了,和深度测试一样,它能丢弃一些片段。仍然保留下来的片段进入深度测试阶段,深度测试可能丢弃更多。模板测试基于另一个缓冲,这个缓冲叫做模板缓冲(stencil buffer),我们被允许在渲染时更新它来获取有意思的效果。模板缓冲中的模板值(stencil value)通常是8位的,因...
2018-06-18 20:06:46 1192
原创 shader入门精要 读后总结
1cpu把网格从硬盘加载到显存2cpu设置网格的渲染状态,哪个网格用哪个shader3cpu告诉gpu渲染这个drawcalldrawcall理解为cpu对gpu发起一个命令。此命令指向需要被渲染的图元列表,不包含任何材质信息顶点数据->顶点着色器(模型坐标到投影坐标)->裁剪(摄像机外的扔掉,一半一半的构建新顶点)->屏幕映射 ->三角形设置(计...
2018-06-18 18:01:34 745
原创 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 136
原创 常用纹理和纹理压缩格式
转载至: http://blog.csdn.net/ynnmnm/article/details/44983545 by 夜风简单纹理格式RGBA8888 每个像素4字节,RGBA通道各占用8位RGBA4444 每个像素2字节,RGBA通道各占用4位RGB888 每个像素3字节,RGB通道各占用8位,无透明通道RGB565 每个像素2字节,RGB通道各占用5/6/5位,无透明通道RGBA5551 ...
2018-06-14 21:46:41 2077
原创 在排序好的表里面找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 137
原创 递归台阶
递归实现.重要的是理解这个逻辑假设有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 511
原创 如何从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 1050
原创 stringbuilder
String str1 = "myString";String str2 = "myString";str1和str2 具有相同的指针 也就是 内存中只有一个myString如果 改变str1的值 并不会改变myString内存的值 会在内存中重新划分一块区域来存储新的字符串 同时改变str1的指针StringBuilder则不一样 当你new一个StringBuilder时就会划分一块内存给St...
2018-06-12 22:13:20 138
原创 event 的C++实现
本文章为farproc.com站长袁晓辉(海洋)的原创文章,作者保留所有权利。如果转载,请务必注明来自www.farproc.com!! 作为一个C++程序员,学习C#应该不是一件很困难的事情,因为C#的许多特性都是从C++“继承”(不精确的说法)来的。但是C#作为一门全新的编程语言,它必然有自己的新特性,而这些C++中并不存在的新特性正是我们从C++转向C#的过程中必须认真重新学习的东西。“事...
2018-06-12 22:08:09 1925
原创 哈希表hashtable 如何保证唯一
哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的 情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。其基本原理是:使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数,也叫做散列函数),使得每个元素的关键字都与一个函数值(即 数组下标,hash值)相对应,于是用这个...
2018-06-12 21:36:54 1494
原创 C# GC原理
不是单纯的引用计数而是标记。从root出发。找到所有reachable object(被引用了的对象)。标记。释放。重新整理地址连续引用计数对于闭环 a->b->c->d->a 是无法回收 Mark-Compact 标记压缩算法阶段1: Mark-Sweep 标记清除阶段,先假设heap中所有对象都可以回收,然后找出不能回收的对象,给这些对象打上标记,最后heap中没有打...
2018-06-12 20:43:26 2094
原创 MST性质的证明
什么是MST?MST就是Most Small Tree,应该就是最小生成树的意思吧,具体不是很清楚,MST性质就是最小生成树性质(以下简称MST性质),我们在看最小生成树的算法的时候,很多情况下都有关于这条性质的说明,比如,历史上最经典的Prim算法和Kruskal算法就是根据这个性质演算出来的Algorithm,MST性质的声明如下:最小生成树性质:设G=(V,E)是一个连通网络,U是顶点集V的...
2018-06-11 16:38:14 1669
原创 缓存区
颜色缓冲区:就是帧缓冲区(图形设备的内存),需要渲染的场景的每一个像素都最终写入该缓冲区,然后由他渲染到屏幕上显示。 深度缓冲区:与帧缓冲区对应,用于记录上面每个像素的深度值,通过深度缓冲区,我们可以进行深度测试,从而确定像素的遮挡关系,保证渲染正确。(注意区分深度测试和背面剔除) 模板缓冲区:与深度缓冲区类似,通过设置模板缓冲每个像素的值,我们可以在渲染的时候只渲染后写像素,从而可以达到一些特殊...
2018-06-08 14:22:39 248
原创 图的遍历
void dfs(mat_graph *g ,v){ int j;print(v); visited[v] = 1for(int j=1;j<=n;j++) if(g->adjmat[v][j]==1&& !visited[j]) dfs(g,f)}void dfsL(lk_graph *g, int v){ pointer p;print(v) ;vis...
2018-06-07 00:20:05 192
原创 二叉树输出
在学习二叉树遍历的时候我们学习了三种遍历方法 前序 中序 后序 同时我们知道给定前序和中序、中序和后序我们可以还原二叉树, 记得当时只是在纸上画了一画。现在把当时的想法完成。给定前序和中序生成二叉树。。。[cpp] view plain copy#include <iostream> /** 在学习二叉树遍历的时候我们学习了三种遍历方法 前序 中序 后序 同时我们知道...
2018-06-06 22:19:26 3091
原创 滑动窗口
1.滑动窗口的概念发送端和接收端分别设定发送窗口和接收窗口 。 发送窗口用来对发送端进行流量控制。 发送窗口的大小 WT 代表在还没有收到对方确认信息的情况下发送端最多可以发送多少个数据帧。 接收端设置接收窗口 在接收端只有当收到的数据帧的发送序号落入接收窗口内才允许将该数据帧收下。 若接收到的数据帧落在接收窗口之外,则一律将其丢弃。 在连续 ARQ 协议中,接收窗口的大小 WR = 1。 只有当...
2018-06-06 18:25:45 883 1
原创 STL容器对比
我们常用到的STL容器有vector、list、deque、map、multimap、set和multiset,它们究竟有何区别,各自的优缺点是什么,为了更好的扬长避短,提高程序性能,在使用之前需要我们了解清楚。verctorvector类似于C语言中的数组,它维护一段连续的内存空间,具有固定的起始地址,因而能非常方便地进行随机存取,即 [] 操作符,但因为它的内存区域是连续的,所以在它中间插入或...
2018-06-06 17:11:41 129
原创 阴影
工程放在:https://github.com/aceyan/UnityEffects 使用unity5.4场景是Scene/(2)ProjectorShadow实现的原理和shadowMap差不多,只不过不生成深度图,而是使用replaceShader生成一张“轮廓”图,使用untiy自带的Projector组件投影到场景中,在shader中计算从而生成阴影效果。使用replaceShader是...
2018-06-06 16:28:37 133
原创 Cull 指令
unity在区分物体的正反面是根据三角形的顶点顺序(正面顺时针)(反面逆时针)正方体: 对于正方体这种前后看有2个正方形的,可以理解为外表面和内表面上色平面:对于平面这种只有1个正方形的,可以理解为正面和反面上色unity默认选择cull back,对于 平面来说 就是只有正面看到,反面看过去是穿透什么都没有对于 正方体 来说 就是只有 从正方体外面能看到东西, 从正方体内部往外看是什么都看不...
2018-06-06 13:28:41 3511 1
原创 快速排序
快速排序今天看到大神写的一篇快速排序的博客,肃然起敬,觉得原来快速排序这么简单 下面进行简单的试试快速排序的基本思想是1、先从数列中取出一个数作为基准数2、分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边3、再对左右区间重复第二步,直到各区间只有一个数概括来说为 挖坑填数+分治法下面举例来进行说明,主要有三个参数,i为区间的开始地址,j为区间的结束地址,X为当前的开始的值第...
2018-06-05 00:28:57 97
原创 常用排序算法总结(一)
目录冒泡排序 鸡尾酒排序 选择排序插入排序二分插入排序 希尔排序 归并排序堆排序快速排序 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 另一种是非比较排序,时间复杂度可以达到O(n)...
2018-06-04 23:36:17 106
原创 前序遍历、中序遍历、后序遍历、层序遍历
根据遍历画图先根据中序和前序找到每一级的所有根========最近也是在准备笔试,由于没有系统的学过数据结构,所以每次在考到二叉树的遍历的时候都是直接跪,次数多了也就怒了,前些天也是准备论文没时间整这些,现在提交了,算是稍微轻松点了,所以花了半天的时间来学了下二叉树。现在记下来,以便后序查阅。一、二叉树的遍历概念 1. 二叉树的遍历是指从根结点触发,按照某种次序依次访问二叉树中所有结点,使...
2018-06-04 23:33:51 21188
VAX垃圾清理和VAX的安装包和VAX的dll
2018-09-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人