我比较习惯Chrome浏览器。
Chrome 是由 Google 开发的免费网页浏览器,调试代码非常方便。
Chrome 官网地址:https://www.google.com/intl/zh-CN/chrome/。
控制台输出 浏览器的控制台是开发者工具中的一个重要组成部分,它可以用来查看网页的错误、警告、调试信息以及执行JavaScript代码等。下面我会详细解释一下控制台的常见输出信息,并举例说明:
错误信息(Errors):显示网页加载过程中发生的错误,例如资源加载失败、JavaScript语法错误等。这些错误可能会影响网页的正常运行。
举例:在控制台中出现"Uncaught ReferenceError: functionA is not defined",这表示在JavaScript代码中引用了未定义的函数functionA。
警告信息(Warnings):显示网页中的警告信息,例如过期的API使用、潜在的性能问题等。虽然不会导致程序崩溃,但也需要引起开发者的关注。
举例:警告提示"Resource interpreted as Stylesheet but transferred with MIME type text/plain",表示浏览器将某个资源当作样式表加载,但服务器返回的MIME类型却是text/plain,可能会导致样式无法正确应用。
信息消息(Logs):显示开发者或网页本身输出的信息,例如调试信息、状态信息等。开发者可以使用console.log()函数输出自定义信息。
举例:网页中使用console.log(“Page loaded successfully”),则在控制台中会显示"Page loaded successfully"。
网络请求信息(Network Requests):展示网页加载时发送和接收的网络请求信息,包括请求URL、请求方法、状态码、耗时等。
举例:显示网页加载时向服务器请求了图片、CSS文件和JavaScript文件的信息,以及每个请求的详细信息和耗时情况。
其他信息(Others):包括其它类型的输出信息,例如对DOM操作的记录、性能跟踪信息等。
通过查看控制台输出信息,开发者可以及时发现和解决网页中的问题,从而提高网页性能和用户体验。
打开浏览器控制台的步骤 要使用F12键在Chrome浏览器中打开控制台,可以按照以下步骤进行:
打开Chrome浏览器,在网页上任意位置按下F12键(或者Fn + F12,取决于你的键盘设置)。
或者你也可以点击Chrome浏览器右上角的菜单按钮(三个点),选择“更多工具”,然后选择“开发者工具”。
在弹出的开发者工具面板中,你会看到多个选项卡(Elements、Console、Sources等),选择“Console”选项卡即可进入控制台页面。
现在你就可以在控制台中查看网页的错误、警告、调试信息以及执行JavaScript代码了。
通过按下F12键或通过菜单选项来打开控制台,你可以方便地进行网页的调试和分析工作。
用浏览器的Console 窗口调试 JavaScript 代码 当你在浏览器的Console窗口中调试JavaScript代码时,可以执行简单的代码,并查看输出结果。以下是一个示例:
假设你想计算1到10的所有整数的和。你可以这样做:
打开浏览器,按下快捷键Ctrl+Shift+I(Windows/Linux系统)或Cmd+Option+I(Mac系统)来打开开发者工具。切换到Console选项卡。输入以下代码并按下回车执行: let sum = 0; for (let i = 1; i <= 10; i++) { sum += i; } console.
在 pytest 测试框架中,参数化测试(Parametrized Testing)意味着将一个测试用例设计为能够接受不同输入数据(参数)并分别执行,以验证被测试代码在面对多种情况时的行为是否符合预期。参数化测试的核心理念是通过复用相同的测试逻辑,但使用不同的输入数据集来增加测试覆盖率,减少代码重复,并提高测试的灵活性和效率。该篇文章就如何使用pytest进行参数化配置来深入解析:
目录
一、参数化测试概念
二、使用 pytest.mark.parametrize
1、基本用法
2、多层参数化:组合数据示例
3、从外部文件加载参数数据(重要)
4、结合 fixture 进行参数化
5、动态参数生成
6、参数化与条件跳过
一、参数化测试概念 参数化测试是一种软件测试策略,它允许测试人员或开发人员使用一组预定义的输入数据集合来运行相同的测试逻辑。这意味着一个测试用例可以被设计为接受不同参数,并根据这些参数执行相应的测试操作。这种方法有助于提高测试覆盖率,确保程序在多种数据条件下的行为正确性,同时减少了编写重复测试代码的工作量。
在参数化测试中,测试脚本保持不变,但其执行时使用的数据集可以灵活变化。这些数据集可能包括边界条件、异常情况、典型用户输入、负测试用例等。通过参数化,测试团队可以系统地遍历各种预期和非预期的输入情况,确保软件在面对多种输入时都能稳定、准确地响应。
二、使用 pytest.mark.parametrize 1、基本用法 pytest的参数化主要通过 pytest.mark.parametrize 装饰器实现。这个装饰器允许你为测试函数指定一组或多组不同的输入数据和预期输出(如果有),从而生成多个独立的测试用例。
基本用法如下:
import pytest # 假设有一个待测试的函数 `add(a, b)` def add(a, b): return a + b # 使用 @pytest.mark.parametrize 装饰器参数化测试函数 @pytest.mark.parametrize("a, b, expected_sum", [ (1, 2, 3), (0, 5, 5), (-1, -2, -3), # ... 更多测试数据 ]) def test_add(a, b, expected_sum): result = add(a, b) assert result == expected_sum 在这个例子中,pytest.
正如你所理解的,任何领域都不可能停止进步,不断使用相同的工具意味着不思进取。这一点在信息技术领域,尤其是网络开发行业非常明显。
关于网络框架,不论是 Django 和 Flask 等传统框架还是 Python 的新型高级框架,一直有着新的框架不断出现,它们正在挤掉传统和成熟的技术,它们特征更好、编码更方便、更简单、更快捷。
众所周知的 Python web 框架 Django 该网络框架是最流行的 Python 网络框架之一。它能让开发变得简单,编写易于理解的代码,并快速适应开发。Django 支持与 MySQL、SQLite、PostgreSQL 和 Oracle 等主流数据库协同工作,还可以使用第三方驱动程序。它提供了一个抽象层,无需编写 SQL 查询来获取/保存数据到数据库。Django 的功能包括身份验证、URL 路由、模板引擎、对象关系映射器(ORM)和数据库模式迁移(Django v.1.7 +)。
如果您选择 Django,就不必担心功能不足。从模板引擎到对象关系映射,您将从这个框架中获得您所期望的一切。最重要的是,它是免费开源的。
Flask Flask 是一个微型框架,因此更注重工作的简单性和快速构建必要网络服务的能力。与其他框架相比,Flask 的配置和安装时间更短;HTTP 功能的抽象层级更低。Flask 的灵感来自 Sinatra Ruby 框架。Flask 的核心理念是为网络应用程序打下坚实的基础。它有许多有用的功能:内置开发服务器和快速调试器、Jinja2 模板、支持安全 cookies 以及连接任何 ORM 的能力。它既适合初级网络开发人员,也适合希望使用最佳实践、实现快速原型设计和创建独立应用程序的专家。
Bottle Bottle 是一个非常轻量级的框架,只需一个文件即可完成。尽管它非常简约,但 Bottle 提供了相当丰富的功能,100% 可满足中小型项目的需求。
它包含了干净的 URL 路由,而模板则是该框架的强项。实用工具(即 “瓶子”)可方便地访问数据表格、文件上传、标题和其他与 HTTP 相关的元数据。它内置了一个 HTTP 开发服务器,支持 fapws3、bjoern、GAE、CherryPy 和其他任何支持 WSGI 的 HTTP 服务器。
对于原型设计、学习如何组织网络框架以及创建简单的应用程序来说,这几乎是一个完美的解决方案。
后起 web 框架 现在,我们将简要介绍一些 Python Web 框架,以便了解有哪些新的解决方案。对待任何新框架都需要给予关注和尊重。首先,建议您在试点项目中试用新框架,研究它的优缺点,踩几脚耙子,然后才将其用于客户的商业项目中。
Llama 3与GPT-4相比,各有其优劣点。以下是基于我搜索到的资料的详细分析:
Llama 3的优点:
更大的数据集和参数规模:Llama 3基于超过15T token的训练,这相当于Llama 2数据集的7倍还多[1][3]。此外,它拥有4000亿参数[3],这表明Llama 3在处理大量信息方面具有更强的能力。支持长文本和改进的tokenizer:Llama 3支持8K长文本,并且其改进的tokenizer具有128K token的词汇量,这使得它能够更好地理解和生成语言[1]。在多个关键基准测试中的表现:Meta表示,Llama 3在多个关键的基准测试中性能优于业界先进同类模型,特别是在代码生成等任务上实现了全面领先[9][10][15]。增强的推理和代码能力:Llama 3具有增强的推理和代码能力,这意味着它在解决复杂问题和编写代码方面可能表现更佳[6][16]。多语言支持和错误减少:Llama 3预训练数据中超过5%是非英语的高质量数据,覆盖超过30种语言,设计上减少了错误拒绝的情况[13]。 GPT-4的优点:
视觉输入选项:GPT-4引入了视觉输入功能,可以处理图像并生成与图像相关的文本信息[2][4][18]。更高的字数限制和先进的推理能力:GPT-4具有更高的字数限制和先进的推理能力,这可能使其在处理长文本和复杂逻辑推理方面更为出色[2][4]。多模态输入(图+文):GPT-4支持多模态输入,即可以同时处理图像和文本,这为多种应用场景提供了便利[5]。改进的交互性和理解能力:GPT-4在改进交互性和加深理解方面取得了进展,这可能提高了其在自然对话和复杂任务中的表现[4]。 总结:
Llama 3在参数规模、长文本支持、多语言能力和特定任务(如代码生成)上的表现优于GPT-4。而GPT-4则在视觉输入、多模态处理、交互性和理解能力方面展现出优势。因此,选择哪一个模型取决于具体的应用需求和场景。
Llama 3和GPT-4在处理长文本时的具体性能比较是什么? Llama 3和GPT-4在处理长文本方面的性能比较,根据我搜索到的资料,可以得出以下结论:
GPT-4已经被证明是一个强大的多模态模型,能够处理更长的文本,并支持图像输入[30][31]。GPT-4 Turbo版本的上下文长度为128k,相当于300页文本[37],这表明GPT-4具有处理非常长文本的能力。Llama 3旨在直接对标GPT-4,其最大底牌为4000亿参数[31]。通过实施分组查询注意力(GQA)技术,Llama 3在维持高精度的同时,显著提升了运算速度和效率[32]。此外,CEPE技术的引入使得Llama 3在处理长文本和复杂语境时更加得心应手,与传统的上下文扩展方法相比,具有更高的效率和准确性[36]。尽管没有直接提到Llama 3的具体上下文长度能力,但从其采用的技术和目标来看,Llama 3被设计为能够处理复杂、更长的文本序列[32],并且强调了对长文本处理能力的优化[36]。 虽然GPT-4已经展示了其处理长文本的强大能力,特别是其Turbo版本能够处理相当于300页文本的长度[37],但Llama 3通过采用先进的技术和方法,如分组查询注意力(GQA)和CEPE技术,旨在提供更高的运算速度、效率以及处理长文本的能力[32][36]。因此,可以推断Llama 3在处理长文本方面具有竞争力,尽管具体性能参数未在证据中明确提及。
Llama 3的多语言支持和错误减少策略具体是如何实现的? Llama 3的多语言支持和错误减少策略主要通过以下方式实现:
后期训练程序的改进:通过对后期训练程序的改进,Llama 3大大降低了错误率,并减少了检查点和回滚的开销。这种改进包括了监督微调(SFT)、拒绝采样、近似策略等方法的结合使用[40]。后训练程序的具体效果:这些改进不仅降低了错误拒绝率,提高了模型对齐度,还增加了模型响应的多样性。此外,还观察到在推理、代码生成和指令遵循等功能上的显著改进[41]。多语言支持的方法:虽然具体的证据中没有直接提到Llama 3如何实现多语言支持,但根据现有的LLM(大型语言模型)实践,一种常见的方法是使用包含多语言语料库、翻译对齐语料库等的大规模文本数据集来训练LLM。这种方法需要大规模文本数据和跨语言对齐技术[42]。与其他模型的比较:值得注意的是,现有的LLM主要面向高资源语种开发,例如ChatGPT和LLama侧重于英语,而其他模型如ChatGLM、MOSS、千问等则关注中文。这表明Llama 3可能采用了特定的技术或方法来支持多语言,尽管具体细节未在证据中提及[43]。 Llama 3的多语言支持和错误减少策略主要通过后期训练程序的改进实现,包括监督微调、拒绝采样和近似策略的结合使用,以及通过使用大规模的多语言数据集来训练模型。这些改进提高了模型的对齐度、响应多样性和功能性能,尽管具体的多语言支持细节未在证据中明确说明。
GPT-4在视觉输入方面的技术细节和应用案例有哪些? GPT-4在视觉输入方面的技术细节和应用案例主要包括以下几个方面:
多模态能力:GPT-4是一种大型多模态模型,能够接受图像和文本输入,并生成相应的文本输出。这种能力使得GPT-4在处理语言和图像方面更加全面和准确[45][46]。图像处理能力:GPT-4具备强大的图像处理能力,可以用于多种图像处理任务。这包括但不限于图像分割、分类、分析以及隐含语义提取等[44][48]。复杂图像信息处理:除了普通图片,GPT-4还能处理更复杂的图像信息,如表格、考试题目截图、论文截图、漫画等。例如,它可以根据专业论文直接给出论文摘要和要点[47]。视觉理解功能:GPT-4的视觉理解功能,也称为GPT-4V或gpt-4-vision-preview,不仅能处理文本输入,还能理解和分析图像。这一功能为许多领域提供了新的可能性[49]。应用案例: 科研图像处理:基于GPT-4进行科研图像处理,如面积测量等[44]。图像识别:GPT-4的视觉理解功能可以应用于图像识别领域[49]。文本与图像结合的应用:GPT-4模型可对图文多模态输入生成应答文字,表现出优秀的应答能力[48]。Stabilty AI与Clipdrop联合推出的一键改变图像比例功能,展示了GPT-4在图像处理方面的实际应用[50]。 GPT-4在视觉输入方面的技术细节主要体现在其多模态能力、强大的图像处理能力以及对复杂图像信息的处理上。应用案例则涵盖了科研图像处理、图像识别以及图文结合的多种应用场景。
Llama 3与GPT-4在代码生成任务上的性能对比结果如何? Llama 3与GPT-4在代码生成任务上的性能对比结果显示出了一些差异和进展。首先,GPT-4 Turbo模型针对代码生成任务进行了优化,取得了重大进步,在理解自然语言指令和生成高质量代码方面表现出了显著的能力[56]。这表明GPT-4在代码生成方面已经达到了一个较高的水平。
另一方面,Llama 3展现了在推理、代码生成和指令跟随等方面的重大提升,使其在复杂任务处理上更加精准和高效[55]。特别是在与所有开源和闭源模型的性能对比中,Llama 3能够完胜GPT-4,并且秒杀闭源模型,显示出其在代码生成任务上的强大性能[57][59]。
然而,需要注意的是,这些性能对比的结果可能受到多种因素的影响,包括模型训练的数据量、计算资源的使用以及特定任务的复杂性等。例如,Llama 3的训练所使用的计算能力显著大于GPT-4,这可能为其提供了更好的性能优势[61]。
虽然GPT-4在代码生成任务上取得了显著的进步,但根据现有资料,Llama 3在代码生成任务上的性能似乎更胜一筹,尤其是在与GPT-4的直接比较中[57][59]。然而,这种比较的结果可能会随着时间和技术的发展而变化。
GPT-4的交互性和理解能力改进的具体表现和应用场景是什么? GPT-4的交互性和理解能力的改进主要体现在以下几个方面:
上下文理解与对话响应:GPT-4能够理解上下文并以对话方式响应,这使得其在聊天机器人和虚拟助手的应用中表现得更加自然和有效,显著改善了用户体验[64]。这种能力的提升,使得GPT-4可以轻松处理来回对话,维持更长的对话线程,从而增强了动态性和交互性[65]。多语言和图文理解:GPT-4在多语言理解和图文理解能力上均表现出色,能够融会贯通这些能力[67]。这意味着GPT-4不仅能够理解和生成多种语言的内容,还能够识别和理解图像,这是通过增加识别和理解图像的能力实现的[68]。复杂任务处理能力:GPT-4在处理更复杂、更细微的任务时,回答更加可靠和有创意。这表明GPT-4在多类考试测验以及其他与大型语言模型(LLM)比较的基准测试中,展现出了显著的进步[67]。回答准确性和创造性写作:GPT-4在回答准确性上取得了显著提高,同时还能进行编歌曲、写剧本等创造性的写作活动[68][70]。这说明GPT-4不仅在准确性上有提升,还在创造性输出方面有了显著的进步。应用场景的拓展:GPT-4的应用场景包括但不限于智能客服、聊天机器人、问答系统、情感分析等[62][63]。这些应用场景的拓展,得益于GPT-4在交互性、理解能力和创造力方面的综合提升。 GPT-4的交互性和理解能力的改进,使其在多个领域内都能提供更加自然、有效和创造性的交互体验,从而拓宽了其应用场景,包括但不限于智能客服、聊天机器人、问答系统、情感分析以及创意写作等领域。
参考资料 1. 开源大模型Llama 3王者归来!最大底牌4000亿参数,性能直逼GPT-4
如是我闻 :那你说决策树这块还能考点啥呢,也就是算算属性的信息增益(Information Gain)了,
信息增益是一种评估特征(属性)在分类任务中重要性的方法,它基于熵的概念来计算。熵是一个衡量数据集中不确定性或混乱程度的指标。信息增益则是衡量在知道某个属性的信息之后,数据集不确定性减少的程度
下面我们通过一道小练习题来用心感受一下这类题:
问题描述 在这个问题中,数据集包含了三个特征(A、B、C)和一个分类标签,任务是计算属性A对于分类结果的信息增益值,以此评估A在预测结果中的有效性和重要性。
原始数据: ABC标签 (L)1101111200110111 解题步骤 信息增益的计算过程分为三个主要步骤:
计算整体数据集的熵(Initial Entropy)计算在特定属性条件下的条件熵(Conditional Entropy)计算信息增益(Information Gain) 步骤 1: 计算整体数据集的熵(Initial Entropy) 数据使用: 标签有三个1和一个2。 计算方法: 概率: P ( L = 1 ) = 3 4 P(\text{L}=1) = \frac{3}{4} P(L=1)=43 P ( L = 2 ) = 1 4 P(\text{L}=2) = \frac{1}{4} P(L=2)=41 熵公式: H ( L ) = − ( 3 4 log 2 3 4 + 1 4 log 2 1 4 ) = 0.
一、2022年省赛解析
第1题-分草莓
小明邀请了四个同学一起游玩,带了一盒草莓平均分给大家一起吃,任意输入草莓的数量n,输出每个人可以分到几颗草莓,最后剩下了几颗。
注意:
input()内不添加任何参数
只有完全正确才可提交,若无法点击提交说明答题存在错误,可及时进行检查并修改
输入样例:
28
输出样例::
5
3
[参考代码]:
# 将字符数字转成整数``n = int(input())``# 使用 //和 %运算符``print(n // 5)``print(n % 5) 第2题-商店结算
商店铅笔优惠销售标准:购买8支以内(含),每支售价0.8元,超过8支部分,每支售价0.7元。任意输入购买的铅笔总量n,输出总金额。
注意:
input()内不添加任何参数
只有完全正确才可提交,若无法点击提交说明答题存在错误,可及时进行检查并修改
输入样例:
11
输出样例:
8.5
[参考代码]:
# 将字符数字转成整数``n = int(input())``# 分两种情况进行计算``if n <= 8:` `print(n * 0.8)``else:` `print( 8 * 0.8 + (n - 8) * 0.7 ) 第3题-数位输出
输入一个正整数n,如果是四位数,则分别输出这个数千位、百位,十位和个位分别为多少,如果是两位数,则输出个位数字是多少,如果不是两位或者四位数,则输出no。
注意:
input()内不添加任何参数
只有完全正确才可提交,若无法点击提交,说明答题存在错误,可及时进行检查并修改
输入样例1:
2345
输出样例:
2
3
4
5
输入样例2:
23
🦉 AI新闻 🚀 迄今为止最强大的公开可用的大语言模型(LLM)Meta Llama 3 发布 摘要:Meta Llama 3 是一个最新且开放可用的大型语言模型(LLM),由Meta推出。它专为开发者、研究人员和企业设计,拥有强大的语言处理和生成能力。Meta Llama 3的功能集成了前沿的人工智能技术,为用户提供了一个强大的工具,以帮助他们进行创作、编程、解决问题和更多。
🚀 谷歌重组提高效率,包括裁员与内部调整 摘要:Alphabet 旗下谷歌公司正进行裁员,影响员工可申请内部职位,裁员非全公司范围。此举旨在通过重组许多团队,提高工作效率和产品重要性,特别是财务团队等,以更好地支持对人工智能的投资。财务总监露丝-波拉特表示,这是对AI带来的平台转变的响应,谷歌需作出困难决策以维持目标一致性。此前在1月,谷歌已经解雇了数百名员工,准备进一步投资新技术。谷歌CEO桑达尔・皮查伊确认2024年会有进一步裁员。
🚀 Adobe Express更新引入Firefly AI新功能 摘要:Adobe本周对Adobe Express(原先名为Photoshop Express)进行了更新,新增了Firefly AI功能。这项功能允许用户在应用中生成图像、文本效果以及进行AI填空操作。Firefly AI支持视频制作,提供多语言字幕生成,文本到图像生成,以及文本效果创作等多种应用。此外,用户还能访问成千上万的视频、模板和Adobe Stock资源,使内容创作变得更加高效与个性化。更新不仅包括了快速操作功能,如一键编辑、背景调整,还提供了内容调度器,帮助用户轻松发布作品到社交媒体。
理由:Adobe为广大设计和内容创作领域的用户提供了一个强大的更新,将AI技术更深入地整合到常用工具中,这对加速创作流程、提高效率具有重要意义。但考虑到其他许多应用也在不断加入类似的AI功能,这一更新在新颖性上可能略显不足。尽管如此,它仍旧对Adobe的现有用户和潜在用户具有较高的吸引力,进一步巩固了Adobe在创新软件领域的领先地位。
🚀 日本投资34亿元人民币打造AI超级计算机 摘要:日本经济产业省计划向五家本国企业提供总计725亿日元(约34亿元人民币)的补贴,以建设人工智能超级计算机,旨在降低对美国技术的依赖。这一投资重点强调了经济安全和减少技术依赖的重要性,特别是在人工智能和高性能计算机发展领域。报道提到,这种高性能计算力对于学习大量数据的AI和生成式AI极为关键。在此背景下,日本的几家公司将获得政府的财政支持,其中包括Sakura Internet、KDDI、GMO互联网、Rutilea和Highreso。该计划还包括通过云服务为本地企业提供超级计算能力,支持生成式AI的开发。
🚀 安徽蚌埠一男子用AI散布谣言被拘 摘要:安徽蚌埠李某误信网络“生财之道”,运用AI软件自动生成并发布300多篇文章,因其中充斥未经甄别的信息,导致谣言广泛传播。其中一篇关于警方打击卖淫嫖娼的虚假报道,严重损害了公安形象,引发广泛关注。蚌埠警方依法对李某行政拘留,并责令删除相关内容。公安部网安局强调,利用AI制造和传播虚假信息将受到法律追究,提醒公众合法使用互联网技术。
更多AI工具,参考国内AiBard123,Github-AiBard123
文章目录 1.算法原理2. 常见的深度优先遍历方式3. 代码实现总结 深度优先遍历(DFS)是一种常用的树或图的遍历算法,它通过尽可能深地搜索树或图的分支,直到路径上的所有节点都被访问完毕,然后再回溯到上一层,继续搜索其他路径。在二叉树中,常见的深度优先遍历包括前序遍历、中序遍历和后序遍历。 1.算法原理 深度优先遍历算法的核心思想是通过递归或栈来实现,它遵循以下步骤:
从根节点(或其他指定的起始节点)开始遍历。访问当前节点,并标记为已访问。递归地遍历当前节点的邻居节点,如果邻居节点未被访问,则重复步骤2。当所有邻居节点都被访问完毕或当前节点没有未访问的邻居节点时,回溯到上一层节点,继续遍历其他分支。 2. 常见的深度优先遍历方式 在二叉树中,常见的深度优先遍历方式有三种:
前序遍历(Preorder Traversal):先访问根节点,然后递归地遍历左子树和右子树。中序遍历(Inorder Traversal):先递归地遍历左子树,然后访问根节点,最后递归地遍历右子树。后序遍历(Postorder Traversal):先递归地遍历左子树和右子树,然后访问根节点。 3. 代码实现 #include <iostream> #include <stack> using namespace std; // 定义二叉树节点结构体 struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} }; // 前序遍历(递归版本) void preorderTraversal(TreeNode* root) { if (root) { cout << root->val << " "; preorderTraversal(root->left); preorderTraversal(root->right); } } // 中序遍历(递归版本) void inorderTraversal(TreeNode* root) { if (root) { inorderTraversal(root->left); cout << root->val << "
Vulkan、DirectX、Metal 和 WebGPU 等低级图形 API 正在融合为类似于当前 GPU 构建方式的模型。 图形处理单元 (GPU) 是异步计算单元,可以处理大量数据,例如复杂的网格几何形状、图像纹理、输出帧缓冲区、变换矩阵或你想要计算的任何数据。
NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 GPU 并不总是这样,最初它们是一组基于固定硬件的功能,几乎没有可编程性。 随着应用程序突破了这些不可编程系统的功能极限,这种情况发生了变化,这保证了 GPU 制造商和应用程序开发人员之间的竞争不断突破其设计的极限 [Peddie 2023]。 帧缓冲区和光栅器 [Fatahalian 2018] 带来了可编程着色器、通用 GPU (GPGPU) 计算,以及最近添加的用于人工智能光线遍历加速和张量处理的硬件。 图形 API 伴随着这些变化而不断发展,增加了固定图形管道、计算着色器以及最近的光线遍历功能(DirectX 12 和 Vulkan 光线追踪)。
让我们看一下图形 API 之间的一些相似点和不同点。 我们将介绍以下 C++ API:
🌋 Vulcan❎DirectX 12.x✖️DirectX 11.x🤖 Metal🕸️WebGPU⚪ OpenGL OpenGL的设计起源于计算机图形学的早期,被设计为状态机,因此它的接口与现代图形API有很大不同。 DirectX 11 虽然比 OpenGL 更接近现代 GPU 架构,但试图通过将 Vulkan、DirectX 12 和 Metal 目前让开发人员负责的任务委托给驱动程序来简化开发人员的工作。 [罗素 2014]
!!! 有需要的小伙伴可以通过文章末尾名片咨询我哦!!!
💕💕作者:小马
💕💕个人简介:混迹在java圈十年有余,擅长Java、微信小程序、Python、Android等,大家有这一块的问题可以一起交流!
💕💕各类成品java系统 。javaweb,ssh,ssm,springboot等等项目框架,源码丰富,欢迎咨询交流。学习资料、程序开发、技术解答、代码讲解、源码部署,需要请看文末联系方式。
摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,网上商城购物系统当然也不能排除在外。网上商城购物系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用springboot框架构建的一个管理系统。整个开发过程首先对软件系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计等;详细设计主要包括系统数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对系统进行功能测试,并对测试结果进行分析总结,得出系统中存在的不足及需要改进的地方,为以后的系统维护提供了方便,同时也为今后开发类似系统提供了借鉴和帮助。这种个性化的网上管理系统特别注重交互协调与管理的相互配合,激发了管理人员的创造性与主动性,对网上商城购物系统而言非常有利。
本网上商城购物系统采用的数据库是Mysql,使用springboot框架开发。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。
ABSTRACT With the rapid development of science and technology, all aspects of society, all walks of life are trying to integrate with modern advanced technology, through scientific and technological means to improve their own advantages, online shopping system of course can not be excluded. Online shopping mall system is a management system based on the practical application, using software engineering principles and development methods, using springboot framework.
❣博主主页: 33的博客❣
▶文章专栏分类: Java从入门到精通◀
🚚我的代码仓库: 33的代码仓库🚚
🫵🫵🫵关注我带你学更多数据结构的知识
目录 1.前言2.经典习题2.1相同的树2.2另一棵子树2.3翻转二叉树2.4平衡二叉树2.5对称二叉树2.6二叉树的构建及遍历2.7二叉树的分层遍历 3.总结 1.前言 在上一篇文章中,博主主要介绍了树与二叉树的基本概念、二叉树概念及特性、遍历方式自己实现一棵二叉树,在这篇文章中,博主将继续与大家分享二叉树经典习题。
2.经典习题 2.1相同的树 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同:OJ链接
解题思路
递归思想:
1.如果p为空,q为空,那么就是两颗空树肯定相等
2.如果一个树为空另一棵树不为空那么一定不相等
3.如果都不为空,值相同才相等。
4.在递归判断左子树是否相等,右子树是否相等,只有左右子树都相等才是相同的树
class Solution { class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) { this.val = val; this.left = left; this.right = right; } } public boolean isSameTree(TreeNode p, TreeNode q) { if(p==null&&q==null){ return true; } //p、q有一个为空 if(p==null&&q!
什么是Kotlin? 什么是Java?
主要区别:
Kotlin 的特点
Java的特点
Kotlin 的历史
JAVA的历史
Kotlin 和 Java 的区别
Kotlin 的优势
Java的优势
Kotlin 的缺点
Java的缺点
哪个更好?
大家好,我是坚果,这里是坚果前端小课堂 ,大家喜欢的话,可以关注我的公众号,获取更多资讯。
什么是Kotlin?
Kotlin是一种可以在 Java 虚拟机 (JVM) 上运行的开源编程语言。该语言可以在许多平台上运行。
它是一种将面向对象编程 (OOP) 和函数式编程结合在一个不受限制、自给自足且与众不同的平台中的语言。
什么是Java?
Java 是一种多平台、面向对象、以网络为中心的编程语言。它是最常用的编程语言之一。它也用作计算平台,最早由 Sun Microsystem 于 1995 年发布,后来被 Oracle 公司收购。
主要区别:
Kotlin 结合了面向对象和函数式编程的特性,而 Java 仅限于面向对象编程。
Kotlin 允许用户创建扩展函数,而 Java 不提供任何扩展函数。
Kotlin 不提供隐式转换,而 Java 支持隐式转换。
另一方面,Kotlin 中没有空变量或对象,空变量或对象是 Java 语言的一部分。
Kotlin 不支持静态成员,而 Java 使用静态成员。
在,原始类型的 Kotlin 变量是对象,而在 Java 中,原始类型的变量不是对象
Kotlin 支持 Lambda 表达式,而 Java 不支持 Lambda 表达式。
Hadoop高可靠集群搭建步骤(手把手教学)
【超级详细】
文章目录 1 HA集群基础配置1.1 创建系统为Centos7(Linux)的虚拟机1.2 基本网络配置1.3 连接FinalShell 2 NTP时间同步和免密登录2.1 NTP时间同步2.2 集群免密登录 3 JDK的安装与配置4 Zookeeper的安装与配置5 高可靠的Hadoop集群的安装与配置【核心】6.功能验证注意创作不易,关注一波呗 1 HA集群基础配置 基于VMware Workstation 17 Pro 1.1 创建系统为Centos7(Linux)的虚拟机 一、用管理员身份运行虚拟机
二、创建新的虚拟机:
选择自定义→选择硬件兼容性:Workstation 15.x→选择稍后安装→选Linux(L)(选CentOS 7 64位)→编辑虚拟机名字并选择文件位置→处理器数量和内核数量均选1→选择虚拟机内存(若运行内存是8G,则选择1G,若16G则选择2G,以此类推)→选择网络NAT模式(NAT模式就是电脑能上网虚拟机就能上网)→控制器类型选择推荐→磁盘类型也选择推荐→选择创建新虚拟磁盘→最大磁盘大小选择10G,并选择将虚拟磁盘存储为单个文件(若电脑为256或512G的就选择10G,1t的可选择20G)→在自定义硬件中可以把打印机和声卡移除
三、安装系统:
点击CD/DVD,选择使用ISO映像文件,找到已下载好的光盘iso文件CentOS-7-x86_64-Minimal-1908.iso
图 3-1虚拟机创建
四、开启虚拟机,选择第一个安装虚拟机(即直接按回车)
五、文字选英文版→选系统选→点击Done→安装的同时可设置密码
1.2 基本网络配置 一、修改主机名
1、配置hostname文件:
vi /etc/hostname
输入master
2、配置network文件:
vi /etc/sysconfig/network
输入NETWORKING=yes
HOSTNAME=master
(修改名字后要reboot重启虚拟机)
二、NET网络设置
首先以管理员身份进入,在页面左上角寻找“编辑”,点击进入后选择“虚拟网络编辑器”,点击“添加网络”,选择”VMnet8”,将”仅主机模式”改为“NAT模式”,
1、子网设置:
子网IP:192.168.222.0 #子网的最后一位一定是0
子网掩码:255.255.255.0
2、DHCP设置:
起始IP地址:192.168.222.128
结束IP地址:192.168.222.254
图 3-4 DHCP设置
3、NAT设置:
网关IP:192.168.222.2
图 3-5 NAT设置
以上三步做完点击“应用”,再点击“确定”
三、虚拟机网络配置
1、配置ifcfg-ens33文件:
一、前言 上一章节介绍了如何使用selenium与requests爬取大众点评店铺相关信息,本章将介绍如何爬取指定美食店铺下的评论信息
二、爬取目标 三、准备工作 登录大众点评后生成的cookies,获取方法上一章节有介绍,不清楚的请自行查阅上一篇文章
四、分析 通过上一篇文章获取到的munu.json文件我们知道美食店铺列表的链接为:https://www.dianping.com/{}/ch10,其中{}里面的值为城市的拼音,下面我将以肇庆为例来演示如何爬取店铺评论,因此目标链接为:https://www.dianping.com/zhaoqing/ch10
首先我们要先拿到店铺的链接才能顺理成章的拿到该店铺下的评论信息,用过f12观察元素可以清晰的发现店铺的链接就藏在这一个个的li标签下面。
接下来我们观察进入店铺页面点击更多评论时页面上的链接变成:https://www.dianping.com/shop/G2QCvbC34hFSrNIb/review_all
点击第二页链接变成:https://www.dianping.com/shop/G2QCvbC34hFSrNIb/review_all/p2,这时候我们可以猜测,其实p1,p2,p3,……分别会对应第一页,第二页,第三页……。这里我给出结论吧,经过验证我们的猜想是正确的
最后爬取评论信息
四、项目代码(带登录cookies) 获取店铺链接 #!/usr/bin/env python3 # coding:utf-8 import bag from bs4 import BeautifulSoup import re url = 'https://www.dianping.com/zhaoqing/ch10' session = bag.session.create_session() # 创建session管理器 for cookie in bag.Bag.read_json(r'./cookies.json'): # 添加cookies session.cookies.set(cookie['name'], cookie['value']) resp = session.get(url) # 发起请求 resp.encoding = 'utf8' resp.close() # print(resp.text) html = BeautifulSoup(resp.text, 'lxml') # 解析网页数据 soup = html.findAll('div', id='shop-all-list') # 缩小查找范围 # print(soup) pattern = re.
目录
前言
一、ELK日志分析系统概述
1、三大组件工具介绍
1.1 Elasticsearch
1.1.1 Elasticsearch概念
1.1.2 关系型数据库和ElasticSearch中的对应关系
1.1.3 Elasticsearch提供的操作命令
1.2 Logstash
1.2.1 Logstash概念
1.2.2 Logstash的主要组件
1.2.3 Logstash主机分类
1.2.4 Logstash工作过程
1.3 Kiabana
2、其他可替代Logstash组件介绍
2.1 Filebeat
2.2 缓存/消息队列(redis、kafka、RabbitMQ等)
2.3 Fluentd
3、为什么要使用ELK
4、完整日志系统的基本特征
5、ELK 的工作原理
二、搭建ELK日志分析系统
1、环境部署
2、ElasticSearch 集群部署
2.1 安装 elasticsearch-rpm 包并加载系统服务
2.2 修改 elasticsearch 主配置文件
2.3 创建数据存放路径并授权
2.4 启动elasticsearch是否成功开启
2.5 查看节点信息
3、安装 Elasticsearch-head 插件
3.1 编译安装 node
3.2 安装 phantomjs(前端的框架)
3.3 安装 Elasticsearch-head 数据可视化工具
3.4 修改 Elasticsearch 主配置文件
00-前序 随着ChatGPT、GPT-4等大语言模型的出现,彻底点燃了国内外的学者们与企业家们研发LLM的热情。国内外的大语言模型如雨后春笋一般的出现,这些大语言模型有一部分是开源的,有一部分是闭源的。
伴随着大语言模型的出现,国内外基于大语言模型的上层应用产品更是层出不穷,Huggingface上每天都会有大量新奇的应用出现在我们的眼前。对于任何一个大语言模型产品而言,都会涉及到一个很关键的步骤,如何低成本、稳定、高效的将某个大语言模型部署在特定的硬件平台上面,为了完成大语言模型的部署,LLM推理框架应运而生!
与传统的AI推理框架不同,基于LLM的推理框架的硬件规模更大、底层算子的复杂度更高、上层的推理形态更加多样。随着众多优质的大语言模型逐渐开源,算法端的门槛正在逐步降低,因而不同厂家的产品壁垒主要体现在不同的LLM推理框架上面。
虽然当前已经出现了众多开源的LLM推理框架,但是不同的LLM推理框架有着不同的侧重点,有着不同的特点。为了更好的节约项目成本、提升项目开发效率,根据自己的项目需求选择一个合适的LLM推理框架成为了一个至关重要的问题!由于大家可能都有自己的圈层,每个人知道或者了解到的LLM推理框架不尽相同,但是你并不能保证你了解到的就一定是最适合你的LLM推理框架!本文小编耗费了大量的精力帮你把国内外主流的LLM推理框架整理了出来,更多的细节请看下文。
01-vLLM 01.01-简介 链接-https://github.com/vllm-project/vllm
上图展示了vLLM的整体架构。vLLM采用集中式调度器来协调分布式GPU工作程序的执行。KV缓存管理器通过PagedAttention以分页方式有效地管理KV缓存。具体来说,KV缓存管理器通过集中式调度器发送的指令来管理GPU工作程序上的物理KV缓存
01.02-特点 🚂推理速度足够快
支持PagedAttention
连续Batch请求
支持CUDA/HIP图
支持GPTQ、AWQ、SequeezeLLM、FP8 KV Cache
🚂足够灵活与简单
与主流的Hugging face模型无缝结合
具有各种解码算法的高吞吐量服务,包括并行采样、波束搜索等
支持分布式推理的张量并行
兼容OpenAI的API服务器
支持NVIDIA与AMD GPU
🚂支持多种模型架构
01.03-样例代码 # 1-离线推理from vllm import LLM prompts = ["Hello, my name is", "The capital of France is"] # Sample prompts.llm = LLM(model="lmsys/vicuna-7b-v1.3") # Create an LLM.outputs = llm.generate(prompts) # Generate texts from the prompts. # 2-在线推理python -m vllm.entrypoints.openai.api_server --model lmsys/vicuna-7b-v1.3 02-TensorRT-LLM 02.01-简介 链接-https://github.com/NVIDIA/TensorRT-LLM
(1)Github学生认证
a.在github中补全必要信息
①登录github账号后(没有账号可用邮箱自行注册),
在https://github.com/settings/billing/payment_information中,填写好必填字段(带 * 标),填完记得点击save保存
②在Emails一栏中选择add address,填入自己的教育邮箱(学校分配的邮箱,后缀为edu.cn),并设置为primary email(没有的话在学校网站上自行申请注册)
b.完成Two-factor authentication
进入https://github.com/settings/security,选择enable two-factor authentication
出现如下界面
这里在手机商店内下载微软的Authenticator,登录微软账号,登录后在“已验证ID”中找到扫描QR码的选项,将扫码后生成的六位数字填入上图的框中,选择“continue”,完成Two-factor authentication
c.认证文件准备
①进入学信网,选择在线学籍报告验证并下载PDF文件(应该都会)
②进入https://www.deepl.com/translator/files,将PDF拖入框中选择目标语言为英文进行翻译,得到翻译后的英文PDF文件
③进入https://smallpdf.com/cn/pdf-to-jpg#r=convert-to-image,将PDF转换为jpg/jpeg格式
PS : 得到的图片可能超过1M,这里在文件夹中找到图片鼠标右键选择打开方式-画图工具(win11自带)
出现如下界面,点击框中按钮调整图片大小
选择按像素调整,水平设置为1100左右就够了,垂直会相应自动调整
调整后的照片顶部会有一个DeepL的水印,与下方的验证报告抬头一同截掉,即截掉下图
d.student认证
进入student认证界面(https://education.github.com/discount_requests/application),这一步需要定位所以要关掉科学上网工具,校园网登不上github可以尝试用手机流量开热点
①勾选Student,由于前面填写了教育邮箱,github会根据域名识别到你的学校,确认无误后select,点击continue会弹出获取定位的申请,选择同意。
②看到“already have an image?”,点击 upload an image提交学信网报告(裁剪后的图片)
在select proof type中选择 8 - other, 具体理由填写 student status verification report
点击Process my application,正常情况下会进入到进度条加载
提交失败的话就会一直在原页面刷新。失败的原因可能是图片裁剪不当,通过不了它的在线OCR,可以多尝试一下,一定不能漏掉Verification Code
PS : 如果上述方法都失败,Proof type选择类型1,拍照上传自己的学生证和校园卡,展示自己的学号等信息(审核会比较慢)
成功submit出现如下界面,等待三天左右,审核成功会通过邮箱告知
e.启用Copilot
进入https://github.com/settings/copilot,选择"start free trial"
选择“Get access to Github Copilot”
此时你就可以在vscode、pycharm等IDE上登录你的github账号免费使用copilot插件了。
下一篇博客会给出copilot本地部署的具体教程
这里作者挂了梯子,所以很流畅!
brew的下载,可参考另外一篇博文~Homebrew 安装与卸载
1、将第三方仓库加入brew brew tap shivammathur/php 2、安装指定版本的PHP brew install php@7.4 3、替换Mac自带PHP环境并刷新环境变量 -> % vim ~/.zshrc 将以下内容加入环境变量
echo 'export PATH="/opt/homebrew/opt/php@7.4/bin:$PATH"' >> ~/.zshrc echo 'export PATH="/opt/homebrew/opt/php@7.4/sbin:$PATH"' >> ~/.zshrc export LDFLAGS="-L/opt/homebrew/opt/php@7.4/lib" export CPPFLAGS="-I/opt/homebrew/opt/php@7.4/include" 刷新环境变量
source ~/.zshrc 最后,查看php版本 php -v
头歌(第五章 机器学习基本模型与算法在线实验闯关) 第1关:缺失值填充 任务描述
本关任务:读取“银行贷款审批数据.xlsx”表,自变量为x1-x15,决策变量为y(1-同意贷款,0-不同意贷款),其中x1-x6为数值变量,x7-x15为名义变量,请对x1-x6中存在的缺失值用均值策略填充,x7-x15用最频繁值策略填充。
#********** Begin **********# # 读取“银行贷款审批数据.xlsx”表,自变量为x1~x15,决策变量为y(1-同意贷款,0-不同意贷款) # 其中x1~x6为数值变量,x7~x15为名义变量 # 请对x1~x6中存在的缺失值用均值策略填充,x7~x15用最频繁值策略填充 # 最后返回填充处理后的X(即x1~x15),以及决策变量Y(即y) import pandas as pd def return_values(): df = pd.read_excel("银行贷款审批数据.xlsx") df.fillna(df.mean(), inplace=True) for col in df.columns[6:]: df[col].fillna(df[col].mode()[0], inplace=True) X = df.drop(columns=['y']) Y = df['y'] return X, Y #********** End **********# 第2关:数据标准化 任务描述
本关任务:在第一关的基础上,对x1 ~ x6数值型变量作均值-方差标准化处理,需要注意的是x7~x15名义变量不需要作标准化处理。
#********** Begin **********# #在上一关的基础上,对自变量X中的数值变量(x1~x6)作均值-方差标准化处理 # 需要注意的是x7~x15名义变量不需要作标准化处理 # 返回结果X1,数据结构为数组形式 # X1中含有标准化后的x1~x6和未标准化的x7~x15 import pandas as pd from sklearn.preprocessing import StandardScaler import numpy as np def return_values(): df = pd.
目录
引言
一、MHA集群介绍
(一)什么是MHA
(二)MHA集群原理
(三)同步方式
(四)管理节点与数据节点
二、实现MHA
(一)搭建主从复制环境
1.搭建时间同步
2.配置master服务器
3.配置slave服务器
4.主从共同操作
5.从服务操作
(二)安装MHA所有组件
1.安装依赖环境
2.安装node软件包
3.安装manager组件
4.配置ssh免密登录
5.在manager节点上配置MHA
6.创建MHA软件目录
7.设置虚拟VIP
8.进行环境测试
9.启动MHA
10.查看信息
11.模拟故障
12.故障恢复
总结
引言 在当今高度依赖数据库的应用场景中,MySQL数据库的高可用性显得尤为重要。MHA(MySQL Master High Availability Manager)作为一种开源的MySQL高可用解决方案,以其自动化故障转移和恢复能力广受业界认可。本文将深入探讨MHA集群的原理、部署步骤及实践要点。
一、MHA集群介绍 (一)什么是MHA MHA(Master High Availability)是一款专为MySQL设计的开源高可用解决方案,主要用于实现MySQL数据库的故障转移和主从复制管理,从而提高数据库服务的可靠性与可用性。MHA由日本人Yoshinori Matsunobu(后来加入Facebook)开发,特别适用于那些需要在主数据库发生故障时迅速切换到备用节点,同时保持数据一致性的场景。
(二)MHA集群原理 MHA由两部分构成:MHA Manager(管理节点)和MHA Node(数据节点)。在主从复制的MySQL集群中,MHA Manager负责监控主节点的健康状况,当主节点出现故障时,MHA Manager会自动选举出一个从节点升级为主节点,并协调其余从节点重新连接至新的主节点,实现无缝的故障转移。
监控与故障检测:MHA Manager通过心跳检测机制实时监控主节点状态,一旦检测到主节点失效,立即触发故障转移流程。
自动故障转移:基于预定义的故障转移策略,如优先级、数据延迟等指标,MHA会选择一个符合条件的从节点晋升为主节点。
数据一致性保证:MHA支持半同步复制和全局事务ID(GTID)复制,以确保故障转移前后数据的一致性。
(三)同步方式 同步复制:主库在接收到写请求后,会等待所有的从服务器同步完毕之后,才会返回给客户端
异步复制:MySQL主从复制默认采用异步复制方式,主库在接收到写请求后立即返回,无需等待从库确认,这种方式响应速度快,但可能存在一定的数据延迟
半同步复制:至少有一个从库接收到并执行完写操作后,主库才返回成功,提高了数据一致性。
(四)管理节点与数据节点 MHA Manager(管理节点):
MHA Manager是一个中心化的管理组件,通常部署在独立的服务器上,不直接处理数据库的读写请求。
它的主要职责是监控整个MySQL主从集群的健康状态,包括检测主节点是否在线、从节点的复制延迟等。
当主节点出现故障时,MHA Manager会自动执行故障转移流程,选择一个从节点升级为主节点,同时通知其他从节点改变复制源至新的主节点,并确保数据一致性。
MHA Manager还负责处理各种高级特性,比如半同步复制的管理、全局事务标识符(GTID)的支持、以及故障转移过程中的SQL线程暂停和恢复等。
MHA Node(数据节点):
MHA Node指的是参与MySQL主从复制集群中的所有数据库服务器,包括原来的主节点和从节点。
每个MHA Node都运行着MHA的Node Agent,用于与MHA Manager通信,报告自身状态和接收管理指令。