【Redis】初识 Redis
文章目录
- 1 什么是 Redis
- 2 Redis 的特点
- 2.1 速度快
- 2.2 可编程性
- 2.3 可拓展性
- 2.4 持久化
- 2.5 主从复制
- 2.5 高可用和分布式
- 2.6 客户端语言多
- 3 Redis 使用场景
- 3.1 实时数据存储
- 3.2 缓存和 Session 存储
- 3.3 消息队列
- 4 Redis 重大版本
- 5 CentOS7 安装 Redis5
1 什么是 Redis
Redis 是一种基于键值对(key-value)的 NoSQL 数据库,与很多键值对数据库不同的是,Redis 中的键固定为 string,但值可以由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成,因此 Redis 可以满足很多的应用场景,而且因为 Redis 会将所有数据都存放在内存中,所以它的读写性能非常惊人。不仅如此,Redis 还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样在发生类似断电或者机器故障的时候,内存中的数据不会“丢失”。除了上述功能以外,Redis 还提供了键过期、发布订阅、事务、流水线、Lua 脚本等附加功能。总之,如果在合适的场景使用 Redis,它就会像一把瑞士军刀一样所向披靡。
2008年,Redis 的作者 Salvatore Sanfilippo 在开发一个叫 LLOOGG 的网站时,需要实现一个高性能的队列功能,最开始是使用 MySQL来实现的,但后来发现无论怎么优化 SQL 语句等都不能使网站的性能提高上去,再加上自己囊中羞涩,于是他决定自己做一个专属于 LLOOGG 的数据库,这就是 Redis 的前身。后来,Salvatore Sanfilippo 将 Redis 1.0 的源码发布到 Github 上,可能连他自己都没想到,Redis 后来如此受欢迎。
假如现在有人问 Redis 的作者都有谁在使用 Redis,我想他可以开玩笑的回答:还有谁不使用 Redis,当然这只是开玩笑,但是从Redis 的官方公司统计来看,有很多重量级的公司都在使用 Redis,如国外的 Twitter、Instagram、Stack Overflow、Github 等,国内就更多了,如果单单从体量来统计,新浪微博可以说是全球最大的 Redis 使用者,除了新浪微博,还有像阿里巴巴、腾讯、搜狐、优酷土豆、美团、小米、唯品会等公司都是 Redis 的使用者。除此之外,许多开源技术像 ELK 等已经把 Redis 作为它们组件中的重要一环,而且 Redis 还提供了模块系统让第三方人员实现功能扩展,让 Redis 发挥出更大的威力。所以,可以这么说,熟练使用和运维 Redis 已经成为开发运维人员的必备技能。
2 Redis 的特点
Redis 之所以受到如此多公司的青睐,必然有之过人之处,下面是关于 Redis 的几个重要特性。
2.1 速度快
速度快是 Redis 最大的特点。Redis 执行命令的速度非常快,官方给出的数字是读写性能可以达到 10 万 / 秒,当然这也取决于机器的性能。下面是 Redis 速度快的几个原因:
-
Redis 的所有数据都是存放在内存中的,因此相较于 MySQL 这种数据存储在硬盘中的数据库,访问速度要快很多,这是Redis 速度快的最主要原因。下图谷歌公司 2009 年给出的各层级硬件执行速度,可以看到内存的访问速度大约是硬盘的十万倍。
-
Redis 的核心功能通过操作内存中的数据结构完成,相较于 MySQL 操作表来说,逻辑上要简单很多,所耗费的 CPU 资源也少很多。
-
Redis 使用的是单线程模型,减少了多线程之间线程切换、锁的竞争等资源消耗。(Redis 在 6.0 版本引入了多线程机制,但主要也是在处理网络和 IO,不涉及到数据命令,即命令的执行仍然采用了单线程模式)
注意:我们之前学习多线程的时候,总是说多线程能够提高效率,它的前提是处理 CPU 密集型任务,多线程能够充分利用多核资源;但 Redis 核心功能通过操作内存数据结构就能够完成,这并不会占用很多 CPU,因此单线程可以充分利用现代处理器的高速缓存,减少上下文切换的开销,从而实现高性能。 -
Redis 是用 C 语言实现的,一般来说 C语言 实现的程序 “距离” 操作系统更近,执行速度相对会更快。(网上对这一点说法存在争议,因为我们说 Redis 快一般是和 MySQL 进行比较的,而 MySQL 也是使用 C语言 实现的。)
-
作者对于 Redis 源代码可以说是精打细磨,曾经有人评价 Redis 是少有的集性能和优雅于一身的开源代码。
2.2 可编程性
我们可以通过简单的交互式命令对 Redis 进行操作,也可以通过一些脚本的方式,如 Lua 脚本,来批量执行一些操作或创建新的 Redis 命令。
2.3 可拓展性
Redis 是一种基于键值对(key-value)的 NoSQL 数据库,Redis 中的键固定为 string,但值可以由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成,这使得 Redis 不仅能便于在许多应用场景的开发,同时也能提高开发效率。
同时,Redis 还支持通过 C/C++/Rust 来编写 Redis 拓展 (本质上是一个动态链接库),这样使得公司可以根据自己的业务需要,通过扩展让 Redis 支持更多的数据结构和命令,定制化开发。
2.4 持久化
通常来看,将数据放在内存中是不安全的,一旦发生断电或者机器故障,重要的数据可能就会丢失,因此 Redis 提供了两种持久化方式:RDB 和 AOF,即可以用两种策略将内存的数据保存到硬盘中,这样就保证了数据的可持久性。
2.5 主从复制
Redis 提供了复制功能,实现了多个相同数据的 Redis 副本,复制功能是分布式 Redis 的基础。Redis 主从复制架构如下图所示:
2.5 高可用和分布式
Redis 提供了高可用实现的 Redis 哨兵(Redis Sentinel),能够保证 Redis 结点的故障发现和故障自动转移。也提供了 Redis 集群(Redis Cluster),是真正的分布式实现,提供了高可用、读写和容量的扩展性。
2.6 客户端语言多
Redis 提供了简单的 TCP 通信协议,很多编程语言可以很方便地接入到 Redis,并且由于 Redis 受到社区和各大公司的广泛认可,所以支持 Redis 的客户端语言也非常多,几乎涵盖了主流的编程语言,例如 C、C++、Java、PHP、Python、NodeJS 等。
3 Redis 使用场景
要充分理解 Redis 的作用,需要读者对网站的架构有一定的基础理解,如果你缺少这方面的背景知识,建议先移步我上一篇文章 分布式架构演进之路 ,再继续本篇的学习。
3.1 实时数据存储
Redis 的多种内存数据结构可以为需要低延迟和高吞吐量的实时应用程序构建数据基础设施,即 Redis 可以作为数据库。在大多数情况下,数据存储优先考虑的是容量,但也有一些场景考虑的是速度,比如在商业搜索业务中,由于它对性能要求非常高,因此需要使用类似于 Redis 这样的数据库,将需要检索的数据都存储在内存中。
3.2 缓存和 Session 存储
在缓存方面:由于 MySQL 将数据存储在硬盘中,因此访问速度很慢,又由于存在 “二八原则”,因此我们可以将热点数据拷贝一份放在 Redis 中作为缓存,从而有效提高数据访问速度。Redis 提供了键值过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略,可以很好的实现缓存。
在 Session 方面:
- 在单机系统中,用户的 Session 信息是直接存储在应用服务器中的,用户访问服务器时服务器根据用户浏览器中的 cookie 信息(SessionId)来辨识用户。
- 但是在分布式系统中,由于用户请求可能被负载均衡器分配到任意一台应用服务器上,因此就可能会出现需要用户重复登录的情况,因为该用户的 Session 信息只存在于为用户提供过服务的应用服务器中,这显然是不科学的。
- 为了解决上述问题,我们可以将用户的 Session 信息单独拎出来,放在一组独立的机器上存储,由于服务器为用户提供服务需要先验证用户身份信息,因此存储用户 Session 信息的服务器速度必须要快,此时就可以考虑使用 Redis;并且这样做还有一个好处,就是即使应用服务器重启了,用户的 Session 信息也不会丢失。
Redis 作为数据库和 Redis 作为缓存的区别在于:
- 在数据库中,Redis 存储的是全量数据,这里的数据是不能随便丢的。
- 而在缓存中,Redis 中存储的是从全量数据库中拷贝过来的部分数据,即使丢失了影响也不大。
3.3 消息队列
在文章最开始介绍 Redis 的时候,我们提到过 Salvatore Sanfilippo 开发 Redis 的初衷其实是用它来实现一个高性能的队列功能,即消息队列,但随着 Redis 的发展,Redis 在用作缓存方面大获成功,用作消息队列方面却显得一般。
消息队列系统可以说是⼀个大型网站的必备基础组件,通过它我们可以实现一个网络版本的生产者消费者模型,从而在分布式系统中做到业务解耦与非实时业务削峰等工作。现在业界存在许多知名的消息队列组件,比如 RabbitMQ、Kafka、RocketMQ等,它们在消息队列中的功能要比 Redis 完善,但如果公司业务对消息队列的功能依赖不是很多,那么使用 Redis 作为消息队列也是完全可以的。
4 Redis 重大版本
Redis自发布以来经历了多个重大版本更新,以下是一些主要的版本及其特点:
- Redis 2.6 :于2012年发布,引入了服务端Lua脚本支持、键过期时间毫秒级精度、从节点只读功能等多项特性。
- Redis 2.8 :2013年发布,增加了部分主从复制功能,尝试性地支持IPv6,以及Redis Sentinel的第二版等。
- Redis 3.0 :2015年发布,引入了官方的分布式实现Redis Cluster,优化了内存访问,并提高了性能。
- Redis 3.2 :2016年发布,添加了GEO相关功能和新的List编码类型quicklist等。
- Redis 4.0 :提供了模块系统、PSYNC2.0、新的缓存剔除算法LFU、非阻塞del命令等。
- Redis 5.0 :引入了新的流数据类型、Redis模块API、RDB增加了LFU和LRU信息等。
- Redis 6.0 :引入了多线程IO、新模块API、更好的过期循环、支持SSL等。
- Redis 7.0 :新增Function自定义函数库、支持Client-Eviction、Sharded-Pub/Sub、命令执行耗时直方图等。
每个版本的发布都带来了新特性和性能改进,以满足不同场景下的需求。Redis的版本命名规则是偶数为稳定版本,奇数为开发版本,这种规则有助于用户选择合适的版本进行部署。
关于 Redis 更多版本以及版本更多变更细节可以查看 GitHub:https://github.com/redis/redis/releases
5 CentOS7 安装 Redis5
上面我们介绍了 Redis 几个重要的版本,在这里我们选择 Redis5 版本进行学习,原因是 Redis5 已经支持了大部分的功能特性,同时相较于 Redis7 版本,更容易进行安装使用,而且目前很多企业中使用的也是 Redis5 版本。
Redis 的官方并不支持微软的 Windows 操作系统,因为 Redis 的许多特性都是和操作系统相关的,所以支持 Windows 会增加维护成本,而且更重要的是大部分公司都在使用 Linux 操作系统,而 Redis 在 Linux 操作系统上的表现已经得到实践的证明。当然 Redis 作为一款优秀的开源技术,还是吸引到微软公司的注意,微软公司的开源技术组在 Github 上维护了一个 Redis 分支。不过还是强烈建议大家在 Linux 上使用 Redis。
1. 使用 yum 安装
首先安装 scl 源,再安装 redis:
yum install centos-release-scl-rh
yum install rh-redis5-redis
2. 创建符号链接
默认安装的目录为 /opt/rh/rh-redis5/root/usr/bin/ ,藏的太深了,不方便使用。可以通过符号链接,把需要用到的关键内容设置到方便使用的目录中。
针对可执行程序设置符号链接:
cd /usr/bin
ln -s /opt/rh/rh-redis5/root/usr/bin/redis-server ./redis-server
ln -s /opt/rh/rh-redis5/root/usr/bin/redis-sentinel ./redis-sentinel
ln -s /opt/rh/rh-redis5/root/usr/bin/redis-cli ./redis-cli
针对配置文件设置符号链接:
cd /etc/
ln -s /etc/opt/rh/rh-redis5/ ./redis
CentOS7 yum 源中自带的 Redis 安装包版本是 Redis3.2,因此我们需要通过 scl 源来安装 Redis5 版本。而 CentOS8 yum 源中自带的 Redis 版本是 Redis5,因此直接 yum install redis 即可,不用进行上述一系列操作。
3. 支持远程连接
默认情况下,Redis 只绑定在 127.0.0.1 接口上,即只允许从 127.0.0.1(localhost)上进行连接 Redis 服务,为了允许 Redis 接受远程访问,需要修改 Redis 的配置文件 /etc/redis.conf
:
- 定位到
bind 127.0.0.1
开头的一行,修改为bind 0.0.0.0
以添加全接口支持。 - 关闭保护模式,
protected-mode no
。
bind 0.0.0.0
protected-mode no
同时,我们还可以将 daemonize 修改为 yes,让 redis-server 变为守护进程:
daemonize yes
4. 设置工作目录
先先创建工作目录:
mkdir -p /var/lib/redis
再在 /etc/redis.conf
配置文件中,设置 Redis 工作目录:
dir /var/lib/redis
5. 设置日志目录
先创建日志目录:
mkdir -p /var/log/redis/
再在 /etc/redis.conf
配置文件中,设置 Redis 日志目录:
logfile /var/log/redis/redis-server.log
至此,Redis5 安装以及相关配置完成。
启动 redis-server
Redis 是一个 客户端-服务器 结构的程序,Redis 服务器,即 redis-server 是 Redis 本体,负责存储和管理数据;而 Redis 客户端,即 redis-cli 通过网络访问 redis-server 中的数据。
redis-server /etc/redis/redis.conf
启动 redis-cli
redis-cli -h {host} -p {port}
启动 redis-cli 之后,我们可以输入 ping 命令,如果返回 pong,说明 redis-cli 可以连通 redis-server。
停止 redis-server
首先通过 netstat
命令查看 redis-server 对应的 PID,然后 kill -9 即可:
netstat -nltp | grep redis
kill -9 xxx
相关文章:
【Redis】初识 Redis
文章目录 1 什么是 Redis2 Redis 的特点2.1 速度快2.2 可编程性2.3 可拓展性2.4 持久化2.5 主从复制2.5 高可用和分布式2.6 客户端语言多 3 Redis 使用场景3.1 实时数据存储3.2 缓存和 Session 存储3.3 消息队列 4 Redis 重大版本5 CentOS7 安装 Redis5 1 什么是 Redis Redis …...
【PTA天梯赛】L1-003 个位数统计(15分)
作者:指针不指南吗 专栏:算法刷题 🐾或许会很慢,但是不可以停下来🐾 文章目录 题目题解总结 题目 题目链接 题解 使用string把长度达1000位的数字存起来开一个代表个位数的数组 a[11]倒序计算最后一位,…...
c语言位操作符相关题目之交换两个数的值
文章目录 一、题目二、方法11,思路2,代码实现 三、方法21,思路2,代码实现 四、方法31,思路2,代码实现 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、题目 实现两个变量的…...
智能家居装修怎么布线?智能家居网络与开关插座布置
打造全屋智能家居。计划的智能家居方案以米家系列为主,智能家居联网方案以无线为主。装修前为了装备智能家居做了很多准备工作,本文深圳侨杰智能分享一个智能家居装修和布线方面的心得与实战知识。希望能对大家的装修有所帮助。 1.关于网络 如果房子比…...
GD32MCU最小系统构成条件
大家是否有这个疑惑:大学课程学习51的时候,老师告诉我们51的最小系统构成?那么进入32位单片机时代,gd32最小系统构成又是怎么样的呢? 1.供电电路 需要确保供电的电压电流稳定,以东方红开发版为例ÿ…...
C语言——循环结构:while、do...while、for
while循环 基本结构 C语言中的while循环是一种基本的循环控制结构,它允许程序重复执行一段代码块,直到指定的条件不再满足为止。while循环的语法结构如下: while (condition) { // 循环体 // 在这里编写要重复执行的代码 } condition …...
C#实现最短路径算法
创建点集 double r 200 * 500;double width 1920;double height 1080;int col (int)(r / width);int row (int)(r / height);List<(double, double)> list1 new List<(double, double)>();for (int i 0; i < row; i){var y i * height;if (y < r){va…...
Python函数 之 匿名函数
1.概念 匿名函数: 使用 lambda 关键字 定义的表达式,称为匿名函数. 2.语法 lambda 参数, 参数: 一行代码 # 只能实现简单的功能,只能写一行代码 # 匿名函数 一般不直接调用,作为函数的参数使用的 3.代码 4.练习 # 1, 定义匿名函数, 参数…...
深入解析 Mybatis 中 Mapper 接口的实现原理
《深入解析 Mybatis 中 Mapper 接口的实现原理》 在使用 Mybatis 进行数据库操作时,Mapper 接口扮演着重要的角色。它提供了一种简洁、类型安全的方式来与数据库进行交互。那么,Mybatis 是如何实现 Mapper 接口的呢? 一、Mybatis 简介 Myb…...
微信小程序获取用户头像
微信为了安全更改了许多API接口,属实烦人。这次带来的是微信小程序基础库3.5.0还能使用的获取用户头像方法 按键式 <view><view><button open-type"chooseAvatar" bindchooseavatar"onGetUserImage">获取用户头像</butto…...
uniapp小程序连接蓝牙设备
uniapp小程序连接蓝牙设备 一、初始化蓝牙模块二、开始搜索三、连接蓝牙四、监听特征值变化五、调用示例utils.js文件 一、初始化蓝牙模块 这一步是必须的,在开发项目过程中,初始化蓝牙模块之后,紧接着就要开启一些监听的api,供后…...
AI大模型推理过程与优化技术深度剖析
在人工智能的浩瀚星空中,AI大模型以其卓越的性能和广泛的应用前景,成为了推动技术进步的璀璨明星。本文旨在深入探讨AI大模型的推理过程及其背后的优化技术,为理解这一复杂而精妙的技术体系提供一个清晰的视角。 一、AI大模型的推理过程揭秘 …...
Dubbo 核心概念介绍
Dubbo 是一款阿里巴巴开源的高性能 RPC(远程过程调用)框架,广泛应用于微服务架构中。它主要解决服务治理、负载均衡、故障转移等分布式系统问题。本文将介绍 Dubbo 的核心概念,包括服务提供者(Provider)、服…...
练习 6.7:⼈们 在为练习 6.1 编写的程序中,再创建两个表⽰⼈的字典,然后将这三个字典都存储在⼀个名为 people 的列表中。
练习 6.7:⼈们 在为练习 6.1 编写的程序中,再创建两个表⽰⼈的字典,然后将这三个字典都存储在⼀个名为 people 的列表中。 要求 遍历这个列表,将其中每个⼈的所有信息都打印出来。 代码 human {shuicc: {first_name: shui,la…...
星环科技知识平台TKH:引领企业构建高效AI基础设施,加速数智化转型新纪元
5月30-31日,2024向星力未来数据技术峰会期间,星环科技正式发布其最新人工智能基础设施产品——Transwarp Knowledge Hub星环知识平台(以下简称TKH)。该平台旨在为企业打通从人工智能基础设施建设到大数据、人工智能等研发应用的完…...
嵌入式板级支持包(BSP)80道面试题及参考答案(3万字长文)
目录 解释什么是通用输入输出(GPIO)接口及其在BSP中的作用。 描述SPI接口的主要特点和用途。 说明IC总线协议的工作原理。 如何在BSP中配置一个UART接口? USB设备控制器在BSP中的初始化步骤是什么? 以太网接口如何在BSP中被支持? 什么是SDIO,它在哪些场景下会被使…...
如何找回误删的文件?4个常用文件恢复方法!
对于许多用户来说,误删文件是一种常见而令人懊恼的情况。恢复误删文件的重要性在于,它可以帮助用户找回宝贵的数据,避免因数据丢失带来的各种不便和损失。 如何找回不小心删除的文件? 误删数据不知道怎么恢复,会给我…...
在大型企业级应用中,如何优化 XML 数据的存储和检索效率,以满足高并发访问需求?
在大型企业级应用中,优化XML数据的存储和检索效率可采取以下措施: 数据库选择:选择适合XML存储和查询的数据库,如Oracle、MySQL、PostgreSQL等。这些数据库提供了专门的XML存储和查询功能,能够更高效地处理XML数据。 …...
win10 A4000 下使用Xinference来进行大模型的推理测试
创建环境 conda remove --name xinference --all conda create --name xinference python3.10 conda activate xinference 安装: conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia pip install tiktoken sentence-transformer…...
【9-2:代码规范】
算法级思想 代码规范(java) 代码规范(java) 方法参数必须一致,不要出现自动装箱拆箱操作SimpleDateFormat是线程不安全的使用equals注意空指针异常日志 事务场景中如果出现异常被捕时注意回滚不要再finally中使用retu…...
std::filesystem::current_path().generic_string()的bug
这行指令出来会出来大小写的盘符,如D 或者d,似乎随机 #include <iostream> #include <filesystem>namespace fs std::filesystem;bool arePathsSame(const fs::path& p1, const fs::path& p2) {return p1 p2; }int main() {fs::p…...
Python excel知识库批量模糊匹配的3种方法实例(fuzzywuzzy\Gensim)
前言 当然,基于排序的模糊匹配(类似于Excel的VLOOKUP函数的模糊匹配模式)也属于模糊匹配的范畴,但那种过于简单,不是本文讨论的范畴。 本文主要讨论的是以公司名称或地址为主的字符串的模糊匹配。 使用编辑距离算法进…...
stm32使用单通道规则组ADC
Driver_ADC.c 如果需要关闭adc转换,只需要设置CNT,将其置为0,后面再转换一次就停止了。 #include "Driver_ADC.h"void Driver_ADC1_Init(void) {/* 1. 时钟配置 *//* 1.1 adc时钟 */RCC->APB2ENR | RCC_APB2ENR_ADC1EN;RCC-&g…...
[python][whl]causal-conv1d的python模块在windows上whl文件下载
【模块介绍】 causal-conv1d,即因果一维卷积(Causal 1D Convolution),是一种在深度学习特别是时序数据处理中广泛应用的卷积技术。它主要特点在于其“因果性”,即输出的每个元素仅依赖于输入序列中它之前的元素&#…...
介绍 CM3leon,一个更高效、最先进的文本和图像生成模型
近几个月来,随着让机器理解和表达语言的自然语言处理技术以及可根据文本输入生成图像的系统的进步,人们对生成式人工智能模型的兴趣和研究也在加速。今天,我们要展示的是 CM3leon(发音类似于 “变色龙”),它…...
HTTPS和HTTP有哪些区别
两者的主要区别在于安全性和数据加密: 加密层:HTTPS 在HTTP 的基础上增加了SSL/TLS 协议作为加密层,确保数据传输的安全性,即使数据被截获,没有相应的密钥也无法解读数据内容。而HTTP 数据传输是明文的,容易受到攻击。…...
Docker 安装 PostgreSQL
1. 启动 PostgreSQL 容器 docker run --name ffj-postgres -p 5432:5432 -e POSTGRES_PASSWORDCisc0123 -d postgres docker run:启动一个新的容器。--name指定容器名称为 ffj-postgres。-p 5432:5432:将主机的 5432 端口映射到容器的 5432 端口。-e P…...
实践致知第12享:如何新建一个Word并设置格式
一、背景需求 小姑电话说:要新建一个Word文档,并将每段的首行设置空2格。 二、解决方案 1、在电脑桌面上空白地方,点击鼠标右键,在下拉的功能框中选择“DOC文档”或“DOCX文档”都可以,如下图所示。 之后࿰…...
Rust vs Go: 特点与应用场景分析
目录 介绍Rust的特点Go的特点Rust的应用场景Go的应用场景总结 介绍 Rust和Go(Golang)是现代编程语言中两个非常流行的选择。凭借各自的独特优势和广泛的应用场景,吸引了大量开发者的关注。本文将详细介绍Rust和Go的特点,并探讨它…...
2024的开放式耳机排行榜,看这六个耳机选购的小Tips
寻找一款既能聊天又能听歌的耳机并不容易,但是开放式耳机可能会是一个理想的选择。与传统的入耳式耳机相比,开放式耳机可以让你更加自然地与周围环境互动,并且不容易掉落。当然,在市场上选择一款适合自己的开放式耳机也是至关重要…...
织梦 和wordpress/淘宝关键词指数查询
1.点击如下链接进入下载jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 按照提示安装成功!(很简单) 下载如图: 2.找到如图所示的目录(直到home,是bin的根目录)…...
html 学习网站/百度搜索推广的五大优势
下面这段代码可以在页面关闭的时候自定义信息提示你 <html><head><title></title><script type"text/javascript">functionConfirmClose() { window.event.returnValue "请先保存好数据"; } functionShowConfirmClose(bln…...
网站怎么做有创意/优秀软文案例
首先介绍矩阵的迹(trace)的概念: 如果一个矩阵是方阵,那它的迹tr(A)等于对角线的元素之和。 多元函数判断驻点性质的方法: 找到多元函数jacobian向量(即目标函数对自变量的一阶偏导数向量)为…...
php做电影网站/小说排行榜百度
1、先上个图看下网页版数据、mysql结构化数据2、分析思路:该网页主要采用动态加载来实现的,通过刷新页面查看URL,最终发现想要的数据,在js链接当中,进行头文件分析,构造URL,完成数据获取数据存储…...
php网站建设与维护/正规seo排名多少钱
基数排序基本思想 将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。 这样说明,比较难理解,…...
平面设计相关的网站有哪些内容/网站seo推广排名
在上一篇《一个极简、高效的秒杀系统(战略设计篇)》中,楼主重点讲解了基于Redis Lua脚本的秒杀系统设计方案,如果没看过的同学,请花十分钟复习下。在这一篇中,楼主会结合代码,来探讨如何将设计…...