自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 Linux高并发服务器开发(十三)Web服务器开发

创建socket,得到监听文件描述符lfd——socket设置端口复用——setsockopt()绑定——bind()设置监听——listen()创建epoll树,得到树根描述符epfd——epoll_create()将监听文件描述符lfd上树——epoll_ctr(epfd,epoll_CTL_ADD…)\while(1)// 等待事件发生continue;break;// 下面是有事件发生,循环处理没一个文件描述符for(i = 0;i<nready;

2024-07-05 21:06:45 620

原创 Linux高并发服务器开发(十二)libevent

相当于epoll中红黑树的节点event_base 就是调用不同的多路IO接口判断事件是否已被激活,核心调用的是epoll,同时支持select和poll获得当前使用的IO多路复用的方法。

2024-07-05 15:36:44 593

原创 Linux高并发服务器开发(十一)UDP通信和本地socket通信

创建成功后,会在内核中创建缓冲区。

2024-07-03 17:44:08 259

原创 Linux高并发服务器开发(十)反应堆模型和线程池模型

先加锁 然后判断任务池中任务是否已满 若已满,则调用pthread_cond_wait阻塞等待,若未满,则往任务池中添加任务,添加完任务之后调用Pthread_cond_signal同志子线程去取任务。先加锁,然后判断任务池中是否有任务,若任务池中没有任务,则调用pthread_cond_wait函数等待主线程添加任务。若任务池中有任务,则取任务并处理任务。弱任务池已满,主线程应该阻塞等待子线程处理人物,此时主线程需要阻塞等待。弱任务池空了,子线程应该阻塞等待,等待主线程池往任务池中添加任务。

2024-07-03 16:13:31 1121

原创 Linux高并发服务器开发(九)Tcp状态转移和IO多路复用

优缺点优点:跨平台缺点:文件描述符1024的限制 由于FD_SETSIZE的限制只是返回变化的文件描述符的个数,具体哪个变化需要遍历每次都需要将需要监听的文件描述集合由应用层拷贝到内核。

2024-07-02 22:07:39 1005

原创 Linux高并发服务器开发(八)Socket和TCP

服务器向客户端发送 第一次发送512字节,当客户端还没读取完全时,又发送了1024个字节,则会发生粘包。mss 最大报文长度,一般出现在三次握手的前两次,用来告知对方发送数据的最大长度。提取链接得到一个已连接的套接字,接下来用这个已连接的套接字和客户端通信。每一次读取数据后,回ack报文,报文中会携带当前缓冲区大小。tcp是打电话的模型,建立连接 使用连接 关闭连接。关闭,半关闭(只关闭应用层的收发,但底层还能收发)从已完成链接队列提取链接。bind 绑定端口号,红区有多大,还剩多少,

2024-07-01 21:18:42 570

原创 Linux高并发服务器开发(七)网络基础

(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。1.物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。

2024-06-29 13:45:49 500

原创 Linux高并发服务器开发(六)线程

进程是CPU 分配资源的最小单位, 线程是系统调度的最小单位。如果复制对方的地址空间,就产生出一个进程如果共享对方的地址空间,就产生一个线程。

2024-06-28 19:19:08 474

原创 Linux高并发服务器开发(五)终端和守护进程

比如说服务器,如果关掉终端后,服务器也会被关闭,这是不可以接受的。独立于控制终端,周期性的执行某种任务或等待某些触发条件。进程的集合叫进程组 也称为作业。

2024-06-27 18:46:04 190

原创 Linux高并发服务器开发(四)进程间通信

进程是独立的资源分配单元,不同进程之间的资源是独立的,不能直接在一个进程中直接访问另一个进程的资源。主要通信机制。

2024-06-27 16:49:30 745

原创 Linux高并发服务器开发(三)进程

程序是静态的,进程是动态的。读时共享,父子进程如果没有改数据,则父子进程都会共享一个空间,没有必要拷贝在自己的空间里。进程运行时,内核为每一个进程分配一个PCB,用于维护进程的相关信息,Linux内核的进程控制块是task_struct。公司相当于操作系统,部门相当于进程,公司通过部门来管理(操作系统通过进程管理)各个部门中的员工。调用进程没有子进程,就立即返回,若子进程结束,函数会立即返回,并且回收所有资源。写时拷贝,如过父子进程需要更改数据,则会拷贝到自己的空间,然后进行更改。

2024-06-25 19:34:53 720

原创 Linux高并发服务器开发(二)系统调用函数

根据系统调用,获取驱动信息、CPU的信息等。dup就是相当于配了一把新钥匙,但锁还是只有一个,即共享一个文件表。复制后,比如fd1 和fd3,都指向同一个文件表,找到同一个文件。用户态:不能随意访问内存、不能开闭中断以及切换运行的特权级别。Close 函数 :关闭一打开的文件,释放资源,刷新缓存区。进程表项 v节点指针指向v节点表,然后找到在磁盘中的位置。设置缓冲区,减少io系统调用的次数,提高访问效率。如果出错,会替换这个值,并报错。打开文件后,返回一个文件描述符。Open函数, 返回文件描述符。

2024-06-25 15:29:41 346

原创 Linux高并发服务器开发(一)GCC和Make

动态链接:链接器在链接时仅仅建立所需库函数的之间的链接关系,在程序运行的时候才将所需资源调入。缺点:生成程序比较大,需要更多的系统资源,在装入内存时会消耗更多的时间。静态连接:由链接器在链接时将库的内容加入到可执行程序中。优点:对运行环境依赖性较小,具有较好的兼容性。简化程序的升级,有较小的程序体积。库函数需要更新,必须重新编译。优点:在需要的时候才会调入。依赖动态库,不能独立运行。第一步预处理,生成.i。第二部生成汇编文件.s。第三部生成目标代码.o。动态库依赖版本问题严重。第四部生成可执行文件。

2024-06-24 17:08:39 205

原创 C++11多线程编程

C++11 多线程编程-小白零基础到手撕线程池因为临时变量在主线程结束后临时变量会被直接释放,所以出错std::ref 传递引用类型 使用右值引用。

2024-04-17 23:54:48 719

原创 Unity3D学习之商业级资源热更框架

先打包游戏图片文件夹,再打包游戏特效贴图文件夹,最后打包预制体AssetBundle包在hallwindow 添加一个数组,存放其依赖项的地址,然后加载各依赖项的单独的包释放A时,检测依赖的计数,如果还有人引用则不释放C释放B时,因为A已经被释放,所以引用计数为0,所以同时释放BC。

2024-03-21 16:43:21 1051

原创 Unity3D学习之中级商业级帧同步卡牌放置手游

计算技能攻击的目标。

2024-03-13 16:53:15 1016 1

原创 Unity3D学习之XLua实践——背包系统

包括背包系统、VSCode环境搭建。

2024-03-07 22:53:21 884

原创 Unity3D学习之Lua热更新解决方案(二)XLua

在资源服务器下载下载完成后放入游戏客户端建议在Lua中要使用的类都加上该特性 可以提升性能。

2024-03-02 20:38:43 1275

原创 Unity3D学习之数据持久化——Json

注释 // 或者 /**/

2024-02-23 17:33:18 671

原创 Unity学习之Unity中的MVC思想

模型 —— 数据视图 —— 用户界面UI控制器 —— 用户交互的业务逻辑。

2024-02-22 17:58:06 944

原创 Unity3D学习之Lua热更新解决方案(一)AB包和LUA语法

-面向对象实现--万物之父 所有对象的基类 Object--封装--实例化方法--给空对象设置元表 以及 __indexreturn objend--继承--根据名字生成一张表 就是一个类--设置自己的“父类”--给子类设置元表 以及 __indexend--申明一个新的类--成员变量--成员方法end--实例化对象使用obj:Move()--申明一个新的类 Player 继承 GameObject--多态 重写了 GameObject的Move方法。

2024-02-22 14:35:40 2033

原创 Unity3D学习之UI系统——使用UGUI制作游戏登陆界面

设置 Canvas不被删除,将eventSystem和Camera(渲染UI的)拖入Canvas。在LoginPanel中提供方法设置用户名和密码(用于注册成功后,自动填写。修改一下显示面板的逻辑,如果已经创建,则不需要再显示面板。在LoginData里增加一个记录上次登陆服务器的内容。串联登陆面板,在登陆面板的点击注册事件中添加显示。重写ShowMe函数,让其显示的时候显示服务器。在点击进入游戏后,存储选择的服务器信息。在创建新面板时,得到Canvas对象。设置一个事件,让淡出完成时删除自己。

2024-02-20 15:44:12 3202

原创 Unity3D学习之UI系统——UGUI

创建专门的摄像机渲染UI并让主摄像机不渲染UI层。

2024-02-05 16:53:12 2613

原创 Unity学习之Unity核心(一)2D相关

unity核心部分一般设置为2048即可点击一个点,可以选择在精灵形状中添加的图处理夹角添加后会自动处理夹角内容如果是不封闭图形需要自己创建 ,从start 到 end。设置不同角度的。

2024-02-01 14:42:50 1251

原创 Unity3D学习之UI系统——用NGUI制作游戏登陆界面

不是由玩家产生的 已经由设计者配置好的数据 在游戏中读取到配置文件,再通过配置文件内容改变游戏中的部分内容。玩家登陆后,如果没有上次选择服务器,会直接跳转到选择服务器界面,如果选择了就跳转到进入游戏界面。创建成功后,给list里增加刚创建的Gameobject。更新 点击左侧按钮后的事件监听,点击后更新右侧面板更新。创建初始化时调用的函数,用于读取单个服务器的数据。在LoginData中有一个上次登陆的ID的属性。创建函数 记录点击的是哪个服务器到哪个服务器。会省略一些东西,可以看我的NGUI的博客。

2024-01-30 09:52:15 2427

原创 Unity学习之坦克游戏制作(3)结束场景的制作

由于排行榜功能,先在GameScene界面提供玩家一个输入玩家名以便保存到排行榜的界面。(如果有割裂感建议从1开始看)加入一个输入的预设体,再删除一个Button。在BeginScene中一进来就把光标锁定。直接从QuitPanel中提取部分拿来用。在BeginPanel中加一句。点击Build 选择文件夹即可。在玩家死亡时处理窗口弹出。

2024-01-26 09:33:46 693

原创 Unity3D学习之UI系统——NGUI

资源商店搜索学习版自行搜索导入即可创建UI管理渲染相关内容UI模式是根据组件深度处理事件World模式 根据距离著摄像机的远近来响应排序(这两个的主要区别在 眼睛看到在前面的,进行交互时UI模式点击看起来在被前面的窗口压在后面的,但被压在的那一层层级更高,会先相应被压在下面的UI)EventMask 决定哪个层级接受事件Debug就是测试时,你点击这个UI,会打印出来交互的时什么对象点击New 新建选择 加入图集的文件创建图集,一般存放在Resources文件夹内,方便读取。

2024-01-26 09:32:27 2556

原创 Unity学习之坦克游戏制作(2)游戏场景的制作

直接从BeginScene中把root中的Setting面板复制,然后在GameScene的root中复制。但这时候还是会报错,在点击关闭的时候,之前的逻辑是显示主菜单的界面,但这里没有主菜单,所以报错。拖入一个固定不动的敌人,让其头部自动旋转,在UI设计时我们已经写过头部旋转相关。因为受伤函数需要知道 谁打得我,所以在武器脚本中关联下谁发射的子弹。改变一下武器的预设体,由于不想动原有预设体,所以创建新的预设体。在打开游戏设置 和 退出游戏面板的时候,暂停时间的增加。

2024-01-25 23:47:03 1703

原创 Unity3D学习之数据持久化——XML

最终达到的效果大概就是 把对象转化成可传输的字节顺序这里会有问题,如果对象初始化了值,再反序列时,不会覆盖初始化值了的属性。所以会出现重复读取所以最好不要对类进行初始化,在需要序列化的类继承IXmlSerializable需要实现三个函数第一个函数直接返回null就行在函数中可以自定义序列化 的规则。

2024-01-22 17:36:27 1190

原创 Unity学习之坦克游戏制作(1)开始场景的制作

如果不初始化的时候设置,不管之前的设置会怎么样,游戏一开始就会播放音乐,只有打开设置面板后才会根据设置改变音乐,所以在初始化脚本的Awake函数中增加一句。如果第一次进入游戏没有音效数据,所以所有的数据要不是false 要不是0 ,所以在音效数据类中增加一个是否是第一次加载数据的标识。这个基类的最大作用,就是可以直接传类名给单利模式,而不需要在unity通过名字寻找到脚本的API进行面板的操作。这部分感兴趣的可以去看我博客的GUI部分,但建议大家把学GUI的时间拿来学UGUI。

2024-01-21 19:28:03 1281

原创 Unity3D学习之Unity基础

需要传入参数的函数需要包裹否则会报错写一个函数包裹不能直接调用其他对象的函数,也是需要包裹在无参函数中。

2024-01-20 16:00:08 1179

原创 Unity3D学习之Unity基础——3D数学

从这几部分学习。

2024-01-18 14:49:03 1777

原创 Unity3D学习之UI系统——GUI

设置Screen Type和Center Type自定义的style也会受影响。

2024-01-17 15:15:12 1901

原创 Unity3D学习之数据持久化——PlayerPrefs

获得了对应的key根据字段类型 来判断 根据哪个API判断修改游戏逻辑读取存档执行在执行save方法的时候,进行存盘。

2024-01-15 16:12:27 1379

原创 Unity学习之坦克游戏制作(0)必备知识点

使用版本Unity 2022.3.8f1c1。

2024-01-09 21:15:28 430

原创 C#中的值和引用笔记

在代码中直接转到内部F12如string类型值类型int。

2024-01-05 14:59:24 466

原创 数据结构学习笔记(九)排序

这部分没有基于书上学习,基于知乎上一篇文章必学十大经典排序算法,看这篇就够了基础进行学习.关于GIF都是网上搜索的,如果侵权私我我直接删除.图中所有算法都默认以从小到大的顺序排序。

2023-12-26 16:04:56 1204

原创 数据结构学习笔记(八)图

本系列笔记基于 清华大学出版社的《数据结构:用面向对象方法与C++语言描述》第二版进行学习。

2023-12-25 10:47:15 871

原创 数据结构学习笔记(七)搜索结构

本系列笔记基于 清华大学出版社的《数据结构:用面向对象方法与C++语言描述》第二版进行学习。int data;// 二叉树节点类// 左右子女public:~BST() {};= NULL)?// 赋值private:// 停止标志// 搜索// 置空// 打印// 复制// 求最小// 求最大// 递归插入// 删除。

2023-12-19 15:22:27 949

原创 数据结构学习笔记(六)集合

本系列笔记基于 清华大学出版社的《数据结构:用面向对象方法与C++语言描述》第二版进行学习。

2023-12-12 16:25:18 128

空空如也

空空如也

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

TA关注的人

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