人工智能驱动的现代电商前端开发:从基础到智能体验

引言:AI如何重塑电商体验

电子商务行业正在经历一场人工智能革命。从个性化推荐到视觉搜索,从智能客服到预测分析,AI技术正在彻底改变用户与电商平台的交互方式。作为前端开发者,了解如何集成AI功能已成为必备技能。本文将带您深入探索如何构建一个AI增强的现代化电商前端,并提供实用的代码示例。

技术架构概览

现代AI电商前端的技术栈通常包含:

  • React/Vue.js:组件化UI开发

  • TensorFlow.js:浏览器端机器学习

  • Node.js/Express:后端API服务

  • Tailwind CSS:现代化样式设计

  • Webpack/Vite:构建工具

实现AI商品推荐系统

个性化推荐组件

jsx

import React, { useState, useEffect } from 'react';
import { useUserBehavior } from '../hooks/useUserBehavior';const PersonalizedRecommendations = () => {const [recommendations, setRecommendations] = useState([]);const [loading, setLoading] = useState(true);const { userBehavior, trackInteraction } = useUserBehavior();useEffect(() => {fetchRecommendations();}, [userBehavior]);const fetchRecommendations = async () => {try {// 发送用户行为数据到推荐APIconst response = await fetch('/api/ai/recommendations', {method: 'POST',headers: {'Content-Type': 'application/json',},body: JSON.stringify({userId: localStorage.getItem('userId'),behavior: userBehavior,sessionHistory: JSON.parse(sessionStorage.getItem('sessionHistory') || '[]')})});const data = await response.json();setRecommendations(data.recommendations);} catch (error) {console.error('获取推荐失败:', error);// 降级策略:显示热门商品fetchFallbackRecommendations();} finally {setLoading(false);}};const fetchFallbackRecommendations = async () => {const response = await fetch('/api/products/popular');const data = await response.json();setRecommendations(data.products.slice(0, 6));};const handleProductClick = (productId, recommendationId) => {// 跟踪用户与推荐系统的交互trackInteraction('recommendation_click', {productId,recommendationId,recommendationType: 'personalized'});};if (loading) {return (<div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4">{[...Array(6)].map((_, i) => (<div key={i} className="bg-gray-200 rounded-lg h-64 animate-pulse"></div>))}</div>);}return (<section className="my-8"><h2 className="text-2xl font-bold mb-6">为您推荐</h2><div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4">{recommendations.map((product, index) => (<div key={product.id} className="bg-white rounded-lg shadow-md overflow-hidden hover:shadow-lg transition-shadow"onClick={() => handleProductClick(product.id, `rec-${index}`)}><img src={product.image} alt={product.name}className="w-full h-48 object-cover"/><div className="p-3"><h3 className="font-semibold text-sm mb-1 line-clamp-2">{product.name}</h3><p className="text-red-600 font-bold">¥{product.price}</p></div></div>))}</div></section>);
};export default PersonalizedRecommendations;

用户行为追踪Hook

jsx

import { useState, useEffect, useCallback } from 'react';export const useUserBehavior = () => {const [behavior, setBehavior] = useState({viewedProducts: [],searchedTerms: [],clickedItems: [],timeOnPage: {},scrollDepth: {}});// 跟踪页面浏览const trackView = useCallback((productId) => {setBehavior(prev => ({...prev,viewedProducts: [...prev.viewedProducts, {productId,timestamp: Date.now(),duration: 0}]}));}, []);// 跟踪搜索行为const trackSearch = useCallback((searchTerm, resultsCount = 0) => {setBehavior(prev => ({...prev,searchedTerms: [...prev.searchedTerms, {term: searchTerm,timestamp: Date.now(),resultsCount}]}));}, []);// 跟踪交互事件const trackInteraction = useCallback((type, metadata = {}) => {const event = {type,timestamp: Date.now(),...metadata};setBehavior(prev => {let newBehavior = { ...prev };if (type === 'product_click') {newBehavior.clickedItems = [...prev.clickedItems, event];}// 发送到分析APIfetch('/api/ai/analytics', {method: 'POST',headers: {'Content-Type': 'application/json',},body: JSON.stringify(event)}).catch(() => {// 失败时存储在localStorage中稍后重试const pendingEvents = JSON.parse(localStorage.getItem('pendingAnalytics') || '[]');localStorage.setItem('pendingAnalytics', JSON.stringify([...pendingEvents, event]));});return newBehavior;});}, []);// 跟踪滚动深度useEffect(() => {const handleScroll = () => {const scrollDepth = (window.scrollY / (document.body.scrollHeight - window.innerHeight)) * 100;setBehavior(prev => ({...prev,scrollDepth: {...prev.scrollDepth,[window.location.pathname]: Math.max(prev.scrollDepth[window.location.pathname] || 0, scrollDepth)}}));};window.addEventListener('scroll', handleScroll, { passive: true });return () => window.removeEventListener('scroll', handleScroll);}, []);return {userBehavior: behavior,trackView,trackSearch,trackInteraction};
};

实现智能搜索与自动完成

jsx

import React, { useState, useRef, useEffect } from 'react';
import debounce from 'lodash/debounce';const IntelligentSearch = ({ onSearch }) => {const [query, setQuery] = useState('');const [suggestions, setSuggestions] = useState([]);const [isLoading, setIsLoading] = useState(false);const [showSuggestions, setShowSuggestions] = useState(false);const searchRef = useRef(null);// 点击外部区域关闭建议框useEffect(() => {const handleClickOutside = (event) => {if (searchRef.current && !searchRef.current.contains(event.target)) {setShowSuggestions(false);}};document.addEventListener('mousedown', handleClickOutside);return () => document.removeEventListener('mousedown', handleClickOutside);}, []);// 防抖获取搜索建议const fetchSuggestions = debounce(async (searchTerm) => {if (!searchTerm.trim()) {setSuggestions([]);return;}setIsLoading(true);try {const response = await fetch(`/api/ai/search/suggestions?q=${encodeURIComponent(searchTerm)}`);const data = await response.json();// 包括热门建议(如果AI建议不足)const enhancedSuggestions = data.suggestions.length > 0 ? data.suggestions : await getFallbackSuggestions(searchTerm);setSuggestions(enhancedSuggestions);} catch (error) {console.error('获取搜索建议失败:', error);setSuggestions([]);} finally {setIsLoading(false);}}, 300);const getFallbackSuggestions = async (searchTerm) => {// 简单的基于本地存储的退路建议const pastSearches = JSON.parse(localStorage.getItem('searchHistory') || '[]');return pastSearches.filter(term => term.toLowerCase().includes(searchTerm.toLowerCase())).slice(0, 5);};const handleInputChange = (e) => {const value = e.target.value;setQuery(value);fetchSuggestions(value);};const handleSuggestionClick = (suggestion) => {setQuery(suggestion);setShowSuggestions(false);performSearch(suggestion);};const performSearch = (searchQuery) => {if (!searchQuery.trim()) return;// 保存搜索历史const searchHistory = JSON.parse(localStorage.getItem('searchHistory') || '[]');const updatedHistory = [searchQuery, ...searchHistory.filter(item => item !== searchQuery)].slice(0, 10);localStorage.setItem('searchHistory', JSON.stringify(updatedHistory));onSearch(searchQuery);};const handleSubmit = (e) => {e.preventDefault();setShowSuggestions(false);performSearch(query);};return (<div ref={searchRef} className="relative w-full max-w-2xl mx-auto"><form onSubmit={handleSubmit} className="relative"><inputtype="text"value={query}onChange={handleInputChange}onFocus={() => setShowSuggestions(true)}placeholder="搜索商品..."className="w-full px-4 py-3 border border-gray-300 rounded-full focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"/><buttontype="submit"className="absolute right-2 top-1/2 transform -translate-y-1/2 bg-blue-600 text-white p-2 rounded-full hover:bg-blue-700 transition-colors"><svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" /></svg></button></form>{showSuggestions && (query || suggestions.length > 0) && (<div className="absolute top-full left-0 right-0 bg-white border border-gray-200 rounded-lg shadow-lg z-50 mt-1">{isLoading ? (<div className="p-4 text-center text-gray-500">加载中...</div>) : (<>{suggestions.map((suggestion, index) => (<divkey={index}className="p-3 hover:bg-gray-100 cursor-pointer border-b border-gray-100 last:border-b-0"onClick={() => handleSuggestionClick(suggestion)}><div className="flex items-center"><svg className="w-4 h-4 text-gray-400 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" /></svg><span>{suggestion}</span></div></div>))}{query && (<divclassName="p-3 hover:bg-gray-100 cursor-pointer font-semibold text-blue-600"onClick={() => handleSuggestionClick(query)}>搜索 "{query}"</div>)}</>)}</div>)}</div>);
};export default IntelligentSearch;

视觉搜索与图像识别功能

jsx

import React, { useRef, useState } from 'react';
import * as tf from '@tensorflow/tfjs';
import * as mobilenet from '@tensorflow-models/mobilenet';const VisualSearch = () => {const [isLoading, setIsLoading] = useState(false);const [results, setResults] = useState([]);const [error, setError] = useState('');const fileInputRef = useRef(null);const videoRef = useRef(null);const [model, setModel] = useState(null);// 加载TensorFlow.js模型const loadModel = async () => {try {await tf.ready();const loadedModel = await mobilenet.load();setModel(loadedModel);} catch (err) {console.error('模型加载失败:', err);setError('视觉搜索功能暂时不可用');}};// 处理上传的图片const handleImageUpload = async (event) => {const file = event.target.files[0];if (!file) return;setIsLoading(true);setError('');try {const img = new Image();img.src = URL.createObjectURL(file);img.onload = async () => {if (!model) await loadModel();// 使用模型进行预测const predictions = await model.classify(img);// 转换为搜索查询const searchQueries = predictions.map(pred => pred.className.split(',')[0]);// 使用最相关的预测进行搜索performVisualSearch(searchQueries[0]);};} catch (err) {console.error('图像处理错误:', err);setError('图像处理失败,请重试');} finally {setIsLoading(false);}};// 执行视觉搜索const performVisualSearch = async (query) => {try {const response = await fetch(`/api/ai/visual-search?q=${encodeURIComponent(query)}`);const data = await response.json();setResults(data.products);} catch (err) {console.error('视觉搜索失败:', err);setError('搜索失败,请重试');}};// 启动摄像头进行实时搜索const startCameraSearch = async () => {try {const stream = await navigator.mediaDevices.getUserMedia({ video: true });videoRef.current.srcObject = stream;// 定期捕获帧进行分析setInterval(async () => {if (videoRef.current && model) {const predictions = await model.classify(videoRef.current);// 实时更新搜索结果(简化实现)console.log('实时预测:', predictions);}}, 3000);} catch (err) {console.error('摄像头访问失败:', err);setError('无法访问摄像头');}};return (<div className="visual-search-container"><div className="flex flex-col items-center space-y-4"><h3 className="text-lg font-semibold">视觉搜索</h3>{/* 图片上传 */}<div className="border-2 border-dashed border-gray-300 rounded-lg p-6 text-center"><inputtype="file"ref={fileInputRef}onChange={handleImageUpload}accept="image/*"className="hidden"/><buttononClick={() => fileInputRef.current?.click()}disabled={isLoading}className="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 disabled:bg-gray-400">{isLoading ? '处理中...' : '上传图片搜索'}</button><p className="text-sm text-gray-600 mt-2">或使用相似商品图片查找商品</p></div>{/* 摄像头搜索(可选) */}<buttononClick={startCameraSearch}className="text-blue-600 hover:text-blue-800 text-sm">使用摄像头实时搜索</button><video ref={videoRef} autoPlay playsInline className="hidden" />{/* 错误显示 */}{error && (<div className="text-red-600 text-sm">{error}</div>)}{/* 搜索结果 */}{results.length > 0 && (<div className="search-results mt-6"><h4 className="font-semibold mb-4">搜索结果</h4><div className="grid grid-cols-2 md:grid-cols-4 gap-4">{results.map(product => (<div key={product.id} className="bg-white rounded-lg shadow-md p-3"><img src={product.image} alt={product.name} className="w-full h-32 object-cover rounded" /><h5 className="font-medium text-sm mt-2">{product.name}</h5><p className="text-red-600 font-bold">¥{product.price}</p></div>))}</div></div>)}</div></div>);
};export default VisualSearch;

智能聊天客服集成

jsx

import React, { useState, useRef, useEffect } from 'react';const AI ChatAssistant = () => {const [isOpen, setIsOpen] = useState(false);const [messages, setMessages] = useState([]);const [inputMessage, setInputMessage] = useState('');const [isTyping, setIsTyping] = useState(false);const messagesEndRef = useRef(null);// 滚动到最新消息const scrollToBottom = () => {messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });};useEffect(() => {scrollToBottom();}, [messages]);// 初始化欢迎消息useEffect(() => {setMessages([{id: 1,text: "您好!我是您的购物助手。有什么可以帮您的吗?",sender: 'bot',timestamp: new Date()}]);}, []);const handleSendMessage = async () => {if (!inputMessage.trim()) return;// 添加用户消息const userMessage = {id: Date.now(),text: inputMessage,sender: 'user',timestamp: new Date()};setMessages(prev => [...prev, userMessage]);setInputMessage('');setIsTyping(true);try {// 调用AI聊天APIconst response = await fetch('/api/ai/chat', {method: 'POST',headers: {'Content-Type': 'application/json',},body: JSON.stringify({message: inputMessage,conversationHistory: messages.slice(-10), // 发送最近10条消息作为上下文userContext: {userId: localStorage.getItem('userId'),currentPage: window.location.pathname}})});const data = await response.json();// 添加AI回复const botMessage = {id: Date.now() + 1,text: data.response,sender: 'bot',timestamp: new Date(),suggestions: data.suggestions || []};setMessages(prev => [...prev, botMessage]);} catch (error) {console.error('聊天API错误:', error);// 降级回复const fallbackMessage = {id: Date.now() + 1,text: "抱歉,我暂时无法处理您的请求。请稍后再试或联系人工客服。",sender: 'bot',timestamp: new Date()};setMessages(prev => [...prev, fallbackMessage]);} finally {setIsTyping(false);}};const handleQuickReply = (suggestion) => {setInputMessage(suggestion);// 自动发送快速回复setTimeout(() => handleSendMessage(), 100);};return (<>{/* 聊天按钮 */}{!isOpen && (<buttononClick={() => setIsOpen(true)}className="fixed bottom-6 right-6 bg-blue-600 text-white w-14 h-14 rounded-full shadow-lg hover:bg-blue-700 transition-colors flex items-center justify-center"><svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 10h.01M12 10h.01M16 10h.01M9 16H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-5l-5 5v-5z" /></svg></button>)}{/* 聊天窗口 */}{isOpen && (<div className="fixed bottom-6 right-6 w-80 h-96 bg-white rounded-lg shadow-xl flex flex-col border border-gray-200">{/* 头部 */}<div className="bg-blue-600 text-white p-3 rounded-t-lg flex justify-between items-center"><h3 className="font-semibold">购物助手</h3><buttononClick={() => setIsOpen(false)}className="text-white hover:text-gray-200"><svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" /></svg></button></div>{/* 消息区域 */}<div className="flex-1 overflow-y-auto p-3 space-y-3">{messages.map((message) => (<divkey={message.id}className={`flex ${message.sender === 'user' ? 'justify-end' : 'justify-start'}`}><divclassName={`max-w-xs px-4 py-2 rounded-lg ${message.sender === 'user'? 'bg-blue-600 text-white': 'bg-gray-100 text-gray-800'}`}><p>{message.text}</p><span className="text-xs opacity-70 block mt-1">{message.timestamp.toLocaleTimeString()}</span>{/* 快速回复建议 */}{message.suggestions && message.suggestions.length > 0 && (<div className="mt-2 space-y-1">{message.suggestions.map((suggestion, index) => (<buttonkey={index}onClick={() => handleQuickReply(suggestion)}className="text-xs bg-white bg-opacity-20 hover:bg-opacity-30 rounded px-2 py-1 block w-full text-left">{suggestion}</button>))}</div>)}</div></div>))}{isTyping && (<div className="flex justify-start"><div className="bg-gray-100 text-gray-800 px-4 py-2 rounded-lg"><div className="flex space-x-1"><div className="w-2 h-2 bg-gray-400 rounded-full animate-bounce"></div><div className="w-2 h-2 bg-gray-400 rounded-full animate-bounce" style={{animationDelay: '0.2s'}}></div><div className="w-2 h-2 bg-gray-400 rounded-full animate-bounce" style={{animationDelay: '0.4s'}}></div></div></div></div>)}<div ref={messagesEndRef} /></div>{/* 输入区域 */}<div className="p-3 border-t border-gray-200"><div className="flex space-x-2"><inputtype="text"value={inputMessage}onChange={(e) => setInputMessage(e.target.value)}onKeyPress={(e) => e.key === 'Enter' && handleSendMessage()}placeholder="输入您的问题..."className="flex-1 border border-gray-300 rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500"disabled={isTyping}/><buttononClick={handleSendMessage}disabled={isTyping || !inputMessage.trim()}className="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 disabled:bg-gray-400 disabled:cursor-not-allowed">发送</button></div></div></div>)}</>);
};export default AIChatAssistant;

性能优化与最佳实践

1. 模型懒加载与缓存

javascript

// models.js
let cachedModels = {};export const loadModel = async (modelName) => {if (cachedModels[modelName]) {return cachedModels[modelName];}try {let model;switch (modelName) {case 'mobilenet':model = await mobilenet.load();break;case 'sentiment':model = await tf.loadLayersModel('/models/sentiment/model.json');break;default:throw new Error(`未知模型: ${modelName}`);}cachedModels[modelName] = model;return model;} catch (error) {console.error(`加载模型 ${modelName} 失败:`, error);throw error;}
};// 在组件中使用
const model = await loadModel('mobilenet');

2. 智能预加载策略

javascript

// 根据用户行为预测性预加载AI功能
export const predictivelyPreload = (userBehavior) => {// 如果用户频繁搜索,预加载搜索模型if (userBehavior.searchedTerms.length > 3) {import('./searchModels').then(module => {module.warmUpSearchModel();});}// 如果用户在商品页面停留时间长,预加载推荐模型if (userBehavior.timeOnPage['/products'] > 30000) {import('./recommendationModels');}
};

3. 优雅降级策略

javascript

// fallbacks.js
export const getFallbackRecommendations = async (userId) => {// 1. 尝试从本地缓存获取const cached = localStorage.getItem(`recs_${userId}`);if (cached) {return JSON.parse(cached);}// 2. 获取热门商品作为回退const response = await fetch('/api/products/popular');const data = await response.json();// 缓存结果localStorage.setItem(`recs_${userId}`, JSON.stringify(data.products));return data.products;
};export const getFallbackSearchSuggestions = (query) => {// 基于本地存储的搜索历史提供建议const searchHistory = JSON.parse(localStorage.getItem('searchHistory') || '[]');return searchHistory.filter(term => term.toLowerCase().includes(query.toLowerCase())).slice(0, 5);
};

结论

人工智能正在彻底改变电商前端的开发方式和用户体验。通过集成智能推荐、视觉搜索、自然语言处理等AI功能,我们可以创建更加个性化、高效和 engaging 的购物体验。

本文展示的代码示例提供了实现这些功能的实用起点,但真正的成功在于持续优化和迭代。记住以下几点:

  1. 以用户为中心:AI功能应该增强而非复杂化用户体验

  2. 性能优先:确保AI功能的加载和运行不会影响页面性能

  3. 优雅降级:总是为AI功能提供备选方案

  4. 持续学习:利用用户反馈不断改进AI模型和功能

随着AI技术的快速发展,前端开发者在电商领域的角色正在从单纯的界面构建者转变为体验设计师和AI集成专家。拥抱这一变化,持续学习新技术,将为您的电商项目带来竞争优势。

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

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

相关文章

mimic数据统计

是否能联通 psql -h 127.0.0.1 -U Shinelon-d mimic --password pgadmin建库 psql -d mimiciv -f mimic-iv/buildmimic/postgres/create.sql 也可以pgadmin直接运行create.sql 导入csv.gz数据 psql -d mimic -v ON_ERROR_STOP1 -v mimic_data_dirH:/mimic-iv-2.2 -f C:\Users\S…

孟德尔随机化小试 从软件安装数据下载到多种检验

孟德尔随机化&#xff08;Mendelian Randomization, MR&#xff09;作为一种利用基因数据推断因果关系的强大工具&#xff0c;在流行病学研究中应用广泛。本文将详细讲解MR的核心原理、完整分析流程&#xff0c;并附上关键代码实现&#xff0c;帮助你从零开始完成一次MR分析。1…

记一次:postman请求下载文件的使用方法

前言&#xff1a;笔者的后端接口是swagger&#xff0c;遇到像文件导出下载的功能就实现不了。然后使用postman工具就可以了。注&#xff1a;postman工具使用send下拉选项中有请求下载&#xff0c;如图完美解决。后续有其它方法在补充。

快速搭建项目(若依)

RuoYi-Vue 是一个 Java EE 企业级快速开发平台&#xff0c;低代码的框架。 1.环境要求&#xff1a; 其中MySQL和Redis放在服务器上或者本机上。 2.代码搭建&#xff1a; 代码下载地址&#xff1a;https://gitee.com/y_project/RuoYi-Vue&#xff0c;在官方文档里面可下载若依…

iOS开发之UICollectionView为什么需要配合UICollectionViewFlowLayout使用

1. UICollectionView 的职责分离UICollectionView 本质上只是一个容器&#xff0c;用来展示一系列的 cell&#xff08;单元格&#xff09;。 它本身 不关心 cell 的摆放方式&#xff0c;只负责&#xff1a;Cell 的复用&#xff08;避免性能浪费&#xff09;Cell 的增删改查滚动…

一、部署LNMP

一、准备环境操作系统&#xff1a;CentOS 7.x&#xff08;最少 2 核 CPU 2GB 内存 20GB 磁盘&#xff09;网络&#xff1a;能访问公网&#xff08;用于下载包&#xff09;软件版本&#xff1a;Nginx 1.20MySQL 5.7/8.0PHP 7.4WordPress 6.x&#xff08;商城插件 WooCommerce&…

【时时三省】vectorCAST 便捷使用技巧

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 目录 1,工程的共享 2,工程的关键文件保存 2,工作环境目录下,各个文件夹的作用 1,build 和 environment 的区别 2,vcm的作用 3,tst 文件的妙用 4,配置文件的妙用 5,复制测试环境 6,vectorCAST…

TOPSIS 优劣解距离法总结

TOPSIS 优劣解距离法总结 1. 基本思想 TOPSIS&#xff08;Technique for Order Preference by Similarity to Ideal Solution&#xff09;方法通过计算方案与正理想解&#xff08;最优值&#xff09;和负理想解&#xff08;最劣值&#xff09;的距离&#xff0c;来评价方案的优…

机器学习笔试题

人工智能与机器学习单选题&#xff08;50道&#xff09;1. 机器学习的核心目标是&#xff1a;A. 通过硬编码规则解决问题 B. 从数据中自动学习模式 C. 提高计算机硬件性能 D. 优化数据库查询速度2. 以下属于监督学习任务的是&#xff1a;A. 聚类分析 B. 图像分类 C. 异常检测 D…

CISP-PTE之路--10文

1.TCP/UDP 工作在 OSI 哪个层? 应用层 传输层 数据链路层 表示层 答案:传输层 解析:TCP(传输控制协议)和 UDP(用户数据报协议)是 OSI 模型中传输层的核心协议,负责端到端的数据传输管理,如可靠性(TCP)、实时性(UDP)等。 2.下列哪种设备可以隔离 ARP 广播帧? …

接口性能测试工具 - JMeter

1. 下载和运行JMeter 是由 Java 语言编写的, 因此 JMeter 的使用依赖于 Java 环境 - JRE.前往 oracle 官网下载 JMeter 压缩包.Mac 用户解压完成后, 在包内的 bin 目录下运行 sh jmeter:Windows 用户直接运行 bin 目录下的 jmeter.bat:即可进入 JMeter 主页面:1.1 添加环境变量…

Go语言实战案例-数据库事务处理

在实际业务中&#xff0c;很多操作需要保证 要么全部成功&#xff0c;要么全部失败&#xff0c;否则可能造成数据不一致。比如&#xff1a;• 用户转账&#xff08;A 账户扣款&#xff0c;B 账户加款&#xff09;• 下单支付&#xff08;生成订单、扣减库存、记录支付&#xff…

为何vivo做了头显,小米却选择AI眼镜

在押注下一代智能终端这件事上&#xff0c;手机厂商为何步调不一致&#xff1f;文&#xff5c;游勇编&#xff5c;周路平在手机销量和创新都陷入停滞的背景下&#xff0c;主流手机厂商正在探索下一代交互终端&#xff0c;试图寻找新的增长点。今年6月&#xff0c;小米发布了AI眼…

Day24 目录遍历、双向链表、栈

day24 目录遍历、双向链表、栈显示指定目录下的所有 .h 文件 功能描述 遍历指定目录&#xff08;递归进入子目录&#xff09;&#xff0c;查找所有以 .h 为后缀的头文件&#xff0c;将其完整路径&#xff08;路径 文件名&#xff09;存储到双向链表中&#xff0c;并正向或反向…

JupyterLab 安装(python3.10)

目录 一、环境 二、安装 三、启动Jupyterlab 四、通过chrome浏览器进行访问 五、打开Jupyter Notebook 六、pandas验证 JupyterLab 是一个基于 Web 的交互式开发环境&#xff0c;是经典 Jupyter Notebook 的下一代版本。它支持多种编程语言&#xff08;如 Python、R、Juli…

【neo4j】安装使用教程

一、安装 1.0 前置条件 安装配置好jdk17及以上 注意我使用的是neo4j 5.26.10版本&#xff0c;匹配java17刚好 Java Archive Downloads - Java SE 17.0.12 and earlier 无脑安装即可 配置以下环境变量 1.1 安装程序 Neo4j Deployment Center - Graph Database & Anal…

AECS(国标ECALL GB 45672-2025)

车载紧急呼叫功能作为车辆遇险时的响应机制&#xff0c;为司机和乘客的安全营救提供通信支持。为了能够降低通信延迟&#xff0c;提高响应速度&#xff0c;基于4G/5G的下一代紧急呼叫技术&#xff08;NG eCall&#xff09;将在欧盟于2027年起成为强制标准&#xff0c;中国也已经…

week3-[循环嵌套]好数

week3-[循环嵌套]好数 题目描述 如果一个正整数 xxx 只有最左边一位不是 000&#xff0c;其余都是 000&#xff0c;那么称其为好数。例如 400040004000 和 222 都是好数&#xff0c;但是 120120120 不是。 给定正整数 nnn&#xff0c;在 111 到 nnn 间有多少个数是好数&#xf…

智能制造加速器:某新能源车智慧工厂无线网络优化提升方案

随着工业4.0和智能制造的快速发展&#xff0c;传统制造工厂的网络架构正面临前所未有的挑战。为了满足柔性生产、实时数据驱动以及高可靠运营的需求&#xff0c;某新能源车智慧工厂启动了一项无线网络优化提升项目。本项目通过部署智能组网设备&#xff0c;构建高效、稳定、智能…

nginx-自制证书实现

nginx-自制证书实现一、 确认nginx是支持https功能的二、生成私钥三、 根据ca.key生成nginx web服务器使用的证书签名请求文件nginx.csr四、使用ca.key给nginx.csr进行签名&#xff0c;生成公钥证书nginx.crt五、将证书与域名绑定六、添加域名解析并访问一、 确认nginx是支持ht…