自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq826364410的专栏

比你优秀的人,往往比你更努力!

  • 博客(397)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 C#数据结构-八大排序算法

阅读目录1. 冒泡排序2. 选择排序3. 插入排序4. 希尔排序5. 快速排序:初始快速排序、三向切分的快速排序(快速排序的优化版)6. 堆排序7. 归并排序:数组版本、List版本8. 桶排序下面所有的代码,都已经经过vs测试。首先,通用的交换函数Swap:private static void Swap(ref int a, ref int b){ i...

2018-03-28 15:00:46 4117 2

原创 C#数据结构-七大查找算法

阅读目录1. 顺序查找2. 二分查找3. 插值查找4. 斐波那契查找5. 分块查找6. 树表查找7. 哈希查找下面所有的代码,都已经经过vs测试。1.顺序查找基本思想:顺序查找也称为线形查找,属于无序查找算法。C#算法实现:/// <summary> /// 顺序查找 /// </summary> ...

2018-03-27 18:14:00 6056 2

原创 C++用new和不使用new创建对象的区别

一、new创建类对象与不new区别new创建类对象需要指针接收 new创建类对象使用完需delete销毁 new创建对象直接使用堆空间,而局部不用new定义类对象则使用栈空间 new对象指针用途广泛,比如作为函数返回值、函数参数等 频繁调用场合并不适合new,就像new申请和释放内存一样二、new创建对象实例1. 使用new创建对象CTest* pTest = new CTest();delete pTest;pTest是用来接收类的对象指针。new申请的对象,则只..

2021-04-06 14:50:58 1757 1

原创 【最通俗易懂】MySQL索引原理

MySQL底层使用的存储结构是B+树,那为什么选择B+树,我们对不同的存储结构对比分析一下,请看下文,尽量用通俗的话讲清楚。首先假设我们有这么一张MySQL表user id name 1 Richard 2 Erlich 3 Jared 4 Nelson 5 Gil

2021-02-01 12:44:13 404 1

原创 Unity用户手册-垃圾回收

可以把GC想象成一个描述程序对象之间互相引用的算法。如果在程序中一个子对象被其父对象引用(在原生代码中使用的是指针),那他们的关系图如下:当GC对一个进程的内存进行扫描,它会尝试寻找没有父亲的对象。如果找到,就对他们进行回收以便释放内存给其他需求使用。当然,其实大部分的对象都有父对象,因此GC需要确切的知道哪些对象是重要的父对象,这些对象是你的程序中真正正在使用的。用GC的术语来说,这些对象叫做“根”。下面的例子展示了两种不同的情况:在上面的图片中,Parent2没有根对象,因此GC可以

2021-01-18 10:36:37 734

原创 最短路径算法-迪杰斯特拉(Dijkstra)算法

最短路径算法-迪杰斯特拉(Dijkstra)算法迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先遍历思想),直到扩展到终点为止。基本思想通过Dijkstra计算图G中的最短路径时,需要指定一个起点D(即从顶点D开始计算)。 此外,引进两个数组S和U。S的作用是记录已求出最短路径的顶点(以及相应的最短路径长度),而U则是记录还未求出最短路径的顶点(以及该顶点到起点D的距离)。 初始时,数组S中只有起

2021-01-02 23:22:13 2584

原创 【详细解析版】Protobuf3使用手册

Protobuf使用手册--中文版,好不容易找到了,分享一下给大家。目录第1章 定义.proto 文件1.1 定义package1.2 定义message1.3 定义属性1.3.1 标注1.3.2 类型1.3.3 属性顺序号1.4可选项1.4.1import可选项1.4.2packed1.4.3default1.5 大数据量使用建议1.5.1 repeated message类型1.5.2 repeated raw类型1.6 Proto...

2021-01-01 22:21:33 2972 2

原创 Lua中的#

对字符串来说,#取字符串的长度,但对于table需要注意。lua的table可以用数字或字符串等作为key, #号得到的是用整数作为索引的最开始连续部分的大小, 如果t[1] == nil, 即使t[5], t[6], t[7]是存在的,#t仍然为零。对于这类tb[1],tb[2]....才能获取到正确的长度。local tab = {}tab[1] = 1tab[2] = 2tab[3] = nilprint(#tab)--结果为2如果table的第一个元素key为非数字,那么#t

2020-11-24 17:28:57 6685

原创 Lua的浅拷贝和深拷贝

浅拷贝在lua中,使用“=”进行浅拷贝,根据拷贝对象的不同,又分为两种情况:1.拷贝对象为string、number、boolean等基础类型时,拷贝的过程是进行复制粘贴。创建一个新的对象,拷贝出来的新对象和原来的对象互不影响,互不干涉,所以修改拷贝出来的对象的值不会影响到原来的对象的值!local value_A=10local value_B=value_Aprint("A的值:"..value_A)print("B的值:"..value_B)value_B=5print("A的

2020-11-20 14:19:32 1630

原创 【UE4】学习资料

一般来说,官方文档可以涵盖80%的基础内容,初学者从官方文档学习更顺滑,就跟买了一个新东西,看使用说明书一样。不过更深一些的内容需要看文章和源码来梳理。一、知乎/博客官方文档:https://docs.unrealengine.com/zh-CN/GettingStarted/index.html官方中文社区:即官方知乎账号。除了发布官方的最新新闻,还会不定期推送官方技术文章。最主要的是每周都会收录丰富的社区文章,整理成周报推送给大家。https://zhuanlan.zhihu.com

2020-09-13 20:48:04 778

原创 【UE4】TSubclassOf模板类

TSubclassOf是提供UClass类型安全性的模板类。模板类告知编辑器的属性窗口,只显示派生自AFPSProjectileActor的类。同时,这个参数在代码中也只接受派生自AFPSProjectileActor的类。当不加TSubclassOf模板类,则可以接受任何UClass。UPROPERTY(EditDefaultsOnly, Category = Gameplay)TSubclassOf<class AFPSProjectileActor> projectileC

2020-09-09 16:25:56 1036

原创 Lua 截取中英混合的字符串

--返回截取的实际Indexfunction SubStringGetTrueIndex(str, index) local curIndex = 0 local i = 1 local lastCount = 1 repeat lastCount = SubStringGetByteCount(str, i) i = i + lastCount curIndex = curIndex + 1 until (curI.

2020-05-19 20:29:58 389

原创 Lua--pairs和ipairs遍历区别

Lua中Table的存储方式在看二者的区别之前,我们首先来看一下Lua中的table是如何在内存中进行分配的。Table的组成:1.哈希表 用来存储Key-Value 键值对,当哈希表上有冲突的时候,会通过链表的方式组织冲突元素2.数组 用来存储数据(包括数字,表等)print('test pairs and ipairs')local t ={ [1] = 1, ...

2020-04-21 16:21:38 1635

原创 【UE4】通过T::StaticClass()获得对应UObject的UClass的完整代码调用流程

每个继承自UObject的对象都有对应的XXX.generated.h和XXXX.gen.cpp文件.以MySingleton.generate.h和MySingleton.gen.cpp 为例.在MySingleton.gen.cpp 中, 使用了StaticClass IMPLEMENT_CLASS(UMySingleton, 1249388217); templat...

2020-04-06 17:38:04 4257

转载 UE4的Cast方法与类型转化

UE4中,我们经常会用到Cast函数,作用是强制转化一个指针到我们需要的类型,并且如果不能强制转化,就会返回nullptr。通过判断转换之后是不是nullptr,我们也能实现很多有用的功能(比如用于判断子弹击中的到底是什么)那么Cast到底是如何实现的呢?要看Cast,首先要看到一个类型,叫做UClass,他是实现UE类型识别的重要类型。我们经常打交道的类型都是继承自UObjectBase的,...

2020-04-06 15:30:15 4854

原创 DirectX3D cbuffer和tbuffer

cbuffer和tbuffer,Shader Model 4支持的新特性,通过打包数据可以获得更好的性能。关于Shader与应用程序间的数据传递。要传递的数据主要有 constantbuffer,SamplerState,Texture2D(resource)。这里要先提一下DirectX10中新引入的constantbuffer。在DX10中,constant存放于常量缓冲区中,每个...

2020-01-02 10:45:09 2553 1

原创 DirectX11 TriangleStrip和TriangleList区别

图元类型D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIPTriangle Strips是D3D用来绘制三角形的一种方式,这种方式比Triangle list更加高效,因为不用重复存储三角形顶点。下面看一个例子,分析一下这两种方式的不同。首先,确认一点,三角形的三个顶点的绘制顺序是顺时针。现在我们要绘制一个矩形,在D3D中,最基本的几何图元是三角形,所以可用两个...

2019-12-31 19:51:02 1845

转载 游戏程序员养成计划

与玩游戏相比,写游戏要复杂上千万倍,除了需要掌握通用的编程技巧以外,还要有相当的图形学,物理,数学基础,特别是在国内,由于相关资料的缺乏,更是让初学者无从下手。下面总结了一些入门方法和比较容易入手的资料。 首先你要精通一门高级语言,比如C++或者C#,其次,要有良好的英文阅读能力。对游戏开发者来说英文阅读能力是最重要也是最基本的工具之一,因为你遇到的大部分资源...

2019-12-23 21:17:41 708

原创 lua获取数组的长度

获取数组的长度对于一个数组我们通常可以使用#来获取其长度tabletest = {1,2,3,5,7}print(#tabletest) ------》5使用这两种方法都能得到这个数组的长度,但是如果tabletest = {1,2,nil,3,5,7}print(#tabletest) ------》6tabletest = {1,nil,3,nil}print(...

2019-10-24 21:46:48 24762

原创 《Unreal大象无形》读书笔记

一、对象销毁纯C++类销毁尽量不要使用new、delete方案,可以使用智能指针。智能指针会使用引用计数来完成自动的内存释放。使用MakeShareable函数可以来转化普通指针为智能指针。TSharedPtr<YourClass> YourClassPtr = MakeShareable(new YourClass());UObject类无法使用智...

2019-10-24 10:33:36 1395

原创 反编译apk获取unity资源流程分享

什么时候需要这样做?遇到真机问题,如资源丢失检查,可能需要直接拆开对应的包来确认资源是否存在,打包是否没打进去。例如检查某个tdr表格是否没有打进包里面,或者检查包里某个资源版本是不是不对看到其他做的很好的游戏,看到很好的图或者模型,想破解里面的资源拿来自己用,如果没加密的话就可以破解出来(如轩辕传奇的apk就没加密,从里面能搞出很多好看的图片和模型)想学习研究别人的游戏是怎样处...

2019-10-22 11:12:47 5300

原创 lua的table库中的常用函数总结

table是Lua语言中的一种重要的数据类型, table 的一些特性简单列举如下:(1) table 是一个“关联数组”,数组的索引可以是数字或者是字符串;(2) table 的默认初始索引一般以 1 开始;(3) table 的变量只是一个地址引用,对 table 的操作不会产生数据影响;(4) table 不会固定长度大小,有新数据插入时长度会自动增长;(5) table...

2019-09-06 11:15:54 634

原创 C#-GC原理

C# GC原理 垃圾收集器的本质,就是跟踪所有被引用到的对象,整理不再被引用的对象,回收相应的内存。.Net中采用了一种叫做“标记与清除(Mark Sweep)”算法来垃圾收集。1.“标记”本领——垃圾的识别: 从应用程序的root出发,利用相互引用关系,遍历其在Heap(堆)上动态分配的所有对象,没有被引用的对象不被标记,即成为垃圾;存活的对象被标记,即维...

2019-07-30 15:09:03 1712

原创 虚幻4引擎垃圾回收原理

虚幻引擎的GC是追踪式、非实时、精确式,非渐近、增量回收(时间片)。垃圾回收算法分类:分类 项目 描述 引用计数/追踪式GC 引用计数 通过额外的计数来对单个对象的引用次数进行计算,当引用计数为零时,回收对象 追踪式 扫描系统对象引用网络,寻找被引用的对象,留下的对象即为需要回收的垃圾对象 保守/精确 保守式 不需要额外信息来...

2019-07-29 22:35:27 2165 1

原创 剑指offer:不用加减乘除做加法

题目:写一个函数,求两个数的和,不能使用加减乘除四则运算符。#include <iostream>using namespace std;int Add(int num1, int num2){ int sum, carry; do { sum = num1 ^ num2; carry = (num1 & num2) << 1; n...

2019-06-03 21:40:58 234

原创 剑指Offer:字符串的排列

字符串的排列题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。解题思路:本题求整个字符串的全排列可以看做两步1)首先求出所有可能出现在第一位置的字母,即be...

2019-05-29 15:57:14 182

原创 C++volatile关键字

volatile有什么含义?有什么用法?官方定义是:一个变量也许会被后台程序改变。关键字volatile与const绝对独立。它指示一个变量也许会被某种方式修改,这种方式按照正常程序流程分析是无法预知的(例如,一个变量也许会被一个中断服务程序所修改)。这个关键字使用以下语法定义:volatile data;注:变量如果加了voletile修饰,则会从内存中重新装载内容,而不是...

2019-05-17 17:34:33 205

原创 C++四种类型转换

面试题:C++有多少种cast,它们的名称和功能各是什么。一种四种。static_cast 如整型和浮点型、字符型之间的互相转换,void 指针和具体类型指针之间的转换,例如void *转int *、char *转void *等;const_cast 运算符仅用于进行去除 const属性或 volatile 修饰 属性的转换reinterpret_cast 用于进行各种不同类型的指...

2019-05-06 15:32:03 216

原创 C++引用与指针的区别

从概念上讲指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。在C++中,指针和引用经常用于函数的参数传递然而,指针传递参数和引...

2019-05-06 14:15:33 166

原创 C++11右值引用和移动构造函数详解

对象的拷贝控制C++11之前,对象的拷贝控制由三个函数决定:拷贝构造函数(Copy Constructor)、拷贝赋值运算符(CopyAssignment operator)和析构函数(Destructor)。C++11之后,新增加了两个函数:移动构造函数(Move Constructor)和移动赋值运算符(Move Assignment operator)。构造函数与赋值运算...

2019-04-25 00:02:48 2649 3

原创 C++智能指针 auto_ptr、shared_ptr、weak_ptr和unique_ptr

一、auto_ptr  auto_ptr这是C++98标准下的智能指针,现在常常已经被C++标准的其他智能指针取代。它的缺点是在转移所有权后会使运行期不安全。C++11新标准,用unique_ptr来代替auto_ptr原有功能。auto_ptr <double> pd;double *p_reg = new double;pd = p_reg; // 不允许pd = ...

2019-04-24 22:38:56 244

转载 五大常用算法--分支限界算法

分支限界法的基本思想 分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。 此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一...

2019-04-21 22:37:24 771

转载 分治法,动态规划法,贪心法,回溯法,分支限界法的区别和联系以及适用情况

《算法设计与分析》课程已经进入尾声,在这里对学过的算法进行总结归纳。笔者先对各个算法的思想进行简单的陈述,然后再进行对比。一、算法思想(一)分治法(divide and conquer method)是将待求解的原问题划分成k个较小规模的子问题,对这k个子问题分别求解。如果子问题的规模仍然不够小,则再将每个子问题划分为k个规模更小的子问题,如此分解下去,直到问题规模足够...

2019-04-21 20:14:08 4231

转载 五大常用算法--回溯算法

回溯算法的基本思想 回溯法采用深度优先方法搜索遍历问题的解空间树,可以看作是蛮力法穷举搜索的改进。先判断该节点对应的部分是否是满足约束条件,也就是判断该节点是否包含问题的最优解。如果肯定不包含,则跳过对该节点为根的子树的搜索,即所谓的剪枝;否则,进入该节点为根的子树,继续按照深度优先策略搜索。回溯法常常可以避免搜索所有可能的解,所以,适用于求解组合数组较大的问题。 ...

2019-04-21 17:09:37 751

原创 MatCap--用低廉的成本,达到类似PBR的渲染效果

PBR虽然渲染效果真实,但是性能要求较高。尤其是在移动平台,计算能力有限,采用MatCap思想的Shader,用较低的计算成本,就可以达到类似PBR一样真实的渲染效果,可谓是在移动平台实现次时代渲染效果的一种优秀解决方案。MatCap (Material Capture):材质捕获,使用特定材质球的贴图,作为当前材质的视图空间环境贴图,从而实现具有均匀表面着色的反射材质物体的显示。不像一...

2019-04-10 12:18:30 7437 2

原创 【C语言】整数,浮点数在内存中是如何存储的

整数在内存中的存储整型数就是通常使用的整数,分为无符号整数和带符号整数两大类。整型数在内存中是以二进制形式存放的,实际上,数值是以补码的形式表示的。在机器中用最高位表示数的符号,正数符号用“0”表示,负数符号用“1”表示。这里根据设备平台不同,大小端介绍,一般PC都是小端字节序:大端:数据的低字节存在高地址处。小端:数据的低字节存在低地址处。原码、反码、补码原码、反...

2019-04-05 21:56:42 1282

原创 C++模板实例化

模板的实例化指函数模板(类模板)生成模板函数(模板类)的过程。对于函数模板而言,模板实例化之后,会生成一个真正的函数。而类模板经过实例化之后,只是完成了类的定义,模板类的成员函数需要到调用时才会被初始化。模板的实例化分为隐式实例化和显示实例化。对函数模板的使用而言,分为两种调用方式,一种是显示模板实参调用(显示调用),一种是隐式模板实参调用(隐式调用)。对于类模板的使用而言,没有隐式模板实...

2019-04-05 18:00:34 584

原创 C++模板特化

模板特化1.模板特化的定义模板特化不同于模板的实例化,模板参数在某种特定类型下的具体实现称为模板的特化。模板特化有时也称之为模板的具体化,分别有函数模板特化和类模板特化。template<> 返回值类型 函数名(形参列表){ //在函数体中可以使用类型参数}2.函数模板特化函数模板特化是在一个统一的函数模板不能在所有类型实例下正常工作时,需要定义类型参...

2019-04-05 17:04:57 315

原创 C++突破private访问权限的黑科技

如何突破class的private属性限制——试图破坏class的封装性,有点“逆天而行”的感觉。方法1. 添加友元函数#include<iostream>using namespace std;class X{private: int m_Age;public: X() : m_Age(1){} template<typename T> ...

2019-04-04 17:19:57 688

原创 3D图形学(11):渲染优化之从瓶颈定位到优化策略

本文章结合了浅墨整理的《Real-Time Rendering 3rd》第十五章“Pipeline Optimization”和《GPU Gem I》第28章“Graphics Pipeline Performance”,整合冯乐乐的《Unity Shader入门精要》第十六章 渲染优化,同时,加上一些自己的整理。一、渲染管线的瓶颈定位策略正确定位到了瓶颈,优化工作就已完成了一半,因...

2019-04-03 11:39:29 2716

Lua静态库,可以让Lua与C++进行互相调用

Lua静态库,引用Lua静态库,可以让Lua与C++进行交互,这个游戏开发中是必要的基础。

2019-03-17

Unity——VideoPlayer完整运行实例

Unity——VideoPlayer完整运行实例,包括Url播放和本地视频播放,及大部分VideoPlayer的API接口实现。

2018-05-30

cudnn-8.0-windows10-x64-v5.1.zip

最低分只能设置1分,记得之前不是有免费下载的设置吗,好像改掉了。。。如果大家也是来玩玩TensorFlow或Keras的,可以一起交流探讨。我专门把之前搭建环境时,踏的各种坑,写了些,希望可以给大家一些帮助。可以百度搜Win10下 Anaconda + CUDA + CuDNN + Tensorflow-gpu + Keras 应该就可以搜到了。

2017-09-16

Android ListView从网络获取图片及文字显示

Android ListView从网络获取图片及文字显示

2013-08-02

超炫的3d照片效果

超炫的3d图片切换效果 一定让你满意

2013-04-27

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

TA关注的人

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