SpringBootWeb 篇-深入了解 Redis 五种类型命令与如何在 Java 中操作 Redis
🔥博客主页: 【小扳_-CSDN博客】
❤感谢大家点赞👍收藏⭐评论✍
文章目录
1.0 Redis 概述
1.1 Redis 下载与安装
2.0 Redis 数据类型
3.0 Redis 常见五种类型的命令
3.1 字符串操作命令
3.2 哈希操作命令
3.3 列表操作命令
3.4 集合操作命令
3.5 有序集合操作命名
3.6 通用命令
4.0 在 Java 中操作 Redis
4.1 Spring Data Redis 环境搭建
4.2 操作字符串类型的数据
4.3 操作哈希类型的数据
4.4 操作列表类型的数据
4.5 操作集合类型的数据
4.6 操作有序集合类型的数据
1.0 Redis 概述
Redis 是一个基于内存的 key-value 结构数据库。基于内存存储,读写性能高。适合存储热点数据,以便大量用户访问时可以快速得到响应。
1.1 Redis 下载与安装
Redis 官网:Redis - The Real-time Data Platform
Redis 的 Windows 版属于绿色软件。直接解压即可使用,解压目录结构如下:
1)redis.windows.conf:配置文件,用来配置 Redis 服务器的各种参数和选项。
比如:
port:指定 Redis 服务器监听的端口号,默认为 6379。
bind:指定Redis服务器监听的IP地址。
requirepass:设置访问Redis数据库需要的认证密码。
maxmemory:设置Redis数据库使用的最大内存限制。
maxclients:设置Redis允许的最大客户端连接数。
logfile:指定Redis日志文件的位置。
dir:指定Redis持久化数据文件的存储目录。
pidfile:指定Redis服务器进程的PID文件位置。
2)redis-server.exe:Redis 服务端可执行文件,用来启动 Redis 服务端。
3)redis-cli.exe:Redis 客户端可执行文件,用来启动 Redis 客户端。
2.0 Redis 数据类型
Redis 存储的是 key-value 结构的数据,其中 key 是字符串类型,value 有5 种常用的数据类型:字符串 string、哈希 hash、列表 list、集合 set、有序集合 sorted set/zset 。
各种数据类型的特点:
1)字符串 string:普通字符串,Redis 中最简单的数据类型。
2)哈希 hash:也叫散列,类似于 Java 中的 HashMap 结构。
3)列表 list:按照插入顺序,可以有重复元素,类似于 Java 中的 LinkedList 。
4)集合 set:无序集合,没有重复元素,类似于 Java 中的 HashSet 。
5)有序集合 zset:集合中每一个元素关联一个分数 score,根据分数升序排序,没有重复元素。
3.0 Redis 常见五种类型的命令
字符串操作命令、哈希操作命令、列表操作命令、集合操作命令、有序集合操作命令。
3.1 字符串操作命令
Redis 字符串类型的常用命令:
1)SET key value:设置指定 key 的值。
2)GET key:获取指定 key 的值。
3)SETEX key seconds value:设置指定 key 的值,并将 key 的过期时间设为 seconds 秒。
4)SETNX key value:只有在 key 不存在时设置 key 的值。
代码演示:
> set id 1 OK > get id 1 > setex code 30 123456 OK > setnx id 2 0
3.2 哈希操作命令
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
Redis 哈希类型的常用命令:
1)HSET key field value:将哈希表 key 中的字段 field 的值设为 value 。
2)HGET key field:获取存储在哈希表中指定字段的值。
3)HDEL key field:删除存储在哈希表中的指定字段。
4)HKEYS key:获取哈希表中所有字段。
5)HVALS key:获取哈希表中所有值。
代码演示:
存储一个 student 对象信息。
设置字段值:
> HSET student name 小板 1 > HSET student age 22 1 > hset student gender 男 1
运行结果:
获取相应字段的值:
> hget student name 小板 > hget student age 22 > hget student gender 男
获取字段相对应的值。
获取 student 所有的 field 与 所有的 value:
> hkeys student name age gender > hvals student 小板 22 男
删除指定的字段:
> hdel student gender 1
运行结果:
3.3 列表操作命令
Redis 列表是简单的字符串列表,按照插入顺序排序。
Redis 列表类型的常用命令:
1)LPUSH key value1 [value2]:将一个或多个值插入到列表头部。
2)LRANGE key start stop:获取列表指定范围内的元素。
3)RPOP key:移除并获取列表最后一个元素。
4)LLEN key:获取列表长度。
代码演示:
在列表中插入多个值:
> lpush mylist a b c d 4
运行结果:
该插入的方式为:头插数据。
获取指定全部数据:
> lrange mylist 0 -1 d c b a
删除最后一个元素:
> rpop mylist a
获取列表中的个数:
> llen mylist 3
3.4 集合操作命令
Redis set 是 string 类型的无序集合。集合成员是唯一的,集合中不能出现重复的数据。
Redis 集合类型的常用命令:
1)SADD key member1 [member2]:向集合添加一个或多个成员。
2)SMEMBERS key:返回集合中的所有成员。
3)SCARD key:获取集合的成员数。
4)SINTER key1 [key2]:返回给定所有集合的交集。
5)SUNION key1 [key2]:返回所有给定所有集合的并集。
6)SREM key member1 [member2]:删除集合中一个或多个成员。
代码演示:
向集合中添加元素:
> sadd set1 a b c d 4 > sadd set2 a b x y 4
需要注意的是,添加顺序不等于存储之后的顺序。这里就可以体现出了无序性。
获取所有的成员:
> smembers set1 a d c b > smembers set2 a x y b
获取集合中成员的个数:
> scard set1 4 > scard set2 4
获取两个集合的交集:
> sinter set1 set2 a b
获取两个集合的并集:
> sunion set1 set2 a x y d c b
3.5 有序集合操作命名
Redis 有序集合是 string 类型元素的集合,且不允许有重复成员。每一个元素都会关联一个 double 类型的分数。
Redis 有序集合类型的常用命令:
1)ZADD key score1 member1 [score2 member2]:向有序集合添加一个或多个成员。
2)ZRANGE key start stop[WITHSCORE]:通过索引区间返回有序集合中指定区间的成员。
3)ZINCRBY key increment member:有序集合中对指定成员的分数加上增量 increment 。
4)ZREM key member1 [member2]:移除有序集合中的一个或多个成员。
代码演示:
向有序集合中添加成员:
> zadd zset 10 a 11 b 12 c 3
运行结果:
获取全部成员:
> zrange zset 0 -1 a b c
也可以带上分数:
> zrange zset 0 -1 WITHSCORES a 10 b 11 c 12
对 zet 集合中的指定成员的 score 增加:
> zincrby zset 5 a 15
运行结果:
移除集合中指定的成员:
> zrem zset c 1
运行结果:
3.6 通用命令
Redis 的通用命令是不分数据类型的,都可以使用命令。
Redis 通用的常用命令:
1)KEYS pattern:查找所有符合给定模式(pattern)的 key 。
2)EXISTS key:检查给定 key 是否存在。
3)TYPE key:返回 key 所存储的值的类型。
4)DEL key:该命令用于在 key 存在则删除 key 。
代码演示:
KEYS *,匹配所有的 key:
> keys * id STUDENT set2 zset set1 student mylist list
检查是否存在 set1:
> exists set1 1 > exists set3 0
存在则返回 1;不存在则返回 0 。
判断类型:
> type set1 set > type list list > type student hash > type id string > type zset zset
删除 list:
> del list 1 > keys * id STUDENT set2 zset set1 student mylist
4.0 在 Java 中操作 Redis
Redis 的 Java 客户端很多,常用的几种:Jedis、Lettuce、Spring Data Redis 。在 Spring Data Redis 是 Spring 的一部分,对 Redis 底层开发进行了高度封装,在 Spring 项目中,可以使用 Spring Data Redis 来简化操作。
4.1 Spring Data Redis 环境搭建
1)导入 Spring Data Redis 的 maven 坐标。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
2)配置 Redis 数据源。
redis:host: localhostport: 6379password: 123456database: 0
host:主机号、port:端口号、password:密码、database:数据库。
这里的数据库指定是 Redis 中的数据库,一共有 16 个数据库,默认会自动选择 0 号的数据库。
3)编写配置类,创建 RedisTemplate 对象。
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.StringRedisSerializer;@Configuration public class RedisConfiguration {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){//创建 redis 模板对象RedisTemplate redisTemplate = new RedisTemplate();//设置 redis 的连接工厂redisTemplate.setConnectionFactory(redisConnectionFactory);//设置 redis key 的序列化器redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;} }
4)通过 RedisTemplate 对象操作 Redis 。
完成以上的步骤,就可以通过 RedisTemplate 对象来获取五种类型的操作对象了。
代码演示:
import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.*;@SpringBootTest public class test {@AutowiredRedisTemplate redisTemplate;@Testpublic void test(){System.out.println(redisTemplate);//获取到 string 类型的操作对象ValueOperations valueOperations = redisTemplate.opsForValue();//获取到 hash 类型的操作对象HashOperations hashOperations = redisTemplate.opsForHash();//获取到 list 类型的操作对象ListOperations listOperations = redisTemplate.opsForList();//获取到 set 类型的操作对象SetOperations setOperations = redisTemplate.opsForSet();//获取到有序集合 zset 类型的操作对象ZSetOperations zSetOperations = redisTemplate.opsForZSet();} }
4.2 操作字符串类型的数据
常见的方法:
1)set(key,value):设置键值对 k v 。
2)set(key,value,timeout,unit):设置有效时间的键值对。
3)get(key):根据键来获取值。
4)setIfAbsent(key,value):设置一个键值对,只有在 key 不存在时设置 key 的值。
代码演示:
@Testpublic void test1(){//先获取到操作字符串类型的对象ValueOperations valueOperations = redisTemplate.opsForValue();//设置键值对 k vvalueOperations.set("cls","1");//根据键来获取值String cls = (String) valueOperations.get("cls");//设置有效时间的键值对,设置一个有效时间为 3 分钟的键值对valueOperations.set("code","123456",3, TimeUnit.MINUTES);//设置一个键值对,只有在 key 不存在时设置 key 的值valueOperations.setIfAbsent("bee","2");//因为已经存在bee键,所以值依然是3valueOperations.setIfAbsent("bee","3");}
运行结果:
4.3 操作哈希类型的数据
常见的方法:
1)put(key,field,value):新增数据。
2)get(key,field):获取数据。
3)keys(key):获取 key 中的全部字段。
4)values(key):获取 key 中的全部值。
5)delete(key,field):删除 key 中 field 的字段。
代码演示:
@Testpublic void test2(){//先获取到操作哈希的对象HashOperations hashOperations = redisTemplate.opsForHash();//新增数据hashOperations.put("student","id","1");hashOperations.put("student","name","小扳手");hashOperations.put("student","age","22");//根据字段来获取值String id = (String) hashOperations.get("student", "id");String name = (String) hashOperations.get("student", "name");System.out.println(id + " " + name);//获取student中的全部键Set student = hashOperations.keys("student");System.out.println(student);//获取student中的全部值List student1 = hashOperations.values("student");System.out.println(student1);//删除指定的字段hashOperations.delete("student","age");}
运行结果:
4.4 操作列表类型的数据
常见的方法:
1)leftPushAll(key,values):批量增加数据。
2)leftPush(key,value):新增数据。
3)range(key,start,end):获取指定范围的数据。
4)rightPop(key):删除最后一个数据。
5)size(key):获取列表中的数据个数。
代码演示:
@Testpublic void test3(){ListOperations listOperations = redisTemplate.opsForList();//批量增加数据listOperations.leftPushAll("mylist","1","2","3");//新增单个数据listOperations.leftPush("mylist","4");//获取范围内的数据List mylist = listOperations.range("mylist", 0, -1);System.out.println(mylist);//删除最后一个数据String date = (String) listOperations.rightPop("mylist");System.out.println(date);//获取列表中的数据个数Long len = listOperations.size("mylist");System.out.println(len);}
运行结果:
4.5 操作集合类型的数据
常见的方法:
1)add(key,values):新增单个数据或者批量新增数据。
2)members(key):获取 Key 中的全部成员。
3)size(key):获取 key 中的成员个数。
4)intersect(key1,key2):获取两个集合中的交集。
5)union(key1,key2):获取两个集合中的并集。
6)remove(key,values):删除 key 中指定的 value ,可以是一个 value 也可以是多个 value 。
代码如下:
@Testpublic void test4(){SetOperations setOperations = redisTemplate.opsForSet();//批量新增数据setOperations.add("set1","a","b","c");setOperations.add("set2","a","x","y");//获取key中的成员Set member = setOperations.members("set1");System.out.println(member);//获取key中的成员个数Long len = setOperations.size("set2");System.out.println(len);//两个集合的交集Set intersect = setOperations.intersect("set1", "set2");System.out.println(intersect);//获取两个集合的并集Set union = setOperations.union("set1", "set2");System.out.println(union);//删除成员setOperations.remove("set1","c");}
运行结果:
4.6 操作有序集合类型的数据
常见的方法:
1)add(key,value,score):新增数据。
2)range(key,start,end):获取指定范围的数据。
3)incrementScore(key,value,delta):给指定的数据的分数增加 dalta 。
4)remove(key,values):删除数据。可以删除单个数据,也可以批量删除数据。
代码演示:
@Testpublic void test5(){ZSetOperations zSetOperations = redisTemplate.opsForZSet();//新增数据zSetOperations.add("z","a",10);zSetOperations.add("z","b",15);zSetOperations.add("z","c",20);//获取指定范围的数据Set z = zSetOperations.range("z", 0, -1);System.out.println(z);//给指定的数据增加分数zSetOperations.incrementScore("z","a",10);//删除数据zSetOperations.remove("z","c");}
运行结果:
相关文章:
SpringBootWeb 篇-深入了解 Redis 五种类型命令与如何在 Java 中操作 Redis
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Redis 概述 1.1 Redis 下载与安装 2.0 Redis 数据类型 3.0 Redis 常见五种类型的命令 3.1 字符串操作命令 3.2 哈希操作命令 3.3 列表操作命令 3.4 集合操作命令 …...
mysql设置允许外部ip访问,局域网IP访问
(支持MYSQL8版本) 1. 登录进入mysql;mysql -uroot -p输入密码进入 2. 输入以下语句,进入mysql库,查看user表中root用户的访问 use mysql; select host,user from user; 3. 更新user表中root用户域属性,…...
mac虚拟光驱工具:Daemon Tools for Mac
Daemon Tools for Mac是一款功能强大的虚拟光驱工具,它为用户提供了在Mac上模拟物理光驱的能力,从而方便用户处理各种光盘映像文件。以下是关于Daemon Tools for Mac的详细介绍: 守护进程工具:Daemon Tools不仅是一个简单的虚拟光…...
软考 系统架构设计师系列知识点之杂项集萃(32)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(31) 第51题 网络逻辑结构设计的内容不包括( )。 A. 逻辑网络设计图 B. IP地址方案 C. 具体的软硬件、广域网连接和基本服务 D. 用户培训计划 正确答案&am…...
Web--CSS基础
文章目录 定义方式选择器文本字体背景边框元素展示格式内边距与外边距盒子模型位置浮动flex布局响应式布局 定义方式 行内样式表 直接定义在style属性中,作用于当前标签 <img src "/imges/logo.jpg" alt "" style "width 400"…...
服务部署:Linux系统部署C# .NET项目
1. 安装 .NET SDK 首先,你需要在你的 Linux 系统上安装 .NET SDK。 Ubuntu系统: 下载 Microsoft 包配置文件 wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb 这个命令使用 wge…...
【机器学习】基于卷积LSTM的视频预测
1. 引言 1.1 LSTM是什么 LSTM(Long Short-Term Memory)是一种特殊的循环神经网络(RNN)变体,旨在解决传统RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题。LSTM通过引入门控机制和细胞状态的概念,使得…...
细说wayland和X11
文章目录 协议介绍协议区别开发差异 Wayland和X11都是用于Linux和其他类Unix系统的显示服务器协议。它们负责在用户和应用程序之间的交互中管理屏幕的输出以及输入设备的输入。 协议介绍 X11通常称为X Window System,是一个历史悠久的显示服务器,自1987…...
数据结构:二叉树的实现
目录 二叉树的遍历方式 前序遍历: 中序遍历: 后序遍历: 二叉树的基本结构和功能 基本结构: 基本功能: 二叉树功能的实现思路 二叉树功能的实现 1、构建一个二叉树 2、二叉树的销毁 3、计算二叉树里的节点个数 4、得…...
Helm离线部署Rancher2.7.10
环境依赖: K8s集群、helm 工具 Rancher组件架构 Rancher Server 包括用于管理整个 Rancher 部署的所有软件组件。 下图展示了 Rancher 2.x 的上层架构。下图中,Rancher Server 管理两个下游 Kubernetes 集群 准备Rancher镜像推送到私有仓库 cat >…...
Linux目录的作用和常用指令
目录结构及其详细作用 / (根目录) Linux文件系统的起点,所有文件和目录都在其下。 /bin 存放系统启动和运行时所需的基本命令,如 ls, cp, mv, rm,这些命令在单用户模式下或系统崩溃时仍然可用。 /boot 包含启动引导加载器的文件和Linux内核…...
Nvidia/算能 +FPGA+AI大算力边缘计算盒子:隧道和矿井绘图设备
RockMass 正在努力打入采矿业和隧道工程利基市场。 这家位于多伦多的初创公司正在利用 NVIDIA AI 开发一款绘图平台,帮助工程师评估矿井和施工中的隧道稳定性。 目前,作为安全预防措施,地质学家和工程师会站在离岩石五米远的地方࿰…...
MySQL物理备份
目录 备份策略 全量备份 (Full Backup) 增量备份 (Incremental Backup) 差异备份 (Differential Backup) 使用 Percona XtraBackup 全量备份 步骤 1:全量备份 步骤 2:备份后处理(应用日志) 步骤 3:恢复备份 验…...
AWT常用组件
AWT中常用组件 前言一、基本组件组件名标签(Label类)Label类的构造方法注意要点 按钮(Button)Button的构造方法注意要点 文本框(TextField)TextField类的构造方法注意要点 文本域(TextArea)TextArea 的构造方法参数scrollbars的静态常量值 复选框&#x…...
CorelDRAW2024破解激活码序列号一步到位
亲们,今天给大家种草一个神奇的软件——CorelDRAW破解2024最新版!🎨这是一款专业级的矢量图形设计软件,无论你是平面设计师、插画师还是设计师,都能在这个软件中找到你需要的工具和功能。✨ 让我来给大家介绍一下这款软…...
Webpack前端打包工具详解
目录 Webpack前端打包工具详解一、Webpack 的作用二、Webpack 的安装和基本使用1. 安装 Webpack2. 创建 Webpack 配置文件3. 运行 Webpack 三、Webpack 核心概念1. 入口(Entry)2. 输出(Output)3. 加载器(Loaders&#…...
计网总结☞网络层
.................................................. 思维导图 ........................................................... 【Wan口和Lan口】 WAN口(Wide Area Network port): 1)用于连接外部网络,如互联…...
【全开源】云调查考试问卷系统(FastAdmin+ThinkPHP+Uniapp)
便捷、高效的在线调研与考试新选择 云调查考试问卷是一款基于FastAdminThinkPHPUniapp开发的问卷调查考试软件,可以自由让每一个用户自由发起调查问卷、考试问卷。发布的问卷允许控制问卷的搜集、回答等各个环节的设置,同时支持系统模板问卷ÿ…...
网络安全难学吗?2024该怎么系统学习网络安全?
学习网络安全需要循序渐进,由浅入深。很多人对网络安全进行了解以后,就打算开始学习网络安全,但是又不知道怎么去系统的学习。 网络安全本身的知识不难,但需要学习的内容有很多,其中包括Linux、数据库、渗透测试、等保…...
2 程序的灵魂—算法-2.4 怎样表示一个算法-2.4.6 用计算机语言表示算法
我们的任务是用计算机解题,就是用计算机实现算法; 用计算机语言表示算法必须严格遵循所用语言的语法规则。 【例 2.20】求 12345 用 C 语言表示。 main() {int i,t; t1; i2; while(i<5) {tt*i; ii1; } printf(“%d”,t); } 【例 2.21】求级数的…...
重生之我要精通JAVA--第八周笔记
文章目录 多线程线程的状态线程池自定义线程池最大并行数多线程小练习 网络编程BS架构优缺点CS架构优缺点三要素IP特殊IP常用的CMD命令 InetAddress类端口号协议UDP协议(重点)UDP三种通信方式 TCP协议(重点)三次握手四次挥手 反射…...
51单片机独立按键控制LED灯,按键按一次亮,再按一次灭
1、功能描述 独立按键控制LED灯,按键按一次亮,再按一次灭 2、实验原理 轻触按键:相当于是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动米实现接通和断开;…...
【上海大学计算机组成原理实验报告】七、程序转移机制
一、实验目的 学习实现程序转移的硬件机制。 掌握堆栈寄存器的使用。 二、实验原理 根据实验指导书的相关内容,实验箱系统的程序转移硬件机制在于,当LDPC有效时,如果此时DUBS上的值就是转移的目标地址,则此目标地址被打入PC&am…...
LLVM Cpu0 新后端7 第一部分 DAG调试 dot文件 Machine Pass
想好好熟悉一下llvm开发一个新后端都要干什么,于是参考了老师的系列文章: LLVM 后端实践笔记 代码在这里(还没来得及准备,先用网盘暂存一下): 链接: https://pan.baidu.com/s/1yLAtXs9XwtyEzYSlDCSlqw?…...
修复www服务trace漏洞
验证方式:curl -v -X TRACE ip:port,或使用其他接口调试工具如Postman 响应:状态行405 Method Not Allowed且响应体无内容 方案一:使用过滤器 若webserver是tomcat, 添加过滤器的方式有很多 Component public class TraceHttpMe…...
算法:101. 对称二叉树
对称二叉树 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false提示: 树中节…...
wordpress 使用api发布文章
1.安装插件 在/wp-content/plugins/目录执行以下命令 $ sudo git clone https://github.com/WP-API/Basic-Auth.git 2.Python脚本 import requestsurl http://www.ziyuanwang.online/wp-json/wp/v2/postsuser adminpassword xxxxxheaders {Content-Type: application/j…...
《Brave New Words 》2.2 阅读理解的未来,让文字生动起来!
Part II: Giving Voice to the Social Sciences 第二部分:为社会科学发声 The Future of Reading Comprehension, Where Literature Comes Alive! 阅读理解的未来,让文字生动起来! Saanvi, a ninth grader in India who attends Khan World S…...
基于Java的超市进销存管理系统
开头语: 你好呀,我是计算机学长猫哥!如果有相关需求,文末可以找到我的联系方式。 开发语言: Java 数据库: MySQL 技术: Java JSP Servlet JavaBean 工具: IDEA/Eclipse、…...
Oracle 日志挖掘
oracle 11g 日志挖掘测试 需要开启补充日志 alter database add supplemental log data; SELECT SUPPLEMENTAL_LOG_DATA_MIN, SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_UI FROM V$DATABASE;在用户下执行一些删除,插入等操作 SQL> create table zxy( …...
昆山网站建设培训班/1元购买域名
一、subprocess以及常用的封装函数, 连接文档,Popen不用wait用communicate 运行python的时候,我们都是在创建并运行一个进程。像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。在Python中࿰…...
成都网站创建/百度指数数据下载
我们都知道,使用C/C之类的编译性语言编写的程序,是需要从源文件转换成计算机使用的机器语言,经过链接器链接之后形成了二进制的可执行文件。运行该程序的时候,就可以把二进制程序从硬盘载入到内存中并运行。 但是对于Python而言&a…...
咸宁网站seo排名/如何解决网站只收录首页的一些办法
微信中下载app共有两种实现方式,然而安卓手机跟苹果手机还尽然不同。1、苹果用户打开后要么自动调起App Store下载(前提是你的应用在苹果商店上架了);要么是去Safari下载。2、安卓用户打开链接后要么直接下载,要么前往…...
厚街网站建设公司/域名权重
题目描述如下: 方法一:动态规划 在题中每一个阶梯只有两种情况即爬或者不爬,这里我们用一个数组dp存储阶梯的情况,dp[i][1]存储爬阶梯消耗的能量,dp[i][0]存储不爬消耗的能量, 我们要知道第i层阶梯爬的所需消耗的最小能量,则 dp…...
凡科用模板做网站/百度大全
标题说的可能不是很清楚,解释一下,函数模板,一般都是放在头文件里面,所以有些时候,我也会做一个特化,也放在这个头文件里面,当这个头文件出现多次的包含之后,就会出现链接多重定义的…...
公司内部网站建设方案/引擎搜索对人类记忆的影响
1、手机上有很多输入设备,这些设备的编号每个手机都不同,因此我们需要首先了解这个手机上都有哪些输入设备,下面以我的NexusS为例: http://3ms.huawei.com/hi/blog/24021_1097091.html 【Android学习笔记】用 sendevent 模拟手机…...