首页 > 其他分享 >.net笔记

.net笔记

时间:2022-08-24 21:57:50浏览次数:54  
标签:string redis 笔记 索引 更新 授权 net 数据

分库分表-分库(功能拆分):
数据库的线程是有限的,多个数据库增加了线程资源,这就是分库分表的目的

分库分表-分表(数据拆分):
当一个表超过2kw数据后,查询会变慢,索引会失去效用,此时分表+索引是最优解

索引:
可以解决2kw以下的数据量,超过这个阈值,收效甚微

读写分离(主库从库):
主库写入,从库查询,解决了读库效率瓶颈。
二八原则,读库业务占整体业务的80%,写库只占20%。
多个从库增加了查询的效率。

DDD(领域驱动设计):
工作模式上解决了沟通成本问题(客户和程序员、开发和测试),开发流程上把项目分为各个业务模块,面向业务的开发模式。
属于面向业务的工作模式(业务:用户模块、资产模块、漏扫模块),以每周一个周期,各个职能人员、甚至是客户,共同交流进度、遇到的问题,共同确立未来的走向。

virtual方法和abstract方法:
virtual方法必须写具体实现,abstract方法不能写具体实现;
virtual方法不是必须重写的,abstract必须重写来具体实现;
virtual方法可以通过override和new重写,abstract只能用override重写。

New和Override:
New不会改变父类的值,Override的子类会覆盖父类的值。
New用于重写普通方法、virtual方法,Override用于重写virtual方法、abstract方法和Override方法。

const和readonly的区别:
const是静态常量,默认静态,不能static修饰,只能值类型和string类型,结构体也不行;
readonly是动态常量,可在构造函数中初始化,可以static修饰,能任意类型。

volatile:
cpu为了读取某些数据更快,会把热数据放在CPU高级缓存中,下次在读取的时候就不经过内存了;
这样很快,但如果内存中的数据发生变化时,并不会更新到CPU高级缓存中,这样俩数据就不一样了;
volatile修饰符,会让数据在内存中更新时,强制更新CPU高级缓存。

RPC(远程过程调用):
比http快,是因为直接使用了TCP获取数据,提升了网络IO性能;
·TCP长链接,不用反复握手
·TCP传输的是二进制,http是字符串,所以TCP所需数据量很小,传输更快
·二进制流转数据,再把数据传给相应服务的方法,这块由stub处理

string a="abc"; string b=a; a="xyz"; b是否为“xyz”?
否。
因为string驻留机制。string一经创建,就不能修改。只会另开辟一个内存地址存储新值,再指向新的内存地址。

string a="abc"; string b="abc"; 他们指向的是否为同一个内存地址?
是。
因为string驻留机制。在程序中使用到的具有完全相同的字符序列的String,均是对应着同一个string对象,是对同一个段内存的引用。

string a="abc"; string b= new string("abc"); 他们指向的是否为同一个内存地址?
否。
a属于常量,编译时就定义在常量池了。b是运行时生成的字符串对象,b没有驻留机制。

构造函数可以继承么?
可以。通过 :Base()继承。

构造函数什么返回类型?
没有返回类型。返回的就是它自己。

IOC三个生命周期都是什么时候实例化的?
都是第一次调用时实例化。

GC怎么回收的?
只要资源出了作用域,而且没人再引用,GC会标记它等待下次回收时销毁。

GC会不会回收非托管资源?

哪些资源不会被GC回收?该用什么来回收?
文件、流、连接等。
Using块。

Using块要求被引用的对象必须继承什么接口?
IDisposable

Using块内出现异常会不会无法回收?Using块本质是什么?
不会,依然会正确回收。
本质就是try.catch.finally。

聚集索引和非聚集索引的区别?
1.聚集索引一个表只能有一个(一般是主键),而非聚集索引一个表可以存在多个。
2.聚集索引在b+树的叶子节点,就是数据本身。非聚集索引在b+树的非叶子节点,不存储数据,只存储数据的主键。
3.聚集索引只要查一次就可以查到。非聚集索引想要查数据,要先查到数据的主键,再通过主键从聚集索引中查到数据(回表)。
4.聚集索引的记录是物理上连续存在的,非聚集索引物理存储并不连续。

b+树是单向链表还是双向链表?
叶子节点是双向链表;
叶子节点中的数据是单向链表。

RestFull有什么好处?
restful只是标准,标准的意思是如果在大家都依此行事的话,沟通成本会很低,开发效率就高。

什么是原子性?
一个操作,它要么完整的被执行,要么完全不执行。
没有执行一半这种情况,执行一半失败也会回滚。这种特性就叫原子性。

什么是幂等性?
不管执行多少次请求,所产生的结果都一样。

Post Put Patch 有什么区别?
Post多用于创建,Put Patch多用于更新。
Post每次执行都会创建一个资源,是非幂等的。
PUT更新需要传全部参数,客户端提交什么就替换什么,是幂等的。
PATCH更新可以只传部分参数,更节约网络资源;有时用于更新计数,比如+1,这种情况是非幂等的。

怎样在后端实现幂等性?
1、先查库再插入(占用数据库性能)
2、表单打开时,设置个表单token,存入redis,执行插入请求时带上这个token,
如果redis里有,就从redis删除改token并执行插入,
如果redis里没有,就表示已经插入过了,返回请勿重复提交。

怎样手动从容器获取服务?
先注入IServiceProvider,然后通过 serviceProvider.GetService(typeof(xxx)) as xxx; 获取服务

你通常使用WebApplicationBuilder做什么?
1、使用 builder.Configuration 添加配置。
2、使用 builder.Services 添加服务
3、使用 builder.Logging 配置日志
4、配置 IHostBuilder 和 IWebHostBuilder

WebHost和Host区别?
WebHost:网络主机(Http),用于Net Core 2.1创建主机;
Host:通用主机(HTTP + 非 HTTP 工作负载),用于Net Core 3-5创建主机;

WebApplication 用来作什么?
1、IHost - 用来启动和停止 Host
2、IApplicationBuilder - 用于建立中间件管道
3、IEndpointRouteBuilder - 用于添加路由端点

怎样用redis实现热搜排名?
采用zset,是有序集合,元素中的score参数实现排序,该参数可以是整数或小数,可重复;
每次搜索都更新score,实现实时更新排序。

怎样加快redis从数据库同步数据,保障redis数据及时性?
1、缓存数据设置超时时间。
2、并通过quartz定时同步数据库中的数据。
3、增量更新时,先更新redis,再更新数据库,这样查询会先走redis。
待更新数据可以存入队列,通过队列更新redis;
也可以使用canal监听mysql binlog,通过解析binlog的增量数据

怎样解决消息队列堆积?
1、通常的解决方案就是增加消费端实例。说白了就是增加机器。如果出现线上事故,能申请多少机器就申请多少机器,争取在最短的时间内消费掉积压在MQ中的消息。
2、如果申请机器行不通,毕竟公司的机器是有限的,此时可以增加消费端的消费能力。在MQ的配置中配置"最大消费者数量"与"每次从队列中获取的消息数量"
3、如果还是不能解决问题的话,还有另外一种解决方案。紧急上线专门用于记录消息的队列,不多BB,先把MQ中的消息记录到数据库中,然后再慢慢的消化处理。

怎样让消费者感知队列积存量?
记录日志,并监控该日志,当达到阈值会预警并提醒。

OAuth2.0 - 为什么先拿授权码再拿token?
授权码这步,不是你对授权中心直接进行请求;
而是你给用户一个授权中心的登录页面,让用户自己登陆,然后授权中心根据回调,请求你的服务,把授权码给你;
这一步,因为是请求你,所以你的服务可能就是http传输,直接在http上传输token是不安全的,所以授权服务只能先给你个授权码。
你拿着授权码+clientID,再请求授权中心,因为是授权中心的服务,所以可以确保是https的,是传输安全的,最终response会返给你token。
(clientID就是在微信开发者平台上注册的,标识你应用的唯一ID)

 

标签:string,redis,笔记,索引,更新,授权,net,数据
From: https://www.cnblogs.com/Vito666/p/16622393.html

相关文章

  • 操作系统学习笔记5 | 用户级线程 && 内核级线程
    在上一部分中,我们了解到操作系统实现多进程图像需要组织、切换、考虑进程之间的影响,组织就是用PCB的队列实现,用到了一些简单的数据结构知识。而本部分重点就是进程之间的切......
  • 双流网络two stream network学习笔记草稿(待整理)
    卷积神经网络比较擅长学习局部的特征,而非物体移动的规律先将运动信息抽取好(光流),再让CNN去学习这种(运动信息到动作分类间的)映射空间流的输入是单帧图片,而时间流的输入是一系......
  • Link-Cut-Tree 学习笔记
    Link-Cut-Tree是著名的Tarjan教授发明的数据结构,利用动态树,我们珂以解决很多复杂的树上操作。先看一道例题:严格次小生成树有人会问了,这不是裸的树上倍增吗?我想说的是......
  • C++ Primer阅读笔记
    如何设置GNU编译器对C++11的支持运行编译器的时候指定-std=C++11参数黑窗口下编译运行源文件//windows下gcctest.c-otest//-o表示指定可执行文件的文件名.\tes......
  • C++Primer阅读笔记续
    chapter13.拷贝控制概述控制类类型的对象的拷贝,赋值,移动,销毁包括五种特殊的成员函数(这些称为拷贝控制成员):拷贝构造函数拷贝赋值运算符移动构造函数移动赋值运算符......
  • java学习笔记014 枚举类
    1.比较器Comparable接口自然排序 @Override publicintcompareTo(Tt){ //自定义比较规则 //要求:this>t,返回正整数 // this==t,返回0 // this<t,返......
  • Spring 源码学习笔记10——Spring AOP
    Spring源码学习笔记10——SpringAOP参考书籍《Spring技术内幕》SpringAOP的实现章节书有点老,但是里面一些概念还是总结比较到位源码基于Spring-aop5.3.22可能和旧......
  • 2022-08-24 第四小组 王星苹 学习笔记
    学习心得自动类型推断数字numbervarv1=10; varv2=1.5;字符串stringvarv3="你好";varv4='我好';布尔型boolean   ......
  • 2022-08-24 第二组刘禹彤 学习笔记
    打卡39天  ###学习内容JavaScript脚本语言,解释型,主要用来给HTML网页增加动态功能,通常的JS是运行在浏览器环境下的JS的两种模型DOM文档对象模型(document)BOM浏......
  • 线性代数学习笔记
    线性代数学习笔记前置知识向量:既有大小又有方向的量称为向量。1.矩阵1.1定义和性质:由$n\timesm$个数字构成的n行m列的数表$$\begin{pmatrix}a_{11}&a_{12}......