Redis理解【精细】【快速上手】

目录

1. 了解3V和3高

2.什么是redis 

3.  redis可以做什么

4. Windows安装

5. 使用redis客户端操作redis

5.1 redis基本命令

5.1.1 切换数据库

5.1.2 查看当前数据库的大小

5.1.3 查看当前数据库所有的key

                ​​​​​​​  5.1.4 清空当前数据库所有key

5.1.5 清空所有数据库所有key

5.1.6 判断key是否存在当前数据库

5.1.7 移动key到指定数据库

5.1.8 设置key的过期时间

5.1.9 查看key的类型

5.2.0 指定key追加值

5.2.1 删除指定的key

5.2.2 获取字符串key的长度

6. 五大数据类型

6.1 String(字符串)

6.1.0  字符串中的数字增长,减少 就是        【i++】和【i--】

6.1.1 字符串中的数字指定一次增长多少,指定一次减少多少

6.1.2 截取字符串某个范围之间的值

6.1.3 将某一个范围的值替换成新值

6.1.4 设置key值的同时设置过期时间

6.1.5 判断如果key值不存在则设置对应值

6.1.6 一次性设置多个key

6.1.7 一次性获取对一个key值

6.1.8 一次性设置多个key,当key不存在才设置

6.1.9 先获取值,在设置值

7.1 List(列表)

7.1.0 向集合插入值(左插入)

7.1.1 向集合中插入值(右插入)

7.1. 2 移除集合中最左边的值

7.1.3 移除集合中最右边的值

7.1.4 查看集合的长度

7.1.5 移除集合中指定值

7.1.6 保留集合中指定范围的值,移除范围外的值

7.1.7 将当前集合中最后一个值移动到新的集合中

7.1.8 在集合中指定下标替换值

7.1.9 将某个具体值插入到集合中某个值的前面或者后面

8.1 Set(集合)

8.1.1 向set集合中插入值

8.1.2  查看当前set集合中所有值

8.1.3 判断值是否存在set集合中

8.1.4 获取set集合中元素的个数

8.1.5 移除集合中某一个元素

8.1.6 随机获取set集合中某个元素

8.1.7 随机删除集合的元素

8.1.9 将一个指定的值移动到另外一个集合中

 8.2.0 获取一个集合在另一个集合中不存在的值(差集)

8.2.1  获取两个集合中相同的元素 (交集)

8.2.2 获取连个集合中的所有元素,并将相同元素合并成一个(并集)


1. 了解3V和3高

大数据时代的3v:   主要描述问题的

                1. 海量 Volume  海量的数据需要存储

                2. 多样 Variety  存储的东西不同(聊天信息,视频信息,位置信息)

                3. 实时 Velocity 直播的消息需要实时


大数据时代的3高主要是对程序的要求

                1. 高并发

                2. 高拓展

                3. 高性能

2.什么是redis 

redis是远程字典服务,Redis 是一个开源的,使用 C 语言编写的,基于内存的键值对数据库,可以用作非关系型(NoSQL)的数据结构存储系统,缓存和消息中间件

数据库的本质:一个是读取数据,一个是写入数据,而redis就是解决读取数据的弊端

                网站80%都是在读取数据,每次访问都要查询数据库的话就十分麻烦,如果访问量较大,那么查询数据库的速度会变的非常慢,这么多个请求就是高并发,这时候就需要缓存来解决高并发


 为什么要使用redis:

                redis理解成缓存,当我们第一次访问的时候,先查询数据库,在将查询的数据放入缓存中,下次访问的时候就不需要在从数据库查询数据,而是直接从缓存中获取数据,这样解决了数据库的负担


使用redis的好处:

Redis 是一个内存数据库,速度非常快,适合作为缓存来缓解数据库的压力具体来说,使用 Redis 作为缓存的过程如下:

  1. 第一次访问

    • 用户请求数据。
    • 应用程序查询数据库,获取数据。
    • 将获取的数据存储在 Redis 缓存中。
    • 将数据返回给用户。
  2. 后续访问

    • 用户再次请求相同的数据。
    • 应用程序首先检查 Redis 缓存中是否有该数据。
    • 如果缓存中有数据,直接从缓存中获取并返回给用户。
    • 如果缓存中没有数据,再查询数据库,将查询到的数据存储在缓存中,以备下次使用。

通过这种方式,Redis 缓存可以显著减少对数据库的直接查询,提升网站的整体性能和响应速度。

3.  redis可以做什么

        1. 内存存储数据,持久化数据:

                        内存是中是断电即失,所以持久化很重要(rdb,aof机制)


         2. 效率高,可以用于告诉缓存


        3. 可以发布订阅系统


        4. 地图信息分析


        5. 计时器,计数器(浏览量)

4. Windows安装

下载地址:

        https://github.com/tporadowski/redis/releases


redis中文文档:

        redis中文文档

3.1

        下载安装包,并解压

3.2

        打开解压后的文件夹,并启动redis服务

启动成功界面:

3.3

        使用redis客户端连接reids,redis服务一定是要开启的

5. 使用redis客户端操作redis

redis默认有16个数据库,不同的数据库存放不同的数据

5.1 redis基本命令

5.1.1 切换数据库

命令:        select 数字     

                 1.切换到第几个数据库

                 2.我们默认使用的是第0个数据库(0到15个数据库)

5.1.2 查看当前数据库的大小

命令:       dbsize

                1.查看当前数据库的使用的大小

                2.如果我往数据库增加一个key,这个时候大小就为1,如果增加多个key则为你有几个字段大小就是几

                3.数据库的大小是和key的多少来决定的

设置两个key,在查看数据库的大小

5.1.3 查看当前数据库所有的key

命令:         keys * 

                 1.查看当前数据库所有的key

5.1.4 清空当前数据库所有key

命令:                 flushdb

                         1.清空当前数据库所有key

5.1.5 清空所有数据库所有key

命令:                 flushall

                            1.清空所有(0到第15个)数据库所有的key

5.1.6 判断key是否存在当前数据库

命令:                 exists  key名

                          1.如果key存在当前的数据库则返回1,如果key不存在当前的数据库则返回0

5.1.7 移动key到指定数据库

命令:                move key名 第几个数据库

                        1.移动当前数据库存在的key,移动指定的数据库中,移动成功返回1

5.1.8 设置key的过期时间

命令:                expire key名 过期秒数

                           1. 设置当前数据库存在的key的过期时间,过期之后返回-2


查看key还有几秒过期

命令:                   ttl key名

                           1. 查看key过期的时间,过期会返回-2秒

                

5.1.9 查看key的类型

命令:                type key名

                        1. 查看key对应的类型

5.2.0 指定key追加值

命令:                append key名 追加的值

                        1.在指定的key值中继续追加上值

5.2.1 删除指定的key

命令:                del key名

                        1. 删除指定的key

5.2.2 获取字符串key的长度

命令:                strlen key名

                           1.获取你设置key值字符串的长度

记住一些常用的命令就ok,如果需要其他命令去官网找


6. 五大数据类型

6.1 String(字符串)

6.1.0  字符串中的数字增长,减少 就是        【i++】和【i--】

命令:                incr key名

                        1.相当于循环中的i++操作,自身加1,每次执行此命令都加1,注意设置的key值必须是整数类型


命令:                decr key名

                        1. 跟上面相反,这个是循环的 i-- 操作,自身1,每次执行命令都减1

i++ : 

i -- :

6.1.1 字符串中的数字指定一次增长多少,指定一次减少多少

命令:                incrby key名 增长多少的数字

                        1. 指定本身增长多少


命令:              decrby key名  减少多少的数字

                        1. 指定本身减少多少

6.1.2 截取字符串某个范围之间的值

命令:                getrange kye名 截取开始的下标  截取结束的下标

                           1.可以获取字符串的范围值,下标从0开始

                           2.getrange key名 0 -1,如果结束的下标为-1那么就直接拿到所有的字符串

这里写错了,下标是从0开始,h对应的下标是0

6.1.3 将某一个范围的值替换成新值

命令:                setrange key名 从那里开始替换的下标 替换的值

                          1.将一个字符串某一个范围替换成指定值

6.1.4 设置key值的同时设置过期时间

命令: 

        setex key名称 过期时间 key值


例:

        setet name1 30 zhangsan (设置key名为name1,name1的值为zhangsan,30秒过期)

        1.设置的值有失效时间

6.1.5 判断如果key值不存在则设置对应值

命令:

         setnx key名称 key值


例 :

        setnx name2 lisi (当key名为name2不存在的时候设置对应的值为lisi)

        1.当key名不存在的时候才可以设置对应的值

6.1.6 一次性设置多个key

命令:

        mset key1名 key1值 key2名 key2值 key3名 key3值........


例:

        mset name1 zhangsan name2 lisi name3 wangwu name4 zhaoliu

        (设置了4个key,name1对应的值为zhangsan,name2对应的值为lisi,name3对应的值为wangwu,name4对应的值为zhaoliu,一次性设置了多个key,还可以继续设置多个key)

6.1.7 一次性获取对一个key值

命令:

        mget key1名 key2名 key3名 key4名..........


例:

        mget name1 name2 name3 name4 (获取值为zhangsan,lisi,wangwu,zhaoliu)

        1.上面一次性可以设置多个值,这里对应可以一次性获取多个值

6.1.8 一次性设置多个key,当key不存在才设置

命令:

        msetnx key1名 key1值 key2名 key2值 key3名 key3值........


例:

        msetnx name1 zhangsan name2 lisi

        (当name1,name2不存在的时候对应的值才会设置)

        1. 这里保证key不存在的时候才能设置对应的值

        2. 要保证所有的key都不存在,那么设置的值才会成功

        3. 这是一个原子性的操作,要么一起成功,要么一起失败!

6.1.9 先获取值,在设置值

命令:

        getset key名 key值 


例:

        getset name zhangsan (如果name值不存在,则返回nil,在设置值)(如果name值存在,则获取原来的值,并设置新的值)
        1. 先获取原来的值,如果不存在则返回nil,如果存在则返回原来的值,最后设置值


7.1 List(列表)

所有的list命令都是以 【 l 开头的

7.1.0 向集合插入值(左插入)

命令:

        lpush 集合名称 集合值...


例:

        [1] lpush list1 zhangsan  [2] lpush list1 lisi 使用两条命令将值插入集合

        也可以使用一条命令插入多个值 lpush list1 zhangsan lisi  .....


        1. 向list1集合中插入了2个值(zhangsan,lisi)

        2.在集合中存入的值的顺序是 (lisi,zhangsan),先插入的值在集合的最右边,后插入的值在集合的最左边


        3. 使用 lrange 集合名(也就是key名) 0 -1 查看所有值

7.1.1 向集合中插入值(右插入)

命令:

        rpush 集合名称 集合值...


例:

        【1】rpush list1 zhangsan [2] rpush list1 lisi 使用两天命令将值插入结合

          也可以使用一条命令插入多个值rpush list1 zhangsan lisi  ....


        1. 向list1集合中插入了2个值(zhangsan,lisi)

        2. 在集合的顺序是(zhangsan,lisi),先插入的值在集合的最左边,后插入的值在集合的最右边


        3. 使用 lrange 集合名(也就是key名) 0 -1 查看所有值

7.1. 2 移除集合中最左边的值

命令:

        lpop 集合名(也就是key名)


例:

        有一个list1集合中有3个值(zhangsan,lisi,wangwu)


        lpop list1 (将list1最左边的值zhangsan移除了)

        1. 移除list集合中第一个元素也就是最左边的值

7.1.3 移除集合中最右边的值

命令:

        rpop 集合名(也就是key名)


例:

        有一个list1集合中有3个值(zhangsan,lisi,wangwu)

         rpop list1 (将list1最右边的值wangwu移除了)


        1. 移除list集合中最后一个元素也就是最右边的值

7.1.4 通过下标获取集合中某一个值

命令:

        lindex 集合名(也就是key名) 下标


例:

        有一个list1集合中有3个值(zhangsan,lisi,wangwu)

        lindex list1 0              对应的值为 zhangsna

        lindex list1 1              对应的值为 lisi

        lindex list1 2              对应的值为 wangwu


        下标都是从0 开始的

7.1.4 查看集合的长度

命令:

        llen 集合名(也就是key名)


例:

        有一个list1集合中有3个值(zhangsan,lisi,wangwu)

        llen list1        返回值为3


集合中有多少个值,那么长度就是多大

7.1.5 移除集合中指定值

命令:

        lrem 集合名(也就是key名) 移除的个数 具体值


例:

        有一个list1集合中有3个值(zhangsan,lisi,zhangsan),集合中可以存在相同值

                lrem list1 2 zhangsan             最后集合中只剩lisi


        集合中运行存在相同值,移除指定值的时候,可以指定移除具体哪个值,如果存在多个相同值,可以指定移除几个相同值

7.1.6 保留集合中指定范围的值,移除范围外的值

命令:

        ltrim 集合名(也就是key名) 保留开始的下标 保留结束的下标


        有一个list1集合中有4个值(zhangsan,lisi,wangwu,zhaoliu)

        ltrim list1 1 2        集合中只剩下下标为1和2的lisi,wangwu


只保留指定下标内的值,移除没有指定下标外的值

7.1.7 将当前集合中最后一个值移动到新的集合中

命令:

        rpoplpush 集合名(也就是key名) 新集合名(也就是key名)


例:

        有一个list集合中有3个值(zhangsan,lisi,wangwu)

        rpoplpush list list1        将list集合最后一个值wangwu移动到list1集合中


        将原有的集合中最后一个元素移动到新的集合中,原来的集合中则不保留移除的元素

7.1.8 在集合中指定下标替换值

命令:

        lset  集合名(也就是key名)  第几个下标 具体值


例:

        有一个list集合中有3个值(zhangsan,lisi,wangwu),集合中可以存在相同值

        lset list1 0 zhaoliu         将下标为0的zhangsan替换成了zhaoliu


        使用该命令的前要保证集合存在(或者下标存在)存在,否则设置不成功

7.1.9 将某个具体值插入到集合中某个值的前面或者后面

命令:

        linsert 集合名(也就是key名)  前面还是后面(before或者aftter)   插入位置的值  插入的具体值


例:

       有一个list集合中有3个值(zhangsan,lisi,wangwu)

        linsert list before lisi zhaoliu         在指定lisi前面插入zhaoliu值

        linsert list after lisi wangba            在指定lisi后面插入wangba值


将某个具体的value插入到列表中某个元素的前面或者后面


8.1 Set(集合)

set中的值是不能重复的,set集合是无序不重复集合

8.1.1 向set集合中插入值

命令:

        sadd 集合名(也就是key名) 集合值...


例:

        sadd slist zhangsan

        sadd slist lisi

        sadd slist wangwu

        也可以批量操作(sadd slist zhangsan lisi zhangwu)


插入值不能存在相同值

8.1.2  查看当前set集合中所有值

命令:

        smembers set集合名(也就是key名)


例:   

        有一个slist集合中有3个值(zhangsan,lisi,wangwu)

            smembers slist        返回集合中所有值

8.1.3 判断值是否存在set集合中

命令:

        sismember 集合名(也就是key名) 需要判断的值


例:   

        有一个slist集合中有3个值(zhangsan,lisi,wangwu)

        sismember slist zhangsan        返回1,表示zhangsan存在set集合中


        如果值存在返回1,不存在返回0

8.1.4 获取set集合中元素的个数

命令:

        scard  集合名(也就是key名)


例:   

        有一个slist集合中有3个值(zhangsan,lisi,wangwu)

        scard slist        返回3,slist集合中有3个元素


集合中有多少个值,个数就是几

8.1.5 移除集合中某一个元素

命令:

        srem 集合名(也就是key名) 移除的具体值


 例:   

        有一个slist集合中有3个值(zhangsan,lisi,wangwu)

        srem slist zhangsan         移除了zhangsan这个值

        也可以一次性移除多个值(srem slist zhangsan lisi        移除了zhangsan和lisi这两个值)

8.1.6 随机获取set集合中某个元素

命令:

        srandmember  集合名(也就是key名)  随机获取的个数


 例:   

        有一个slist集合中有3个值(zhangsan,lisi,wangwu)

        srandmember slist        随机获取slist集合中某一个元素,默认不写个数为1个

        srandmember slist 2     随机获取slist集合中2个元素

8.1.7 随机删除集合的元素

命令:

        spop 集合名(也就是key名)  移除几个元素


 例:   

        有一个slist集合中有3个值(zhangsan,lisi,wangwu)

        spop slist        移除slist中随机的一个值,默认不写移除个数则为1个

        spop slist 2     移除slist中随机的2个值

8.1.9 将一个指定的值移动到另外一个集合中

命令:

        smove 原来的集合 新的集合  要移动的指定值  


 例:   

        有一个slist集合中有3个值(zhangsan,lisi,wangwu)

        smove slist slist1 wangwu         将slist集合中的wangwu移动到slist1中


        移动之后原来的集合slist中的wangwu将不在 slist中

 8.2.0 获取一个集合在另一个集合中不存在的值(差集)

命令:

        sdiff  集合1名(也就是key名)  集合2名(也就是key名)


 例:   

        有两个集合,list1集合有(a,b,c)三个元素,list2集合中有(c,d,e)三个元素

        sdiff list1 list2          以list1为参照,判断list1中的元素是在list2中没有的,返回在list2没有的list1元素(a,b),这个叫差集


获取集合中的元素在另一个集合中没有的元素

8.2.1  获取两个集合中相同的元素 (交集)

命令:

        sinter 集合1名(也就是key名)  集合2名(也就是key名)


 例:   

        有两个集合,list1集合有(a,b,c)三个元素,list2集合中有(c,d,e)三个元素

        sinter list1 list2              返回相同元素c


获取集合中的相同的元素

8.2.2 获取连个集合中的所有元素,并将相同元素合并成一个(并集)

命令:

        sunion 集合1名(也就是key名)  集合2名(也就是key名)


例:

        有两个集合,list1集合有(a,b,c)三个元素,list2集合中有(c,d,e)三个元素

        sunion list1 list2         返回的结果是a,b,c,d,e,将相同值c合并了


        将集合中相同值合并成一个值

------------------------------------------------待更新------------------------------------------------------------------------

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/40103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Element 的 el-table 表格实现单元格合并

html 部分 <template><div class"index-wapper"><el-table :data"tableData" :span-method"objectSpanMethod" border><el-table-column v-for"(item, index) in tableHeader" :key"index" :prop&quo…

Android Studio上传新项目到Gitee

一、在Gitee上创建仓库 首先需要再Gitee上创建仓库 1、在Gitee中新建仓库 2、输入仓库信息 3、生成仓库地址 创建成功会生成一个仓库地址&#xff0c;格式如下&#xff1a; https://gitee.com/test/compose_mvi_demo.git二、Android Studio 上传项目到Gitee 1、在Android …

微信小程序转发朋友圈详细教程

微信小程序转发朋友圈功能&#xff0c;官方说的很官方&#xff0c;容易踩坑 官方链接戳这里 想分享朋友圈必须要分享好友 onShareTimeline() { } 想要生效必须先定义 onShareAppMessage() { } /*** 用户点击右上角分享*/onShareAppMessage() { },onShareTimeline() { } 简单…

一维信号全变分(TV)降噪方法(MATLAB)

信号降噪一直是领域研究的热点&#xff0c;这是一项十分有意义并且极具挑战性的工作&#xff0c;经过几十年来相关科研人员的共同努力&#xff0c;降噪技术得到了极大的发展&#xff0c;并在现实生活中也得到了广泛的应用。其中&#xff0c;许多常用的方法有&#xff1a;小波变…

免费最好用的证件照制作软件,一键换底+老照片修复+图片动漫化,吊打付费!

这款软件真的是阿星用过的&#xff0c;最好用的证件照制作软件&#xff0c;没有之一&#xff01; 我是阿星&#xff0c;今天要给大家安利一款超实用的证件照工具&#xff0c;一键换底&#xff0c;自动排版&#xff0c;免费无广告&#xff0c;让你在家就能轻松搞定证件照&#…

搭建知识付费系统的技术框架与实现路径

知识付费系统已经成为内容创作者和企业变现的重要工具。要成功搭建一个高效、稳定、用户体验良好的知识付费系统&#xff0c;明确技术框架和实现路径至关重要。本文将详细解析搭建知识付费系统的技术框架&#xff0c;并提供具体的实现路径和相关技术代码示例。 一、知识付费系…

测试图片上传功能,使用postman提供的url

是不是有时候想要测试图片上传功能&#xff0c;但是没有后台url进行测试&#xff0c;这时候就可以使用postman提供的url&#xff1a; https://postman-echo.com/post接下来&#xff0c;我将教你在postman中&#xff0c;用该url测试图片上传功能。 1.发送图片上传请求 第一步…

Character.ai因内容审查流失大量用户、马斯克:Grok-3用了10万块英伟达H100芯片

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 1、爆火AI惨遭阉割&#xff0c;1600万美国年轻人失恋&#xff1f;Character.ai被爆资金断裂 美国流行的社交软件Character.ai近期对模型进行大幅度内容审查&#xff0c;导致用户感到失望并开始流失。…

12. Revit API: Document、Element

12. Revit API: Document、Element 前言 还是先讲一下Document吧&#xff0c;不然Selection不好讲&#xff0c;那涉及到了挺多东西的&#xff0c;比元素&#xff08;Element&#xff09;和各类Filter&#xff0c;这些都与Document有关&#xff0c;所以先简单讲一下这个。 一、…

Chart.js四个示例

示例代码在图片后面&#xff0c;点赞加关注&#xff0c;谢谢 条形图 雷达图 折线图 圆环图 完整例子代码 具体代码在干什么看粗体加重的注释 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <me…

C++精解【10】

文章目录 读写文件概述example csv读文件读取每个字段读取机器学习数据库iris constexpr函数GMP大整数codeblock环境配置数据类型函数类 EigenminCoeff 和maxCoeffArray类 读写文件 概述 fstream typedef basic_fstream<char, char_traits<char>> fstream;此类型…

【大数据】什么是数据融合(Data Fusion)?

目录 一、数据融合的定义 二、数据融合的类型 三、数据融合的挑战 四、数据融合的方法 五、数据融合的关键环节 1.数据质量监控指标的制定和跟踪 2.异常检测和处理机制 3.实时数据监测与反馈机制 4.协同合作与知识共享 一、数据融合的定义 数据融合&#xff08;Data Fusion&…

STM32基本定时器、通用定时器、高级定时器区别

一.STM32基本定时器、通用定时器、高级定时器区别 STM32系列微控制器中的定时器资源分为基本定时器&#xff08;Basic Timer&#xff09;、通用定时器&#xff08;General Purpose Timer&#xff09;和高级定时器&#xff08;Advanced Timer&#xff09;三类&#xff0c;它们在…

PyCharm远程开发配置(2024以下版本)

目录 PyCharm远程开发配置 1、清理远程环境 1.1 点击Setting 1.2 进入Interpreter 1.3 删除远程环境 1.4 删除SSH 2、连接远程环境 2.1 点击Close Project 2.2 点击New Project 2.3 项目路径设置 2.4 SSH配置 2.5 选择python3解释器在远程环境的位置 2.6 配置远程…

C++ 现代教程二

线程支持库 - C中文 - API参考文档 GitHub - microsoft/GSL: Guidelines Support Library Fluent C&#xff1a;奇异递归模板模式&#xff08;CRTP&#xff09; - 简书 #include <thread> #include <iostream> #include <unordered_map> #include <futu…

区块链加载解析方法

一.区块链加载解析 对于数据的下载主要包括三种方式&#xff1a; 1.实现比特币网络协议&#xff0c;通过该协议和其他比特币全节点建立联系&#xff0c;然后同步区块数据。 2.通过比特币节点提供的API服务下载区块链数据。 3.通过blickchain.com提供的rest服务下载区块数据…

《后端程序猿 · Caffeine 本地缓存》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻一周&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

EE架构大跃进:特斯拉、小鹏引领舱驾融合,从域控融合走向单SoC

作者 |肖恩 编辑 |德新 智能汽车发展到今天&#xff0c;整车电气架构已经从分布式架构逐渐迈向中央集成式架构&#xff0c;传统的小控制器被集成到按功能划分的大域控里&#xff0c;下一个阶段将是跨域的融合&#xff0c;通过不同功能域的集成实现中央计算平台的最终目标。 …

Visual Studio 中的键盘快捷方式

1. Visual Studio 中的键盘快捷方式 1.1. 可打印快捷方式备忘单 1.2. Visual Studio 的常用键盘快捷方式 本部分中的所有快捷方式都将全局应用&#xff08;除非另有指定&#xff09;。 “全局”上下文表示该快捷方式适用于 Visual Studio 中的任何工具窗口。 生成&#xff1…

[leetcode hot 150]第四百五十二题,用最少数量的箭引爆气球

题目&#xff1a; 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。…