Redis简介

REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统。redis和大名鼎鼎的memcached缓存服务很像,但是redis支持的数据存储类型更丰富,但是redis支持的数据存储类型更丰富,包括string(字符串)、list(链表),set(集合)和zset(有序集合)等。
这些数据类型都支持push/pop、add/remove及取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memchaed缓存服务一样,为了保证效率,数据都是缓存在内存中提供服务。而memcached不同的是,redis持久化存服务还会周期性的把更新的数据写入到磁盘以及把修改的操作记录追加到文件里记录下来,比memcached更有优势的是,redis还支持master-slave(主从)同步,这点很类似关系数据库MySQL。
redis的出现,再一定程序上弥补了memcached这类key-value内存缓存服务的不足,在部分场合可以对关系数据库起到很好的补充作用。redis提供了python,ruby,erlang,php客户端,很方便。
redis官主网站:http://www.redis.io/documentation
http://www.redis.cn/

Redis的优点

与memcache不同:可以持久化存储数据
性能很高:Redis能支持超过100K+每秒的读写频率。
丰富的数据类型:Redis支持二进制的Strings,Lists,Hashes,Sets及Ordered Sets等数据类型操作。
原子:Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
丰台的特性:Redis还支持publish/subscribe,通知,key过期等等特性。
redis:支持异机主从复制。

Redis的数据类型

Redis最为常用的数据类型主要有以下五种:
String
Hash
List
Set
Sorted set

Redis的应用场景

传统的MySQL+Memcached的网站架构遇到的问题
MySQL数据库实际上是适合进行海量数据存储的,加上通过Memcached将热点数据存放到内存cache里,达到加速数据访问的目的,绝大部分公司都曾经使用过这样的架构,但随着业务的数据量的不断增加和访问量的持续增长,很多问题就会暴露出来:
1、需要不断的对MySQL进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量的开发运维时间。
2、Memcached与MySQL数据库数据一致性问题是个老大难。
3、Memcached数据命中率低或down机,会导致大量访问直接穿透到数据库,导致MySQL无法支撑访问。
4、跨机房cache同步一致性问题。
Redis的最佳应用场景:
1、Redis最佳试用场景是全部数据in-memory。
2、Redis更多场景是作为Memcached的替代品来使用。
3、当需要除key/value之外的更多数据类型支持时,使用Redis更合适。
4、支持持久化。
5、需要负载均衡的场景(redis主从同步)
Redis作者谈Redis应用场景:http://blog.nosqlfan.com/html/2235.html
业务场景:
使用Redis bitmap进行活跃用户统计
http://blog.nosqlfan.com/html/3501.html
Redis小节:
1、提高了DB的可扩展性,只需要将新加的数据放到新加的服务器上就可以了
2、提高了DB的可用性,只影响到需要访问的shard服务器上的数据的用户
3、提供了DB的可维护性,对系统的升级和配置可以按shard一个个来做,对服务产影响小。

一、Redis部署环境搭建

Master:任意IP Centos 6.5
Slave:任意IP Centos 6.5

二、开始安装Redis服务

在Redis的官方网站(www.redis.io)下载最新的稳定版本redis。
操作命令:

  1. [root@Qinglin-A tools]# wget http://download.redis.io/releases/
  2. [root@Qinglin-A tools]# tar -xf redis-3.2.2.tar.gz
  3. [root@Qinglin-A redis-3.2.2]# less README.md
  4. [root@Qinglin-A redis-3.2.2]# make MALLOC=jemalloc
  5. [root@Qinglin-A redis-3.2.2]# make PREFIX=/app/redis-3.2.2 install
  6. [root@Qinglin-A redis-3.2.2]# ln -s /app/redis-3.2.2/ /app/redis

Redis目录结构

  1. [root@Qinglin-A redis-3.2.2]# tree /app/redis
  2. /app/redis
  3. └── bin
  4. ├── redis-benchmark
  5. ├── redis-check-aof
  6. ├── redis-check-rdb
  7. ├── redis-cli
  8. ├── redis-sentinel -> redis-server
  9. └── redis-server
  10. 1 directory, 6 files

它们的作用如下:
redis-server:redis服务器的daemon启动程序
redis-cli:Redis命令操作工具。当然,也可以telnet根据其纯文本协助来操作。
redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能。
redis-check-aof:更新日志检查
redis-check-dump:用于本地数据库检查

三、配置环境变量,并启动服务

  1. [root@Qinglin-A redis-3.2.2]# echo 'export PATH=/app/redis/bin:$PATH' >>/etc/profile
  2. [root@Qinglin-A redis-3.2.2]# tail -1 /etc/profile
  3. export PATH=/app/redis/bin:$PATH
  4. [root@Qinglin-A redis-3.2.2]# source /etc/profile
  5. [root@Qinglin-A redis-3.2.2]# which redis-server
  6. /app/redis/bin/redis-server

创建Redis配置文件,并重启服务

  1. [root@Qinglin-A redis-3.2.2]# pwd
  2. /home/tools/redis-3.2.2
  3. [root@Qinglin-A redis-3.2.2]# mkdir /app/redis/conf -p
  4. [root@Qinglin-A redis-3.2.2]# cp redis.conf /app/redis/conf/
  5. [root@Qinglin-A redis-3.2.2]# redis-server /app/redis/conf/redis.conf & ==>redis启服务

如果错误执行下面的内容

  1. [root@Qinglin-A redis-3.2.2]# redis-cli shutdown ==>redis重启方式
  2. 提示错误"vm.overcommit_memory=1"
  3. [root@Qinglin-A redis-3.2.2]# sysctl vm.overcommit_memory=1
  4. 提示错误"WARNING you have Transparent Huge Pages (THP) support enabled"
  5. [root@Qinglin-A redis-3.2.2]# echo 511 > /proc/sys/net/core/somaxconn
  6. [1]+ Done redis-server /app/redis/conf/redis.conf
  7. 提示错误"WARNING: The TCP backlog setting of 511"
  8. [root@Qinglin-A redis-3.2.2]# echo never > /sys/kernel/mm/transparent_hugepage/enabled

下列是帮忙文件,可以指定配置文件启动服务

  1. [root@Qinglin-A redis-3.2.2]# redis-server --help
  2. Usage: ./redis-server [/path/to/redis.conf] [options]
  3. ./redis-server - (read config from stdin)
  4. ./redis-server -v or --version
  5. ./redis-server -h or --help
  6. ./redis-server --test-memory
  7. Examples:
  8. ./redis-server (run the server with default conf)
  9. ./redis-server /etc/redis/6379.conf
  10. ./redis-server --port 7777
  11. ./redis-server --port 7777 --slaveof 127.0.0.1 8888
  12. ./redis-server /etc/myredis.conf --loglevel verbose
  13. Sentinel mode:
  14. ./redis-server /etc/sentinel.conf --sentinel

检查服务端口

  1. [root@Qinglin-A redis-3.2.2]# lsof -i:6379
  2. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
  3. redis-ser 5847 root 4u IPv4 23427 0t0 TCP localhost:6379 (LISTEN)

四、测试Redis

使用redis-cli客户端
cli帮忙文档

  1. [root@Qinglin-A redis-3.2.2]# redis-cli --help
  2. redis-cli 3.2.2
  3. Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
  4. -h Server hostname (default: 127.0.0.1).
  5. -p Server port (default: 6379).
  6. -s Server socket (overrides hostname and port).
  7. -a Password to use when connecting to the server.
  8. -r Execute specified command N times.
  9. -i When -r is used, waits seconds per command.
  10. It is possible to specify sub-second times like -i 0.1.
  11. -n Database number.
  12. -x Read last argument from STDIN.
  13. -d Multi-bulk delimiter in for raw formatting (default: \n).
  14. -c Enable cluster mode (follow -ASK and -MOVED redirections).
  15. --raw Use raw formatting for replies (default when STDOUT is
  16. not a tty).
  17. --no-raw Force formatted output even when STDOUT is not a tty.
  18. --csv Output in CSV format.
  19. --stat Print rolling stats about server: mem, clients, ...
  20. --latency Enter a special mode continuously sampling latency.
  21. --latency-history Like --latency but tracking latency changes over time.
  22. Default time interval is 15 sec. Change it using -i.
  23. --latency-dist Shows latency as a spectrum, requires xterm 256 colors.
  24. Default time interval is 1 sec. Change it using -i.
  25. --lru-test Simulate a cache workload with an 80-20 distribution.
  26. --slave Simulate a slave showing commands received from the master.
  27. --rdb Transfer an RDB dump from remote server to local file.
  28. --pipe Transfer raw Redis protocol from stdin to server.
  29. --pipe-timeout In --pipe mode, abort with error if after sending all data.
  30. no reply is received within seconds.
  31. Default timeout: 30. Use 0 to wait forever.
  32. --bigkeys Sample Redis keys looking for big keys.
  33. --scan List all keys using the SCAN command.
  34. --pattern Useful with --scan to specify a SCAN pattern.
  35. --intrinsic-latency Run a test to measure intrinsic system latency.
  36. The test will run for the specified amount of seconds.
  37. --eval Send an EVAL command using the Lua script at .
  38. --ldb Used with --eval enable the Redis Lua debugger.
  39. --ldb-sync-mode Like --ldb but uses the synchronous Lua debugger, in
  40. this mode the server is blocked and script changes are
  41. are not rolled back from the server memory.
  42. --help Output this help and exit.
  43. --version Output version and exit.
  44. Examples:
  45. cat /etc/passwd | redis-cli -x set mypasswd
  46. redis-cli get mypasswd
  47. redis-cli -r 100 lpush mylist x
  48. redis-cli -r 100 -i 1 info | grep used_memory_human:
  49. redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3
  50. redis-cli --scan --pattern '*:12345*'
  51. (Note: when using --eval the comma separates KEYS[] from ARGV[] items)
  52. When no command is given, redis-cli starts in interactive mode.
  53. Type "help" in interactive mode for information on available commands
  54. and settings.

redis登录
redis -h主机

  1. [root@Qinglin-A redis-3.2.2]# redis-cli
  2. 127.0.0.1:6379>
  3. 127.0.0.1:6379>

set创建key
set 001工号 qinglin名子

  1. 127.0.0.1:6379> set no001 qinglin
  2. OK

get获取key

  1. 127.0.0.1:6379> get no001
  2. "qinglin"

通过远程获取key

  1. [root@Qinglin-A redis-3.2.2]# redis-cli -h 127.0.0.1 -p 6379 get no001
  2. "qinglin"

删除key,并查看

  1. 127.0.0.1:6379> del set no001
  2. (integer) 1
  3. 127.0.0.1:6379> get no001
  4. (nil)

telnet测试方法

  1. [root@Qinglin-A ~]# telnet 127.0.0.1 6379
  2. Trying 127.0.0.1...
  3. Connected to 127.0.0.1.
  4. Escape character is '^]'.
  5. set no002 test
  6. +OK
  7. get no002
  8. $4
  9. test

五、Redis多数据类型介绍

1、字符串类型
这是最简单的redis类型,如果你只用这种类型,redis就是一个可以持久化的memcached服务器。
(注:memcache 的数据仅仅保存在内在中,服务器重启后,数据将丢失)。

  1. 127.0.0.1:6379> set mykey "my name is guanqinglin"
  2. OK
  3. 127.0.0.1:6379> get mykey
  4. "my name is guanqinglin"

“my name is guanqinglin” 正如你所见到的,通常用SET和GET来设置和获取字符串值。
值可以是任何各种类的字符串(包括二进制数据)例如你可以在一个键下保存一副jpeg图片。值的长度不能超过1GB。
虽然字符串是Redis的基本值类型,但是你仍然能通过它完成一些有趣的操作。
例如:原子递增

  1. 127.0.0.1:6379> set counter 100
  2. OK
  3. 127.0.0.1:6379> incr counter
  4. (integer) 101
  5. 127.0.0.1:6379> incr counter
  6. (integer) 102
  7. 127.0.0.1:6379> incr counter 10
  8. 127.0.0.1:6379> incrby counter 10
  9. (integer) 112

INCR命令将字符串值解析成整型,将其加1,最后将结果保存为新的字符串值,数亿的命令有INCRBY,DECR and DECRBY。实际上他们在内部就是同一个命令,只是看上去有点不同。
2、列表类型
要说清楚列表数据类型,最好先讲一点儿理论背景,在信息技术List这个词常常被使用不当。例如“Python Lists”就名不副实(名为Linked Lists),但他们实际上是数组(同样的数据类型在Ruby中叫数组)。
一般意义上讲,列表就是有序元素的序列:10,20,1,2,3就是一个例表,但用数组实现的List和Linked List实现的list,在属性方面大不相同。
Redis lists基于Linked list实现。这意味着即使在一个list中有数百万个元素,在头部或尾部添加一个元素的操作,其时间复杂度也是常数级别的。用LPUSH命令在十个元素的list头部添加新元素,和在千万元素的list头部添加新元素的速度相同。
那么,坏消息是什么?在数组实现的List中利用索引访问元素的速度极快,而同样的操作在linked list实现的list上没有那么快。
Redis Lists用linked list实现的原因是:对于数据库系统来说,到头重要的特性是:能非常快的在很大的列表上添加元素,另一个重要因素是,正如你将要看到的:Redis lists能在常数时间取得常数长度。
Redis lists入门
LPUSH命令可向list的左边(头部)添加一个新元素,而RPUSH命令可向list的右边(尾部)添加一个新元素,最后LRANGE命令可从list中取一定范围的元素

  1. 127.0.0.1:6379> RPUSH list1 "Guanqinglin"
  2. (integer) 1
  3. 127.0.0.1:6379> RPUSH list1 "Shuaige"
  4. (integer) 2
  5. 127.0.0.1:6379> RPUSH list1 "shi"
  6. (integer) 3
  7. 127.0.0.1:6379> RPUSH list1 "zhende"
  8. (integer) 4
  9. 127.0.0.1:6379> LRANGE list1 0 1
  10. 1) "Guanqinglin"
  11. 2) "Shuaige"
  12. 127.0.0.1:6379> LRANGE list1 0 2
  13. 1) "Guanqinglin"
  14. 2) "Shuaige"
  15. 3) "shi"
  16. 127.0.0.1:6379> LRANGE list1 0 3
  17. 1) "Guanqinglin"
  18. 2) "Shuaige"
  19. 3) "shi"
  20. 4) "zhende"

3、Redis集合
Redis集合是未排序的集合,其元素是二进制安全的字符串。SADD命令可以向集合加添一个新元素。和sets相关的操作也有许多,比如检测某个元素是否存在,以及实现交集并集,差集等等。一例胜千言:

  1. 127.0.0.1:6379> SADD myset guan
  2. (integer) 1
  3. 127.0.0.1:6379> SADD myset qing
  4. (integer) 1
  5. 127.0.0.1:6379> SADD myset lin
  6. (integer) 1
  7. 127.0.0.1:6379> SMEMBERS myset
  8. 1) "guan"
  9. 2) "lin"
  10. 3) "qing"

我向集合中添加了三个元素,并让Redis返回所有元素。如你所见他们是无序的。
现在让我们检查某个元素是否存在:

  1. 127.0.0.1:6379> SISMEMBER myset guan
  2. (integer) 1
  3. 127.0.0.1:6379> SISMEMBER myset shuai
  4. (integer) 0

guan是这个集合的成员,而shuai不是,集合特别适合表现对像之间的关系,例如用Redis集合可以很容易实现标签功能。

五、PHP安装redis客户端扩展

获取源码包

  1. [root@Qinglin-A ~]# file master
  2. master: Zip archive data, at least v1.0 to extract
  3. [root@Qinglin-A ~]# wget --no-check-certificate https://codeload.github.com/phpredis/phpredis/zip/master

安装(注本机必须已经安装PHP程序)

  1. [root@Qinglin-A ~]# unzip master
  2. [root@Qinglin-A ~]# cd phpredis-master/
  3. [root@Qinglin-A /]# /application/php5.3.27/bin/phpize
  4. Configuring for:
  5. PHP Api Version: 20090626
  6. Zend Module Api No: 20090626
  7. Zend Extension Api No: 220090626
  8. [root@Qinglin-A phpredis-master]# ./configure --with-php-config=/application/php5.3.27/bin/php-config
  9. [root@Qinglin-A phpredis-master]# make
  10. [root@Qinglin-A phpredis-master]# make install

修改php.ini设置,重启php

  1. [root@Qinglin-A /]# echo 'extension = redis.so' >>/application/php5.3.27/lib/php.ini

六、redis配置文件介绍及主从同步配置讲解

主配置文件

  1. /app/redis/conf/redis.conf

从库加上主库的IP即可实现主从同步

  1. [root@Qinglin-A /]# vim /app/redis/conf/redis.conf
  2. # slaveof
  3. slaveof 10.0.0.1 6379

监控命令(如果从库执行该命令会一直ping主库)

  1. [root@Qinglin-A /]# redis-cli -h localhost -p 6379 monitor
  2. OK
  3. ”PING“

redis功能统计

  1. [root@Qinglin-A /]# redis-cli -h localhost -p 6379 info
  2. # Server
  3. redis_version:3.2.2
  4. redis_git_sha1:00000000
  5. redis_git_dirty:0
  6. redis_build_id:cbd0cdda28fdd323
  7. redis_mode:standalone
  8. os:Linux 2.6.32-431.el6.x86_64 x86_64
  9. arch_bits:64
  10. multiplexing_api:epoll
  11. gcc_version:4.4.7
  12. process_id:2457
  13. run_id:69d1c0246acc88922030a99b8bf9509168123f8d
  14. tcp_port:6379
  15. uptime_in_seconds:6192
  16. uptime_in_days:0
  17. hz:10
  18. lru_clock:11052524
  19. executable:/root/redis-server
  20. config_file:/app/redis/conf/redis.conf
  21. # Clients
  22. connected_clients:1
  23. client_longest_output_list:0
  24. client_biggest_input_buf:0
  25. blocked_clients:0
  26. # Memory
  27. used_memory:821984
  28. used_memory_human:802.72K
  29. used_memory_rss:2732032
  30. used_memory_rss_human:2.61M
  31. used_memory_peak:821984
  32. used_memory_peak_human:802.72K
  33. total_system_memory:1036648448
  34. total_system_memory_human:988.62M
  35. used_memory_lua:37888
  36. used_memory_lua_human:37.00K
  37. maxmemory:0
  38. maxmemory_human:0B
  39. maxmemory_policy:noeviction
  40. mem_fragmentation_ratio:3.32
  41. mem_allocator:jemalloc-4.0.3
  42. # Persistence
  43. loading:0
  44. rdb_changes_since_last_save:0
  45. rdb_bgsave_in_progress:0
  46. rdb_last_save_time:1470666679
  47. rdb_last_bgsave_status:ok
  48. rdb_last_bgsave_time_sec:0
  49. rdb_current_bgsave_time_sec:-1
  50. aof_enabled:0
  51. aof_rewrite_in_progress:0
  52. aof_rewrite_scheduled:0
  53. aof_last_rewrite_time_sec:-1
  54. aof_current_rewrite_time_sec:-1
  55. aof_last_bgrewrite_status:ok
  56. aof_last_write_status:ok
  57. # Stats
  58. total_connections_received:3
  59. total_commands_processed:42
  60. instantaneous_ops_per_sec:0
  61. total_net_input_bytes:1744
  62. total_net_output_bytes:17746419
  63. instantaneous_input_kbps:0.00
  64. instantaneous_output_kbps:0.00
  65. rejected_connections:0
  66. sync_full:0
  67. sync_partial_ok:0
  68. sync_partial_err:0
  69. expired_keys:0
  70. evicted_keys:0
  71. keyspace_hits:11
  72. keyspace_misses:1
  73. pubsub_channels:0
  74. pubsub_patterns:0
  75. latest_fork_usec:293
  76. migrate_cached_sockets:0
  77. # Replication
  78. role:master
  79. connected_slaves:0
  80. master_repl_offset:0
  81. repl_backlog_active:0
  82. repl_backlog_size:1048576
  83. repl_backlog_first_byte_offset:0
  84. repl_backlog_histlen:0
  85. # CPU
  86. used_cpu_sys:9.77
  87. used_cpu_user:4.39
  88. used_cpu_sys_children:0.01
  89. used_cpu_user_children:0.00
  90. # Cluster
  91. cluster_enabled:0
  92. # Keyspace
  93. db0:keys=3,expires=0,avg_ttl=0

或查看单个CPU的内容

    1. [root@Qinglin-A /]# redis-cli -h localhost -p 6379 info CPU
    2. # CPU
    3. used_cpu_sys:9.83
    4. used_cpu_user:4.44
    5. used_cpu_sys_children:0.01
    6. used_cpu_user_children:0.00

Redis应用场景说明与部署的更多相关文章

  1. 【*】Redis实战场景中相关问题

    一.Redis简介 redis主要解决的问题 分布式缓存是分布式系统中的重要组件,主要解决高并发.大数据场景下,热点数据访问的性能问题,提供高性能的数据快速访问. 使用缓存常见场景 项目中部分数据访问 ...

  2. ehcache、redis应用场景比较

    应用场景: ehcache是Hibernate中默认的CacheProvider,直接在jvm虚拟机中缓存,速度快,效率高:但是缓存共享麻烦,集群分布式应用不方便.  . 缓存数据有两级:内存和磁盘, ...

  3. 面试连环炮系列(二):你们的项目Redis做了集群部署吗

    你们的项目Redis做了集群部署吗? 我们有大量数据需要缓存,而单实例的容量毕竟是有限的,于是做了Redis集群部署. 采取的方案是什么,Codis还是Redis Cluster,为什么要选择这个方案 ...

  4. Redis应用场景-转载

    1.  MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的 ...

  5. Redis应用场景(转)

    (来源:http://www.cnblogs.com/shanyou/archive/2012/09/04/2670972.html) Redis常用数据类型 Redis最为常用的数据类型主要有以下五 ...

  6. redis(二)Redis适用场景,如何正确的使用

    网络IO模型 Memcached是多线程,非阻塞IO复用的网络模型,分为监听主线程和worker子线程,监听线程监听网络连接,接受请求后,将连接描述字pipe 传递给worker线程,进行读写IO, ...

  7. redis使用场景

    Redis应用场景   Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作 ...

  8. <转>Redis 应用场景

    http://blog.csdn.net/hguisu/article/details/8836819 1.  MySql+Memcached 架构的问题 Memcached采用客户端-服务器的架构, ...

  9. Redis作者谈Redis应用场景

    Redis作者谈Redis应用场景 毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多 ...

随机推荐

  1. 【Android】解析AccessibilityService(辅助服务)的使用

    辅助功能是Android系统提供的一种服务,派生自Service类.这个服务提供了增强的用户界面,目的是为了帮助残障人士.它一般提供了页面元素查找功能和元素点击功能. 通过辅助功能,开发者可以实现一些 ...

  2. H+ 显示并激活menuTab 根据tabName

    //注:在contabs.js文件中 $(function () { }); 方法外 加入//注: data-name="' + menuName + '" 这句是加入的自定义属性 ...

  3. Windows Server 2008 IIS安装FTP及端口配置

    添加角色IIS,选择上FTP服务 打开IIS,右击网站,添加FTP站点 允许访问的指定用户,必须是Windows系统真实存在的用户,为了安全起见,此用户只赋予user组即可,不能赋予远程桌面权限 如果 ...

  4. Atitit s2018.6 s6 doc list on com pc.docx Atitit s2018.6 s6 doc list on com pc.docx  Aitit algo fix 算法系列补充.docx Atiitt 兼容性提示的艺术 attilax总结.docx Atitit 应用程序容器化总结 v2 s66.docx Atitit file cms api

    Atitit s2018.6 s6  doc list on com pc.docx Atitit s2018.6 s6  doc list on com pc.docx  Aitit algo fi ...

  5. 【iCore4 双核心板_ARM】例程二十五:LWIP_DNS实验——域名解析

    实验现象: 核心代码: int main(void) { system_clock.initialize(); led.initialize(); adc.initialize(); delay.in ...

  6. Git进阶用法

    Git高阶用法 1. 基本概念 你的本地仓库由Git维护的三棵树组成.第一个是你的工作目录,它持有实际文件:第二个是缓存区(Index),它像个缓存区域,临时保存您的改动:最后是HEAD,指向你最近一 ...

  7. sfc /scannow命令如何能用虚拟光驱完成修复?(xp下的办法)

    我们先光盘文件或用WinRAR压缩软件将ISO文件解压缩到本地磁盘某目录下,如e:\winxp:   在ISO文件上右击,在弹出的菜单中选择“解压到”:   文件较多,久等一会解压完成后文件夹下有很多 ...

  8. myeclipse16怎么去掉项目中的CodeLive Panel?

    http://www.jb51.net/softjc/524823.html —————————————————————————————————————————————————— 在Servers视图 ...

  9. Android中使用BufferedReader.readline阻塞读取不到数据,但是ready返回true

    通过socket测试工具在电脑上发送消息,Android真机可以收到响应BufferedReader.ready()返回true,但是readline却一直阻塞. 原因:readline()只有在遇到 ...

  10. vs 2015 项目筛选器没了,.h头文件和.cpp文件混在一起了

    场景: git 拉取 VS 2015 项目,打开之后,.h头文件和.cpp文件混在一起了. 解决方案: 需要XXX..vcxproj.filters 文件.