个人博客导入
文章平均质量分 88
博客地址: cxx001.gitee.io
超級码力
Keep Reading , Keep Writing , Keep Coding.
展开
-
1553B板卡详解
1553b板卡主要应用于航天航空工业领域,它的数据传输结构有点类似集中分布式服务器的设计,分为BC、RT、BM三类部件,BC有且仅有1个,类似我们的master管理服务节点,RT有0~32个,类似我们的各业务服务节点,BM则是监控节点。所以按传统服务器设计结构也很好理解1553B了。原创 2023-11-24 15:54:34 · 1626 阅读 · 4 评论 -
《Effective Modern C++》全书内容提炼总结
在C++98时,我们要屏蔽某些成员函数不让调用,一般做法是声明为私有且不去实现它们。public:private:如果内部或友元函数调用了它们就会在链接时引发缺少函数定义的错误。在C++11中有一种更好的方式,用= delete将函数标记为删除,这样如果有地方调用了它,直接在编译时就会报错,比传统方式报错提前了而且报错信息更加友好。public:通常,deleted函数被声明为public而不是private,这是有原因的,C++会在检查deleted状态前检查它的访问性。原创 2023-11-24 15:45:38 · 281 阅读 · 0 评论 -
c++20新特性
自C++11这个大版本更新以来,后来陆续有两次小版本迭代C++14、C++17,它们主要是对C++11的补充扩展,并没有增加太多大的特性。而这次的C++20,和当年C++11一样,又是一次重大更新,有人甚至说这是一门新语言。原创 2023-09-05 16:13:00 · 1217 阅读 · 0 评论 -
c++17新特性
,这样像以前静态成员变量必须在cpp中初始化的限制也没有了,成员变量可以直接在头文件也可以初始化了。原创 2023-08-31 17:40:56 · 1418 阅读 · 0 评论 -
c++14新特性
C++14新增函数返回值也可以使用auto自动推导了。但是注意下面特殊场景:函数内如果有多个return语句,它们必须返回相同的类型,否则编译失败。如果return语句返回初始化列表,返回值类型推导也会失败。如果函数是虚函数,不能使用返回值类型推导。返回类型推导可以用在前置声明中,但是在使用它们之前,翻译单元中必须能够得到函数定义。返回类型推导可以用在递归函数中,但是递归调用必须以至少一个返回语句作为先导,以便编译器推导出返回类型。原创 2023-08-31 17:39:55 · 351 阅读 · 0 评论 -
c++11新特性
现代C++借鉴了很多脚本语言特性,编写越来越简洁高效了。下面就C++11新增特性做一个总结。使用using定义别名有些场景比typedef更加简洁而且更符合人们的理解。using定义别名可以全面替换掉typedef,下面举几个与typedef对比明显优势的例子:示例1:模板取别名// 使用typedef// ...// 使用using// ...示例2:函数指针取别名// 使用typedef// 使用using(这种更好理解)原创 2023-07-20 10:33:25 · 168 阅读 · 0 评论 -
go开源项目slgserver源码分析
比较适合作为go语言入门学习项目或轻量级游戏项目,整体的项目结构和编码质量还是可以的。不过距离商业项目还是差点意思,如服务负载、容灾这块还没有。gateserver 网关服loginserver 登录服chatserver 聊天服httpserver http服slgserver 游戏服其中httpserver就是常规http服务,主要提供一些辅助操作,如账号注册、修改密码什么的。其它4类服务则是用websocket相互连接的。原创 2023-07-03 14:07:56 · 1421 阅读 · 1 评论 -
OpenCL入门
OpenCL是一个异构平台编程框架,也是异构并行计算的行业标准,由Khronos Group来维护。旨在充分利用GPU强大的并行计算能力以及CPU的协同工作,更高效的利用硬件完成大规模(尤其是并行度高的)计算。简单说,CPU并不适合计算,它是多指令单数据流(MISD)的体系结构,更加擅长的是做逻辑控制,而数据处理基本是单流水线的,所以像代码这种在CPU上要重复迭代跑很多遍。但是我们的显卡GPU则不这样,GPU是典型的单指令多数据(SIMD)的体系结构,它不擅长逻辑控制,但是确实天生的向量计算机器,对于上面这原创 2023-07-03 14:05:45 · 542 阅读 · 0 评论 -
boost库使用
下面介绍完整安装boost库的方法:boost库官网双击运行,会生成。然后执行以下命令:或者直接双击运行。等待编译完成,会在boost根目录下生成和两个文件夹,其中是中间文件,可以删除。下才是生成的dll或lib文件。打开项目属性,至此环境就以及配置好了,下面测试一下:程序正常运行: 列出所有编译的库 查看所有参数使用综合使用:toolset:表示编译器工具,我安装的是VS2010,所以是msvc-10(如果你是VS2005,可以使用msvc-8.0 VS2008是msvc-9.0)architec原创 2023-07-03 14:06:25 · 1208 阅读 · 0 评论 -
《Effective C++》 全书内容提炼总结
提前定义变量,有可能导致变量并没有使用(如中间抛异常了),而平白多了一个构造和析构成本。但是循环怎么办?// 方式AWidget w;i < n;...// 方式Bi < n;++i) {...做法A:1个构造 + 1个析构 + n个赋值操作做法B:n个构造函数 + n个析构函数打破本条款选择A的依据:(1)你知道赋值成本比“构造+析构"成本低。(2)你正在处理代码中效率高度敏感的部分。否则你应该使用做法B,维持变量尽可能在使用时定义的原则。原创 2023-07-03 14:04:02 · 365 阅读 · 0 评论 -
c++崩溃调试总结
dump文件的生成常用有两种方式,一种是在程序main中封装崩溃时写dmp文件接口,一种是windbg工具。方式二:windbg产生dmp文件首先商店直接下载,安装windbg工具然后通过.dump命令生成dmp文件。如果程序启动就崩溃,使用Launch executable选择exe,如果是运行期间崩溃,使用Attach to process选择对应进程。然后点击GO开始,等待崩溃后,在Command下面命令窗口输入.dump命令即可。同样常用有两种方式,一种是通过直接打开文件调试,一种是使用工原创 2023-07-03 13:57:59 · 775 阅读 · 0 评论 -
C++动态库使用
Linux动态库的后缀是.so文件,而window则是.dll文件。原创 2023-07-03 13:56:49 · 377 阅读 · 0 评论 -
windows11安装Linux子系统
个人博客地址:Windows在10之后自带了虚拟机子系统功能,可以和本地磁盘共享,默认挂载到/mnt/目录下面。比起传统的VM方便多了。原创 2023-07-03 13:54:05 · 4636 阅读 · 0 评论 -
Docker使用
Docker由下面3个东西组成:参考:CentOS Docker 安装 | 菜鸟教程 (runoob.com)我的测试环境是,使用的官方安装脚本自动安装。安装完成后,重启docker服务。常用命令通过容器提交镜像以及推送镜像流程我们本地一个容器如果想要提交到docker仓库供别人pull下载使用。操作流程如下(和git使用类似):注册docker仓库账号地址: Docker Hub本地提交容器为镜像原创 2023-07-03 13:51:47 · 590 阅读 · 0 评论 -
CMake入门
你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作。CMake就是针对上面问题所设计的工具:它首先允许开发者编写一种平台无关的 CMa原创 2023-07-03 13:45:41 · 131 阅读 · 0 评论 -
提炼《跟我一起写 Makefile》教程
objects = main.o kbd.o command.o display.o \ # 定义变量(类似c/c++中的宏)edit : $(objects) # 变量使用把多条命令定义成一个变量,后续可以使用这个变量来替代一组命令。语法以define开始,以endefdefine run-yacc #命令包的名字yacc $(firstword $^) #运行Yacc程序mv y.tab.c $@ #文件改名endef#命令包使用$(run-yacc) #和使用变量一样。原创 2023-07-03 13:38:15 · 115 阅读 · 0 评论 -
Linux多进程数据交换--共享内存
在linux系统开发当中,时常需要在多个进程之间交换数据,在多个进程之间交换数据,有很多方法,但最高效的方法莫过于共享内存。linux共享内存是通过tmpfs这个文件系统来实现的,tmpfs文件系的目录为/dev/shm,/dev/shm是驻留在内存 RAM 当中的,因此读写速度与读写内存速度一样,/dev/shm的容量默认尺寸为系统内存大小的一半大小,使用df -h命令可以看到。但实际上它并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节,仅在使用shm_open原创 2023-07-03 13:22:08 · 886 阅读 · 0 评论 -
threejs物理效果和声音
threejs中创建物理场景我们用它的扩展库:。它可以使场景中的对象有重力效果,可以相互碰撞,施加力之后可以移动,还可以通过合页和滑块在移动过程中在对象上施加约束。这个库是基于另一个著名物理引擎实现的,它只是为了适配threejs对其包装了一层,因此只是一个包装器,所以它也可以与其它的物理引擎一起工作,在它的github代码仓中你也可以发现一个使用不同的物理引擎的分支版本。创建物理场景步骤:物理场景中添加网格对象,就是把换成包装的几何体网格,这样对象就会受物理的影响了。Physijs提供的约束对象如下:原创 2023-06-30 14:08:52 · 413 阅读 · 0 评论 -
threejs后期处理
这个通道可以传递一个自定义的着色器,将大量的额外效果添加到场景中。Threejs提供的简单着色器:另外,一些提供模糊效果的着色器:margin : 0;var mesh;// 各种shader通道 var mirror = new THREE . ShaderPass(THREE . MirrorShader);原创 2023-06-30 14:06:16 · 415 阅读 · 0 评论 -
threejs纹理
UV映射是指指定纹理的哪部分显示在物体的表面上。默认是将整个纹理显示到物体表面上,一般不需要修改,如果要自定义UV映射,指定部分纹理显示到物体表面,通常都是借助建模工具完成(Blender)。原理是修改几何体对应面的每个顶点的属性,这个属性有两个维度u/v,对应属性的x/y,取值范围0~1。// 第一个面(由3个顶点组成) geom . faceVertexUvs [ 0 ] [ 0 ] [ 0 ] . x = 0.5;原创 2023-06-30 14:03:29 · 722 阅读 · 0 评论 -
threejs动画
个人博客地址:前面我们所用的模型大都是静态的,没有动画,没有生命。这节我们将赋予它们生命。动画。这些其实在前面章节示例里或多或少已经使用了。原创 2023-06-30 14:01:30 · 662 阅读 · 0 评论 -
threejs使用外部模型
个人博客地址:前面我们都是用Threejs提供的几何体来创建网格,对于简单几何体(如球体和方块)来说非常有效,但当你想要创建复杂的三维模型时,这不是最好的方法。通常情况下,你可以使用三维建模工具(如Blender和3D Studio Max)来创建复杂几何体。本节就来学习如何加载和展示由这些三维建模工具所创建的模型。原创 2023-06-30 13:49:37 · 858 阅读 · 0 评论 -
threejs精灵和粒子系统
个人博客地址:前面我们了解到了场景中的网格对象由几何体和材质组成,并且分别系统学习了它们。这节我们将学习一个特殊的网格对象-----粒子(精灵)。原创 2023-06-30 13:45:37 · 517 阅读 · 0 评论 -
threejs高级几何体
它可以围绕一组点创建一个凸包,所谓凸包就是包围这组点得最小图形。它允许你从一条光滑曲线创建图形。这条曲线绕物体的中心z轴旋转,就得到了类似花瓶或铃铛的图形。它可以从一个二维图形通过沿着某个轴(默认z轴)拉伸创建出一个三维图形。它可以沿着一条三维样式曲线拉伸出一根管子。读取SVG中路径信息转换为three.js图形。它可以创建基于公式的几何体。创建三维字体文本。其内部使用的是THREE.ExtrudeGeometry拉伸。就是将各种标准几何体组合在一起创建出新的几何体。这被称为CSG技术,在Th原创 2023-06-30 13:43:00 · 280 阅读 · 0 评论 -
threejs几何体
个人博客地址:前面在场景那节只是简单介绍了threejs中可用的几何体,本节和下一节将深入讨论threejs提供的所有几何体(不包括上一节探讨过的THREE.Line)。原创 2023-06-30 13:40:26 · 152 阅读 · 0 评论 -
threejs材质
个人博客地址: https://cxx001.gitee.io前言前面简单的介绍了材质,你已经了解到材质结合几何体就可以创建网格,网格对象才可以添加到Threejs渲染的场景中。材质就像物体的皮肤,决定了几何体的外表。如,几何体看起来是否像金属、透明与否,或者显示为线框。threejs提供的材质:名称描述MeshBasicMaterial(网格基础材质)用于给几何体赋予一种简单的颜色,可显示几何体的线框MeshDepthMaterial(网格深度材质)这个材质使用原创 2023-06-30 13:36:51 · 1290 阅读 · 0 评论 -
threejs光源
没有光源,渲染场景将不可见。threejs中已经帮我们实现了大量的光源,我们可以直接使用,主要分为两类:基础光源和特殊光源,下面将依次详细介绍。原创 2023-06-30 13:29:52 · 508 阅读 · 0 评论 -
threejs场景
对象添加到场景里才能被渲染,场景是整个画面的容器。场景要显示任何东西,一般要有摄像机、光源、渲染对象。本章主要介绍场景类里常用的方法和属性,以及构建场景的基本组件。几何体和网格:网格可以添加到场景中渲染,网格由几何体和材质组成。几何体由顶点和面(一般是三角形,也有四边形)组成。几何体决定网格的形状,材质决定网格的样式。场景中摄像机对象,分为透视投影摄像机和正交投影摄像机。margin : 0;原创 2023-06-30 13:21:55 · 334 阅读 · 0 评论 -
threejs入门
随着HTML5的发布,我们可以通过WebGL在浏览器上直接使用显卡资源来创建高性能的二维和三维图形,但是直接使用WebGL编程来创建三维场景十分复杂而且还容易出问题。而使用Three.js库可以简化这个过程,它对WebGL做了进一步封装,降低了使用门槛。WebGL整体原理其实和OpenGL差不多,只是运行平台不同而已,它是基于OpenGL-ES绑定javascript而来。底层关系:注: 本系列教程并不是用的threejs最新版,threejs官方一直在持续优化更新,可能有些API使用有些许变化。原创 2023-06-30 11:34:13 · 297 阅读 · 0 评论