IOC
Xml 配置 Bean
结构
xml配置方式.png
配置样例
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455<bean id = "UserDao" name ="aaa,bbb"class = "com.test.dao.impl.UserDaoImpl" scope="singleton" lazy-init="true"init-method = "init"destroy-method = "destroy"autowire = "byType" or "byName"/> <constructor-arg name="age" value="18"> ...
Skyout
未读环境配置
前端部分:存在框架代码可以直接使用
后端部分:
IntelliJ IDEA
尽量不要使用社区版,后期一些功能可能无法使用。(可以淘宝,或者破解,你们懂的)
项目需要JDK1.8(最好使用,否则可能出现一些奇奇怪怪错误),我使用华为的镜像站下载的JDK,版本后缀是201,网络上有相关的环境配置教程
我用的Maven版本是3.9,这个需要在配置JDK环境后配置(否则可能无法查看是否工作,至少我是这样),网上有相关配置教程
检查Java和Maven相关是否配置成功 数据库:需要下载MySQL Service和MySQL
Workbench可用可不用(在IDEA中可以链接数据库),数据库已经被准备好了。
Redis:资料中有,可以参考 微信小程序:资料中有,可以参考
注意事项
在项目文件中可以更改Maven和所在仓库,初次更改后打开项目,会自动下载,当然你需要一些魔法
项目中会涉及oss阿里云和微信小程序的AccessKey Secret
注意一定、一定要慎重Push到公开的github仓库中,要避免你的AccesKey
Secret泄露,该内 ...
智能指针
RAII与引用计数
引用计数这种计数是为了防止内存泄露而产生的。
基本想法是对于动态分配的对象,进行引用计数,每当增加一次对同一个对象的引用,那么引用对象的引用计数就会增加一次,
每删除一次引用,引用计数就会减一,当一个对象的引用计数减为零时,就自动删除指向的堆内存。
在传统 C++
中,『记得』手动释放资源,总不是最佳实践。因为我们很有可能就忘记了去释放资源而导致泄露。
所以通常的做法是对于一个对象而言,我们在构造函数的时候申请空间,而在析构函数(在离开作用域时调用)的时候释放空间,
也就是我们常说的 RAII 资源获取即初始化技术。C++11
引入智能指针的概念,让程序员不再需要关心手动释放内存。使用它们需要包含头文件memory
。
std::unique_ptr
std::unique_ptr
是一种独占的智能指针,它禁止其他智能指针与其共享同一个对象,从而保证代码的安全。
1234567std::unique_ptr<int> pointer = std::make_unique<int>(10); / ...
类
面向对象与面向过程
面向对象和面向过程是一个相对的概念。
面向过程是按照计算机的工作逻辑来编码的方式,最典型的面向过程的语言就是c语言了,c语言直接对应汇编,汇编又对应电路。
面向对象则是按照人类的思维来编码的一种方式,C++就完全支持面向对象功能,可以按照人类的思维来处理问题
举个例子,要把大象装冰箱,按照人类的思路自然是分三步,打开冰箱,将大象装进去,关上冰箱。要实现这三步,我们就要首先有人,冰箱这两个对象。人有给冰箱发指令的能力,冰箱有能够接受指令并打开或关闭门的能力。
但是从计算机的角度讲,计算机只能定义一个叫做人和冰箱的结构体。人有手这个部位,冰箱有门这个部位。然后从天而降一个函数,是这个函数让手打开了冰箱,又是另一个函数让大象进去,再是另一个函数让冰箱门关上。
从开发者的角度讲,面向对象显然更利于程序设计。用面向过程的开发方式,程序一旦大了,各种从天而降的函数会非常繁琐,一些用纯c写的大型程序,实际上也是模拟了面向对象的方式。
那么,如何用面向过程的c语言模拟出面向对象的能力呢?类就诞生了,在类中可以定义专属于类的函数,让类有了自己的动作。回到那 ...
基本特性
程序的执行过程
内核虚拟内存——内核使用
栈区——程序运行时用于存放局部变量,可向下延展空间
内存库的内存映射
堆区——程序运行时用于分配malloc和new申请的区域
可读写区——用于存放全局变量和静态变量
只读区——存放程序和常量等
未使用
静态变量区
静态变量:一些局部作用,寿命很长的变量
全局变量:字如其名,全局作用
new 关键字
在分配单个对象的内存时:
当对象是普通变量时,可以分配对应的内存
当对象是类对象时,会调用构造函数,如果没有对应的构造函数,就会报错。
在分配数组对象内存时:
对于普通变量:可以使用“()”将所有对象全部初始化为0。
对于类对象,有没有“()”都一样,均使用默认构造函数,如果没有默认构造函数就会报错。
12345678int* a = new int(100); //分配为普通变量,同时初始化delete a;//记得释放空间std::string* hello = new std::string("你好,世界");delete helloin ...
一、游戏引擎与图形学基础
游戏引擎
游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。
渲染基础
现实与CG世界的光照原理:现实中光源发出光线,打到物体再反弹给眼睛,我们才看见了世界。CG世界也是一样,需要有个光源,发出光线,照亮场景。场景是一个个由三角面组成的模型,面越多,图形越精致。还需要有个摄像机,摄像机前方是一个屏幕,将模型投射到像素,就得到了一张图像,这就是渲染。
光栅化渲染:投射过程从左到右,从上到下,一行行如窗户栅栏,这种渲染方式就是光栅化渲染。
其他相关概念:包括Gouraud插值、纹理映射(Texture
mapping贴图) 。
二、画面逼真度与光照模拟
画面不逼真的原因
渲染是光的艺术,画面假一定是光出了问题。光线没有单位,模糊的强度度量,最开始是一,被物体反弹后会衰减,衰减多少,由材质决定。
1. 不同材质的光照模型 -
lambert材质:模拟粗糙角度的漫反射,
,其中I是入射光 ...
一、整体架构概述
线程池是一种并发编程的设计模式,核心目的是管理一组预先创建的线程,避免在程序运行过程中频繁创建和销毁线程带来的性能开销。通过线程池,可以将任务存储在任务队列中,让线程池内的线程从队列中取出任务并执行,实现线程的复用,提高程序的执行效率和资源利用率。
笔记基于Github上一个开源项目完成。
二、架构详细组成部分
(一)线程池类(ThreadPool)
1. 成员变量
成员变量名
类型
作用
workers
std::vector<>
存储线程池中的所有工作线程。线程创建后添加到该向量,便于后续管理,如析构时通过
join 操作等待线程结束。
tasks
std::queue<std::function<void()>
作为任务队列存储待执行任务。新任务添加到队列尾部,工作线程从头部取任务执行,遵循先进先出(FIFO)原则。
queue_mutex
std::mutex
互斥锁,保障任务队列的线程安全。因任务队列可能被多线程同时访问(如添加和 ...
Recursion
关于recursion,CS106B给出了一个很好的模板。
self-similar 问题用递归解决是一个良好方向。 123456789101112if (The problem is very simple) {Directly solve the problem.Return the solution.} else {Split the problem into one or moresmaller problems with the samestructure as the original.Solve each of those smaller problems.Combine the results to get the overallSolution.Return the overall solution.}
backtracking在课程和作业中也有体现 1234567891011if (problem is sufficiently simple) { return whether the ...
回顾
七八月:在家摆了两个月,考驾照,考到科二,加了一个游戏文案小组群。
九月:到学校,高考砸了,被调剂。适应学校同时,开始对未来打算,也多亏了之前上网冲浪的经历,接触了些网络学习渠道,开始CS50。做的相当痛苦,写不出了problem。
十月:反正就是磨,把cs50磨完了,感觉自己还是太笨了,磕磕绊绊,什么都不会写。其间,还到牛客上做题·写了些简单题(我,当时,太蠢了),力扣上写了些简单题,感觉什么都没学会。尝试了许多方向,在写了几期游戏文案活动后,很挫败。(理想与现实的偏差,写不来东西,很痛苦,感觉自己不适合写这东西,很难是现在还有什么创作热情)
十一月:又跑去学了些其他东西,摸了些数字模拟电路的皮毛。开始看51和stm32单片机教程,51速通,stm32学到pwm,又去学了EDA,画电路板,摸了些皮毛,会简单画画电路板,上嘉立创白嫖了几份。开始cs106x
十二月:折磨,cs106x推进相当艰难,还是不会写,痛苦,我一直怀疑自己是否适合学着东西。折腾来折腾去,没一个主线,反正就是在试。力扣,代码随想录上又开始做了些题,还是太笨了,做不出来。期末要到了,准备些考试。
...