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

3步构建:用Finnhub Python打造专业金融数据系统

3步构建用Finnhub Python打造专业金融数据系统【免费下载链接】finnhub-pythonFinnhub Python API Client. Finnhub API provides institutional-grade financial data to investors, fintech startups and investment firms. We support real-time stock price, global fundamentals, global ETFs holdings and alternative data. https://finnhub.io/docs/api项目地址: https://gitcode.com/gh_mirrors/fi/finnhub-python金融数据获取一直是开发者面临的核心挑战实时数据延迟、历史数据不完整、API接口复杂难用。Finnhub Python API客户端为开发者提供了机构级的金融数据解决方案通过简洁的Python接口让开发者能够轻松获取股票、外汇、加密货币、ETF等全市场数据构建专业级的金融分析系统。本文将通过问题-解决方案-实现路径的结构带你从零开始掌握这个强大的金融数据工具。如何快速获取实时市场数据核心价值传统金融数据获取需要对接多个API数据格式不统一更新延迟高。Finnhub Python客户端通过单一接口提供全球市场实时数据支持Python开发者快速构建金融应用。实现思路Finnhub Python客户端采用模块化设计将复杂的金融数据API封装为直观的Python方法。核心模块finnhub/client.py提供了超过100个数据端点覆盖从基础报价到深度分析的完整数据需求。避坑指南首次使用时需要注意API密钥的获取和配置免费套餐有调用频率限制生产环境需要合理设计缓存和请求策略。实战演练构建实时股票监控系统让我们从一个实际场景开始你需要监控一组股票的实时价格变化并在价格异常波动时触发警报。import finnhub import os from datetime import datetime class StockMonitor: def __init__(self, api_key): 初始化Finnhub客户端 self.client finnhub.Client(api_keyapi_key) self.watchlist {} self.price_history {} def add_to_watchlist(self, symbol, alert_threshold0.05): 添加股票到监控列表 self.watchlist[symbol] { symbol: symbol, alert_threshold: alert_threshold, last_price: None, last_update: None } print(f✅ 已添加 {symbol} 到监控列表) def get_real_time_quote(self, symbol): 获取实时报价 try: quote self.client.quote(symbol) return { current_price: quote[c], change: quote[d], change_percent: quote[dp], high: quote[h], low: quote[l], open: quote[o], previous_close: quote[pc], timestamp: datetime.now() } except Exception as e: print(f❌ 获取 {symbol} 数据失败: {e}) return None def monitor_prices(self): 监控所有股票价格 alerts [] for symbol, config in self.watchlist.items(): quote_data self.get_real_time_quote(symbol) if quote_data: current_price quote_data[current_price] change_percent quote_data[change_percent] # 记录历史价格 if symbol not in self.price_history: self.price_history[symbol] [] self.price_history[symbol].append({ price: current_price, timestamp: quote_data[timestamp] }) # 检查是否需要触发警报 if config[last_price] is not None: price_change abs((current_price - config[last_price]) / config[last_price]) if price_change config[alert_threshold]: alert_msg f {symbol} 价格异常波动: {price_change:.2%} alerts.append(alert_msg) print(alert_msg) # 更新最新价格 config[last_price] current_price config[last_update] quote_data[timestamp] print(f{symbol}: ${current_price:.2f} ({change_percent:.2f}%)) return alerts # 使用示例 if __name__ __main__: # 从环境变量获取API密钥 api_key os.environ.get(FINNHUB_API_KEY) if not api_key: print(请设置 FINNHUB_API_KEY 环境变量) else: monitor StockMonitor(api_key) # 添加监控股票 monitor.add_to_watchlist(AAPL, alert_threshold0.03) # 苹果 monitor.add_to_watchlist(MSFT, alert_threshold0.04) # 微软 monitor.add_to_watchlist(GOOGL, alert_threshold0.05) # 谷歌 # 执行监控 alerts monitor.monitor_prices() if alerts: print(f发现 {len(alerts)} 个警报)这个监控系统展示了Finnhub Python API的核心优势简洁的接口设计、实时数据获取、错误处理机制。通过finnhub/client.py中的quote()方法我们可以轻松获取股票的实时报价数据。如何深度分析公司基本面核心价值投资决策需要全面的基本面分析包括财务数据、管理层信息、行业对比等。Finnhub提供了丰富的公司基本面数据帮助开发者构建专业的分析工具。实现思路Finnhub Python客户端将复杂的基本面数据分解为多个专业方法如company_basic_financials()获取财务指标、company_executive()获取管理层信息、company_peers()进行行业对比。避坑指南基本面数据更新频率不同财务数据通常按季度更新实时数据需要缓存策略。注意API调用限制合理设计数据获取频率。实战演练构建公司基本面分析仪表板假设你正在开发一个投资分析平台需要为投资者提供全面的公司基本面分析。import finnhub import pandas as pd from typing import Dict, Any class FundamentalAnalyzer: def __init__(self, api_key): 初始化基本面分析器 self.client finnhub.Client(api_keyapi_key) self.cache {} # 简单缓存机制 def get_company_profile(self, symbol: str) - Dict[str, Any]: 获取公司概况 cache_key fprofile_{symbol} if cache_key in self.cache: return self.cache[cache_key] try: profile self.client.company_profile(symbolsymbol) self.cache[cache_key] profile return profile except Exception as e: print(f获取公司概况失败: {e}) return {} def get_financial_metrics(self, symbol: str, metric_type: str all) - Dict[str, Any]: 获取财务指标 cache_key ffinancials_{symbol}_{metric_type} if cache_key in self.cache: return self.cache[cache_key] try: financials self.client.company_basic_financials(symbol, metric_type) self.cache[cache_key] financials return financials except Exception as e: print(f获取财务指标失败: {e}) return {} def get_company_peers(self, symbol: str) - list: 获取同行业公司 cache_key fpeers_{symbol} if cache_key in self.cache: return self.cache[cache_key] try: peers self.client.company_peers(symbol) self.cache[cache_key] peers return peers except Exception as e: print(f获取同行业公司失败: {e}) return [] def analyze_company(self, symbol: str) - Dict[str, Any]: 综合分析公司基本面 analysis { symbol: symbol, profile: {}, financials: {}, valuation: {}, industry_comparison: {} } # 1. 获取公司概况 profile self.get_company_profile(symbol) if profile: analysis[profile] { name: profile.get(name, N/A), industry: profile.get(finnhubIndustry, N/A), country: profile.get(country, N/A), market_cap: profile.get(marketCapitalization, 0), ipo_date: profile.get(ipo, N/A) } # 2. 获取财务指标 financials self.get_financial_metrics(symbol, all) if financials and metric in financials: metrics financials[metric] analysis[financials] { pe_ratio: metrics.get(peNormalizedAnnual), pb_ratio: metrics.get(pbAnnual), dividend_yield: metrics.get(dividendYieldIndicatedAnnual), roe: metrics.get(roeTTM), roa: metrics.get(roaTTM) } # 3. 估值分析 if analysis[profile].get(market_cap) and financials.get(metric): analysis[valuation] self._calculate_valuation( analysis[profile][market_cap], financials[metric] ) # 4. 行业对比 peers self.get_company_peers(symbol) if peers: analysis[industry_comparison] { peer_count: len(peers), peers: peers[:5] # 取前5个同行业公司 } return analysis def _calculate_valuation(self, market_cap: float, metrics: Dict[str, Any]) - Dict[str, Any]: 计算估值指标 valuation { market_cap: market_cap, valuation_grade: N/A } # 简单估值评分逻辑 pe_ratio metrics.get(peNormalizedAnnual) pb_ratio metrics.get(pbAnnual) if pe_ratio and pb_ratio: score 0 # PE比率评分 if pe_ratio 15: score 2 elif pe_ratio 25: score 1 # PB比率评分 if pb_ratio 1: score 2 elif pb_ratio 2: score 1 # 确定估值等级 if score 3: valuation[valuation_grade] 低估 elif score 1: valuation[valuation_grade] 合理 else: valuation[valuation_grade] 高估 return valuation def generate_report(self, symbol: str) - str: 生成分析报告 analysis self.analyze_company(symbol) report_lines [ f# {analysis[profile].get(name, symbol)} 基本面分析报告, f股票代码: {symbol}, f行业: {analysis[profile].get(industry, N/A)}, f国家: {analysis[profile].get(country, N/A)}, , ## 财务指标, f市盈率(PE): {analysis[financials].get(pe_ratio, N/A)}, f市净率(PB): {analysis[financials].get(pb_ratio, N/A)}, f股息率: {analysis[financials].get(dividend_yield, N/A)}, f净资产收益率(ROE): {analysis[financials].get(roe, N/A)}, f总资产收益率(ROA): {analysis[financials].get(roa, N/A)}, , ## 估值分析, f市值: ${analysis[valuation].get(market_cap, 0):,.0f}, f估值等级: {analysis[valuation].get(valuation_grade, N/A)}, , ## 行业对比, f同行业公司数量: {analysis[industry_comparison].get(peer_count, 0)}, f主要竞争对手: {, .join(analysis[industry_comparison].get(peers, []))} ] return \n.join(report_lines) # 使用示例 if __name__ __main__: analyzer FundamentalAnalyzer(os.environ.get(FINNHUB_API_KEY)) # 分析苹果公司 report analyzer.generate_report(AAPL) print(report) # 分析特斯拉公司 report analyzer.generate_report(TSLA) print(report)这个基本面分析工具展示了Finnhub Python API在专业金融分析中的应用。通过finnhub/client.py提供的多个方法我们可以构建完整的公司分析系统。如何构建生产级金融数据应用核心价值个人项目与生产系统的区别在于稳定性、性能和可扩展性。Finnhub Python客户端提供了企业级的数据质量和稳定性配合最佳实践可以构建生产级应用。实现思路生产级应用需要考虑API调用优化、错误处理、数据缓存、监控告警等关键要素。Finnhub Python客户端的设计允许开发者灵活实现这些功能。避坑指南生产环境需要处理API限制、网络异常、数据一致性等问题。建议实现重试机制、缓存层和监控系统。实战演练构建高可用金融数据服务让我们构建一个生产级的金融数据服务包含缓存、监控和错误处理。import finnhub import os import time import json from datetime import datetime, timedelta from typing import Dict, Any, Optional import redis # 需要安装: pip install redis class ProductionFinnhubService: 生产级Finnhub数据服务 def __init__(self, api_key: str, redis_host: str localhost, redis_port: int 6379): 初始化服务 self.client finnhub.Client(api_keyapi_key) self.redis_client redis.Redis(hostredis_host, portredis_port, decode_responsesTrue) self.request_count 0 self.error_count 0 self.cache_hits 0 # API调用限制配置 self.rate_limit { free: 60, # 免费套餐每分钟60次 basic: 300, # 基础套餐每分钟300次 professional: 1200 # 专业套餐每分钟1200次 } self.current_tier free # 默认免费套餐 def _get_cache_key(self, endpoint: str, params: Dict[str, Any]) - str: 生成缓存键 param_str json.dumps(params, sort_keysTrue) return ffinnhub:{endpoint}:{hash(param_str)} def _is_cache_valid(self, cache_key: str, ttl_seconds: int 300) - bool: 检查缓存是否有效 if not self.redis_client.exists(cache_key): return False # 检查缓存时间 cache_time_str self.redis_client.hget(cache_key, timestamp) if not cache_time_str: return False cache_time datetime.fromisoformat(cache_time_str) return (datetime.now() - cache_time).seconds ttl_seconds def _get_from_cache(self, cache_key: str) - Optional[Dict[str, Any]]: 从缓存获取数据 cached_data self.redis_client.hgetall(cache_key) if cached_data and data in cached_data: self.cache_hits 1 return json.loads(cached_data[data]) return None def _save_to_cache(self, cache_key: str, data: Dict[str, Any], ttl_seconds: int 300): 保存数据到缓存 cache_data { data: json.dumps(data), timestamp: datetime.now().isoformat() } self.redis_client.hset(cache_key, mappingcache_data) self.redis_client.expire(cache_key, ttl_seconds) def _check_rate_limit(self): 检查API调用频率限制 current_minute datetime.now().strftime(%Y-%m-%d-%H-%M) key frate_limit:{current_minute} # 获取当前分钟内的调用次数 current_count self.redis_client.get(key) if current_count is None: current_count 0 else: current_count int(current_count) max_calls self.rate_limit.get(self.current_tier, 60) if current_count max_calls: # 等待下一分钟 time.sleep(60 - datetime.now().second) # 重置计数器 self.redis_client.delete(key) current_count 0 # 增加计数器 self.redis_client.incr(key) if current_count 0: self.redis_client.expire(key, 60) # 设置过期时间 def safe_api_call(self, endpoint: str, method_name: str, **kwargs) - Dict[str, Any]: 安全的API调用方法 self.request_count 1 # 1. 检查缓存 cache_key self._get_cache_key(endpoint, kwargs) if self._is_cache_valid(cache_key): cached_data self._get_from_cache(cache_key) if cached_data: return cached_data # 2. 检查频率限制 self._check_rate_limit() # 3. 执行API调用 max_retries 3 retry_delay 1 for attempt in range(max_retries): try: # 获取对应的方法 method getattr(self.client, method_name) result method(**kwargs) # 4. 缓存结果 self._save_to_cache(cache_key, result) return result except Exception as e: self.error_count 1 if attempt max_retries - 1: # 指数退避重试 time.sleep(retry_delay * (2 ** attempt)) else: # 最后一次尝试失败 error_msg fAPI调用失败: {endpoint}, 参数: {kwargs}, 错误: {str(e)} print(f❌ {error_msg}) # 返回空数据避免服务中断 return {error: error_msg, data: None} return {error: 未知错误, data: None} def get_stock_quote(self, symbol: str) - Dict[str, Any]: 获取股票报价带缓存 return self.safe_api_call(quote, quote, symbolsymbol) def get_company_profile(self, symbol: str) - Dict[str, Any]: 获取公司概况带缓存 return self.safe_api_call(company_profile, company_profile, symbolsymbol) def get_historical_data(self, symbol: str, resolution: str D, days: int 30) - Dict[str, Any]: 获取历史数据 end_time datetime.now() start_time end_time - timedelta(daysdays) start_timestamp int(start_time.timestamp()) end_timestamp int(end_time.timestamp()) return self.safe_api_call( stock_candles, stock_candles, symbolsymbol, resolutionresolution, _fromstart_timestamp, toend_timestamp ) def get_service_metrics(self) - Dict[str, Any]: 获取服务指标 return { total_requests: self.request_count, cache_hits: self.cache_hits, cache_hit_rate: self.cache_hits / self.request_count if self.request_count 0 else 0, error_count: self.error_count, error_rate: self.error_count / self.request_count if self.request_count 0 else 0, current_tier: self.current_tier, rate_limit: self.rate_limit[self.current_tier] } def monitor_service_health(self) - Dict[str, Any]: 监控服务健康状态 metrics self.get_service_metrics() health_status healthy issues [] # 检查错误率 if metrics[error_rate] 0.1: # 错误率超过10% health_status degraded issues.append(f高错误率: {metrics[error_rate]:.1%}) # 检查缓存命中率 if metrics[cache_hit_rate] 0.3: # 缓存命中率低于30% health_status warning issues.append(f低缓存命中率: {metrics[cache_hit_rate]:.1%}) # 检查API调用频率 current_minute datetime.now().strftime(%Y-%m-%d-%H-%M) key frate_limit:{current_minute} current_count self.redis_client.get(key) if current_count: current_count int(current_count) limit self.rate_limit[self.current_tier] if current_count limit * 0.8: # 使用超过80%的限额 health_status warning issues.append(fAPI调用接近限制: {current_count}/{limit}) return { status: health_status, issues: issues, metrics: metrics, timestamp: datetime.now().isoformat() } # 使用示例 if __name__ __main__: # 初始化服务 service ProductionFinnhubService( api_keyos.environ.get(FINNHUB_API_KEY), redis_hostlocalhost, redis_port6379 ) # 获取数据 print(获取苹果公司实时报价...) quote service.get_stock_quote(AAPL) print(f当前价格: ${quote.get(c, N/A)}) print(\n获取苹果公司概况...) profile service.get_company_profile(AAPL) print(f公司名称: {profile.get(name, N/A)}) print(\n获取历史数据...) historical service.get_historical_data(AAPL, days7) if c in historical: print(f最近7天收盘价: {historical[c]}) print(\n服务指标:) metrics service.get_service_metrics() for key, value in metrics.items(): print(f{key}: {value}) print(\n服务健康状态:) health service.monitor_service_health() print(f状态: {health[status]}) if health[issues]: print(f问题: {, .join(health[issues])})这个生产级服务展示了如何在实际项目中使用Finnhub Python API。通过实现缓存、频率限制、错误处理和监控我们可以构建稳定可靠的金融数据服务。学习路径与资源指引快速上手阶段1-3天环境配置安装Finnhub Python客户端并获取API密钥pip install finnhub-python基础数据获取从examples.py开始学习获取实时报价、公司概况等基础数据简单应用开发构建个人股票监控工具或投资组合跟踪器进阶技巧阶段1-2周数据缓存优化学习如何设计高效的缓存策略减少API调用错误处理机制实现健壮的错误处理和重试逻辑性能优化学习批量请求和并发处理技术生产部署阶段2-4周架构设计设计可扩展的微服务架构监控告警实现全面的服务监控和告警系统数据管道构建自动化的数据更新和ETL流程关键资源官方文档Finnhub Python客户端提供了完整的API文档源码位置核心代码位于finnhub/client.py包含所有API方法的实现示例项目参考examples.py中的完整示例错误处理异常处理逻辑在finnhub/exceptions.py中定义最佳实践总结API密钥管理使用环境变量存储API密钥避免硬编码缓存策略根据数据更新频率设计不同的缓存时间错误处理实现指数退避重试机制监控告警监控API调用频率和错误率数据验证验证API返回数据的完整性和准确性通过遵循这些最佳实践你可以构建出专业级的金融数据应用为投资决策、量化交易、风险分析等场景提供可靠的数据支持。Finnhub Python API客户端以其简洁的设计和强大的功能成为了金融数据获取的首选工具。【免费下载链接】finnhub-pythonFinnhub Python API Client. Finnhub API provides institutional-grade financial data to investors, fintech startups and investment firms. We support real-time stock price, global fundamentals, global ETFs holdings and alternative data. https://finnhub.io/docs/api项目地址: https://gitcode.com/gh_mirrors/fi/finnhub-python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

3步构建:用Finnhub Python打造专业金融数据系统

3步构建:用Finnhub Python打造专业金融数据系统 【免费下载链接】finnhub-python Finnhub Python API Client. Finnhub API provides institutional-grade financial data to investors, fintech startups and investment firms. We support real-time stock price,…...

中兴光猫配置解密工具实战指南:企业级网络设备安全配置深度解析

中兴光猫配置解密工具实战指南:企业级网络设备安全配置深度解析 【免费下载链接】ZET-Optical-Network-Terminal-Decoder 项目地址: https://gitcode.com/gh_mirrors/ze/ZET-Optical-Network-Terminal-Decoder ZET-Optical-Network-Terminal-Decoder 是一款…...

盟接之桥®电子数据交换EDI,如何用一套“数字桥梁”,让全球巨头主动为你敞开大门?

在全球经济一体化的宏大叙事下,中国制造业正站在历史的十字路口。从“中国制造”到“中国智造”,这不仅仅是称谓的更迭,更是产业链地位的跃迁。然而,在这条通往全球价值链高端的道路上,无数制造企业面临着同一个隐秘而…...

安卓15分享Wi-Fi二维码能换颜色吗?自定义颜色方法

在安卓15系统中,通过“附近分享”或“快速分享”功能来共享Wi-Fi密码变得非常方便,只需一个二维码就能让朋友轻松连接。系统生成的二维码界面通常会自动匹配你的手机主题色,看起来挺美观。但很多用户想知道:我能自己定义这个二维码…...

CH58x蓝牙芯片DataFlash读写避坑指南:从字节到扇区的正确操作姿势

CH58x蓝牙芯片DataFlash读写避坑指南:从字节到扇区的正确操作姿势 在嵌入式开发中,DataFlash的高效管理一直是工程师面临的挑战之一。沁恒CH58x系列蓝牙芯片凭借其优异的性能和丰富的功能,在蓝牙Mesh领域广受欢迎。然而,其DataFl…...

从拖拉机到挖掘机:聊聊J1939协议在非道路机械里的那些‘方言’和实战配置

从拖拉机到挖掘机:J1939协议在非道路机械中的差异化实践与兼容性解决方案 当一台约翰迪尔拖拉机的发动机控制模块向液压系统发送扭矩请求时,卡特彼勒挖掘机的控制单元可能完全无法理解这条看似标准的J1939报文。这不是协议本身的缺陷,而是重型…...

SAML2.0实战避坑:从HTTP Redirect到Artifact Binding,三种通信绑定方式怎么选?

SAML2.0绑定方式深度解析:从技术原理到企业级选型实战 当企业IT架构师在设计单点登录系统时,总会遇到一个关键决策点:如何选择SAML协议的通信绑定方式?这个问题看似简单,实则牵一发而动全身。我曾见证过某金融机构因为…...

从“翻车”到“神图”:我的Stable Diffusion提示词避坑与调优笔记(附Lora使用心得)

从“翻车”到“神图”:我的Stable Diffusion提示词避坑与调优笔记 深夜三点,屏幕上的AI少女长着七根手指,背景里漂浮着半截手臂——这已经是我今晚第十七张“恐怖片剧照”了。作为从MidJourney转战Stable Diffusion的老玩家,我经历…...

容器存储容量告急?Docker 27.2正式支持Runtime-Driven Volume Resize——这是你最后掌握自动弹性伸缩能力的机会

第一章:容器存储容量告急?Docker 27.2正式支持Runtime-Driven Volume Resize——这是你最后掌握自动弹性伸缩能力的机会Docker 27.2 是首个将卷(Volume)运行时动态扩容能力下沉至 containerd shim 层的稳定版本。无需重启容器、无…...

别再只关心压差了!手把手教你读懂LDO数据手册里的PSRR、噪声与环路稳定性

别再只关心压差了!手把手教你读懂LDO数据手册里的PSRR、噪声与环路稳定性 当你在为精密传感器挑选LDO时,是否曾被数据手册里PSRR曲线上的高频衰减困扰过?或是面对噪声频谱密度图表时无从下手?压差参数固然重要,但真正决…...

思源宋体TTF:零成本获取专业中文排版终极方案

思源宋体TTF:零成本获取专业中文排版终极方案 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为中文设计项目的字体选择而苦恼吗?商业字体价格高昂&#xf…...

TBS1102B示波器测电压,这5个新手常踩的坑你避开了吗?(附正确设置流程)

TBS1102B示波器测电压:5个隐蔽陷阱与专业级解决方案 第一次接触泰克TBS1102B示波器时,我盯着屏幕上跳动的波形百思不得其解——明明按照说明书连接了电路,为什么测得的电压值与万用表相差30%?直到导师指出我忽略了探头的衰减比设置…...

从IFA到PIFA:揭秘天线小型化与抗干扰背后的结构演进

1. 从IFA到PIFA:天线小型化的技术革命 十年前我刚入行做手机天线设计时,IFA(倒F天线)还是行业标配。记得第一次调试2.4GHz WiFi天线,Smith圆图上那个疯狂跳动的阻抗点让我抓狂——频段边缘的匹配简直像在走钢丝。这种单…...

Cursor AI破解工具终极指南:免费解锁Pro功能的完整解决方案

Cursor AI破解工具终极指南:免费解锁Pro功能的完整解决方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached you…...

别再手动截图了!用Docker跑个Headless Chrome,Java代码5分钟搞定网页PDF生成

5分钟实现网页PDF自动化:基于DockerJava的无头浏览器实战方案 每次手动截图保存网页内容时,是否觉得这种重复操作既低效又容易出错?想象一下:凌晨三点系统自动将运营报告生成PDF归档,或是批量导出数百个产品页面的标准…...

别再傻傻分不清了!Unity里Animation和Animator到底怎么选?附DoTween插件对比

Unity动画系统深度对比:Animation、Animator与DoTween的实战选择指南 当Unity开发者面对动画需求时,常常陷入选择困境:是用简单的Animation组件快速实现,还是构建复杂的Animator状态机?第三方插件DoTween是否更适合当前…...

Laya导出的鸿蒙NEXT工程目录说明

文章目录结论顶层目录说明entry模块内部怎么理解src/main/module.json5 —— 类似Manifest.xmlsrc/main/resources/base/profile/main_pages.jsonsrc/main/ets/MainAbility/MainAbility.etssrc/main/ets/pages/Index.etssrc/main/ets/workers —— worker线程相关的代码src/mai…...

Steam成就管理器终极指南:5分钟掌握游戏成就管理技巧

Steam成就管理器终极指南:5分钟掌握游戏成就管理技巧 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager 如果你是一位Steam游戏玩家,是…...

3步掌握DeepL翻译插件,让跨语言浏览像母语阅读一样自然

3步掌握DeepL翻译插件,让跨语言浏览像母语阅读一样自然 【免费下载链接】deepl-chrome-extension A DeepL Translator Chrome extension 项目地址: https://gitcode.com/gh_mirrors/de/deepl-chrome-extension 在信息爆炸的全球化时代,语言障碍依…...

手把手教你用VMware Workstation 17 Pro安装华为openEuler 22.03 LTS(附UKUI桌面安装教程)

从零开始:在VMware Workstation 17 Pro上部署openEuler 22.03 LTS全攻略 最近在开发者圈子里,华为的openEuler操作系统引起了广泛关注。作为一款面向数字基础设施的开源操作系统,openEuler不仅支持多种处理器架构,还在云计算、大…...

逆向分析第一课:拆解Cheat Engine Tutorial,理解程序内存与汇编指令的互动

逆向工程入门:通过Cheat Engine Tutorial透视程序内存与汇编的奥秘 当第一次打开Cheat Engine时,许多用户会被其看似复杂的界面所震慑——十六进制数值、内存地址、汇编指令这些术语仿佛在构建一道技术壁垒。但正是这套工具,为我们打开了一扇…...

从GESP三级C++考题到实战:手把手教你写一个密码强度检测器(附完整代码)

从GESP考题到工业级工具:用C构建智能密码强度检测系统 密码安全是数字世界的基石。想象一下,当你注册一个新服务时,系统如何判断你输入的密码是否足够强壮?这背后往往藏着一个精巧的密码检测逻辑。今天,我们就从GESP三…...

AI Agent Harness Engineering 与大模型微调:如何让智能体更适配特定行业场景

AI Agent Harness Engineering 与大模型微调:如何让智能体更适配金融、医疗等强约束特定行业场景第一部分:引言与基础 (Introduction & Foundation) 1. 引人注目的标题 主标题:AI Agent Harness Engineering 领域微调:破解强…...

局域网组网技术

与为了互联全球不同网络而设计的、复杂的OSI七层模型不同,局域网参考模型更专注于解决一个局部区域内的网络通信问题。因此,它的结构被大大简化了。下图清晰地展示了局域网参考模型与OSI模型的关系:一、设计思想:简化与专注局域网…...

Spring Boot Alibaba(三)----Sentinel

服务容错保护-Sentinel 一、 Sentinel 是个啥?为什么要用它? 1. 灵魂拷问:为什么要用? 想象一下这个场景: 上游服务(大哥)疯狂调用你的服务(小弟),你的服务又…...

别再手动记配置了!用这个批处理脚本,一键生成Windows10电脑的硬件信息报告

告别手动记录!全自动生成Windows10硬件报告的终极批处理方案 每次接手新电脑或排查故障时,你是否还在重复着"WinR→输入dxdiag→截图保存"的老套流程?IT运维工程师张伟曾用3小时手动记录50台办公设备的配置信息,直到他发…...

代码随想录—day11—栈与队列(part2)

题例:150. 逆波兰表达式求值 - 力扣(LeetCode) 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。每个操作数&a…...

从手机TCP调试助手到单片机:ESP8266-01s数据透传完整链路搭建实录

从手机到单片机:ESP8266-01s数据透传实战指南 去年夏天,我在为一个智能农业项目搭建远程控制模块时,第一次真正体会到ESP8266-01s这个小巧WiFi模块的强大之处。当时需要在50米外的水泵控制器上实现手机远程开关,而ESP8266-01s配合…...

大模型的探索与实践-课程笔记(四):Agent与Multi-Agent

Take-away MessagesAgent智能体 让大模型能够调用工具 规划、记忆、行动 Manus / OpenManus 在本地部署OpenManusMulti-Agent 任务分解、任务联动 Coze 利用Coze构建智能体1.1 从大模型(LLM)到智能体(Agent)1. 概念演进&#xff1…...

【马斯克系 | AI版图】xAI合并SpaceX之后,紧接着是Cursor——1.25万亿美元之后,马斯克还在买什么

一、合并全景:1.25万亿美元背后的估值逻辑 从180亿到2500亿:18个月估值十倍跃迁 2024年5月,xAI的B轮融资在行业内引发过一轮讨论。 彼时距离这家公司成立才14个月,旗下核心产品Grok-1刚刚开源3140亿参数模型,市场评…...