乐闻世界logo
搜索文章和话题

面试题手册

TradingView 中常用的技术指标有哪些,如何组合使用?

TradingView 的技术指标系统非常丰富,包含100多种内置指标,涵盖趋势、动量、波动性和成交量等多个类别。主要指标类别:1. 趋势指标移动平均线 (MA):SMA、EMA、VWMA、WMASMA:简单移动平均线,计算指定周期内的平均价格EMA:指数移动平均线,给予近期价格更高权重VWMA:成交量加权移动平均线,考虑成交量因素MACD:指数平滑异同移动平均线由快线、慢线和信号线组成用于识别趋势变化和动量ADX:平均趋向指标衡量趋势强度,范围0-100ADX > 25 表示强趋势2. 动量指标RSI:相对强弱指标范围0-100,超买超卖线通常为70和30用于识别超买超卖状态随机指标 (Stochastic):%K 和 %D 两条线用于识别价格反转信号CCI:商品通道指标衡量价格偏离平均值的程度3. 波动性指标布林带:中轨为20周期SMA上下轨为中轨±2倍标准差用于衡量价格波动范围ATR:平均真实波幅衡量市场波动性用于设置止损和止盈4. 成交量指标成交量:显示交易量OBV:能量潮指标累积成交量,反映资金流向MFI:资金流量指标结合价格和成交量的动量指标自定义指标开发:使用 Pine Script 可以创建自定义指标://@version=5indicator("自定义指标", overlay=true)length = input(14)src = input(close)smaValue = ta.sma(src, length)plot(smaValue, color=color.blue)指标组合策略:趋势确认:使用多个趋势指标确认趋势方向动量确认:结合动量指标确认入场时机风险管理:使用波动性指标设置止损位过滤假信号:结合不同类型指标提高准确性
阅读 0·2月21日 15:14

MariaDB 的事务隔离级别有哪些?如何选择合适的隔离级别?

MariaDB 的事务隔离级别决定了事务之间的可见性和并发控制行为,共有四种隔离级别:1. READ UNCOMMITTED(读未提交)特点:可以读取其他事务未提交的数据可能出现脏读、不可重复读、幻读性能最好,但数据一致性最差适用场景:几乎不使用,仅用于特殊性能需求场景2. READ COMMITTED(读已提交)特点:只能读取其他事务已提交的数据避免脏读,但可能出现不可重复读、幻读Oracle、PostgreSQL 的默认隔离级别适用场景:大多数业务场景,平衡了性能和一致性3. REPEATABLE READ(可重复读)特点:保证同一事务中多次读取同一数据结果一致避免脏读、不可重复读,但可能出现幻读MariaDB 的默认隔离级别通过 MVCC(多版本并发控制)实现适用场景:需要较高数据一致性的应用4. SERIALIZABLE(串行化)特点:最高隔离级别,完全隔离事务避免所有并发问题(脏读、不可重复读、幻读)性能最差,可能导致锁竞争适用场景:金融交易、库存管理等对一致性要求极高的场景设置隔离级别-- 查看当前隔离级别SELECT @@tx_isolation;-- 设置全局隔离级别SET GLOBAL tx_isolation = 'READ-COMMITTED';-- 设置会话隔离级别SET SESSION tx_isolation = 'REPEATABLE-READ';-- 在事务中设置SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;START TRANSACTION;并发问题说明脏读:读取到其他事务未提交的数据不可重复读:同一事务中多次读取同一数据得到不同结果幻读:同一事务中多次查询返回不同数量的记录选择建议默认使用 REPEATABLE READ:MariaDB 的默认选择,适合大多数场景READ COMMITTED:适合读多写少、对一致性要求不高的场景SERIALIZABLE:仅用于对一致性要求极高的关键业务避免 READ UNCOMMITTED:除非有特殊性能需求合理选择隔离级别可以在性能和数据一致性之间找到最佳平衡。
阅读 0·2月21日 15:13

Rspack 的 Tree Shaking 是如何工作的?

Tree Shaking 是现代前端构建工具的重要优化技术,Rspack 实现了高效的 Tree Shaking 功能,能够有效移除未使用的代码,减少打包体积。以下是 Rspack Tree Shaking 的详细说明:Tree Shaking 基本原理Tree Shaking 的核心思想是通过静态分析模块的导入和导出关系,识别并移除未被使用的代码。就像摇晃树木,枯死的叶子会掉落一样,未使用的代码会被"摇晃"掉。Rspack Tree Shaking 的工作机制静态分析:分析 ES Module 的 import/export 语法构建模块依赖图识别导出的内容是否被使用标记未使用代码:标记未被引用的导出标记未被使用的函数和变量分析副作用(side effects)代码移除:在代码生成阶段移除未使用的代码优化最终的 bundle 大小保持代码的正确性ES Module 的作用Tree Shaking 只对 ES Module 有效,因为:ES Module 的导入导出是静态的,可以在编译时分析CommonJS 的 require 是动态的,无法进行静态分析ES Module 的结构更清晰,便于分析依赖关系// ES Module - 支持 Tree Shakingexport const add = (a, b) => a + b;export const subtract = (a, b) => a - b;// 只导入 add,subtract 会被 Tree Shaking 掉import { add } from './math';// CommonJS - 不支持 Tree Shakingmodule.exports = { add: (a, b) => a + b, subtract: (a, b) => a - b};副作用(Side Effects)处理副作用是指模块在导入时会产生某些影响,如修改全局变量、执行某些操作等。Rspack 提供了多种方式处理副作用:package.json 配置: { "name": "my-package", "sideEffects": false }false:表示模块没有副作用,可以安全地进行 Tree Shakingtrue:表示模块有副作用,不能进行 Tree Shaking数组:指定有副作用的文件在配置中指定: module.exports = { optimization: { usedExports: true, sideEffects: true } }优化配置Rspack 提供了多个优化选项来增强 Tree Shaking 效果:module.exports = { mode: 'production', optimization: { usedExports: true, // 标记未使用的导出 sideEffects: true, // 处理副作用 minimize: true, // 启用代码压缩 concatenateModules: true // 模块连接 }}实际应用示例工具库优化: // utils.js export const formatDate = (date) => { /* ... */ }; export const parseDate = (date) => { /* ... */ }; export const validateDate = (date) => { /* ... */ }; // main.js import { formatDate } from './utils'; // parseDate 和 validateDate 会被 Tree Shaking 掉组件库优化: // components.js export { Button } from './Button'; export { Input } from './Input'; export { Modal } from './Modal'; // App.js import { Button } from './components'; // Input 和 Modal 会被 Tree Shaking 掉第三方库优化:使用支持 Tree Shaking 的库(如 lodash-es)避免导入整个库 // 不推荐 import _ from 'lodash'; // 推荐 import { debounce } from 'lodash-es';注意事项确保使用 ES Module:在 package.json 中设置 "type": "module"或使用 .mjs 扩展名或在配置中启用 ES Module 支持正确处理副作用:仔细评估模块是否有副作用避免错误标记导致代码被误删测试 Tree Shaking 后的功能生产环境测试:在生产环境验证 Tree Shaking 效果检查打包体积是否减少确保功能正常代码风格:使用具名导出而非默认导出避免在模块顶层执行副作用操作保持代码的模块化和可分析性性能优化建议分析打包结果:使用 Rspack 的分析工具查看哪些代码被移除识别可以进一步优化的模块监控 Tree Shaking 效果优化导入方式:使用具名导入而非默认导入避免导入整个模块使用动态导入按需加载选择合适的库:优先选择支持 Tree Shaking 的库避免使用有副作用的库考虑使用更轻量的替代方案Rspack 的 Tree Shaking 功能为开发者提供了强大的代码优化能力,通过合理的配置和使用,可以显著减少打包体积,提升应用性能。
阅读 0·2月21日 15:13

什么是 Prometheus Operator,它有哪些优势?

Prometheus Operator 的使用和优势:什么是 Prometheus Operator:由 CoreOS 开发的 Kubernetes Operator简化 Prometheus 在 Kubernetes 中的部署和管理提供声明式 API 管理 Prometheus 资源核心 CRD 资源:Prometheus:apiVersion: monitoring.coreos.com/v1kind: Prometheusmetadata: name: prometheusspec: replicas: 2 resources: requests: memory: 400Mi retention: 15d serviceMonitorSelector: matchLabels: release: prometheusServiceMonitor:apiVersion: monitoring.coreos.com/v1kind: ServiceMonitormetadata: name: my-appspec: selector: matchLabels: app: my-app endpoints: - port: metrics interval: 30s path: /metricsPodMonitor:apiVersion: monitoring.coreos.com/v1kind: PodMonitormetadata: name: my-podspec: selector: matchLabels: app: my-pod podMetricsEndpoints: - port: metricsAlertmanager:apiVersion: monitoring.coreos.com/v1kind: Alertmanagermetadata: name: alertmanagerspec: replicas: 3 configSecret: name: alertmanager-configPrometheusRule:apiVersion: monitoring.coreos.com/v1kind: PrometheusRulemetadata: name: my-rulesspec: groups: - name: my.rules rules: - record: job:http_requests:rate5m expr: sum by (job) (rate(http_requests_total[5m]))优势:声明式管理:使用 Kubernetes 原生方式管理自动化配置:自动发现和配置监控目标简化部署:一键部署完整的监控栈版本控制:配置可纳入 Git 管理自愈能力:Pod 故障自动恢复扩展性强:支持自定义资源安装部署:# 使用 Helm 安装helm install prometheus-operator prometheus-community/kube-prometheus-stack# 或使用 kubectlkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/bundle.yaml最佳实践:使用命名空间隔离监控资源合理设置资源限制和请求配置持久化存储避免数据丢失使用 ServiceMonitor 自动发现服务定期备份配置和规则监控 Operator 自身的健康状态常见问题:权限不足:配置正确的 RBACServiceMonitor 不生效:检查标签匹配数据丢失:配置 PVC 持久化性能问题:调整采集间隔和资源限制
阅读 0·2月21日 15:13