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

阿里巴巴开放开放平台商品详情接口技术实现:详情数据深度解析方案

阿里巴巴作为国内领先的 B2B 电商平台,阿里巴巴的商品详情接口包含了丰富的批发信息、规格参数、供应商详情等核心数据。与搜索接口相比,商品详情接口返回的数据结构更复杂,包含了商品的完整属性、价格梯度、起订量、物流信息等批发场景特有的内容。本文将系统讲解阿里巴巴商品详情接口的技术实现,重点解决接口认证、复杂数据解析、多规格处理等核心问题,提供一套符合平台规范的完整解决方案。

一、接口基础信息与应用场景

接口核心信息

阿里巴巴开放平台提供功能完善的商品详情查询接口:

  • 接口名称:获取商品详情
  • 接口地址https://api.1688.com/router/json
  • 请求方式:HTTP POST
  • 权限要求:需完成开发者认证并通过应用审核
  • 响应格式:JSON

典型应用场景

  • 供应商评估系统:获取商品详情评估供应商实力
  • 采购决策系统:分析商品规格、价格梯度和起订量辅助采购
  • 竞品分析工具:对比同类商品的参数、价格和服务
  • 供应链管理系统:整合商品详情优化库存和采购策略

接口调用流程

plaintext

OAuth2.0认证 → 访问令牌获取 → 详情参数构造 → 签名生成 → 接口请求 → 复杂结果解析 → 数据结构化

合规要点

  • 严格遵守《阿里巴巴开放平台服务协议》,接口调用量不超过配额
  • 详情查询频率控制在每秒 1 次以内,日调用量不超过应用授权配额
  • 商品详情数据仅用于合法的商业采购和分析,不得用于恶意竞争
  • 保留商品信息的原始来源标识,不篡改或歪曲数据

点击获取key和secret

二、接口参数详解

公共请求参数

参数名类型说明
app_keyString应用唯一标识,开放平台获取
methodString接口方法名,固定为alibaba.product.get
formatString响应格式,固定为json
sign_methodString签名方法,固定为hmac-sha256
timestampString时间戳,格式yyyy-MM-dd HH:mm:ss
versionString接口版本,当前为1.0
signString签名结果,按阿里算法生成
access_tokenString访问令牌,通过 OAuth2.0 获取

业务请求参数

参数名类型说明是否必须
product_idString商品 ID
fieldsString需要返回的字段列表,多个字段用逗号分隔

核心返回字段说明

字段名类型说明
product_idString商品 ID
titleString商品标题
subjectString商品副标题
priceObject价格信息,包含批发价格梯度
skuArraySKU 规格信息
minimum_order_quantityInteger最小起订量
lot_numberInteger每批数量
trade_propsArray商品交易属性
detailsObject商品详情,包含图文描述
imagesArray商品图片列表
companyObject供应商信息
categoriesArray商品分类信息
attributesArray商品属性列表
logisticsObject物流信息
salesObject销售信息

三、核心技术实现

1. 商品详情接口客户端(支持字段筛选)

python

运行

import time
import requests
import json
from datetime import datetimeclass AlibabaProductDetailClient:"""阿里巴巴商品详情接口客户端"""def __init__(self, app_key, app_secret, access_token):self.app_key = app_keyself.app_secret = app_secretself.access_token = access_tokenself.api_url = "https://api.1688.com/router/json"self.method = "alibaba.product.get"self.version = "1.0"def _get_common_params(self):"""生成公共请求参数"""return {"app_key": self.app_key,"method": self.method,"format": "json","sign_method": "hmac-sha256","timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),"version": self.version,"access_token": self.access_token}def get_product_detail(self, product_id, fields=None):"""获取商品详情:param product_id: 商品ID:param fields: 需要返回的字段列表,None表示返回所有字段:return: 商品详情字典"""# 1. 构造基础参数params = self._get_common_params()# 2. 添加业务参数params["product_id"] = product_id# 3. 添加字段筛选参数if fields:# 确保是逗号分隔的字符串if isinstance(fields, list):params["fields"] = ",".join(fields)else:params["fields"] = fields# 4. 生成签名(使用之前实现的AlibabaSignUtil)params["sign"] = AlibabaSignUtil.generate_sign(params, self.app_secret)# 5. 发送请求try:response = requests.post(self.api_url,data=params,headers={"Content-Type": "application/x-www-form-urlencoded;charset=utf-8","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"},timeout=20)# 6. 解析响应result = response.json()# 7. 处理错误响应error_response = result.get("error_response")if error_response:raise Exception(f"获取详情失败: {error_response.get('msg', '未知错误')} "f"(错误码: {error_response.get('code', '未知')})")return result.get("alibaba_product_get_response", {}).get("product", {})except Exception as e:print(f"详情接口调用异常: {str(e)}")return None

2. 商品详情数据解析器(处理复杂结构)

python

运行

import re
from bs4 import BeautifulSoup
from collections import defaultdictclass AlibabaProductDetailParser:"""阿里巴巴商品详情数据解析器"""@staticmethoddef parse_product_detail(raw_data):"""解析商品详情数据:param raw_data: 接口返回的原始数据:return: 结构化的商品信息字典"""if not raw_data:return None# 基础信息basic_info = {"product_id": raw_data.get("product_id", ""),"title": raw_data.get("title", ""),"subject": raw_data.get("subject", ""),"minimum_order_quantity": int(raw_data.get("minimum_order_quantity", 0)),"lot_number": int(raw_data.get("lot_number", 0)),"create_time": raw_data.get("create_time", ""),"modify_time": raw_data.get("modify_time", "")}# 解析价格信息price_info = AlibabaProductDetailParser._parse_price(raw_data.get("price", {}))# 解析SKU信息sku_info = AlibabaProductDetailParser._parse_sku(raw_data.get("sku", []))# 解析分类信息categories = AlibabaProductDetailParser._parse_categories(raw_data.get("categories", []))# 解析商品属性attributes = AlibabaProductDetailParser._parse_attributes(raw_data.get("attributes", []))# 解析商品图片images = AlibabaProductDetailParser._parse_images(raw_data.get("images", []))# 解析商品详情details = AlibabaProductDetailParser._parse_details(raw_data.get("details", {}))# 解析供应商信息company = AlibabaProductDetailParser._parse_company(raw_data.get("company", {}))# 解析物流信息logistics = AlibabaProductDetailParser._parse_logistics(raw_data.get("logistics", {}))# 解析销售信息sales = AlibabaProductDetailParser._parse_sales(raw_data.get("sales", {}))# 组合结果return {**basic_info,"price": price_info,"sku": sku_info,"categories": categories,"attributes": attributes,"images": images,"details": details,"company": company,"logistics": logistics,"sales": sales}@staticmethoddef _parse_price(price_data):"""解析价格信息(包含批发价格梯度)"""price_info = {"currency": price_data.get("currency", "CNY"),"price_ranges": [],  # 价格梯度"mix_price": None,   # 混批价格"retail_price": None  # 零售参考价}# 解析价格梯度if "price_ranges" in price_data and isinstance(price_data["price_ranges"], list):for range_item in price_data["price_ranges"]:try:price_info["price_ranges"].append({"quantity": int(range_item.get("quantity", 0)),"price": float(range_item.get("price", 0)),"discount": float(range_item.get("discount", 0)) if range_item.get("discount") else None})except:continue# 解析混批价格if "mix_price" in price_data:try:price_info["mix_price"] = float(price_data["mix_price"])except:pass# 解析零售参考价if "retail_price" in price_data:try:price_info["retail_price"] = float(price_data["retail_price"])except:passreturn price_info@staticmethoddef _parse_sku(sku_data):"""解析SKU规格信息"""if not sku_data or not isinstance(sku_data, list):return {"has_sku": False,"specs": [],"sku_list": []}# 提取规格名称和选项spec_options = defaultdict(set)for sku in sku_data:if "specs" in sku and isinstance(sku["specs"], list):for spec in sku["specs"]:spec_name = spec.get("name", "")spec_value = spec.get("value", "")if spec_name and spec_value:spec_options[spec_name].add(spec_value)# 格式化规格信息specs = []for spec_name, values in spec_options.items():specs.append({"name": spec_name,"values": list(values)})# 格式化SKU列表sku_list = []for sku in sku_data:try:sku_item = {"sku_id": sku.get("sku_id", ""),"specs": [],"price": float(sku.get("price", 0)),"stock": int(sku.get("stock", 0)),"image_url": sku.get("image_url", "")}# 处理SKU规格if "specs" in sku and isinstance(sku["specs"], list):for spec in sku["specs"]:sku_item["specs"].append({"name": spec.get("name", ""),"value": spec.get("value", "")})# 补全图片URLif sku_item["image_url"].startswith("//"):sku_item["image_url"] = "https:" + sku_item["image_url"]sku_list.append(sku_item)except:continuereturn {"has_sku": len(sku_list) > 0,"specs": specs,"sku_list": sku_list}@staticmethoddef _parse_categories(category_data):"""解析分类信息"""if not category_data or not isinstance(category_data, list):return []categories = []for cat in category_data:categories.append({"category_id": cat.get("category_id", ""),"name": cat.get("name", ""),"level": int(cat.get("level", 0)) if cat.get("level") else 0})# 按层级排序return sorted(categories, key=lambda x: x["level"])@staticmethoddef _parse_attributes(attribute_data):"""解析商品属性"""if not attribute_data or not isinstance(attribute_data, list):return []attributes = []for attr in attribute_data:attributes.append({"name": attr.get("name", ""),"value": attr.get("value", ""),"group": attr.get("group", "基本属性")})# 按属性组分组grouped_attrs = defaultdict(list)for attr in attributes:grouped_attrs[attr["group"]].append({"name": attr["name"],"value": attr["value"]})# 转换为列表形式return [{"group": k, "attributes": v} for k, v in grouped_attrs.items()]@staticmethoddef _parse_images(image_data):"""解析商品图片"""if not image_data or not isinstance(image_data, list):return []images = []for img in image_data:img_url = img.get("url", "")if img_url:# 补全图片URLif img_url.startswith("//"):img_url = "https:" + img_urlimages.append({"url": img_url,"alt": img.get("alt", ""),"sort": int(img.get("sort", 0)) if img.get("sort") else 0})# 按排序号排序return sorted(images, key=lambda x: x["sort"])@staticmethoddef _parse_details(detail_data):"""解析商品详情"""details = {"description": "","images": [],"specifications": []}# 处理详情HTMLdetail_html = detail_data.get("description", "")if detail_html:# 提取文本内容soup = BeautifulSoup(detail_html, "html.parser")details["description"] = soup.get_text().strip()# 提取图片URLfor img in soup.find_all("img"):img_url = img.get("src", "")if img_url:if img_url.startswith("//"):img_url = "https:" + img_urldetails["images"].append(img_url)# 去重图片URLdetails["images"] = list(set(details["images"]))# 处理规格参数if "specifications" in detail_data and isinstance(detail_data["specifications"], list):details["specifications"] = detail_data["specifications"]return details@staticmethoddef _parse_company(company_data):"""解析供应商信息"""if not company_data:return {}return {"company_id": company_data.get("company_id", ""),"company_name": company_data.get("company_name", ""),"location": company_data.get("location", ""),"established_year": company_data.get("established_year", ""),"employee_count": company_data.get("employee_count", ""),"business_type": company_data.get("business_type", ""),"annual_revenue": company_data.get("annual_revenue", ""),"credit_rating": company_data.get("credit_rating", ""),"response_rate": company_data.get("response_rate", ""),"transaction_level": company_data.get("transaction_level", "")}@staticmethoddef _parse_logistics(logistics_data):"""解析物流信息"""if not logistics_data:return {}# 解析发货地shipping_from = []if "shipping_from" in logistics_data and isinstance(logistics_data["shipping_from"], list):shipping_from = [loc.get("name", "") for loc in logistics_data["shipping_from"]]# 解析物流方式logistics_methods = []if "methods" in logistics_data and isinstance(logistics_data["methods"], list):for method in logistics_data["methods"]:logistics_methods.append({"name": method.get("name", ""),"description": method.get("description", "")})return {"shipping_from": shipping_from,"methods": logistics_methods,"delivery_time": logistics_data.get("delivery_time", ""),"freight": logistics_data.get("freight", "")}@staticmethoddef _parse_sales(sales_data):"""解析销售信息"""if not sales_data:return {}return {"monthly_sales": int(sales_data.get("monthly_sales", 0)) if sales_data.get("monthly_sales") else 0,"total_sales": int(sales_data.get("total_sales", 0)) if sales_data.get("total_sales") else 0,"positive_feedback_rate": sales_data.get("positive_feedback_rate", ""),"feedback_count": int(sales_data.get("feedback_count", 0)) if sales_data.get("feedback_count") else 0}

3. 商品详情管理器(支持批量查询与缓存)

python

运行

import time
import json
import os
from datetime import datetime
from concurrent.futures import ThreadPoolExecutor, as_completedclass AlibabaProductDetailManager:"""阿里巴巴商品详情管理器,支持批量查询与缓存"""def __init__(self, app_key, app_secret, auth_redirect_uri, cache_dir="./alibaba_product_cache"):self.app_key = app_keyself.app_secret = app_secretself.auth_util = AlibabaAuthUtil(app_key, app_secret, auth_redirect_uri)self.cache_dir = cache_dirself.token_file = os.path.join(cache_dir, "access_token.json")self.access_token_info = Noneself.request_interval = 1.5  # 请求间隔(秒)# 创建缓存目录if not os.path.exists(self.cache_dir):os.makedirs(self.cache_dir)# 加载已保存的令牌self._load_access_token()def _load_access_token(self):"""加载已保存的访问令牌"""if os.path.exists(self.token_file):try:with open(self.token_file, "r", encoding="utf-8") as f:self.access_token_info = json.load(f)# 检查令牌是否过期if self.access_token_info and int(time.time()) < self.access_token_info.get("expires_time", 0) - 300:print("已加载有效的访问令牌")return Trueelse:print("访问令牌已过期,需要重新获取")# 尝试刷新令牌if self.access_token_info and "refresh_token" in self.access_token_info:new_token = self.auth_util.refresh_access_token(self.access_token_info["refresh_token"])if new_token:self.access_token_info = new_tokenself._save_access_token()return Trueexcept:passreturn Falsedef _save_access_token(self):"""保存访问令牌"""if self.access_token_info:try:with open(self.token_file, "w", encoding="utf-8") as f:json.dump(self.access_token_info, f, ensure_ascii=False, indent=2)except Exception as e:print(f"保存访问令牌失败: {str(e)}")def get_authorization_url(self):"""获取授权URL,用于引导用户授权"""return self.auth_util.get_auth_url()def authorize_with_code(self, code):"""使用授权码获取访问令牌"""token_info = self.auth_util.get_access_token(code)if token_info:self.access_token_info = token_infoself._save_access_token()return Truereturn Falsedef get_product_detail(self, product_id, fields=None, use_cache=True):"""获取单个商品详情:param product_id: 商品ID:param fields: 需要返回的字段列表:param use_cache: 是否使用缓存:return: 结构化的商品详情"""# 检查令牌是否有效if not self.access_token_info or int(time.time()) >= self.access_token_info.get("expires_time", 0) - 300:print("访问令牌无效,请先完成授权")return None# 尝试从缓存获取if use_cache:cached_data = self._get_cached_product(product_id)if cached_data:return cached_data# 初始化客户端client = AlibabaProductDetailClient(self.app_key, self.app_secret, self.access_token_info["access_token"])try:print(f"获取商品 {product_id} 详情...")# 调用接口raw_data = client.get_product_detail(product_id, fields)if not raw_data:return None# 解析数据parsed_data = AlibabaProductDetailParser.parse_product_detail(raw_data)# 保存到缓存if parsed_data and use_cache:self._cache_product(product_id, parsed_data)return parsed_dataexcept Exception as e:print(f"获取商品 {product_id} 详情失败: {str(e)}")return Nonedef batch_get_details(self, product_ids, fields=None, max_workers=2, use_cache=True):"""批量获取商品详情:param product_ids: 商品ID列表:param fields: 需要返回的字段列表:param max_workers: 并发数:param use_cache: 是否使用缓存:return: 商品详情字典,key为product_id"""results = {}futures = []with ThreadPoolExecutor(max_workers=max_workers) as executor:# 提交查询任务for product_id in product_ids:futures.append(executor.submit(self.get_product_detail,product_id,fields,use_cache))time.sleep(0.5)  # 错开提交时间# 处理查询结果for i, future in enumerate(as_completed(futures)):product_id = product_ids[i]result = future.result()if result:results[product_id] = resultprint(f"已获取商品 {product_id} 详情")return resultsdef _get_cached_product(self, product_id):"""从缓存获取商品详情"""cache_file = os.path.join(self.cache_dir, f"product_{product_id}.json")if not os.path.exists(cache_file):return None# 检查缓存是否过期(默认24小时)cache_expire_seconds = 24 * 3600file_mtime = os.path.getmtime(cache_file)if time.time() - file_mtime > cache_expire_seconds:os.remove(cache_file)  # 删除过期缓存return None# 读取缓存数据try:with open(cache_file, "r", encoding="utf-8") as f:print(f"从缓存获取商品 {product_id} 详情")return json.load(f)except:return Nonedef _cache_product(self, product_id, data):"""缓存商品详情"""cache_file = os.path.join(self.cache_dir, f"product_{product_id}.json")try:with open(cache_file, "w", encoding="utf-8") as f:json.dump(data, f, ensure_ascii=False, indent=2)except Exception as e:print(f"缓存商品 {product_id} 失败: {str(e)}")

四、完整使用示例

1. 单个商品详情查询示例

python

运行

def single_product_detail_demo():# 替换为自己的应用信息APP_KEY = "your_app_key"APP_SECRET = "your_app_secret"REDIRECT_URI = "your_redirect_uri"# 初始化详情管理器detail_manager = AlibabaProductDetailManager(APP_KEY, APP_SECRET, REDIRECT_URI)# 检查是否已授权if not detail_manager.access_token_info:# 获取授权URLauth_url = detail_manager.get_authorization_url()print(f"请在浏览器中打开以下URL进行授权:")print(auth_url)# 输入授权后返回的codecode = input("请输入授权后获取的code: ").strip()if not detail_manager.authorize_with_code(code):print("授权失败,无法继续")return# 要查询的商品IDproduct_id = "624658978912"# 指定需要返回的字段(减少数据传输量)fields = ["product_id", "title", "price", "sku", "minimum_order_quantity","images", "attributes", "company", "sales", "logistics"]# 获取商品详情product_detail = detail_manager.get_product_detail(product_id, fields)if product_detail:# 打印基本信息print(f"\n商品ID: {product_detail['product_id']}")print(f"商品标题: {product_detail['title']}")print(f"最小起订量: {product_detail['minimum_order_quantity']}")print(f"30天销量: {product_detail['sales']['monthly_sales']}")# 打印价格信息print("\n价格梯度:")for price_range in product_detail['price']['price_ranges']:print(f"- 购买 {price_range['quantity']} 件及以上: ¥{price_range['price']}")# 打印供应商信息print(f"\n供应商: {product_detail['company']['company_name']}")print(f"所在地: {product_detail['company']['location']}")print(f"信用等级: {product_detail['company']['credit_rating']}")# 打印SKU信息if product_detail['sku']['has_sku']:print("\n规格信息:")for spec in product_detail['sku']['specs']:print(f"- {spec['name']}: {', '.join(spec['values'])}")# 打印物流信息print(f"\n发货地: {', '.join(product_detail['logistics']['shipping_from'])}")print(f"物流方式: {', '.join([m['name'] for m in product_detail['logistics']['methods']])}")if __name__ == "__main__":single_product_detail_demo()

2. 批量商品详情查询与对比示例

python

运行

import csvdef batch_product_detail_demo():# 替换为自己的应用信息APP_KEY = "your_app_key"APP_SECRET = "your_app_secret"REDIRECT_URI = "your_redirect_uri"# 初始化详情管理器detail_manager = AlibabaProductDetailManager(APP_KEY, APP_SECRET, REDIRECT_URI)# 检查授权状态if not detail_manager.access_token_info:print("请先完成授权流程")return# 要查询的商品ID列表product_ids = ["624658978912","623547891256","621598745213","620123456789"]# 批量获取商品详情products = detail_manager.batch_get_details(product_ids, max_workers=2)# 打印结果统计print(f"\n批量查询完成,共查询 {len(product_ids)} 个商品,成功获取 {len(products)} 个")# 导出对比数据到CSVexport_product_comparison(products, "alibaba_product_comparison.csv")def export_product_comparison(products, filename):"""导出商品对比数据到CSV"""if not products:returnwith open(filename, "w", encoding="utf-8-sig", newline="") as f:writer = csv.writer(f)# 表头headers = ["商品ID", "商品标题", "最小起订量", "最低价格", "最高价格","30天销量", "供应商", "所在地", "信用等级", "是否有SKU"]writer.writerow(headers)# 写入数据for product in products.values():# 提取价格范围price_ranges = product.get("price", {}).get("price_ranges", [])min_price = min([r["price"] for r in price_ranges]) if price_ranges else 0max_price = max([r["price"] for r in price_ranges]) if price_ranges else 0row = [product["product_id"],product["title"],product["minimum_order_quantity"],min_price,max_price,product["sales"]["monthly_sales"],product["company"]["company_name"],product["company"]["location"],product["company"]["credit_rating"],"是" if product["sku"]["has_sku"] else "否"]writer.writerow(row)print(f"商品对比数据已导出至 {filename}")if __name__ == "__main__":batch_product_detail_demo()

五、接口调用优化与风险提示

1. 常见错误码及解决方案

错误码说明解决方案
10000缺少必填参数检查是否提供了 product_id 参数
10001商品不存在确认 product_id 是否有效
10002签名错误检查签名算法实现,特别是参数排序和编码
10003时间戳错误确保时间戳格式正确,与服务器时间误差小于 10 分钟
110令牌无效或过期重新获取或刷新 access_token
403权限不足确认应用已申请商品详情接口的调用权限
429请求频率超限增加请求间隔,确保不超过每秒 1 次
500服务器错误记录错误信息,稍后重试

2. 性能优化策略

  • 字段筛选:使用 fields 参数只获取需要的字段,减少数据传输量
  • 缓存策略:对商品详情进行缓存,根据商品更新频率调整缓存时间
  • 批量处理:合理设置并发数(建议 2-3),避免触发频率限制
  • 增量更新:通过 modify_time 字段判断商品是否更新,只更新有变动的商品

3. 合规使用与风险提示

  • 所有接口调用必须遵守《阿里巴巴开放平台开发者服务协议》
  • 商业应用前需在阿里巴巴开放平台完成开发者认证和应用审核
  • 不得将接口返回的数据用于与阿里巴巴平台竞争的业务
  • 尊重商品信息的知识产权,不盗用图片和描述内容
  • 当接口返回错误码 429(频率超限)时,应立即降低调用频率

文章转载自:

http://QMyFC8Y7.kxwsn.cn
http://ASBojpRr.kxwsn.cn
http://tjzuVsNZ.kxwsn.cn
http://23bNNbgl.kxwsn.cn
http://dBsPmwdR.kxwsn.cn
http://znAQvPwR.kxwsn.cn
http://yL6fDucG.kxwsn.cn
http://58WlfioN.kxwsn.cn
http://b3H06oGE.kxwsn.cn
http://pyTkoiHQ.kxwsn.cn
http://aDJBdrEQ.kxwsn.cn
http://EvtH4IZ3.kxwsn.cn
http://tpLDBU87.kxwsn.cn
http://mOiwVCRS.kxwsn.cn
http://vT1C1CAt.kxwsn.cn
http://RzlI4uvr.kxwsn.cn
http://JTlxogmk.kxwsn.cn
http://e8ViOudA.kxwsn.cn
http://NdrGc7mv.kxwsn.cn
http://AzRGAAoZ.kxwsn.cn
http://LhWLrvIg.kxwsn.cn
http://Hq8x6hbM.kxwsn.cn
http://D53N01QP.kxwsn.cn
http://U2WKpKCn.kxwsn.cn
http://pxK3eCgQ.kxwsn.cn
http://t0h0vt22.kxwsn.cn
http://8hv1Qp6S.kxwsn.cn
http://l7pns7c6.kxwsn.cn
http://8qNPPqID.kxwsn.cn
http://YBFiMHrA.kxwsn.cn
http://www.dtcms.com/a/381129.html

相关文章:

  • python使用pip安装的包与卸载
  • 题目:快乐数
  • Leecode hot100 - 287. 寻找重复数
  • SQL优化分析学习
  • Thinking Machines的博客
  • Linux命令行的核心理念与实用指南
  • 单板挑战4路YOLOv8!米尔瑞芯微RK3576开发板性能实测
  • 硬件(九)寄存器、外设与中断机制
  • 《常见的设计模式——单例、代理与适配器》
  • 海龟交易策略
  • MySQL 事务
  • claude code使用小窍门
  • Recaptcha2 图像识别 API 对接说明
  • Spring中 @Value注解设置默认值
  • Linux / Windows 下连续发送多帧 8 字节指令,下位机只响应第一帧,第二帧“丢失”。
  • RStudio 教程:以抑郁量表测评数据分析为例
  • 驱动程序介绍及其安装说明
  • Day03 前缀和 | 1248. 统计「优美子数组」、53. 最大子数组和
  • 现代化心理中心场室建设与规划之道
  • 面向小白用户的多集群云原生应用管理平台设计
  • 怎么设计一个高效的任务调度器,避免任务饥饿
  • Linux运维核心知识体系总结:从安全加密到服务部署
  • 50期权日内交易技巧
  • 枚举算法和排序算法能力测试
  • 未来之窗昭和仙君 (四) 前端网页分页 — 东方仙盟筑基期
  • Class50 LSTM
  • Redis是什么?一篇讲透它的定位、特点与应用场景
  • [zlaq.mohurd]网页搜索功能JavaScript实现机制技术分析报告
  • k8s工作负载-Pod学习
  • IDF: Iterative Dynamic Filtering Networks for Generalizable Image Denoising