Qt IFW创建安装程序 4

在准备好程序的目录结构之后,接下来的任务就是要创建安装程序,这通常有很多好处:

  • 压缩软件的大小;

  • 简化软件的安装过程;

  • 提供亲切、友好的操作界面;

  • 保护软件的完整性,避免被盗版、破解或植入病毒。

那么,如何通过 Qt IFW 创建安装程序呢?一起来看看吧!

 

1    创建包目录

打包的第一步,先要创建一个类似于下面这样的包目录(必须包含 config 和 packages 子目录),以反映安装程序的设计并允许将来扩展:

 

Qt IFW创建安装程序 4_第1张图片

 

如果不想手动创建,有一个简单的办法:从 Qt IFW 安装目录下的 examples 里复制一份,然后在该基础上进行修改。

 

2    创建配置文件

 

为了自定义安装程序的 UI 和行为,我们需要创建一个配置文件,该文件通常被命名为 config.xml,位于 config 目录中。

配置文件由根元素 组成,并且必须包含子元素 。但是其他子元素是可选的,而且可以以任意顺序出现。

来看一个典型的配置文件:



    MyApp
    1.0.0
    MyApp Installer
    Waleon
    IFW Examples
    @ApplicationsDir@/MyApp

 

其中,各个元素的含义如下所示:

元素 描述
</td> <td>标题栏上的安装程序名称</td> </tr> <tr> <td><Name></td> <td>被添加到页面名称和简介文本中的应用程序名称</td> </tr> <tr> <td><Version></td> <td>程序的版本号</td> </tr> <tr> <td><Publisher></td> <td>软件的发布者(如 Windows 控制面板中所示)</td> </tr> <tr> <td><StartMenuDir></td> <td>Windows 开始菜单中产品的默认程序组名称</td> </tr> <tr> <td><TargetDir></td> <td>程序安装的目标路径</td> </tr> </tbody> </table> <p>最终,这些信息将被显示在介绍页面上:</p> <p><a href="http://img.e-com-net.com/image/info8/d47cd5fd9a5144c8b8dc36a0e3a650c6.png" target="_blank"><img alt="Qt IFW创建安装程序 4_第2张图片" class="has" src="http://img.e-com-net.com/image/info8/d47cd5fd9a5144c8b8dc36a0e3a650c6.png" width="502" height="361" style="border:1px solid black;"></a></p> <p> </p> <p><a href="http://img.e-com-net.com/image/info8/b063b62070584658b5c505ce9672722c.png" target="_blank"><img alt="Qt IFW创建安装程序 4_第3张图片" class="has" src="http://img.e-com-net.com/image/info8/b063b62070584658b5c505ce9672722c.png" width="502" height="361" style="border:1px solid black;"></a></p> <p> </p> <p><a href="http://img.e-com-net.com/image/info8/726c37d693a448d6a1c770cbb9f73c92.png" target="_blank"><img alt="Qt IFW创建安装程序 4_第4张图片" class="has" src="http://img.e-com-net.com/image/info8/726c37d693a448d6a1c770cbb9f73c92.png" width="502" height="361" style="border:1px solid black;"></a></p> <p> </p> <p>有关配置文件的格式和可用元素的更多信息,请参见 Configuration File(https://doc.qt.io/qtinstallerframework/ifw-globalconfig.html)。</p> <p> </p> <p><strong>3    创建包信息文件</strong></p> <p>对于我们来说,安装程序只处理一个组件 - com.waleon.ifw。<code>要向安装程序提供有关组件的信息,需要创建一个名为 package.xml 的文件,并将其放在 meta 目录中。</code></p> <p>以下是我们为组件提供的一些信息:</p> <pre class="has"><code><?xml version="1.0" encoding="UTF-8"?> <Package>     <DisplayName>MyApp</DisplayName>     <Description>The first ifw installer.</Description>     <Version>1.0.0-1</Version>     <ReleaseDate>2019-10-12</ReleaseDate>     <Default>true</Default>     <Script>installscript.qs</Script> </Package> </code></pre> <p> </p> <p>其中,各个元素的含义如下所示:</p> <table> <thead> <tr> <th>元素</th> <th>描述</th> </tr> </thead> <tbody> <tr> <td><DisplayName></td> <td>组件的名称</td> </tr> <tr> <td><Description></td> <td>组件的描述信息</td> </tr> <tr> <td><Version</td> <td>组件的版本号(当有可用的版本时,用于推广更新)</td> </tr> <tr> <td><ReleaseDate></td> <td>组件的发布日期</td> </tr> <tr> <td><Default></td> <td>如果在安装程序中预先选择了组件,则为 true。</td> </tr> <tr> <td><Script></td> <td>JavaScript 文件名,用于在加载时执行一些安装操作。</td> </tr> </tbody> </table> <p> </p> <p>最终,这些信息将被显示在组件页面上:</p> <p> </p> <p><a href="http://img.e-com-net.com/image/info8/5b5d07e7510d441fad630472d5569dcb.png" target="_blank"><img alt="Qt IFW创建安装程序 4_第5张图片" class="has" src="http://img.e-com-net.com/image/info8/5b5d07e7510d441fad630472d5569dcb.png" width="502" height="361" style="border:1px solid black;"></a></p> <p> </p> <p>有关包信息文件的更多信息,请参见 Package Information File Syntax(https://doc.qt.io/qtinstallerframework/ifw-component-description.html#package-information-file-syntax)。</p> <p> </p> <p> </p> <p><strong>4    添加到开始菜单</strong></p> <p><code>如果要添加开始菜单快捷方式,则需要用到(由上述 <Script> 元素指定的)脚本文件 - installscript.qs:</code></p> <pre class="has"><code>function Component() {     // 默认构造 } Component.prototype.createOperations = function() {     // 调用默认实现     component.createOperations();     // 添加开始菜单     if (systemInfo.productType === "windows") {         component.addOperation("CreateShortcut",                            "@TargetDir@/bin/MyApp.exe",                            "@StartMenuDir@/MyApp.lnk",                            "workingDirectory=@TargetDir@");     } } </code></pre> <p> </p> <p>当程序安装完成之后,就能在开始菜单中找到了:</p> <p> </p> <p><a href="http://img.e-com-net.com/image/info8/fb11a4657ca44cecbc48d981541bc4ed.jpg" target="_blank"><img alt="Qt IFW创建安装程序 4_第6张图片" class="has" src="http://img.e-com-net.com/image/info8/fb11a4657ca44cecbc48d981541bc4ed.jpg" width="322" height="274" style="border:1px solid black;"></a></p> <p> </p> <p> </p> <p><strong>5    准备打包文件</strong></p> <p> </p> <p><code>Tips:</code>data 目录用于存放最终要打包的文件(.exe、.dll 等)。Qt IFW 在制作安装程序时,会用自带的 archivegen 工具将这些文件压缩成 7zip 格式;然后在安装时,再从压缩包中将它们提取出来。</p> <p> </p> <p>这是最简单,也是最关键的一环。由于在《准备 Qt 安装包》一节中,我们已经组织好了程序结构,现在只需要将其拷贝到 data 目录下即可:</p> <p><a href="http://img.e-com-net.com/image/info8/905eaf034808470e9ff991bff9588d7f.jpg" target="_blank"><img alt="Qt IFW创建安装程序 4_第7张图片" class="has" src="http://img.e-com-net.com/image/info8/905eaf034808470e9ff991bff9588d7f.jpg" width="576" height="167" style="border:1px solid black;"></a></p> <p>当一切准备就绪,就可以创建第一个安装程序了。</p> <p> </p> <p><strong>6    生成安装程序</strong></p> <p> </p> <p>要生成安装程序,需要借助 Qt IFW 提供的 binarycreator 工具(参考:https://doc.qt.io/qtinstallerframework/ifw-tools.html#binarycreator)。这个工具十分强大,除了创建离线/在线安装程序之外,还支持像 -v 这样的选项,以便于调试输出。</p> <p> </p> <p>打开 CMD(或者 PowerShell),并进入包目录 deploy,然后输入</p> <pre class="has"><code> binarycreator -c config\config.xml -p packages MyInstaller.exe -v</code></pre> <p>命令。</p> <p> </p> <p><a href="http://img.e-com-net.com/image/info8/4cda0ac1ffca46159a9e16471bc4a559.jpg" target="_blank"><img alt="Qt IFW创建安装程序 4_第8张图片" class="has" src="http://img.e-com-net.com/image/info8/4cda0ac1ffca46159a9e16471bc4a559.jpg" width="650" height="477" style="border:1px solid black;"></a></p> <p> </p> <p>待执行成功之后,会生成一个名为 MyInstaller.exe 的安装程序:</p> <p> </p> <p><a href="http://img.e-com-net.com/image/info8/7b700c0f0ae542a88ae39d1ab9a9c613.jpg" target="_blank"><img alt="Qt IFW创建安装程序 4_第9张图片" class="has" src="http://img.e-com-net.com/image/info8/7b700c0f0ae542a88ae39d1ab9a9c613.jpg" width="472" height="142" style="border:1px solid black;"></a></p> <p> </p> <p>不要忘了测试一下,看最终的安装效果是否如预期一样?程序的各项功能是否正常?假如没有任何问题,便可以将其交付给最终用户了。</p> <p> </p> <p><strong>                                                                                         高效程序员</strong></p> <p style="text-align:center;"><img alt="" class="has" src="http://img.e-com-net.com/image/info8/7e15048b57f04cc6bd284cb18a6ef301.jpg" width="0" height="0"></p> <div>   </div> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1282330766738472960"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(QT)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1835509391361667072.htm" title="Linux下QT开发的动态库界面弹出操作(SDL2)" target="_blank">Linux下QT开发的动态库界面弹出操作(SDL2)</a> <span class="text-muted">13jjyao</span> <a class="tag" taget="_blank" href="/search/QT%E7%B1%BB/1.htm">QT类</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/sdl2/1.htm">sdl2</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>需求:操作系统为linux,开发框架为qt,做成需带界面的qt动态库,调用方为java等非qt程序难点:调用方为java等非qt程序,也就是说调用方肯定不带QApplication::exec(),缺少了这个,QTimer等事件和QT创建的窗口将不能弹出(包括opencv也是不能弹出);这与qt调用本身qt库是有本质的区别的思路:1.调用方缺QApplication::exec(),那么我们在接口</div> </li> <li><a href="/article/1835503965563875328.htm" title="python os.environ_python os.environ 读取和设置环境变量" target="_blank">python os.environ_python os.environ 读取和设置环境变量</a> <span class="text-muted">weixin_39605414</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/os.environ/1.htm">os.environ</a> <div>>>>importos>>>os.environ.keys()['LC_NUMERIC','GOPATH','GOROOT','GOBIN','LESSOPEN','SSH_CLIENT','LOGNAME','USER','HOME','LC_PAPER','PATH','DISPLAY','LANG','TERM','SHELL','J2REDIR','LC_MONETARY','QT_QPA</div> </li> <li><a href="/article/1835454795712917504.htm" title="esp32开发快速入门 8 : MQTT 的快速入门,基于esp32实现MQTT通信" target="_blank">esp32开发快速入门 8 : MQTT 的快速入门,基于esp32实现MQTT通信</a> <span class="text-muted">z755924843</span> <a class="tag" taget="_blank" href="/search/ESP32%E5%BC%80%E5%8F%91%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8/1.htm">ESP32开发快速入门</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>MQTT介绍简介MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联</div> </li> <li><a href="/article/1835446595966038016.htm" title="基于STM32与Qt的自动平衡机器人:从控制到人机交互的的详细设计流程" target="_blank">基于STM32与Qt的自动平衡机器人:从控制到人机交互的的详细设计流程</a> <span class="text-muted">极客小张</span> <a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E4%BA%BA/1.htm">机器人</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91/1.htm">物联网</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E6%9C%BA%E4%BA%A4%E4%BA%92/1.htm">人机交互</a><a class="tag" taget="_blank" href="/search/%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">毕业设计</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a> <div>一、项目概述目标和用途本项目旨在开发一款基于STM32控制的自动平衡机器人,结合步进电机和陀螺仪传感器,实现对平衡机器人的精确控制。该机器人可以用于教育、科研、娱乐等多个领域,帮助用户了解自动控制、机器人运动学等相关知识。技术栈关键词STM32单片机步进电机陀螺仪传感器AD采集电路Qt人机界面实时数据监控二、系统架构系统架构设计本项目的系统架构设计包括以下主要组件:控制单元:STM32单片机传感器</div> </li> <li><a href="/article/1835441932583661568.htm" title="ESP32-C3入门教程 网络篇⑩——基于esp_https_ota和MQTT实现开机主动升级和被动触发升级的OTA功能" target="_blank">ESP32-C3入门教程 网络篇⑩——基于esp_https_ota和MQTT实现开机主动升级和被动触发升级的OTA功能</a> <span class="text-muted">小康师兄</span> <a class="tag" taget="_blank" href="/search/ESP32-C3%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B/1.htm">ESP32-C3入门教程</a><a class="tag" taget="_blank" href="/search/https/1.htm">https</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/esp32/1.htm">esp32</a><a class="tag" taget="_blank" href="/search/OTA/1.htm">OTA</a><a class="tag" taget="_blank" href="/search/MQTT/1.htm">MQTT</a> <div>文章目录一、前言二、软件流程三、部分源码四、运行演示一、前言本文基于VSCodeIDE进行编程、编译、下载、运行等操作基础入门章节请查阅:ESP32-C3入门教程基础篇①——基于VSCode构建HelloWorld教程目录大纲请查阅:ESP32-C3入门教程——导读ESP32-C3入门教程网络篇⑨——基于esp_https_ota实现史上最简单的ESP32OTA远程固件升级功能二、软件流程</div> </li> <li><a href="/article/1835334253374697472.htm" title="漫谈QWidget及其派生类(二)" target="_blank">漫谈QWidget及其派生类(二)</a> <span class="text-muted">Caiaolun</span> <div>原文地址:https://blog.csdn.net/dbzhang800/article/details/6741344上一部分漫谈QWidget及其派生类(一)介绍了QWidget及其派生类,分:窗口、普通控件两种类型(其实有个Qt::SubWindow没有提,不过本系列中也没有介绍它的打算,因为我不熟)。本文接下来试图看看QLayout与窗口的几何尺寸控制。注意:本文只是试图解释,QLayo</div> </li> <li><a href="/article/1835318142319030272.htm" title="【解决内存泄漏的问题】 Qt 框架中的父子对象关系会自动管理内存,父对象会在其销毁时自动销毁所有子对象。" target="_blank">【解决内存泄漏的问题】 Qt 框架中的父子对象关系会自动管理内存,父对象会在其销毁时自动销毁所有子对象。</a> <span class="text-muted">课堂随想</span> <a class="tag" taget="_blank" href="/search/QT/1.htm">QT</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a> <div>修改前的代码这段代码可能会出现内存泄漏问题,主要原因是构造函数中创建的LoginDialog和RegisterDialog对象未在合适的地方被正确释放。具体分析如下:1.构造函数中的问题_login_dlg=newLoginDialog();setCentralWidget(_login_dlg);_login_dlg->show();connect(_login_dlg,&LoginDialog</div> </li> <li><a href="/article/1835275229799215104.htm" title="MacOS Catalina 从源码构建Qt6.2开发库之01: 编译Qt6.2源代码" target="_blank">MacOS Catalina 从源码构建Qt6.2开发库之01: 编译Qt6.2源代码</a> <span class="text-muted">捕鲸叉</span> <a class="tag" taget="_blank" href="/search/QT/1.htm">QT</a><a class="tag" taget="_blank" href="/search/macos/1.htm">macos</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/QT/1.htm">QT</a> <div>安装xcode,cmake,ninjabrewinstallnodemac下安装OpenGL库并使之对各项目可见在macOS上安装OpenGL通常涉及到安装一些依赖库,如MGL、GLUT或者是GLEW等,同时确保LLVM的OpenGL框架和相关工具链的兼容性。以下是一个基本的安装步骤,你可以在终端中执行:安装Homebrew(如果还没有安装的话):/bin/bash-c"$(curl-fsSLht</div> </li> <li><a href="/article/1835132362019663872.htm" title="Linux删除监听端口进程,linux只端口监听及杀死进程" target="_blank">Linux删除监听端口进程,linux只端口监听及杀死进程</a> <span class="text-muted">探旅</span> <a class="tag" taget="_blank" href="/search/Linux%E5%88%A0%E9%99%A4%E7%9B%91%E5%90%AC%E7%AB%AF%E5%8F%A3%E8%BF%9B%E7%A8%8B/1.htm">Linux删除监听端口进程</a> <div>itextpdf生成pdf文件一.简介itextpdf是一个开源的允许你去创建和操作PDF文档的库.它使的开发者可以提高web和其他应用来动态地生成或操作PDF文档.通过iText中的Document和PdfWriter类,...QtSizePolicy属性控件的sizePolicy说明控件在布局管理中的缩放方式.Qt提供的控件都有一个合理的缺省sizePolicy,但是这个缺省值有时不能适合所有</div> </li> <li><a href="/article/1835127816467869696.htm" title="Pyqt5实现listwidget自定义右键菜单" target="_blank">Pyqt5实现listwidget自定义右键菜单</a> <span class="text-muted">Saudade957</span> <a class="tag" taget="_blank" href="/search/pyqt5%E5%89%8D%E7%AB%AF/1.htm">pyqt5前端</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/1.htm">编程语言</a> <div>Pyqt5实现listwidget自定义右键菜单基于网上搜到的各种教程失败以后(ps:可能有的可以成功,但是我都没成功),组合了一下一些代码最终成功实现相关内容。首先在ui文件生成的py文件中添加self.listWidget.setContextMenuPolicy(Qt.CustomContextMenu)self.listWidget.customContextMenuRequested.c</div> </li> <li><a href="/article/1835125163260211200.htm" title="【十八】【QT开发应用】标签页QTabWidget的常见用法" target="_blank">【十八】【QT开发应用】标签页QTabWidget的常见用法</a> <span class="text-muted">妖精七七_</span> <a class="tag" taget="_blank" href="/search/QT%E5%BC%80%E5%8F%91%E5%BA%94%E7%94%A8/1.htm">QT开发应用</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>#include"widget.h"//包含自定义的widget头文件#include//包含QHBoxLayout头文件,用于水平布局#include//包含QTabWidget头文件,用于创建标签页控件#include//包含QDebug头文件,用于调试输出widget::widget(QWidget*parent)//widget类的构造函数:QWidget(parent)//调用基类QWi</div> </li> <li><a href="/article/1835058862252716032.htm" title="python做窗口软件界面绑定py程序_PyCharm GUI界面开发和exe文件生成的实现" target="_blank">python做窗口软件界面绑定py程序_PyCharm GUI界面开发和exe文件生成的实现</a> <span class="text-muted">weixin_39948442</span> <div>一、安装Python二、安装PyQt5推荐使用pip安装:win+R调出cmd命令窗口pipinstallPyQt5等待片刻,继续安装PyQt5-toolspipinstallPyQt5-tools如果直接pip不成功的话,建议在python库这个网站上搜索相关库,下载相应的.whl文件,然后用以下方法进行安装:①pipwhl文件所在路径whl文件名②在cmd命令窗口先执行cdwhl文件所在路径到</div> </li> <li><a href="/article/1835039192204275712.htm" title="QT 自定义组件 界面跳转" target="_blank">QT 自定义组件 界面跳转</a> <span class="text-muted">子座</span> <a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>一、引用组件需要的类(头文件)1、按钮类QPushButton:普通按钮;QToolButton:工具按钮;QRadioButton:单选按钮;QCheckBox:复选按钮;QCommandLinkButton:命令连接按钮;2、布局类QHBoxLayout水平QVBoxLayout垂直QGridLayout网格QFormLayout表单QSrackedLayout.堆栈3、输出类QLabel:标</div> </li> <li><a href="/article/1835025325067694080.htm" title="【QT教程】QT6硬件图形界面编程 QT硬件编程" target="_blank">【QT教程】QT6硬件图形界面编程 QT硬件编程</a> <span class="text-muted">QT性能优化QT原理源码QT界面美化</span> <a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/qt6.3/1.htm">qt6.3</a><a class="tag" taget="_blank" href="/search/qt5/1.htm">qt5</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/QT%E6%95%99%E7%A8%8B/1.htm">QT教程</a> <div>QT6硬件图形界面编程使用AI技术辅助生成QT界面美化视频课程QT性能优化视频课程QT原理与源码分析视频课程QTQMLC++扩展开发视频课程免费QT视频课程您可以看免费1000+个QT技术视频免费QT视频课程QT统计图和QT数据可视化视频免费看免费QT视频课程QT性能优化视频免费看免费QT视频课程QT界面美化视频免费看1QT6硬件图形界面编程概述1.1QT6硬件图形界面编程简介1.1.1QT6硬件</div> </li> <li><a href="/article/1835022554331443200.htm" title="【Qt】之【Bug】LNK2019: 无法解析的外部符号 __imp_FindWindowW" target="_blank">【Qt】之【Bug】LNK2019: 无法解析的外部符号 __imp_FindWindowW</a> <span class="text-muted">Htht111</span> <a class="tag" taget="_blank" href="/search/Qt/1.htm">Qt</a><a class="tag" taget="_blank" href="/search/bug/1.htm">bug</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/bug/1.htm">bug</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>QTerror:LNK2019:无法解析的外部符号__imp__SendMessageW@类型的错误以及pragmacomment的作用(用法)添加头文件出错的cpp文件加入以下代码#pragmacomment(lib,"User32.lib")ps:尝试pro添加-lUser32,没用</div> </li> <li><a href="/article/1835022426036072448.htm" title="Qt QTableWidget 触摸屏上滑动效果" target="_blank">Qt QTableWidget 触摸屏上滑动效果</a> <span class="text-muted">hss2799</span> <a class="tag" taget="_blank" href="/search/Qt/1.htm">Qt</a> <div>要实现QTableWidget在触摸屏上,滑动记录,记录会跟着滑动,只需要加QScroller*pScroller=QScroller::scroller(tablewidget);pScroller->grabGesture(tablewidget,QScroller::LeftMouseButtonGesture);tablewidget->setVerticalScrollMode(QLis</div> </li> <li><a href="/article/1835009059401592832.htm" title="QT与Python混合编程经验记录" target="_blank">QT与Python混合编程经验记录</a> <span class="text-muted">weixin_30237281</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/c%2Fc%2B%2B/1.htm">c/c++</a> <div>1、如何embeddingpython,Python文档中有专门一章阐述https://docs.python.org/3.5/extending/embedding.htm;1、库文件:在vs--c/c++--附加包含文件中添加目;链接中也要添加,:将python中的include,libs二个目录添加进来2、对于Python,没有调试库,可直接将运行库复制一份,名称后面加上_d,就可用,可不能</div> </li> <li><a href="/article/1834956093810372608.htm" title="QMQTT在项目中的用法" target="_blank">QMQTT在项目中的用法</a> <span class="text-muted">好学松鼠</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a> <div>在一次项目实践中,需要使用MQTT协议向服务器发送数据,经过了解之后MQTT协议底层是基于TCP协议的。正好使用QT在开发项目,就在网上搜索了MQTT相关的开源三方库,因此就找到了基于QT的QMQTT的库。QMQTT库的源码可以再github或者gitee上获取到,具体的用法如下:1、初始化QMQTT#include"qmqtt.h"//服务器IP端口QMQTT::Client*client=ne</div> </li> <li><a href="/article/1834933913856864256.htm" title="C# Linq语句用法大全以及Lambda表达式" target="_blank">C# Linq语句用法大全以及Lambda表达式</a> <span class="text-muted">一个小码码</span> <a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/linq/1.htm">linq</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a> <div>C#Linq语句用法大全以及Lambda表达式Linq:是一种用于数据查询和操作的语言集成查询(LanguageIntegratedQuery)技术。通过Linq,我们可以使用类似于SQL查询的方式来查询、筛选和操作各种类型的数据集合,包括数组、列表、集合、XML文档、数据库表等等。常见的有:LinqtoObjects:用于操作对象集合,例如数组、列表等。LinqtoXML:用于操作XML数据,支</div> </li> <li><a href="/article/1834882604164280320.htm" title="4G MQTT网关在物联网应用中的优势-天拓四方" target="_blank">4G MQTT网关在物联网应用中的优势-天拓四方</a> <span class="text-muted">北京天拓四方</span> <a class="tag" taget="_blank" href="/search/%E8%BE%B9%E7%BC%98%E8%AE%A1%E7%AE%97/1.htm">边缘计算</a><a class="tag" taget="_blank" href="/search/iot/1.htm">iot</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91/1.htm">物联网</a><a class="tag" taget="_blank" href="/search/%E5%85%B6%E4%BB%96/1.htm">其他</a> <div>随着物联网(IoT)技术的飞速发展,各种设备和系统之间的互联互通变得日益重要。MQTT(MessageQueuingTelemetryTransport)作为一种轻量级的发布/订阅消息传输协议,因其高效、可靠、简单的特性,在物联网领域得到了广泛的应用。而4GMQTT网关,作为连接物联网设备和MQTT服务器的桥梁,其在物联网应用中的作用愈发凸显。本文将探讨4GMQTT网关在物联网应用中的优势。4GM</div> </li> <li><a href="/article/1834873402448506880.htm" title="Linux 帧缓存 数据,嵌入式Linux通过帧缓存截图 – Framebuffer Screenshot in Embedded Linux..." target="_blank">Linux 帧缓存 数据,嵌入式Linux通过帧缓存截图 – Framebuffer Screenshot in Embedded Linux...</a> <span class="text-muted">weixin_39578674</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/%E5%B8%A7%E7%BC%93%E5%AD%98/1.htm">帧缓存</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE/1.htm">数据</a> <div>嵌入式Linux通过帧缓存截图–EmbeddedLinuxFramebufferScreenshot【目的】板子上已经可以运行Qtopia的demo和example了,想要将其qt的demo程序的画面截取下来,给其他人看。最原始的方法就是,找个相机,对着板子照几张即可。另外的办法,通过framebuffer去截图,截取运行中的qtdemo的画面,效果会更好,图片也更清晰。【解决过程】1.将fram</div> </li> <li><a href="/article/1834841155859214336.htm" title="Qt控件编辑功能(二)" target="_blank">Qt控件编辑功能(二)</a> <span class="text-muted">雨田哥工作号</span> <div>简述根据QtDesigner的控件选中,拉伸效果,用过Qt的盆友都很熟悉Qt的Designer,这个我就不多说了,我们先看看QtDesigner中的效果QtDesigner效果图图这里写图片描述模仿功能介绍1.支持选中效果;2.支持自由拉伸效果;3.支持双击鼠标左键编辑功能;4.支持键盘↑↓←→按键移动;5.支持按住ctrl+鼠标左键多选控件功能;6.支持键盘delete键,删除选中控件功能;模仿</div> </li> <li><a href="/article/1834792851813265408.htm" title="Qt框架在跨平台应用开发中的优势" target="_blank">Qt框架在跨平台应用开发中的优势</a> <span class="text-muted">NewmanEdwarda2</span> <a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>随着软件技术的不断发展,跨平台应用开发已成为软件开发领域的一个重要趋势。在众多跨平台开发框架中,Qt因其强大的功能和灵活性而备受开发者的青睐。本文将从多个方面详细探讨Qt框架在跨平台应用开发中的优势。一、跨平台兼容性Qt框架最显著的优势之一就是其卓越的跨平台兼容性。Qt支持多种操作系统,包括Windows、Linux、macOS、Android、iOS等,使得开发者能够使用同一套代码库为不同平台开</div> </li> <li><a href="/article/1834726292675719168.htm" title="EG边缘计算网关连接中移ONENET物联网平台(MQTT协议)" target="_blank">EG边缘计算网关连接中移ONENET物联网平台(MQTT协议)</a> <span class="text-muted">成都纵横智控科技官方账号</span> <a class="tag" taget="_blank" href="/search/%E8%BE%B9%E7%BC%98%E8%AE%A1%E7%AE%97%E7%BD%91%E5%85%B3/1.htm">边缘计算网关</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91/1.htm">物联网</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%B8%9A%E7%BD%91%E5%85%B3/1.htm">工业网关</a><a class="tag" taget="_blank" href="/search/%E8%BE%B9%E7%BC%98%E8%AE%A1%E7%AE%97/1.htm">边缘计算</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91/1.htm">物联网</a><a class="tag" taget="_blank" href="/search/MQTT/1.htm">MQTT</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E7%A7%BBONENET/1.htm">中移ONENET</a> <div>上文:EG边缘计算网关连接阿里云物联网平台(MQTT协议)需求概述本章节主要实现一个流程:EG8200mini采集ModbusRTU数据,通过MQTT协议连接中移ONENET物联网平台ModbusRTU采集此处不做过多赘述,可参考其他案例(串口读取Modbus传感器数据)介绍。下文默认已经采集到ModbusRTU数据。要采集的Modbus点位表:地址(Doc)数据类型属性名称00001Boolea</div> </li> <li><a href="/article/1834683058045939712.htm" title="qt 创建随机数" target="_blank">qt 创建随机数</a> <span class="text-muted">入梦游</span> <a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a> <div>qt中有两种创建随机数的方法,一种是旧方法,一种是新方法目录旧方法:已过时intqrand()voidqsrand(uintseed)Example新方法QRandomGenerator::global()->bouned(inthighest)QRandomGenerator::global()->generate()更多旧方法:已过时intqrand()生成一个伪随机数,可以使用qsrand(</div> </li> <li><a href="/article/1834675368628416512.htm" title="Qt控件提升为自定义类" target="_blank">Qt控件提升为自定义类</a> <span class="text-muted">虾米小小小</span> <a class="tag" taget="_blank" href="/search/Qt/1.htm">Qt</a> <div>今天在提升QLabel控件为自定义控件时,发现弹出的对话框里没有直接出现我的新Label类,后来手动填写自定义类名才添加上去,后边还出现“Notused”,吓我一跳,不过还好能识别。像QtCreator中UI界面中的奇葩问题也还遇到过几个,比如在UI界面拖拽控件调整位置时,有时控件会突然隐藏,不管怎么选都选不中,不过右侧列表中还有控件名称,直接剪切复制也就出来了,Crtl+Z都不行,你说气不气;还</div> </li> <li><a href="/article/1834567726618734592.htm" title="【项目实践】Pyside6+Qtdesigner:登录窗体设计" target="_blank">【项目实践】Pyside6+Qtdesigner:登录窗体设计</a> <span class="text-muted">climber1121</span> <a class="tag" taget="_blank" href="/search/Python%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/1.htm">Python项目实战</a><a class="tag" taget="_blank" href="/search/QT/1.htm">QT</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>代码功能:可实现应用程序用户管理,实现用户登录、注册、密码修改代码文档结构:user_database.db:数据库文件,用于存储用户数据,第一运行代码时自动生成login.ui:UI文件,由QT设计ui_login.py(由login.ui编译过来)在终端WindowsPowerShell运行如下代码即可生成pyside6-uiclogin.ui-oui_login.pytest_login.p</div> </li> <li><a href="/article/1834455222802542592.htm" title="Ubuntu+Qt+SDL2+FFmpeg" target="_blank">Ubuntu+Qt+SDL2+FFmpeg</a> <span class="text-muted">DarcyZhou</span> <div>此文档用于Ubuntu系统中搭建FFmpeg的开发环境。Qt作为开发软件,SDL2是一套开放源代码的跨平台多媒体开发库。1.安装Qt(1)下载版本:qt-opensource-linux-x64-5.9.8.runimage.png(2)安装给文件添加可执行权限:sudochmod-R777qt-opensource-linux-x64-5.9.8.run开始安装:安装过程中选择全部安装即可。(需</div> </li> <li><a href="/article/1834414136197476352.htm" title="python pyqt5 设置控件随窗体拉伸" target="_blank">python pyqt5 设置控件随窗体拉伸</a> <span class="text-muted">SkTj</span> <div>2#--coding:utf-8--'''【简介】布局中用到的addStretch函数例子'''fromPyQt5.QtWidgetsimportQApplication,QWidget,QVBoxLayout,QHBoxLayout,QPushButtonimportsysclassWindowDemo(QWidget):definit(self):super().init()btn1=QPus</div> </li> <li><a href="/article/1834410301819285504.htm" title="QT进行音频录制" target="_blank">QT进行音频录制</a> <span class="text-muted">金博客</span> <a class="tag" taget="_blank" href="/search/Qt/1.htm">Qt</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a> <div>文章目录QT使用`AudioRecorder`进行音频录制首先,确保你的项目文件`.pro`包含多媒体模块:然后,在Qt应用程序中,创建Widget类:小结QT使用AudioRecorder进行音频录制使用Qt框架的AudioRecorder类进行音频录制,可以通过Qt的MultimediaWidgets模块实现。‌首先,确保你的Qt项目中包含了MultimediaWidgets模块‌。这通常在项</div> </li> <li><a href="/article/7.htm" title="LeetCode[位运算] - #137 Single Number II" target="_blank">LeetCode[位运算] - #137 Single Number II</a> <span class="text-muted">Cwind</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a><a class="tag" taget="_blank" href="/search/LeetCode/1.htm">LeetCode</a><a class="tag" taget="_blank" href="/search/%E9%A2%98%E8%A7%A3/1.htm">题解</a><a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a> <div>原题链接:#137 Single Number II  要求: 给定一个整型数组,其中除了一个元素之外,每个元素都出现三次。找出这个元素 注意:算法的时间复杂度应为O(n),最好不使用额外的内存空间   难度:中等   分析: 与#136类似,都是考察位运算。不过出现两次的可以使用异或运算的特性 n XOR n = 0, n XOR 0 = n,即某一</div> </li> <li><a href="/article/134.htm" title="《JavaScript语言精粹》笔记" target="_blank">《JavaScript语言精粹》笔记</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>0、JavaScript的简单数据类型包括数字、字符创、布尔值(true/false)、null和undefined值,其它值都是对象。 1、JavaScript只有一个数字类型,它在内部被表示为64位的浮点数。没有分离出整数,所以1和1.0的值相同。 2、NaN是一个数值,表示一个不能产生正常结果的运算结果。NaN不等于任何值,包括它本身。可以用函数isNaN(number)检测NaN,但是</div> </li> <li><a href="/article/261.htm" title="你应该更新的Java知识之常用程序库" target="_blank">你应该更新的Java知识之常用程序库</a> <span class="text-muted">Kai_Ge</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>在很多人眼中,Java 已经是一门垂垂老矣的语言,但并不妨碍 Java 世界依然在前进。如果你曾离开 Java,云游于其它世界,或是每日只在遗留代码中挣扎,或许是时候抬起头,看看老 Java 中的新东西。 Guava Guava[gwɑ:və],一句话,只要你做Java项目,就应该用Guava(Github)。 guava 是 Google 出品的一套 Java 核心库,在我看来,它甚至应该</div> </li> <li><a href="/article/388.htm" title="HttpClient" target="_blank">HttpClient</a> <span class="text-muted">120153216</span> <a class="tag" taget="_blank" href="/search/httpclient/1.htm">httpclient</a> <div>/** * 可以传对象的请求转发,对象已流形式放入HTTP中 */ public static Object doPost(Map<String,Object> parmMap,String url) { Object object = null; HttpClient hc = new HttpClient(); String fullURL </div> </li> <li><a href="/article/515.htm" title="Django model字段类型清单" target="_blank">Django model字段类型清单</a> <span class="text-muted">2002wmj</span> <a class="tag" taget="_blank" href="/search/django/1.htm">django</a> <div>Django 通过 models 实现数据库的创建、修改、删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField:一个自动递增的整型字段,添加记录时它会自动增长。你通常不需要直接使用这个字段;如果你不指定主键的话,系统会自动添加一个主键字段到你的model。(参阅自动主键字段) BooleanField:布尔字段,管理工具里会自动将其描述为checkbox。 Cha</div> </li> <li><a href="/article/642.htm" title="在SQLSERVER中查找消耗CPU最多的SQL" target="_blank">在SQLSERVER中查找消耗CPU最多的SQL</a> <span class="text-muted">357029540</span> <a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a> <div>返回消耗CPU数目最多的10条语句 SELECT TOP 10    total_worker_time/execution_count AS avg_cpu_cost, plan_handle,    execution_count,    (SELECT SUBSTRING(text, statement_start_of</div> </li> <li><a href="/article/769.htm" title="Myeclipse项目无法部署,Undefined exploded archive location" target="_blank">Myeclipse项目无法部署,Undefined exploded archive location</a> <span class="text-muted">7454103</span> <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/MyEclipse/1.htm">MyEclipse</a> <div>做个备忘! 错误信息为:       Undefined exploded archive location 原因:           在工程转移过程中,导致工程的配置文件出错; 解决方法:    </div> </li> <li><a href="/article/896.htm" title="GMT时间格式转换" target="_blank">GMT时间格式转换</a> <span class="text-muted">adminjun</span> <a class="tag" taget="_blank" href="/search/GMT/1.htm">GMT</a><a class="tag" taget="_blank" href="/search/%E6%97%B6%E9%97%B4%E8%BD%AC%E6%8D%A2/1.htm">时间转换</a> <div>普通的时间转换问题我这里就不再罗嗦了,我想大家应该都会那种低级的转换问题吧,现在我向大家总结一下如何转换GMT时间格式,这种格式的转换方法网上还不是很多,所以有必要总结一下,也算给有需要的朋友一个小小的帮助啦。 1、可以使用 SimpleDateFormat SimpleDateFormat    EEE-三位星期 d-天 MMM-月 yyyy-四位年 </div> </li> <li><a href="/article/1023.htm" title="Oracle数据库新装连接串问题" target="_blank">Oracle数据库新装连接串问题</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/oracle%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">oracle数据库</a> <div>割接新装了数据库,客户端登陆无问题,apache/cgi-bin程序有问题,sqlnet.log日志如下: Fatal NI connect error 12170.   VERSION INFORMATION:         TNS for Linux: Version 10.2.0.4.0 - Product</div> </li> <li><a href="/article/1150.htm" title="回顾java数组复制" target="_blank">回顾java数组复制</a> <span class="text-muted">ayaoxinchao</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%BB%84/1.htm">数组</a> <div>在写这篇文章之前,也看了一些别人写的,基本上都是大同小异。文章是对java数组复制基础知识的回顾,算是作为学习笔记,供以后自己翻阅。首先,简单想一下这个问题:为什么要复制数组?我的个人理解:在我们在利用一个数组时,在每一次使用,我们都希望它的值是初始值。这时我们就要对数组进行复制,以达到原始数组值的安全性。java数组复制大致分为3种方式:①for循环方式 ②clone方式 ③arrayCopy方</div> </li> <li><a href="/article/1277.htm" title="java web会话监听并使用spring注入" target="_blank">java web会话监听并使用spring注入</a> <span class="text-muted">bewithme</span> <a class="tag" taget="_blank" href="/search/Java+Web/1.htm">Java Web</a> <div>        在java web应用中,当你想在建立会话或移除会话时,让系统做某些事情,比如说,统计在线用户,每当有用户登录时,或退出时,那么可以用下面这个监听器来监听。        import java.util.ArrayList; import java.ut</div> </li> <li><a href="/article/1404.htm" title="NoSQL数据库之Redis数据库管理(Redis的常用命令及高级应用)" target="_blank">NoSQL数据库之Redis数据库管理(Redis的常用命令及高级应用)</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/NoSQL/1.htm">NoSQL</a> <div>一 .Redis常用命令         Redis提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以在Linux终端使用。         a.键值相关命令         b.服务器相关命令 1.键值相关命令       &</div> </li> <li><a href="/article/1531.htm" title="java枚举序列化问题" target="_blank">java枚举序列化问题</a> <span class="text-muted">bingyingao</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%9E%9A%E4%B8%BE/1.htm">枚举</a><a class="tag" taget="_blank" href="/search/%E5%BA%8F%E5%88%97%E5%8C%96/1.htm">序列化</a> <div>对象在网络中传输离不开序列化和反序列化。而如果序列化的对象中有枚举值就要特别注意一些发布兼容问题: 1.加一个枚举值 新机器代码读分布式缓存中老对象,没有问题,不会抛异常。 老机器代码读分布式缓存中新对像,反序列化会中断,所以在所有机器发布完成之前要避免出现新对象,或者提前让老机器拥有新增枚举的jar。 2.删一个枚举值 新机器代码读分布式缓存中老对象,反序列</div> </li> <li><a href="/article/1658.htm" title="【Spark七十八】Spark Kyro序列化" target="_blank">【Spark七十八】Spark Kyro序列化</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a> <div>当使用SparkContext的saveAsObjectFile方法将对象序列化到文件,以及通过objectFile方法将对象从文件反序列出来的时候,Spark默认使用Java的序列化以及反序列化机制,通常情况下,这种序列化机制是很低效的,Spark支持使用Kyro作为对象的序列化和反序列化机制,序列化的速度比java更快,但是使用Kyro时要注意,Kyro目前还是有些bug。 Spark</div> </li> <li><a href="/article/1785.htm" title="Hybridizing OO and Functional Design" target="_blank">Hybridizing OO and Functional Design</a> <span class="text-muted">bookjovi</span> <a class="tag" taget="_blank" href="/search/erlang/1.htm">erlang</a><a class="tag" taget="_blank" href="/search/haskell/1.htm">haskell</a> <div>  推荐博文: Tell Above, and Ask Below - Hybridizing OO and Functional Design 文章中把OO和FP讲的深入透彻,里面把smalltalk和haskell作为典型的两种编程范式代表语言,此点本人极为同意,smalltalk可以说是最能体现OO设计的面向对象语言,smalltalk的作者Alan kay也是OO的最早先驱,</div> </li> <li><a href="/article/1912.htm" title="Java-Collections Framework学习与总结-HashMap" target="_blank">Java-Collections Framework学习与总结-HashMap</a> <span class="text-muted">BrokenDreams</span> <a class="tag" taget="_blank" href="/search/Collections/1.htm">Collections</a> <div>        开发中常常会用到这样一种数据结构,根据一个关键字,找到所需的信息。这个过程有点像查字典,拿到一个key,去字典表中查找对应的value。Java1.0版本提供了这样的类java.util.Dictionary(抽象类),基本上支持字典表的操作。后来引入了Map接口,更好的描述的这种数据结构。  &nb</div> </li> <li><a href="/article/2039.htm" title="读《研磨设计模式》-代码笔记-职责链模式-Chain Of Responsibility" target="_blank">读《研磨设计模式》-代码笔记-职责链模式-Chain Of Responsibility</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ /** * 业务逻辑:项目经理只能处理500以下的费用申请,部门经理是1000,总经理不设限。简单起见,只同意“Tom”的申请 * bylijinnan */ abstract class Handler { /* </div> </li> <li><a href="/article/2166.htm" title="Android中启动外部程序" target="_blank">Android中启动外部程序</a> <span class="text-muted">cherishLC</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>1、启动外部程序 引用自: http://blog.csdn.net/linxcool/article/details/7692374 //方法一 Intent intent=new Intent(); //包名 包名+类名(全路径) intent.setClassName("com.linxcool", "com.linxcool.PlaneActi</div> </li> <li><a href="/article/2293.htm" title="summary_keep_rate" target="_blank">summary_keep_rate</a> <span class="text-muted">coollyj</span> <a class="tag" taget="_blank" href="/search/SUM/1.htm">SUM</a> <div> BEGIN /*DECLARE minDate varchar(20) ; DECLARE maxDate varchar(20) ;*/ DECLARE stkDate varchar(20) ; DECLARE done int default -1; /* 游标中 注册服务器地址 */ DE</div> </li> <li><a href="/article/2420.htm" title="hadoop hdfs 添加数据目录出错" target="_blank">hadoop hdfs 添加数据目录出错</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/hdfs/1.htm">hdfs</a><a class="tag" taget="_blank" href="/search/%E6%89%A9%E5%AE%B9/1.htm">扩容</a> <div>由于原来配置的hadoop data目录快要用满了,故准备修改配置文件增加数据目录,以便扩容,但由于疏忽,把core-site.xml, hdfs-site.xml配置文件dfs.datanode.data.dir 配置项增加了配置目录,但未创建实际目录,重启datanode服务时,报如下错误: 2014-11-18 08:51:39,128 WARN org.apache.hadoop.h</div> </li> <li><a href="/article/2547.htm" title="grep 目录级联查找" target="_blank">grep 目录级联查找</a> <span class="text-muted">dongwei_6688</span> <a class="tag" taget="_blank" href="/search/grep/1.htm">grep</a> <div>       在Mac或者Linux下使用grep进行文件内容查找时,如果给定的目标搜索路径是当前目录,那么它默认只搜索当前目录下的文件,而不会搜索其下面子目录中的文件内容,如果想级联搜索下级目录,需要使用一个“-r”参数: grep -n -r "GET" .   上面的命令将会找出当前目录“.”及当前目录中所有下级目录</div> </li> <li><a href="/article/2674.htm" title="yii 修改模块使用的布局文件" target="_blank">yii 修改模块使用的布局文件</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a><a class="tag" taget="_blank" href="/search/layouts/1.htm">layouts</a> <div>方法一:yii模块默认使用系统当前的主题布局文件,如果在主配置文件中配置了主题比如: 'theme'=>'mythm', 那么yii的模块就使用 protected/themes/mythm/views/layouts 下的布局文件; 如果未配置主题,那么 yii的模块就使用  protected/views/layouts 下的布局文件, 总之默认不是使用自身目录 pr</div> </li> <li><a href="/article/2801.htm" title="设计模式之单例模式" target="_blank">设计模式之单例模式</a> <span class="text-muted">come_for_dream</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/1.htm">单例模式</a><a class="tag" taget="_blank" href="/search/%E6%87%92%E6%B1%89%E5%BC%8F%E9%A5%BF%E6%B1%89%E5%BC%8F/1.htm">懒汉式饿汉式</a><a class="tag" taget="_blank" href="/search/%E5%8F%8C%E9%87%8D%E6%A3%80%E9%AA%8C%E9%94%81%E5%A4%B1%E8%B4%A5/1.htm">双重检验锁失败</a><a class="tag" taget="_blank" href="/search/%E6%97%A0%E5%BA%8F%E5%86%99%E5%85%A5/1.htm">无序写入</a> <div>                今天该来的面试还没来,这个店估计不会来电话了,安静下来写写博客也不错,没事翻了翻小易哥的博客甚至与大牛们之间的差距,基础知识不扎实建起来的楼再高也只能是危楼罢了,陈下心回归基础把以前学过的东西总结一下。   *********************************</div> </li> <li><a href="/article/2928.htm" title="8、数组" target="_blank">8、数组</a> <span class="text-muted">豆豆咖啡</span> <a class="tag" taget="_blank" href="/search/%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">二维数组</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%BB%84/1.htm">数组</a><a class="tag" taget="_blank" href="/search/%E4%B8%80%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">一维数组</a> <div>  一、概念       数组是同一种类型数据的集合。其实数组就是一个容器。   二、好处       可以自动给数组中的元素从0开始编号,方便操作这些元素   三、格式   //一维数组 1,元素类型[] 变量名 = new 元素类型[元素的个数] int[] arr =</div> </li> <li><a href="/article/3055.htm" title="Decode Ways" target="_blank">Decode Ways</a> <span class="text-muted">hcx2013</span> <a class="tag" taget="_blank" href="/search/decode/1.htm">decode</a> <div>A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 Given an encoded message containing digits, det</div> </li> <li><a href="/article/3182.htm" title="Spring4.1新特性——异步调度和事件机制的异常处理" target="_blank">Spring4.1新特性——异步调度和事件机制的异常处理</a> <span class="text-muted">jinnianshilongnian</span> <a class="tag" taget="_blank" href="/search/spring+4.1/1.htm">spring 4.1</a> <div>目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异常处理 Spring4.1新特性——数据库集成测试脚本初始化 Spring4.1新特性——Spring MVC增强 Spring4.1新特性——页面自动化测试框架Spring MVC T</div> </li> <li><a href="/article/3309.htm" title="squid3(高命中率)缓存服务器配置" target="_blank">squid3(高命中率)缓存服务器配置</a> <span class="text-muted">liyonghui160com</span> <div>    系统:centos 5.x   需要的软件:squid-3.0.STABLE25.tar.gz 1.下载squid wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE25.tar.gz tar zxf squid-3.0.STABLE25.tar.gz &&</div> </li> <li><a href="/article/3436.htm" title="避免Java应用中NullPointerException的技巧和最佳实践" target="_blank">避免Java应用中NullPointerException的技巧和最佳实践</a> <span class="text-muted">pda158</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>1) 从已知的String对象中调用equals()和equalsIgnoreCase()方法,而非未知对象。   总是从已知的非空String对象中调用equals()方法。因为equals()方法是对称的,调用a.equals(b)和调用b.equals(a)是完全相同的,这也是为什么程序员对于对象a和b这么不上心。如果调用者是空指针,这种调用可能导致一个空指针异常 Object unk</div> </li> <li><a href="/article/3563.htm" title="如何在Swift语言中创建http请求" target="_blank">如何在Swift语言中创建http请求</a> <span class="text-muted">shoothao</span> <a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/swift/1.htm">swift</a> <div> 概述:本文通过实例从同步和异步两种方式上回答了”如何在Swift语言中创建http请求“的问题。 如果你对Objective-C比较了解的话,对于如何创建http请求你一定驾轻就熟了,而新语言Swift与其相比只有语法上的区别。但是,对才接触到这个崭新平台的初学者来说,他们仍然想知道“如何在Swift语言中创建http请求?”。 在这里,我将作出一些建议来回答上述问题。常见的</div> </li> <li><a href="/article/3690.htm" title="Spring事务的传播方式" target="_blank">Spring事务的传播方式</a> <span class="text-muted">uule</span> <a class="tag" taget="_blank" href="/search/spring%E4%BA%8B%E5%8A%A1/1.htm">spring事务</a> <div>传播方式:        新建事务       required       required_new   - 挂起当前         非事务方式运行       supports   &nbs</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>