diff --git a/_posts/2023-10-14-test-markdown.md b/_posts/2023-10-14-test-markdown.md index c4c319cc560e..956f7f63838f 100644 --- a/_posts/2023-10-14-test-markdown.md +++ b/_posts/2023-10-14-test-markdown.md @@ -6,7 +6,7 @@ tags: [Gateway] comments: true --- -## 基础 +## 1.基础 > 什么是API网关? @@ -34,17 +34,17 @@ API网关是一个服务器,它充当API前端和后端服务之间的中介 > 以下是网关服务发现的一般工作原理: -1. **服务注册**:当一个新的服务实例启动时,它会在注册中心注册自己,提供一些元数据,如服务的IP地址、端口、版本、健康检查端点等。 +**服务注册**:当一个新的服务实例启动时,它会在注册中心注册自己,提供一些元数据,如服务的IP地址、端口、版本、健康检查端点等。 -2. **健康检查**:注册中心会定期对注册的服务实例进行健康检查。如果某个服务实例不再健康或无法访问,注册中心会将其标记为不可用。 +**健康检查**:注册中心会定期对注册的服务实例进行健康检查。如果某个服务实例不再健康或无法访问,注册中心会将其标记为不可用。 -3. **服务发现**:当API网关需要路由一个请求到某个服务时,它会查询注册中心,获取该服务的所有健康实例的列表。然后,网关可以使用某种负载均衡策略(如轮询、最少连接等)来选择一个服务实例,并将请求路由到该实例。 +**服务发现**:当API网关需要路由一个请求到某个服务时,它会查询注册中心,获取该服务的所有健康实例的列表。然后,网关可以使用某种负载均衡策略(如轮询、最少连接等)来选择一个服务实例,并将请求路由到该实例。 -4. **动态更新**:如果服务实例的状态发生变化(例如,新的实例被添加或现有的实例失败),注册中心会通知所有监听这些变化的客户端(如API网关)。这样,网关可以实时更新其路由决策,确保请求总是被路由到健康的服务实例。 +**动态更新**:如果服务实例的状态发生变化(例如,新的实例被添加或现有的实例失败),注册中心会通知所有监听这些变化的客户端(如API网关)。这样,网关可以实时更新其路由决策,确保请求总是被路由到健康的服务实例。 -5. **负载均衡**:在得到健康的服务实例列表后,网关可以使用负载均衡算法来决定将请求路由到哪个实例。 +**负载均衡**:在得到健康的服务实例列表后,网关可以使用负载均衡算法来决定将请求路由到哪个实例。 -6. **故障转移**:如果选定的服务实例突然变得不可用,网关可以重新选择另一个健康的实例,并重新路由请求。 +**故障转移**:如果选定的服务实例突然变得不可用,网关可以重新选择另一个健康的实例,并重新路由请求。 借助注册中心和服务发现机制,API网关可以确保高可用性和弹性,即使在动态的、经常变化的微服务环境中也是如此。 @@ -74,7 +74,7 @@ API网关是一个服务器,它充当API前端和后端服务之间的中介 测试:定期进行故障注入和混沌工程实验,模拟网关故障,以确保上述策略和措施的有效性,并训练团队应对真实故障。 -使用API网关进行流量控制或限流: +> 使用API网关进行流量控制或限流 流量控制或限流是API网关中的关键功能,用于防止系统过载并确保资源的公平使用。以下是实现流量控制的常见方法: @@ -187,11 +187,9 @@ function responseTimeMiddleware(request, response, next) { ``` 这只是一个基本的示例,实际的实现可能会更复杂,特别是在异步环境中。但基本的原理是相同的:在请求的开始和结束时记录时间,然后计算差异。 -> 数据库中间件如何实现负载均衡?请描述其背后的原理。 -> 如何确保数据库中间件的高可用性? -## Java 和Go +## 2.Java 和Go Go和Java在并发方面都提供了强大的工具和特性,但它们的方法和哲学是不同的。以下是两者在并发方面的主要区别: @@ -225,8 +223,6 @@ Java: JVM进行了大量的优化,包括JIT编译、垃圾收集和线程优 Go: Go运行时直接管理goroutines的调度,这通常意味着更少的上下文切换和更高效的执行。 两者都有自己的优势。Java的并发工具库更加成熟和全面,但可能需要更多的资源。Go提供了一个简单、直接和高效的方式来处理并发,但可能需要开发者对CSP模型有更深入的理解。 -选择哪种语言通常取决于项目的具体需求和团队的熟悉程度。 - > Go的运行时会在少量的OS线程上调度这些goroutines。这里的少量的OS线程和Java线程在操作系统层面映射的本地线程有什么区别? @@ -248,7 +244,7 @@ Go: Go的运行时对线程的管理提供了很大的控制权,例如可以 Java: Java提供了对线程的低级访问,但很多细节(如线程调度)是由操作系统和JVM控制的。 总的来说,Go的并发模型主要关注轻量级、高效和可伸缩性,而Java的并发模型则依赖于操作系统的线程模型,可能需要更多的资源管理和优化。 -## SQL 请求经过中间件的过程 +## 3.SQL 请求经过中间件的过程 词法分析: 操作: 输入的SQL字符串首先会被分解成一个令牌序列。 @@ -286,7 +282,7 @@ Java: Java提供了对线程的低级访问,但很多细节(如线程调度 如何被使用: 客户端收到结果后进行相应的处理,例如展示给用户或者进一步的处理。 在整个过程中,从最初的SQL字符串到最终的查询结果,每一步都构建或使用前一步的输出来完成其工作。 -## Parser的工作原理 +## 4.Parser的工作原理 工作流程: @@ -395,7 +391,6 @@ Ports: 定义允许的端口和协议。 隔离: 当至少有一个选择Pod的网络策略存在时,该Pod被视为"隔离"的。否则,它是"非隔离"的,并且所有入站和出站流量都被允许。 - 隔离特定Pod的所有入站流量: ```yaml apiVersion: networking.k8s.io/v1 @@ -473,7 +468,7 @@ policyTypes: - Egress ``` -## 如何保证数据库中间件的高可用性? +## 5.如何保证数据库中间件的高可用性? 保证数据库中间件的高可用性是确保整个系统稳定性的关键部分。以下是一些常用的策略和方法来确保数据库中间件的高可用性: @@ -512,7 +507,7 @@ policyTypes: 通过上述策略和方法,可以大大提高数据库中间件的高可用性,确保在各种故障情况下,系统仍然可以正常运行。 -## HA 负载均衡器(如HAProxy、Nginx等)如何分发流量 +## 6.HA 负载均衡器(如HAProxy、Nginx等)如何分发流量 #### 准备工作: @@ -565,15 +560,14 @@ docker logs web2 ``` 多次运行上述命令,会看到请求在两个服务器之间进行负载均衡。 -6. 清理 +清理 完成测试后,可以停止并删除所有容器: ```shell docker stop web1 web2 haproxy docker rm web1 web2 haproxy ``` -总结 -通过上述步骤,已经成功地在本地部署了一个使用HAProxy的简单负载均衡环境,并了解了如何配置HAProxy来分发流量。在实际生产环境中,HAProxy和其他负载均衡器提供了更多高级功能和优化选项,但上述示例为提供了一个基本的了解和起点。 + diff --git a/_posts/2023-11-21-test-markdown.md b/_posts/2023-11-21-test-markdown.md new file mode 100644 index 000000000000..921efa27d424 --- /dev/null +++ b/_posts/2023-11-21-test-markdown.md @@ -0,0 +1,133 @@ +--- +layout: post +title: git-emoji 安装和配置 +subtitle: +tags: [git] +comments: true +--- + + +## 安装 + +```shell +$ sudo sh -c "curl https://raw.githubusercontent.com/mrowa44/emojify/master/emojify -o /usr/local/bin/emojify && chmod +x /usr/local/bin/emojify" +``` + +报错: +```shell +$ hello % emojify "Hey, I just :raising_hand: you, and this is :scream: , but here's my :calling: , so :telephone_receiver: me, maybe?" +Oh my! That’s a very old version of bash you’re using, we don’t support that anymore :( +Consider upgrading it or, if you must use bash 3.2.57(1)-release, download an old version of +emojify from here: https://github.com/mrowa44/emojify/blob/old_bash_support/emojify +``` + +更新: +```shell +$ brew install bash +``` + +测试: +```shell +$ emojify "Hey, I just :raising_hand: you, and this is :scream: , but here's my :calling: , so :telephone_receiver: me, maybe?" +``` + + +```shell +$ alias gitlog='git log --oneline --color | emojify | less -r' + +$ gitlog +``` +存在的问题就是每开一个终端都要执行该操作。 + + +## 交互式客户端安装 + +```shell +$ npm i -g gitmoji-cli +``` + +测试 +```shell +$ gitmoji --help +``` + +查看 emoji 列表 +```shell +$ gitmoji -l +``` + +```shell +🎨 - :art: - Improve structure / format of the code. +⚡️ - :zap: - Improve performance. +🔥 - :fire: - Remove code or files. +🐛 - :bug: - Fix a bug. +🚑️ - :ambulance: - Critical hotfix. +✨ - :sparkles: - Introduce new features. +📝 - :memo: - Add or update documentation. +🚀 - :rocket: - Deploy stuff. +💄 - :lipstick: - Add or update the UI and style files. +🎉 - :tada: - Begin a project. +✅ - :white_check_mark: - Add, update, or pass tests. +🔒️ - :lock: - Fix security or privacy issues. +🔐 - :closed_lock_with_key: - Add or update secrets. +🔖 - :bookmark: - Release / Version tags. +🚨 - :rotating_light: - Fix compiler / linter warnings. +🚧 - :construction: - Work in progress. +💚 - :green_heart: - Fix CI Build. +⬇️ - :arrow_down: - Downgrade dependencies. +⬆️ - :arrow_up: - Upgrade dependencies. +📌 - :pushpin: - Pin dependencies to specific versions. +👷 - :construction_worker: - Add or update CI build system. +📈 - :chart_with_upwards_trend: - Add or update analytics or track code. +♻️ - :recycle: - Refactor code. +➕ - :heavy_plus_sign: - Add a dependency. +➖ - :heavy_minus_sign: - Remove a dependency. +🔧 - :wrench: - Add or update configuration files. +🔨 - :hammer: - Add or update development scripts. +🌐 - :globe_with_meridians: - Internationalization and localization. +✏️ - :pencil2: - Fix typos. +💩 - :poop: - Write bad code that needs to be improved. +⏪️ - :rewind: - Revert changes. +🔀 - :twisted_rightwards_arrows: - Merge branches. +📦️ - :package: - Add or update compiled files or packages. +👽️ - :alien: - Update code due to external API changes. +🚚 - :truck: - Move or rename resources (e.g.: files, paths, routes). +📄 - :page_facing_up: - Add or update license. +💥 - :boom: - Introduce breaking changes. +🍱 - :bento: - Add or update assets. +♿️ - :wheelchair: - Improve accessibility. +💡 - :bulb: - Add or update comments in source code. +🍻 - :beers: - Write code drunkenly. +💬 - :speech_balloon: - Add or update text and literals. +🗃️ - :card_file_box: - Perform database related changes. +🔊 - :loud_sound: - Add or update logs. +🔇 - :mute: - Remove logs. +👥 - :busts_in_silhouette: - Add or update contributor(s). +🚸 - :children_crossing: - Improve user experience / usability. +🏗️ - :building_construction: - Make architectural changes. +📱 - :iphone: - Work on responsive design. +🤡 - :clown_face: - Mock things. +🥚 - :egg: - Add or update an easter egg. +🙈 - :see_no_evil: - Add or update a .gitignore file. +📸 - :camera_flash: - Add or update snapshots. +⚗️ - :alembic: - Perform experiments. +🔍️ - :mag: - Improve SEO. +🏷️ - :label: - Add or update types. +🌱 - :seedling: - Add or update seed files. +🚩 - :triangular_flag_on_post: - Add, update, or remove feature flags. +🥅 - :goal_net: - Catch errors. +💫 - :dizzy: - Add or update animations and transitions. +🗑️ - :wastebasket: - Deprecate code that needs to be cleaned up. +🛂 - :passport_control: - Work on code related to authorization, roles and permissions. +🩹 - :adhesive_bandage: - Simple fix for a non-critical issue. +🧐 - :monocle_face: - Data exploration/inspection. +⚰️ - :coffin: - Remove dead code. +🧪 - :test_tube: - Add a failing test. +👔 - :necktie: - Add or update business logic. +🩺 - :stethoscope: - Add or update healthcheck. +🧱 - :bricks: - Infrastructure related changes. +🧑‍💻 - :technologist: - Improve developer experience. +💸 - :money_with_wings: - Add sponsorships or money related infrastructure. +🧵 - :thread: - Add or update code related to multithreading or concurrency. +🦺 - :safety_vest: - Add or update code related to validation. +``` \ No newline at end of file