# 猫咪文档 > 探索技术文档和教程 ## Istio > Istio 是一个开源的服务网格平台,提供了流量管理、安全、可观察性等功能,帮助开发者更好地管理微服务架构。 - [文档说明]: 作者博客地址:: /zh/istio/README - [Istio 概述]: 似乎用上 Kubernetes ,就是微服务系统了。: /zh/istio/1.start - [部署 Istio]: 在本章中,将会介绍如何在 Kubernetes 中使用 Helm 部署 Istio。: /zh/istio/2.deploy - [快速入门]: 在本章中,我们正式迈入学习 Istio 的第一步。因为 Istio 的知识体系是较为庞大的,因此我们可以先通过本章的入门教程快速了解如何使用 Istio 部署一…: /zh/istio/3.try - [可观测性]: Istio 集成了 Jaeger、Zipkin 和 Skywalking 等链路追踪应用,能够有效地捕获服务网格的结构,展示网络拓扑结构,并分析网格的健康状况。: /zh/istio/3.1.tlm - [流量管理]: 主要演示了使用 Istio Gateway、VirtualService 对外暴露服务的访问地址 ,以及基于 Istio 实现可观察性的 Kiali 组件。让我…: /zh/istio/4.traffic - [VirtualService 和 DestinationRule]: Istio 的 VirtualService 和 Kubernetes 的 Service 都是服务治理的组件,但它们有不同的作用和关系。: /zh/istio/4.1.vs - [出入口网关]: Istio 可以管理集群的出入口流量,当客户端访问集群内的应用时, Istio 可以将经过 istio-ingressgateway 的流量实现负载均衡和熔断等…: /zh/istio/5.gateway - [金丝雀发布]: 项目总是处于不断变化之中,每次发布新的版本时,都考验了团队的运维能力。: /zh/istio/6.jsq - [认证]: 本章的内容主要是讲解服务间通讯的安全和集群外部访问内部服务的 jwt token 验证。: /zh/istio/7.safe ## Kubernetes > Kubernetes 是一个开源的容器编排平台,提供了自动化部署、扩展和管理容器化应用的功能,帮助开发者更高效地运行和管理应用。 - [文档说明]: 作者博客地址:: /zh/kubernetes/README - [导读]: 本章将会介绍 Docker 和 Kubernetes 的一些基础知识,掌握 Docker 的组成结构以及 Docker 是怎么隔离容器、隔离硬件资源的,了解为什…: /zh/kubernetes/1.basic/README - [1.1 Docker:基础]: 既然要学习 Kubernetes,相信各位读者都已经使用过 Docker 了,Docker 的入门是比较容易的,但 Docker 的网络和存储、虚拟化等技术是相…: /zh/kubernetes/1.basic/1.docker - [1.2 虚拟化]: 本章内容将讲解 虚拟化、虚拟化本质、namespace、cgroups。: /zh/kubernetes/1.basic/2.virtual - [1.3 了解 Docker 网络]: 本章将会简单地讲述 Docker 中的网络,了解 Docker 网络的模式。: /zh/kubernetes/1.basic/3.docker_network - [1.4 容器与 Pod]: 现在 Docker 的流行程度越来越高,越来越多的公司使用 Docker 打包和部署项目。但是也有很多公司只是追求新技术,将以前的单体应用直接打包为镜像,代码、…: /zh/kubernetes/1.basic/4.pod_docker - [1.5 Kubernetes 入门基础]: 我们要学习 Kubernetes,就有首先了解 Kubernetes 的技术范围、基础理论知识库等,要学习 Kubernetes,肯定要有入门过程,在这个过程中…: /zh/kubernetes/1.basic/5.k8s - [导读]: 本章内容主要是介绍、实践部署以及配置 Kubernetes 集群,如果读者的服务器环境处于国内,可能会因为网络原因无法部署 Kubernetes,建议读者使用国…: /zh/kubernetes/2.deploy/README - [2.1 使用 Minikube 部署]: Minikube 是一个创建单机 Kubernetes 集群的 工具,它可以在一台服务器上快速创建一个学习环境,单机集群也可以学习到大多数入门的 Kuberne…: /zh/kubernetes/2.deploy/1.minikube - [2.2 使用 kubeadm 部署]: 上一章中,我们用 minikube 去搭建单机集群,并且创建 Deployment、Service(在三章中讲解),本篇将介绍利用 kubeadm 部署多节点集…: /zh/kubernetes/2.deploy/2.kubeadm - [2.3 CKAD认证中的部署教程]: 在上一章中,我们已经学会了使用 kubeadm 创建集群和加入新的节点,在本章中,将按照 CKAD 课程的方法重新部署一遍,实际上官方教程的内容不多,笔者写了两…: /zh/kubernetes/2.deploy/3.kubeadm_ckad - [2.4 国内代理]: 在本章中,将会学习如果在国内服务器中拉取 Kubernetes 镜像,解决 kubeadm 网络问题。: /zh/kubernetes/2.deploy/4.kubeadm_proxy - [2.5 Dashboard]: Kubernetes-Dashboard 是一个 管理 Kubernetes 集群的 Web UI,其界面大气优雅,跟 kubectl 一样,其后端是 API-…: /zh/kubernetes/2.deploy/5.dashboard - [导读]: 部署、配置、标签选择、调度、副本、控制器、有状态的无状态的 Pod: /zh/kubernetes/3.pod/README - [3.1 Pod]: Pod 在 Kubernetes 中是最重要的对象之一,Pod 集群中创建和管理的、最小的可部署的计算单元。: /zh/kubernetes/3.pod/1.pod - [3.2 Deployment 部署]: Deployment 是 Kubernetes 提供的一种自我修复机制来解决机器故障维护的问题。: /zh/kubernetes/3.pod/2.deployment - [3.3 副本集(ReplicaSet)]: ReplicaSet 也是一种管理 Pod 的对象,跟上一章提到的 Deployment 一样,可以守护 Pod ,保证 Pod 挂了后能够恢复。: /zh/kubernetes/3.pod/3.replica - [3.4 Pod 端口映射]: 在 3.1,3.2 中,我们部署过了 Nginx 容器,使用了 --port=8080 或 containerPort: 8080 为 Pod 暴露一个端口,本…: /zh/kubernetes/3.pod/4.pod_network - [3.5 Pod 升级、回滚]: 本篇主要讨论如何实现滚动更新和回滚,任意更换版本并且回滚以前的版本(版本更新),而下一章会讨论到 Pod 缩放,根据机器资源自动拓展和收缩应用(自动扩容实例)。: /zh/kubernetes/3.pod/5.update - [3.6 Pod 缩放]: 在前面我们已经学习到了 Pod 的扩容、滚动更新等知识,我们可以手动为 Deployment 等设置 Pod 副本的数量,而这里会继续学习 关于 Pod 扩容、…: /zh/kubernetes/3.pod/6.scale - [3.7 标签]: 在前面的学习中,我们学到了 Deployment 部署,以及副本数(ReplicaSet),但是 Pod 部署到哪个 Worker 节点是随机的,即使有 3个…: /zh/kubernetes/3.pod/7.lable - [3.8 Pod 调度]: 在上一章中,我们学习了 Label,可以为对象设置标签,并且使用选择器筛选对象,本章中我们将学习节点调度的相关知识,在标签之上控制 Pod 在节点中的部署。: /zh/kubernetes/3.pod/8.schedule - [3.9 Jobs、CronJobs]: 在 Kubernetes 中,常用的工作负载/控制器,有 Deployment、ReplicaSet、StatefulSet、DaemonSet、Job、Cro…: /zh/kubernetes/3.pod/9.jobs_cronjobs - [导读]: Kubernetes 网络模型、服务与网络、服务发现、应用隔离: /zh/kubernetes/4.network/README - [4.1 Kubernetes 网络]: 本章内容主要讲解 Kubernetes 中的网络和 Service 对象,作为 Kubernetes 的核心内容, Kubernetes 网络涉及到了很多东西,…: /zh/kubernetes/4.network/1.network - [4.2 Endpoint]: 当我们为一个 Deployment 等对象创建一个 Service 时,Service 会自动创建 Endpoint。: /zh/kubernetes/4.network/2.endpoint - [4.3 ingress]: 在 4.1 章中,介绍了 Kubernetes 网络以及 Service ,当我们的服务在多台服务器上时,我们需要提供一个统一的访问点,用户只需要访问这个地址即…: /zh/kubernetes/4.network/3.ingress - [4.4 服务发现]: 服务发现、服务注册是微服务中必不可少的东西,Kubernetes 本身也提供了简单的服务发现,本章介绍如何通过 Service、DNS 等,对外暴露服务。: /zh/kubernetes/4.network/4.discovery - [导读]: 了解卷;: /zh/kubernetes/5.volumes/README - [5.1 卷]: 由于容器最初设计为临时性和无状态的,因此几乎不需要解决存储持久性问题。然而,随着越来越多需要从持久性存储读写的应用程序被容器化,对持久性存储卷的访问需求也随之出…: /zh/kubernetes/5.volumes/1.volumes - [5.2 ConfigMap和 Secret]: ConfigMap 可以用来存储非机密性的数据到键值对中,这些信息会被存储到 etcd,不会分节点,任何节点都可以使用到。使用时,将其用作环境变量、命令行参数或…: /zh/kubernetes/5.volumes/2.secret_configmap - [5.3 NFS卷]: NFS 卷,可以把它想象成云硬盘,随时可以挂载到服务器的任意目录,而且多个服务器可以同时使用这个卷。: /zh/kubernetes/5.volumes/3.nfts - [5.4 持久卷]: 开门见山,PV、PVC 将存储卷分为实际卷和声明卷两部分,面向对象语言中将抽象部分写成接口,将实现部分写成类。大概过程是这样的,运维人员可以将实际存储空间创建为…: /zh/kubernetes/5.volumes/4.pv_pvc - [导读]: 本章待写: /zh/kubernetes/6.api_safe/README - [访问集群中的 API]: https://kubernetes.io/zh/docs/tasks/access-application-cluster/access-cluster/#a…: /zh/kubernetes/6.api_safe/1.api - [鉴权]: 由于 API-Server 需要一定权限才能访问,所以实际上用户使用 kubectl 工具时,也需要权限才能执行命令。: /zh/kubernetes/6.api_safe/1.r - [导读]: 本章待写: /zh/kubernetes/7.health/README - [日志和监控工具]: https://kubernetes.io/zh/docs/tasks/debug-application-cluster/troubleshooting/: /zh/kubernetes/7.health/1.vindicate - [检查]: /zh/kubernetes/7.health/2.check - [第三方平台和工具检查及监控]: 1,使用第三方平台和工具检查以及监控: /zh/kubernetes/7.health/3.cloud - [K8S 快捷命令]: Kuberentes 提供了 kubectl explain 命令,可以帮助我们快速了解创建一个对象的 YAML 需要哪几部分内容。例如创建 Pod 的 YAM…: /zh/kubernetes/k8s - [CKAD 考试帮助]: 考试课程包括这些一般领域及其在考试中的权重:: /zh/kubernetes/ckad - [技巧与提示]: 'dG' - 删除从当前位置到文件末尾的内容。: /zh/kubernetes/jiqiao ## Maomi 开发框架 > Maomi 框架是一个简单的、简洁的开发框架,除了框架本身提供的功能之外,Maomi 还作为一个易于阅读的开源项目,能够给开发者提供设计框架的思路和代码。 - [文档说明]: 作者博客地址:: /zh/maomi_framework/README - [模块化、自动服务注册]: Maomi.Core 是一个模块化和自动服务注册包,以简单和便捷的方式实现项目模块化和注册服务配置。Maomi.Core 是一个很简洁的包,可以在控制台、Web…: /zh/maomi_framework/start/1.module - [i18n 多语言支持]: 随着业务的国际化,为了满足不同客户群体的需要,软件产品需要支持多种语言,根据用户选择的语言呈现不同语言的界面。ASP.NET Core 或 ABP 等框架都提供…: /zh/maomi_framework/start/2.i18n - [Swagger 定制]: Web 项目中 Swagger 是必不可少的,但是在项目越来越复杂、API 接口越来越多、微服务下多路由地址调试等因素影响下,Swagger 的管理会变得越来越…: /zh/maomi_framework/start/3.swagger - [模块化和自动服务注册]: 基于 ASP.NET Core 开发的 Web 框架中,最著名的是 ABP,ABP 主要特点之一开发不同项目(程序集)时,在每个项目中创建一个模块类,程序加载每…: /zh/maomi_framework/1.module - [模块化和自动服务注册的设计和实现]: 在本小节中,我们将会开始设计一个支持模块化和自动服务注册的小框架,从设计和实现 Maomi.Core 开始,我们在后面的章节中会掌握更多框架技术的设计思路和实现…: /zh/maomi_framework/2.design_module - [故障排查和日志]: .NET 程序进行故障排查的方式有很多,笔者个人总结常用的有以下方式:: /zh/maomi_framework/3.0.gz_log - [自定义开发日志框架]: 进行本章的学习时,请使用 learn 分支。: /zh/maomi_framework/3.1.design_log - [.NET 日志使用技巧]: Serilog 是 .NET 社区中使用最广泛的日志框架,所以在日志部分,笔者将会围绕 Serilog 讲解其使用方法以及如何解决项目的日志需求。: /zh/maomi_framework/3.2.serilog - [开发 .NET 诊断工具]: 在 System.Diagnostics Microsoft.Diagnostics 命名空间中的接口用于诊断 .NET 程序,里面涉及到很多诊断技术,由于个人…: /zh/maomi_framework/3.3.diagostics - [配置和选项]: ASP.NET Core 模板项目下会有 appsettings.json、appsettings.Development.json 两个配置文件,我们可以通过…: /zh/maomi_framework/4.pz - [.NET 中的序列化和反序列化]: 在 ASP.NET Core 应用中,框架会屏蔽了很多实现序列化和反序列化的细节,我们只需要定义参数模型,ASP.NET Core 会自动将 http 请求的…: /zh/maomi_framework/5.xlh - [多语言]: 随着业务的国际化,为了满足不同客户群体的需要,软件产品需要支持多种语言,根据用户选择的语言呈现不同语言的界面。ASP.NET Core 或 ABP 等框架都提供…: /zh/maomi_framework/6.i18n - [http 应用开发]: 随着云计算的发展,微服务架构已经成为了许多项目的首选,各个子服务必须协同工作才能对用户提供完整的功能,这就使得子服务间的通信成为开发工作的重要环节。作为网络通讯…: /zh/maomi_framework/7.http - [事件总线框架的设计]: 事件总线常常作为软件开发中解耦各个组件通讯的工具。在领域驱动设计的开发过程中,由于系统存在多个模块,为了避免各个模块的函数直接进行调用,使用事件总线作为媒介进行…: /zh/maomi_framework/8.event - [动态代码]: C# 中实现动态代码的方式有很多,比如 反射、表达式树、EMIT、Roslyn、Source Generators 等,C# 各类框架中几乎都有动态代码技术的使…: /zh/maomi_framework/9.dt - [Web 框架定制开发]: Web 开发是 .NET 最广泛使用的场景之一,现在越来越多的企业 Web 开发业务系统采用 ASP.NET Core 或第三方框架如 ABP 等进行开发,这些…: /zh/maomi_framework/10.web - [对象映射框架]: 注:本项目用于教学目的,性能较差,请勿用于生产环境。: /zh/maomi_framework/11.mapper ## Maomi.MQ > Maomi.MQ 是基于消息队列实现的客户端消息组件,提供了可靠的消息传递、灵活的路由和高可用性,帮助开发者构建分布式应用和微服务架构。 - [文档说明]: 作者博客地址:: /zh/maomi_mq/README - [快速开始]: 在本篇教程中,将介绍 Maomi.MQ.RabbitMQ 的使用方法,以便读者能够快速了解该框架的使用方式和特点。: /zh/maomi_mq/1.start - [消息发布者]: Maomi.MQ 通过 IMessagePublisher 向开发者提供消息推送服务。: /zh/maomi_mq/2.publisher - [消费者]: Maomi.MQ 的消费者很灵活,可以随时扩展出不同的工作模式,本身已经支持了普通消费者、事件总线编排、MediatR、FastEndpoints 等工作模式,…: /zh/maomi_mq/2.0.consumer - [普通消费者模式]: 消费者模式要求服务实现 IConsumer 接口,消费者服务的注册方式有三种。: /zh/maomi_mq/2.1.consumer - [基于事件]: Maomi.MQ 内部设计了一个事件总线,可以帮助开发者实现事件编排、实现本地事务、正向执行和补偿。: /zh/maomi_mq/2.2.eventbus - [自定义消费者和动态订阅]: 主要实现了两部分的功能。: /zh/maomi_mq/2.3.dynamic - [配置]: 在引入 Maomi.MQ 框架时,可以配置相关属性,示例和说明如下:: /zh/maomi_mq/3.configuration - [Qos 并发和顺序]: 基于消费者模式和基于事件模式都是通过特性来配置消费属性,Qos 是其中一个重要的属性,Qos 默认值为 100,Qos 配置指的是一次允许消费者接收多少条未确认…: /zh/maomi_mq/4.qos - [重试]: 当消费者 ExecuteAsync 方法异常时,框架会进行重试,默认会重试三次,按照 2 作为指数设置重试时间间隔。: /zh/maomi_mq/5.retry - [死信队列]: 可以给一个消费者或事件绑定死信队列,当该队列的消息失败后并且不会放回队列时,该消息会被推送到死信队列中,示例:: /zh/maomi_mq/6.dead_queue - [可观测性]: 请参考 ActivitySourceApi 、OpenTelemetryConsole 示例。: /zh/maomi_mq/7.opentelemetry - [本地事务消息(Outbox + Inbox Barrier)完整指南]: 在业务系统里,“写数据库 + 发 MQ”是最常见的组合之一,也是最容易在故障场景里出问题的组合之一。: /zh/maomi_mq/8.transcation - [序列化与反序列化]: 在 Maomi.MQ 里,消息体最终都是 byte[]。序列化器的作用不是“可有可无”,它会直接影响:: /zh/maomi_mq/9.serializer - [支持 MediatR / FastEndpoints]: Maomi.MQ 支持通过 MediatR 和 FastEndpoints 两种应用层框架接入消息队列。: /zh/maomi_mq/10.other_support ## Kafka > Learn Kafka 是一个学习 Kafka 的示例项目,帮助开发者理解和掌握 Kafka 的使用和原理。 - [文档说明]: 在线阅读:: /zh/learnkafka/README - [搭建 Kafka 环境]: 本章的内容比较简单,我们将使用 Docker 快速部署一个单节点的 Kafka 或 Kafka 集群,在后面的章节中,将会使用已经部署好的 Kafka 实例做实…: /zh/learnkafka/1.install - [Kafka 概念]: 在本章中,笔者会介绍 Kafka 的一些基本概念,文中的内容是笔者个人理解总结,可能会有错误或其它问题,如有疑问,欢迎指出。: /zh/learnkafka/2.kafka_base - [Kafka .NET 基础]: 在第一章中,笔者介绍了如何部署 Kafka;在第二章中,笔者介绍了 Kafka 的一些基础知识;在本章中,笔者将介绍如何使用 C# 编写程序连接 kafka,完…: /zh/learnkafka/3.csharp_base - [生产者]: 在第三章中,我们学习到了 Kafka C# 客户端的一些使用方法,学习了如何编写生产者程序。: /zh/learnkafka/4.producer - [消费者]: 在第四章中的生产者中,介绍了比较多的生产者特性,而消费者很多特性跟生产者是一样的,因此本章简单介绍消费者程序的编写方式和一些问题的解决方法,不再过多介绍消费者的…: /zh/learnkafka/5.consumer ## C# 多线程 > C# 线程编程是一个关于多线程和并发编程的示例项目,帮助开发者理解和掌握 C# 中的线程管理和同步机制。 - [文档说明]: 作者博客地址:: /zh/threads/README - [导读]: 在本章中,将会介绍线程的基础使用方法、线程模型、和线程池,这些都是了解 C# 多线程的基础。: /zh/threads/1.thread_basic/README - [1.1 Thread 基础]: 在 C# 中,是使用 Thread 类来创建以及管理线程的,通过这种方式创建的线程称为托管线程,因为它归 CLR 管理,需要 GC 分配和回收内存空间, Thr…: /zh/threads/1.thread_basic/1.thread - [1.2 .NET 多线程模型]: 在第一章中,我们学习了 Thread 类,它是 C# 使用多线程能力的基础,在本章笔者将会从源码角度中解析 C# 的 Thread,而多线程编程属于并发编程,会…: /zh/threads/1.thread_basic/2.thread_model - [1.3 线程池]: 线程池注入和爬山算法 https://mattwarren.org/2017/04/13/The-CLR-Thread-Pool-Thread-Injectio…: /zh/threads/1.thread_basic/3.pool - [导读]: 同步(synchronization)是指协调并发操作,得到可以预测的结果的行为。同步在多个线程访问相同的数据时显得尤为重要,但这种操作很容易出现问题。最简单实…: /zh/threads/2.thread_sync/README - [2.1 原子操作 Interlocked]: 本章主要讲述多线程竞争下的原子操作。: /zh/threads/2.thread_sync/1.interlocked - [2.2 Locker 和 Monitor 排他锁]: C# 中,可以使用 lock 关键字和 Monitor 类来解决多线程锁定资源和死锁的问题。: /zh/threads/2.thread_sync/2.locker_monitor - [2.3 进程互斥锁 Mutex(排他锁)]: Mutex 中文为互斥,Mutex 类叫做互斥锁。它还可用于进程间同步的同步基元。Mutex 跟 lock 相似,但是 Mutex 支持多个进程,Mutex 大…: /zh/threads/2.thread_sync/3.mutex - [2.4 非排他锁 Semaphore]: 在本章中,将学 Semaphore 和 SemaphoreSlim,两者都可以限制同时访问某一资源或资源池的线程数,实现并发时限制具体数量的线程进行并发操作。与…: /zh/threads/2.thread_sync/4.semaphore - [2.5 自动线程通知 AutoResetEvent]: 回顾一下,前面 lock、Monitor 部分我们学习了线程锁,Mutex 部分学习了进程同步,Semaphor 部分学习了资源池限制。: /zh/threads/2.thread_sync/5.autorestevent - [2.6 手动线程通知 ManualResetEvent]: AutoResetEvent 和 ManualResetEvent 十分相似。两者之间的区别,在于前者是自动(Auto),后者是手动(Manua)。: /zh/threads/2.thread_sync/6.manualresetevent - [2.7 线程完成数 CountdownEvent]: 假如,程序需要向一个 Web 发送 5 次请求,受网路波动影响,有一定几率请求失败。如果失败了,就需要重试。: /zh/threads/2.thread_sync/7.countdownevent - [2.8 并行协调 Barrier]: 这一篇,我们将学习用于实现并行任务、使得多个线程有序同步完成多个阶段的任务。: /zh/threads/2.thread_sync/8.barrier - [2.9 读写锁 ReaderWriterLock]: ReaderWriterLock、ReaderWriterLockSlim 都是 C# 中设置读写锁的手段,本篇的内容主要是介绍 ReaderWriterLoc…: /zh/threads/2.thread_sync/9.reader_writer_lock - [2.10 自旋 SpinWait]: 自旋和阻塞的区别自旋与阻塞有一些细微的差别。首先,非常短暂的自旋在条件可以很快得到满足的场景(例如几微秒)下是非常高效的,因为它避免了上下文切换带来的延迟和开销…: /zh/threads/2.thread_sync/10.spinwait - [导读]: 笔者写这个系列的文章,参考了 《C# 7.0 核心技术指南》、《C# 7.0 本质论》、《C# 多线程编程实战(原书第二版)》、微软文档和 Google 的资料…: /zh/threads/3.task/README - [3.1 任务基础 1]: .NET 中,有三种异步编程模式,分别是基于任务的异步模式(TAP)、基于事件的异步模式(EAP)、异步编程模式(APM)。: /zh/threads/3.task/1.task1 - [3.2 任务基础 2]: 上一篇,我们学习了任务的基础,学会多种方式场景任务和执行,异步获取返回结果等。上一篇讲述的知识比较多,这一篇只要是代码实践和示例操作。: /zh/threads/3.task/2.task2 - [3.3 任务基础 3]: 任务基础一共三篇,本篇是第三篇,之后开始学习异步编程、并发、异步I/O的知识。: /zh/threads/3.task/3.task3 - [3.4 实现一个任务流程]: 前面学习了很多多线程和任务的基础知识,这里要来实践一下啦。通过本篇教程,你可以写出一个简单的工作流引擎。: /zh/threads/3.task/4.workflow - [3.5 async 和 await]: 扯淡了 这么多 篇,这篇终于开始学习 async 和 await 了。在前面我们已经学会了 Task 的各种 API,有了前面的基础,来理解 async 和 a…: /zh/threads/3.task/5.async_await - [3.6 ValueTask]: ValueTask/ValueTask 出现时间其实比较早的了,之前一直没有深入,借此机会好好学习一番。: /zh/threads/3.task/6.value_task - [3.7 使用 TaskCompletionSource 异步状态机编写 Redis 客户端]: [TOC]: /zh/threads/3.task/7.redis - [3.8 编写异步状态机]: 在前面,笔者强调过很多次,async、await 只是语法糖,当 .NET SDK 编译 C# 代码时,async、await 会被转换为对应的代码,然后再编译…: /zh/threads/3.task/8.async_state - [3.9 自定义任务调度]: /zh/threads/3.task/9.task_scheduler ## C# 反射 > C# 反射机制是一个关于反射和动态类型的示例项目,帮助开发者理解和掌握 C# 中的反射机制和动态类型的使用。 - [文档说明]: 作者博客地址:: /zh/csharp_reflect/README - [1. 反射基础]: 在 《C# 7.0 本质论》中,关于这方面的知识在 《第十八章 反射、特性和动态编程》;在《C# 7.0 核心技术指南》中,这部分内容在《第19章 反射和元数据…: /zh/csharp_reflect/1.base - [2. 探究反射]: 在上一章中,我们探究了 C# 引入程序集的各种方法,这一章节笔者将探究 C# 中使用反射的各种操作和代码实践。: /zh/csharp_reflect/2.to2 - [3. 反射类型的成员]: 上一篇文章中,介绍如何获取 Type 类型,Type 类型是反射的基础。: /zh/csharp_reflect/3.to3 - [4. 实例化类型]: 前面三篇文章,介绍了使用程序集、获取 Type 类型、使用 Type 类型获取成员信息。: /zh/csharp_reflect/4.to4 - [5. 类型成员操作]: 前面三篇中,介绍了反射的基本内容和信息对象,反射主要作用于构造函数、属性、字段、方法、事件等类型成员对象;第四篇介绍了类型的实例化和事件操作。: /zh/csharp_reflect/5.to5 - [6. 设计一个简单的 Web]: 从前面第四篇开始,进入了实践练习;第五篇实现了实例化一个类型以及对成员方法等的调用。当然,还有一些操作尚将在后面的章节进行介绍。: /zh/csharp_reflect/6.to6 - [7. 自定义特性及其应用]: 本章的内容,主要是对属性和字段进行赋值和读值、自定义特性、将特性应用到实际场景。: /zh/csharp_reflect/7.to7 - [8. 反射操作进阶]: 《C# 反射与特性》已经完成了七篇,讲解了反射的使用和实践应用,第六和第七篇对反射特性等进行了实践总结练习,学习完毕后,可以对一般的实际场景进行应用,解决问题。: /zh/csharp_reflect/8.to8 - [9. 深入反射与运用]: 本篇主要研究类型、类型成员的各种信息和标识,通过反射的操作将信息解析出来,通过实际需求,学会运用反射获得需要的信息。: /zh/csharp_reflect/9.to9 - [10. Emit 入门]: 前面,本系列一共写了 九 篇关于反射和特性相关的文章,讲解了如何从程序集中通过反射将信息解析出来,以及实例化类型。: /zh/csharp_reflect/10.to10 ## C# 表达式树 > C# 表达式树是一个关于表达式树和动态代码生成的示例项目,帮助开发者理解和掌握 C# 中的表达式树和动态代码生成的使用。 - [文档说明]: 作者博客地址:: /zh/cs_expression/README - [1. 表达式树基础]: 在本章中,将会讲解表达式树的基础知识,快速入门表达式树。: /zh/cs_expression/1.base - [2. 入门基础]: [TOC]: /zh/cs_expression/2.start - [3. 变量、常量与赋值]: ParameterExpression 用来创建变量、变量参数表达式。: /zh/cs_expression/3.var - [4. 运算符]: [TOC]: /zh/cs_expression/4.operator - [5. 判断语句]: [TOC]: /zh/cs_expression/5.judge - [6. 循环]: [TOC]: /zh/cs_expression/6.for - [7. 值类型、引用类型、泛型、集合、调用函数]: [TOC]: /zh/cs_expression/7.type ## C# 深度学习 > 使用 C# 入门深度学习与 TorchSharp 的教程,涵盖数学基础、神经网络、计算机视觉等内容。 - [文档说明]: 作者博客地址:: /zh/cs_pytorch/README - [导读]: 《深度学习的数学》: /zh/cs_pytorch/01.base/README - [1.1 环境配置]: 学习模型开发时,搭建环境可能会碰到很多曲折,这里提供一些通用的环境搭建安装方法,以便读者能够快速搭建出一套 AI 模型开发调试环境。: /zh/cs_pytorch/01.base/01.env - [1.2 PyTorch 基础]: 本文内容介绍 Pytorcn 的基础 API,主要是数组的创建方式和运算方式,由于相关内容跟 Numpy 比较相似,并且 Numpy 类型可以转 torch.T…: /zh/cs_pytorch/01.base/02.base - [1.3 线性代数]: 笔者只能给出大体的概念,至于数学上的具体定义,这里就不展开了。: /zh/cs_pytorch/01.base/03.linear - [1.4 微积分]: 由于学习微积分需要一定的基础知识,但是由于本教程不是数学书,所以不能一一详细介绍基础知识,读者需要自行了解学习初等函数、三角函数等基础知识。: /zh/cs_pytorch/01.base/04.higher - [1.5 概率论]: 大家都知道学习 Pytorch 或 AI 需要一定的数学基础,当然也不需要太高,只需要掌握一些基础知识和求解方法,常见需要的数学基础有线性代数、微积分、概率论等…: /zh/cs_pytorch/01.base/05.odds - [导读]: 在第二部分中,将会介绍神经网络基础知识、开始进行模型训练、模型保存加载等,读者通过第二部分的学习,对深度学习框架的使用有初步的了解,掌握网络的定义和模型的训练、…: /zh/cs_pytorch/02.start/README - [2.1 神经网络基础知识]: 在本章中,我们将来学习各种基础知识,连接神经网络的一些知识点,将数学和神经网络模型串联起来,为后面学习神经网络编程和模型训练打好基础。: /zh/cs_pytorch/02.start/01.neural_network - [2.2 开始使用 Torch]: 本章内容主要基于 Pytorch 官方入门教程编写,使用 C# 代码代替 Python,主要内容包括处理数据、创建模型、优化模型参数、保存模型、加载模型,读者通…: /zh/cs_pytorch/02.start/02.start_torch - [2.3 使用 Torch 训练模型]: 本章主要参考《破解深度学习》的第四章,在本章将会实现一个数字分类器,主要包括数据加载和处理、模型训练和保存、预训练模型加载,但是内容跟 开始使用 Torch 一…: /zh/cs_pytorch/02.start/03.xl - [2.4 使用预训练模型]: 本章主要参考 《深度学习实战》(伊莱史蒂文斯) 中的示例,使用 resnet101 网络模型加载预训练的模型,识别图片中的动物。: /zh/cs_pytorch/02.start/04.models - [导读]: 主要内容:: /zh/cs_pytorch/03.image/README - [3.1 通过生成对抗网络训练和生成头像]: [TOC]: /zh/cs_pytorch/03.image/dcgan_faces_tutorial - [3.2 图像分类 | VGG]: 本文主要讲解用于大规模图像识别的超深度卷积网络 VGG,通过 VGG 实现自有数据集进行图像分类训练模型和识别,VGG 有 vgg11、vgg11bn、vgg1…: /zh/cs_pytorch/03.image/vgg - [3.3 FRCNN]: COCO数据集是一个大型的、丰富的物体检测,分割和字幕数据集。这个数据集以scene understanding为目标,主要从复杂的日常场景中截取,图像中的目标…: /zh/cs_pytorch/03.image/frcnn - [导读]: /zh/cs_pytorch/04.nlp/README - [说明]: 这里是一些未整理的内容.: /zh/cs_pytorch/other/README - [Read the categories]: 使用 ML.NET 启动模型: /zh/cs_pytorch/other/0.2 ## MaomiAgent > MaomiAgent 是一个个人桌面智能助手,支持 AI 对话、工作区、模型、智能体、技能、MCP、任务、日志和外部渠道接入。 - [文档说明]: MaomiAgent 是一款个人桌面超级智能体系统,不仅仅是写代码,无论你是程序员还是产品经理,还是白领,MaomiAgent 都可以提升你的工作效率。: /zh/maomiagent/README - [快速上手]: 工作区是 MaomiAgent 的基础单位,你可以把它理解成 “AI 和工具要围绕哪个本地目录工作”,一般一个项目对应一个工作区,这样可以把 AI 限制在这个目…: /zh/maomiagent/01.quick_start - [产品简介]: MaomiAgent 是一个个人桌面智能助手。它把 AI 对话、工作区、模型、智能体、技能、MCP、日志以及外部接入能力放在同一个桌面程序里,适合围绕本地文件、…: /zh/maomiagent/02.intro - [工作区]: 工作区页负责管理 MaomiAgent 的本地工作目录。你可以在这里建立多个工作区,用名称、备注和标签区分不同用途,再按需要置顶、编辑或删除。: /zh/maomiagent/03.workspace - [模型]: 模型页用来管理 MaomiAgent 可调用的模型渠道,这里只负责“模型从哪里来、哪些模型可选、渠道是否启用”,真正发起对话仍然在 AI 对话 页面完成。: /zh/maomiagent/04.models - [AI 对话]: AI 对话页是 MaomiAgent 最常用的页面。多数时候,你会在这里完成三件事:提出任务、查看 AI 的执行过程、检查文件或改动结果。真正好用的地方,不只是…: /zh/maomiagent/05.chat - [AI 浏览器]: AI 浏览器暂时未完成。: /zh/maomiagent/06.browser - [Git]: Git 页用于查看当前工作区的 Git 状态,并把常见的代码仓库操作集中到同一个页面里。这里通常会先选择工作区,然后在 变更、分支、AI审查代码 三个标签页之间…: /zh/maomiagent/07.git - [智能体]: 智能体页不是给开发者看的“配置后台”,而是给使用者整理 AI 工作方式的页面。你在 05.chat.md 底部选择的智能体,来源就是这里。: /zh/maomiagent/08.agents - [MCP]: MCP 页是 MaomiAgent 的“外部能力接入页”。: /zh/maomiagent/09.mcp - [技能]: 技能页是“让 AI 学会额外做事”的页面。: /zh/maomiagent/10.skills - [飞书]: 飞书模块有接入飞书机器人和飞书智能助手两大部分。: /zh/maomiagent/11.feishu - [微信]: 微信模块支持多微信接入,也就是说你可以跟其他人一起通过微信使用 MaomiAgent,每个用户都有其默认工作区。: /zh/maomiagent/12.wechat - [日志]: 日志页是排查问题时最直接的页面。你可以在这里按模块、级别、时间范围和关键字筛选运行日志,并打开单条日志详情查看上下文信息。: /zh/maomiagent/13.logs - [设置]: 设置页集中放置桌面偏好、标题栏菜单和运行时信息。它更偏向个人桌面程序的使用习惯设置,而不是业务功能页。: /zh/maomiagent/14.settings ## 相关链接 - [GitHub](https://github.com/whuanle) - [博客](https://www.whuanle.cn) - [AnyAi](https://anyai.wiki)