自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 问答 (1)
  • 收藏
  • 关注

原创 UE4使用python第三方库

在UE4中使用PuerTS+Python,引入python zmq库搭建一个简单的客户端-服务器通信Demo

2024-03-28 18:06:30 765

原创 Golang基础学习

Golang基础参考:Golang使用var声明变量返回值中_表示错误结果变量基本数据类型数组&集合控制语句函数&接口错误处理并发混合编程需要新建src文件夹需要保留go.mod需要安装gccZmq的使用环境搭建对于经常可随便运行的项目,可以新建一个文件夹,名为main,方便启动多个main函数对于正式的开发项目(只有一个main),创建文件夹名为src使用vcpkg下载zmq,下载的x64-windows版本

2022-06-25 19:27:19 321 1

原创 UE4 C++最基础的API

数据结构TArrayTMap函数事件分发器1. 创建DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParamDECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParamsDECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams注意需要在类的外部声明 类型必须要以F开头 参数传入的格式是:事件类型,参数1类型,参数1名称,参数2类型,参数2名称…… 属性需要使用UPRO

2022-05-26 12:01:10 989

原创 蓝图编程经验

1)蓝图OrC++研发尽量在C++中实现相关逻辑,用于区别是否需要使用C++而不是蓝图的依据包括以下:1. 是否是单例的功能模块或者基础父类2. 是否大量使用了RPC通信3. 是否有着复杂的调用过程2)关于日志日志主要用来记录程序中的错误,包括以下错误:1. 配置错误主要是策划配置时出现的错误,例如主键不一致、漏配等情况造成的程序无法按照预期执行。2. 数据错误主要用于识别程序错误,一半这类错误在程序没有问题的时候不会出现,但是由于是协同开发,不能保证对接上一定没有问

2022-05-13 11:25:57 368

原创 UE4 C++编程入门整理

参考文献:《大象无形》ue4中c++的网络同步、RPC_zhangxiaofan666的博客-CSDN博客_rpc ue4文章目录虚幻C++编程UObjectUObbject提供的功能UObject构造函数AActorPawn、Character 、Controller创建C++类从C++到蓝图UPROPERTYUFUNCTIONRPC同步属性同步函数同步多播函数游戏性框架概述行为树网络架构系统引擎相关类虚幻引擎解析模块机制UBTUHT内存分配初始化主循环线程UObject对象SWidget虚幻

2022-01-26 11:30:52 4305

原创 Unreal Engine 4 学习总动员读书笔记(2)

Unreal Engine 4 学习总动员读书笔记(2)参考《Unreal Engine 4 学习总动员》,之前已经将视频的操作一步步的完成,但并没有对知识点进行深入理解和提取,本章针对之前的操作对知识点进行更加深入的总结。本章以书本而非视频的章节进行扩展,更加深入全面的了解UE4,并且扩展阅读官网教程以及API的知识加以解释。文章目录Unreal Engine 4 学习总动员读书笔记(2)《快速入门》下载源代码Unity和UE4对比入门案例《蓝图应用》常规脚本建造蓝图蓝图技术指南在线会话结点Sess

2021-10-05 15:10:08 1061 2

原创 Unreal Engine4和Unity3D对比

Unreal Engine4和Unity3D对比蓝图和C++借助官方的话,在UE4中,C++主要用于构建底层的游戏体系,而蓝图主要用于更方便的构建处理游戏的行为和表现。一般自己先编写一个继承自AActor的类,然后创建蓝图,让蓝图类继承自此类,该类就相当于Unity中预制体,并伴有响应功能。经过实践发现,如果蓝图类重写了C++类的虚函数,那么C++类的方法会在蓝图类执行完成后被执行。Level和Scene在UE4中,使用Level代替Unity中的SceneSceneComponent

2021-09-18 13:02:27 2592

原创 Unity3D实战常用技术

1. 对象的创建、获取2. 音乐的播放3. 更新基础UI- 普通属性- 使用DOTween渐变修改属性- 修改列表顺序- 制作按钮动画4. 事件机制- 检查某个按键是否按下- 检查任意按键是否按下5. 场景加载- 同步加载- 异步加载6. Timeline 的创建和使用7. 动画控制器的使用...

2021-09-17 09:43:17 581

原创 LeetCode刷题小感悟

最近在因面试的需要在LeetCode刷了几天题,记录一下刷题的一些小感悟,方便继续补充和回顾。一、常用是数据结构vector、list、stack、queue、map通过下标定位、是线性结构(无限、有序、离散)每个下标只能存储一个单位的数据常用的STL方法:排序 sort(vec.begin()+i, vec.end());二分查找 binary_search(vec.begin(), vec.end(), s);二分查找要求数组必须是有序数组。tree对于n中选择的结构.

2021-09-06 11:13:20 99

原创 UnityShader入门学习笔记

UnityShader入门学习笔记本笔记对Siki学院中的UnityShader视频所学的内容作了一点笔记,方便后面查询。GPU简介GPU包含较多的ALU主要分三种语言OpenGL GLSLDirectX HLSLNVIDIA CGOpenGL和OpengGL ES区别:OpenGL ES主要用于手机平台CG语言可以编译成GLSL和HLSL语言渲染流水线应用阶段:准备场景数据-渲染图元(CPU)将数据加载到显存(顶点、纹理等)设置渲染状态

2021-08-30 20:23:21 273

原创 Unity2019 从零到精通视频学习笔记

Unity2019 从零到精通视频学习笔记该文对Unity2019 做简单的自学了解,并做相应的笔记文章目录Unity2019 从零到精通视频学习笔记一、C#基础回顾基本数据结构面向对象数据结构异常处理事件异步编程数据库和文件操作二、引擎基本介绍三、场景管理四、物体管理五、组件管理六、UGUI图形系统七、用户输入管理八、自然环境设计九、光照系统十、3D模型管理十一、物理系统十二、动画系统十三、寻路系统十四、音效系统十五、特效系统十六、视频播放管理一、C#基础回顾基本数据结构简单的控制台

2021-08-27 01:51:56 466

原创 Python高级编程

最近要进面试,要求中要会python,在工作中层使用过python,但并非主流语言,因此对其高级特性并不是很熟悉,因此再次机会详细学习其高级特性,包括面向对象的编程方法、一些特定的操作函数、常用的函数修饰符、异步语句等最新的python3语法。Python的基础内容在Python核心编程(3.8学习笔记)_zYongheng的博客-CSDN博客一、继承和多态1. 继承作用和多重继承的执行顺序class Animal: def __init__(self, name): ..

2021-08-19 23:23:46 1875

原创 Unreal Engine 4 学习总动员读书笔记

Unreal Engine 4 学习总动员读书笔记参考《Unreal Engine 4 学习总动员》,按照里面的录制的视频一步一步的操作,并将操作的流程和关键截图保存下来,方便后面的再次复习和回顾,如果想详细的了解UE4,请自行购买《Unreal Engine 4 学习总动员》虽然已经将相关书籍全部看完,也对主要的技术都有了初步的了解,但是仍然缺乏系统化的认识,包括对UE4引擎的整体的设计结构的认知,主要的功能模块,模块中的类及其关系等。后面希望逐渐通过实战项目对UE4的API和整体的架构有更深入的

2021-08-18 17:19:37 1194

原创 树状程序结构设计的过程

树状程序结构是比较通用的程序结构,能够表示所有逻辑的一种设计模式,相比于中心化设计,模糊划分更细,更清晰。以下是我最近一段时间对该结构的思考与实践经验:总体介绍树状程序结构设计时需要首先对需求建模,主要按照面向对象设计的原则先做一次大概的划分,同时当一个模块的功能比较复杂时,需要对其独立出来,作为其子树,依次层层拆分,最终完成所有需求的设计。拆分原则一般来说,一个业务类函数不能超过1页,一个类不能超过9-12个方法,工具类不做限制。业务类足够的清晰是别人能看懂你的代码的最为重要的保证。

2021-07-03 12:39:45 405 1

原创 OPEN GL Shader学习

OPEN GL Shader学习一、创建工程struct Vertex{ float x, y, z; float r, g, b;};VC++标准化窗口class GLContext: public GLWindow{public: GLContext(HINSTANCE hInst); virtual void Init() override; virtual void UnInit() override; virtual void Rend

2021-05-03 21:03:30 240

原创 Direct3D开发笔记

创建窗口LPDIRECT3D9 g_D3d = nullptr;//D3d对象LPDIRECT3DDEVICE9 g_D3DDevice = nullptr;//D3d设备代码:1. 创建D3d对象 g_D3d = Direct3DCreate9(D3D_SDK_VERSION); if (g_D3d == nullptr) { return false;//D3d对象创建失败 }2. 创建设备对象 D3DDISPLAYMODE displayMode;//显示模式 if..

2021-05-01 17:55:00 157

原创 windows 异步IO编程机制

1. 异步IO起源——OVERLAPPEDtypedef struct _OVERLAPPED { ULONG_PTR Internal; //操作系统保留,指出一个和系统相关的状态 ULONG_PTR InternalHigh; //指出发送或接收的数据长度 union { struct { DWORD Offset; //文件传送的字节偏移量的低位字 D...

2021-03-18 11:05:09 298

原创 ffmpeg学习笔记

ffmpeg视频学习ffmpeg 常用命令录屏命令查看可用设备ffmpeg -devicesDevices: D. = Demuxing supported .E = Muxing supported -- D dshow DirectShow capture D gdigrab GDI API Windows frame grabber D lavfi Libavfilter virtual input devi

2021-01-25 00:33:20 169

原创 window编程一定要注意权限!权限!

今天做一个键盘钩子,发现当窗口切换到某个特定窗口的上无法钩取到案件消息。开始怀疑是那个APP的问题,后面和别人探讨才发现是管理员权限的问题,我写的钩子的exe没有启动管理员权限,当管理员权限的窗口获取到焦点时,就获取不到钩子。所以windows上都很多问题都和权限有关,在做软件设计、开发时,首先要考虑到权限问题;当遇到问题时,也需要首先怀疑是不是权限不足。window的输入用户名和密码的进程为什么不能被钩取消息呢?估计就是他的exe权限要比所有的进程都高。window编程一定要注意权限!权限!权

2020-06-11 11:03:11 186

原创 打印机学习笔记

打印机处理器(PrintProcessor) BOOL bRet = TRUE; CHAR pDriverDirectory[MAX_PATH]; DWORD pcbNeeded; //获取打印机驱动程序位置 if(FALSE == GetPrintProcessorDirectory(NULL, "Windows x64", 1, (LPBYTE...

2020-05-07 16:53:31 677

原创 关于编程的思考

1.模块化最重要的是对象,是执行业务的方法,用于描述流程,用于隔离。面向设计最重要的是类,是可扩展的具体功能,重点是可扩展。2.找到错误比解决错误更加重要,尽量在所有的错误分支上加印日志。3.3.1 如果一个新增的功能和现有的功能有很大程度相似,那么尽量采用扩展参数的方法,而非重新创建一个新的方法。3.2 对于容易忽略又也别重要的返回值、错误码,尽量使用引用获取而非函...

2020-04-24 19:33:48 146

原创 关于C++异常处理的思考

Java中有强制类型异常,但是C++中没有,其实强制类型异常任何语言都可以实现。例如在json11库中,解析json时,需要传递string& err作为参数,强制要求获取错误结果。在编程的时候,也是告诉程序员这个地方可能会出现异常,请一定要重视。程序员可以将当前的异常传递给调用的函数,继续执行,或直接返回。在Golang中,err作为很多函数的返回值,要求必须接收。这在一定程度上都模仿的...

2020-04-19 11:20:34 154

原创 编程过程中对模块的思考

封装,本质上是采用物理的方式(文件&包)或者抽象的方式(类&函数)对过程做划分。封装之后,形成一个个模块,对模块的划分,原则上是依赖于业务的关联度。一般来说,模块更习惯使用逻辑单位表示模块,而尽量不关注于容器。模块的最小单位是类。有两个类共同完成一个功能,称之为功能域。功能域内模块和模块之间的关系称为“伪模块”,功能域对外称之为“真模块”。伪模块之间尽量遵从功能单一...

2020-04-18 11:16:51 207

原创 记录windows server 2012配置nuget的过程

1. 创建api net web项目,空项目,添加nuget.server依赖。注意:创建的项目选择.net 4.6,nuget.server也是依赖于.net 4.6不要有版本的偏差。2. 创建iis服务器,应用程序池中的任何配置都不需要改动。访问网站时,网站的路径指向User中的路径,我选择的路径是:3. 修改nuget的目录的权限,添加everyone用户,所有控制权限。...

2020-03-13 14:23:59 657

原创 23种设计模式学习笔记

1. 单例模式饿汉式:使用静态成员变量实现。优点:实现简单,线程安全。缺点,在类加载时就会被实例化,非懒加载。懒汉式:使用普通成员变量实现。优点:懒加载。缺点,必须使用线程同步确保线程安全,效率低。双重检查:实现稍微麻烦一些。优点:先在非同步代码中判断是否被实例化,然后在再同步代码中做二次检查。2. 工厂方法(简单工厂):在函数中通过传入类型返回不同子系统的对象。这种方式可以隐藏上...

2020-03-08 15:34:52 93

原创 设计模式学习笔记

设计模式最重要的是六大原则:(1)单一职责原则:一个类只做一样事情。(2)接口隔离原则:一个类对另一个类的依赖应该建立在最小的接口上。说的是如果一个类依赖于另一个接口,这个接口应该设计的尽量的小,如果已存在一个非常大的接口,应该拆分成多个接口。(3)依赖倒转原则:1. 高层模块不应该依赖底层模块,两者都应该依赖其抽象。2. 抽象不应该依赖细节。3. 细节应该依赖抽象。高...

2020-01-16 16:48:35 74

原创 创建QtQuick DLL和引用DLL可能面临的路径问题以及解决方案。

路径问题分为Qt搜索库路径和QtQuick组件路径。#include <QGuiApplication>#include <QQmlApplicationEngine>#include <QQuickView>#include <windows.h>#include <Poco/Path.h>#include <Po...

2019-12-18 01:11:42 474

原创 CDT使用VC++编译器

最近在学习Poco,里面大量的使用using 命名空间写起来很麻烦,恰好eclipse提供了这个功能,并且cdt相比Vistual Stdio,在智能提示、自动添加类等要比VS更好用,如果你的项目不是完全依赖与MFC,以及其启动的代码自动生成功能,使用CDT可以说非常方便。废话少说,记录下流程:1. 下载eclipse。2. 安装cdt插件:这一步非常重要,因为eclipse自己提供的cd...

2019-12-05 16:31:09 355

原创 NodeJs Es6学习笔记

目录Nodejs文件读写字符串处理容器子进程创建创建ES6项目Nodejs文件读写 正常文件读取 const fs = require('fs')fs.readFile('hello.txt','utf-8', function(error, data){ if(error){ return console.log('读取文件失...

2019-10-02 23:59:18 67

原创 并发编程

目录一、Python多线程编程二、Python多协程编程三、Python多进程编程四、C++多线程编程五、C++多协程编程六、C++多进程编程当前的应用程序很少是单线程的,从按钮的点击响应,到网络数据的请求,都需要用户无感知的处理,如果处理的过程不是非常迅速,那么就会对UI线程产生不良影响。并发编程的方式主要有:多线程、多协程、多进程三种方式。多线程可以充分利用C...

2019-10-02 23:56:02 117

原创 Webpack项目模板配置浅析

目录webpack基本配置相关loader研究相关plugin研究webpack-cli打包配置 webpack基本配置 打包最简单的CSS文件 const path = require('path');​module.exports = { entry: './entry.js', output: { path: pat...

2019-10-02 23:47:48 162

原创 Vue前端框架学习笔记

目录一、Vue.js入门二、Vue.js类、样式、表单和事件绑定三、Vue.js组件开发四、vue-router开发SPA应用五、vuex应用状态管理六、在线机票预订SPA实战需求说明一、Vue.js入门 MVVM架构 传统的MVC架构: View:获取Model的数据,当用户触发事件响应时,触发控制器 Control...

2019-10-02 23:43:08 116

原创 TypeScipt基础教程

目录一、基础类型二、变量声明三、接口四、类五、函数六、泛型七、枚举八、类型推断九、类型兼容性十、高级类型十一、Symbols十二、迭代器和生成器十三、模块一、基础类型//*************************************// Booleanlet isDone: boolean = false;//****...

2019-10-02 23:35:40 197

原创 QML Book技术文档

目录认识QML开始学习QML快速入门基本元素布局输入组件动态元素模型-视图-代理画布元素粒子模型着色器效果多媒体网络存储动态QML认识QML 首先,以可以旋转的风车作为例子 首先,整个窗口包括背景、风车、风车杆,点击风车的时候,会开始旋转 Qt界面设计工具可以实现基本的属性设置,但是对于动画、定时器等功...

2019-10-02 23:31:47 464

原创 Python核心编程(3.8学习笔记)

目录基本使用字符串字符的使用列表斐波那契数列的初始子序列其他流程的控制语句数组set、字典模块标准模块包输入输出错误和异常类标准库简介标准库简介(2)基本使用1. 注释# this is the first comment2. 使用number类型spam = 1print(spam)3. 使用raw字符串pat...

2019-10-02 23:11:56 285

原创 PyQT5基础(学习笔记)

目录一、使用Qt Designer二、使用QMLPyQt5借助Python的大量的函数库,对数据的获取和处理功能,补充C++这方面的不足一、使用Qt Designer 我的第一个PyQt5程序 PyChram配置: QtDesigner C:\Users\20582\AppData\Local\Programs\Python\Python...

2019-10-02 23:01:30 89

原创 Process Monitor使用教程

目录过滤器过滤器 ProcessName 排除条件 is:相当于=== is not:相当于!==(谨慎使用) less than:相当于< more than:相当于> begin with:字符串以*开始 ends with:字符串以*...

2019-10-02 22:55:42 1753

原创 mfc基础教程(学习笔记)

目录mfc基础教程第一章:CDC的使用第二章:文本编程第三章:菜单第四章:对话框第五章:对话框(二)第六章:样式第七章:创建兼容DC第八章:图形的保存与重绘第九章:文件第十章:文档与串行化第十一章:网络编程第十二章:多线程与聊天室程序的创建第十三章:线程同步与异步套接字编程第十四章:进程间通信第十五章:ActiveX控件第十六章:...

2019-10-02 22:53:32 1677

原创 libboost-python(学习笔记)

目录一、Hello word二、包装类对象一、Hello word 安装boost boost版本:BOOST-1.67 修改boost/python/detail/config.hpp中的bug //#define BOOST_LIB_NAME boost_python##PY_MAJOR_VERSION##PY_MINOR_VERSION#define _BO...

2019-10-02 22:28:45 282

原创 关于类的职责的一些思考(2)

之前和导师讨论过有关模块和子模块的处理。在vue中,模块形成模块树的概念,在c++编程中也同样,但是,当子模块希望向外部传递事件的时候,就需要一层一层的向外传递,这种传递有时候造成设计上的麻烦。对于数据层,如果一个模块都需要使用,可以将该模块作为一个模块内部使用的“全局变量”存储,同样,对于事件层,也可以使用模块内部的“全局事件”存储。对于模块内部的存储变量,其已经作为模块的特征,内部的的模块...

2019-09-02 09:58:50 157

空空如也

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

TA关注的人

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