精华内容
下载资源
问答
  • 读写分类
    千次阅读
    2022-03-13 17:10:18

    redis数据的读写分离

    docker拉取Redis:https://blog.csdn.net/qq_51076413/article/details/123462701
    Java整合Jedis:https://blog.csdn.net/qq_51076413/article/details/123462857
    Java整合Redis:https://blog.csdn.net/qq_51076413/article/details/123462896

    读写分离
    集群的读写分离

    • 数据的写入:当需要写入数据到 redis中时,数据会被写道主服务器上
    • 数据的读取:数据的读取是在 从服务器上获取到的,可以有效的减轻服务器的读写压力。

    主服务器宕机问题:

    当三台服务器中,主服务器宕机后,数据的存取问题:

    • 当主服务器宕机后,数据是可以正常读取到的(数据未过期的情况下),但是不可以进行数据的写入了。
    • 原因是:主服务器负责数据的写入,主服务器宕机以后只能在从服务器中读取数据,且数据是旧数据(不是最新的数据)。
    • 从服务器读取到的都是老数据,因为不能及时的在主服务器中获取到最新的数据。

    主从复制问题:

    三台服务器中,一写两读时,数据的同步问题:

    • 发布订阅机制:通过发布订阅机制,实现服务器的数据统一同步。
    • 当主服务器被写入数据时,就会发布订阅把数据统一同步到从的服务器上,数据保存一致。

    类似于微信公众号,作者发布内容时,所有的关注者都能够收到作者发布的最新消息。

    docker拉取Redis:https://blog.csdn.net/qq_51076413/article/details/123462701
    Java整合Jedis:https://blog.csdn.net/qq_51076413/article/details/123462857
    Java整合Redis:https://blog.csdn.net/qq_51076413/article/details/123462896
    更多相关内容
  • 行业分类-设备装置-RFID读写器外壳一体化天线.zip
  • ShardingSphere读写分离

    千次阅读 2022-04-17 14:38:52
    读写分离是为了确保数据库产品的稳定性,很多数据库拥有双机热备功能。 原理:让主数据库(master)处理事务性增、改、删操作,而从数据库(slave)处理select查询操作。 注意: Sharding-JDBC 通过 sql 语句语义...

    读写分离是为了确保数据库产品的稳定性,很多数据库拥有双机热备功能。

    原理:让主数据库(master)处理事务性增、改、删操作,而从数据库(slave)处理select查询操作。

    注意:

    • Sharding-JDBC 通过 sql 语句语义分析,实现读写分离过程,不会做数据同步。
    • 数据同步需要数据库搭建主从集群架构,来做数据之间的主从同步。

    关于数据库的主从集群架构自行搭建,下面从 Sharding-JDBC 的应用层来做数据的读写分离。

    一、读写分离

    1、application.properties 配置文件

    在 application.properties 配置文件中进行

    # 配置真实数据源
    spring.shardingsphere.datasource.names=db1,db2
    # 配置第1个数据源
    spring.shardingsphere.datasource.db1.type=com.alibaba.druid.pool.DruidDataSource
    spring.shardingsphere.datasource.db1.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.shardingsphere.datasource.db1.url=jdbc:mysql://localhost:3306/sharding_db1?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT
    spring.shardingsphere.datasource.db1.username=root
    spring.shardingsphere.datasource.db1.password=123456
    # 配置第2个数据源
    spring.shardingsphere.datasource.db2.type=com.alibaba.druid.pool.DruidDataSource
    spring.shardingsphere.datasource.db2.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.shardingsphere.datasource.db2.url=jdbc:mysql://localhost:3306/sharding_db2?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT
    spring.shardingsphere.datasource.db2.username=root
    spring.shardingsphere.datasource.db2.password=123456
    
    ##配置主从逻辑数据源,读写分离规则, db1主库,db2从库
    spring.shardingsphere.sharding.master-slave-rules.ds0.master-data-source-name=db1
    spring.shardingsphere.sharding.master-slave-rules.ds0.slave-data-source-names[0]=db2
    #基于读写分离的表分片
    spring.shardingsphere.sharding.tables.course.actual-data-nodes=ds0.course_$->{1..2}
    
    # 指定表的主键生成策略
    spring.shardingsphere.sharding.tables.course.key-generator.column=id
    spring.shardingsphere.sharding.tables.course.key-generator.type=SNOWFLAKE
    spring.shardingsphere.sharding.tables.course.key-generator.props.worker.id=1
    #表策略
    spring.shardingsphere.sharding.tables.course.table-strategy.inline.sharding-column=id
    spring.shardingsphere.sharding.tables.course.table-strategy.inline.algorithm-expression=course_$->{id%2+1}
    
    # 打开shardingsphere的sql日志输出。
    spring.shardingsphere.props.sql.show=true
    
    # 一个实体类对应两张表,覆盖
    spring.main.allow-bean-definition-overriding=true
    

    2、测试

    1)保存

       @Test
        public void testSave() throws InterruptedException {
            for (int i = 0; i < 4; i++) {
                Course course = new Course();
                course.setGmtCreate(new Date());
                course.setName("java");
                course.setUserId(1001L + i);
                course.setStatus("1");
    
                TimeUnit.MILLISECONDS.sleep(50);
                int count = courseMapper.insert(course);
                System.out.println("id ->" + course.getId());
            }
    
        }
    

    从日志中看到,保存操作的数据库都是主库(db1)。
    在这里插入图片描述

    2)查询

        @Test
        public void testIN() {
            QueryWrapper<Course> wrapper = new QueryWrapper<Course>();
            wrapper.in("id",1515577381737865217L, 1515492164109004802L, 1515576508269936641L);
            List<Course> courses = courseMapper.selectList(wrapper);
            System.out.println(courses.size());
            courses.forEach(course -> System.out.println(course));
        }
    

    从日志中看到,查询操作的数据库都是从库(db2)。
    在这里插入图片描述

    因为 id=1515577381737865217记录在主库(db1)中。数据还没有同步到从库(db2),所以查不到。

    – 求知若饥,虚心若愚。

    展开全文
  • 行业分类-设备装置-RFID读写器及其读写天线.zip
  • MySQL读写分离

    千次阅读 2022-06-29 17:19:46
    在代码中根据 select、insert 进行路由分类,这类方法也是目前生产环境应用最广泛的。 优点是性能较好,因为在程序代码中实现,不需要增加额外的设备为硬件开支;缺点是需要开发人员来实现,运维人员无从下手。 但是...

    目录

    一、读写分离

    1. 工作原理

    2.为什么要读写分离 

    3.什么时候要读写分离 

    4.主从复制与读写分离 

    5.mysql支持的复制类型 

    二、MySQL 读写分离方式 

    1.基于程序代码内部实现 

    2.基于中间代理层实现 

    三、实验:读写分离(主从复制基础上)

    1 安装 Java 环境

     2.配置 Amoeba读写分离,两个 Slave 读负载均衡

    3.amoeba服务器配置amoeba服务 

    修改数据库配置文件 

    4.测试读写分离  

    4.1主服务器上 

    4.2 关闭两个从服务器同步

    4.3在两个从服务器分别加数据

    4.4在主服务器加数据

     4.5查看客户端服务器

    四、数据库主从延迟的原因与解决方案 

    1.主从延迟是怎样定义的呢?与主从数据同步相关的时间点有三个 

    2.导致主从延迟的原因

    3.同步失败解决方案


    一、读写分离

    1. 工作原理

    基本的原理是让主数据库处理事务性增、删、改操作(INSERT、DELETE、UPDATE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

    2.为什么要读写分离 

    • 面对越来越大的访问压力,单台的服务器性能成为瓶颈,需要分担负载。
    • 因为数据库的“写”(写10000条数据可能要3分钟)操作是比较耗时的。
    • 但是数据库的“读”(读10000条数据可能只要5秒钟)。
    • 所以读写分离,解决的是,数据库的写入,影响了查询的效率。

    3.什么时候要读写分离 

    数据库不一定要读写分离,如果程序使用数据库较多时,而更新少,查询多的情况下会考虑使用。利用数据库主从同步,再通过读写分离可以分担数据库压力,提高性能。 

    4.主从复制与读写分离 

    在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。

    因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。有点类似于rsync,但是不同的是rsync是对磁盘文件做备份,而mysql主从复制是对数据库中的数据、语句做备份。

    5.mysql支持的复制类型 

    • STATEMENT:基于语句的复制。在服务器上执行sql语句,在从服务器上执行同样的语句,mysql默认采用基于语句的复制,执行效率高。
    • ROW:基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍。
    • MIXED:混合类型的复制。默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制。

    二、MySQL 读写分离方式 

    读写分离就是只在主服务器上写,只在从服务器上读。基本的原理是让主数据库处理事务性操作,而从数据库处理 select 查询。数据库复制被用来把主数据库上事务性操作导致的变更同步到集群中的从数据库。目前较为常见的 MySQL 读写分离分为以下两种 

    1.基于程序代码内部实现 

    在代码中根据 select、insert 进行路由分类,这类方法也是目前生产环境应用最广泛的。
    优点是性能较好,因为在程序代码中实现,不需要增加额外的设备为硬件开支;缺点是需要开发人员来实现,运维人员无从下手。
    但是并不是所有的应用都适合在程序代码中实现读写分离,像一些大型复杂的Java应用,如果在程序代码中实现读写分离对代码改动就较大。

    2.基于中间代理层实现 

    代理一般位于客户端和服务器之间,代理服务器接到客户端请求后通过判断后转发到后端数据库,有以下代表性程序。

    • MySQL-Proxy:MySQL-Proxy 为 MySQL 开源项目,通过其自带的 lua 脚本进行SQL 判断。
    • Atlas:是由奇虎360的Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。支持事物以及存储过程。
    • Amoeba:由陈思儒开发,作者曾就职于阿里巴巴。该程序由Java语言进行开发,阿里巴巴将其用于生产环境。但是它不支持事务和存储过程。

    三、实验:读写分离(主从复制基础上)

    1 安装 Java 环境

    amobea 服务器IP为192.168.169.202(在主从复制的基础上进行读写分离)

    因为 Amoeba 基于是 jdk1.5 开发的,所以官方推荐使用 jdk1.5 或 1.6 版本,
    高版本不建议使用。
    
    将jdk-6u14-linux-x64.bin 和 amoeba-mysql-binary-2.2.0.tar.gz.0 
    上传到/opt目录下。
     
    cd /opt/
    cp jdk-6u14-linux-x64.bin /usr/local/
     
    cd /usr/local/
    chmod +x jdk-6u14-linux-x64.bin 
    ./jdk-6u14-linux-x64.bin
    按空格到最后一行,按yes,按回车。
     
    mv jdk1.6.0_14/ /usr/local/jdk1.6
     
    vim /etc/profile
    export JAVA_HOME=/usr/local/jdk1.6
    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin
    export AMOEBA_HOME=/usr/local/amoeba
    export PATH=$PATH:$AMOEBA_HOME/bin
    #在末尾加入
     
    source /etc/profile
    java -version
     
    ##安装 Amoeba软件##
    mkdir /usr/local/amoeba
    tar zxvf /opt/amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
    chmod -R 755 /usr/local/amoeba/
    /usr/local/amoeba/bin/amoeba
    //如显示amoeba start|stop 说明安装成功

     2.配置 Amoeba读写分离,两个 Slave 读负载均衡

    在Master、Slave1、Slave2 的mysql上开放权限给 Amoeba 访问 

    grant all on *.* to test@'192.168.169.%' identified by '123456';

    3.amoeba服务器配置amoeba服务 

    cd /usr/local/amoeba/conf/
     
    cp amoeba.xml amoeba.xml.bak
    
    vim amoeba.xml                  
    #修改amoeba配置文件
     
    30修改
    <property name="user">amoeba</property>
    
    32修改
    <property name="password">123456</property>
    
    115修改
    <property name="defaultPool">master</property>
    
    117去掉注释–
    <property name="writePool">master</property>
    <property name="readPool">slaves</property>

     

    修改数据库配置文件 

    cp dbServers.xml dbServers.xml.bak
     
    vim dbServers.xml               
    #修改数据库配置文件
     
    23注释掉
    作用:默认进入test库 以防mysql中没有test库时,会报错
    <!-- mysql schema 
    <property name="schema">test</property>
    -->
    
    26修改
    <!-- mysql user -->
    <property name="user">test</property>
    
    28-30去掉注释
    <property name="password">123456</property>
    
    45修改,设置主服务器的名Master
    <dbServer name="master"  parent="abstractServer">
    
    48修改,设置主服务器的地址
    <property name="ipAddress">192.168.223.10</property>
    
    52修改,设置从服务器的名slave1
    <dbServer name="slave1"  parent="abstractServer">
    
    55修改,设置从服务器1的地址
    <property name="ipAddress">192.168.223.9</property>
    
    58复制上面6行粘贴,设置从服务器2的名slave2和地址
    <dbServer name="slave2"  parent="abstractServer">
    <property name="ipAddress">192.168.223.11</property>
    
    65修改
    <dbServer name="slaves" virtual="true">
    
    71修改
    <property name="poolNames">slave1,slave2</property>
     
    /usr/local/amoeba/bin/amoeba start&         
    #启动Amoeba软件,按ctrl+c 返回
    
    netstat -anpt | grep java             
    #查看8066端口是否开启,默认端口为TCP 8066

     

    4.测试读写分离  

    在客户端(192.168.169.200)服务器上进行测试:

    使用yum快速安装MySQL虚拟客户端

    yum install -y mariadb mariadb-server
     
    mysql -u amoeba -p123456 -h 192.168.169.201 -P8066   

     通过amoeba服务器代理访问mysql ,在通过客户端连接mysql后写入的数据只有主服务会记录,然后同步给从服务器

    4.1主服务器上 

    create database zzz;
    
    use zzz;
    create table ceshi (id int(10),name varchar(10),address varchar(10));
    

    4.2 关闭两个从服务器同步

    stop slave;                     
    #关闭同步
    
    use zzz;

    4.3在两个从服务器分别加数据

    4.4在主服务器加数据

     4.5查看客户端服务器

    use zzz;
    select * from test;   
    客户端会分别向slave1和slave2读取数据,显示的只有在
    两个从服务器上添加的数据,没有在主服务器上添加的数据
     
    insert into test values('4','zb','four');   
    只有主服务器上有此数据

     

    之后在两个从服务器上执行 start slave; 即可实现同步在主服务器和客户机上添加的数据

    start slave;

    四、数据库主从延迟的原因与解决方案 

    1.主从延迟是怎样定义的呢?与主从数据同步相关的时间点有三个 

    • 主库执行完一个事务,写入binlog,我们把这个时刻记为 T1;
    • 主库同步数据给从库,从库接受完这个binlog的时刻,记录为 T2
    • 从库执行完这个事务,这个时刻记录为 T3

    所谓主从延迟,其实就是指同一个事务,在从库执行完的时间和在主库执行完的时间差值,即 T3-T1

    2.导致主从延迟的原因

    • 如果从库所在的机器比主库的机器性能差,会导致主从延迟,这种情况比较好解决,只需选择主从库一样规格的机器就好。
    • 如果从库的压力大,也会导致主从延迟。比如主库直接影响业务,大家可能使用会比较克制,因此一般查询都打到从库了,结果导致从库查询消耗大量CPU,影响同步速度,最后导致主从延迟。这种情况的话,可以搞一主多从架构,即多接几个从库分摊读的压力。另外,还可以把binlog接入到Hadoop这类系统,让它们提供查询的能力。
    • 大事务也会导致主从延迟。如果一个事务执行就要10分钟,那么主库执行完后,给到从库执行,最后这个事务可能就会导致从库延迟10分钟啦。日常开发中,我们为什么特别强调,不要一次性delete太多SQL,需要分批进行,其实也是为了避免大事务。另外,大表的DDL语句,也会导致大事务,大家日常开发关注一下哈。
    • 网络延迟也会导致主从延迟,这种情况你只能优化你的网络啦,比如带宽20M升级到100M类似意思等。
    • 如果从数据库过多也会导致主从延迟,因此要避免复制的从节点数量过多。从库数据一般以3-5个为宜。
    • 低版本的MySQL只支持单线程复制,如果主库并发高,来不及传送到从库,就会导致延迟。可以换用更高版本的Mysql,可以支持多线程复制。

    3.同步失败解决方案

    #忽略当前的错误执行下一步的同步

    先 stop slave;

    ① slave数据库中:SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

    START SLAVE;

    问题:I/O线程 一直处于connecting

    第一件事,看laster error,报错项内容是为支点找不到

    先 stop slave;

    ② slave数据库中:

    CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000001’,MASTER_LOG_POS=0;

    首先遇到这个是因为binlog位置索引处的问题,生产环境下不要直接reset slave(删除change master 操作的);

    reset slave会将主从同步的文件以及位置恢复到初始状态,一开始没有数据还好,有数据的话,相当于重新开始同步,可能会出现一些问题;

    一般做主从同步,都是要求以后的数据实现主从同步,而对于旧的数据完全可以使用数据库同步工具先将数据库同步,完了再进行主从同步;

    好了遇到上面的问题,正确做法是:

    1.打开主(master)服务器,进入mysql

    2.执行flush logs;//这时主服务器会重新创建一个binlog文件;

    3.在主服务上执行show master status\G;显示如下:

    4.来到从服务器的mysql;

    5.stop slave;

    6.change master to master_log_file='mysql-bin.000012',master_log_pos=154;//这里的file和pos都是上面主服务器master显示的。

    7.start slave; //这时候就应可以了

    展开全文
  • 行业分类-设备装置-双界面读写终端集成电路及读写终端.zip
  • 行业分类-设备装置-RFID读写器系统和RFID读写器模块.zip
  • 行业分类-设备装置-数据读写方法、读写装置及数据存储系统.zip
  • 行业分类-设备装置-RFID读写器天线阵列结构和RFID读写器.zip
  • SpringBoot实现读写分离

    千次阅读 2022-05-12 16:43:52
    根据公司业务需求,项目需要读写分离,所以记录下读写分离的过程。 分为两个部分: 1.项目的读写分离。 2.mysql数据库的主从复制。 本篇使用的依赖包为sharding-jdbc-spring-boot-starter,也有考虑直接用dynamic-...

    根据公司业务需求,项目需要读写分离,所以记录下读写分离的过程。
    分为两个部分:
    1.项目的读写分离。
    2.mysql数据库的主从复制点此查看
    本篇使用的依赖包为sharding-jdbc-spring-boot-starter,也有考虑直接用dynamic-datasource-spring-boot-starter,但是需要在程序中显式的声明所指定的数据源,并且在从库>=2 的时候需要自己写算法进行读库的选择。而sharding-jdbc支持读库的负载均衡策略,sharding会根据语句的关键字来決定是读操作还是写操作
    Insert选择主库
    在这里插入图片描述
    Select选择从库2(由于设置的了轮询,所以下一次就是从库1)
    在这里插入图片描述
    1.项目引入依赖

    	<dependency>
                <groupId>org.apache.shardingsphere</groupId>
                <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
                <version>4.0.0-RC1</version>
            </dependency>
    

    2.yml配置
    共有三台机器,
    主库一台(127.0.0.1)
    从库两台(192.168.1.5 192.168.1.6)

    spring:
      shardingsphere:
        props:
          sql:
            show: false
        sharding:
          default-data-source-name: master
        masterslave:
          name: ms
          master-data-source-name: master
          slave-data-source-names: slave1,slave2
          #配置slave节点的负载均衡均衡策略,采用轮询机制
          load-balance-algorithm-type: round_robin
        datasource:
          names: master,slave1,slave2
          master:
            type: com.alibaba.druid.pool.DruidDataSource
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://127.0.0.1:3306/life_account_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
            username: root
            password: root
            maxPoolSize: 100
            minPoolSize: 5
          slave1:
            type: com.alibaba.druid.pool.DruidDataSource
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://192.168.1.5:3306/life_account_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
            username: test
            password: Houxuyang123!@#
            maxPoolSize: 100
            minPoolSize: 5
          slave2:
            type: com.alibaba.druid.pool.DruidDataSource
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://192.168.1.6:3306/life_account_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
            username: test
            password: Houxuyang123!@#
            maxPoolSize: 100
            minPoolSize: 5
    

    3.启动
    在这里插入图片描述

    4.测试
    第一次读数据(从库1)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    第二次读数据(从库2)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    主库写
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    项目读写分离基本实现。

    5.中间所遇到的问题
    mysql查询问题

    Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'life_account_db.acc_order.serial_no' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
    

    原因:
    没有遵循原则的sql会被认为是不合法的sql
    1.order by后面的列必须是在select后面存在的
    2.select、having或order by后面存在的非聚合列必须全部在group by中存在
    解决方法:
    修改配置文件:vim /etc/my.cnf
    添加:sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    重启mysql:systemctl restart mysqld

    在这里插入图片描述
    :wq

    展开全文
  • 行业分类-设备装置-一种磁条读写装置、打印机及其磁条读写方法.zip
  • 行业分类-设备装置-手持读写器.zip
  • 行业分类-设备装置-刷卡读写装置.zip
  • 行业分类-设备装置-智能卡读写设备.zip
  • 行业分类-设备装置-多功能读写器.zip
  • 行业分类-设备装置-智能卡读写器.zip
  • 行业分类-设备装置-标签的读写方法.zip
  • 行业分类-设备装置-数据读写方法及系统.zip
  • 行业分类-设备装置-射频卡读写操作方法.zip
  • 行业分类-设备装置-RFID读写器及其组件.zip
  • 行业分类-设备装置-一种读写器系统.zip
  • 行业分类-设备装置-射频芯片读写测试仪.zip
  • MyCat2搭建读写分离

    千次阅读 2022-07-21 16:57:01
    实现MySQL数据库的读写分离之前需要使数据库服务器之间可以主从复制,主从复制可以看这个帖子——MySQL实现主从复制 1、下载安装mycat2 # 创建存放mycat2的文件夹 mkdir -p /usr/local/mycat2 # 打开 cd /usr/local/...
  • 行业分类-设备装置-用于手持设备的RFID读写器模块及其手持设备.zip
  • 行业分类-设备装置-读写锁控制方法及装置.zip
  • 行业分类-设备装置-一种总线读写检测装置.zip
  • 行业分类-设备装置-一种读写姿势辅助装置.zip
  • 行业分类-设备装置-一种射频读写器及使用该射频读写器的细纱机.zip
  • 行业分类-设备装置-手机卡读写Pos机装置.zip

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 143,312
精华内容 57,324
关键字:

读写分类