- 博客(866)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 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
1524
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 抽象语法树AST以及babel原理
什么是AST?借用一下百度百科的解释:在计算机科学中,抽象语法树(Abstract Syntax Tree,AST),或简称语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。其实意思就是将代码以树的格式展现出来,举个例子你就明白了:大家可以在这个网站 https://astexplorer.net/ 上输入代码,会被解析为 AST,如图:可以看到,代码的每一个字符都以树的形式展示了出来。AST的应用
2022-04-10 23:47:29
1187
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 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
16808
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 webview原理和JSBridge
webview是一个嵌入式的浏览器,我们平常使用频率最高的就是客户端内嵌的webview特点:运行在webview中的JS代码有能力调用原生的系统API,没有传统浏览器沙箱的限制。目前javascript和客户端(后面统称native)交互的常见方式有两种JSBridgeschemaJSBridge当我们在native内打开m页,native会在全局的window下,为我们注入一个Bridge。这个Bridge里面,会包含我们与native交互的各种方法、比如判断第三方App是否安装、获取网
2022-02-09 18:39:10
7137
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 小程序底层原理
小程序的 Http Rquest 请求是不是用的浏览器 Fetch API?不是, http request是由逻辑层发起,通过native去触发的,且不支持promise。小程序渲染再同一个线程么?小程序是双线程设计,即视图渲染与业务逻辑分别在运行在不同的线程中。这个设计主要是解决web技术中的一个痛点:web页面开发渲染线程和脚本线程是互斥的,长时间的脚本运行可能会导致页面失去响应或者白屏,体验糟糕。小程序为了更好体验,将页面的渲染线程和脚本线程分开设计在不同线程中执行,具体实现:● 视图v
2022-02-07 19:39:14
1555
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 一文搞清楚软链接和硬链接
前言我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data)元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inod
2022-01-06 16:38:53
3840
6
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 可能是最全的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
20911
25
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 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
7639
11
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 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
894
3
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 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
592
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 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
72059
40
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 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
519
原创 RN:Error: /xxx/android/gradlew exited with non-zero code: 1
就好了,但是我同事说她删了 node_modules 然后重新 install 才好的,反正不知道哪里的缓存。2、根据黄色字体提示,说我包版本不对(但是这个是警告应该没事,但是我还是装了)我感觉和1、2点没关系,你可以直接执行3、4点试试。这个大概率是缓存问题,我说一下我的解决思路。
2024-06-05 18:45:02
349
原创 RN:‘yoga/style/Style.h‘ file not found
【代码】RN:'yoga/style/Style.h' file not found。
2024-05-31 11:14:41
150
原创 ios:文本框默认的copy、past改成中文复制粘贴
ios 开发,对于输入框的一些默认文案展示,如复制粘贴是英文的,那么如何改为中文的呢。按照路径找到这个文件。
2024-05-30 15:48:10
517
原创 ios:Command PhaseScriptExecution failed with a nonzero exit code
ios:Command PhaseScriptExecution failed with a nonzero exit code
2024-05-27 15:30:26
359
原创 react:memo、useMemo、useCallback的区别
当我们谈论React性能优化时,有三个关键函数不容忽视:React.memo、useMemo和useCallback。今天,我们就来深入解析一下这些函数的使用场景,帮助大家更好地理解它们的用途和效果。此外,关于技术选择和个人偏好,我想分享一下我的观点。我个人偏爱Vue的简洁与直观,能够让我们更专注于业务开发而无需过度关注性能优化。而 React 的性能优化技术我并不喜欢。就像手动挡和自动挡汽车的选择,两者确实都有其独特之处。手动挡汽车提供了更多的操作自由度,但对于很多驾驶者来说,汽车就是要易用。
2024-05-15 16:10:38
626
原创 ios:To use iPhone for development, enable Developer Mode in Settings → Privacy & Security.
ios 真机链接电脑后,并在 Product --> Destination 选择你的设备,点击 xcode 运行按钮,报错。打开后手机会自动重启,可能会识别不出来,把手机重新拔插一下,或者把 xcode 重启。打开手机 设置 -> 隐私与安全 -> 开发者模式 -> 打开。
2024-05-09 11:45:45
842
原创 内网用户是如何连接上互联网的?详解NAT网络地址转换技术
所以这样就不用给每个人每台设备都分配 ip 地址了,只需要给大的运行商、企业等等分配公网 ip 地址,而内部使用私有 ip 地址,这样就有效的减缓了 ipv4 的分配问题,那么核心的技术就是需要在上网时把私有 ip 转换为公网 ip,这个技术就是 NAT。我们上网用的 ip 地址都是私有的,而公有地址由 IANA ( Internet Assigned Numbers Authority,互联网号码分配机构) 分配的。比如我们接入了中国移动的宽带,宽带连接家里的光猫,光猫连接路由器,我们就可以上网了。
2024-05-06 17:27:25
428
原创 域名系统与域名解析服务器DNS
将域名解析为 ip 地址,才可以通过 TCP/IP 协议进行传输。顶级域名(Top-Level Domain,TLD)是DNS(域名系统)中域名层次结构中的最高级别域名。它位于域名的最右侧,是域名的最高级别的标识符。
2024-04-29 16:52:17
967
1
原创 我们的手机是如何连接上网的?骨干网又是什么?
几台计算机连接起来,互相可以看到其他人的文件,这叫局域网。整个城市的计算机都连接起来,就是城域网。把城市之间连接起来的网就叫骨干网。这些骨干网是国家批准的可以直接和国外连接的互联网。其他有接入功能的ISP(互联网服务提供商)想连到国外都得通过这些骨干网。
2024-04-29 16:14:43
1311
原创 RN报错:Timeout of 120000 reached waiting for exclusive access to file: /Users/xx/.gradle/wrapper/
RN报错:Timeout of 120000 reached waiting for exclusive access to file: /Users/xx/.gradle/wrapper/
2024-04-11 16:30:10
269
原创 English: fragmentary knowledge
如果强调知识的逐步积累或分阶段获取,可以使用 “piecemeal”。零碎的知识,可以使用 “fragmentary” 或 “piecemeal”,这两个词都可以用来描述部分或不完整的事物。然而,它们在语境中可能会有一些微妙的差异。当我们使用 “what” 引导一个问句时,如果后面跟的是一个动作或行为,通常需要使用辅助动词,比如 “do” 或 “would”,以构建一个完整的疑问句。“Fragmentary” 指的是由碎片组成的,表示整体被分解为片段或碎片。在描述知识时,可以强调知识的不完整或部分性。
2024-03-11 18:00:21
236
原创 English:about ‘do’
do” 的不同形式用于构成不同时态和人称,这些形式包括 “do,” “does,” 和 “did”。总的来说,系动词用于连接主语和描述主语的状态,而助动词用于帮助构建句子的其他方面,如否定、疑问等。“do” 是一个多功能的英语动词,具有多种用法。以上是一些常见的 “do” 的用法,具体用法可能根据上下文而有所变化。这些变种有助于构建正确时态和人称,使句子更加准确和清晰。这些形式的使用取决于时态和人称。
2024-02-27 14:24:15
956
原创 English:First Person、Second Person and Third Person
English:First Person、Second Person and Third Person
2024-02-27 11:42:20
274
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人