Apache Calcite - 使用框架Reflective schema访问Java内存数据

前言 前文我们介绍了如何扩展实现自定义schema来访问Java内存数据,在Calcite框架中已提供了若干适配器,可用于访问不用来源的数据,简化我们的工作。 本节介绍 Reflective schema,通过这个适配器直接可以访问内存数据而不用额外扩展。 Reflective schema 简介 Apache Calcite中的ReflectiveSchema是一种机制,允许Calcite通过反射来访问Java对象作为数据库的模式。即可以将普通的Java对象集合作为数据库表来查询。ReflectiveSchema可以将Java对象的字段映射为表的列,对象的集合映射为表的行。 使用举例 在使用ReflectiveSchema时,需要定义一个包含Java对象集合的类。然后,将这个模式类添加到Calcite连接的根模式中,这样Calcite就能够通过SQL查询这些Java对象了。 例如,有一个Employee类和一个包含Employee对象列表的HrSchema类,可以使用ReflectiveSchema将HrSchema实例添加到Calcite的根模式中。可以执行SQL查询来访问HrSchema中的Employee对象了。 使用ReflectiveSchema的步骤大致如下: 定义Java对象类(例如Employee)。定义包含Java对象集合的模式类(例如HrSchema)。创建一个Calcite连接,并将模式类的实例添加到连接的根模式中。通过SQL查询Java对象。这种方式使得在不需要将数据存储在传统数据库中的情况下,直接在内存中的Java对象上执行SQL查询成为可能。 public class HrSchema { public Employee[] employees; public HrSchema(Employee[] employees) { this.employees = employees; } public Employee[] getEmployees() { return employees; } } @Test public void test() throws Exception{ Employee[] employees = new Employee[]{ new Employee( "Alice","1", "50000"), new Employee( "Bob","2", "60000"), new Employee( "Charlie","3", "70000")}; Properties info = new Properties(); info.setProperty("lex","JAVA"); Connection connection = DriverManager.

elasticsearch过滤器filter:原理及使用

码到三十五 : 个人主页 目录 一、引言二、Elasticsearch的过滤器概述三、使用DSL进行过滤操作术语过滤范围过滤复合过滤 四、优化策略五、结语 一、引言 Elasticsearch是一个功能强大的开源搜索引擎,广泛应用于各种数据检索和处理场景。在Elasticsearch中,过滤器(Filter)是一个核心概念,用于在查询过程中过滤出满足特定条件的文档。在Elasticsearch 7及以上版本过滤器在功能和使用方式上发生了一些变化。本文将详细介绍基于Elasticsearch 7及以上版本的过滤器技术,包括其工作原理、DSL使用示例以及优化策略等内容。 二、Elasticsearch的过滤器概述 在Elasticsearch 7及以上版本中,过滤器的概念已经逐渐被查询(Query)中的布尔子句(Bool Clause)所取代。尽管在之前的版本中,过滤器被用于快速筛选文档而不计算得分,但在新版本中,这种功能已经集成到了查询的布尔子句中。通过使用布尔子句中的filter子句,我们可以实现与过滤器相似的功能,同时保持查询的灵活性。 三、使用DSL进行过滤操作 在Elasticsearch中,Domain Specific Language(DSL)是一种用于构建查询和过滤器的声明式语言。下面我们将通过几个示例来展示如何在Elasticsearch 7及以上版本中使用DSL进行过滤操作。 术语过滤 假设我们有一个包含商品信息的索引,想要筛选出包含特定关键词的商品。可以使用布尔查询中的filter子句结合term查询来实现术语过滤。 GET /products/_search { "query": { "bool": { "filter": [ { "term": { "product_name.keyword": "phone" } } ] } } } 上述查询将返回所有product_name字段包含"phone"关键词的商品文档。 范围过滤 如果我们想要根据价格范围来筛选商品,可以使用range查询来实现范围过滤。 GET /products/_search { "query": { "bool": { "filter": [ { "range": { "price": { "gte": 100, "lte": 500 } } } ] } } } 这个查询将返回价格在100到500之间的商品文档。

【MySQL统计函数count详解】

MySQL统计函数count详解 1. count()概述2. count(1)和count(*)和count(列名)的区别3. count(*)的实现方式 1. count()概述 count() 是一个聚合函数,返回指定匹配条件的行数。开发中常用来统计表中数据,全部数据,不为null数据,或者去重数据。 2. count(1)和count(*)和count(列名)的区别 1.函数说明 count(1):统计所有的记录(包括null)。 count(*):统计所有的记录(包括null)。 count(字段):统计该"字段"不为null的记录。 count(distinct 字段):统计该"字段"去重且不为null的记录。 count(1)中的1并不是表示第一个字段,而是表示一个固定值。其实就可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1。count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。 2.执行效率 他们之间根据不同情况会有些许区别,MySQL 会对count()做优化。(1)如果表中只有一列,则count( )效率最优。(2)如果表有多列,且存在主键,count (主键列名)效率最优,其次是:count (1) >count( *)。(3)如果表有多列,且不存在主键,则count(1 )效率优于count( *) 3.执行过程 count(*)包括了所有的列,相当于行数,在统计结果的时候, 包括列值为NULL的行。 count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候, 包括列值为NULL的行。 count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数, 即某个字段值为NULL时,不统计。 4.注意事项 阿里开发手册规范相关规定: 1.【强制】不要使用 count(列名)或 count(常量)来替代 count(),count()是 SQL92 定义的标 准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关. 说明:count(*)会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行. 2.【强制】count(distinct col) 计算该列除 NULL 之外的不重复行数,注意 count(distinct col1, col2) 如果其中一列全为 NULL,那么即使另一列有不同的值,也返回为 0. 3. count(*)的实现方式 在日常开发中经常会统计一个表的行数,通过select count(*) from t很容易实现,可是随着记录数越来越多,统计函数执行越来越慢,然后呢可能会想mysql记录个总数不行吗,为什么每次都要逐行累加呢,count(列名)的时候还要判空,那么今天我们就聊聊count(*)的实现方式。

c语言——扫雷游戏(简易版)

目录 前言游戏设计 前言 什么是扫雷游戏? 游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。 这个游戏对于c语言的初学者来说难度还是挺大的,那我就实现一个初学者也能快速学会的初级版扫雷游戏。 游戏设计 我们先创建三个文件 game.h、game.c(游戏逻辑的实现) 2.test.c(游戏功能测试) 这些是我们需要实现的游戏功能 //初始化棋盘 void InitBoard(char arr[ROWS][COLS], int rows, int cols, char set); //打印棋盘 void DisPlayBoard(char arr[ROWS][COLS], int row, int col); //布置雷 void SetMine(char arr[ROWS][COLS],int row, int col); //排查雷 void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row,int col); 再次之前,我们在测试文件里先创建游戏菜单 //test.c void meun() { printf("******************\n"); printf("***** 1.play ****\n"); printf("***** 0.exit ****\n"); printf("******************\n"); } 之后再实现菜单功能 void test() { int input = 0; srand((unsigned int)(time(NULL))); do { meun(); printf("

Qt实现单例模式:Q_GLOBAL_STATIC和Q_GLOBAL_STATIC_WITH_ARGS

目录 1.引言 2.了解Q_GLOBAL_STATIC 3.了解Q_GLOBAL_STATIC_WITH_ARGS 4.实现原理 4.1.对象的创建 4.2.QGlobalStatic 4.3.宏定义实现 4.4.注意事项 5.总结 1.引言 设计模式之单例模式-CSDN博客 所谓的全局静态对象,大多是在单例类中所见,在之前写过一篇文章详细的讲解了单例模式的UML结构、实现方式、使用场景以及注意事项等等,下面就来讲讲Qt是怎么实现单例模式的,以及Qt实现单例模式怎么实现"dead-reference检测"的。Qt 提供了两个个非常方便的宏Q_GLOBAL_STATIC和Q_GLOBAL_STATIC_WITH_ARGS,可以快速创建全局静态对象。 2.了解Q_GLOBAL_STATIC Q_GLOBAL_STATIC宏是定义在qglobalstatic.h中,这个文件的Qt源码中的位置是(以Qt5.12.12为例) 【.\Qt5.12.12\5.12.12\Src\qtbase\src\corelib\global】,它的语法为: Q_GLOBAL_STATIC(Type, VariableName) 其中Type为数据类型,VariableName为变量的名称。 它主要用于创建跨越多个文件的全局静态对象。其主要作用在于两点: 1)懒惰初始化(Lazy initialization):它确保全局静态对象只有在首次使用时才被创建,而不是在程序启动时立即创建,从而可以减少程序启动时的初始化开销。 2)线程安全(Thread safety):在多线程环境中,Q_GLOBAL_STATIC 保证了全局静态对象的初始化是线程安全的,即使多个线程试图同时第一次访问它,对象也只会被创建一次。 下面是一个使用 Q_GLOBAL_STATIC 的示例: #include <QMutex> #include <QDebug> #include <QCoreApplication> // 定义一个全局的互斥锁,用于跨线程同步访问 struct GlobalMutex { QMutex mutex; }; Q_GLOBAL_STATIC(GlobalMutex, globalMutex) int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 当需要使用这个全局互斥锁时 globalMutex()->mutex.lock(); qDebug() << "Doing some thread-safe operation..."; globalMutex()->mutex.unlock(); return a.exec(); } 在这里例子中,定义了一个 GlobalMutex 结构体,包含一个 QMutex 对象。然后使用 Q_GLOBAL_STATIC 宏来创建一个全局静态的 GlobalMutex 实例,命名为 globalMutex。这个互斥锁可以在程序的任何地方使用,并保证只在首次使用时被初始化,同时保证了其初始化过程是线程安全的。

数据结构 —— 堆

1.堆的概念及结构 堆是一种特殊的树形数据结构,称为“二叉堆”(binary heap) 看它的名字也可以看出堆与二叉树有关系:其实堆就是一种特殊的二叉树 堆的性质: 堆中某个结点的值总是不大于或不小于其父结点的值; 堆总是一棵完全二叉树 1.1大堆 大堆: 大堆的根节点是整个堆中最大的数每个父节点的值都大于或等于其孩子节点的值每个父节点的孩子之间并无直接的大小关系 1.2小堆 小堆: 小堆的根节点是整个堆中最小的数每个父节点的值都小于或等于其孩子节点的值每个父节点的孩子之间并无直接的大小关系 2.堆的实现 2.1使用数组结构实现的堆 由于堆是一个完全二叉树,所以堆通常使用数组来进行存储 使用数组的优点: 相较于双链表更加的节省内存空间相较于单链表可以更好的算父子关系,并找到想要找的父子 2.2堆向上调整算法 堆的向上调整(也称为堆化、堆的修复或堆的重新堆化)是堆数据结构维护其性质的关键操作之一 现在我们给出一个数组,逻辑上看做一颗完全二叉树。我们通过从最后一个叶子节点开始的向上调整算法可以把它调整成一个小堆 向下调整算法有一个前提:最后一个叶子之前是一个堆才能调整 int arr = [ 15, 18, 19, 25, 28, 34, 65, 49, 37, 10] 小堆演示向上调整算法演示过程 向上调整的过程 :将新插入的值与它的父亲相比,如果小则向上调整,调整完成后与新的父亲去比较,直到其值 >= 父亲的时候停止调整 void Swaps(HPDataType* a, HPDataType* b) { HPDataType temp; temp = *a; *a = *b; *b = temp; } //向上调整(小堆) //child是下标 void AdjustUp(HPDataType* a, int child) { assert(a); int parent = (child - 1) / 2;//算父亲节点的下标 //向下调整主要逻辑 while (child > 0) //当调整至根节点时,已经调整至极限,不用在调整 { //当父亲节点 > 孩子时,开始调整 if (a[parent] > a[child]) { Swaps(&a[child],&a[parent]); //交换 child = parent; //走到新的位置为新一轮的向下调整做准备 parent = (child - 1) / 2; //算出新位置的父亲节点下标 } //当父亲节点 < 孩子时,说明调整已经完毕,退出循环 else { break; } } } 2.

Postman接口测试工具详解

在现代软件开发过程中,接口测试是确保API安全、可靠和高效运作的关键环节。Postman作为一款流行的API开发工具,提供了一套全面的接口测试解决方案。本文将对Postman进行详细解读,帮助开发者更好地利用这一工具提高接口测试的效率和质量。 一、Postman简介 Postman是一个强大的API测试套件,它允许开发者快速创建、共享、测试和文档化API。它不仅支持RESTful接口测试,还支持SOAP、GraphQL等多种接口类型,是现代Web开发中不可或缺的工具之一。 二、Postman的核心功能 1. 请求构建 在Postman中,构建一个HTTP请求是直观且灵活的。用户可以通过图形界面轻松选择HTTP方法,如GET、POST、PUT、DELETE等,并填写相应的URL。此外,Postman还支持复杂的URL参数设置,包括路径参数、查询参数等。在请求头部分,用户可以添加或修改任何HTTP头信息,这对于需要认证或特定格式的请求尤为重要。请求体支持多种格式,包括表单数据、JSON、XML等,用户可以根据API的要求选择合适的格式并填充数据。 2. 响应查看 Postman提供了详细的响应查看功能,帮助用户全面理解API的响应情况。响应信息包括状态码、响应时间、HTTP头信息以及响应体内容。响应体可以以原始格式显示,也可以转换为JSON或XML格式,方便用户阅读和分析。此外,Postman还支持将响应保存为文件,便于后续分析或与其他团队成员共享。 3. 测试脚本 Postman的测试脚本功能是其强大之处之一。用户可以在“Tests”标签页中编写JavaScript代码,这些代码将在请求发送后自动执行。测试脚本可以用来检查响应的状态码、验证响应数据、检查响应时间等。例如,用户可以编写脚本来确保响应中的某个字段存在,或者验证响应数据是否符合预期的格式。测试脚本还可以用来设置环境变量,以便在后续的请求中使用。 4. 环境和变量 为了适应不同的开发和测试环境,Postman允许用户定义环境变量。这些变量可以在请求的任何地方引用,如URL、请求头、请求体等。用户可以为不同的环境(如开发、测试、生产)设置不同的变量集合,并通过简单的切换来改变当前使用的环境。这大大简化了在不同环境间切换时的配置工作,提高了测试的灵活性和效率。 5. 集合和共享 Postman的集合功能允许用户将相关的请求和测试脚本组织在一起。集合可以包含多个请求,每个请求可以有自己的测试脚本和环境设置。这种组织方式使得管理和维护API测试变得更加有序。此外,Postman还支持通过其云服务共享集合,团队成员可以轻松访问和使用共享的集合,实现团队协作和知识共享。 6. Mock服务 Mock服务是Postman的一个独特功能,它允许用户在没有实际后端服务的情况下模拟API的响应。用户可以定义Mock服务的行为,包括响应的状态码、头信息和响应体。这对于前端开发和测试非常有用,尤其是在后端服务尚未准备就绪时。Mock服务可以帮助团队并行工作,加快开发进度。 7. 监控 Postman的监控功能可以帮助用户定期检查API的性能和可用性。用户可以设置监控任务,定时运行集合中的请求,并收集响应数据。监控结果可以通过邮件或其他方式发送给用户,确保用户能够及时了解API的状态。这对于确保API的稳定性和可靠性至关重要,尤其是在生产环境中。 三、Postman的使用流程 1. 安装和启动 在开始使用Postman之前,我们需要先在其官方网站下载Postman应用程序。Postman提供了适用于Windows、Mac和Linux操作系统的版本。下载相应版本后,按照提示完成安装。安装完成后,启动Postman,如果是第一次使用,你可能需要创建一个账户或者使用现有账户登录,这样可以同步你的历史数据和设置。 2. 创建请求 打开Postman后,首先需要创建一个新的请求。这可以通过点击界面左上角的“New”按钮,然后选择“Request”来完成。在创建请求时,你需要给这个请求命名,并可以选择将它保存到某个具体的集合中。接着,你将进入请求构建界面,在这里,你需要填写请求的详细信息: 方法(Method): 选择适当的HTTP方法,例如 GET 用于获取数据,POST 用于提交数据。URL: 填写API的端点地址。参数(Params): 如果API需要查询参数,可以在这里添加。授权(Auth): 如果API需要认证,可以在这里选择合适的类型并填写认证信息。头部(Headers): 如果需要特定的HTTP头信息,可以在这里设置。体(Body): 如果你的请求需要发送数据,可以在这里选择合适的类型并填写内容,如JSON或表单数据。 例如,如果你想测试一个用户登录的API,你可能会创建一个POST请求,将URL设置为API的登录端点,选择“Body”标签,在里面填写用户名和密码的JSON数据。 3. 发送请求并查看响应 配置好请求参数后,点击“Send”按钮,Postman将发送请求到指定的API端点。发送请求后,界面下方会显示响应的结果。这里你可以看到: 状态码(Status Code): 如200代表成功,404代表未找到等。响应时间(Response Time): 请求从发送到接收响应所用的时间。响应体(Response Body): API返回的数据,可以是JSON、HTML等格式。响应头(Response Headers): 显示服务器返回的HTTP头信息。 例如,如果是登录请求,响应体可能会返回用户的认证Token,你可以检查这个Token是否正确生成。 4. 编写测试脚本 在Postman中,你可以为每个请求编写测试脚本来自动验证响应的正确性。在请求详情界面中,切换到“Tests”标签,你可以使用JavaScript编写测试代码。Postman提供了一系列的测试语法,如 pm.expect() 函数,用于声明你的预期。 例如,你可以编写以下测试脚本来验证响应状态码为200,并且返回的数据中包含Token字段: pm.test("Status code is 200", function () { pm.

大众点评_token,mtgsig

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!a15018601872 1.逆向过程 最近一直在研究抖音和美团滑块,抖音前几天看了半天研究算法,我太菜了,卡在最后的一部分加密没看懂,不过补环境和阿里有点类似的过程,基本会阿里的都能过抖音,但是挺考验补环境功底的。我还是打算之后一起算法,和补环境一起搞。美团这个由于把轨迹进行特殊处理了,没看懂所以我也参考了阿里滑块的思路,直接通过movemouse传进去就行了把数组补齐就行了,目前补到了开头webgl就放弃了,马上期末比较忙,已经很久没怎么学习过逆向,基本都在搞linux,打算先入行搞些简单的,后续看看能不能转开发,毕竟我对我基础功底还是挺自信但是和大神比就差多了,只能说都会一点点。搞滑块真的搞到自闭了,比滑动难太多了,轨迹一直没研究明白怎么搞,彩还是得多练才行。 1.1.token token就比较简单,补一下screen,navigator,location,addEventListener,收集一些真实轨迹就行了。调用方法完成加密。 2.mtgsig 有人问我补环境怎么学的,我也忘了怎么学的,我记得我遇到的第一个补环境是同花顺吧,然后是瑞数4,接着就看着文档自己摸索,结合开源框架自己慢慢学的。第一次补环境起到质变,就是补的mtgsig。然后就开启基本都会补一点了。 这是我的加密代码解法思路。补环境就不说了,实在不行用jstools,我也研究过jstools很久了,对补环境学习挺有用。算法我也教不了,因为我已经都是菜狗。看到日志密密麻麻就烦。 function getUrl(){ method="GET" data={ "shopId": "l29sKPkmZC8WxQmg", "cityId": "1368", "shopType": 10, "order": "all", 'summaryName':undefined } t="路径" var r = function(t) { var e = []; for (var i in t) e.push(i + "=" + t[i]); return e.join("&") }(data) s = location.protocol + t + "?" + r; token=reload(s) originUrl=decodeURIComponent(`###################/${data['shopId']}`) url=`路径?shopId=${data['shopId']}&cityId=${data['cityId']}&shopType=${data['shopType']}&order=${data['order']}&_token=${token}&platform=1&partner=150&optimusCode=10&originUrl=${originUrl}&yodaReady=h5&csecplatform=4&csecversion=2.4.0`, data2={ "url": url, "method": method, "headers": { "Accept": "application/json, text/javascript, */*; q=0.

大数据开发流程解析

大数据开发是一个复杂且系统的过程,涉及需求分析、数据探查、指标管理、模型设计、ETL开发、数据验证、任务调度以及上线管理等多个阶段。本文将详细介绍每个阶段的内容,并提供相关示例和代码示例,帮助理解和实施大数据开发流程。 本文中的示例只是一个简单的工具,实际中可能用到很复杂的工具,但核心思想不变。 1. 需求分析调研 需求分析是大数据项目开发的第一步,通过明确项目的口径、评估排期和正式需求流程提交,确保所有参与者对项目的目标和范围有一致的理解。 示例: - 项目名称:用户行为分析平台 - 项目目标:建立一个平台,实时分析用户行为数据,提供行为趋势和预测分析 - 关键指标:用户活跃度、页面停留时间、转化率 - 数据源:用户点击流日志、用户注册信息、交易记录 - 预期交付:原型展示、用户行为报告、预测模型 2. 数据探查 在数据探查阶段,我们需要了解数据字段能否满足需求,包括数据结构、数据内容和数据质量等方面。 示例: import pandas as pd # 读取数据 data = pd.read_csv('user_click_stream.csv') # 查看数据结构 print(data.info()) # 查看数据内容 print(data.head()) # 检查数据质量 missing_values = data.isnull().sum() print(f"Missing values in each column:\n{missing_values}") 3. 指标管理 指标管理包括完善字段命名规范、确保指标与业务的强相关性,以及明确指标构成。 示例: -- 建立指标表 CREATE TABLE user_metrics ( user_id INT, active_days INT, avg_session_duration FLOAT, conversion_rate FLOAT ); -- 插入数据 INSERT INTO user_metrics (user_id, active_days, avg_session_duration, conversion_rate) VALUES (1, 20, 300.

实战项目: 负载均衡

0. 前言 这个项目使用了前后端,实现一个丐版的LeetCode刷题网站,并根据每台主机的实际情况,选择对应的主机,负载均衡的调度 0.1 所用技术与开发环境 所用技术: C++ STL 标准库 Boost 准标准库 ( 字符串切割 ) cpp- httplib 第三方开源网络库 ctemplate 第三方开源前端网页渲染库 jsoncpp 第三方开源序列化、反序列化库 负载均衡设计 多进程、多线程 MySQL C connect Ace前端在线编辑器 ( 部分 ) html/css/js/jquery/ajax (部分 ) 开发环境: Centos 7 云服务器, vscode, Mysql Workbench 0.2 建立目录及文件 0.3 项目宏观结构 具体的功能类似 leetcode 的题目列表+在线编程功能 1. compile 服务设计 由于compiler这个模块管理的是编译与运行,则可以先直接就创建所需要的文件 1.0 书写makefile文件 随着后续代码的跟进,并不断引入第三方库,这里还会新增编译选项 1.1 compiler_server 1.1.0 编译功能(compiler.hpp) 在编译的时候,无非存在2种情况,a)要么通过,b)要么不通过要确定编译通过: 只需要确定是否生成对应的.exe文件要当编译出错的时候(stderr): 需要将出错信息,重定向到一个临时文件中,保存编译出错的结果 还需要调用fork();子进程完成编译工作 父进程继续执行 由于需要频繁的文件名转换,所以在comm模块中,新建util.hpp文件并将文件名转换的函数放在一起 还有后面判断编译成功生成的可执行程序,虽然可以直接暴力的打开文件判断是否存在,但这里使用stat函数会好一些stat结构体会记录文件的各种信息 注意: 程序替换是不会影响进程的文件符描述符表的 1.1.1 日志模块(log.hpp) 由于一般日志都会带上时间, 这里还需要实现一个得到当前时间的函数,则我又在util.

哈喽GPT-4o——对GPT-4o 提示词的思考与看法

目录 一、提示词二、常用的提示词案例1、写作助理2、改写为小红书风格3、英语翻译和改写4、论文式回答5、主题解构6、提问助手7、Nature风格润色8、结构总结9、编程助手10、充当终端/解释器 大家好,我是哪吒。 最近,ChatGPT在网络上广受欢迎,以其独特的吸引力吸引了众多用户争相体验。 然而,各用户在使用后的感受和效果大不相同。有的用户欢欣鼓舞,将其视作珍宝,有的用户则感到平淡无奇,无甚趣味。有人将其作为生活中的得力助手,有人则认为它是值得信赖的良师益友,还有人从多方面、多层次利用其提升工作效率,也有用户将其视为一种小玩意。 实际上,ChatGPT如同一位博学多才、技能娴熟的全能博士,可以作为合格的合作伙伴(助手)、导师(教官)、朋友(聊天、情感)、百科全书(知识问答)、软件工程师(编程)、搜索引擎(信息获取)、图书馆(知识获取)等。 它具备学界中的知识、卓越的智慧和多才多艺的能力。那么,为什么不同用户在使用后的体验和效果会如此不同呢?原因就在于用户是否掌握了ChatGPT提示词(Prompt)的使用方法。 为了从ChatGPT中获取最佳反馈,关键在于正确使用提示词。提示词能够引导模型输出并生成相关、准确且高质量的内容。 本文将详细介绍提示词的设计原则、编写步骤、设计技巧,并提供一些实用的提示词案例及工具优化提示词的方法。只要读者能熟练掌握本章内容,并通过实践不断深化理解,就能如同施展魔法般提升使用ChatGPT的能力、效率和效果。 👉 GPT功能: GPT-4o知识问答:支持1000+token上下文记忆功能最强代码大模型Code Copilot:代码自动补全、代码优化建议、代码重构等DALL-E AI绘画:AI绘画 + 剪辑 = 自媒体新时代专职家教:精通语数外,拍照上传即可识别问题,给出权威回答论文小能手:写论文大模型Consensus、论文降重大模型联网查询(平替百度)、上传文件、数据分析等。私信哪吒,直接使用GPT-4o 一、提示词 为了更好的理解提示词的重要性,首先需要了解ChatGPT的工作流程。 ChatGPT的工作流程包括以下四步: 用户将请求信息输入给ChatGPTChatGPT分析输入并使用大模型算法生成响应响应以文本的形式反馈给用户用户输入请求信息,ChatGPT将再次分析,并结合上下文信息,给出反馈。 在ChatGPT中,提示词通常指的是一个问题、一个文本片段或几句短语,作为生成模型输出的起点或指导。 提示词可以是一个问题、一段文字描述、一段对话,或任何形式的文本输入。ChatGPT模型会根据提示词提供的上下文和语义信息生成相应的输出文本。 创建提示词或引导ChatGPT这样的语言模型进行输出的过程被称为提示词工程。提示词工程的作用在于通过提供明确而具体的指令,引导模型生成相关的内容。 二、常用的提示词案例 1、写作助理 作为一名中文写作改进助理,其任务是改进所提供文本的拼写、语法、清晰性、简洁性和整体可读性,同时分解长句、减少重复,并提供改进建议。请只提供文本的更正版本,避免包括解释。请从编辑以下文本开始:[文章内容]。 2、改写为小红书风格 请使用小红书Emoji风格编辑以下段落,该风格以引人入胜的标题、每个段落中包含表情符号和在末尾添加相关标签为特点。请确保保持原文的意思。请改写以下内容:[需要改写的内容]。 3、英语翻译和改写 我希望你能充当英语翻译、拼写检查者和改进者。我将用任何语言与您交谈,你将检测语言、翻译它,并在文本的更正和改进版本中用英语回答。我希望你用更准确、更优雅、更高级的英语单词和句子来取代我使用的单词和句子。保持意思不变,但让它们更具有文学性。我的第一句话是 [要翻译的内容]。 4、论文式回答 写一篇内容详细、结构严谨的学术文章,包括引言、主题和结论,以回应以下内容:[问题]。 5、主题解构 你是一名擅长思考的助手,会把一个主题拆解成相关的多个子主题。请你使用中文,针对下列主题,提供相关的子主题。直接输出结果,不需要额外的说明:[主题内容]。 6、提问助手 你是一名擅长提问的助手,会针对一段内容,提出疑虑和可能出现的问题,用来促进更完整的思考。内容如下:[具体内容]。 7、Nature风格润色 我希望你能充当专业的拼写和语法校对者,并改进我的文章。我想让你用更准确、优雅、高级的英语单词和句子替换我的单词和句子,以Nature语言风格修改文章内容,使它更具有学术性,并保持意思不变。 8、结构总结 将以下文字概括为100个字左右,使其易于阅读和理解。避免使用复杂的句子结构和技术术语。文字内容如下:[文字内容]。 9、编程助手 请用Java语言编写一个快速排序算法。 10、充当终端/解释器 我想让你充当一个Linux终端。我将输入命令,你将回答终端应该显示的内容。我希望你只在一个独特的代码块内回答终端输出,不要写解释。当我需要用英语告诉你一些事情时,我会把文字放在大括号里!备注文本,我的第一条命令是:[Linux命令]。

OpenCV目标识别

一 图像轮廓 具有相同颜色或强度的连续点的曲线。 图像轮廓的作用 可以用于图像分析 物体的识别与检测 注意 为了检测的准确性,需要先对图像进行二值化或Canny操作。 画轮廓时会修改输入的图像。 轮廓查找的API findContours(img,mode,ApproximationMode,...) 两个返回值,contours和hierarchy mode RETR_EXTERNAL=0,表示只检测外轮廓。 RETR_LIST=1,检测的轮廓不建立等级关系 RETR_CCOMP=2,每层最多两级 RETR_TREE=3,桉树形存储轮廓 ApproximationMode CHAIN_APPROX_NONE,保存所有轮廓上的点 CHAIN_APPROX_SIMPLE,只保存角点 import cv2 import numpy as np img=cv2.imread('./9615.jpg') print(img.shape) #转变成单通道 gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) print(gray.shape) #二值化 ret,binary=cv2.threshold(gray,150,255,cv2.THRESH_BINARY) #轮廓查找 contours,hierarchy=cv2.findContours(binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) print(contours) cv2.imshow('img',img) cv2.waitKey(0) 二 绘制轮廓 如何绘制轮廓 drawContours(img,contours,contourIdx,color,thickness...) contourIdx,-1表示绘制所有轮廓 color,颜色(0,0,255) thickness,线宽,-1是全部填充 import cv2 import numpy as np img=cv2.imread('./9615.jpg') print(img.shape) #转变成单通道 gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) print(gray.shape) #二值化 ret,binary=cv2.threshold(gray,150,255,cv2.THRESH_BINARY) #轮廓查找 contours,hierarchy=cv2.findContours(binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) print(contours) #绘制轮廓 img1=cv2.drawContours(img,contours,0,(0,0,255),5) #cv2.imshow('img',img) cv2.imshow('img1',img1) cv2.waitKey(0) 三 轮廓的面积和周长 1 轮廓的面积 contourArea(contour) contour:轮廓 2 轮廓的周长 arcLength(curve,closed) curve:轮廓 closed:是否是闭合的轮廓 import cv2 import numpy as np img=cv2.

Parallels Desktop 19 激活码 - 苹果 Mac 最新版 PD 19激活密钥虚拟机下载 (支持Win11/macOS Sonoma)

Parallels Desktop 被称为 macOS 上强大的虚拟机软件。可以在 Mac 下同时模拟运行 Win、Linux、Android 等多种操作系统及软件而不必重启电脑,并能在不同系统间随意切换。 最新版 Parallels Desktop 19 (PD19) 完全支持 macOS Sonoma、Ventura 和 Windows 11 / Win10 及 CentOS、Ubuntu 等,并充分优化!可不重启直接在 Mac 系统上运行 Linux 和 Win 应用程序和游戏、使用如 Office、VisualStudio、AutoCAD、Matlab 等工具。新版 PD19 还支持 OpenGL 4.1 与 DirectX 11,大幅提升速度及 3D 游戏图形性能!!妥妥的是 Mac 必备神器…… Parallels Desktop 下载地址: https://souurl.cn/Zc5IZf 最新版支持 M 芯片及 macOS Sonoma / Win11 简单来说,Parallels Desktop 19 for Mac 可以让你在苹果 Mac 电脑 (包括 M1、M2 或 Intel) 的电脑上「同时运行」一个或多个 Windows 或 Linux 系统,并能随意在不同平台软件之间切换。它能让你的 Mac 变得无比强大,因为 PD 能让你直接在 macOS 上运行其他系统平台上几乎所有的应用程序和游戏,而这些软件原本在 Mac 上是无法安装和运行的。

鸿蒙——数据持久化存储(AppStorage、PersitentStoreage、数据库、首选项)

Localstorage-内存化存储- 局部可用 AppStorage-内存化存储- 全局可用 PersitentStoreage-写入磁盘(沙箱) 全局可用 首选项-写入磁盘-全局可用 关系型数据库-写入磁盘 1.用户首选项: 获取Preferences实例、保存/更新数据、获取数据 用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询 Key-Value 是什么结构?AppStorage.setOrCreate(key,value) 作用:当用户希望有一个全局唯一存储数据的地方,可以采用用户首选项来进行存储。 应用首选项的持久化文件保存在应用沙箱内部,可以通过context获取其路径。 首选项适用于存储小型配置项数据,例如应用的用户个性化设置(字体大小、是否开启夜间模式等)。 限制约束: Key键为string类型,要求非空且长度不超过80个字节。如果Value值为string类型,请使用UTF-8编码格式,不为空时长度不超过8192个字节。存储的数据量应该是轻量级的,建议存储的数据不超过一万条,否则会在内存方面产生较大的开销。 步骤: 初始化首选项实例 import { preferences } from '@kit.ArkData'; // 导入首选项api const KEY = 'searchStore' // 获得首选项实例 const preferencesInstance = preferences.getPreferencesSync(getContext(), { name: KEY }) 2.向首选项写入数据put 并持久化flush // 第一个参数KEY:要写入数据的key // 第二个参数value:要写入的数据 preferencesInstance.put(KEY, 要保存的值) // 将数据写入到文件中 preferencesInstance.flush() 3.获取首选项数据 get // 利用首选项实例的get方法可以读取KEY中的数据 // 第一个参数KEY:要获取数据的key // 第二个参数defValue:如果没有读取到数据,则返回默认数据 preferencesInstance.get(KEY, 默认值) 删除指定KEY的数据 deleteSync preferencesInstance.deleteSync(KEY); 查看数据文件: 2.AppStorage-页面内使用: 用法:

电子科技大学信软学院数据库 操作系统 计算机网络复习笔记汇总

提醒:有些文章仅仅是收录专栏的一篇,请顾及右下角的“专栏目录”。欢迎向前辈文章点赞 年前收集的一些资料。欢迎交流。 我困惑一个问题,既然期末明明可以花费三天时间突击,然后拿到大部分甚至不错的分数,那为什么不从开学就直接看复习笔记,就从前辈的学期末尾出发开始本学期? 前几天的一个项目收尾了,今天忙里偷闲整理时发现了自己这篇文档,发布出来。 后续添加的内容都在LiZaiyuan0619/LiZaiyuan_Work: 电子科技大学信软学院期末试卷、复习资料汇总 (github.com)可以参考 数据库 复习笔记 电子科大~数据库系统原理与开发期末复习完整版_电子科技大学数据库期末复习-CSDN博客 【数据库原理与应用】期末知识点总结——电子科技大学2023期末考试总复习_电子科技大学 数据库原理-CSDN博客 数据库期末复习-电子科技大学_建立如下的存储过程(基于前面实验建立的表和插入的数据,并为每个存储过程设计-CSDN博客 【postgresql数据库】数据库整体知识完整版-2023电子科技大学期末复习_以姓名缩写创建集合并插入上图中的文档。使用$avg表达式,将集合product中的文档按-CSDN博客 2023-电子科技大学-数据库系统-期末汇总-完全体(概念+图片+习题+代码)_数据库与软件工程电子科技大学-CSDN博客 课后习题 数据库原理课后作业答案汇总_数据库原理课后第十一章答案-CSDN博客 OS 复习笔记 操作系统期末复习-电子科技大学:这一篇就够了!_电子科技大学操作系统简答题汇总-CSDN博客 【操作系统原理与实践】常见计算题整理:原理+例题_如何计算仍然需求资源数+操作系统-CSDN博客 【操作系统】期末复习汇总最全版本!&&电子科技大学2023期末考试_操作系统期末汇总-CSDN博客 【汤4操作系统】深入掌握操作系统-存储器管理篇_操作系统存储器管理-CSDN博客 电子科技大学操作系统期末复习笔记(一):操作系统概述_操作系统概念电子版-CSDN博客 计算机操作系统 电子科技大学 期末考试_一般来讲,虚拟内存使得程序的运行速度()-CSDN博客 课后习题答案 第四版 https://www.cnblogs.com/dpSolitude https://github.com/BUPT-Resource/CyberspaceSecurity/blob/master/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E8%AF%BE%E5%90%8E%E4%B9%A0%E9%A2%98%E7%AD%94%E6%A1%88(%E7%AC%AC%E5%9B%9B%E7%89%88).docx 慕课版 《计算机操作系统(慕课版)》(汤小丹著)课后习题答案_计算机操作系统慕课版课后题答案-CSDN博客 计算机操作系统【慕课版】课后习题解答_在计算机系统上配置os的目标是什么?作用主要表现在哪几个方面?-CSDN博客 计网 计算机网络期末复习-电子科技大学(1):导论,应用层,运输层_计算机网络期末复习电子科大-CSDN博客 【计算机网络】期末考试应用题题型整理+完整解答——电子科技大学2023期末考试_1 .根据需要,k公司打算将*类网络* . * .划分为两个子网给两个部门使用,其中第-CSDN博客 (学解资料) 【计算机网络自顶向下】DNS简答题总结-CSDN博客 电子科大计网期末复习之计算机网络与因特网_假定在发送主机和接收主机间只有一台分组交换机。发送主机和交换机间以及交换机和-CSDN博客 简单教程,非成电 https://blog.csdn.net/mcyuuji/article/details/113794535 两份不同的OS+计网总结,飞书 https://uestc.feishu.cn/wiki/GE7hwyAmTiGfhrk6e0OcfaGjnWg https://uestc.feishu.cn/docx/O06Md8UGfo2zmCxrKorcfJ09nQg 《计算机网络》速成_计算机网络速成-CSDN博客(该专栏附带MOOC答案) 图形学 电科软工数漫图形学二2023期末、期中考点_电子科技大学图形学期末-CSDN博客 电子科技大学 图形与动画2 动画学 2021年期中考试题_电子科技大学图形与动画半期-CSDN博客

【Liunx】基础开发工具的使用介绍-- yum / vim / gcc / gdb / make

前言 本章将介绍Linux环境基础开发工具的安装及使用,在Linux下安装软件,编写代码,调试代码等操作。 目录 1. yum 工具的使用1.1 什么是软件包:1.2 如何下载软件:1.3 配置国内yum源: 2. vim编辑器2.1 vim的安装2.2 vim的三种模式 3. gcc / g++ 编译器3. 1 编译的处理阶段3. 2 使用gcc生成静态库及静态库的使用方法:3. 3 gcc的编译选项: 4. gdb 编译器4.1 背景介绍4.2 gdb的操作指令 5. make / Makefile5.1 makefile的介绍5.2 如何判断是否重新生成:5.3 多文件的makefile 6. Linux第一个程序 —— 进度条6.1 回车和换行的概念:6.2 缓存区的概念: 1. yum 工具的使用 在Linux中安装软件: 源代码安装,rpm包安装yum安装 其中源代码安装和rpm安装并不简单,当依赖别的库时,还需要下载其他的库,Windows是直接打包好了的。 yum安装的好处:不用编译源码,不用解决软件的依赖关系。 1.1 什么是软件包: 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系 1.2 如何下载软件: yum list: 显示所有已经安装和可以安装的程序包。

【flink实战】flink-connector-mysql-cdc导致mysql连接器报类型转换错误

文章目录 一. 报错现象二. 方案二:重新编译打包flink-connector-cdc1. 排查脚本2. 重新编译打包flink-sql-connector-mysql-cdc-2.4.0.jar3. 测试flink环境 三. 方案一:改造flink连接器 一. 报错现象 flink sql任务是:mysql到hdfs的离线任务,flink在消费mysql时报如上错误。 根据经验:mysql 8.x版本会将Timestamp数据类型转换为localdatetime类型,而flink 连接器中并未做此适配,导致任务消费数据后,类型转换报错。 解决方案有两种: flink 连接器兼容mysql 8.x,找到mysql 8.x驱动所在的连接器,去掉mysql 8.x驱动。 这里先尝试使用第二种方案。 二. 方案二:重新编译打包flink-connector-cdc 1. 排查脚本 在flink lib目录下查找含有mysql8驱动的jar #!/usr/bin/env bash ls | while read one_line do class_name=$(jar -vtf $one_line |grep 'com/mysql/cj/jdbc/Driver.class') if [[ ${class_name}x != "x" ]]; then echo "jar:$one_line contains the ${class_name}" fi done bash check_driver.sh java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.<init>(ZipFile.java:219) at java.

基于Java和SSM框架的多人命题系统

你好呀,我是计算机学长猫哥!如果你对多人命题系统感兴趣或者有相关开发需求,文末可以找到我的联系方式。 开发语言:Java 数据库:MySQL 技术:Java + SSM框架 工具:Eclipse、MySQL Workbench、Maven 系统展示 首页 管理员界面 教师信息界面 学生信息界面 摘要 多人命题系统是高校教育中不可或缺的一部分,它对于实现人才培养目标、培养学生的科研能力和创新思维具有重要作用。本系统旨在通过数字化管理学生成绩档案,减轻教职员工的工作压力,提高管理效率。系统采用B/S架构、SSM框架和Java技术开发,结合MySQL数据库,实现了一个友好、易操作的界面,使信息管理更加系统化和有序化。 研究意义 随着信息技术的快速发展,传统的半手工管理方式已不能满足现代教育的需求。多人命题系统通过计算机技术提高信息管理的效率和准确性,具有重要的现实意义。它不仅能够提升教学质量,还能促进教育信息化的进程,为学生和教师提供一个更加便捷、高效的学习和教学环境。 研究目的 本研究旨在开发一个基于Java和SSM框架的多人命题系统,以实现对学生试卷的数字化管理,提高试卷管理的效率和质量。系统的设计和实现将充分考虑用户的需求和操作习惯,以确保系统的易用性和实用性。通过本系统,我们希望能够为高校提供一个全面、系统的试卷管理解决方案。 代码展示 // 示例代码:管理员登录功能的实现 public class AdminLoginController { public String login(String username, String password) { // 检查用户名和密码 if (username.equals("admin") && password.equals("123456")) { return "loginSuccess"; // 登录成功 } else { return "loginFail"; // 登录失败 } } } 总结 通过本次多人命题系统的研究与实现,我们不仅提高了教育管理的效率,也为教师和学生提供了便捷的信息服务平台。系统的友好界面和易操作性,使其具有广泛的应用前景。在开发过程中,我们不断学习新技术,解决了多个实际问题,这个过程极大地提升了我们的编程能力和问题解决能力。我们相信,随着技术的不断进步和教育需求的不断变化,多人命题系统将会有更大的发展空间。解决了多个实际问题,这个过程极大地提升了我们的编程能力和问题解决能力。我们相信,随着技术的不断进步和教育需求的不断变化,多人命题系统将会有更大的发展空间。

轻松上手MYSQL:探索MySQL索引数据结构的奥秘-让数据库飞起来

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》《MYSQL》 💪🏻 制定明确可量化的目标,坚持默默的做事。 ✨欢迎加入探索MYSQL索引数据结构之旅✨ 👋 大家好!文本学习研究InnoDb索引数据结构和算法,从而弄明白为什么添加索引之后查询速度会有质的提升。 👋 无论您是刚接触MySQL的初学者,还是希望深入优化性能的资深开发者,这篇文章都将为您揭开MySQL索引的神秘面纱,让您掌握其中的奥秘,进而提升数据库操作的效率和精度。快来一起探索吧! 🚀 前几天一位朋友跟我聊他面试的一问题:“为数据库表添加索引为何提高查询性能?”。 💪 这个问题让我深思,所以把部分思考分享出来。欢迎大家评论讨论和互相学习。 1. 什么是索引? 2.InnoDB的数据结构是什么?为什么选这个数据结构? 目录 一、索引 1.1 什么是索引? 1.2 索引类型及应用场景 二、索引数据结构 2.1 数据结构 2.2 普通二叉树 2.3 平衡二叉树 2.4 b-tree 2.5 b+tree 一、索引 1.1 什么是索引? 我经常问面试者,什么是索引?如果是你该怎么回答?先给出自己的答案,再用三个10原则提问自己。 三个10原则: 10分钟之后再思考一下自己刚刚的回答是否满意, 10小时之后再思考一下自己刚刚的回答是否满意, 10天之后再思考一下自己刚刚的回答是否满意, 停几分钟思考一下。 定义:索引是为提升查询速度的排好序的数据结构。 是数据结构应该好理解, 思考:为什么是排好序的? 1.2 索引类型及应用场景 索引类型描述应用场景普通索引 定义:基本的索引类型,它没有任何限制,唯一任务就是加快系统对数据的访问速度 特点:允许重复值、允许为空 创建语句:create index `索引名称` on 表名(列名 排序规则) using 使用的数据结构; 唯一索引 定义:与普通索引类似,不同的是创建唯一性索引的目的1是为了提高访问速度,2是为了避免数据出现重复 特点:数据不重复 创建语句:create union index `索引名称` on 表名(列名 排序规则) using 使用的数据结构;

【宠粉赠书】科研绘图神器:MATLAB科技绘图与数据分析

小智送书第二期~ 为了回馈粉丝们的厚爱,今天小智给大家送上一套科研绘图的必备书籍——MATLAB科技绘图与数据分析。下面我会详细给大家介绍这套图书,文末留有领取方式。 图书介绍 《MATLAB科技绘图与数据分析》是一本综合性强、内容丰富的书籍,对于希望提升数据分析与科研绘图能力的读者而言,是不可多得的参考书。本书结合了作者丁金滨多年的数据分析与科研绘图经验,从基础操作到高级数据分析,详尽地讲解了MATLAB在科技图表制作与数据分析中的使用方法与技巧,涵盖了MATLAB的方方面面。书中提供了丰富的实例和详细的操作步骤,帮助读者快速上手并深入理解每个知识点。同时,本书还配有近300个示例的教学视频和上机练习资源文件,为读者提供了更直观、更实用的学习体验。 图书已经上架京东商城,可以在清华大学出版社旗舰店购买:https://item.jd.com/14604758.html 作者介绍 丁金滨,毕业于航空航天大学,现任职于中国科学院,担任高级工程师。从事科研工作近二十年,参与国家科技重大专项攻关任务,熟练掌握各类工程应用与数据分析软件,曾获得国家专利奖、北京市专利奖和中科院成果转化特等奖等荣誉。 读者对象 本书适合从事数据可视化与数据分析的科研工程技术人员、工程师,以及高校相关专业的本科生和研究生阅读。无论是MATLAB的初学者还是进阶用户,都能从本书中找到实用的指导和灵感。 推荐理由 这是一本全面介绍MATLAB科技绘图与数据分析的书籍,非常适合初学者逐步学习和掌握,也适合进阶用户提升技能。书中提供的大量示例和精美图表,不仅能够帮助读者理解理论知识,还能够通过实践加深记忆,提高学习效率。视频教学的加入,为读者提供了一个直观的学习途径,上机练习资源文件的存在,使得读者可以在阅读理论之后,立即动手实践,极大地提升学习效果。资深作者的深厚背景保证了书籍内容的专业性和前沿性,是科研人员、工程师和学生的宝贵参考资料。 图书目录 第 1 章 MATLAB的基本操作 1.1 工作环境 1.1.1 工作界面1.1.2 选项卡1.1.3 命令行窗口1.1.4 命令历史记录窗口1.1.5 当前文件夹1.1.6 工作区和变量编辑器 1.2 搜索路径 1.2.1 路径搜索机制1.2.2 设置搜索路径 1.3 文件操作 1.3.1 打开文件1.3.2 关闭文件1.3.3 读取二进制文件1.3.4 写入二进制文件1.3.5 写入文本文件1.3.6 读取文本文件 1.4 数据存取 1.4.1 使用向导导入数据1.4.2 使用函数存取数据 1.5 帮助系统 1.5.1 文本帮助1.5.2 演示帮助1.5.3 帮助导航窗口 1.6 本章小结 第 2 章 数据类型与基本运算 2.1 数据类型 2.1.1 数值类型2.1.2 字符类型2.1.3 结构体2.1.4 元胞数组2.1.5 函数句柄2.1.6 映射容器 2.2 运算符与运算 2.2.1 算术运算符2.2.2 关系运算符2.