自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

cocodeveloper

Collect copy code

  • 博客(61)
  • 收藏
  • 关注

原创 利用函数指针实现回调

以C语言为例,我们在 main.c 文件中实现了两种收费标准的具体计算过程——”免费用户和VIP用户的收费标准“然后,我们只需要把收费标准作为参数,传给回调注册函数,告诉 price.c 文件我们需要应用的收费标准。对于 price.c 文件,声明函数指针全局变量、实现回调注册函数、实现计算费用的函数。最后,调用 price.c 文件暴露出的外部函数,就能相应地计算出费用。回调函数在编程中非常地常见,它很好地体现了。两文件一起编译,运行,看到结果。

2022-09-06 19:18:57 387 1

原创 Linux系统基础知识--大纲

Linux系统基础知识大纲,用作复习回顾。

2022-09-04 09:33:00 233

原创 ARM体系结构基础知识--大纲

初步了解ARM体系结构,并用作复习、回顾。这一部分MCU工程师必学,结合开发板、芯片手册去学并且要编程实践。

2022-09-04 09:28:11 271

原创 环境实时监控系统的开发日志

大概是18年8月份时做的嵌入式小项目的简单的日志。

2022-09-04 09:16:52 253

原创 5原型模式

这跟工厂模式可能有点类似,就是传递一个敌怪对象作为原型,然后由生成器调用这个敌怪类的复制方法,从敌怪原型对象中克隆出一个新对象。它们有各自的属性,因此我们要生成对应三种敌怪的生成器类。这样的写法,代码结构臃肿,每一个敌怪,都要定义一个对应的生成器类。原型模式的关键思想,是让一个对象可以产生与它自己相似的其他对象。那么,有没有办法,用一个生成器类,生成多个敌怪生成器变量呢?假设一个场景中,我们需要生成很多数量的各种种类的敌怪。另外,原型也常常用在游戏数据的建模中。还可以使用泛型继续优化。...

2022-08-28 12:27:20 104

原创 c#基础0-类型、起步

个人整理和记忆C#语言基础

2022-08-28 08:12:38 120

原创 MacOS常见问题

记录使用Mac时遇到的几个问题。

2022-08-17 22:18:18 338

原创 计算机图形学--笔记3

GS101图形学入门,课程笔记,往后难度上升,听不懂需多查资料。

2022-08-17 15:40:00 198

原创 unity-shader-2

unity的入门、总结学习

2022-07-30 09:15:42 595

原创 计算机图形学--笔记2

GS101图形学入门--个人学习笔记--前面已经做了模型变换、视图变换、投影变换、视口变换和光栅化,然后物体还缺少了光照、颜色和阴影…

2022-07-25 15:27:22 891

原创 计算机图形学--笔记1

三大浪漫:编译原理、操作系统、图形学图形学应用领域:游戏、电影、动画、设计、可视化、VR/AR、数字成像、仿真、UI、字体图形学中的实时,指帧速率至少为 30 FPS ,低于 30 则是离线课程内容:光栅化、曲线与网格、光线追踪、动画与仿真一般表示从原点到某一点的方向和长度的变量终点坐标减去起点坐标 AB⃗=B−A\vec{AB}=B-AAB=B−A 或 AB=B−A\mathbf{AB}=B-AAB=B−A向量本身具有平移不变性,移动整个向量,向量起点对齐坐标系原点后,向量方向、长度均不变向量的长度写作:

2022-07-19 12:13:28 374

原创 unity-shader-1

《unity shader入门精要》阅读笔记建议与 B 站录播的 Games 101 图形学入门 课程同步学习shader 着色器shader 是整个渲染流程的子部分,我们需要对渲染流程有所了解,才能写 shader 实现想要的效果渲染流程——在屏幕上生成或绘制一张二维纹理的过程unity shader 在原有的渲染流程上做了封装,对 shader 更进一步做了一层抽象,方便人们快速使用由一个三维场景或物体出发,最终生成一张二维图像的过程大体上,就是 CPU 把数据加载到显存、CPU 设置渲染状态、

2022-07-10 15:55:38 427

原创 2享元模式

书中的解释:我们需要渲染一片森林,森林有一千颗树,每棵树有相同的部分:树的网格、树的纹理和树叶的纹理每棵树又有不同的部分:位置、旋转、缩放等将相同的部分封装为一个类,只实例化一次;不同的部分封装为一个类,实例化一千次。在 Direct3D 和 openGL 的图形 API 中,分别提供第一个是将被多次渲染的公共数据块——共享的树的类的实例第二个是实例列表及其参数——一千棵树的实例(包含不同的位置、旋转、缩放)这样就渲染了一片森林享元模式的使用痕迹并不明显,如果不额外封装一个多个实例间共享的类,这看起来

2022-07-08 13:26:30 101

原创 unity基础4-常用插件

unity 的制作视觉效果的插件,例如制作光剑、法杖、爆炸等等各种视觉效果。用于 3D 建模,地图绘制调整地形、涂抹颜色、快速绘制 3D 物体等功能显示详细 3D 网格快速使用多种摄像机CM vcam1 固定视角的虚拟相机CM FreeLook1 第三人称相机、有三个圆形区域表示相机上、中、下三个圈的移动范围快速使用一些缓动效果如果代码提示中有红色波浪线,需要重新 setup 一下点一下 Unity -> Preferences -> ExternalTools -> RegenerateProject

2022-07-04 11:48:53 623

原创 unity基础6-旋转

unity 中文课堂 初级篇 12 节 位移和旋转非刚体的物体(不考虑物理效果),可以直接使用 translate 和 rotate 旋转绕着 Y 轴旋转另一种旋转,使用 LookAt 让物体的 Z 轴 始终指向另一个物体的位置unity 中文课堂 中级篇 15 节 四元数unity中位置以向量的形式存储,旋转以四元数 x y z w 的形式存储,为了方便管理和查看,inspector 窗口中显示的是旋转的欧拉角 x y z 的形式,表示围绕 x y z 轴旋转的角度。官方的轨道效应旋转的例子:使用四

2022-07-02 21:15:55 695

原创 3观察者模式

观察者模式最简单的例子,就是利用属性寄存器 getter 和 setter ,当人物的生命值变化时,自动更新 UI 。或者利用属性寄存器对生命值等属性的取值范围进行限制。对象池对于频繁创建、销毁的对象,常常使用对象池技术进行优化,例如游戏中的射弹、粒子效果等。基本用法就是使用栈、链表或队列等数据结构,预先生成物体并保存,使用时从对象池中取出一个并激活 active,使用完后禁用 unactive 而不是直接销毁 destroy,当对象池中的物体不够时,才额外生成物体。 unity 中自带了对象池 Ob

2022-07-02 11:29:51 341

原创 1命令模式简介

参考阅读1参考阅读2命令模式是对于我们正常使用 按下按键–触发人物移动 的逻辑中间,增加一层解析层,处理不同按键对于的控制逻辑,还可以方便地实现命令的撤销功能以命令行程序为了,模拟一下按键控制人物移动的情况命令类 Command 等下补充模拟人物控制器类 PlayerControllerProgram 基本逻辑:读取用户输入、打印信息PlayerController 的成员方法:处理输入到命令的执行或撤销 Input 、解析命令 GetCommand 、具体命令的操作内容 Fire MoveX 等命令基

2022-06-29 18:50:39 80

原创 0单例模式简介

单例模式是最简单的一种设计模型,当我们写一个游戏管理类 GameManager 时,我们希望内存中仅有一份该类的实例,就要用到类的静态成员以 unity 中继承了 monobehavior 类的 GameManager 类为例,只需要用保存一个静态成员变量保存该类的实例,每次要生成新的 GameManager 类时,如果已存在,则删除泛型单例模式 Singleton.cs...............

2022-06-29 18:35:56 137

原创 unity基础5-优化策略

推荐阅读drawcall 就是 CPU 向 GPU 发送绘制命令的接口,不同材质的物体绘制在屏幕上时,都需要 CPU 调用图形 API ( OpenGL 或 direct3d )触发显卡绘制unity 中使用自动内存管理,分为堆区和栈区,处于栈区的内存回收是很快的,性能优化主要体现在堆区内存回收。堆内存分配的步骤:垃圾回收的操作步骤:何时触发垃圾回收:优化策略具体方法...

2022-06-29 18:04:47 214

原创 unity基础3-数据持久化

保存常用数据类型,可以在 inspector 窗口中查看,例如把怪物、玩家的属性保存成 ScriptableObject《麦田物语》系列中,把物品数据保存成 ScriptableObject 类似下面的做法然后就可以在 project 窗口中,右键创建 ItemData填写数据并使用 下面是 3DRPG 基础系列中《SaveManager.cs》保存玩家数据的例子保存键值对,但可以配合 JsonUtility 来保存对象再封装一层使用不同的操作系统有不同的保存路径使用官方的 JSON 包 Ne

2022-06-25 14:28:46 862

原创 unity基础2-编辑器拓展

官网文档使用 UI Toolkit 可以在 unity 中自定义一些 UI 工具,可以在运行时或编辑器状态下运行。例如,农场经营类游戏可以写一个物品编辑器 ItemEditor,卡牌类游戏可以写卡牌编辑器。官网也有案例。对于农场经验项目,写一个物品编辑器 (麦田物语课程) ,方便我们操作 CropDataList 数据库(scriptableobject),增、删、改物品数据。Editor Window 创建编辑器窗口UI Document可以用于创建物品的模板C#该文件是物品编辑器的主要脚

2022-06-25 11:38:02 1064

原创 unity基础1-事件执行顺序、自定义事件

在unity中,我们通过添加脚本来控制物体的行为,那么搞清楚脚本中事件的执行顺序就十分重要。详情参见官方文档最常用的几个生命周期函数是:部分代码片段来自 B 站麦扣老师的 3DRPG 课程的 playercontroller.cs 和 mousemanager.csAwake例如,获取组件的引用或者把当前脚本绑定的游戏物体,标记为切换场景时不删除OnEnable为某些事件绑定处理函数Update处理游戏的输入、状态的切换等OnDisable为某些事件注销处理函数OnDestroy自

2022-06-24 17:54:54 1524

原创 C#基础8-反射和依赖注入

反射可以在加载程序运行时,动态获取和加载程序集,并且可以获取到程序集的信息反射是在运行期动态获取类、对象、方法、对象数据等的一种重要手段主要使用的类库:System.Reflection核心类:通过以上核心类可在运行时动态获取程序集中的类,并执行类构造产生类对象,动态获取对象的字段或属性值,更可以动态执行类方法和实例方法等。下面是 B 站 c sharp 刘铁锰老师 第一期 依赖注入、反射相关章节中,一个模拟小动物发出叫声的玩具程序的例子。开发商公布 SDK ( dll ) 、一个存放 MOD 文件( dl

2022-06-16 16:09:28 659

原创 C#基础7-迭代器与协程

获取迭代器 如果当前已经迭代到最后一个元素时,返回 false ;否则 true ,迭代器迭代一次 当前迭代器指向的元素或者用 循环遍历可迭代的集合( IEnumerable )的每一个元素打印结果协程有了 c# 的迭代器,就能理解 unity 中的协程了参考阅读 B 站文章 unity 协程接下来一大段都是实现类似 unity 的协程的内容 参考知乎网友的文章用迭代器、双向链表、线程睡眠,模拟 unity 中协程的实现逻辑较为复杂,打断点调试几次才能理清主函数只需要开启协程,不断循环更新协程

2022-06-16 14:42:19 564 1

原创 C#基础6-文件IO和JSON

紧接上一章,从官网例子中学习简单的文件读写JSON序列化和反序列化需要用到 JsonSerializer Class导入 Json 包用命令行写个玩家类照搬官网的例子打印结果

2022-06-16 12:22:26 105

原创 C#基础5-异步

异步是编程中非常重要的概念, C# 实现异步的原理是由编译器将代码转换为状态机,跟踪代码执行到 await 时暂停以及后台作业完成时继续执行。下面举例 CPU 绑定代码 的异步情况:主线程:触发按键执行后台任务 -> 倒计时 -> 按任意键退出程序后台线程:进入 -> 倒计时 -> 退出创建一个异步任务并执行对于 I/O 绑定代码,等待一个在 async 方法中返回 Task 或 Task 的操作。对于 CPU 绑定代码,等待一个使用 Task.Run 方法在后台线程启动的操作。.........

2022-06-16 11:08:01 910

原创 C#基础4-笔试题1

斐波那契数列 最简单的递归,前两个数直接返回 1 ,之后的数值返回为前两个数之和瓶盖换汽水一共 A 元钱 购买单价 B 的汽水 每 C 瓶汽水的盖子又可以兑换一瓶汽水 一共可以买多少瓶?第一次购买汽水得到 A/B 瓶,剩余瓶盖 A/B 个第二次瓶盖兑换汽水瓶盖不足 C 个,不能兑换;瓶盖足够,得到 A/B/C 瓶,剩余瓶盖 A/B/C 个加上不足 C 的部分 A/B%C开灯问题一排灯共 n 个,第一个人将灯全部打开,第 2 个人关闭所有的第 2的倍数 个灯,第 3 个人...

2022-06-14 20:02:55 292

原创 C#基础3-值类型与引用类型、装箱与拆箱

推荐学习 B 站找的刘铁锰老师老师的 C# 入门视频C# 是强类型静态语言,声明变量时需要确定变量的类型,程序经过编译器编译后运行类型 决定了** 1. 变量在内存中占用的空间大小**,进而确定了** 2. 变量的取值范围**,例如 sbyte 表示有符号的 一字节大小( 8 位二进制位)的整数,取值范围为 -128 至 127取值范围可参考3. 确定了类型的继承关系 类型 4. 类型还会影响程序运行时,变量存储在堆区还是栈区;变量可以使用哪些操作符 += -= 操作符等简单值类型–整数类型 、字符类型、实

2022-06-14 17:32:28 185

原创 c#基础2-封装、继承、多态

创建解决方案创建类库创建命令行程序把类库和命令行程序加入解决方案中在命令行程序目录下,添加对类库的引用直接运行程序 在解决方案的目录下运行某个工程 Class1.csProgram.cs封装定义:按照某种逻辑关系,把一些字段、属性、方法封装为一个类,把数据相关的操作封装为不同的方法,是模块化的基础通过访问级别修饰符,在类、成员之间进行数据隔离internal 内部的 修饰类或成员只有在同一程序集的文件中,内部类型或成员才可访问程序集指的是以 .exe 或 .dll 为后缀名的文件本例中有 Hello.

2022-06-13 23:40:29 1208

原创 C#基础1-事件和委托

委托简单理解为一个函数类型的变量(引用类型),表示一个方法的引用。官网解释 delegate定义委托类型定义对应委托类型的处理函数实例化委托类型的变量一个委托可以绑定多个事件处理函数使用委托变量,调用委托对应的所有事件处理函数接口(interface)是约束某个类应该具备那些功能的一个集合,约束了类应该具备那些方法,便于类的管理和扩展,使用接口还能解决类的单继承问题。委托(delegate)是方法的一个集合,使用委托可以对这个方法集合进行操作,如 += 。在以下情况中使用接口:在以下情况中使用委托:事件是

2022-06-13 21:45:54 527

原创 趣图和文字

工作的意义If you ever think things might not turn out as well as you hoped, move on. There is so much else going on in the world that is at least as interesting as what you are doing, where you have a much better chance of making a difference, that spending t

2022-01-01 13:27:24 157

原创 部署nodejs项目并配置nginx反代

环境:腾讯云 centerOS 已安装宝塔面板如何在服务器通过宝塔面板部署node项目?宝塔网站管理页–“添加站点”把 node 项目的文件打包上传到站点文件夹,node_modules 无需打包,需要重新安装依赖项在站点目录下打开终端,安装 node 项目的依赖项大致用到以下命令:npm init -ynpm install urlparser,koa,xxxxx -d如果连接了数据库,需要再继续配置数据库在宝塔面板-安全里放行端口修改 nginx 配置文件在站点修改-配置文件里找到se

2022-01-01 12:58:55 2581

原创 在云服务器上安装FFMPEG

在云服务器上安装FFMPEG遇到的问题

2022-01-01 12:53:04 682

原创 前端入门——几个月的小总结

2021-4-14工作小结一转眼就到了2021年夏天,在汽车前装DVR项目熟悉两三个月过渡后,我开始了前端的学习。(个人学习背景:普本工科测控专业,大学期间搞单片机嵌入式,目前毕业约2年,入门前端约小半年)从基础的响应式页面,写HTML结构,写样式,写客户端交互JavaScript;期间也快速熟悉了node.js服务端JavaScript运行时,react native移动端app;近期入门微信小程序,云开发的功能特性还需要花去时间掌握。以下是一个学习期间简单的回顾,一些零散的代码碎片并未整理好(打算假

2021-04-14 10:18:35 338

原创 下载一般网页的视频

工具:Chrome浏览器,FFmpeg开始:1.某度百科或其他一般网页的视频①打开某度百科网页,可以看到网页中有一个视频可以播放②鼠标移到网页空白处,右键,弹出菜单选择“审查元素”②或者按快捷键Ctrl+F12③在右边弹出的窗口顶部,选择“网络”或“network”④找到中间XXX.m3u4文件,如果找不到,可能需要先点击播放视频或者刷新网页⑤如果没有m3u4文件而是.mp4文件,则直接双击或另存为或复制链接地址下载⑤鼠标移到m3u4文件,右键,复制链接地址⑥打开命令行执行ffmpeg

2020-09-13 11:01:52 2799

原创 关于Mac应用连接sql server的问题

概述:MacOS10.14,使用freetds库的C语言代码连接sql server远程数据库,插入中文数据,编码不匹配。freetds库官网http://www.freetds.org,下载freetds库=freetds-0.91.tar.gz进入目录usr/local下新建文件夹用于存放freetds。解压安装包,在解压后的目录里改配置root# ./configure --pref...

2018-12-03 11:16:28 2988

原创 macOS开发学习记录(1)

https://www.cnblogs.com/hecheng0314/p/4664175.html

2018-11-15 14:32:24 683

原创 macOS开发学习笔记 (12)附属窗口

参考:《cocoa 入门》第二版16章附属窗口环境:Xcode10目标:创建简单查看器告诉用户文本视图有多少字符过程:进阶:

2018-11-14 16:26:24 385

原创 macOS开发学习笔记 (11)保留用户默认设置

写一个小程序,用户输入信息后自动设置为默认,每一次启动程序都显示默认值。代码来自《cocoa入门第2版》(xcode3),以下是在xcode10下运行xcode3代码的差异。xcode3中新建工程后,需要自己建一个控制器对象;xcode10自动多创建一个viewcontroller;两者还有内存管理上自动引用计数的问题,xcode10要关闭自动引用计数模式才能编译通过alloc,retain等...

2018-11-13 16:17:03 283

原创 macOS开发学习笔记 (10) 本地化

国际化——一个程序能支持两种语言以上。本地化——程序界面显示的字符串随用户操作系统当前语言改变而改变。1.给项目增加语言支持选中工程文件,把target目标切换成本工程,选择info选项,找到localization,2.本地化字符串和故事板创建本地化文件时命名为Localizable,可选择2种文件.string和.storyboard。选择故事板文件,就可以在界面里修改字符串为中...

2018-11-13 11:42:50 603 1

空空如也

空空如也

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

TA关注的人

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