当前位置: 首页 > news >正文

华为CSE框架的一些知识点

目录

  • 一. 项目中注解使用说明:
    • 1.1 @RestController
    • 1.2 @Controller
    • 1.3 @Validated
    • 1.4 @RequestMapping=@RequestMapping(method=RequestMethod.)
    • 1.5 元注解(注解注解的注解)
    • 1.6 @Value()
    • 1.7 @RpcReference:
    • 1.8 标注组件的注解
    • 1.9 @Mapper
  • 二. 项目中的层次结构
  • 三. 项目中的配置模式:
  • 四. 启动项目遇到的问题
  • 五. Spring中的JavaBean
    • 5.1 AOP:切面编程技术
    • 5.2 IOC :控制反转
    • 5.3 Spring中的JavaBean
  • 六. 微服务框架涉及的概念
    • 6.1. 服务器(TomCat和Apache)
    • 6.2. Jsp和Servlet概念?
    • 6.3. 服务器和浏览器的区别?
    • 6.4. RPC
  • 6.5. API网关
  • 6.6. Token验证机制
  • 6.7. 微服务之间的通信方式
  • 七. 微服务框架的种类介绍与对比
    • 7.1. 什么是微服务?
    • 7.2. 微服务与之前的单体架构区别
    • 7.3. 微服务的本质
    • 7.4. 微服务的应用场景
    • 7.5. 微服务的优缺点:
    • 7.6. 微服务的开发框架:
    • 7.7. ServiceComb与Spring Cloud的区别:
  • 八. 微服务框架内部工作原理
    • 8.1. 客户端如何访问这些服务?
    • 8.2. 微服务之间是怎么通信的?(服务之间的相互调用)
    • 8.3. 这么多服务怎么进行查找(服务发现)
    • 8.4. 服务挂了怎么办?
  • 九. 微服务需要考虑的问题?
    • 9.1 API Gateway:
    • 9.2 负载均衡:
    • 9.3 容错:
    • 9.4 熔断:
    • 9.5 限流和降级:

一. 项目中注解使用说明:

1.1 @RestController

1) 作用:使用该注解,目的是修改返回的数据格式, 会以json和xml数据格式表示,而不是视图表示。
2) 作用对象: 是在类上面的注解,相当于结合了@Controller和 @ResponseBody。需要哪个方法返回json数据格式,就在哪个方法上使用。

1.2 @Controller

1) 作用:返回以视图形式给出,所以需要给予模板,分为三步走:
(1):引入依赖:方便使用thymeleaf,spring boot startere thymeleaf
(2):修改Controller控制层:对类加上注解@Controller,在方法里书写请求方式与路径。
(3)Thymeleaf使用模板的步骤

1.3 @Validated

工作中,我们首先必须对方法传递过来的参数进行合法性校验,如果参数不合法,那么我们就使用抛异常的方式,告知方法的调用者传递的参数有问题。
这也是Validated/Valid数据校验的本质。
1) 前端
在前台页面中用js校验填写在表单中的参数是否合法。
2) 后端
(1)Controller层:校验前台页面提交过来的参数的合法性
(2)Service层:校验service接口中使用的参数
(3)Dao层:一般不用校验
@Valid和@Validated都有数据校验功能,区别在于

1.4 @RequestMapping=@RequestMapping(method=RequestMethod.)

1)@GetMapping=@RequestMapping(method = RequestMethod.GET);
2)@PostMapping=@RequestMapping(method = RequestMethod.POST);
3)类似注解组合:@PutMapping、@DeleteMapping、@PatchMapping
4 )关系:@RequestMapping相当于父亲,其他相当于儿子哦,父亲包含内容更广,儿子包含内容更细。
5)作用:用来记性说明浏览器与服务器之间的数据传递。

1.5 元注解(注解注解的注解)

@Target和@Retention
1) 作用对象:@Target({ElementType.TYPE, ElementType.METHOD})
2) 作用时间:@Retention(RetentionPolicy.RUNTIME)

1.6 @Value()

从配置文件中获取属性值。
例子:@Value(“${name}”)
还有获取方式如:Environment和@ConfigurationProperties

1.7 @RpcReference:

是CSE提供的用于rpc调用的注解。通过这个注解可以实现通过rpc的方式调用别的微服务,而不用感知要调用的微服务在哪里,address是什么。有点类似于@AutoWired,相当于说明调用哪一个远程过程调用,其中包含两个参数用于指定。在每一个服务里面,都有一个包rpc.provider,用于配置好rpc服务,供其他服务进行调用。

1.8 标注组件的注解

1)@Service用于标注业务层组件
2)@Controller用于标注控制层组件(如struts中的action)
/GetMapping,PostMapping;返回的是网页的话,开头一定有(@RestController和@ResposeBody)
3)@Repository用于标注数据访问组件,即DAO组件(接口用@Mapper,实现类用@Repository)
4)@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

注入对象
@AutoWired:被修饰的类需要注入对象到AOP容器中。

1.9 @Mapper

1) 这个是Mybatis的注解,标注在Dao层,Dao层书写的是Mapper文件,里面有SQL语句,如果不进行标注,那么Mybatis就不能够识别出来了。
2) 与Repository的区别:这两个注解都是用来标注Dao层,Repository是Spring的注解,用来声明Dao层的bean,类的注入。

二. 项目中的层次结构

Model:模型,可以是数据本身,纯数据的集合。
Util:工具方法,主要存取与业务无关的方法,可以在业务中进行调用
Service:业务层,负责业务逻辑处理,可以调用多个Util.
Dao:持久层,主要管是数据库的交互,进行增删改查
Controller:表现层,接受客户的请求,向客户端响应结果
Entity:实体类,比如一些表单,数据表的建立,功能是指向一个包含很多数据的对象。一个表,也实体类

三. 项目中的配置模式:

DEV Development :研发环境
SIT System Integrate Test :系统集成测试环境(内测)
UAT User Acceptance Test :用户验收测试环境

四. 启动项目遇到的问题

1) 首先是Maven的基础配置有没有配好,包括忽略安全认证,有runner和importing两个(-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true)和设置Mavenb本地库的安装位置(setting值和repository的位置)。
2) 遇到问题在网上搜索,一定是能够搜索得到结果的,耐心一点。

五. Spring中的JavaBean

5.1 AOP:切面编程技术

1) 作用:多个逻辑业务中可能同时存在一些相同的代码,比如日志记录,权限验证和事物控制,只有业务逻辑处理代码是独特的,故面向切面编程技术能够使得代码简化。
2) 效果图:使用面向切边编程前后对比图

3) 使用原理:

采用的是Java的动态代理和反射机制。
AOP容器会动态创建一个代理对象给使用者使用,代理对象已经将切面成功切入到目标方法的连接点上,从而切面的功能和业务逻辑的功能得以同时执行。
4) 概念:

切面:共有的功能实现,日志切面,权限切面和事务切面。普通的java类,能够被AOP容器识别为切面,在配置中指定。

5.2 IOC :控制反转

1) 定义:Inversion of Control控制反转
2) 理论背景:面向对象设计的软件系统中,底层是由N个对象构成的,各个对象之间通过相互的合作,最终实现系统地逻辑业务。对象之间相互耦合,由错综复杂的关系,常常发生牵一发而动全身的事情。

3) 作用:IOC的作用就是对对象之间进行解耦。借助第三方实现具有依赖关系的对象之间的解耦,其中第三方即为IOC容器(通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦)

4) 使用前后对比:

使用前:对象A依赖于对象B,当对象A需要使用对象B的部分时,需要主动去创建对象B或者使用现有的对象B,控制权在自己手上(选择创建对象)
使用后:对象A和对象B已经不存在联系了,但是都和第三方有联系,且这个时候对象之间已经不拥有创建对象能力了,把创建的权利全部交给第三方IOC容器。
5) IOC的优缺点

优点:灵活性高(可独立开发),可读性强(解耦了,代码更加简洁),可测试性好(解耦了,可独立测试)
缺点: 性能会差些(IOC通过反射生成对象,存在性能损耗 ),会多出步骤来;需要进行额外的配置工作。

5.3 Spring中的JavaBean

1) Bean是什么?

Bean相当于定义一个组件,这个组件用于实现某个功能。它提供了一个简洁的方法来调用这个组件实现你要完成的功能。
Bean可以看做是类的代理或者代言人(实际上确实是通过反射和代理来实现类的),能够代表类,拥有该拥有的东西。
凡是子类或者带有方法或者属性的类,都必须要加上注册Bean到Spring IoC的注解(包括@Component(所有) , @Repository (持久层), @ Controller (业务层), @Service(业务层),@Controller(表现层) 和@Configration(本质上还是@Component,只是多了些特殊要求,会为其生成CGLIB代理Class))
2) 与注入bean相关的注解

@Component(@Controller、@Service、@Repository):自动创建一个实例并装配到Spring的IoC容器中
@Configration:本质上是@Component,多了一个功能会为其生成CGLIB代理Class)
@Bean:手动创建一个实例,并且保留在IOC中,麻烦一点,但是自定义性更强,在引用第三方库的时候,需要@Bean来实现。(代码回调函数就是这么操作的)
@Autowired:注入,Spring的AoP中已经有实例了(注入过),通过@Autowired只是提取一下,给我一个该类的实例。(@Autowired与前三者配合使用)
六. CSE微服务框架
CSE: Cloud Service Engine,微服务引擎,包括微服务SDK,服务中心,配置中心,治理中心,帮助实现微服务应用的快速构建,实时监控和高可用。
CSE的架构图:

CSE的优缺点
1) 优点:分而治之,可伸缩,迭代周期短,独立部署,独立开发
2) 缺点:可维护性差,开发难度大,分布式事务的支持
CSE和SpringCloud的区别:
CSE更加成熟,功能更加齐全。

六. 微服务框架涉及的概念

6.1. 服务器(TomCat和Apache)

TomCat服务器:一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,是开发和调试JSP 程序的首选。支持动态页面展示,利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的。
Apache服务器:Apache是普通Web服务器,只支持html(静态网页),通过插件支持PHP,可以与Tomcat连通(Apache单向连接Tomcat,通过Apache可以访问Tomcat资源,反之不然)。
区别:Apache是TomCat的前辈,性能更好些,但是功能少些。TomCat支持动态页面展示,而Apache仅仅支持静态页面,且只能用C语言。

6.2. Jsp和Servlet概念?

Servlet: 是Java Servlet的简称,为小服务程序或者服务连接器,用Java编写的服务端程序,主要功能是交互式地浏览和修改数据,生成动态的Web内容。
(1):接收用户端发来的请求
(2):调用其他java程序来处理请求
(3):将处理结果,返回到服务器中

Jsp:是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码,Java server pages,即Java服务器页面,JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。是运行在服务器的前端

区别:
(1) Jsp第一次运行的时候会编译为Servlet,驻留在内存中调用;其他时刻Jsp和Servlet没有区别。
(2) Jsp是Web开发技术,Servlet是服务器端运用的小程序。访问一个JSP页面的时候,服务器会将这个jsp页面转化为servlet小程序,运行得到结果后,会反馈给用户端的浏览器。(servlet相当于控制层调用响应的JavaBeanshi处理数据,最后把结果返还给jsp)
(3) JSP更多的是页面的展示,而Servlet更多的是业务的处理,即JSP是页面,Servlet是JSP的实现方法。JSP侧重于视图,Servlet主要用于控制逻辑
(4) Servlet完全可以替代JSP,但是由于用Servlet开发界面非常困难,所以开发了JSP。
(5) Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。 而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。

6.3. 服务器和浏览器的区别?

面向的对象不一样:浏览器是面向网站使用者的,而服务器是网站管理者使用的。

6.4. RPC

1) 定义:RPC全称为Remote Procedure Call,远程过程调用,满足分布式系统框架中不同的系统之间的远程通信和相互调用。

2) 功能:分布式系统中,服务之间的远程通信;本地过程调用的服务都在一个主机上,而远程过程调用不在一个主机上。但是通过RPC可以使得程序员不用考虑底层的通信问题,而像本地过程调用一样使用方便。(一句话概括:能够像调用本地接口一样调用远程接口的方式就是RPC)

其中虚线框里的,是由RPC框架帮忙完成的。
复制
3) Feign和RPC区别
:广义的RPC是一种编程模型,即初衷是可以不在乎底层的网络技术协议而实现远程调用,底层是http协议还是Tcp/Udp协议都可以。狭义的RPC的底层协议是TCP/IP协议,即传输的二进制编码数据。Feign(Feign是一个声明式的REST客户端,它的目的就是让REST调用更加简单)采用的是http协议,在性能上面可能会比RPC差一点,但是更加灵活。

4) RCP的实现流程

(1):客户端通过网络通信将需要的接口信息(接口名,方法名,参数类型和参数)发送给服务端。客户端->(接口信息,网络通)->服务端。
(2):服务端通过网络通信,接收到信息之后,通过反射进行方法的调用,将结果通过网络通信返回给客户端。服务端->(网络通信,反射,结果)->客户端
(3):工程上的应用RPC框架:阿里的dubbo(高性能RPC,基于TCP)

6.5. API网关

(1):背景:
在微服务的架构中,一个大应用被拆分为很多个小的服务系统,这些小的系统也可以自成系统(即可以拥有自己的数据库,框架和语言)。在UI(用户界面),一个功能的实现可能需要依靠多个服务才能实现,如何管理多个服务实现一个功能是一个问题(服务之间有很大的不同,语言,框架等,不能像单体应用一个依靠数据库的join查询)
(2)解决方法:使用API网关进行解决。

:所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能,同时也提供其他功能(身份验证,监控,负载均衡,缓存和静态响应处理等功能)
API网关是一个服务器,是系统的唯一入口,如果从面相对象设计的角度看,与外观模式比较相似,API网关封装了系统的内部架构,为每个客户端提供了一个定制的API。
(3)API网关的分类:单节点网关;Backends for frontends网关

6.6. Token验证机制

1) 定义:令牌,服务端生成的一串字符串,作为客户端进行请求的一个标识。
2) 原理:当用户第一次登陆之后,服务器生成一个token并将此token返回给客户端,以后客户端只需要带上这个token就能够请求数据,而无需再次带上用户名和密码。
3) 流程:token机制的身份认证流程

4) 作用:
(1):防止表单重复提交,token保持一致,即为单一的表单
(2):用来做身份认证。(流程图见如下)

5) 与cookie身份认证相比的优点

(1):支持跨域访问,可以将token置于请求头中,而cookie是不支持跨域访问的。
(2):无状态化:服务端无需存储token,只需要验证token信息正确即可(通过签字验证是服务端生成的),而 session需要存储在服务端,通过cookie中的sessionID来进行查找。
(3):可以避免CSRF跨站伪造攻击。
-. CDRF攻击条件:1)登录受信任网站A,生成可信的Session;2) 在不登出A的情况下,访问危险网站B,网站B伪造网站A的请求。
-. 由于CSRF攻击的本质在于攻击者欺骗用户去访问自己设置的请求,所以如果在请求敏感数据时,要求用户浏览器提供不是保存在cookie中并且攻击者无法伪造的数据作为校验条件,那么攻击者就无法伪造未校验的请求进行CSRF攻击。

6.7. 微服务之间的通信方式

1) 同步通信:
(1) :远程过程调用:RPC ,基于TCP协议。(Dubbo,轻量级RPC框架)
(2) Spring Cloud Feign,基于HTTP协议。
(3) 优缺点:因为没有中间件代理,系统更简单;但是只支持请求/响应模式,不支持通知,发布/订阅等模式,且客户端和服务端必须是可用的。
2) 异步通信
(1):使用异步消息来做服务间通信。服务间通过消息管道来交换消息,从而通信
(2):举例子:Apache Kafka和RabbitMQ
(3):优缺点:消息中间件,更加复杂/更松耦合,提高可用性,支持很多通信机制。

七. 微服务框架的种类介绍与对比

7.1. 什么是微服务?

1) 概念:微即:单个服务的设计,所有参与人尽可能少;服务是区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小的功能集。
2)原理:使用一套小服务来开发单个应用的方法,每个服务运行在自己的进程中,并且使用轻量级机制通信。服务给予业务能力构建,通过自动化部署机制独立部署,可以使用不同的编程语言进行实现。
3) 功能:传统的IT行业软件独立系统,存在拓展性差,可靠性不高,维护成本高问题,亟需解决这个问题。

7.2. 微服务与之前的单体架构区别

  1. 单体架构问题:复杂性逐渐变高;技术债务逐渐上升;部署速度逐渐变慢;阻碍技术创新;无法按需伸缩。

  2. 微服务与单体架构区别:
    (1) 单体架构所有模块都耦合在一起,代码量大,维护困难;微服务模块独立,问题好理解
    (2) 单体架构共用一个数据库,存储方法单一;微服务每个模块使用不同数据库
    (3) 单体架构所用技术统一;微服务的模块间所用技术各不相同,更加灵活。

7.3. 微服务的本质

1)微服务在解耦的同时,也需要提供一套基础的架构,使得微服务能够独立部署,运行,升级,并且在功能上又能够形成一个整体。
2)微服务的目的是进行有效拆分应用,并且实现敏捷的开发和部署。
3)微服务解耦,使得跨系统的沟通成本降低。

7.4. 微服务的应用场景

1)小:微服务体积小;独:能够独立部署和运行 ;轻:使用轻量级的通信机制和架构;松:服务之间是松耦合的。

7.5. 微服务的优缺点:

1)优点:易于开发和维护;启动速度;局部修改容易部署;技术栈不受限;按需伸缩。
2)缺点:运维要求高;分布式的复杂性;借口调整成本高;重复劳动;

7.6. 微服务的开发框架:

1)Spring Boot+Spring Cloud:目前非常流行的微服务框架
2)dubbo+zookeeper :
3)ServiceComb:商业版是华为的CSE

7.7. ServiceComb与Spring Cloud的区别:

1)前者支持的通信协议比后者多,前者支持Rest,Highway(RPC);SpringCloud仅仅支持Rest.。
2)Highway(RPC,远程过程调用)协议性能更好:基于二进制序列化方式传输数据,性能远高于基于文本的HTTP协议。
3)前者的商业版本CSE不仅仅提供了微服务开发框架,还提供了微服务部署,治理和管理等一站式解决方案。(服务更全)

八. 微服务框架内部工作原理

8.1. 客户端如何访问这些服务?

1) 一般在后台N个服务和UI之间一般会一个代理或者叫API Gateway,他的作用包括: 提供统一服务入口,让微服务对前台透明;聚合后台的服务,节省流量,提升性能;提供安全,过滤,流控等API管理功能。

8.2. 微服务之间是怎么通信的?(服务之间的相互调用)

1) 进程间通信:由于所有的微服务都市独立的Java进程,跑在独立的虚拟机上面。故服务间的通行为IPC(进程间通信)。
2) REST(基于HTTP的方式,更加灵活与方便,SpringCloud);RPC(传输协议更加高效,安全和可控,CSE)

8.3. 这么多服务怎么进行查找(服务发现)

(1)方法一:通过zookeeper等类似技术做服务注册信息的分布式管理;服务提供者将自己的服务信息注册到ZK中;服务调用者通过ZK进行寻址。
(2)方法二:服务提供者将服务信息缓存到本地,能够提高性能效率。
(3)客户端做:架构简单,扩展灵活,支队服务注册器依赖,但是客户端需要维护所有调用服务的地址,有技术难度;(多为大公司采用)
(4)服务端做:优点是简单,所有服务对前台调用方透明。

8.4. 服务挂了怎么办?

(1)分布式最大的特点就是网络是不可靠的,通过微服务能够拆分降低这种风险。
(2)重试机制;限流;熔断机制;负载均衡;降级(本地缓存)

九. 微服务需要考虑的问题?

9.1 API Gateway:

服务之间需要创建一种服务发现机制,服务启动会把 自身的信息注册到注册中心,订阅自己需要的服务。最常用最为服务注册中心的是:Zookeeper。Zookeeper是一个分布式文件系统;提供:心跳检测功能;具有与生俱来的容错容灾能力(比如leader选举)

9.2 负载均衡:

服务高可用的保证手段,每个微服务度需要部署多个服务实例来提供服务,醍醐段进行服务的负载均衡。(随机,轮询,IP Hash和最少连接数)

9.3 容错:

可以容下错误,不让错误再次扩张。针对超时,连接异常,网络异常等问题提供对应的服务容错策略(快速失败,失效切换,失败安全,失败自动恢复)

9.4 熔断:

智能化的容错,调用满足失败次数,失败比例,就会触发熔断器,自动切断当前的RPC调用,防止错误进一步扩大。

9.5 限流和降级:

(1) 限流,为了保证核心服务的稳定性,需要微系统设置一个服务数量的极限阈值,超过阈值直接拒接;通过限制服务的最大访问量进行限流
(2) 降级:为了保证核心服务的可用性,对非核心服务进行降级;通过管理控制台对单个微服务进行人工降级。
(3)API网关:将所有API调用统一接入到API网关层,有网关层统一接入和输出。基本功能为:统一接入,安全防护,协议适配,流量管控,容错能力;有了网关之后,各个API服务提供团队能够专注于自己的业务逻辑处理,而API网关更专注于安全,流量和路由等问题。
(4) 多级缓存:缓存的方式有:查询存入,设定过期时间;还有一种就是缓存持久化,不设置过期时间,分级进行缓存。

文献参考:
注释:稳重有些图片已经忘记出处了,本文章仅供自我记录学习,如有侵权,联系立刻删除。
https://blog.csdn.net/Anenan/article/details/114640198
https://blog.csdn.net/epubit17/article/details/119984158
https://www.cnblogs.com/savorboard/p/api-gateway.html

相关文章:

  • vxe-table 将表格指定行设置颜色后,选中行、悬浮行样式失效解决。
  • 这些提高摸鱼效率的自动化测试技巧,提高打工人幸福感~
  • HelloSpring
  • Vite为啥如此之快
  • 从二值 Mask 获取外接矩形坐标
  • Tomcat 的本地部署及 SmartTomcat 的使用
  • Unity Shader LightMode 标签
  • linux搭建docker镜像服务
  • 解决mybatis用Map返回的字段全变大写的问题
  • 交联剂134272-64-3,MAL-NH2 HCl 在抗体的标记上面效果明显
  • mybatis第一次课
  • 全民拼购模式:社交电商与拼购新玩法
  • Linux笔记系列
  • 机器人冗余自由度优化过程中的零空间概念
  • ActiveMQ如何处理重复消息?如何保证消息的有序性?如何处理消息堆积?
  • __proto__ 和 prototype的关系
  • Codepen 每日精选(2018-3-25)
  • ComponentOne 2017 V2版本正式发布
  • CSS居中完全指南——构建CSS居中决策树
  • ECS应用管理最佳实践
  • ES6核心特性
  • GraphQL学习过程应该是这样的
  • jdbc就是这么简单
  • laravel5.5 视图共享数据
  • leetcode388. Longest Absolute File Path
  • node-glob通配符
  • webgl (原生)基础入门指南【一】
  • Web标准制定过程
  • 阿里云购买磁盘后挂载
  • 技术胖1-4季视频复习— (看视频笔记)
  • 今年的LC3大会没了?
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 从如何停掉 Promise 链说起
  • # include “ “ 和 # include < >两者的区别
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (1)Nginx简介和安装教程
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (第二周)效能测试
  • (附源码)ssm高校实验室 毕业设计 800008
  • (五)MySQL的备份及恢复
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)memcache、redis缓存
  • (转)Sublime Text3配置Lua运行环境
  • (转)负载均衡,回话保持,cookie
  • (转)平衡树
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .NET CLR Hosting 简介
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .net项目IIS、VS 附加进程调试
  • .Net小白的大学四年,内含面经
  • .Net语言中的StringBuilder:入门到精通
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @AutoConfigurationPackage的使用