自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LearnOpenGL系列一

最近工作中遇到了一些可视化渲染相关的问题,比如多线程下opegl渲染上下文如何共用、GPU与CPU内存数据交换性能如何提升、仿射变换卡顿以及threejs中矩阵变换、透明度叠加、深度测试等,虽然针对单个问题在网上能查到很多解决方案,也解决了大部分问题,但内心始终感觉缺点啥,缺乏可视化相关的系统性的专业知识支撑,遇到这些问题时,内心着实有点慌,因此,下定决心要把opengl相关的基础知识系统性的过一遍,在此留下记录,便于后期查阅。

2024-04-20 23:43:41 615

原创 C++线程池理解

C++线程池的基本概念及简单实现

2023-03-18 21:09:39 1160

原创 OpenMP并行计算

Openmp基本知识

2023-03-13 20:42:26 396

原创 医疗领域点滴记录

医生替你做决策,医疗消费你做不了主,信息严重不对称,医生既是医疗服务的提供方也是需求方,供需都在医生一手。一旦市场化,患者都是待宰的鸡,消费者和市场不存在博弈。1. 医疗领域是最市场失灵的。...

2022-08-07 20:38:45 188

原创 进程与线程

新增描述

2021-07-04 16:25:09 130

原创 C++ Set/Get使用

### C++——get/setC++中的私有字段取值、赋值时,一般是提供Get,Set函数来实现,具体使用可分以下场景: 大量私有字段,不需校验或加锁等额外操作的,仅对该字段做单纯的取值、赋值操作,建议直接将字段定义为public; class Test{ public: int age; std::string name; int sex; std::string intrest; double h...

2021-04-25 22:00:45 6186

原创 Unity概览

Unity概览Unity Technologies公司开发的用于轻松创建游戏和三维互动内容的开发工具,是一款优秀的专业游戏引擎。2000年推出 统一语言 跨平台可制作2D和3D游戏虚拟现实:通过各种输入设备与虚拟环境中的失误进行交互 如移动端头显设备,外接式头戴设备(htc),一体式头戴设备, XBox One + Kinect, zSpaceAR 通过电脑技术,将虚拟的信息应用到真实世界,真实的环境和虚拟的物体实时地叠加到同一个画面或空间同时存在unity定位一款游戏引擎框架包

2021-03-21 19:30:31 136

原创 c++ 进程间通信实例

1. windows下共享内存实现进程间通信发送数据进程#include <iostream>#include <Windows.h>using namespace std;#define BUF_SIZE 1024HANDLE H_Mutex = NULL;HANDLE H_Event = NULL;int main(){ // 创建共享文件句柄 HANDLE shareFileHandle = CreateFileMapping(INVALID_HANDL

2021-03-06 21:19:08 831

原创 TinyXML2

记录xml文件的读取,解析与保存tinyxml2源码如下链接tinyxml2xml文件结构 // xml文件的生成 //------------ //声明要创建的xml文件 //------------ tinyxml2::XMLDocument xml; tinyxml2::XMLDeclaration* declaration = xml.NewDeclaration(); xml.InsertFirstChild(declaration); //------------ //

2021-02-26 21:33:58 362

原创 C++11多线程

C++11多线程C++11引入了std::thread线程库,可以跨平台使用,注意在linux上使用时,需要手动加入链接库pthread.线程是CPU执行的最小单元,它是线性独立执行一段机器指令的承载空间单核CPU下使用多线程,并不能提升性能,多核CPU下使用多线程可提高硬件性能的利用率需要根据实际业务来划分多线程,比如后台运算,加载视频流等 1. 每个进程默认有一个主线程; 2. std::thread构造 std::thread t(func) 3. std::th

2021-02-21 15:01:05 129

原创 iMSTK学习笔记

以下内容来源于iMSTK官网https://www.imstk.org/iMSTKiMSTK是一套交互式医学仿真工具包,它的核心库是用C++语言编写,代码开源免费,可以帮助快速进行交互式多模式外科手术仿真的原型制作,该工具包具有以下特点:高度模块化和简单的API以扩展(可使用第三方库进行扩展)开源协议为Apach2.0, 可免费修改源码代码框架iMstkd的仿真工作流如下图,对每一帧仿真图像都需要首先根据动态模型计算出力向量及雅克比矩阵传递给主程序,同时,碰撞检测模块会根据配置文件定义的参

2021-02-06 22:29:24 808 1

原创 c++ 网络编程实践(第二篇)

网络通信之粘包和拆包在解释粘包与拆包的概念前,先大致解释下网络传输过程的缓冲模型,示意图如下:对照上图,发送端的缓冲区A是开发者在堆或栈上分配的缓冲区,并将该缓冲区的首地址作为send函数的入参,发送缓冲区B则是通信框架内部已经分配好的一段缓冲区,其大小可通过socket来设置。用户通过send发送的数据或先存储到发送缓冲区B来存储,通信框架根据实际的网络状况来决定每次发送多少字节到网络传输通道中。同样的,网络传输通道到达接收端的数据,会先存储到接收缓冲区B(通信框架维护),开发者通过recv函数从接

2021-01-31 11:40:30 139

原创 C++ 网络编程实践(第一篇)

以下内容来源于B站视频https://www.bilibili.com/video/BV1j4411S7jg?p=18学习资源仅将学习笔记记录如下供以后查阅及大家分享,欢迎讨论与批评指正网络通信基础1. tcp通信的客户端和服务端建立客户端的步骤1. 建立通信套接字socket -- 类似读写文件中的File*2. 连接服务端 -- fopen 打开文件3. 向服务端发送数据 -- fwrite4. 接收服务端数据 -- fread5. 关闭socket

2021-01-17 17:56:12 295

原创 C++设置/获取环境变量

int main(){ // 获取环境变量 char* pathVar = getenv("MyTemp1"); if (pathVar != nullptr) { std::cout << pathVar << std::endl; } //// //_putenv("MyTemp=test"); // //char* pathVar1 = getenv("MyTemp"); //std::cout << pathVar1 <<

2020-12-02 22:22:56 696

原创 UML图的快速理解

UML通过统一建模语言快速了解C++大型项目用例图描述了是谁使用这个系统,这个人可以使用系统的哪些功能类图根据用例图抽象成类,描述类的内部结构及类与类之间关系的静态结构图主要的几种关系(强—>弱):泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖泛化: 一种继承关系,描述子类继承父类的特征,如动物和老虎实现: 一种类和接口的关系关联: 一种拥有的关系,可双向,如成员变量聚合: 整体与部分的关系,部分可单独存在,如成员变量(汽车-轮胎)组合

2020-11-22 17:32:01 144

原创 c++内存管理

1 前言c++应用程序永远逃脱不了同一个主题,那就是内存管理,内存管理的好坏直接影响程序的性能与稳定。最常见的c++语言内存分配基础构件就是new/delete,其内部最终是调用的C函数malloc/free来实现的。也经常会用到stl库中的各种容器,如list,map,set等,其实,他们也都依托于标准库中实现的std::allocator分配器进行内存管理。因此,从我们经常用到的内存相关的表达式,函数,容器出发,去了解它们的实现机理及应用策略,这对于我们更加熟练合理的运用内存分配工具具有很大的意义。

2020-06-14 18:01:54 137

原创 STL常用容器解析

STL容器stl提供了大量成熟的容器供我们存储数据,在连接各自容器的特点的情况下,选择性的使用最合适的容器,会使代码质量与性能大大提升,下面记录下各自常用容器的特性:1. std::vector...

2020-04-04 15:00:38 171

原创 Office技能提升——Word

以下操作均基于office20131. 自动保存为了防止用户在编辑文档过程中异常关闭的情况,word提供了自动保存设置的功能。具体步骤如下:(1)设置自动保存时间间隔及保存路径文件->选项->保存->保存自动恢复信息时间间隔(一般3分钟)选择自动动恢复文件保存路径(2)文件->打开->最近使用文档->恢复未保存的文档(最下边)->选择最近一次...

2020-03-21 11:30:02 290

原创 代码的坏味道——《重构——改善既有代码的设计》

1. Duplicated Code重复代码,在程序中多次出现的相同结构或功能的代码同一个类中的两个函数含有相同的表达式两个互为兄弟的子类中含相同的表达式相互独立的类中出现相同表达式2. Long Method过长的函数难以理解及维护段函数或间接层具有很强的解释能力、共享能力和选择能力面向对象几乎完全免除了进程内函数调用的开销短函数功能单一明确,可以起一个比较贴近功能的名称...

2020-02-08 10:23:28 209

原创 重构原则——《重构——改善既有代码的设计》

1. 重构理解的3个21.1. 2种定义(1) 重构(名词): 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本;(2)重构(动词): 使用一系列重构手法,在不改变软件可观察行为的前提下,调整期结构。1.2. 2个拓展(1) 重构的目的: 使软件更容易被理解和修改;(2) 重构的前提: 不改变软件的可观察行为。1.3. 2顶帽子...

2020-02-07 11:57:30 373

原创 重构简单案例——《重构——改善既有代码的设计》

1. 前言重构,可以理解为一种帮助你改进已有代码设计的一种方法。若直接对这种方法下一个定义,那么很容易陷入形式,读完后还是不理解重构是啥。因为它是在你不断设计,不断改进过程中归纳出来的一些比较通用的手法,这些手法会因你遇到的场景及上下文的不同而发生变化,而代码设计过程中的场景是千变万化,异常复杂的。所以,以一个简单案例入手,帮助我们熟悉一般简单场景重构的手法,然后一步步组合变化,去满足我们对大型...

2020-02-05 11:14:08 1640

原创 gTest基本知识

GoogleTest1. gTest简介gTest是google开发团队开发的一款针对C++代码的测试框架,可以帮助我们更快,更好地写出C++测试代码。gTest支持Linux,Windows,Mac等多个OS平台上运行gTest不仅仅只支持单元测试,还支持其他多种类型的测试。2. 好的测试代码具有哪些特点测试应该是独立且可重复的测试应该能被很好的组织且能清晰的反映测试代码的结...

2020-02-03 21:02:13 1624 1

原创 c++11/14/17新特性

1. C++语言历程C++语言从1983年正式诞生以来,经历了多次的修订与改版,主要从包含两个大的节点,一是1998年,C++语言正式被C++标准委员会纳入标准,二是2011年,C++语言新增了许多新的特性,大大提升C++语言的实用性。可以把C++标准分成两个大的版本,C++1.0(C++98,C++03,C++03(tr1))和C++2.0(C++11,C++14,C++17,C++20(草案...

2019-10-20 14:51:33 2736

原创 基于堆栈的缓冲区溢出问题记录

问题:在release下,选择椭圆选择工具,绘制选择区域,APP crash,在离开HighLightROICell函数时报错分析缓冲区溢出问题本质其实就是复制一个内存区域的内容到另一个内存区域,而目标内存区域容量太小无法容纳函数A在调用函数B时,A的函数地址会存储在堆栈中,若函数B中的代码存在堆栈溢出,一般就是内存拷贝时,目标内存分配不足导致,就是导致堆栈混乱,使得在离开函数B时找不...

2019-09-25 18:56:38 9192

原创 几种常用的工具

名称功能备注Notepad++文本编辑器–UltraEdit文本编辑器可查看二进制文件VS Code代码/文本编辑器支持markdown语法Typora文本编辑器支持markdown语法,可直接显示markdown效果,可将图片资源统一存放在指定服务器上cmake跨平台的安装编译工具一般github上的代码下载后需要用cmake编译...

2019-09-21 10:35:19 452

原创 GRPC学习初级阶段

主要记录下使用gRPC躺过的坑1. GRPC c++版安装在github上搜索grpc(https://github.com/grpc/grpc),我选择的版本是v1.22.1(需要在火狐浏览器中打开才能选择分支)注意不要直接下载源码,这样无法获取grpc依赖的三方库,thirty_party文件夹会为空下载完整的源码前需要做一些准备工作,可从BUILDING.md文件中查找,具体步骤如...

2019-09-20 08:42:19 264

原创 Linux下编译DCMTK,ACE问题记录

下载进入dcmtk官网https://www.dcmtk.org/dcmtk.php.en,点击源码压缩包,发现无法下载,不知道是否是网络原因,但官方网页都可正常访问。于是到github上下载,一开始糊里糊涂下了个dcmtk_master,编译后使用发现不太稳定,各种报头文件内部变量无法识别的问题,最后下了个分支dcmtk3.6.4版本(https://github.com/DCMTK/dc...

2019-08-17 11:23:32 815

原创 计算WPS表格中带文本的计算表达式的结果

问题最近,弟弟问我怎么从WPS表格中提取含文本的算术表达式中计算表达式的结果,如下表,思路利用正则表达式先提取数字,小数点,±*/()等符号,以获取完整的算术表达式利用EVALUATE计算算术表达式的值注意:提取的字符均为英文字符,且中文字符不能用小括号括起来实现提取表达式选中“表达式”这一列的第一个单元格输入=RegexString(等待输入第一个参数时,选中“描述”...

2019-08-17 10:44:11 4641

原创 CGAL license说明

1 License IssuesCGAL发布开源代码,遵循双重许可证计划,其中,CGAL基础库遵循LGPL协议,上层库遵循GPL协议。若希望在商业使用或修改GPL协议的CGAL库,但又不希望遵循GPL协议,则可以采用购买商业许可证的方式。GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和...

2019-08-11 11:16:04 1667

原创 linux文件目录组织结构

linux文件管理linux下没有那么多的文件类型,基本都是文本类型文件相关操作包括创建,复制,删除,移动,查看,编辑,压缩,查找文件目录结构windows下是多根目录结构,如C:,D:,E:\linux以单根的形式组织文件 ,root /FSH(FileSystem Hierarchy Standard) 所有的linux系统遵循的文件组织标准注意:虚线部分表示该目录位置已...

2019-08-10 09:57:05 811

原创 C++版网络爬虫

C++版网络爬虫网络爬虫是按照一定规则,自动地抓取万维网信息的程序或脚本。这里用C++语言写一个小程序,实现简单的图片爬取的功能,目的是为了通过这么一个小程序理解爬虫的基本原理及基本流程。其大致实现流程如下:图一:实现流程图下面按照流程中的步骤依次用代码实现。第一步:输入初始的URL这里要实现的是图片资源的爬取,初始url可以选择一张带图片的网络地址,如http://www.tuxi.c...

2019-08-07 22:28:41 1897 1

原创 Python基本知识

python基本知识python是一种解释型脚本语言跨平台(mac,windows,linux,unix)相对于其他高级语言,可用更少的代码实现更复杂的功能可用于3D动画,Web,云计算,企业应用,机器学习等下载官网:http://www.python.org下载Python3.2.2版本(目前最新已经到3.7.4)python2和Python3有较大的区别pythhon的...

2019-08-04 17:02:01 216

原创 VTK学习笔记九

VTK可视化之符号化vtkGlyph3D是一个符号化的算法工具vtkGlyph3D类可以创建一个具有大小、方向和颜色的符号,并支持图形缩放、着色、设置空间姿态等输入对象中的每个点都可以用符号来可视化vtkGlyph3D 对象符号被配置使用点属性法矢量作为方向向量也可以使用SetVectorModeToUseVector()方法用矢量数据代替法矢量根据矢量值的大小,按比例绘制符号的大小...

2019-07-15 09:53:33 1139

原创 RabbitMQ基本介绍

# 1. 什么是RabbitMQ?RabbitMQ是消息中间件的一种,其基本成员包括:Message不具名的二进制串,它有消息头和消息体组成的。消息体不透明,消息头包含一系列可选属性,如路由键,优先级别,消息的可持久性等Publisher向交换器发送消息的应用程序。Consumer从消息队列中取消息的应用程序Exchange负责接收Producer发送过来的消息...

2019-07-10 22:57:18 311

原创 Windows下RabbitMQ安装及C/C++版客户端Rabbitmq-c库编译

RabbitMQ Windows安装1. 安装Erlang由于RabbitMQ是由Erlang语言编写的,因此需要先安装Erlang的环境Erlang的安装包:https://www.erlang.org/downloads直接按默认安装即可,无需更改配置,安装过程如下:2. 下载RabbitMQ安装包下载地址: https://www.rabbitmq.com/ins...

2019-07-09 23:40:25 4787 1

原创 远程监控系统

Windows MFC远程监测系统设计思路根据服务器IP和端口建立连接服务器接收客户端连接请求后,将客户端IP显示在树形节点上,并将客户端socket保存在节点的数据结构中,用于用户通信双击客户端IP节点,弹出新对话框用于显示监控页面双击事件中,服务器先向客户端发送位图结构信息的请求,用于获取客户端当前屏幕截图的位图结构信息客户端接收请求后,对当前屏幕进行截屏,并拷贝到位图结构中,先...

2019-07-07 16:32:00 1096 1

原创 VTK学习笔记八

轮廓提取操作的是标量数据对象将数据集中标量值等于指定的值的部分提取出来;对于3D数据,提取出来的是一个等值面对于2D数据而言,提取出来的是一个等值线典型应用包括气象图中的等温线,地形图中的等高线对于医学图像而言,不同的标量值代表不同的组织或结构,可以提取人的皮肤或骨头使用过滤器vtkContourFilter来实现轮廓提取,可以接收任意类型的数据类型作为输入vtkContourF...

2019-07-06 15:55:19 1249

原创 一种简单的解密算法

问题:假设你为自己的账户设置六位数字密码,且数字按顺序排列,首先将每个数字都换成英文单词,如123456变成onetwothreefourfivesix, 然后对字符串任意打乱顺序,或改大小写,如Xisevifruofeethtowteno等,最后需要根据这个任意字符串推算出你最初设置的六位数字密码?思路观察one,two,three,four,five,six,seven,eight,n...

2019-07-03 09:14:32 183

原创 VTK学习笔记七

可视化技术过滤器产生各种输出类型,并且输出类型没必要和输入类型一致不同过滤器可以被组合起来形成复杂的数据流水线可视化vtkDataSet类型数据包含vtkDataSet及其子类型(vtkPolyData,vtkImageData,vtkStructuredGrid,vtkRectilinearGrid,vtkUnstructuredGrid)数据可视化的相关方法vtkDataSet...

2019-06-24 13:01:17 1312

原创 Windows网络通信——简单的聊天程序

网络编程前提是应用程序所在的机器在一个网络(同一主机,局域网,互联网)之中多个程序(进程)之间能交换数据全双共(双向通信),即时,安全的TCP协议,一种用于网络数据传输的协议IP协议用于机器在网络中的定位Window下用TCP协议实现网络编程网络应用的两种架构:C/S架构,B/S架构通用windows网络编程的步骤服务器客户端备注1. 请求协议版本1. ...

2019-06-23 11:46:59 1213

空空如也

空空如也

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

TA关注的人

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