Hexo博客Github备份记录
Hexo博客Github备份记录 今年购置了新电脑,想把旧电脑上的Hexo博客项目迁移到新电脑上,于是选择将项目上传到Github进行管理,也方便在新电脑直接push下来。在这里做个记录 .gitignore文件 12345678# Hexo blog backup.DS_StoreThumbs.dbdb.json*.lognode_modules/public/.deploy*/ 这些都是hexo g生成的文件,node_modules是node用来存放包的文件夹,不用上传 拉取到新电脑 新电脑环境准备就绪后,先拉取博客到本地 然后先安装hexo框架 12npm install -g hexonpm install -g hexo-deployer-git 最后在博客目录下,安装其他的包 1npm install 迁移完成!
复活吧我的博客
复活吧,我的博客! 之前的Github账号被标记为垃圾邮件账号了,导致部署不了Github Page… 公式渲染测试: pixel=normal+12pixel = \frac{normal+1}{2} pixel=2normal+1
Unreal-PCG刷草工具记录
开出花田的魔法:Unreal PCG刷草工具 偶然接触了Unreal的PCG插件,搓了个刷草工具,记录一下。 工具简介 使用Unreal的PCG插件做出来的刷草工具。支持在刷草工具的Actor范围内按权重和密度生成草地,也支持使用spline圈出范围和镂空区域(草环的效果) 前期准备 在Unreal中启用PCG插件 草/花的静态网格体 蓝图 样条线模式 按类别获取样条线(GrassSpline/HollowSpline) 按标签过滤数据(方便我们使用多个PCGGraph实例,每个实例可以单独处理一组tag的样条线) 使用样条采样器,模式选择 ”内部“ ,生成样条内部的平面 平面投影到地形上 镂空区域样条线也作上述处理,然后两者使用差异节点求差集得到生成草地的平面 非样条线模式 获取地形数据即可 在表面采样器节点中,如果使用样条线,则要勾选 “已解除绑定”...
快速幂
快速幂 思路 快速幂是在O(logn)的时间下计算a^n的技巧,常规的计算需要O(n) 幂运算中,同底数相乘,底数不变,指数相加,利用这一点,我们可以将幂运算拆分如下: an=ax+ay+az+......a^n = a^x+a^y+a^z+...... an=ax+ay+az+...... 而将指数拆分的法则就是位运算:将指数以二进制分割成多个小任务,例如:9的二进制为1001,即: a9=a8∗a1a^9=a^8*a^1 a9=a8∗a1 代码 基于上述思路,快速幂的代码实现如下 123456789101112long long quickPow(int a,int n){ long long result = 1; while(n>0){ // 如果n的二进制在某一位为1,则计算对应的幂 if(n&1) result *= a; // 更新a,为下一次计算作准备 a *= a; // 更新n,寻找下一个计算小任务 n >>= 1; ...
Shader结构
Shader结构 Shader的路径和名字 Shader的路径和名字,在Unity中可以通过路径和名字访问到Shader 1Shader "Unlit/L2" //Shader的路径和名字 Properties Unity面板与Shader变量的桥梁 命名规则:shader变量名(显示在引擎里的变量名,类型) = 值 之后还要在Pass中新建与Properties对应的变量,否则没有作用 123456789101112Shader "Unlit/L2" //Shader的路径和名字{ Properties { //面板与shader变量的桥梁 //shader变量名(显示在引擎里的变量名,类型) = 值 _MainTex ("Texture", 2D) = "white" {} _Float("Float",float) = 4.3 ...
软件体系结构-模板方法模式
软件体系结构-模板方法模式 定义 定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类不改变一个算法的结构即可重定义该算法的某些特定步骤。 UML类图 两个部分: 抽象类(定义了算法框架) 具体子类(具体算法实现) 由于模板方法是具体方法,因此模板方法模式中的抽象层只能是抽象类,而不是接口。 钩子方法:由一个抽象类或具体类声明并实现,其子类可能会加以扩展。通常父类中给出的是空实现,通过重写钩子方法,子类可以反向控制父类的行为。另一种钩子方法则是返回boolean值来控制父类的某些代码是否执行 代码 抽象类 123456789101112131415public abstract class AbstractClass{ public void templateMethod(){ primitiveOperation1(); primitiveOperation2(); primitiveOperation3(); } public void primitiveOperation1(){ ...
软件体系结构-策略模式
软件体系结构-策略模式 定义 定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法可以独立于使用它的客户变化。 UML类图 三个部分: 环境类Context 抽象策略类Strategy 具体策略类ConcreteStrategy 代码 抽象策略类 123public abstract class Strategy{ public abstract void algorithm();} 具体策略类 12345public class ConcreteStrategyA extends Stractegy{ public void algorithm(){ 具体实现 } } 环境类 1234567891011public class Context{ private Strategy strategy; public void setStrategy(Strategy strategy){ this.strategy =...
软件体系结构-观察者模式
软件体系结构-观察者模式 定义 定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都得到通知并被自动更新。 UML类图 四个部分: Subject抽象目标 ConcreteSubject具体目标 Observer观察者接口 ConcreteObserver具体观察者 代码 抽象目标 12345678910111213public abstract class Subject{ protected ArrayList<Observer> observers = new ArrayList<>(); public void attach(Observer observer){ observers.add(observer); } public void detach(Observer observer){ observers.remove(observer); } public abstract void...
软件体系结构-命令模式
软件体系结构-命令模式 定义 将一个请求封装为一个对象,从而让你可以用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。 UML类图 四个部分: 抽象命令类Command 具体命令类ConcreteCommand 调用者Invoker 接收者Receiver 代码 抽象命令类 123public abstract class Command{ public abstract void execute();} 具体命令类 1234567public class ConcreteCommand extends Command{ private Receiver receiver; public void execute(){ receiver.action(); } } 调用者 123456789101112131415public class Invoker{ private Command command; public...





