<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[[hm]]]></title><description><![CDATA[这个人很酷 没什么好说的]]></description><link>https://blog.youkuaiyun.com/a1256242238</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; a1256242238]]></copyright><item><title><![CDATA[通过Docker快速搭建VoceChat | 开源轻量自托管聊天工具]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/146484896</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/146484896</guid><author>a1256242238</author><pubDate>Wed, 26 Mar 2025 16:42:24 +0800</pubDate><description><![CDATA[VoceChat 是一款轻量、开源且支持自托管的即时通讯工具，专注于提供简单高效的团队沟通解决方案。轻量级：资源占用低，适合小型服务器部署。隐私优先：数据完全自主掌控，支持私有化部署。多平台支持：Web、移动端、桌面端全覆盖。易扩展：提供API和Webhook，便于集成其他服务。建议小规模团队以及个人用户使用VoceChat，运维成本低/搭建简单/功能全面，完全满足团队办公/个人使用。延伸阅读VoceChat官网自签名证书letsencrypt。]]></description><category></category></item><item><title><![CDATA[unity特殊文件夹]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/74995302</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/74995302</guid><author>a1256242238</author><pubDate>Tue, 11 Jul 2017 19:44:44 +0800</pubDate><description><![CDATA[1.EditorEditor文件夹可以在根目录下，也可以在子目录里，只要名子叫Editor就可以。比如目录：/xxx/xxx/Editor  和 /Editor 是一样的，无论多少个叫Editor的文件夹都可以。Editor下面放的所有资源文件或者脚本文件都不会被打进发布包中，并且脚本也只能在编辑时使用。一般呢会把一些工具类的脚本放在这里，或者是一些编辑时用的DLL。 比如我们现在要做类似技能编辑器]]></description><category></category></item><item><title><![CDATA[主流数据库优缺点]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/74993440</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/74993440</guid><author>a1256242238</author><pubDate>Tue, 11 Jul 2017 19:21:24 +0800</pubDate><description><![CDATA[MySQL 
优点 
    mysql是一个快速、多线程、多用户的SQL数据库服务器。几乎是免费的，支持正规的SQL查询语言和采用多种数据类型，能对数据进行各种详细的查询等。 
　　MySql的核心程序采用完全的多线程编程。线程是轻量级的进程，它可以灵活地为用户提供服务，而不过多的系统资源。用多线程和C语言实现的MySql能很容易充分利用CPU。 
　　MySql可运行在不同的操作系统下。简单地说]]></description><category></category></item><item><title><![CDATA[vs常用快捷键总结]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/73305069</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/73305069</guid><author>a1256242238</author><pubDate>Thu, 15 Jun 2017 22:49:56 +0800</pubDate><description><![CDATA[1.回到上一个光标位置/前进到下一个光标位置 
1)回到上一个光标位置：使用组合键“Ctrl + -”; 
2)前进到下一个光标位置：“Ctrl + Shift + - ”。 
2.复制/剪切/删除整行代码 
1)如果你想复制一整行代码，只需将光标移至该行，再使用组合键“Ctrl+C”来完成复制操作，而无需选择整行。 
2)如果你想剪切一整行代码，只需将光标移至该行，再使用组合键“Ctrl+X”来完]]></description><category></category></item><item><title><![CDATA[Unity编程 欧拉角与万向节死锁（图文版）]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/73251518</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/73251518</guid><author>a1256242238</author><pubDate>Wed, 14 Jun 2017 19:36:46 +0800</pubDate><description><![CDATA[目录(?)[+]万向节死锁Gimbal Lock问题陀螺仪PitchYawRoll陀螺仪的工作原理陀螺仪中的万向节死锁用小程序来重现万向节死锁问题死锁的过程解析总结建议
        万向节死锁（Gimbal Lock）问题上文中曾经说过，欧拉旋转的顺规和轴向定义，自然造就了“万向节死锁”问题。本文主要来探索它自然形成的原因。陀螺仪首先，我们来了解Gimbal 究竟是个什么玩意儿。下面来自维基百科]]></description><category></category></item><item><title><![CDATA[Unity示例方法]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/73251464</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/73251464</guid><author>a1256242238</author><pubDate>Wed, 14 Jun 2017 19:28:30 +0800</pubDate><description><![CDATA[Unity中查找对象的方法:通过GameObject找游戏对象
     1) GameObject.Find() ;
     2) GameObject.FindWithTag();
     3) GameObject.FindGameObjectWithTag();
     4) GameObject.FindGameObjectsWithTag();通过transform找游戏对象]]></description><category></category></item><item><title><![CDATA[游戏动画中欧拉角与万向锁的理解]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/73222013</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/73222013</guid><author>a1256242238</author><pubDate>Wed, 14 Jun 2017 13:20:54 +0800</pubDate><description><![CDATA[下面我想说明四个问题：1，什么是欧拉角？2，万向锁是一种什么现象？3，游戏动画中遇到万向锁时会发生什么？4，怎样解决万向锁这个问题？一，什么是欧拉角？用一句话说，欧拉角就是物体绕坐标系三个坐标轴(x,y,z轴）的旋转角度。
在这里，坐标系可以是世界坐标系，也可以是物体坐标系，旋转顺序也是任意的，可以是xyz,xzy,yxz,zxy,yzx,zyx中的任何一种，甚至可以是xyx,xyy,xzz,zxz]]></description><category></category></item><item><title><![CDATA[Unity —— 关于Lerp插值的基本原理]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/73221361</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/73221361</guid><author>a1256242238</author><pubDate>Wed, 14 Jun 2017 13:10:47 +0800</pubDate><description><![CDATA[插值这个东西，对于很多新手来说，只是停留在使用的阶段，知道什么时候用，但是运算机制却不甚了解。最近发现，很多新人有这么一种想法：已经封装好的算法，都是很高深的，我们直接用就好了，没有必要去了解它的实现方式。这种想法是不对的。很多东西，只因为你是站在门外的，所以你看不透彻，当你迈进门里面的时候，就会觉得不过如此。啰嗦了很多，就是希望看到这篇的帖子的刚出道的新手们，能有一个打破砂锅问到底的精深。高深之所]]></description><category></category></item><item><title><![CDATA[Unity 脚本生命周期]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/73193111</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/73193111</guid><author>a1256242238</author><pubDate>Tue, 13 Jun 2017 19:34:58 +0800</pubDate><description><![CDATA[.]]></description><category></category></item><item><title><![CDATA[Unity API 解析—— GameObject 类]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/73189101</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/73189101</guid><author>a1256242238</author><pubDate>Tue, 13 Jun 2017 18:01:14 +0800</pubDate><description><![CDATA[GameObject 类是Unity场景中所有实体的基类。一个GameObject对象通常由多个组件component组成，且至少含有一个transform组件。activeSelf 属性 —— GameObject的Active标识activeInHierarchy 属性的功能是返回GameObject实例在程序运行时的激活状态，它只有当GameObect实例的状态被激活时才会返回true。而且它]]></description><category></category></item><item><title><![CDATA[Unity快捷键]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/73057226</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/73057226</guid><author>a1256242238</author><pubDate>Sun, 11 Jun 2017 18:00:40 +0800</pubDate><description><![CDATA[Windows系统Unity3D中的快捷键
  File
  文件  Ctrl   +   N
  New Scene 新建场景
  Ctrl   +   O
  Open Scene 打开场景
  Ctrl    +  S
  Save Scene 保存
  Ctrl+  Shift   +S
  Save Scene as 保存场景为
  Ctrl   +Shift  +B
  Build Se]]></description><category></category></item><item><title><![CDATA[C#集合详解]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/72887731</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/72887731</guid><author>a1256242238</author><pubDate>Tue, 06 Jun 2017 21:34:46 +0800</pubDate><description><![CDATA[以下是对最长用的集合进行简单的总结
  集合
  说明  List<T>
  可以像数组一样按索引访问列表,但提供了其他方法来搜索和排序
  Queue<T>
  先入先出数据结构,提供了方法将数据项添加到队列的一段,从另一端删除项,以及只检查不删除
  Stack<T>
  先入后出数据结构,提供了方法将数据压入栈顶,从栈顶出栈,以及只检查栈顶的项而不删除
  LinkedList<T>
  双向]]></description><category></category></item><item><title><![CDATA[泛型代码中的默认关键字default]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/72876680</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/72876680</guid><author>a1256242238</author><pubDate>Tue, 06 Jun 2017 11:46:58 +0800</pubDate><description><![CDATA[在泛型类和泛型方法中产生的一个问题是，在预先未知以下情况时，如何将默认值分配给参数化类型 T：
T 是引用类型还是值类型。
如果 T 为值类型，则它是数值还是结构。给定参数化类型 T 的一个变量 t，只有当 T 为引用类型时，语句 t = null 才有效；只有当 T 为数值类型而不是结构时，语句 t = 0 才能正常使用。 解决方案是使用 default 关键字，此关键字对于引用类型会返回 nul]]></description><category></category></item><item><title><![CDATA[C#中的泛型约束]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/72876504</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/72876504</guid><author>a1256242238</author><pubDate>Tue, 06 Jun 2017 11:32:00 +0800</pubDate><description><![CDATA[使用约束的原因如果要检查泛型列表中的某个项以确定它是否有效，或者将它与其他某个项进行比较，则编译器必须在一定程度上保证它需要调用的运算符或方法将受到客户端代码可能指定的任何类型参数的支持。这种保证是通过对泛型类定义应用一个或多个约束获得的。例如，基类约束告诉编译器：仅此类型的对象或从此类型派生的对象才可用作类型参数。一旦编译器有了这个保证，它就能够允许在泛型类中调用该类型的方法。约束是使用上下文关键]]></description><category></category></item><item><title><![CDATA[集合-ArrayList的用法]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/72875038</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/72875038</guid><author>a1256242238</author><pubDate>Tue, 06 Jun 2017 09:49:46 +0800</pubDate><description><![CDATA[ArrayList类是一个特殊的数组。通过添加和删除元素，就可以动态改变数组的长度。ArrayList是命名空间System.Collections下的一部分，在使用该类时必须进行引用，同时继承了IList接口，提供了数据存储和检索。ArrayList对象的大小是按照其中存储的数据来动态扩充与收缩的。所以，在声明ArrayList对象时并不需要指定它的长度。 
一．优点 
1。支持自动改变大小的功能]]></description><category></category></item><item><title><![CDATA[索引器概述]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/72852999</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/72852999</guid><author>a1256242238</author><pubDate>Sat, 03 Jun 2017 16:49:25 +0800</pubDate><description><![CDATA[索引器概述
使用索引器可以用类似于数组的方式为对象建立索引
get 访问器返回值。 set 访问器分配值。
this 关键字用于定义索引器。
value 关键字用于定义由 set 索引器分配的值。
索引器不必根据整数值进行索引，由您决定如何定义特定的查找机制。
索引器可被重载。
索引器可以有多个形参，例如当访问二维数组时。
class SampleCollection<T>
{
    // 声明一]]></description><category></category></item><item><title><![CDATA[理解null值和可空类型]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/72852133</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/72852133</guid><author>a1256242238</author><pubDate>Sat, 03 Jun 2017 15:00:04 +0800</pubDate><description><![CDATA[C#允许将null值赋给任意引用变量,值为null的变量表明该变量不引用内存中的任何对象,Circle c = new Circle(42);
Circle copy =null; // 声明的同时进行初始化
...
if(copy == null)
{
    copy = c; // copy 和 c引用同一个对象
    ...
}C#6.0新增了空条件操作符来更简洁的测试空值,使用它需要为变]]></description><category></category></item><item><title><![CDATA[单例模式]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/72850253</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/72850253</guid><author>a1256242238</author><pubDate>Sat, 03 Jun 2017 09:21:33 +0800</pubDate><description><![CDATA[单例模式是一种常见的设计模式，单例模式的写法有好几种，这里主要介绍三种：懒汉式单例、饿汉式单例、登记式单例。 
　　单例模式有以下特点： 
　　1、单例类只能有一个实例。 
　　2、单例类必须自己创建自己的唯一实例。 
　　3、单例类必须给所有其他对象提供这一实例。 
　　单例模式确保某个类只有一个实例，而且自行实例化并向整个系统提供这个实例。在计算机系统中，线程池、缓存、日志对象、对话框、打印机、]]></description><category></category></item><item><title><![CDATA[23种设计模式汇总整理]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/72850189</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/72850189</guid><author>a1256242238</author><pubDate>Sat, 03 Jun 2017 09:07:07 +0800</pubDate><description><![CDATA[设计模式分为三大类：创建型模式，共五种：工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 
结构型模式，共七种：适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 
行为型模式，共十一种：策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 
其实还有两类：并发型模式和线程池模式。设计模式]]></description><category></category></item><item><title><![CDATA[从面向对象思想上去理解抽象类和接口的区别]]></title><link>https://blog.youkuaiyun.com/a1256242238/article/details/72845119</link><guid>https://blog.youkuaiyun.com/a1256242238/article/details/72845119</guid><author>a1256242238</author><pubDate>Fri, 02 Jun 2017 15:55:41 +0800</pubDate><description><![CDATA[abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制，正是由于这两种机制的存在，才赋予了Java强大的面向对象能力。 abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性，甚至可以相互替换，因此很多开发者在进行抽象类定义时对于 abstract class和interface的选择显得比较随意。其实，两者之间还是有]]></description><category></category></item></channel></rss>