石家庄网站建设蓝龙网络推广员招聘

pingmian/2026/1/22 4:12:18/文章来源:
石家庄网站建设蓝龙,网络推广员招聘,免费在线设计,网站建设营销的企业由于实际生产需要#xff0c;软件系统的运行#xff0c;会产生大量的日志文件#xff0c;有时候一天就能产生超过百万条log记录#xff0c;那么为了能够处理日志文件#xff0c;查询并且找到我们想要的报错信息#xff0c;因此不得不考虑怎么实现#xff0c;打开大日志文…由于实际生产需要软件系统的运行会产生大量的日志文件有时候一天就能产生超过百万条log记录那么为了能够处理日志文件查询并且找到我们想要的报错信息因此不得不考虑怎么实现打开大日志文件的可行方法。 在这里我采用的是内存映射的方式去读取文件的日志信息。代码部分如下所示 QFile file(big_path); qint64 fileSize file.size(); // 获取文件的大小 uchar *data file.map(0, fileSize); // 将文件的全部内容映射到内存中返回一个指向该内容的指针 file.close();//文件的关闭不会影响到我们后续的内存映射部分。if (data) { // 如果映射成功QElapsedTimer timer;timer.start();message.clear();QString text QString::fromUtf8((char *)data, fileSize);file.unmap(data); // 取消映射ui-plainTextEdit-appendPlainText(text);messagetext.split(\n);ui-label-setText(识别完成,时间为QString::number(timer.elapsed()/1000)s);QTextCursor cursor ui-plainTextEdit-textCursor();cursor.movePosition(QTextCursor::Start);ui-plainTextEdit-setTextCursor(cursor);//是为了实现将鼠标对应的光标移动到第一行也就是日志的最上面。}else { // 如果映射失败qDebug() 映射失败错误信息 file.errorString(); // 打印错误信息QMessageBox::information(this,提示,映射失败错误信息:file.errorString());} QT里面的内存映射的机制如下 内存映射Memory Mapping是一种将文件或者设备的一部分映射到进程的虚拟地址空间的技术这样可以方便地对文件或者设备进行读写操作而不需要使用系统调用或者缓冲区。QT提供了QFileDevice类和QFile类来支持内存映射的功能相关的方法有 map(qint64 offset, qint64 size, QFileDevice::MemoryMapFlags flags NoOptions)这个方法可以将文件或者设备的一部分映射到内存中并返回一个指向该内存区域的指针。参数offset表示映射的起始位置size表示映射的大小flags表示映射的选项比如是否保护、是否共享等。unmap(uchar *address)这个方法可以取消内存映射并释放相关的资源。参数address表示要取消映射的内存区域的指针。isMapped(uchar *address)这个方法可以检查一个内存区域是否是由map()方法映射的。参数address表示要检查的内存区域的指针。 除此之外还有如何搜寻自己想要的信息方式有以下几种 首先第一种是遍历循环每一条log信息并在其中进行搜索但是这样的搜索方式只能用于小日志文件当文件内容过多的时候这种搜索方式的时间度是很大的。 利用for或者while等循环来遍历每一条的log信息。但是这个遍历出来的速度和效率是十分慢的。 代码实现如下所示 qDebug()pp;path_textpp;message.clear();// 创建一个QFile对象关联用户选择的文件QFile file(path_text);// 以只读模式打开文件if (file.open(QIODevice::ReadOnly)) {// 循环读取每一行// 创建一个QTextStream对象关联文件QTextStream in(file);// 设置流对象的编码为UTF-8in.setCodec(UTF-8);while (!file.atEnd()) {// 读取一行内容转换为QString类型QString line QString::fromUtf8(file.readAll());// 处理或显示每一行内容message.append(line);qDebug()line;ui-plainTextEdit-appendPlainText(line);//appendPlainText}// 关闭文件file.close();}else{qDebug() error;} 这里为了加快读取的速度还专门设置了文件的编码形式为UTF-8来减少QT的自动识别编码的时间而且这个读取文件的方式是用的Qtextstream的方式来的。 第二种就是由于笔记本上面自带的软件记事本而想到的一种方式就是记事本的查询功能的实现因此考虑到将同样的功能实现在QT里面。 另外上面也说过了需要实现log文件的显示在这里我采用的是Qplaintext控件来显示大量的文本信息。注意在这里不能采用textedit编辑器来显示大容量的文本它会出现错误。 我的界面设计如下所示 因为我需要查找信息因此要将用户的输入的信息进行筛选所以我还用了一个linedit的控件来获取输入内容。 实现查找信息的功能的代码部分如下图所示 QString goalui-lineEdit-text();bool resultui-plainTextEdit-find(goal);//向下寻找 // bool result2ui-plainTextEdit-find(goal,QTextDocument::FindBackward);//向回找if(result){QTextCursor cursor ui-plainTextEdit-textCursor();qDebug()cursor.blockNumber();shunxu.push_back(cursor.blockNumber());return true;}return false; 我通过QT给的封装函数find函数它会帮助我找到符合我需要的内容的所在下一行并且将光标移动到这一行然后我再利用QTextCursor来获取当前光标所在行数的位置并且打印保存下来。 因为我在前面的ui-plaintext里面将获取得到的log内容通过QString里面的split(“\n”)函数的方式将原来的QString的内容按行分割成QStringList的形式保存下来。然后我通过前面获得的行号将对应的Qtring的行的内容取出来并且显示ui-plaintext上面即可。 这种遍历方式也最多只能达到同时遍历几百行的样子。 第二种方式也可以优化比如可以分成两部分多开一个线程让其中一个从最后开始寻找主线程从第一行开始寻找最后将找到的日志行数汇总到一起。相当于是一个简单的二分法寻找。 最后第三种方式同时遍历很多行数 这个方法的时间复杂度是O(n)也就是随着元素的数量增加所需的时间也会线性增加。如果您想要一次遍历很多行也就是提高查找的效率您可以使用以下的方法 使用QHash或者QMap类来存储每个元素和它们的索引或者计数这样可以实现O(1)或者O(log n)的查找时间但是需要额外的空间来存储哈希表或者映射表。使用QStringList类的filter()方法来过滤出包含指定内容的元素然后使用indexOf()方法或者contains()方法来获取它们的索引或者计数这样可以减少遍历的次数但是需要创建一个新的QStringList对象。使用QRegularExpression类来创建一个正则表达式对象表示您想要查找的内容然后使用QStringList类的indexOf()方法或者contains()方法来查找匹配该正则表达式的元素并获取它们的索引或者计数这样可以更灵活地定义查找的条件但是需要注意正则表达式的语法和效率。 代码部分如下所示 #include QApplication #include QPlainTextEdit #include QDebug #include QRegularExpressionint main(int argc, char *argv[]) {QApplication app(argc, argv);QPlainTextEdit *edit new QPlainTextEdit(); // create a QPlainTextEdit objectedit-setPlainText(This is a test text for QPlainTextEdit.\nIt may have multiple lines.\nSome lines may contain the word function.); // set some plain textQString text edit-toPlainText(); // get the plain text contentQStringList lines text.split(\n); // split the text by newlineQRegularExpression re(\\bfunction\\b); // create a regular expression object, using \b to match word boundariesint count 0; // the number of lines that match the regular expressionint index -1; // the index of the first matching linewhile ((index lines.indexOf(re, index 1)) ! -1) { // loop through the lines, using indexOf() method to find the matching linecount; // increase the countqDebug() Found re.pattern() at line index 1; // print the line number, add 1 because the index is zero-based}qDebug() Total count lines match re.pattern(); // print the total countreturn app.exec(); }QHash和QMap都是Qt提供的关联容器类它们可以用来存储键值对的数据结构。它们的主要区别是 QHash是基于哈希表实现的它的查找速度通常比QMap更快但是它的键是以任意顺序存储的而且它对键的类型有更多的要求需要提供operator()和qHash()函数。QMap是基于跳表实现的它的查找速度通常比QHash慢一些但是它的键是以升序顺序存储的而且它对键的类型只需要提供operator()函数。 如果您需要时间度最小的一种遍历方法我建议您使用QHash并且使用STL风格的迭代器来遍历。这样可以避免创建额外的对象并且可以直接访问键和值。例如 QHashQString, QStringList hash; // insert some data into hash QHashQString, QStringList::const_iterator i hash.constBegin(); while (i ! hash.constEnd()) {QString key i.key();QStringList value i.value();// do something with key and valuei; }

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

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

相关文章

网站除了做流量还需要什么高端企业网站建设好的公司

2024年广西职业院校技能大赛 中职组《网络安全》赛项样题 目录 任务一 登录安全加固 任务二 数据库加固(Data) 任务三 Web安全加固(Web) 任务四 流量完整性保护(Web,Data) 任务五 事件监控 任务一 应急响应 任务二 …

做公众号主页面的有哪些网站中国国际旅行社官网线路

Apache Spark是一个强大的分布式计算框架,用于处理大规模数据。在Spark中,数据加载与保存是数据处理流程的关键步骤之一。本文将深入探讨Spark中数据加载与保存的基本概念和常见操作,包括加载不同数据源、保存数据到不同格式以及性能优化等方…

网站换域名了怎么办重庆文旅急了

回文日期 原文链接:https://www.acwing.com/problem/content/468/ 由于只有八位数,而且回文串左右对称,因此可以只枚举左半边。然后判断: 整个八位数日期是否合法是否在范围内 一共枚举1e4个数。判断过程是常数级别的&#xff0…

网站建设网站需要什么软件郑州网站建设灵秀

前端技术社区总目录(订阅之前请先查看该博客) 1:效果预览 2:v-if与v-show区别 1、v-if会增删DOM元素。 2、v-show比v-if性能更高,因为v-show只能动态的改变样式(display),不需要增删DOM元素。 3、v-if切换时候回实时的销毁和重建内部的事件、钩子函数等,v-show只会…

温江建设局备案网站商城项目

常见的 API Math 从 JDK 版本 1 开始的, 用来计算的一些方法 这里面定义了两个常量的 PI 和 E 这两个是最接近 pi 的值和最接近对数的值 Abs (int a ) 取绝对值Ceil (double a)向上取整Floor (double a )向下取整Round (float a)四舍五入Max (int a, int b) 取最大值Pow (dou…

山西省住房城乡建设厅网站织梦图片网站模板

点击蓝字 关注我们每天学习一点点单词的记忆是一件很让人头疼的事情,但单词又是学习英语的基石,非常重要。那么有什么方法能让单词记忆变得简单有效呢?不妨试试下面这些方法吧。1、卡片记忆自制单词卡片,随身带着,有空…

个人怎样做网站wordpress卡密

今天,我想谈一谈我们大多数人每天都不会看到和使用的另一种Java,更确切地说,是有关较低级别的绑定,一些本机代码以及如何执行一些小的魔术。 尽管我们不会在JVM上找到真正的魔力源,但是在单个帖子的范围内可以实现一些…

制作一个公司网站的流程网站建设有什么方法连接数据库

文章目录1.什么是shell?2.shell历史3.编写一个shell脚本3.1创建一个.sh文件3.2 编写一个简单的脚本内容3.3 执行4.shell 数据类型和变量4.1 数据类型4.2 变量5.文件名代换6.命令代换7.算术代换8.转义字符9.单引号10.双引号1.什么是shell? 2.shell历史 3.…

最简单的网站建设语音装修公司网页设计

Salesforce Field Service是Service Cloud的扩展,可提供员工管理的全面视图。Field Service专为进行现场服务的员工而设计,例如服务技术人员、服务座席、调度员等。随着Salesforce平台上线越来越多的生成式AI新增功能(包括Sales Cloud、Marke…

网站开发校园经历范文静态网站中切换图片怎么做

1月11日,记者了解到,国际数据公司(IDC)发布的《中国视频云市场跟踪(2021上半年)》(下简称“报告”)显示,2021上半年中国视频云市场规模达到43.7亿美元,同比增长达到38.7%。其中,音视频解决方案市…

杭州大的做网站的公司自考网页设计素材

CSS 中的伪类和伪元素是两个不同的概念,它们都可以用来为元素添加一些特殊的样式或效果。 伪类(Pseudo-classes): 伪类是 CSS 中用于选择元素在特定状态下的关键字,常见的伪类有 :hover、:active、:focus、:checked 等…

做液氮冰淇淋店网站wordpress 原创主题

Obisidian是一款markdown软件,使用它可以方便地记笔记、记录科研日常。然而如果在多个设备上使用obsidian,会牵扯到笔记/vault/仓库同步问题。下面来介绍如何用git管理obsidian。 1.创建gitee账号 略 2.下载Obsidian 略 3.新建git仓库 3.1在gitee上…

永和建设集团有限公司网站网店运营推广初级实训系统答案

目录 1 基础知识2 模板3 工程化 1 基础知识 二分图:每条边连接的起点和终点,分别属于集合A和集合B。 一个图是二分图,当且仅当,图中不含奇数环(即,回环中的结点数目是奇数)。 染色法判定二分…

网站建设客户问到的问题响应式网站开发要注意哪些

Extends可以理解为全盘继承了父类的功能。implements可以理解为为这个类附加一些额外的功能;interface定义一些方法,并没有实现,需要implements来实现才可用。extend可以继承一个接口,但仍是一个接口,也需要implements之后才可用。对于class而言,Extends…

公司简介宣传册图片选择一个网站进行优化

一&#xff1a;字符串分割成数组 日常工作中&#xff0c;如果需要把一个字符串分割成数组&#xff0c;我们一般使用 explode() 函数对字符串进行分割&#xff0c;具体代码如下所示&#xff1a; <?php$str PHP|python|java|js|css|html; $arr explode(|,$str); print_r(…

自己做的网站怎样链接数据库wordpress安装memcached

2018-04-30 python 关键字&#xff08;Keywords&#xff09; 声明&#xff1a;本文章大部分来自下面博客&#xff0c;对其作者表示感谢。以后会有详细的关键字说明。 1、and&#xff1a; 表示逻辑‘与’ 2、del&#xff1a; 用于list列表操作&#xff0c;删除一个或者连续几个元…

牙科医院网站建设方案网站建设临沂

什么是 LangChain&#xff1f; https://python.langchain.com/docs/get_started/introduction LangChain 是一个基于语言模型的框架&#xff0c;用于构建聊天机器人、生成式问答&#xff08;GQA&#xff09;、摘要等功能。它的核心思想是将不同的组件“链”在一起&#xff0c…

浙江网站建设公司新网站百度seo如何做

最大异或对 1.题目2.基本思想3.代码实现 1.题目 在给定的 N个整数 A1&#xff0c;A2……AN 中选出两个进行 xor&#xff08;异或&#xff09;运算&#xff0c;得到的结果最大是多少&#xff1f; 输入格式 第一行输入一个整数 N。 第二行输入 N 个整数 A1&#xff5e;AN。 输…

网站开发的软件工程师叫什么网站建设哪家好采用苏州久远网络

因子分析用Python做的一个典型例子 一、实验目的 采用合适的数据分析方法对下面的题进行解答二、实验要求 采用因子分析方法&#xff0c;根据48位应聘者的15项指标得分&#xff0c;选出6名最优秀的应聘者。 三、代码 importpandas aspd importnumpy asnp importmath asmath imp…

虎丘苏州网站建设开官网

文章目录 目录说明源码放哪里&#xff1f;拓展&#xff1a;Linux里面安装软件是装在home目录还是opt目录还是/usr/local好&#xff1f; bin boot dev etc home lib lib64 lostfound media mnt opt proc root run sbin srv sys tmp usr var 目录说明 bin 存放二进制可执行文件&…