部署和运维
目录
- 1.Git
- 1.1. Git指令中merge和rebase的区别
- 1. Commit 记录
- 2. 合并方式
- 3. 冲突处理
- 4. 使用场景
- 选择建议
- 1.2. cherry-pick的使用
- 如何使用 `git cherry-pick`
- 例子
- 处理冲突
- 撤销 `cherry-pick`
- 其他选项
- 结论
- 2. 部署
- 1. Nginx的使用场景
- 编译打包
- 1. webpack
- 2. webpack打包优化
- 1. 代码分割(Code Splitting)
- 2. 模块合并(Concatenation)
- 3. 模块缓存(Module Caching)
- 4. 依赖分析(Dependency Analysis)
- 5. 树摇动(Tree Shaking)
- 6. 压缩(Compression)
- 7. 提取公共代码(Commons Chunking)
- 8. 静态资源处理(Static Assets Handling)
- 9. 使用生产模式(Production Mode)
- 10. 外部化(Externals)
- 11. 懒加载(Lazy Loading)
- 12. 并发构建(Concurrent Building)
- 13. 插件系统(Plugin System)
- 3. vite
- 4. vite打包优化
- 1. 快速开发服务器
- 2. 热模块替换 (HMR)
- 3. 生产构建
- 4. 静态资源处理
- 5. 自动导入
- 6. 模块预构建
- 7. 插件系统
- 8. 生产模式配置
- 9. 懒加载和动态导入
- 10. 外部化和CDN集成
- 5. webpack和vite对比
- 启动速度
- 打包方式
- 热更新
- 生态系统
- 实践经验
- 代码优化
- 技术栈兼容性
- 总结
1.Git
1.1. Git指令中merge和rebase的区别
在Git中,git merge
和 git rebase
都是用来整合两个分支历史的方法,但它们在操作上和效果上有显著的不同。下面是两者的主要区别:
1. Commit 记录
-
git merge
会在目标分支的历史上添加一个新的合并提交,这个提交包含了两个分支差异的合并结果。这会留下一个明确的合并点,使得分支的历史保持分离,容易追踪。 -
git rebase
则会尝试“重播”一系列提交,将当前分支的提交历史“移动”到目标分支的最新提交之上。这意味着当前分支的提交看起来像是从目标分支的最新状态开始的一样。这样做并不会保留原始的提交历史,而是会创建新的提交。
2. 合并方式
-
git merge
通过创建一个新提交来合并两个分支,这个提交包含了两个分支的差异。这可以直观地看到两个分支的合并情况。 -
git rebase
则是通过调整当前分支的提交历史,将它们置于目标分支的最新状态之上,就像这些提交从未离开过目标分支一样。
3. 冲突处理
-
git merge
解决冲突后会留下一个额外的合并提交,这个提交记录了冲突解决的过程。 -
git rebase
在解决冲突后不会产生额外的提交,而是直接修改或替换相关的提交。这使得提交历史显得更“干净”。
4. 使用场景
-
git merge
适用于希望保留分支历史的场景,比如在团队协作中,每个功能分支的提交历史都是有价值的,应当被保留。 -
git rebase
更适用于清理提交历史,比如在开发一个功能分支时,希望它的提交历史看起来好像一直跟随着主分支,或者在提交前希望整理提交历史使其更加清晰。
选择建议
-
当你关心线性的历史记录,希望提交历史简洁并且避免不必要的合并提交时,使用
git rebase
。 -
当你需要保留分支历史的完整性,特别是当分支已经被推送到共享仓库,其他人正在基于这个分支工作时,使用
git merge
。
在决定使用哪种方法时,应考虑到团队的协作方式和项目的需求。在共享的仓库中使用 git rebase
需要特别小心,因为它会重写历史,如果其他人的工作已经基于这个历史,可能会引起问题。
1.2. cherry-pick的使用
git cherry-pick
命令允许你从一个分支挑选一个或多个特定的提交,并将这些提交应用到你当前所在的分支。这在很多场景下都非常有用,比如:
- 当你需要将一个或多个特定的修复或特性从一个分支移植到另一个分支时。
- 当你想要合并远程分支的一个提交,而不合并整个分支。
- 当你希望在不同的仓库间移植代码更改时。
如何使用 git cherry-pick
基本语法是:
git cherry-pick <commit-hash>
这里的 <commit-hash>
是你要应用的提交的哈希值,你可以在 git log
输出中找到它。
例子
假设你有两个分支,一个是 main
,另一个是 feature
,并且 feature
分支上有一些提交你想要移到 main
分支上。你可以切换到 main
分支,然后使用 cherry-pick
命令:
git checkout main
git cherry-pick feature_commit_hash
如果 feature_commit_hash
是你从 git log
中获得的特定提交的哈希值,那么这条命令就会将那个提交应用到 main
分支上。
处理冲突
如果 cherry-pick
的过程中遇到冲突,Git 会停下来让你手动解决冲突。一旦你解决了冲突,你可以继续应用剩下的变更:
git cherry-pick --continue
如果你想跳过当前冲突并继续下一个,可以使用:
git cherry-pick --skip
撤销 cherry-pick
如果 cherry-pick
后发现你并不想保留这个提交,你可以使用 git reset
来撤销:
git reset --hard HEAD~
这会将当前分支的状态回滚到上一个提交。
其他选项
-n
或--no-commit
:这会阻止 Git 自动提交结果,而是要求你手动提交。-m
或--mainline
:当 cherry-picking 一个合并提交时,你可以指定要应用的父提交。-x
或--strategy=recursive
:这会使用递归策略来合并,通常用于解决复杂的合并冲突。
结论
git cherry-pick
是一个非常灵活和强大的命令,它可以让你在Git中精确地控制哪些提交被应用到哪个分支,从而帮助你更精细地管理代码历史。
2. 部署
1. Nginx的使用场景
Nginx 是一款高性能的Web服务器和反向代理服务器,因其高并发能力、稳定性、资源消耗低和丰富的功能集,被广泛应用于多种场景中。以下是 Nginx 的一些主要使用场景:
-
静态文件服务:
Nginx 特别擅长处理静态文件请求,如 HTML 页面、图像、CSS 和 JavaScript 文件。它能够快速响应大量静态文件请求,减轻动态服务器的负担。 -
反向代理和负载均衡:
Nginx 可以作为反向代理服务器,将请求分发到后端的多个服务器上,实现负载均衡,提高系统的可用性和响应速度。这对于处理高流量的网站和应用至关重要。 -
缓存服务:
Nginx 支持页面缓存和代理缓存,可以缓存后端服务器的响应,减少对后端服务器的请求,提高数据访问速度和系统性能。 -
SSL/TLS 加速:
Nginx 支持 HTTPS 连接,可以处理 SSL/TLS 加密,减轻后端服务器的 SSL 处理负担,同时确保数据传输的安全性。 -
WebSocket 支持:
Nginx 支持 WebSocket 协议,可以用于实时通信应用程序,如在线聊天、实时数据更新等场景。 -
API 网关:
Nginx 可以作为 RESTful API 的网关,实现路由、协议转换、数据格式转换和请求限制等功能。 -
正向代理:
Nginx 可以作为正向代理,允许客户端通过 Nginx 访问互联网,常用于企业防火墙或代理服务器。 -
限流系统:
Nginx 提供模块来限制连接数或请求速率,保护后端服务器免受 DDoS 攻击或资源耗尽。 -
URL 重写和重定向:
Nginx 可以实现 URL 重写规则,用于 SEO 优化、迁移旧网站链接或简化 URL。 -
虚拟主机:
Nginx 支持在同一服务器上配置多个虚拟主机,每个虚拟主机可以有不同的域名和内容,便于托管多个网站。 -
日志管理和分析:
Nginx 提供详细的访问日志,可以用于监控、故障排查和数据分析。 -
邮件代理服务器:
Nginx 可以作为邮件代理服务器,处理 SMTP、POP3 和 IMAP 协议,用于邮件传输和过滤。
Nginx 的灵活性和模块化设计使得它能够适应各种不同的需求和环境,成为现代 Web 架构中的核心组件之一。
编译打包
1. webpack
Webpack是一个流行的模块打包器(module bundler),主要用于前端开发,它的主要功能是将应用程序中使用的各种模块和资源打包成一个或多个优化过的静态文件,以便在浏览器中运行。Webpack的设计理念是将项目中的所有资源(不仅仅是JavaScript,还包括CSS、图像、字体等)视为模块,这样可以统一管理和处理这些资源。
以下是Webpack的一些关键特性和概念:
-
入口起点(Entry Points):
Webpack需要知道从哪里开始打包,这就是入口起点。你可以在配置文件中指定一个或多个入口点,Webpack会从这里开始查找和打包模块。 -
输出(Output):
这是Webpack打包后生成的文件的配置,包括输出目录和输出文件名等。 -
加载器(Loaders):
Webpack使用加载器来转换各种类型的资源,使之成为模块。例如,babel-loader
用于将ES6+代码转译为浏览器可识别的ES5代码,url-loader
用于处理图像和字体文件。 -
插件(Plugins):
插件可以扩展Webpack的功能,执行更复杂的任务,如代码分割、优化、资源压缩、热模块替换(Hot Module Replacement, HMR)等。 -
模块解析(Resolution):
Webpack可以自动解析模块路径,查找并引入所需的模块。 -
代码拆分(Code Splitting):
Webpack支持动态导入和懒加载,可以将代码拆分成多个包,只有在需要时才加载,这有助于优化应用的加载速度。 -
优化(Optimization):
Webpack提供了多种优化选项,包括压缩代码、提取公共模块、缓存和长期缓存策略等。 -
配置文件(Configuration File):
Webpack使用一个名为webpack.config.js
的配置文件来指定打包的规则和选项。这个文件可以非常简单,也可以非常复杂,取决于项目的需求。 -
开发服务器(Dev Server):
Webpack Dev Server提供了本地开发环境,支持实时重载和热模块替换,加速了开发过程。
Webpack的生态系统非常丰富,有大量的社区贡献的加载器和插件,可以满足各种不同的需求。由于其高度的灵活性和强大的功能,Webpack成为了构建现代Web应用的标准工具之一。
如果你正在考虑使用Webpack,你需要通过npm或yarn将其安装到你的项目中,然后设置相应的配置文件。Webpack的官方网站和社区文档提供了详细的教程和指南,帮助你快速上手。
2. webpack打包优化
Webpack 的打包优化主要包括以下几个方面:
1. 代码分割(Code Splitting)
Webpack 支持动态导入 (import()
) 和代码分割,这可以让你将代码分为多个较小的包,而不是一个巨大的单一包。代码分割可以基于路由、异步加载、函数调用等进行,这样用户只会加载他们实际需要的代码,减少了初次加载时间。
2. 模块合并(Concatenation)
Webpack 可以将多个模块合并到一个文件中,减少 HTTP 请求的数量,从而提高加载速度。
3. 模块缓存(Module Caching)
Webpack 在构建过程中会缓存模块的解析结果,这样在下次构建时,如果文件没有变化,就可以直接使用缓存,节省构建时间。
4. 依赖分析(Dependency Analysis)
Webpack 会递归地构建一个依赖关系图,找出哪些模块是真正需要的,以及它们之间的依赖关系,从而剔除未使用的代码,进行树摇动(Tree Shaking)。
5. 树摇动(Tree Shaking)
Webpack 支持 ES6 模块语法,这意味着它可以识别无副作用的代码和未使用的导出,并在打包时移除这些代码,减少最终输出文件的大小。
6. 压缩(Compression)
Webpack 可以使用插件如 TerserPlugin
或 UglifyJsPlugin
来压缩 JavaScript 代码,或者 MiniCssExtractPlugin
和 optimize-css-assets-webpack-plugin
来处理和压缩 CSS。
7. 提取公共代码(Commons Chunking)
Webpack 可以提取出多个入口点之间共用的代码,将其打包到一个单独的文件中,这可以提高缓存利用率和加载速度。
8. 静态资源处理(Static Assets Handling)
Webpack 可以通过加载器处理各种静态资源,如图片、字体等,将其转换为模块并进行优化,例如使用 url-loader
或 file-loader
。
9. 使用生产模式(Production Mode)
在 Webpack 配置中设置 mode
为 production
,这会启用一系列默认的优化,包括但不限于压缩代码、优化输出文件名等。
10. 外部化(Externals)
Webpack 允许你声明某些模块作为外部依赖,这样就不会被包含在打包的文件中,而是假定在运行时环境中可用,这可以进一步减小打包后的文件大小。
11. 懒加载(Lazy Loading)
Webpack 支持按需加载,允许你延迟加载不立即需要的代码,直到用户与特定功能交互时才加载。
12. 并发构建(Concurrent Building)
Webpack 支持多核 CPU,并可以使用 thread-loader
等插件来并行执行任务,加快构建速度。
13. 插件系统(Plugin System)
Webpack 的插件系统极其强大,允许开发者在构建过程的各个阶段插入自定义逻辑,执行各种优化和处理任务。
通过上述方法,Webpack 能够显著提高打包的效率和最终输出的性能,使你的应用更加轻量级和快速。
3. vite
Vite(发音为“veet”,意大利语中意为“快速”)是一个现代的前端构建工具,专为开发基于ES模块的应用程序设计。Vite由Vue.js的核心开发者Evan You创建,但它的使用并不局限于Vue项目,同样适用于React、Preact以及其他基于JavaScript的前端框架或库。
Vite的主要特点和优势包括:
-
快速启动:
Vite利用了现代浏览器对ES模块的原生支持,这意味着在开发环境中,Vite不需要等待整个应用被打包成单个文件才能启动。相反,它直接通过HTTP服务提供模块,从而实现了近乎即时的启动速度。 -
热模块替换(HMR):
Vite提供了高效且细粒度的热模块替换,当源代码发生变化时,它仅重新编译受影响的部分,并将更改推送到浏览器中,而无需完全刷新页面,这大大提高了开发效率。 -
开箱即用的配置:
Vite提供了默认的构建配置,对于大多数项目来说,开发者几乎不需要修改任何配置即可开始工作,这使得新项目启动变得非常简单快捷。 -
高度可扩展性:
尽管Vite有开箱即用的配置,但它仍然允许开发者通过插件API和JavaScript API来定制构建流程,以适应特定项目的需求。 -
生产构建优化:
在生产环境中,Vite使用Rollup进行构建,这包括代码分割、压缩、树摇动(tree shaking)等优化措施,确保最终的构建产物体积小、加载速度快。 -
TypeScript支持:
Vite内置了对TypeScript的支持,使得在大型项目中使用类型安全变得更加容易。 -
社区和生态:
Vite有一个活跃的社区,不断有新的插件和集成被开发出来,这进一步增强了它的功能和适用范围。 -
对现代标准的支持:
Vite遵循最新的ECMAScript标准,支持ES Modules,这让它在处理现代JavaScript语法和模块化结构时更加得心应手。
Vite的使用通常涉及到以下步骤:
- 通过npm或yarn全局安装Vite CLI。
- 初始化一个新的Vite项目或在现有项目中配置Vite。
- 运行开发服务器进行开发。
- 执行构建脚本为生产环境准备优化后的代码。
Vite的出现是对传统构建工具如Webpack的挑战,它试图解决一些常见的痛点,如构建速度慢、配置复杂等问题,同时保持高度的灵活性和强大的功能集。
4. vite打包优化
Vite 在打包优化方面采用了与传统构建工具如 Webpack 不同的策略,它充分利用了现代浏览器对 ES 模块的支持,以及高效的开发和构建流程。以下是 Vite 进行打包优化的主要方式:
1. 快速开发服务器
Vite 的开发服务器在启动时几乎瞬间完成,因为它不等待整个项目打包完成。它通过 HTTP 服务器直接提供模块,利用浏览器的 ES 模块加载机制,这极大地提高了开发效率。
2. 热模块替换 (HMR)
Vite 实现了高效且细粒度的热模块替换 (HMR),这意味着当源代码发生改变时,只有受影响的部分会被重新编译和替换,而无需重新加载整个页面。这使得开发者可以即时看到更改效果,提高了迭代速度。
3. 生产构建
对于生产环境,Vite 使用 Rollup 来进行构建,这包括:
- 代码分割:通过动态导入 (
import()
) 实现按需加载和代码分割,减少初始加载时间。 - 压缩和优化:使用 Terser 等工具压缩 JavaScript,使用 CSS 压缩插件优化样式表,去除无用的代码(树摇动)。
- 公共代码提取:将共享的代码片段提取到单独的包中,利用浏览器缓存。
4. 静态资源处理
Vite 支持静态资源的优化,包括图片、字体等的压缩和尺寸调整,通过插件如 vite-plugin-imagemin
实现。
5. 自动导入
Vite 支持自动导入常用库和组件,例如通过 unplugin-vue-components
和 unplugin-auto-import
插件,这减少了冗余代码,优化了包的大小。
6. 模块预构建
Vite 可以预构建和缓存模块,这意味着在再次构建时,可以跳过已经处理过的模块,加快构建速度。
7. 插件系统
Vite 的插件系统允许开发者扩展和定制构建过程,例如使用 rollup-plugin-visualizer
来可视化构建结果,帮助识别优化点。
8. 生产模式配置
在生产环境下,Vite 会自动开启压缩和优化,可以通过 vite.config.js
中的 build
配置项进一步定制优化策略。
9. 懒加载和动态导入
Vite 支持动态导入语法,可以实现懒加载和更精细的代码分割,只在需要时加载代码,减少不必要的资源消耗。
10. 外部化和CDN集成
Vite 可以将某些库标记为外部依赖,利用 CDN 提供的资源,减少打包体积,同时利用 CDN 的缓存和分发优势。
Vite 的打包优化策略旨在提供快速的开发体验和高效的生产构建,通过利用现代浏览器特性、高效模块加载和先进的构建技术,它能够显著提升前端项目的开发和部署效率。
5. webpack和vite对比
Webpack 和 Vite 是两种流行的前端构建工具,它们各有特色,适用于不同的场景和需求。以下是两者之间的一些关键对比:
启动速度
- Vite 利用浏览器的ES模块原生支持,不需要等待整个项目打包完毕就能启动开发服务器,因此启动速度非常快。
- Webpack 在启动时需要构建整个项目,分析模块依赖,打包模块,这通常需要更多时间。
打包方式
- Vite 在开发模式下按需加载模块,直接通过HTTP服务提供模块,不需要预先打包。在生产构建时使用Rollup进行代码分割、压缩等优化。
- Webpack 在启动时会进行全面的模块分析和打包,生成静态资源,无论是开发还是生产模式都需要完整的构建流程。
热更新
- Vite 的热模块替换(HMR)效率高,仅重新请求和编译改变的模块,无需重新编译整个依赖树。
- Webpack 的HMR也需要重新编译依赖的模块,尽管有缓存机制,但在复杂项目中可能不如Vite迅速。
生态系统
- Webpack 拥有成熟的生态系统,包括大量的loader和plugin,支持各种资源类型和复杂的构建需求。
- Vite 的生态系统相对较新,虽然也在快速发展,但可能在某些边缘情况下缺乏成熟解决方案。
实践经验
- Webpack 有着广泛的使用案例和丰富的实践经验,遇到问题时更容易找到解决方案。
- Vite 作为一个较新的工具,可能在某些不常见的场景下遇到未预见的问题,社区支持和文档可能还在建设中。
代码优化
- Vite 在生产构建中使用Rollup进行优化,支持代码分割、压缩、树摇动等。
- Webpack 在代码优化方面也非常强大,提供了丰富的插件来处理各种优化需求。
技术栈兼容性
- Vite 默认支持ES模块,对现代JavaScript语法有良好的支持,适合构建基于ESM的应用。
- Webpack 支持各种模块格式(CommonJS、AMD、ESM等),适用于更广泛的项目。
总结
选择Webpack还是Vite主要取决于项目需求和个人偏好。如果你重视开发效率和快速启动,Vite可能是更好的选择。然而,如果你的项目有复杂的构建需求或需要高度定制化的配置,Webpack可能会更加合适。在实践中,许多团队也会结合使用两者的优势,例如在开发环境中使用Vite,在生产环境中使用Webpack进行构建,以达到最佳的开发和部署效果。
相关文章:
部署和运维
目录 1.Git1.1. Git指令中merge和rebase的区别1. Commit 记录2. 合并方式3. 冲突处理4. 使用场景选择建议 1.2. cherry-pick的使用如何使用 git cherry-pick例子处理冲突撤销 cherry-pick其他选项 结论 2. 部署1. Nginx的使用场景 编译打包1. webpack2. webpack打包优化1. 代码…...
微信小程序基本语法
官网 https://developers.weixin.qq.com/miniprogram/dev/framework/ 视频教程:尚硅谷微信小程序开发教程,2024最新微信小程序项目实战! 仿慕尚花坊项目源码:https://gitee.com/abcdfdewrw/flower-workshop 目录 一,初…...
测试用例的设计方法
等价类 等价类概念:在所有测试的数据中,具有某种共同特征的数据子集 边界值 边界值分析是对程序输入或输出的边界值进行测试的一种黑盒测试方法 边界值是作为等价类的补充,其主要区别是: 边界值测试设计不是从某一个等价类中…...
Android10.0 锁屏分析-KeyguardPatternView图案锁分析
首先一起看看下面这张图: 通过前面锁屏加载流程可以知道在KeyguardSecurityContainer中使用getSecurityView()根据不同的securityMode inflate出来,并添加到界面上的。 我们知道,Pattern锁所使用的layout是 R.layout.keyguard_pattern_view&a…...
Python 装饰器:函数的函数,代码的艺术
引言 在Python中,装饰器是一种强大的功能,允许程序员在不修改原函数源码的情况下增强或修改函数行为。装饰器本质上是一个接收函数作为参数的高阶函数,并返回一个新的函数或修改原函数的行为。这种机制极大地提高了代码的复用性、可读性和模…...
安全防御2
实验要求: 实验过程: 7,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换): 新建电信区: 新建移动区: 将对应接口划归到各自区域: 新建…...
C语言 ——— 打印水仙花数
目录 何为水仙花数 题目要求 代码实现 何为水仙花数 “水仙花数”是指一个n位数,其各位数字的n次方之和等于该数本身 如:153 1^3 5^3 3^3,则153就是一个“水仙花数” 题目要求 求出0~100000的所有“水仙花数”并输出 代码实现 #i…...
「Conda」在Linux系统中安装Conda环境管理器
在Linux系统中安装Conda环境管理器是一个相对简单的过程。 1. 准备工作 确保你的Linux系统已经更新到最新版本,并安装了基本的开发工具和库。打开终端,执行以下命令: sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential2. 安装Miniconda或An…...
9.11和9.9哪个大?GPT-4o也翻车了
今天刷到了这个问题,心血来潮去问下chatgpt-4o,没想到疯狂翻车... 第一次问: GPT一开始给出了难绷的解答,让我想起了某短视频软件评论区里对某歌手节目排名的质疑哈哈哈哈哈 但是在接下来的进一步询问和回答中它反应过来了。 第…...
[开源]语雀+Vercel:打造免费个人博客网站
大家好,我是白露。 今天我想和大家分享我的今年的第一个开源项目 —— 基于语雀+Nextjs+Vercel实现免费的博客系统。 简单来说,你在语雀写博客,然后直接一键同步到个人网站上,网站自动部署! 而且,整个过程几乎不需要额外的成本,也不用充值语雀超级会员,hh。这个项目…...
使用ElementUI和element-china-area-data库实现省市区三级联动组件封装
在前端开发中,省市区三级联动是一个常见的需求。今天我们将使用Vue.js和ElementUI组件库,结合element-china-area-data库,来实现一个省市区三级联动的组件。这个组件不仅可以提高用户体验,还能大大简化我们的代码。接下来…...
0718,TCP协议,三次握手,四次挥手
目录 上课喵: TCP(Transmission Control Protocol,传输控制协议)的状态迁移图 TCP连接的状态迁移图 状态迁移说明: 注意: big_htonl.c 字节序转换 addr.c IP地址的转换 作业喵: …...
如何安装Visual Studio Code
Visual Studio Code(简称 VS Code) Visual Studio Code 是一款由微软开发的免费、开源的现代化轻量级代码编辑器。 主要特点包括: 跨平台:支持 Windows、Mac 和 Linux 等主流操作系统,方便开发者在不同平台上保持一…...
vi 编辑器快捷生成 main 函数和基本框架
step1: 执行 sudo vi /etc/vim/vimrc (修改vimrc需要管理员权限:sudo) step2:输入用户密码,回车, 编辑vimrc文件 step3:在尾行输入以下代码(可复制) map mf i#include<stdio.h><ESC>o#includ…...
npm相关指令
切换镜像 腾讯镜像 npm config set registry https://mirrors.cloud.tencent.com/npm/ 淘宝镜像(新版) npm config set registry https://registry.npmmirror.com 淘宝镜像(旧版,已弃用) npm config set regist…...
为什么不要碰自媒体
要是失业了,搞自媒体,可行吗?毫无希望! 如今的自媒体早卷得不成样子了,很难再有机会,根本原因在于几乎没有增量用户的同时,存量用户也不再有剩余时间,全量用户的时间早已被几个自媒…...
酷炫末世意境背景404单页HTML源码
源码介绍 酷炫末世意境背景404单页HTML源码,背景充满着破坏一切的意境,彷佛末世的到来,可以做网站错误页或者丢失页面,将下面的代码放到空白的HTML里面,然后上传到服务器里面,设置好重定向即可 效果预览 …...
PHP 调用 1688 详情 API 接口的实战攻略
在电商领域,获取准确和详细的商品信息对于业务的发展至关重要。1688 作为国内知名的批发采购平台,其详情 API 接口为开发者提供了丰富的数据资源。本文将为您详细介绍如何使用 PHP 调用 1688 详情 API 接口。 一、前期准备 注册 1688 开放平台账号&#…...
SAP ABAP性能优化
1.前言 ABAP作为SAP的专用的开发语言,衡量其性能的指标主要有以下两个方面: 响应时间:对于某项特定的业务请求,系统在收到请求后需要多久返回结果 吞吐量:在给定的时间能,系统能够处理的数据量 2. ABAP语…...
【鸿蒙学习笔记】构建布局・选项卡 (Tabs)
官方文档:选项卡 (Tabs) 目录标题 底部导航顶部导航侧边导航限制导航栏的滑动切换固定导航栏・可滚动导航栏自定义导航栏切换至指定页签 底部导航 Entry Component struct Bujv_tabs {build() {Column() {Tabs({ barPosition: BarPosition.End }) {TabContent() {T…...
独立游戏《星尘异变》UE5 C++程序开发日志5——实现物流系统
目录 一、进出口清单 二、路径计算 三、包裹 1.包裹的数据结构 2.包裹在场景中的运动 四、道路 1.道路的数据结构 2.道路的建造 3.道路的销毁 4.某个有道路连接的建筑被删除 作为一个工厂类模拟经营游戏,各个工厂之间的运输必不可少,本游戏采用的…...
Web开发:<br>标签的作用
br作用 介绍基本用法常见用途注意事项使用CSS替代 介绍 在Web开发中,<br> 标签是一个用于插入换行符的HTML标签。它是“break”的缩写,常用于需要在文本中强制换行的地方。<br> 标签是一个空标签,这意味着它没有结束标签。 基本…...
DVC+Minio
由于参数文件比较大,因此onnx、engine等大文件弃用LFS管理,改用dvc管理: minio就是存储用的 启动miniosudo netstat -ntpl#查看端口号 sudo kill -9 $(sudo lsof -i:5061 -t) 关闭端口对应进程 ./minio server --console-address ":6570…...
C++内存管理(区别C语言)深度对比
欢迎来到我的Blog,点击关注哦💕 前言 前面已经介绍了类和对象,对C面向对象编程已经有了全面认识,接下来要学习对语言学习比较重要的是对内存的管理。 一、内存的分区 代码区:存放程序的机器指令,通常是可…...
手把手带你写一个精简版 HashMap 的 put 方法
👆🏻👆🏻👆🏻关注博主,让你的代码变得更加优雅。 前言 HashMap 大家工作中遇到的太多了,已经成了必须使用的类了, 在面试的时候 HashMap 基本是必问题,但是…...
【面试题】数据结构:堆排序的排序思想?
堆排序的排序思想? 堆排序是一种高效的排序算法,其基本思想是利用堆这种数据结构来实现排序。堆是一种特殊的完全二叉树,通常用数组来表示。堆排序的基本步骤如下: 1. 构建初始堆: 将待排序的数组转换成一个最大堆&a…...
PyTorch 深度学习实践-循环神经网络基础篇
视频指路 参考博客笔记 参考笔记二 文章目录 上课笔记基于RNNCell实现总代码 基于RNN实现总代码 含嵌入层的RNN网络嵌入层的作用含嵌入层的RNN网络架构总代码 其他RNN扩展基本注意力机制自注意力机制(Self-Attention)自注意力计算多头注意力机制…...
vue实现可拖拽dialog封装
一、实现modal弹窗组件 <template><divv-if"visible"class"customer-dialog"id"customer-dialog":style"dialogStyles"v-dialogDrag:[dialogDrag]><div class"dialog-container"><divclass"dial…...
本地多模态看图说话-llava
其中图片为bast64转码,方便json序列化。 其中模型llava为本地ollama运行的模型,如:ollama run llava 还有其它的模型如:llava-phi3,通过phi3微调过的版本。 实际测试下来,发现本地多模型的性能不佳&…...
人工智能算法工程师(中级)课程14-神经网络的优化与设计之拟合问题及优化与代码详解
大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程14-神经网络的优化与设计之拟合问题及优化与代码详解。在机器学习和深度学习领域,模型的训练目标是找到一组参数,使得模型能够从训练数据中学习到有用的模式&am…...
三明做网站/广州网站营销推广
1、打开文件diy/module/order/controllers/cart.php第149行,看看有没有下面这个方法函数,如果你的版本没有的话就加上// 动态获取订单列表数据2public function ajax() {ob_start();list($list, $total, $url) $this->order_model->get_cart($thi…...
政府网站建设标准/国际新闻最新消息今天军事新闻
2019独角兽企业重金招聘Python工程师标准>>> 先啰嗦一点: 由于最近工作中,涉及到生产者消费者设计模式,对此有一些体会,所以总结一下,与大家分享。 1、什么是生产者消费者模式 在工作中,大家可能…...
免费网站建设源码/整站优化工具
5为学校中学生选课管理这个现实问题进行数据库模式设计。根据调查分析,确定它的属性集合为:U{S#,C#,SNAME,CNAME,TEACHER,GRADE,SD}下面给出两种确定的模式设计方案:方案一:只有一个关系模式:R(S#,C#,SNAME,CNAME,TEAC…...
旅游电子商务网站排名/宁波seo推广哪家好
摇臂钻床摇臂钻床在使用进程中,丝锥的折断往往是在受力很大的情形下倏忽发生的,致使断在螺孔中的半截丝锥的切削刃,紧紧地楔在金属内,一般很难使丝锥的切削刃与金属脱离,为了使丝锥能够在螺孔中松动,可以用…...
下载网站软件免费安装/湖人排名最新
科目二总结 注意!!! 以下情况根据具体情况调节 1.左倒车入库 直行,车头碰住黄线的时候朝左打死,人对准直角朝右回半圈,目视前方,车正了朝右回到初始角度,w朝上 倒车:挂倒挡,后视镜的角碰到黄…...
ios wordpress连接站点/江苏网站推广
请下载安装文档:https://github.com/lpx20181019/document...