首页 文章 精选 留言 我的

精选列表

搜索[应用接续],共10000篇文章
优秀的个人博客,低调大师

Go 1.16 embed特性的简单应用

项目结构如下: └─ui └─embed_ui.go └─dist └─index.html └─static ├─css └─ ... ├─fonts └─ ... └─js └─ ... └─main.go └─go.mod //embed_ui.go package ui import ( `embed` ) //go:embed dist var WebUI embed.FS //main.go // 嵌入普通静态资源 type StaticResource struct { // 静态资源 staticFS embed.FS // 设置embed文件到静态资源的相对路径,也就是embed注释里的路径 path string } // 静态资源被访问逻辑 func (_this_ *StaticResource) Open(name string) (fs.File, error) { var fullName string if strings.Contains(name,`/`){ fullName = path.Join(_this_.path,"static",name) }else{ fullName = path.Join(_this_.path,name) } file, err := _this_.staticFS.Open(fullName) return file, err } func main() { // 设置静态资源 static := &StaticResource{ staticFS: ui.WebUI, path: "dist", } engine := gin.Default() { // 设置 engine.StaticFS("/static/",http.FS(static)) // 首页 engine.GET("/", func(context *gin.Context) { context.Writer.WriteHeader(http.StatusOK) indexHTML,_ := static.staticFS.ReadFile(static.path + "/" + "index.html") context.Writer.Write(indexHTML) context.Writer.Header().Add("Accept","text/html") context.Writer.Flush() }) } engine.Run() } [GIN-debug] GET /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (3 handlers) [GIN-debug] HEAD /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (3 handlers) [GIN-debug] GET / --> main.main.func1 (3 handlers) [GIN-debug] Environment variable PORT is undefined. Using port :8080 by default [GIN-debug] Listening and serving HTTP on :8080 [GIN] 2021/02/17 - 17:37:07 | 200 | 530.8µs | ::1 | GET "/" [GIN] 2021/02/17 - 17:37:07 | 200 | 135.1147ms | ::1 | GET "/static/js/chunk-2d0b6337.40e74af5.js" [GIN] 2021/02/17 - 17:37:07 | 200 | 134.5926ms | ::1 | GET "/static/css/chunk-3d4a32e8.4951a1b7.css" [GIN] 2021/02/17 - 17:37:07 | 200 | 146.7519ms | ::1 | GET "/static/css/index.d72cf005.css" [GIN] 2021/02/17 - 17:37:07 | 200 | 147.2865ms | ::1 | GET "/static/js/index.15d7bf17.js" [GIN] 2021/02/17 - 17:37:07 | 200 | 151.6588ms | ::1 | GET "/static/css/chunk-vendors.16da611a.css" [GIN] 2021/02/17 - 17:37:07 | 200 | 148.8884ms | ::1 | GET "/static/js/chunk-vendors.24c0b194.js" [GIN] 2021/02/17 - 17:37:07 | 200 | 0s | ::1 | GET "/static/js/chunk-2d0d69a3.6eb93f6e.js" [GIN] 2021/02/17 - 17:37:07 | 200 | 364.8µs | ::1 | GET "/static/js/chunk-2d0e53c4.94fb2765.js" [GIN] 2021/02/17 - 17:37:07 | 200 | 382.2µs | ::1 | GET "/static/js/chunk-3d4a32e8.ced07e34.js" [GIN] 2021/02/17 - 17:37:07 | 200 | 0s | ::1 | GET "/static/fonts/element-icons.535877f5.woff" 不太习惯写长篇大论的文章,看得不是太明白的可以参考下面的链接,研究这个也是了解下用法,如果有更好的写法欢迎留言,共同讨论 参考: https://blog.csdn.net/RA681t58CJxsgCkJ31/article/details/113777516

优秀的个人博客,低调大师

架构决策记录在 Spotify 的应用

云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! Spotify 有多个团队使用架构决策记录(ADR)记录他们做出的各项决策。ADR 为 Spotify 带来了许多好处,包括改进新晋开发人员的入职管理,提升组织调整导致项目所有权移交的灵活性,改善团队之间关于最佳实践认知的一致性。 架构决策(AD)是一种软件设计选择,负责处理架构上很重要的功能性或非功能性需求。 由于其天生具备不断演进的特性,所以架构决策记录技术经常在敏捷环境中使用。正如敏捷专家 Michael Nygard 所描述的那样: 敏捷项目的架构必须以不同的方式进行描述和定义。并不是所有的决策都是一次做出的,也不是所有的决策都会在项目开始时完成。 架构决策记录包括可以帮助我们理解特定决策及其结果的上下文信息。此外,他们还可以记录没有做出的决策以及不这样决策的原因。 Spotify 工程师 Josef Blake 表示,决定何时编写 ADR 有时候并不容易,因为当一项决策对一个项目产生重大影响时,可能会存在多种理解方式。根据他的经验,至少在下述三种情况下编写 ADR。 首先,编写 ADR 来记录过去未记录的决策。这可以确保每个人都清楚地知道存在这项决策。 同样,如果做出了一项决策,而从来没有记录,那么它能成为标准吗?确定未记录的决策,一种方法是在同行评审期间引入竞争代码模式或库,从而引导审查者发现未记录的决策。 对于会对系统产生很大影响(例如会破坏 API)的更改,编写 ADR 是更改的最后一步。在这种情况下,Spotify 的工程师使用编写请求评议(RFC)的方法,促使所有利益相关者就一个共用的方法达成一致。一旦 RFC 过程完成,所商定的解决方案就会在 ADR 中记录。 不过,Blake 评论说,ADR 不应该只为具有重大影响的决策而编写。 未记录决策的代价很难衡量,但其影响通常包括重复工作(其他工程师试图解决相同的问题)或竞争性解决方案(两个做同样事情的第三方库)。 在这种情况下编写的 ADR 可以使情况变得不那么复杂。 架构决策记录决不是一种新技术。轻量级决策记录在 ThoughtWorks 的技术雷达上已经存在了好几年。如果你有兴趣尝试,可以在这个存储库中查找其他信息和开箱即用的模板。 【云栖号在线课堂】每天都有产品技术专家分享!课程地址:https://yqh.aliyun.com/zhibo 立即加入社群,与专家面对面,及时了解课程最新动态!【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK 原文发布时间:2020-05-13本文作者:Sergio De Simone 本文来自:“InfoQ”,了解相关信息可以关注“InfoQ”

资源下载

更多资源
Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册