自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

shitangdejiaozi的博客

一个菜鸟的挣扎之路

  • 博客(54)
  • 资源 (2)
  • 收藏
  • 关注

原创 unity动态切换横竖屏采坑记录

项目做横竖屏验证,需要实现动态切换横竖屏的功能,实现起来几句话,但是实际遇到了一堆问题。基本实现基本流程:1.修改Screen的设置2.设置CanvasScaler参数3.重新异形屏适配Screen.orientation = ScreenOrientation.Landscape;Screen.orientation = ScreenOrientation.Portrait;设置可旋转方向Screen.autorotateToPortrait = !isLandscape;Scree

2021-06-08 17:08:16 3321 1

原创 Unity游戏开发-UI中裁剪特效

在开发中,会遇到在UI上显示特效问题,不仅要考虑特效和UI的层级问题,有时候还要考虑特效的裁剪,比如在Scrollview列表中的item显示的特效,Mask默认是不会对特效进行裁剪, 所以需要修改特效的shader,达到裁剪的效果。基本的原理将mask的裁剪四边形,传递给shader,在片元着色器将位于裁剪区域外的片元剔除, 这样就能达到裁剪的效果。在具体的shader裁剪中,参考了UI-...

2020-02-26 15:45:08 1196

原创 unity中寻路方案的讨论

A * 算法基本的原理详解全方位分析c++实现A* 算法不是最短路径算法,它找到的路径并不是最短的,它的目标是以最快的速度找到通往目的地的路,它的时间复杂度为O(NlogN)A* 算法使用的是一种局部最优的策略,它的下一步的选择点,是距离目的地最短的点。以二维数组为例,s点, 取出它周围的8个点(可行走点),然后加入到open_list,然后对队列排序,找到距离最近的点,这个点就是下一...

2019-12-11 14:00:09 1017

原创 Unity 2017 Game Optimizaiton简单翻译和总结(二):脚本编写策略

脚本的开发占用我们的开发的大部分时间,所以学习一些技巧有很大的好处。脚本涉及的范围很广,这一章就只介绍unity脚本相关的,关于一些围绕MonoBehaviours, Gameobjects和相关的函数的问题。这一章,在一下几个方面来探讨性能提高的方法:访问组件组件的回调(update(), Awake()等)协程内部object的通信数学的运算场景和prefab载入使用最快的...

2019-07-18 14:21:02 1551

原创 Unity 2017 Game Optimizaiton简单翻译和总结(一):定位性能问题

英语的水平有限,在阅读时,进行了简单的记录和翻译,把一些关键的点记录下来,并加入了一些自己的理解和总结。在这一章,主要探索三个问题:1.怎样使用unity Profiler去收集剖析数据2.如何分析profiler数据中的性能瓶颈3.隔离性能问题和确定根源问题的技巧Unity Profileruntiy Profiler在untiy编辑器中,它通过生成unity3d子系统的实时的使用和...

2019-07-02 10:57:22 265

原创 Unity记录-UGUI的屏幕自适应原理和应用

UGUI的屏幕自适应,是通过Canvas Scaler来做的,根据屏幕的分辨率,计算出canvas的大小,同时计算ScaleXY,通过Size + Scale来控制Canvas的变换,UI作为canvas的子物体,也会跟随着一起变化;为了保证UI的位置,需要在设计UI的时候,对角落,边缘的UI做特殊的处理,利用锚点来保证UI与边缘或角落的距离,锚点的概念就不多说了,一句话:锚点的向量值就是锚点与自...

2019-04-02 10:25:33 1990

原创 windows10+cuda7.5+opencv2.4.13+vs2013环境配置

前几天想把代码移植到linux下,想用服务器上的GPU来加速处理,结果搞了几天,头都大了,环境还没配好,ffmpeg ,opencv,gstreamer,单独装都没毛病,想让这些库关联起来,而且没毛病简直是闹心,还有各种依赖库,几十个,看着都头大,于是弃坑,还是回归到Windows的怀抱。不过配置的过程,也是头疼,网上各种教程,于是总结一下,加上自己的亲身经历,亲测有效,代码可以运行。所需的软件和库

2017-03-09 23:04:27 2374

原创 Linux下ffmpeg安装配置和实现视频转码指令

最近在做opencv下的一些视频处理,opencv主要处理.avi的视频,但是想生成mp4的视频文件,所以就想利用ffmpeg的视频编码功能来进行avi转mp4。凡是涉及到安装配置,运行的时候都会出现各种问题,不是某个库忘了装,就是某个参数没设置对。头疼,一个简单的过程,你就可以从网上找到各种版本,最后还是靠自己,所以把这个过程记录下来,方便以后再遇到这种问题。1.下载ffmpeg官网:官网,我下

2017-03-01 16:26:37 7363 1

原创 opencv在vs2013的环境配置

最近配置opencv,前前后后也搞了两三次,每次都会遇到问题,记录下来,和大家分享一下,原来的过程也是网上找的,自己又重新整理了一下。版本信息opencv2.4.9 :下载地址官网地址 vs2013中文旗舰版 :下载地址随便找的地址 windows64位第一步:配置widows环境计算机->属性->高级系统设置->高级->环境变量->系统变量 在系统变量中找到变量Path->编辑(在最

2017-01-06 16:27:15 2073

原创 动态规划(四)最长公共子序列

题目描述最长公共子序列问题(LCS),给定两个序列X= {x1,x2…,xm},Y= {y1,y2,…yn},求X 和Y长度最长的公共子序列。 什么叫公共子序列:Z既是X的子序列,又是Y的子序列,我们称它是X和Y的公共子序列。 子序列和子串的区别:子串是串的一个连续的部分,子序列是不改变顺序,从序列中去掉任意的元素而获得的新序列。 例如:X = {A,B,C,B,D,A,B},Y= {B,D,

2016-07-12 22:54:52 463

原创 动态规划(三)最长递增子序列

题目描述最长递增子序列(LIS),找到一个给定序列的最长子序列的长度,而且这个子序列是按照递增顺序排列。 例如:输入{10,20,9,33,21,50}。 输出为:4 ,LIS = {10,20,33,50}分析最优子结构: 对于数组A[n],建立数组ls[n],ls[i]保存以A[i]为结尾的递增子序列的长度。那么ls[i] = max(ls[j ]) +1,(j< i && A[j] <

2016-07-12 15:41:41 451

原创 动态规划(二)最长回文子序列

1.题目描述:给一个字符串,找出它的最长的回文子序列的长度。和腾讯的2016实习题目类似。 输入:goolgle 输出:4 goog是它的最长回文子序列所说的子序列不一定是连续的,但是顺序不变。 子串必须是连续的字符组成。2.分析最优子结构假设S[i…j]是给定的字符串,长度为n,让dp[i][j]表示从s[i]到s[j]包含的最长回文子序列的长度。 初始化:dp[i][i] = 1;

2016-07-11 21:41:11 569

原创 动态规划学习(一)算法思想简介

1.分治法将问题划分为互不相交的子问题,递归的求解子问题,再将它们的解组合起来,求出原问题的解。但是这样会 做许多不必要的工作,它会重复地求解那些公共的子问题。2.动态规划与分治法类似,都是组合子问题的解来求解,主要应用于子问题重叠的问题,不同的子问题具有公共的子子问题,对每个子子问题只求解一次,将解保存起来,从而无需每次求解一个子子问题都重新计算。通常用来求解最优化问题。设计动态规划步骤1.刻画一

2016-07-11 15:47:38 669

原创 linux下使用Scons构建自己的项目程序

原来简单介绍了一种项目自动编译的工具cmake,不过它基本是针对与c++程序而设计的,我感觉cmake已经很方便了,比写Makefile要舒服多了,最近又看到一个scons,瞬间感觉scons才是真爱啊。scons简介SCons 是一个开放源代码、以 Python 语言编写的下一代的程序建造工具。它最初的名字是 ScCons, 基于由 perl 语言编写的 Cons 软件开发而成,它在 2000 年

2016-05-27 11:57:19 6192

转载 linux下PostgreSQL安装和简单配置

转载自:http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html一、安装首先,安装PostgreSQL客户端。sudo apt-get install postgresql-client然后,安装PostgreSQL服务器。sudo apt-get install

2016-05-25 14:56:36 692

原创 算法学习(十四)最大公约数问题

题目描述: 求两个正整数的最大公约数,如果两个正整数都很大,有什么简单的算法? 例如:给定1100100210001,120200021,求其最大公约数。 分析: 求最大公约数问题最经典的就是“辗转相除法”,其实就是一个数学问题了,来自欧几里得的著作《几何原本》,原来也就是知道这么个方法,但是具体的原理还真没考虑过,今天就证明一下: 假设f(x,y)是x,y的最大公约数,这里有k = x/

2016-05-24 10:45:01 751

原创 算法学习(十三)一堆数据中找到丢失数字问题

题目描述: 每个机器都有一个标号Id,每个id数据保存两个备份,如果一台机器死机,就会丢失一个备份,如果得到一个数据文件Id的列表,是否能够快速找到这个仅出现一次的Id? 分析: 其实就是海量数据中有一个数据是只出现一次的,其他都是出现两次,找到那个出现一次的数据。 解法一: 这种记录出现次数的问题,最先想到的当然就是伴随数组,遍历列表,数组元素为数据出现次数,数组下标可以是标号id,那个

2016-05-16 10:45:47 1512

原创 算法学习(十二)最大连续乘积子串、字符串编辑距离

最大连续乘积子串题目描述:给一个浮点数序列,取最大乘积连续子串的值,例如-2.5,4,0,3,0.5,8,-1,则取出的最大乘积子串为3,0.5,8。也就是说,上述数组中,3,0.5,8这3个数的乘积3*0.5*8 = 12是最大的,而且是连续的。 分析: 注意子串和字序列的区别。 子串:是串的连续的部分。 子序列:是串中不改变顺序,但是是去掉个别元素的到新的序列。 1,连续数的乘积,最简

2016-05-10 22:19:37 1248

原创 算法学习(十一)数组中出现次数超过长度一半的数

数组中出现次数超过数组长度一半的 数字题目描述: 给定 一个数组,找到数组中出现次数超过数组长度一半的数字,如数组 a[]= {0,1,2,1,1},输出为1 分析: 1,可以使用伴随数组b,遍历数组a,将值作为数组b的下标,将次数作为值,然后遍历数组b,找到次数超过一半的值,然后输出。时间复杂度为O(N),不过要增加空间复杂度。 2,我们可以先对数组进行排序,因为某个数字出现次数超过一半,

2016-05-09 17:42:53 681

原创 算法学习(十),跳台阶问题、奇偶排序

台阶问题:问题描述: 一个台阶总共有n级,没一次都可以选择跳1级,或者跳2级。 求总共有多少种跳法,并分析算法的时间复杂度。 分析: 如果只有一阶,f (1)= 1,有两阶,有两种跳法,分两次跳,每次一级,或者是一次跳2级。推广到n阶台阶,(n>2),第一次跳的时候又两种选择,如果是第一次跳一级,那么跳法数目等于f(n-1) ,另外一种是第一次跳2级,此时跳法数组等于f(n-2),所以总的

2016-05-09 11:05:54 1138 1

原创 算法学习(九)回文的判断

回文:英文palindrome,指一个顺着读和反过来读都一样的字符串,不如madam、mnnm。回文判断判断一个字符串是否是回文。 分析: 1.最直接的就是将字符串逆序后存入到另一个字符串,然后比较两个字符串是否一样,一样就是回文。 2.我们也可以只用双指针首尾扫描法,直到相遇两端的字符都一样,这个字符串就是回文。 3.或者找到中间元素,然后分别向两边遍历,直到两端,字符都一样,就是回文。b

2016-05-03 17:21:09 926

原创 算法学习(八)求给定区间的第k小(大)数

前面有关于求数组的第k小的数和topk的讨论,这么再加上一个限定条件,限定求给定区间。 题目描述: 给定一个数组a[],给定区间2-5,求区间内第3小的数。分析: 这个其实就是对a[2…5]内得数求第k小的数,和前面的关于数组第k小的数的求法是一致的,快排,选择排序,维护k个元素的最大堆。 如果对于这个数组要求多次求不同区间内得第k小的数,是不是每次都要重新排序,有木有每次都是O(N)的方法

2016-05-03 11:02:56 904

原创 Linux下cmake使用简介

安装sudo apt-get install cmake 这个应该是最简单的方法了,当然,你也可以去官网下载:www.cmake.org 然后运行 cmake –version 查看一下你是否安装完成使用cmake好像都说比直接写Makefile牛一点,因为它可以自动生成Makefile。专门针对文件比较多的情况,要不是这几天在用别人的代码,一大堆,我觉得用Makefile也够了,但是据说Li

2016-04-29 16:58:22 852

转载 c++ bitset类用法

    有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件。在本书提供的例子中,假设都使用了std::bitset的using声明:[cpp] view plain copy p

2016-04-25 22:07:11 365

原创 算法学习(七)有内存限制的海量数据排序

磁盘文件排序问题描述: 输入:给定一个文件,里面最多含有n个不重复的正整数(也就是说可能含有少于n个不重复正整数),且其中每个数都小于等于n,n = 10^7。 输出:得到按从小到大升序排列的包含所有输入的整数的列表。 条件:最多有大约1MB的内存空间可用,但磁盘空间足够。且要求运行时间在五分钟以下,10秒为最佳结果。 分析: 首先注意的是它的内存要求,基本上否决了大多数的排序算法。 文

2016-04-25 21:08:58 7699 1

原创 算法学习(六)链表问题总结,相交,成环

求链表倒数第K个结点题目描述: 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针。 分析: 首先链表是一个顺序结构,不像数组寻址比较方便,链表一般都是通过遍历来寻址,所以碰到倒数这种情况,转化为求L-K个结点,L为链表长度,所以你需要先遍历,得到链表的长度,然后再遍历找到第L-K个结点。这样是不是有点low啊,是的,下面就是经典的双指针方法,这里要再次强调下链表

2016-04-22 11:26:49 2332 2

原创 算法学习(五)求解500万以内的亲和数,连续数据映射为数组

题目描述: 求500万以内的所有亲和数,如果两个数a和b,a的所有真因数之和等于b,b的所有真因数之和等于a,则称a,b是一对亲和数。 真因数:除了本身以外的所有因数, 列如:220的真因数:1,2,4,5,10,11,20,22,44,55,110; 284的真因数:1,2,4,71,142. 220= 1+2+4+71+142 = sum[284] 284 = 1+2+4+5+10+

2016-04-18 21:31:21 1513

原创 算法学习(四)寻找满足条件的两个数或者多个数

寻找和为定值的两个数编程之美2.12节(P176) 题目描述:能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,为了简化,假设这个数组肯定存在这两个数。 例如数组1,2,4,7,11,15。给定值为15,4+11 = 15,输出4,11。 分析: 1,判断条件就是两数之和为sum,对于A[i] ,需要找sum-A[i]是否也在数组A中,这样就变成了一个查找算法,那么提高查找

2016-04-18 16:14:51 2322

原创 算法学习(三)字符串查找,删除,复制strstr/strcpy/strpbrk等库函数

字符串的查找题目描述: 给定一个字符串A,要求在A中查找一个子串B的位置 如A = “ABCDEF”,B = “CD”,返回3.从3开始。 相当于库函数strstr。 方法一:#include<stdio.h>#include<string.h>//匹配函数int match(char *str,char *sub){ while(*sub != '\0') {

2016-04-13 21:20:03 729

原创 算法学习(二)Top K 算法问题

参考学习结构之法,算法之道 上次谈论了寻找最小的k个数问题,如果反过来就是寻找最大的k个问题了。Top K题目描述:输入n个整数,输出其中最大的k个数 例如输入1,2,3,4,5,6,7这个7个数,最大的三个数为5,6,7. 这和寻找最小的k个数问题本质上差不多。这也引出了对于Top K算法的讨论。 题目描述:搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为

2016-04-13 10:45:12 1397

转载 深入浅出之正则表达式

先附上几个符号的含义:perl正则表达式语法可参见《perl语言入门》第7、8、9章或boost的文档。这里列出的语法是不全面的,而且部分说明可能并不清楚。        . 任意字符;使用match_no_dot_null标志时不匹配NULL字符; 使用match_not_dot_newline时不匹配换行字符        ^ 匹配行的开始        $ 匹配行的结束 

2016-04-07 20:40:07 280

原创 算法学习(一):寻找最小的k个数

题目题目描述:寻找最小的k个元素 题目:输入n个整数,输出其中最小的k个 例如输入1,2,3,4,5,6,7,8,则最小的4个数是1,2,3,4思路一,最容易想到的就是排序,然后输出前k个元素,快速排序,排序时间是n*logn,再加上遍历输出前k个元素,总的时间复杂度是n*logn+k = O(n*logn) 二,其实题目中只要求输出前k个数,没有要求这些数是有顺序的,而且不必对n个数进行排序

2016-04-06 19:50:53 1100

原创 计算机网络知识点(一)

在阅读TCP/IP详解:卷1协议时的一些知识点。各类IP地址范围32位地址使用4个十进制数,使用“点分十进制表示法” A:0.0.0.0-127.255.255.255 B : 128.0.0.0-191.255.255.255 C : 192.0.0.0 - 223.255.255.255 D : 224.0.0.0 - 239.255.255.255 E : 240.0.0.0 -

2016-04-06 09:15:53 677

原创 linux下g++ 编译时动态库和静态库的链接和头文件问题

原来编译的时候都是用的很随意,没用系统的总结一下,这几天在编译的时候遇到一些下问题,于是就总结一下,省得过几天又给忘了。1.动态库和静态库简介静态库在程序链接的时候会自动的链接到程序里,所以一旦编译完成,静态库就不需要了,静态库以.a结尾。 动态库在编译时不会被连接到目标代码中,而是在程序运行时才被载入,动态库以.so结尾。 静态库相对于动态库来说更高的效率,但是消耗更多的空间。2.动态库的使用

2016-03-31 18:02:26 9874

原创 数值与字符串之间的转换:lexcical_cast 和sstream

在看代码的时候发现在获取网络端口的时候,得到的是整数,想以string的形式存储,进行的类型转换。 lexicial_cast库进行“字面量”的转换,可以进行字符串、整数/浮点数之间的字面转换。 位于名字空间boost,需要包含头文件#include <boost/lexcical_cast.hpp>#include <string>using namespace boost;using

2016-03-28 11:27:11 723

原创 c语言学习之函数补漏

每次回头看一些c的基础知识,都有新感觉,觉得这个怎么以前没见到过,靠,这么吊,这又是啥。零零碎碎的东西太多,脑子瞬间感觉不够用啦。 一些基础的就不在这啰嗦了,记录一些不常用的点,以后再来看,不用再翻箱倒柜的找了。1.函数的缺省认定这个主要提到函数原型的重要性,函数原型的作用就是让编译器知道函数的参数数量和类型,以及返回值类型。如果没有原型,直接调用,编译器是默认返回整型。 float f; f

2016-03-23 11:53:52 580

原创 c语言学习之位运算知识总结和实例分析

先给大家讲个笑话吧,说世界上有10种人,一种知道二进制,而另一种不知道二进制。 位运算的基础就是二进制。二进制的位运算包括五种运算:与,或,异或,左移,右移 与(&) 0&0 = 0,0&1 = 0;1&0 = 0;1&1 = 1; 或(|) 0|0 = 0, 0|1 = 1; 1|0 = 1; 1|1 = 1; 异或(^)0^0 =0; 0^1 = 1; 1^0 = 1

2016-03-22 16:51:54 3109 1

原创 指针基础知识 ,破坏指针数组的讨论,

1,未初始化和非法的指针int * a; * a = 12; a 未被初始化,不知道指向哪里有,可能指向一个合法地址,把12存储到a所指的内存位置,可能就篡改一个合法的值。2,NULL指针它是一个特殊的指针,表示不指向任何东西。 使一个指针变量为NULL,可以赋一个零值。 但是需要注意的是,对一个NULL指针解引用是非法的,所以在对指针解引用之前要确定它非一个NULL指针。3,左值和右值的区

2016-03-17 21:20:45 528

原创 深入理解计算机系统学习之信息的表示和处理

1 ,c语言的位级运算分为:或,与,非,异或,取反 常见用法为掩码运算。 x & 0xFF 生成一个由x的低位有效字节的值,其他的字节被设置为0. x | 0xFF 生成一个最低位为1,其他不变。2,c语言的移位运算在于逻辑右移和算术右移的区别 逻辑右移:左端补0 算术右移:左端补k个最高有效位的值 对于无符号数,右移必须是逻辑的,对于有符号数,两种都可以,一般都是算术右移。3,无

2016-03-16 16:56:41 312

原创 cocos2dx学习笔记之回调函数:定时器schedule,普通回调callfunc,菜单回调menu_selector

函数定义:typedef void (CCObject::*SEL_SCHEDULE)(float);typedef void (CCObject::*SEL_CallFunc)();typedef void (CCObject::*SEL_CallFuncN)(CCNode*);typedef void (CCObject::*SEL_CallFuncND)(CCNode*, void*);

2016-03-14 09:46:26 1371

自动移动鼠标小工具(带界面)

为了安全,有些公司会对系统进行设置,10分钟没有操作就会锁屏,且无法修改;用c#写了一个小工具,带窗口界面,可定时的移动鼠标(一像素),解决电脑自动锁屏问题;点击开始后,就最小化窗口

2018-11-28

Real-time Rendering 实时渲染清晰版

清晰版的Real-time Renderingpdf版,学习图形学基础和渲染知识

2018-11-27

空空如也

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

TA关注的人

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