山西长治做网站公司有哪些北京网站制作济南

diannao/2026/1/17 4:32:29/文章来源:
山西长治做网站公司有哪些,北京网站制作济南,wordpress设置分享,wordpress模板 商品这篇博文是接着这个系列前面的博文#xff0c;来讲如何实现医学图像三视图同步视图。我想到的一个思路是用Scrollbar来控制切面的改变#xff0c;还有一个想法是在三维图像上取点#xff0c;然后以这个点为切面中心更新三维视图。这篇博文主要介绍的就是第二个想法的三维图像…这篇博文是接着这个系列前面的博文来讲如何实现医学图像三视图同步视图。我想到的一个思路是用Scrollbar来控制切面的改变还有一个想法是在三维图像上取点然后以这个点为切面中心更新三维视图。这篇博文主要介绍的就是第二个想法的三维图像上取点相关实现准备。 在写这个项目的时候我真的琢磨了很久网上能参考的资料也不多下面就来和大家详细分享一下我研究这么久的成果吧。研究不易如果你觉得这篇文对你有帮助请给博主点赞收藏评论三连hhh 我比较懒所以这个博客用到的主体代码是之前博客里介绍的一些前面的准备步骤我已经在相关博客里介绍过了我这里就不重复写了大家有困惑的话就挪步瞅瞅我之前的博客吧。 VS2022联合Qt5开发学习5QT5.12.3联合VTK在VS2022上开发医学图像项目_vs2022 qt5.12-CSDN博客 VS2022联合Qt5开发学习7QT5.12.3联合VTK在VS2022上开发医学图像项目2——十字叉标注_qt vs开发-CSDN博客 1. 用VTK实现取点 在正式写到如何在stl三维图像上取点之前我们先练习一下如何在VTK上取点。下面的实例是一个纯VTK项目我用的是VTK7VTK9应该运行也没啥问题。 首先是新建一个PointPickerInteractorStyle 类写一些用鼠标左键取坐标的相关函数。 GetPoint.h #pragma once #include vtkAutoInit.h VTK_MODULE_INIT(vtkRenderingOpenGL2) VTK_MODULE_INIT(vtkRenderingFreeType) VTK_MODULE_INIT(vtkInteractionStyle)#include vtkSmartPointer.h #include vtkSphereSource.h #include vtkPolyDataMapper.h #include vtkActor.h #include vtkRenderer.h #include vtkRenderWindow.h #include vtkRenderWindowInteractor.h#include vtkPointPicker.h #include vtkRendererCollection.h #include vtkInteractorStyleTrackballCamera.h #include vtkObjectFactory.h //vtkStandardNewMacro(); #include vtkProperty.h#include vtkAxesActor.h #include vtkOrientationMarkerWidget.h/**************************************************************************************************/ class PointPickerInteractorStyle : public vtkInteractorStyleTrackballCamera { public:static PointPickerInteractorStyle* New();vtkTypeMacro(PointPickerInteractorStyle, vtkInteractorStyleTrackballCamera);virtual void OnLeftButtonDown(){//打印鼠标左键像素位置std::cout Picking pixel: this-Interactor-GetEventPosition()[0] this-Interactor-GetEventPosition()[1] std::endl;//注册拾取点函数this-Interactor-GetPicker()-Pick(this-Interactor-GetEventPosition()[0],this-Interactor-GetEventPosition()[1], 0, // always zero.this-Interactor-GetRenderWindow()-GetRenderers()-GetFirstRenderer());//打印拾取点空间位置double picked[3];this-Interactor-GetPicker()-GetPickPosition(picked);std::cout Picked value: picked[0] picked[1] picked[2] std::endl;//对拾取点进行标记vtkSmartPointervtkSphereSource sphereSource vtkSmartPointervtkSphereSource::New();sphereSource-Update();vtkSmartPointervtkPolyDataMapper mapper vtkSmartPointervtkPolyDataMapper::New();mapper-SetInputConnection(sphereSource-GetOutputPort());vtkSmartPointervtkActor actor vtkSmartPointervtkActor::New();actor-SetMapper(mapper);actor-SetPosition(picked);actor-SetScale(0.05);actor-GetProperty()-SetColor(1.0, 1.0, 1.0);this-Interactor-GetRenderWindow()-GetRenderers()-GetFirstRenderer()-AddActor(actor);vtkInteractorStyleTrackballCamera::OnLeftButtonDown();} }; 然后在cpp文件上构建VTK的actor、render、window就是那一套标准化流程。大家不熟悉的话可以瞅瞅我之前这个系列的学习笔记 VTK项目代码学习_梦里花乡的博客-CSDN博客 GetPoint.cpp #include GetPoint.hvtkStandardNewMacro(PointPickerInteractorStyle);int main() {vtkSmartPointervtkSphereSource sphereSource vtkSmartPointervtkSphereSource::New();sphereSource-Update();vtkSmartPointervtkPolyDataMapper mapper vtkSmartPointervtkPolyDataMapper::New();mapper-SetInputConnection(sphereSource-GetOutputPort());vtkSmartPointervtkActor actor vtkSmartPointervtkActor::New();actor-SetMapper(mapper);vtkSmartPointervtkRenderer renderer vtkSmartPointervtkRenderer::New();renderer-AddActor(actor);renderer-SetBackground(0, 0, 0);vtkSmartPointervtkRenderWindow renderWindow vtkSmartPointervtkRenderWindow::New();renderWindow-Render();renderWindow-SetWindowName(PointPicker);renderWindow-AddRenderer(renderer);vtkSmartPointervtkPointPicker pointPicker vtkSmartPointervtkPointPicker::New();vtkSmartPointervtkRenderWindowInteractor renderWindowInteractor vtkSmartPointervtkRenderWindowInteractor::New();renderWindowInteractor-SetPicker(pointPicker);renderWindowInteractor-SetRenderWindow(renderWindow);vtkSmartPointerPointPickerInteractorStyle style vtkSmartPointerPointPickerInteractorStyle::New();renderWindowInteractor-SetInteractorStyle(style);//vtkSmartPointervtkAxesActor Axes vtkSmartPointervtkAxesActor::New();vtkSmartPointervtkOrientationMarkerWidget widget vtkSmartPointervtkOrientationMarkerWidget::New();widget-SetInteractor(renderWindowInteractor);widget-SetOrientationMarker(Axes);widget-SetOutlineColor(1, 1, 1);widget-SetViewport(0, 0, 0.2, 0.2);widget-SetEnabled(1);widget-InteractiveOn();renderWindow-Render();renderWindowInteractor-Start();return 0; } 这里需要特别注意这一行一定不要忘记写了 vtkStandardNewMacro(PointPickerInteractorStyle); 运行结果 2. Qt界面取点 关于Qt界面如何取点的相关内容我已经在之前的博文VS2022联合Qt5开发学习9QT5.12.3鼠标按下、释放、移动事件以及Qt上取标注点-CSDN博客里介绍了在这里就不再做更多说明了。 3. qvtkWidget上显示STL三维图像并取点 这个实例是接着之前的博文做的所以一些前期的步骤我这里就不重复写了大家不大清楚的话可以看一下这篇博文VS2022联合Qt5开发学习7QT5.12.3联合VTK在VS2022上开发医学图像项目2——十字叉标注_qt vs开发-CSDN博客 首先我们需要创建一个自定义的交互器样式类该类继承自vtkInteractorStyleTrackballCamera覆写了鼠标左键按下事件处理函数 OnLeftButtonDown。在这个函数中我们使用 vtkPointPicker 实现了鼠标点击位置的三维点选取。 PointPickerInteractorStyle.h #pragma once #include vtkAutoInit.h VTK_MODULE_INIT(vtkRenderingOpenGL2) VTK_MODULE_INIT(vtkRenderingFreeType) VTK_MODULE_INIT(vtkInteractionStyle)#include vtkSmartPointer.h #include vtkSphereSource.h #include vtkPolyDataMapper.h #include vtkActor.h #include vtkRenderer.h #include vtkRenderWindow.h #include vtkRenderWindowInteractor.h#include vtkPointPicker.h //this-Interactor-GetRenderWindow()-GetRenderers()-GetFirstRenderer() #include vtkRendererCollection.h #include vtkInteractorStyleTrackballCamera.h #include vtkObjectFactory.h //vtkStandardNewMacro(); #include vtkProperty.h#include vtkAxesActor.h #include vtkOrientationMarkerWidget.hclass PointPickerInteractorStyle : public vtkInteractorStyleTrackballCamera { public:static PointPickerInteractorStyle* New();vtkTypeMacro(PointPickerInteractorStyle, vtkInteractorStyleTrackballCamera);virtual void OnLeftButtonDown(){//打印鼠标左键像素位置std::cout Picking pixel: this-Interactor-GetEventPosition()[0] this-Interactor-GetEventPosition()[1] std::endl;//注册拾取点函数this-Interactor-GetPicker()-Pick(this-Interactor-GetEventPosition()[0],this-Interactor-GetEventPosition()[1], 0, // always zero.this-Interactor-GetRenderWindow()-GetRenderers()-GetFirstRenderer());//打印拾取点空间位置double picked[3];this-Interactor-GetPicker()-GetPickPosition(picked);std::cout Picked value: picked[0] picked[1] picked[2] std::endl;//对拾取点进行标记vtkSmartPointervtkSphereSource sphereSource vtkSmartPointervtkSphereSource::New();sphereSource-Update();vtkSmartPointervtkPolyDataMapper mapper vtkSmartPointervtkPolyDataMapper::New();mapper-SetInputConnection(sphereSource-GetOutputPort());vtkSmartPointervtkActor actor vtkSmartPointervtkActor::New();actor-SetMapper(mapper);actor-SetPosition(picked);actor-SetScale(5);actor-GetProperty()-SetColor(1.0, 0, 0);this-Interactor-GetRenderWindow()-GetRenderers()-GetFirstRenderer()-AddActor(actor);vtkInteractorStyleTrackballCamera::OnLeftButtonDown();} };PointPickerInteractorStyle.cpp #include PointPickerInteractorStyle.hvtkStandardNewMacro(PointPickerInteractorStyle); 然后我们需要在原来的代码基础上新建这个自定义的交互器样式其他代码没有什么特别多的变化。 vtkSmartPointervtkRenderWindowInteractor interactor ui.qvtkWidget-GetRenderWindow()-GetInteractor();vtkSmartPointerPointPickerInteractorStyle style vtkSmartPointerPointPickerInteractorStyle::New();style-SetDefaultRenderer(renderer);interactor-SetInteractorStyle(style);interactor-Initialize(); STLpoint_vtk7.h文件 #pragma once#include QtWidgets/QMainWindow #include ui_STLpoint_vtk7.h#include vtkAutoInit.h #include vtkBMPReader.h #include vtkFloatArray.h #include vtkImageActor.h #include vtkImageChangeInformation.h #include vtkImageData.h #include vtkImageImport.h #include vtkImageViewer2.h #include vtkInteractorStyleImage.h #include vtkJPEGReader.h #include vtkLookupTable.h #include vtkMetaImageReader.h #include vtkNamedColors.h #include vtkNew.h #include vtkPointData.h #include vtkPolyDataMapper.h #include vtkProperty.h #include vtkRenderWindow.h #include vtkRenderWindowInteractor.h #include vtkRenderer.h #include vtkSTLReader.h #include vtkSmartPointer.h #include vtkXMLImageDataWriter.h#include PointPickerInteractorStyle.hclass STLpoint_vtk7 : public QMainWindow {Q_OBJECTpublic:STLpoint_vtk7(QWidget* parent nullptr);~STLpoint_vtk7();private slots:void openFileSlot();private:Ui::STLpoint_vtk7Class ui;private:vtkSmartPointervtkRenderer m_vtkRenderer;vtkSmartPointervtkRenderWindow m_vtkRenderWindow;private:vtkSmartPointervtkActor DrawCross(vtkSmartPointervtkActor _Actor, double _Pos[3]); }; STLpoint_vtk7.cpp文件 #include STLpoint_vtk7.h#include QDebug #include QFileDialog#include vtkImageBlend.h #include vtkImageCanvasSource2D.h #include vtkImageChangeInformation.h #include vtkImageData.h #include vtkImageIterator.h #include vtkImageLuminance.h #include vtkImageStencil.h #include vtkImageStencilData.h #include vtkImageViewer.h #include vtkInteractorStyleImage.h #include vtkPNGReader.h #include vtkRenderWindow.h #include vtkRenderWindowInteractor.h #include vtkLine.h #include vtkCamera.hSTLpoint_vtk7::STLpoint_vtk7(QWidget* parent): QMainWindow(parent) {ui.setupUi(this);//test DrawCrossstatic vtkSmartPointervtkActor _CrossCenterActor vtkSmartPointervtkActor::New();double _Pos[3];_Pos[0] 0;_Pos[1] 0;_Pos[2] 0;_CrossCenterActor DrawCross(_CrossCenterActor, _Pos);_CrossCenterActor-SetPosition(0, 0, 1);m_vtkRenderer vtkSmartPointervtkRenderer::New();m_vtkRenderer-AddActor(_CrossCenterActor);m_vtkRenderer-SetBackground(.0, .0, .0);vtkSmartPointervtkRenderWindow window vtkSmartPointervtkRenderWindow::New();ui.qvtkWidget-SetRenderWindow(window);ui.qvtkWidget-GetRenderWindow()-AddRenderer(m_vtkRenderer); }STLpoint_vtk7::~STLpoint_vtk7() {}void STLpoint_vtk7::openFileSlot() {QString selectFilePath QFileDialog::getOpenFileName(this, QString(choose STL file), QString(), QString(file(*.stl)));if (selectFilePath.isEmpty()){ui.textBrowser-append(The address of the STL file you choose is null!);return;}// 原始图像vtkSmartPointervtkSTLReader reader vtkSmartPointervtkSTLReader::New();reader-SetFileName(selectFilePath.toStdString().c_str());reader-Update();// 获取图像信息vtkSmartPointervtkPolyData polyData reader-GetOutput();vtkSmartPointervtkPoints points polyData-GetPoints();// 计算中心点坐标double center[3] { 0.0, 0.0, 0.0 };for (vtkIdType i 0; i points-GetNumberOfPoints(); i) {double point[3];points-GetPoint(i, point);for (int j 0; j 3; j) {center[j] point[j];}}for (int j 0; j 3; j) {center[j] / points-GetNumberOfPoints();}cout The Center of the Picture: center[0] center[1] center[2] endl;//将source转换成mappervtkSmartPointervtkPolyDataMapper mapper vtkSmartPointervtkPolyDataMapper::New();mapper-SetInputConnection(reader-GetOutputPort());//送入渲染引擎进行显示vtkSmartPointervtkActor actor vtkSmartPointervtkActor::New();actor-SetMapper(mapper);static vtkSmartPointervtkActor _CrossCenterActor vtkSmartPointervtkActor::New();_CrossCenterActor DrawCross(_CrossCenterActor, center);_CrossCenterActor-SetPosition(0, 0, 1);//渲染vtkSmartPointervtkRenderer renderer vtkSmartPointervtkRenderer::New();renderer-AddActor(actor);renderer-SetBackground(.0, .0, .0);renderer-AddActor(_CrossCenterActor);renderer-SetBackground(.0, .0, .0);//renderer-SetActiveCamera(camera);//设置渲染窗口vtkSmartPointervtkRenderWindow window vtkSmartPointervtkRenderWindow::New();ui.qvtkWidget-SetRenderWindow(window);ui.qvtkWidget-GetRenderWindow()-AddRenderer(renderer); //等价于window-AddRenderer(renderer);vtkSmartPointervtkRenderWindowInteractor interactor ui.qvtkWidget-GetRenderWindow()-GetInteractor();vtkSmartPointerPointPickerInteractorStyle style vtkSmartPointerPointPickerInteractorStyle::New();style-SetDefaultRenderer(renderer);interactor-SetInteractorStyle(style);interactor-Initialize();//okui.textBrowser-append(QString(upload the file:) selectFilePath QString( succeed !)); }vtkSmartPointervtkActor STLpoint_vtk7::DrawCross(vtkSmartPointervtkActor _Actor, double _Pos[3]) {if (_Actor nullptr){_Actor vtkSmartPointervtkActor::New();}vtkSmartPointervtkPoints _Points vtkSmartPointervtkPoints::New();_Points-InsertNextPoint(_Pos[0] - 100, _Pos[1], _Pos[2]);_Points-InsertNextPoint(_Pos[0] 100, _Pos[1], _Pos[2]);_Points-InsertNextPoint(_Pos[0], _Pos[1] - 100, _Pos[2]);_Points-InsertNextPoint(_Pos[0], _Pos[1] 100, _Pos[2]);_Points-InsertNextPoint(_Pos[0], _Pos[1], _Pos[2] - 100);_Points-InsertNextPoint(_Pos[0], _Pos[1], _Pos[2] 100);vtkSmartPointervtkLine _Line0 vtkSmartPointervtkLine::New();_Line0-GetPointIds()-SetId(0, 0);_Line0-GetPointIds()-SetId(1, 1);vtkSmartPointervtkLine _Line1 vtkSmartPointervtkLine::New();_Line1-GetPointIds()-SetId(0, 2);_Line1-GetPointIds()-SetId(1, 3);vtkSmartPointervtkLine _Line2 vtkSmartPointervtkLine::New();_Line2-GetPointIds()-SetId(0, 4);_Line2-GetPointIds()-SetId(1, 5);vtkSmartPointervtkCellArray _Lines vtkSmartPointervtkCellArray::New();_Lines-InsertNextCell(_Line0);_Lines-InsertNextCell(_Line1);_Lines-InsertNextCell(_Line2);vtkSmartPointervtkPolyData _PolyData vtkSmartPointervtkPolyData::New();_PolyData-SetPoints(_Points);_PolyData-SetLines(_Lines);vtkSmartPointervtkPolyDataMapper _Mapper vtkSmartPointervtkPolyDataMapper::New();_Mapper-SetInputData(_PolyData);vtkSmartPointervtkProperty lineProperty vtkSmartPointervtkProperty::New();lineProperty-SetLineWidth(1.0); // 设置线宽为 1可以根据需要调整_Actor-SetMapper(_Mapper);_Actor-SetProperty(lineProperty);_Actor-GetProperty()-SetColor(1.0, 0.0, 0.0);return _Actor; }运行结果 qvtkWidget上显示STL三维图像并取点 备注 如果按照我的步骤一步一步搭好项目就会发现一个问题我这么写代码确实可以正常取点但是我想移动旋转我的.stl图像时也会按鼠标左键这时候也会出现红色标注球但这时候我只是想移动转动图像不想取这个点。 我暂时也没想到什么好办法就在自定义的交互器样式中添加一个状态标记Ctrl来决定是否应该在点击时放置一个球形标记。最后可以通过按下Ctrl来切换这个状态。 class PointPickerInteractorStyle : public vtkInteractorStyleTrackballCamera { public:static PointPickerInteractorStyle* New();vtkTypeMacro(PointPickerInteractorStyle, vtkInteractorStyleTrackballCamera);PointPickerInteractorStyle() : PlaceMarker(false) {}virtual void OnLeftButtonDown(){// 检查是否按下了Ctrl键if (this-Interactor-GetControlKey()) {PlaceMarker !PlaceMarker; // 切换放置标记的状态if (!PlaceMarker) {// 如果现在不放置标记直接返回不执行后面的代码return;}}if (PlaceMarker) {//打印鼠标左键像素位置std::cout Picking pixel: this-Interactor-GetEventPosition()[0] this-Interactor-GetEventPosition()[1] std::endl;//注册拾取点函数this-Interactor-GetPicker()-Pick(this-Interactor-GetEventPosition()[0],this-Interactor-GetEventPosition()[1], 0, // always zero.this-Interactor-GetRenderWindow()-GetRenderers()-GetFirstRenderer());//打印拾取点空间位置double picked[3];this-Interactor-GetPicker()-GetPickPosition(picked);std::cout Picked value: picked[0] picked[1] picked[2] std::endl;//对拾取点进行标记vtkSmartPointervtkSphereSource sphereSource vtkSmartPointervtkSphereSource::New();sphereSource-Update();vtkSmartPointervtkPolyDataMapper mapper vtkSmartPointervtkPolyDataMapper::New();mapper-SetInputConnection(sphereSource-GetOutputPort());vtkSmartPointervtkActor actor vtkSmartPointervtkActor::New();actor-SetMapper(mapper);actor-SetPosition(picked);actor-SetScale(5);actor-GetProperty()-SetColor(1.0, 0, 0);this-Interactor-GetRenderWindow()-GetRenderers()-GetFirstRenderer()-AddActor(actor);}vtkInteractorStyleTrackballCamera::OnLeftButtonDown();}void SetPlaceMarker(bool place) {PlaceMarker place;}bool GetPlaceMarker() {return PlaceMarker;}private:bool PlaceMarker; // 控制是否放置标记的状态 }; 不过我运行起来感觉还是不大灵便需要按住ctrl键再加上左边鼠标键点一下才能切换成功。。。这步骤让人脑阔疼如果有朋友有优化这个地方的方法能在评论区说说不TAT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/90962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天津 公司网站建设360社区app

算术编码 是一种无损数据压缩方法,也是一种熵编码的方法。和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码,而算术编码是直接把整个输入的消息编码为一个数,一个…

专门做奢侈品的网站有哪些深入浅出wordpress pdf

Zabbix6.4 监控系统 密码忘记怎么办? 如下图 本次主要介绍在Zabbix6.4中重置用户密码的步骤。 步骤 如果您忘记了Zabbix密码并且无法登录,请向Zabbix管理员求助。 超级管理员用户可以在用户配置表单中更改所有用户的密码。 如果超级用户忘记了密码&a…

有道翻译网站 做翻译上杭县住房和城乡建设局网站

MySQL的体系架构 一、MySQL简介二、MySQL的体系架构三、MySQL的内存结构四、MySQL的文件结构 一、MySQL简介 MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,后被Sun公司收购,Sun公司被Oracle…

做挂网站万网 安装wordpress

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/fileupdown 目录 文件上传 一、基本介绍 二、文件上传的基本原理 ​编辑 三、文件上传应用实例 四、文件上传的注意细节 1.解决中文乱码问题 2.分割文件夹 3.防止重名 4.百度WebUploader 5.空…

微网站制作平台哪个好wordpress php 采集器

在博问中(.net core怎么实现邮件发送)知道了MailKit无法使用阿里云邮件推送服务发送邮件的问题,自已实测也遇到同样的问题,而用自己搭建的邮件服务器没这个问题。 于是,向阿里云提交了工单。。。在提供了TCP抓包数据后…

爱站网关键词挖掘易营宝网站建设

四、(2)获取数据(补充urllib)(爬虫及数据可视化) urllibget请求post请求User-AgentResponse模拟真实信息在豆瓣spider中真实实现 urllib 此处的扩展,可以进行在主体的程序学习完成后&#xff0…

discuz建网站网站内容管理系统

🌈hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 🏃人生之义,在于追求,不在成败,勤通…

建站公司新闻资讯关于网站建设的知识

一、chown 的简介 chown 用于更改文件或目录的所有者(owner)身份。通过 chown 命令,可以将文件或目录的所有权转移给另一个用户或组,从而控制对该文件或目录的访问和权限。 二、chown 的参数说明 使用语法:chown [新所…

常平镇仿做网站贵州公明建设投资咨询有限公司官方网站

【26.4K⭐】ShareX:一款开源免费、功能强大且丰富的截屏录屏软件 在日常工作、学习和娱乐过程中,我们经常需要截取屏幕或者录制屏幕上特定区域中的内容并进行标记、编辑等操作。无论是为了记录重要的信息、分享有趣的内容,还是为了制作教程和…

济宁建设局网站招聘会现在哪个电商平台比较好做

开头 通常作为一个Android APP开发者,我们并不关心Android的源代码实现,不过随着Android开发者越来越多,企业在筛选Android程序员时越来越看中一个程序员对于Android底层的理解和思考,这里的底层主要就是Android Framewok中各个组…

代做毕业设计网站 道路桥梁wordpress热门文章代码

C中,我们一般可以以基类声明纯虚函数,然后让派生类继承并重写这个虚函数,用​override表示显示覆盖基类方法,但一直没有提供一种方法来阻止派生类继承基类的虚函数。 C11标准引入了final说明符,很好的解决了上面的问题…

湛江网站建设运营方案六安城市网怎么样

1.引入 在Servlet3.0以后的版本提供了Servlet注解配置&#xff0c;大大简化了代码编写。它可以替代xml文件的配置 2.代码实现 <1>注解开发代码如下&#xff1a; WebServlet(value "/servlet1", initParams {WebInitParam(name "charset", val…

网上的网站模板怎么下载网站建设公司有

4、流动布局(fluidgrid)“流动布局”的含义是&#xff0c;各个区块的位置都是浮动的&#xff0c;不是固定不变的。.main{float:right;width:70%;}.leftBar{float:left;width:25%;}float的好处是&#xff0c;如果宽度太小&#xff0c;放不下两个元素&#xff0c;后面的元素会自动…

自己做网站有哪些方法呢网站导航的分类有哪些

1 web开发 Spring boot web 开发非常简单&#xff0c;其中包括常用的 json输出、filters、property、log等 1.1 json接口开发 在以前的Spring 开发我么提供json 的做法&#xff1a; 添加jackjson 等相关jar包配置Spring controller扫描对接的方法添加ResponseBody 而在Spri…

推广网站多少钱wordpress画栏

嘿&#xff0c;大家好&#xff01;今天我们来聊一聊深度学习领域的一位“大明星”——Transformer模型。这个模型的提出可不得了&#xff0c;让自然语言处理领域焕发了新生。 在深度学习领域&#xff0c;Transformer模型架构的引入标志着一场革命&#xff0c;它改变了自然语言处…

搜索引擎关键词快速优化seo免费视频教程

在TCP通信过程中&#xff0c;服务器端启动之后可以同时和多个客户端建立连接&#xff0c;并进行网络通信&#xff0c;但是在一个单进程的服务器的时候&#xff0c;提供的服务器代码却不能完成这样的需求&#xff0c;先简单的看一下之前的服务器代码的处理思路&#xff0c;再来分…

广州网站设计后缀wordpress keywords

在Linux中wheel组就类似于一个管理员的组。 通常在Linux下&#xff0c;即使我们有系统管理员root的权限&#xff0c;也不推荐用root用户登录。一般情况下用普通用户登录就可以了&#xff0c;在需要root权限执行一些操作时&#xff0c;再su登录成为root用户。但是&#xff0c;任…

网站推广营销应该怎么做企业网站建设问卷

意图 将抽象部分与它的实现部分分离&#xff0c;使他们可以独立地变化 个人理解 一句话概括就是只要是在抽象类中聚合了某个接口或者抽象类&#xff0c;就是使用了桥接模式。 抽象类A中聚合了抽象类B&#xff08;或者接口B&#xff09;&#xff0c;A的子类的方法中在相同的场…

杭州做网站费用lnmp 502 wordpress

BF算法、男朋友算法&#xff0c;哈哈 要实现动态分区分配&#xff0c;需要考虑三个方面的问题。分别是数据结构、分区分配算法、分区的分配与回收操作。 首数据结构 这里我们使用的是空闲分区链&#xff0c;采用双向链表表示空闲分区。 具体实现如下&#xff1a; typedef …

在线自助网站按照程序邯郸做网站公司哪家好

基于MATLAB的最大误差双圆弧逼近曲线的算法及实现.pdf第31卷第6期 基于MⅢB的最大误差双圆弧逼近曲线的算法及实现文章编号&#xff1a;1004—2539120町】06一唧一∞基于MAⅡ&#xff0e;AB的最大误差双圆弧逼近曲线的算法及实现淮海工学院机械工程系&#xff0c;扛苏连云港笠a…