当前位置: 首页 > article >正文

HTML版英语学习系统

HTML版英语学习系统

这是一个完全免费、无需安装、功能完整的英语学习工具,使用HTML + CSS +JavaScript实现。

功能

  1. 文本朗读练习 - 输入英文文章,系统朗读帮助练习听力和发音,适合跟读练习,模仿学习;
  2. 实时词典查询 - 双击任意英文单词即可查看释义、音标和发音,适合新词汇学习和发音;(这一点,使用 Free Dictionary API,要联网)
  3. 分段学习 - 可以选择朗读全文、选中段落或当前段落;
  4. 重复练习 - 支持1-3次重复或循环播放,强化记忆;
  5. 学生自学 - 适合学生课文预习和自学;

个性化设置

  1. 语音选择 - 可选择不同的英语发音(美音、英音等)
  2. 语速调节 - 从0.5到2倍速,适应不同学习阶段
  3. 音调控制 - 调整音调让发音更清晰
  4. 音量控制 - 根据环境调整合适音量

运行截图

双击单词情况如下:

源码如下:

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>英语学习系统 - 文本转语音与词典查询</title><style>body {font-family: Arial, sans-serif;max-width: 1000px;margin: 0 auto;padding: 20px;color: #333;background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);min-height: 100vh;}.container {background: rgba(255, 255, 255, 0.95);border-radius: 15px;padding: 30px;box-shadow: 0 20px 40px rgba(0,0,0,0.1);}h1 {color: #2c3e50;text-align: center;margin-bottom: 10px;font-size: 28px;}.subtitle {text-align: center;color: #666;margin-bottom: 30px;font-style: italic;}.controls {margin: 20px 0;background-color: #fff;padding: 25px;border-radius: 12px;box-shadow: 0 4px 15px rgba(0,0,0,0.08);}textarea {width: 100%;height: 220px;margin: 10px 0;padding: 20px;border: 2px solid #e0e0e0;border-radius: 8px;font-size: 18px;line-height: 1.6;resize: vertical;box-sizing: border-box;transition: border-color 0.3s;}textarea:focus {outline: none;border-color: #667eea;box-shadow: 0 0 10px rgba(102, 126, 234, 0.2);}.parameter {display: flex;align-items: center;margin: 20px 0;justify-content: flex-start;gap: 15px;}.parameter label {min-width: 90px;text-align: right;margin-right: 15px;color: #555;font-weight: 600;}select {padding: 10px;border: 2px solid #e0e0e0;border-radius: 6px;background-color: #fff;font-size: 14px;transition: border-color 0.3s;}select:focus {outline: none;border-color: #667eea;}#voiceSelect {width: 460px;}#playCount {width: 130px;}input[type="range"] {width: 300px;height: 8px;margin: 0 15px;-webkit-appearance: none;background: linear-gradient(to right, #667eea, #764ba2);border-radius: 4px;outline: none;}input[type="range"]::-webkit-slider-thumb {-webkit-appearance: none;width: 20px;height: 20px;background: #fff;border: 3px solid #667eea;border-radius: 50%;cursor: pointer;box-shadow: 0 2px 6px rgba(0,0,0,0.2);}.value-display {min-width: 40px;text-align: center;background: #f8f9fa;padding: 5px 10px;border-radius: 4px;font-weight: 600;color: #667eea;}.status-display {margin: 25px 0;padding: 15px 20px;background: linear-gradient(135deg, #667eea, #764ba2);color: white;border-radius: 8px;font-size: 15px;font-weight: 500;text-align: center;}.buttons-container {margin-top: 25px;display: flex;justify-content: center;gap: 15px;flex-wrap: wrap;}.special-buttons {margin-top: 20px;padding-top: 20px;border-top: 2px solid #f0f0f0;display: flex;justify-content: center;gap: 15px;flex-wrap: wrap;}button {padding: 12px 25px;border: none;border-radius: 8px;font-size: 15px;font-weight: 600;cursor: pointer;transition: all 0.3s;color: white;background: linear-gradient(135deg, #4CAF50, #45a049);box-shadow: 0 4px 15px rgba(76, 175, 80, 0.3);}button:hover {transform: translateY(-2px);box-shadow: 0 6px 20px rgba(76, 175, 80, 0.4);}button:active {transform: translateY(0);}.special-button {background: linear-gradient(135deg, #2196F3, #1976D2);box-shadow: 0 4px 15px rgba(33, 150, 243, 0.3);}.special-button:hover {box-shadow: 0 6px 20px rgba(33, 150, 243, 0.4);}/* 词典查询相关样式 */.word-popup {position: absolute;background: white;border: 2px solid #667eea;border-radius: 12px;padding: 25px;max-width: 450px;box-shadow: 0 10px 30px rgba(0,0,0,0.2);z-index: 1000;font-size: 14px;animation: popupShow 0.3s ease;}@keyframes popupShow {from { opacity: 0; transform: scale(0.9) translateY(-10px); }to { opacity: 1; transform: scale(1) translateY(0); }}.word-popup .word-header {display: flex;align-items: baseline;gap: 15px;flex-wrap: wrap;margin-bottom: 20px;border-bottom: 2px solid #f0f0f0;padding-bottom: 15px;}.word-popup h3 {margin: 0;color: #667eea;font-size: 24px;font-weight: 700;}.word-popup .phonetic {color: #666;font-family: monospace;background: #f8f9fa;padding: 4px 8px;border-radius: 4px;}.word-popup .audio-btn {background: linear-gradient(135deg, #667eea, #764ba2);border: none;padding: 8px 15px;border-radius: 6px;cursor: pointer;color: white;font-size: 13px;margin-bottom: 15px;transition: all 0.3s;}.word-popup .audio-btn:hover {transform: translateY(-1px);box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);}.word-popup .meanings {max-height: 350px;overflow-y: auto;margin-bottom: 20px;}.word-popup .meaning-group {margin-bottom: 20px;background: #fafbfc;padding: 15px;border-radius: 8px;}.word-popup .part-of-speech {color: #667eea;font-weight: 700;margin-bottom: 10px;font-size: 16px;}.word-popup ol {margin: 0;padding-left: 25px;color: #333;}.word-popup ol li {margin: 10px 0;line-height: 1.5;}.word-popup .definition {color: #333;margin-bottom: 6px;}.word-popup .example {color: #666;font-style: italic;background: #e8f4fd;padding: 8px;border-left: 3px solid #667eea;margin-top: 8px;border-radius: 4px;}.word-popup .close-btn {width: 100%;margin-top: 20px;padding: 12px;background: linear-gradient(135deg, #95a5a6, #7f8c8d);border: none;border-radius: 6px;cursor: pointer;color: white;font-weight: 600;}.word-popup .close-btn:hover {background: linear-gradient(135deg, #7f8c8d, #6c7b7d);}.error-message {position: fixed;bottom: 30px;right: 30px;background: linear-gradient(135deg, #e74c3c, #c0392b);color: white;padding: 15px 25px;border-radius: 8px;animation: fadeIn 0.3s ease;box-shadow: 0 6px 20px rgba(231, 76, 60, 0.3);font-weight: 600;}@keyframes fadeIn {from { opacity: 0; transform: translateY(30px); }to { opacity: 1; transform: translateY(0); }}.learning-tip {background: linear-gradient(135deg, #f093fb, #f5576c);color: white;padding: 15px;border-radius: 8px;margin-bottom: 20px;<!-- text-align: center; -->font-weight: 500;}@media (max-width: 768px) {body {padding: 10px;}.container {padding: 20px;}.parameter {flex-direction: column;align-items: flex-start;}.parameter label {text-align: left;margin-bottom: 8px;}#voiceSelect {width: 100%;}input[type="range"] {width: 100%;margin: 10px 0;}.buttons-container,.special-buttons {flex-direction: column;align-items: center;}button {width: 200px;}}</style>
</head>
<body><div class="container"><h1>英语学习系统</h1><p class="subtitle">文本转语音 + 实时词典查询</p><div class="learning-tip">💡 (1)如果“开始朗读”不发音,请考虑选择语音是否不当。(2)可以设置播放次数,调整语速、音量和音调。(2)双击英文单词可查看英文释义、音标(这项功能需要联网,使用 Free Dictionary API实现)。</div><div class="controls"><label>你可以在下面文本区域输入文字,或者往其中粘贴复制的文本:</label><textarea id="textToSpeak" placeholder="请输入英文文本开始学习...">Welcome to the English Learning System!
This is an interactive text-to-speech application with dictionary lookup.
You can practice pronunciation, adjust speech parameters, and learn new vocabulary.
Double-click on any word like "pronunciation" or "vocabulary" to see its definition and hear how it sounds.</textarea><div class="parameter"><label for="voiceSelect">语音:</label><select id="voiceSelect"></select><label for="playCount">次数:</label><select id="playCount"><option value="1">播放1次</option><option value="2">播放2次</option><option value="3">播放3次</option><option value="-1">循环播放</option></select></div><div class="parameter"><label for="rate">语速:</label><input type="range" id="rate" min="0.5" max="2" step="0.1" value="1"><span id="rateValue" class="value-display">1.0</span><label for="pitch">音调:</label><input type="range" id="pitch" min="0.5" max="2" step="0.1" value="1"><span id="pitchValue" class="value-display">1.0</span></div><div class="parameter">            <label for="volume">音量:</label><input type="range" id="volume" min="0" max="1" step="0.1" value="1"><span id="volumeValue" class="value-display">1.0</span></div><div class="status-display" id="statusDisplay">系统就绪 - 开始你的英语学习之旅!</div><div class="buttons-container"><button onclick="speak()">🔊 开始朗读</button><button onclick="pause()">⏸️ 暂停</button><button onclick="resume()">▶️ 继续</button><button onclick="stop()">⏹️ 停止</button><button class="special-button" onclick="speakSelectedText()">📖 读选中文本</button><button class="special-button" onclick="speakCurrentParagraph()">📄 读当前段落</button></div></div></div><script>let speechSynth = window.speechSynthesis;let utterance = null;let currentVoice = null;let voices = [];let playCount = 1;let totalPlayCount = 1;// 加载语音列表function loadVoices() {voices = speechSynth.getVoices();let voiceSelect = document.getElementById('voiceSelect');// 对语音进行排序voices.sort((a, b) => {if (a.lang < b.lang) return -1;if (a.lang > b.lang) return 1;return a.name.localeCompare(b.name);});// 创建语言分组的对象let voicesByLang = {};voices.forEach(voice => {if (!voicesByLang[voice.lang]) {voicesByLang[voice.lang] = [];}voicesByLang[voice.lang].push(voice);});voiceSelect.innerHTML = '';// 遍历排序后的语言分组Object.keys(voicesByLang).sort().forEach(lang => {let groupElement = document.createElement('optgroup');groupElement.label = getLangLabel(lang);voicesByLang[lang].forEach((voice) => {let option = document.createElement('option');option.textContent = `${voice.name}`;option.setAttribute('data-voice-index', voices.indexOf(voice));if (currentVoice && voice.name === currentVoice.name) {option.selected = true;}groupElement.appendChild(option);});voiceSelect.appendChild(groupElement);});// 初始化当前语音if (!currentVoice && voices.length > 0) {currentVoice = voices[0];voiceSelect.selectedIndex = 0;}}// 添加双击事件监听document.getElementById('textToSpeak').addEventListener('dblclick', function(e) {const selectedText = window.getSelection().toString().trim();if (selectedText && /^[a-zA-Z]+$/.test(selectedText)) {lookupWord(selectedText);}});// 查询单词async function lookupWord(word) {updateStatus(`正在查询单词 "${word}"...`);try {const response = await fetch(`https://api.dictionaryapi.dev/api/v2/entries/en/${word}`);const data = await response.json();if (data && data.length > 0) {showWordDefinition(word, data[0]);updateStatus(`单词 "${word}" 查询成功!`);} else {showError('未找到该单词的释义');updateStatus('查询失败 - 未找到释义');}} catch (error) {showError('查询失败,请稍后重试');updateStatus('网络查询失败');}}// 显示单词释义function showWordDefinition(word, data) {let popup = document.createElement('div');popup.className = 'word-popup';// 构建释义内容let content = `<div class="word-header"><h3>${word}</h3>${data.phonetics && data.phonetics[0]?.text ? `<span class="phonetic">${data.phonetics[0].text}</span>` : ''}</div>`;// 添加发音按钮(如果有音频链接)const audioUrl = data.phonetics?.find(p => p.audio)?.audio;if (audioUrl) {content += `<button class="audio-btn" onclick="playAudio('${audioUrl}')">🔊 播放发音</button>`;}// 添加释义if (data.meanings && data.meanings.length > 0) {content += '<div class="meanings">';data.meanings.forEach(meaning => {content += `<div class="meaning-group"><div class="part-of-speech">${meaning.partOfSpeech}</div><ol>${meaning.definitions.map(def => `<li><div class="definition">${def.definition}</div>${def.example ? `<div class="example">Example: ${def.example}</div>` : ''}</li>`).join('')}</ol></div>`;});content += '</div>';}// 添加关闭按钮content += '<button class="close-btn" onclick="this.parentElement.remove()">关闭</button>';popup.innerHTML = content;document.body.appendChild(popup);// 定位弹出框const selection = window.getSelection();const range = selection.getRangeAt(0);const rect = range.getBoundingClientRect();// 调整弹出位置,确保在可视区域内let left = rect.left + window.scrollX;let top = rect.bottom + window.scrollY + 10;// 检查右边界if (left + 450 > window.innerWidth) {left = window.innerWidth - 470;}popup.style.left = `${left}px`;popup.style.top = `${top}px`;}// 播放音频function playAudio(url) {new Audio(url).play();}// 显示错误信息function showError(message) {const errorDiv = document.createElement('div');errorDiv.className = 'error-message';errorDiv.textContent = message;document.body.appendChild(errorDiv);setTimeout(() => errorDiv.remove(), 3000);}// 获取语言显示名称function getLangLabel(langCode) {const langNames = {'zh-CN': '中文 (中国)','zh-TW': '中文 (台湾)','zh-HK': '中文 (香港)','en-US': '英语 (美国)','en-GB': '英语 (英国)','ja-JP': '日语 (日本)','ko-KR': '韩语 (韩国)','fr-FR': '法语 (法国)','de-DE': '德语 (德国)','es-ES': '西班牙语 (西班牙)','it-IT': '意大利语 (意大利)','ru-RU': '俄语 (俄罗斯)',};return langNames[langCode] || langCode;}// 初始化语音if (speechSynth.onvoiceschanged !== undefined) {speechSynth.onvoiceschanged = loadVoices;}setTimeout(loadVoices, 100);// 监听播放次数选择变化document.getElementById('playCount').addEventListener('change', function(e) {totalPlayCount = parseInt(e.target.value);});// 语音选择改变事件document.getElementById('voiceSelect').addEventListener('change', function(e) {let selectedOption = e.target.options[e.target.selectedIndex];let voiceIndex = selectedOption.getAttribute('data-voice-index');currentVoice = voices[voiceIndex];});// 更新滑块值显示document.getElementById('rate').addEventListener('input', function(e) {document.getElementById('rateValue').textContent = parseFloat(e.target.value).toFixed(1);});document.getElementById('pitch').addEventListener('input', function(e) {document.getElementById('pitchValue').textContent = parseFloat(e.target.value).toFixed(1);});document.getElementById('volume').addEventListener('input', function(e) {document.getElementById('volumeValue').textContent = parseFloat(e.target.value).toFixed(1);});// 更新状态显示function updateStatus(message) {document.getElementById('statusDisplay').textContent = message;}// 创建并播放音频function createAndPlayUtterance(text) {if (!text.trim()) {updateStatus('没有文本可以朗读');return;}utterance = new SpeechSynthesisUtterance(text);if (currentVoice) {utterance.voice = currentVoice;}utterance.rate = parseFloat(document.getElementById('rate').value);utterance.pitch = parseFloat(document.getElementById('pitch').value);utterance.volume = parseFloat(document.getElementById('volume').value);utterance.onend = function(event) {console.log(`第 ${playCount} 次播放结束`);if (totalPlayCount === -1 || playCount < totalPlayCount) {playCount++;updateStatus(`正在播放第 ${playCount} 次...`);setTimeout(() => createAndPlayUtterance(text), 500);} else {updateStatus('播放完成 ✓');}};utterance.onstart = function() {updateStatus(`正在播放第 ${playCount} 次... 🔊`);};speechSynth.speak(utterance);}// 开始朗读function speak() {stop();let text = document.getElementById('textToSpeak').value;playCount = 1;totalPlayCount = parseInt(document.getElementById('playCount').value);createAndPlayUtterance(text);}// 获取选中的文本function getSelectedText() {const textarea = document.getElementById('textToSpeak');const start = textarea.selectionStart;const end = textarea.selectionEnd;if (start === end) {return '';}return textarea.value.substring(start, end);}// 获取光标所在段落的文本function getCurrentParagraph() {const textarea = document.getElementById('textToSpeak');const text = textarea.value;const cursorPosition = textarea.selectionStart;// 将文本按换行符分割const paragraphs = text.split('\n');let currentPosition = 0;for (let i = 0; i < paragraphs.length; i++) {const paragraphLength = paragraphs[i].length + 1; // +1 是为了计入换行符const paragraphEnd = currentPosition + paragraphLength;if (cursorPosition <= paragraphEnd) {return paragraphs[i].trim();}currentPosition = paragraphEnd;}return paragraphs[paragraphs.length - 1].trim();}// 朗读选中的文本function speakSelectedText() {stop();const selectedText = getSelectedText();if (!selectedText) {updateStatus('请先选中要朗读的文本');return;}playCount = 1;totalPlayCount = parseInt(document.getElementById('playCount').value);updateStatus('开始朗读选中文本...');createAndPlayUtterance(selectedText);}// 朗读光标所在段落function speakCurrentParagraph() {stop();const currentParagraph = getCurrentParagraph();if (!currentParagraph) {updateStatus('光标所在位置没有找到有效段落');return;}playCount = 1;totalPlayCount = parseInt(document.getElementById('playCount').value);updateStatus('开始朗读当前段落...');createAndPlayUtterance(currentParagraph);}// 暂停朗读function pause() {speechSynth.pause();updateStatus('已暂停 ⏸️');}// 继续朗读function resume() {speechSynth.resume();updateStatus('继续播放... ▶️');}// 停止朗读function stop() {speechSynth.cancel();playCount = totalPlayCount;updateStatus('已停止 ⏹️');}</script>
</body>
</html>

OK!

相关文章:

HTML版英语学习系统

HTML版英语学习系统 这是一个完全免费、无需安装、功能完整的英语学习工具&#xff0c;使用HTML CSS JavaScript实现。 功能 文本朗读练习 - 输入英文文章&#xff0c;系统朗读帮助练习听力和发音&#xff0c;适合跟读练习&#xff0c;模仿学习&#xff1b;实时词典查询 - 双…...

【threejs】每天一个小案例讲解:创建基本的3D场景

代码仓 GitHub - TiffanyHoo/three_practices: Learning three.js together! 可自行clone&#xff0c;无需安装依赖&#xff0c;直接liver-server运行/直接打开chapter01中的html文件 运行效果图 知识要点 核心三要素 场景&#xff08;Scene&#xff09; 使用 THREE.Scene(…...

C#中用于控制自定义特性(Attribute)

我们来详细解释一下 [AttributeUsage(AttributeTargets.Class, AllowMultiple false, Inherited false)] 这个 C# 属性。 在 C# 中&#xff0c;Attribute&#xff08;特性&#xff09;是一种用于向程序元素&#xff08;如类、方法、属性等&#xff09;添加元数据的机制。Attr…...

2025 后端自学UNIAPP【项目实战:旅游项目】7、景点详情页面【完结】

1、获取景点详情的请求【my_api.js】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http(/login/getWXSessionKey, {code,avatar}); };//…...

项目进度管理软件是什么?项目进度管理软件有哪些核心功能?

无论是建筑施工、软件开发&#xff0c;还是市场营销活动&#xff0c;项目往往涉及多个团队、大量资源和严格的时间表。如果没有一个系统化的工具来跟踪和管理这些元素&#xff0c;项目很容易陷入混乱&#xff0c;导致进度延误、成本超支&#xff0c;甚至失败。 项目进度管理软…...

iOS 项目怎么构建稳定性保障机制?一次系统性防错经验分享(含 KeyMob 工具应用)

崩溃、内存飙升、后台任务未释放、页面卡顿、日志丢失——稳定性问题&#xff0c;不一定会立刻崩&#xff0c;但一旦积累&#xff0c;就是“上线后救不回来的代价”。 稳定性保障不是某个工具的功能&#xff0c;而是一套贯穿开发、测试、上线全流程的“观测分析防范”机制。 …...

02-性能方案设计

需求分析与测试设计 根据具体的性能测试需求&#xff0c;确定测试类型&#xff0c;以及压测的模块(web/mysql/redis/系统整体)前期要与相关人员充分沟通&#xff0c;初步确定压测方案及具体的性能指标QA完成性能测试设计后&#xff0c;需产出测试方案文档发送邮件到项目组&…...

window 显示驱动开发-如何查询视频处理功能(三)

​D3DDDICAPS_GETPROCAMPRANGE请求类型 UMD 返回指向 DXVADDI_VALUERANGE 结构的指针&#xff0c;该结构包含特定视频流上特定 ProcAmp 控件属性允许的值范围。 Direct3D 运行时在D3DDDIARG_GETCAPS的 pInfo 成员指向的变量中为特定视频流的 ProcAmp 控件属性指定DXVADDI_QUER…...

MySQL基本操作(续)

第3章&#xff1a;MySQL基本操作&#xff08;续&#xff09; 3.3 表操作 表是关系型数据库中存储数据的基本结构&#xff0c;由行和列组成。在MySQL中&#xff0c;表操作包括创建表、查看表结构、修改表和删除表等。本节将详细介绍这些操作。 3.3.1 创建表 在MySQL中&#…...

JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除

目录 一 基础 1 概念 2 卖票问题 3 转账问题 二 锁机制与优化策略 0 Monitor 1 轻量级锁 2 锁膨胀 3 自旋 4 偏向锁 5 锁消除 6 wait /notify 7 sleep与wait的对比 8 join原理 一 基础 1 概念 临界区 一段代码块内如果存在对共享资源的多线程读写操作&#xf…...

SpringCloud优势

目录 完善的微服务支持 高可用性和容错性 灵活的配置管理 强大的服务网关 分布式追踪能力 丰富的社区生态 易于与其他技术栈集成 完善的微服务支持 Spring Cloud 提供了一整套工具和组件来支持微服务架构的开发,包括服务注册与发现、负载均衡、断路器、配置管理等功能…...

Electron简介(附电子书学习资料)

一、什么是Electron&#xff1f; Electron 是一个由 GitHub 开发的 开源框架&#xff0c;允许开发者使用 Web技术&#xff08;HTML、CSS、JavaScript&#xff09; 构建跨平台的桌面应用程序&#xff08;Windows、macOS、Linux&#xff09;。它将 Chromium浏览器内核 和 Node.j…...

深入理解 C++ 左值右值、std::move 与函数重载中的参数传递

在 C 编程中&#xff0c;左值和右值的概念以及std::move的使用&#xff0c;常常让开发者感到困惑。特别是在函数重载场景下&#xff0c;如何合理利用这些特性来优化代码性能、确保语义正确&#xff0c;更是一个值得深入探讨的话题。 在开始之前&#xff0c;先提出几个问题&…...

【大厂机试题解法笔记】矩阵匹配

题目 从一个 N * M&#xff08;N ≤ M&#xff09;的矩阵中选出 N 个数&#xff0c;任意两个数字不能在同一行或同一列&#xff0c;求选出来的 N 个数中第 K 大的数字的最小值是多少。 输入描述 输入矩阵要求&#xff1a;1 ≤ K ≤ N ≤ M ≤ 150 输入格式 N M K N*M矩阵 输…...

java 局域网 rtsp 取流 WebSocket 推送到前端显示 低延迟

众所周知 摄像头取流推流显示前端延迟大 传统方法是服务器取摄像头的rtsp流 然后客户端连服务器 中转多了&#xff0c;延迟一定不小。 假设相机没有专网 公网 1相机自带推流 直接推送到云服务器 然后客户端拉去 2相机只有rtsp &#xff0c;边缘服务器拉流推送到云服务器 …...

免费批量Markdown转Word工具

免费批量Markdown转Word工具 一款简单易用的批量Markdown文档转换工具&#xff0c;支持将多个Markdown文件一键转换为Word文档。完全免费&#xff0c;无需安装&#xff0c;解压即用&#xff01; 官方网站 访问官方展示页面了解更多信息&#xff1a;http://mutou888.com/pro…...

【Redis】Redis从入门到实战:全面指南

Redis从入门到实战:全面指南 一、Redis简介 Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统,它可以用作数据库、缓存和消息代理。由Salvatore Sanfilippo于2009年开发,因其高性能、丰富的数据结构和广泛的语言支持而广受欢迎。 Redis核心特点:…...

LeetCode 0386.字典序排数:细心总结条件

【LetMeFly】386.字典序排数&#xff1a;细心总结条件 力扣题目链接&#xff1a;https://leetcode.cn/problems/lexicographical-numbers/ 给你一个整数 n &#xff0c;按字典序返回范围 [1, n] 内所有整数。 你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。…...

智能体革命:企业如何构建自主决策的AI代理?

OpenAI智能代理构建实用指南详解 随着大型语言模型&#xff08;LLM&#xff09;在推理、多模态理解和工具调用能力上的进步&#xff0c;智能代理&#xff08;Agents&#xff09;成为自动化领域的新突破。与传统软件仅帮助用户自动化流程不同&#xff0c;智能代理能够自主执行工…...

以太网PHY布局布线指南

1. 简介 对于以太网布局布线遵循以下准则很重要&#xff0c;因为这将有助于减少信号发射&#xff0c;最大程度地减少噪声&#xff0c;确保器件作用&#xff0c;最大程度地减少泄漏并提高信号质量。 2. PHY设计准则 2.1 DRC错误检查 首先检查DRC规则是否设置正确&#xff0c;然…...

linux设备重启后时间与网络时间不同步怎么解决?

linux设备重启后时间与网络时间不同步怎么解决&#xff1f; 设备只要一重启&#xff0c;时间又错了/偏了&#xff0c;明明刚刚对时还是对的&#xff01; 这在物联网、嵌入式开发环境特别常见&#xff0c;尤其是开发板、树莓派、rk3588 这类设备。 解决方法&#xff1a; 加硬件…...

若依项目部署--传统架构--未完待续

若依项目介绍 项目源码获取 #Git工具下载 dnf -y install git #若依项目获取 git clone https://gitee.com/y_project/RuoYi-Vue.git项目背景 随着企业信息化需求的增加&#xff0c;传统开发模式存在效率低&#xff0c;重复劳动多等问题。若依项目通过整合主流技术框架&…...

零基础在实践中学习网络安全-皮卡丘靶场(第十一期-目录遍历模块)

经过前面几期的内容我们学习了很多网络安全的知识&#xff0c;而这期内容就涉及到了前面的第六期-RCE模块&#xff0c;第七期-File inclusion模块&#xff0c;第八期-Unsafe Filedownload模块。 什么是"遍历"呢&#xff1a;对学过一些开发语言的朋友来说应该知道&…...

mcts蒙特卡洛模拟树思想

您这个观察非常敏锐&#xff0c;而且在很大程度上是正确的&#xff01;您已经洞察到了MCTS算法在不同阶段的两种不同行为模式。我们来把这个关系理得更清楚一些&#xff0c;您的理解其实离真相只有一步之遥。 您说的“select是在二次选择的时候起作用”&#xff0c;这个观察非…...

华为云Flexus+DeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手

华为云FlexusDeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手 一、构建知识库问答助手引言二、构建知识库问答助手环境2.1 基于FlexusX实例的Dify平台2.2 基于MaaS的模型API商用服务 三、构建知识库问答助手实战3.1 配置Dify环境3.2 创建知识库问答助手3.3 使用知…...

Qt学习及使用_第1部分_认识Qt---Qt开发基本流程

前言 学以致用,通过QT框架的学习,一边实践,一边探索编程的方方面面. 参考书:<Qt 6 C开发指南>(以下称"本书") 标识说明:概念用粗体倾斜.重点内容用(加粗黑体)---重点内容(红字)---重点内容(加粗红字), 本书原话内容用深蓝色标识,比较重要的内容用加粗倾…...

[特殊字符] Spring Boot底层原理深度解析与高级面试题精析

一、Spring Boot底层原理详解 Spring Boot的核心设计哲学是约定优于配置和自动装配&#xff0c;通过简化传统Spring应用的初始化和配置流程&#xff0c;显著提升开发效率。其底层原理可拆解为以下核心机制&#xff1a; 自动装配&#xff08;Auto-Configuration&#xff09; 核…...

MeanFlow:何凯明新作,单步去噪图像生成新SOTA

1.简介 这篇文章介绍了一种名为MeanFlow的新型生成模型框架&#xff0c;旨在通过单步生成过程高效地将先验分布转换为数据分布。文章的核心创新在于引入了平均速度的概念&#xff0c;这一概念的引入使得模型能够通过单次函数评估完成从先验分布到数据分布的转换&#xff0c;显…...

【2D与3D SLAM中的扫描匹配算法全面解析】

引言 扫描匹配(Scan Matching)是同步定位与地图构建(SLAM)系统中的核心组件&#xff0c;它通过对齐连续的传感器观测数据来估计机器人的运动。本文将深入探讨2D和3D SLAM中的各种扫描匹配算法&#xff0c;包括数学原理、实现细节以及实际应用中的性能对比&#xff0c;特别关注…...

【Vue】scoped+组件通信+props校验

【scoped作用及原理】 【作用】 默认写在组件中style的样式会全局生效, 因此很容易造成多个组件之间的样式冲突问题 故而可以给组件加上scoped 属性&#xff0c; 令样式只作用于当前组件的标签 作用&#xff1a;防止不同vue组件样式污染 【原理】 给组件加上scoped 属性后…...