<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[davidliu0327的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/davidliu0327</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; davidliu0327]]></copyright><item><title><![CDATA[PHP底层运行机制与原理]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/106545982</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/106545982</guid><author>davidliu0327</author><pubDate>Thu, 04 Jun 2020 14:30:02 +0800</pubDate><description><![CDATA[PHP是一种适用于web开发的动态语言。具体点说，就是一个用C语言实现包含大量组件模块的软件框架。是一个强大的UI框架。

简言之；PHP动态语言执行过程：拿到一段代码后，经过词法解析、语法解析等阶段后，源程序会被翻译成一个个指令（opcodes）,然后ZEND虚拟机顺次执行这些指令完成操作。PHP本身是用C实现的，因此最终调用的也是C的函数，实际上，我们可以把PHP看做一个C开发的软件。

一.PHP的设计理念及特点

1、多进程模型：由于PHP是多进程模型，不同请求间互不干涉，这样保证了一个请求挂掉不会]]></description><category></category></item><item><title><![CDATA[Redis入门]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/106334195</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/106334195</guid><author>davidliu0327</author><pubDate>Mon, 25 May 2020 15:27:33 +0800</pubDate><description><![CDATA[Redis 概述

在我们日常的Java Web开发中，无不都是使用数据库来进行数据的存储，由于一般的系统任务中通常不会存在高并发的情况，所以这样看起来并没有什么问题，可是一旦涉及大数据量的需求，比如一些商品抢购的情景，或者是主页访问量瞬间较大的时候，单一使用数据库来保存数据的系统会因为面向磁盘，磁盘读/写速度比较慢的问题而存在严重的性能弊端，一瞬间成千上万的请求到来，需要系统在极短的时间内完成成千上万次的读/写操作，这个时候往往不是数据库能够承受的，极其容易造成数据库系统瘫痪，最终导致...]]></description><category></category></item><item><title><![CDATA[JavaScript是如何工作的:渲染引擎和优化其性能的技巧]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/104497571</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/104497571</guid><author>davidliu0327</author><pubDate>Tue, 25 Feb 2020 14:56:54 +0800</pubDate><description><![CDATA[为了保证的可读性，本文采用意译而非直译。

这是专门探索 JavaScript 及其所构建的组件的系列文章的第11篇。

想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质文章等着你！

如果你错过了前面的章节，可以在这里找到它们：

JavaScript 是如何工作的：引擎，运行时和调用堆栈的概述！
	JavaScript 是如何工作的：深入V8引擎&amp;编写优化代码的5个技巧！
	J...]]></description><category></category></item><item><title><![CDATA[Unity3d的Log系统重构]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/93886985</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/93886985</guid><author>davidliu0327</author><pubDate>Thu, 27 Jun 2019 16:21:24 +0800</pubDate><description><![CDATA[编者注

由于要重写Unity3d的Log系统，变更为自定义方式，按照Log4j的显示的内容方法

Unity3d的Log

一般在Unity3d中编写日志入下代码


Debug.Log("hello message");


在UnityEditor和UnityEngine当中除了打印message以外，还会打印堆栈信息。性能低下，根据有经验的人讲解，在客户端打印大量日志，会严重降低渲染性能。...]]></description><category></category></item><item><title><![CDATA[Unity HDRP渲染管线基础指南]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/90783835</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/90783835</guid><author>davidliu0327</author><pubDate>Tue, 04 Jun 2019 17:22:00 +0800</pubDate><description><![CDATA[HDRP和LWRP简介

Unity2018中引入了可编程渲染管线（Scriptable Render Pipeline，简称SRP），是一种在Unity中通过C#脚本配置和执行渲染的方式。至2018.1版本，Unity中除了默认渲染管线，还提供了轻量级渲染管线（Lightweight Pipeline）和高清晰渲染管线（HD Pipleline）二种SRP渲染管线。当然也支持自定义渲染管线。与...]]></description><category></category></item><item><title><![CDATA[四元数的旋转理解]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/89857544</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/89857544</guid><author>davidliu0327</author><pubDate>Sun, 05 May 2019 23:25:28 +0800</pubDate><description><![CDATA[一、复数

首先介绍复数的思路（虚数为复数的一部分）





而复数平面的创建并不是由上述的定义直观得来的，而是人们发现用复数系统来描述平面由以下优越性：

1.用复数形式表示二维坐标的时候，保留了横轴和纵轴的坐标信息。

2.虚数i可以表示90度旋转。

3.当把复数平面中某个点绕原点旋转时，可以用一个复数来表示旋转角度







二、四元数



2.1四元数的定义及运算法则

...]]></description><category></category></item><item><title><![CDATA[Unity—IL2CPP & Mono]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/88896451</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/88896451</guid><author>davidliu0327</author><pubDate>Fri, 29 Mar 2019 16:37:03 +0800</pubDate><description><![CDATA[Unity—IL2CPP &amp; Mono

作者: lingze 分类: Unity3D 发布时间: 2018-10-18 16:27

iOS和Android平台 , 可以在PlayerSettings面板中选择 Mono 或者 IL2CPP 这两种Scripting Backend (译者注：Scripting Backend可以理解成”脚本后处理技术”，根据选择的Scripting ...]]></description><category></category></item><item><title><![CDATA[预定义shader预处理宏： 　　Target platform:  复制代码 　　SHADER_API_OPENGL - desktop OpenGL 　　SHADER_API_D3D9 - Dir]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/78768205</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/78768205</guid><author>davidliu0327</author><pubDate>Sun, 10 Dec 2017 22:30:27 +0800</pubDate><description><![CDATA[预定义shader预处理宏：
　　Target platform:]]></description><category></category></item><item><title><![CDATA[深入浅出聊Unity3D项目优化：从Draw Calls到GC]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/49983341</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/49983341</guid><author>davidliu0327</author><pubDate>Sun, 22 Nov 2015 23:53:04 +0800</pubDate><description><![CDATA[提Unity3D项目优化    CPU方面 GPU方面内存方面]]></description><category></category></item><item><title><![CDATA[Unity游戏开发使用Assetbundle加载场景的实战]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/49669229</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/49669229</guid><author>davidliu0327</author><pubDate>Thu, 05 Nov 2015 22:46:39 +0800</pubDate><description><![CDATA[之前有一篇文章中我们相惜讨论了Assetbundle的原理，如果对原理还不太了解的朋友可以看这一篇文章：Unity游戏开发使用Assetbundle加载场景的原理 本篇文章我们将说说assetbundle是如何实现的。


1.创建Assetbundle

         无论是模型资源还是UI资源，最好是先把他们放在Prefab中，然后在做成Assetbundle。我们以模型来举例，]]></description><category></category></item><item><title><![CDATA[Unity游戏开发使用Assetbundle加载场景的原理]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/49669165</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/49669165</guid><author>davidliu0327</author><pubDate>Thu, 05 Nov 2015 22:41:57 +0800</pubDate><description><![CDATA[Assetbundle 是Unity Pro提供提供的功能，它可以把多个游戏对象或者资源二进制文件封装到Assetbundle中，提供了封装与解包的方法使用起来很便利。
1.预设
         Assetbundle可以将Prefab封装起来，这是多么方便啊！ 而且我也强烈建议大家将Prefab封装成Assetbundle，因为Prefab可以将游戏对象身上带的游戏游戏组件、游戏脚本、材质]]></description><category></category></item><item><title><![CDATA[OpenGL: 渲染管线理论]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/47265961</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/47265961</guid><author>davidliu0327</author><pubDate>Mon, 03 Aug 2015 23:42:41 +0800</pubDate><description><![CDATA[学习着色器，并理解着色器的工作机制，就要对OpenGL的固定功能管线有深入的了解。

首先要知道几个OpenGL的术语
渲染(rendering)：计算机根据模型(model)创建图像的过程。
模型(model)：根据几何图元创建的物体(object)。
几何图元：包括点、直线和多边形等，它是通过顶点(vertex)指定的。

最终完成了渲染的图像是由在屏幕上绘制的像素组成的。在内存中，]]></description><category></category></item><item><title><![CDATA[3D图形渲染管线]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/47265565</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/47265565</guid><author>davidliu0327</author><pubDate>Mon, 03 Aug 2015 23:27:55 +0800</pubDate><description><![CDATA[3D图形渲染管线 

什么是渲染（Rendering）

    渲染简单的理解可能可以是这样：就是将三维物体或三维场景的描述转化为一幅二维图像，生成的二维图像能很好的反应三维物体或三维场景（如图1）：



    图1：Rendering




什么是渲染管线

    渲染管线也称为渲染流水线，是显示芯片内部处理图形信号相互独立的的并行处理单元。一个流水线是一]]></description><category></category></item><item><title><![CDATA[Unity3D AssetBundles 动态加载游戏资源]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/46925069</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/46925069</guid><author>davidliu0327</author><pubDate>Fri, 17 Jul 2015 11:34:01 +0800</pubDate><description><![CDATA[AssetBundles are files which you can export from Unity to contain assets of your choice. These files use a proprietary compressed
 format and can be loaded on demand in your application. This allows]]></description><category></category></item><item><title><![CDATA[Unity3d FingerGestures]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/38580331</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/38580331</guid><author>davidliu0327</author><pubDate>Fri, 15 Aug 2014 09:21:32 +0800</pubDate><description><![CDATA[目录


FingerGestures包结构FingerGestures例子列表设置场景教程：识别一个轻敲手势教程：手势识别器教程：轻击手势识别器教程：拖拽手势识别器教程：滑动手势识别器教程：长按手势识别器教程：缩放手势识别器教程：旋转手势识别器教程：自定义手势识别器教程：识别手势事件建议：使用.net代理事件


fingerGestures包结构




路径，相对Ass]]></description><category></category></item><item><title><![CDATA[Unity3D之协程(Coroutines & Yield )]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/36418217</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/36418217</guid><author>davidliu0327</author><pubDate>Wed, 02 Jul 2014 14:33:46 +0800</pubDate><description><![CDATA[[csharp] 
view plaincopyprint?


"font-size:18px;">private int state = 0;  void Update()  {          if (state == 0)           {                  //做步骤0                  state = 1;                ]]></description><category></category></item><item><title><![CDATA[PHP扩展编写]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/12704135</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/12704135</guid><author>davidliu0327</author><pubDate>Mon, 14 Oct 2013 09:03:46 +0800</pubDate><description><![CDATA[第一步：PHP和Zend介绍
作者: JeremyWei | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://weizhifeng.net/write-php-extension-part1.html
介绍
如果你在读这篇入门文章，那么你可能对写PHP扩展有点兴趣。如果不是… 好吧，那么等我们写完这篇文章，你将会发现一个之前自己完全不知道，但是非常]]></description><category></category></item><item><title><![CDATA[hash算法 (hashmap 实现原理)]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/9855351</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/9855351</guid><author>davidliu0327</author><pubDate>Fri, 09 Aug 2013 14:41:03 +0800</pubDate><description><![CDATA[Hash，一般翻译做“散列”，也有直接音译为“哈希”的，就是把任意长度的输入（又叫做预映射， pre-image），通过散列算法，变换成固定长度的输出，该输出就是散列值。这种转换是一种压缩映射，也就是，散列值的空间通常远小于输入的空间，不同的输入可能会散列成相同的输出，而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
HASH主要用于信息安]]></description><category></category></item><item><title><![CDATA[PHP代码优化的40条]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/9817075</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/9817075</guid><author>davidliu0327</author><pubDate>Wed, 07 Aug 2013 14:48:18 +0800</pubDate><description><![CDATA[作为一个php程序员们必须知道的PHP代码优化的40条建议：
1.如果一个方法可静态化，就对它做静态声明。速率可提升至4倍。
2.echo 比 print 快。
3.使用echo的多重参数(译注：指用逗号而不是句点)代替字符串连接。
4.在执行for循环之前确定最大循环数，不要每循环一次都计算最大值。
5.注销那些不用的变量尤其是大数组，以便释放内存。
6.尽量避免使用__get，__]]></description><category></category></item><item><title><![CDATA[大型网站架构演变历程]]></title><link>https://blog.youkuaiyun.com/davidliu0327/article/details/9816749</link><guid>https://blog.youkuaiyun.com/davidliu0327/article/details/9816749</guid><author>davidliu0327</author><pubDate>Wed, 07 Aug 2013 14:32:20 +0800</pubDate><description><![CDATA[在这篇文章中将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程，希望能给从事互联网行业的同行们一点初步的概念，文中的不对之处也请各位多给点建议，让本文真正起到抛砖引玉的效果。
架构演变第一步：物理分离webserver和数据库
最开始，由于某些想法，于是在互联网上搭建了一个网站，这个时候甚至有可能主机都是租借的，但由于这篇文章我们只关注架构的演变历程，因此就假设这个时候已经是]]></description><category></category></item></channel></rss>