- 博客(908)
- 资源 (1)
- 收藏
- 关注
原创 echarts:一个复杂的瀑布图制作
分析一下这个需求,主要有几个难点:答:echarts 官方 把这种柱子叫瀑布图,实现的原理就是使用一个透明的柱子给他顶起来。我直接搬过来原文。我本来想到的是 y 轴的 type 设置为 time但是做着做着,发现不行,我们做瀑布图要用到 stack,而 stack 不支持 type = time那就只能用 type = value 了,也就是要把时间转化为一个数值,比如在上面的图中,最底部是 13:00,我们先以 13:00 为 0,那么 12:00 就是 1,11:00 就是 2,以此类推。那么
2024-02-06 11:51:44
2972
原创 spring:微服务springcloud入门以及eureka、ribbon、hystrix、feign、gateway的使用
微服务的简单入门
2023-12-18 09:00:00
1421
原创 抽象语法树AST以及babel原理
什么是AST?借用一下百度百科的解释:在计算机科学中,抽象语法树(Abstract Syntax Tree,AST),或简称语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。其实意思就是将代码以树的格式展现出来,举个例子你就明白了:大家可以在这个网站 https://astexplorer.net/ 上输入代码,会被解析为 AST,如图:可以看到,代码的每一个字符都以树的形式展示了出来。AST的应用
2022-04-10 23:47:29
1850
原创 RN:React Native原理以及新架构JSI、Fabric等概念
说明RN需要一个JS的运行环境, 在IOS上直接使用内置的javascriptcore, 在Android 则使用webkit.org官方开源的jsc.so。 此外还集成了其他开源组件,如fresco图片组件,okhttp网络组件等。RN 会把应用的JS代码(包括依赖的framework)编译成一个js文件(一般命名为index.android.bundle), , RN的整体框架目标就是为了解释运行这个js 脚本文件,如果是js 扩展的API, 则直接通过bridge调用native方法; 如果是UI
2022-02-12 21:56:59
18372
原创 webview原理和JSBridge
webview是一个嵌入式的浏览器,我们平常使用频率最高的就是客户端内嵌的webview特点:运行在webview中的JS代码有能力调用原生的系统API,没有传统浏览器沙箱的限制。目前javascript和客户端(后面统称native)交互的常见方式有两种JSBridgeschemaJSBridge当我们在native内打开m页,native会在全局的window下,为我们注入一个Bridge。这个Bridge里面,会包含我们与native交互的各种方法、比如判断第三方App是否安装、获取网
2022-02-09 18:39:10
8527
原创 小程序底层原理
小程序的 Http Rquest 请求是不是用的浏览器 Fetch API?不是, http request是由逻辑层发起,通过native去触发的,且不支持promise。小程序渲染再同一个线程么?小程序是双线程设计,即视图渲染与业务逻辑分别在运行在不同的线程中。这个设计主要是解决web技术中的一个痛点:web页面开发渲染线程和脚本线程是互斥的,长时间的脚本运行可能会导致页面失去响应或者白屏,体验糟糕。小程序为了更好体验,将页面的渲染线程和脚本线程分开设计在不同线程中执行,具体实现:● 视图v
2022-02-07 19:39:14
2303
1
原创 一文搞清楚软链接和硬链接
前言我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data)元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inod
2022-01-06 16:38:53
4112
6
原创 可能是最全的h5唤起App方案
背景调研 h5 唤起 App 方案目的:引导已下载用户打开APP,引导未下载用户下载APP。先说结论ios9 及以上用 Universal Link(uc/qq浏览器不支持,不过safari占比最大)android6及以上用applink(chrome和小众浏览器支持,市场占比还是比想像中大的)其它情况scheme(各种限制及弹窗确认)微信ios7月的版本已经支持ulink了,android还是乖乖走应用宝吧(引导出微信也行,效果不好)ok,接下来我们一个一个聊URL Scheme有
2021-11-08 18:28:49
27480
26
原创 px、pt、dpi、dip、分辨率、屏幕尺寸等等概念
文章目录基本概念屏幕尺寸屏幕比例像素pxpt/point分辨率DPI(点每英寸)PPI(像素每英寸)DIP/DPdensityandroid最后参考资料基本概念屏幕尺寸屏幕的对角线长度,一般讲的大小单位都是英寸。比如我们说 iphone6 是6.7英寸,就是屏幕对角线为 6.7英寸。屏幕比例只确定了对角线长,2边长度还不一定。所以有了4:3、16:9这种,这样就可以算出屏幕边长了。像素pxpx 不是自然界的长度单位,而是一个抽象的单位,比如:windows桌面属性里的“设置”看到,如果是10
2021-08-15 21:28:37
9364
11
原创 web端自动化部署方案
背景为了提高发布效率,践行DevOps,我们使用 gitlab 的 CI 工具作为我们前端项目的自动化部署方案。集成后的开发&发布模式发布测试环境:代码提交到test分支自动发布。发布正式环境:将test代码合并到master分支自动发布。集成CI/CD思路集成步骤1、集成ci脚本# test、preview和master分支默认支持线上部署# develop分支默认是开发分支,不建议(禁止)触发CI/CD流程,姑不作为默认触发部署分支stages: - instal
2021-01-30 23:52:10
1146
3
原创 SEO:基于SPA的搜索引擎优化方案调研
背景由于SPA项目不利于SEO优化,于是有了以下几个方案方案选择方案一:服务端渲染(SSR)直接java或php渲染(那样就又是前后端不分离了,不考虑)服务端起一个node应用优点:SEO 友好首屏渲染快(可在服务端缓存页面,请求到来直接给 html)缺点:代码改动大、需要做特定SSR框架的改动(例如vue的nuxt,react的next)丢失了部分SPA体验node 容易成为性能瓶颈方案二:构建时预渲染方案在项目开发完成之后,将有限的需要SEO的页面挑选出来,借助p
2021-01-14 18:25:19
860
原创 vue:详解vue中的代理proxy
问题我们本地调试一般都是 npm run serve,然后打开 本机ip:8080(localhost:8080)对吧,这时候我们要调接口调试,后端的接口的地址可能在测试环境,也可能是自己电脑的 ip,总之不是你的 lcoalhost:8080,那么你调接口就会产生跨域,那么怎么办呢?就需要proxy出场了复习一下跨域的解决方案jsonpcorsNode中间件代理(两次跨域)nginx反向代理CORS支持所有类型的HTTP请求,是跨域HTTP请求的根本解决方案JSONP只支持GET请求,
2020-07-11 22:58:47
77683
40
原创 js:浅谈函数式编程
背景函数式编程是一种编程思想,其余的还有声明式与命令式函数式举例假设我们要把字符串 functional programming is great 变成每个单词首字母大写var string = 'functional programming is great';var result = string .split(' ') .map(v => v.slice(0, 1).toUpperCase() + v.slice(1)) .join(' ');整个过程就是 join(m
2020-05-09 15:18:02
748
原创 小程序:van-sticky组件必须加上onPageScroll函数,加上才能生效
不是让 sticky 生效,而是它让“滚动事件这条水管”通了。sticky 一直在等水,你没开阀门。你看到的现象真正原因不写 onPageScroll 不生效系统不派发滚动写了就生效开启了滚动广播不传 scrollTop 也能用sticky 自己监听到了你这个不是偶然,是非常标准的微信机制 + vant 实现细节叠加导致的结果。如果你想,我可以帮你看你现在的页面结构是不是用了page-metaoverflow之类的,哪些会进一步影响滚动机制 😄。
2025-12-29 10:08:37
429
原创 python:OpenAI SDK 实战
openai版本:>=1.6.0,<2.0.0。python版本:3.13.11。key要保存好,否则无法找到。这是你跑通 SDK 的。改 base_url。
2025-12-25 11:09:09
774
原创 python:字符串的方法
在 Python 中,。无论是 Web 开发、数据清洗、日志分析,还是 AI Prompt 构造,字符串操作几乎无处不在。本文从,系统梳理 Python 中最常用、最值得掌握的字符串操作方法。
2025-12-23 10:28:45
372
原创 python:列表推导式(List Comprehension)
是 Python 内置的“序列生成器”类型,不是关键字,是一个 内置类(type)。作用:用来生成一段“整数序列”,通常配合 for 循环 / 推导式使用。“从 0~9 中,取所有偶数”
2025-12-22 17:12:20
354
原创 python:文件读写操作
Python 文件操作 = open + with + 正确的模式80% 用10% 用二进制10% 用pathlib。
2025-12-22 16:34:01
353
原创 key-value在不同语言中的表示方法
Key–Value 本质是一种映射关系key 唯一通过 key 快速查 value(通常 O(1))value 可以是任意类型是“查找”而不是“遍历”优先的数据结构KV 是用空间换时间的典型代表。
2025-12-22 16:06:46
980
原创 python:为什么有#注释,还需要三个“来注释&字符串的表示方法
Python仅有一种真正的注释语法——#,而三引号"""本质是多行字符串,并非注释。当字符串出现在模块、函数或类的首行时,会被Python识别为文档字符串(Docstring),具有特殊用途(如生成文档、IDE提示等)。#注释会被解释器完全忽略,而Docstring会被存储为字符串对象。Python复用字符串语法作为文档说明,体现了其简洁的设计哲学。实际开发中,#用于临时说明和实现细节,"""则用于正式接口文档。字符串在Python中有多种表示方式
2025-12-19 16:34:36
684
原创 python:用 dotenv 管理环境变量&生产环境怎么管理环境变量
dotenv:环境变量管理的现代工程起点 dotenv通过.env文件管理环境变量,解决了密钥硬编码的三大问题:安全风险、环境隔离和代码复用性。核心机制是将.env文件内容加载到系统环境变量中,而非替代系统变量。最佳实践包括: 项目结构分离配置与代码 生产环境禁用.env文件 通过.gitignore保护敏感信息 常见陷阱包括文件路径错误、变量覆盖规则误解等。dotenv本质是开发环境的生产环境变量模拟工具,实际部署应使用平台原生变量管理方案。掌握dotenv是现代Python工程化的基础能力。
2025-12-19 16:12:25
573
原创 python:深入理解 Python 的 `__name__ == “__main__“` 与双下划线(dunder)机制
本文深入解析了Python中if __name__ == "__main__"机制及其背后的双下划线(dunder)系统。__name__是Python模块的内置变量,当文件直接运行时值为"__main__",被导入时则为模块名。这种设计让文件既能作为脚本运行,又可作为模块复用。文章还介绍了常见的dunder变量(__file__、__dict__)和方法(__init__、__str__等),这些是Python的核心接口机制。最后强调标准写法是将主逻辑放在main(
2025-12-19 15:30:32
403
原创 python:闭包(Closure)
闭包是函数与其创建时捕获的外部变量组合,可视为"带私有状态的函数"。它通过嵌套函数实现,内层函数能记住外层作用域的变量。闭包相比普通函数具有状态保持能力,相比类更轻量简洁,适合实现简单状态管理、回调函数等场景。在工程中,闭包常用于配置型函数、Agent构建等,配合Callable类型注解可明确函数签名。闭包适用于状态简单、生命周期短的场景,而复杂状态管理仍需使用类。现代Python中,闭包+Callable构成了轻量级的对象系统,广泛应用于AI、Web开发等领域。
2025-12-19 11:45:05
832
原创 python版本切换工具pyenv
命令作用查看可安装的 Python 版本安装指定版本查看已安装版本设置项目 Python 版本设置全局 Python 版本卸载版本查看当前可用 Python 路径。
2025-12-09 17:39:57
944
原创 Python 现代包管理的最佳选择 Poetry
最现代最易用最安全最可复现团队采用度最高的包管理方式。如果你现在正在做 FastAPI / LangChain / LLM 应用,那么 Poetry 几乎是必选工具。
2025-12-09 11:48:47
725
原创 入门FastAPI和uvicorn以及和LangChain、LangGraph的简单结合
uvicorn是一个高性能的 Python ASGI 服务器,它负责真正运行 FastAPI 项目。FastAPI 是框架,Uvicorn 是用来运行 FastAPI 的“发动机”。下面我给你一个前端工程师能一秒理解的解释。它是一个用于运行异步 Web 框架,比如速度非常快(基于JavaPythonUvicorn👉你写 FastAPI,但真正处理网络请求的是 Uvicorn。FastAPI = 框架,而不是服务器Uvicorn = 运行 FastAPI 的 ASGI 服务器。
2025-12-08 18:06:11
839
原创 Python 基本语法(含java、js对比)
a = 10c = True无需letconstvarint之类的关键字。变量类型由赋值决定。PythonJSJavalistArraytuple无等价(类似 readonly array)不可变数组dictHashMapsetSetHashSet。
2025-12-05 15:18:32
896
原创 什么是张量Tensor
张量 = 带有维度的数字表格(多维数组)名称数学叫法维度(rank)例子标量scalar0维7向量vector1维[3, 5, 9]矩阵matrix2维3维张量tensor3维如彩色图片(宽 × 高 × 通道)N维张量tensorN维大模型的权重、embedding 等向量 = 1维张量矩阵 = 2维张量图片 = 3维张量大语言模型权重 = 4维以上张量张量只是所有这些东西的更宽泛的名字。张量就是“多维数组”,是深度学习里承载数据和权重的基本单位。
2025-12-03 11:54:57
381
原创 LangChain 是什么,和LangGraph、LangSmith关系
LangChain 是当前最流行的,尤其适用于:。如果你是一名技术人员(前端/后端),想要快速搭建 AI 应用,LangChain 可以让你大幅缩短开发周期。我会用程序员视角,讲清楚 LangChain 本质是什么、能做什么、什么时候该用、什么时候不该用。
2025-12-01 16:59:23
536
原创 大模型中的向量和Embedding是什么
摘要:向量是一串数字,用于数学化表示文本、图像等内容(如1024维数组)。AI通过向量实现语义计算,核心原理是将相似内容映射为高维空间中的邻近点。向量支持RAG、搜索等关键功能:用户问题与知识库文档通过向量相似度匹配(如余弦相似度)。专用向量数据库(Milvus/FAISS)能快速检索海量向量,成为智能系统的技术底座。本质上,向量是用数学结构让机器理解语义的基础工具。(149字)
2025-12-01 16:48:45
320
原创 堡垒机、前置机和 MFA 简介
摘要: 堡垒机(Jump Server/Bastion Host)是内网访问的核心入口,通过集中管理运维权限、操作审计和会话录制提升安全性,支持SSH/RDP等协议,可部署为硬件设备或软件系统,常集成MFA认证。采购需考虑厂商方案或云服务,配置时需设置用户权限与审计策略。使用方式包括SSH客户端、Web界面或专用工具,典型流程为用户→堡垒机→目标服务器,全程操作可追溯。 关联概念: MFA:多因素认证(密码+动态码/生物识别),增强堡垒机登录安全。 前置机:侧重网络流量管控(如负载均衡/API网关),与堡垒
2025-08-12 18:34:39
1285
原创 electron开发桌面应用入门
Electron入门指南摘要:本文介绍了Electron的基础开发流程。首先通过nvm和npm安装Electron作为devDependency,创建主进程main.js加载浏览器窗口和HTML页面。演示了预加载脚本的使用,通过contextBridge将Node.js环境变量暴露给渲染进程。最后讲解了使用Electron Forge工具进行打包,包括安装配置和新增的打包命令。整个流程涵盖了Electron应用开发的核心环节:环境配置、主进程与渲染进程通信、调试和打包发布。
2025-07-30 16:38:17
848
原创 pnpm 入门与实践指南
摘要:pnpm 是一个高效的 Node.js 包管理工具,通过硬链接共享依赖节省磁盘空间,安装速度比 npm/yarn 更快。它支持严格依赖管理,内置 monorepo 工作区功能。安装方式可通过 npm 或 corepack,常用命令与 npm/yarn 类似但更高效。pnpm 原生支持 monorepo 项目结构,通过 pnpm-workspace.yaml 配置。对于依赖问题可使用 --shamefully-hoist 参数解决,并支持精准更新子包命令。pnpm 是现代前端工程,特别是 Monorep
2025-07-29 17:57:12
918
原创 node-sass报错问题
摘要:错误显示node-gyp找不到Python执行文件,导致node-sass编译失败。原因可能是未安装Python或Python未在PATH中。解决方案包括:1)通过brew安装Python;2)创建python3软链接;3)配置npm使用python3路径;4)完全移除node-sass改用sass包。建议组合安装Python、Xcode工具链并配置npm,或直接迁移到sass避免编译问题。
2025-07-02 15:40:35
505
原创 package.json中的packageManager字段含义corepack
package.json中的"packageManager"字段用于指定项目使用的包管理器及版本(如npm/yarn/pnpm),配合Node 16.9+的Corepack功能可实现自动版本管理。安装Yarn时需注意:v1.x版本未发布在npm仓库,应通过Corepack使用(Node≥16.10默认支持);而Yarn 2+版本可通过npm全局安装。该机制能确保团队协作时使用统一的包管理工具版本。
2025-07-02 15:35:49
824
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅