本文为  “haproxy + keepalived 一键安装包”  的 第四篇

目的:帮助快速设置haproxy 与 keepalived 配置文档

第一篇 haproxy 安装与配置

第二篇 keepalived 安装与配置

第三篇 haproxy + keepalived 一键安装包(keepalived 为haproxy 做 HA 高可用)

第四篇 haproxy + keepalived “一键安装包”  配置与测试HOWTO

一 haproxy.sh 与 keepalived.sh 服务脚本

  1. [root@four cluster]# ls /usr/local/sbin/*.ah
  2. haproxy.sh  keepalived.sh

二 设置自动启动 haproxy.sh 与 keepalived.sh

  1. [root@four cluster]# cat /etc/rc.local
  2. #!/bin/sh
  3. #
  4. # This script will be executed *after* all the other init scripts.
  5. # You can put your own initialization stuff in here if you don't
  6. # want to do the full Sys V style init stuff.
  7. touch /var/lock/subsys/local
  8. ulimit -SHn 65535
  9. /usr/local/sbin/haproxy.sh start
  10. /usr/local/sbin/keepalived.sh start

三 haproxy 相关配置

  1. 3.1 haroxy 程序目录
  2. #ls /usr/local/haproxy
  3. doc  haproxy.cfg  html  logs  sbin  share
  4. 3.2 haproxy 配置文档
  5. [root@four cluster]# file /usr/local/haproxy/haproxy.cfg
  6. /usr/local/haproxy/haproxy.cfg: UTF-8 Unicode text
  7. 3.3 编辑haproxy 配置文档
  8. [root@four cluster]# vim /usr/local/haproxy/haproxy.cfg
  9. 第37 行 定义健康检查html文档,所以你需要在你的web服务上建立check.html文件用于haproxy
  10. 健康检查,也可以跟具需要自定义检查文档。
  11. option  httpchk HEAD /check.html #用来做健康检查html文档
  12. 第38 39 行修10.0.1.252/253 替换成你的web 服务器ip地址
  13. server server1 10.0.1.252:80 cookie server1 check inter 2000 rise 3     fall 3 weight 3
  14. server server2 10.0.1.253:80 cookie server2 check inter 2000 rise 3     fall 3 maxconn 120 weight 3
  15. 3.4 启动haproxy 输入如下命令
  16. [root@four cluster]# haproxy.sh start
  17. 3.5 检查是否有haproxy 进程
  18. [root@four cluster]# ps aux | grep haproxy | grep -v 'grep'
  19. nobody    4216  0.0  0.2   7436  1108 ?        Ss   20:35   0:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
  20. 3.6 检查haproxy 是否监听80 端口
  21. [root@four cluster]# lsof -i :80
  22. COMMAND  PID   USER   FD   TYPE DEVICE SIZE NODE NAME
  23. haproxy 4216 nobody    4u  IPv4   8229       TCP *:http (LISTEN)
  24. 3.7 简单测试 haproxy 看看否返回 ’200 OK‘
  25. [root@four cluster]# curl -IL http://10.0.1.254 (换成你的ip )
  26. HTTP/1.1 200 OK
  27. Server: nginx/1.0.5
  28. Date: Wed, 28 Dec 2011 12:42:30 GMT
  29. Content-Type: text/html
  30. Content-Length: 159
  31. Last-Modified: Sat, 03 Dec 2011 11:36:10 GMT
  32. Connection: close
  33. Accept-Ranges: bytes

四 keepalived 相关配置

  1. 4.1 keepalived 程序目录
  2. [root@four cluster]# ls /usr/local/keepalived
  3. bin  etc  haproxy_check.sh  keepalived.conf  sbin  share
  4. 4.2 haproxy_check.sh shell脚本监控程序,用于检查 80端口,来判断haproxy 是否可用
  5. [root@four cluster]# file /usr/local/keepalived/haproxy_check.sh
  6. /usr/local/keepalived/haproxy_check.sh: Bourne-Again shell script text executable
  7. 4.3 keepalived 配置文档
  8. [root@four cluster]# file /usr/local/keepalived/keepalived.conf
  9. /usr/local/keepalived/keepalived.conf: ASCII text
  10. 4.4 编辑keepalived 配置文档
  11. [root@four cluster]# vim /usr/local/keepalived/keepalived.conf
  12. 第16 行 interface 默认值 eth1 ,改成你的haproxy 外网卡(公网ip网卡)
  13. interface eth0
  14. 第 34 行 默认值 10.0.1.250/24 dev eth1 ,10.0.1.250 替换成你virtual ip 地址,dev eth1 改成你的haproxy 外网卡(与第16行一致)
  15. 10.0.1.250/24 dev eth0 scope global
  16. 4.5 启动keepalived 输入如下命令
  17. [root@four cluster]# keepalived.sh start
  18. [root@four cluster]# 4242                #此处返回的是keepalived 进程id,敲下回车键即可
  19. 4.6 检查是否有keepalived 进程
  20. # ps aux | grep keepalived | grep -v 'grep'
  21. root      4238  0.0  0.0  63844   464 pts/0    S    20:52   0:00 /bin/bash /usr/local/sbin/keepalived.sh start
  22. root      4240  0.0  0.1  35776   608 ?        Ss   20:52   0:00 /usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived/keepalived.conf
  23. root      4241  0.0  0.1  39936  1048 ?        S    20:52   0:00 /usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived/keepalived.conf
  24. root      4242  0.0  0.2  63848  1152 pts/0    S    20:52   0:00 /bin/bash /usr/local/keepalived/haproxy_check.sh start
  25. 4.7 查看keepalived 输出日志
  26. [root@four cluster]# tail /var/log/messages
  27. Dec 28 20:52:28 four Keepalived_vrrp: Registering Kernel netlink reflector
  28. Dec 28 20:52:28 four Keepalived_vrrp: Registering Kernel netlink command channel
  29. Dec 28 20:52:28 four Keepalived_vrrp: Registering gratutious ARP shared channel
  30. Dec 28 20:52:28 four Keepalived: Starting VRRP child process, pid=4241
  31. Dec 28 20:53:08 four Keepalived_vrrp: Opening file '/usr/local/keepalived/keepalived.conf'.
  32. Dec 28 20:53:08 four Keepalived_vrrp: Configuration is using : 63577 Bytes
  33. Dec 28 20:53:08 four Keepalived_vrrp: Using LinkWatch kernel netlink reflector...
  34. Dec 28 20:53:08 four Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
  35. Dec 28 20:53:12 four Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
  36. Dec 28 20:53:13 four Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE              #当前keepalived 状态为master

五 haproxy 与 keepalived 整体测试

  1. 5.1 查看 haproxy 与 keepalived 进程树
  2. [root@four cluster]# pstree
  3. init─┬─crond
  4. ├─events/0
  5. ├─events/1
  6. ├─haproxy                                      #haproxy 进程
  7. ├─keepalived───keepalived                      #keepalived 进程(2个)
  8. ├─keepalived.sh───haproxy_check.s───sleep      #keepalived.sh 调用 haproxy_check.sh (监控脚本) 调用 sleep (用于控检查间隔时间,2s)
  9. 5.2 模拟网络故障 haproxy 切换测试
  10. haproxy 1 日志
  11. [root@one ~]# tail /var/log/messages -f
  12. Dec 28 21:09:43 one kernel: NFSD: starting 90-second grace period
  13. Dec 28 21:09:44 one Keepalived: Starting Keepalived v1.2.2 (12/25,2011)
  14. Dec 28 21:09:44 one Keepalived_vrrp: Registering Kernel netlink reflector
  15. Dec 28 21:09:44 one Keepalived_vrrp: Registering Kernel netlink command channel
  16. Dec 28 21:09:44 one Keepalived_vrrp: Registering gratutious ARP shared channel
  17. Dec 28 21:09:44 one Keepalived: Starting VRRP child process, pid=1993
  18. Dec 28 21:10:24 one Keepalived_vrrp: Opening file '/usr/local/keepalived/keepalived.conf'.
  19. Dec 28 21:10:24 one Keepalived_vrrp: Configuration is using : 63597 Bytes
  20. Dec 28 21:10:24 one Keepalived_vrrp: Using LinkWatch kernel netlink reflector...
  21. Dec 28 21:10:24 one Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
  22. haproxy 2 日志
  23. [root@four cluster]# ifdown eth0
  24. [root@four cluster]# tail /var/log/messages
  25. Dec 28 20:52:28 four Keepalived: Starting VRRP child process, pid=4241
  26. Dec 28 20:53:08 four Keepalived_vrrp: Opening file '/usr/local/keepalived/keepalived.conf'.
  27. Dec 28 20:53:08 four Keepalived_vrrp: Configuration is using : 63577 Bytes
  28. Dec 28 20:53:08 four Keepalived_vrrp: Using LinkWatch kernel netlink reflector...
  29. Dec 28 20:53:08 four Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
  30. Dec 28 20:53:12 four Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
  31. Dec 28 20:53:13 four Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
  32. Dec 28 21:12:07 four Keepalived_vrrp: Kernel is reporting: interface eth0 DOWN
  33. Dec 28 21:12:07 four Keepalived_vrrp: VRRP_Instance(VI_1) Entering FAULT STATE
  34. Dec 28 21:12:07 four Keepalived_vrrp: VRRP_Instance(VI_1) Now in FAULT state                 #keepalived fault 状态
  35. haproxy 1 日志
  36. [root@one ~]# tail /var/log/messages -f
  37. Dec 28 21:09:43 one kernel: NFSD: starting 90-second grace period
  38. Dec 28 21:09:44 one Keepalived: Starting Keepalived v1.2.2 (12/25,2011)
  39. Dec 28 21:09:44 one Keepalived_vrrp: Registering Kernel netlink reflector
  40. Dec 28 21:09:44 one Keepalived_vrrp: Registering Kernel netlink command channel
  41. Dec 28 21:09:44 one Keepalived_vrrp: Registering gratutious ARP shared channel
  42. Dec 28 21:09:44 one Keepalived: Starting VRRP child process, pid=1993
  43. Dec 28 21:10:24 one Keepalived_vrrp: Opening file '/usr/local/keepalived/keepalived.conf'.
  44. Dec 28 21:10:24 one Keepalived_vrrp: Configuration is using : 63597 Bytes
  45. Dec 28 21:10:24 one Keepalived_vrrp: Using LinkWatch kernel netlink reflector...
  46. Dec 28 21:10:24 one Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
  47. Dec 28 21:12:08 one Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
  48. Dec 28 21:12:09 one Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE             #成功切换为 master
  49. haproxy 1 检查vip
  50. [root@one ~]# ip add
  51. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
  52. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  53. inet 127.0.0.1/8 scope host lo
  54. inet6 ::1/128 scope host
  55. valid_lft forever preferred_lft forever
  56. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
  57. link/ether 08:00:27:74:3c:05 brd ff:ff:ff:ff:ff:ff
  58. inet 10.0.2.251/24 brd 10.0.2.255 scope global eth0
  59. inet6 fe80::a00:27ff:fe74:3c05/64 scope link
  60. valid_lft forever preferred_lft forever
  61. 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
  62. link/ether 08:00:27:3e:9a:2b brd ff:ff:ff:ff:ff:ff
  63. inet 10.0.1.251/24 brd 10.0.1.255 scope global eth1
  64. inet 10.0.1.250/24 scope global secondary eth1  #virtual ip
  65. inet6 fe80::a00:27ff:fe3e:9a2b/64 scope link
  66. valid_lft forever preferred_lft forever
  67. 4: sit0: <NOARP> mtu 1480 qdisc noop
  68. link/sit 0.0.0.0 brd 0.0.0.0
  69. 5.3 模拟haproxy 80端口故障 keepalived 切换测试
  70. haproxy 2 恢复
  71. [root@four cluster]# ifup eth0
  72. haproxy 2 日志
  73. [root@four cluster]# tail /var/log/messages -f
  74. Dec 28 20:53:08 four Keepalived_vrrp: Configuration is using : 63577 Bytes
  75. Dec 28 20:53:08 four Keepalived_vrrp: Using LinkWatch kernel netlink reflector...
  76. Dec 28 20:53:08 four Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
  77. Dec 28 20:53:12 four Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
  78. Dec 28 20:53:13 four Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
  79. Dec 28 21:12:07 four Keepalived_vrrp: Kernel is reporting: interface eth0 DOWN
  80. Dec 28 21:12:07 four Keepalived_vrrp: VRRP_Instance(VI_1) Entering FAULT STATE
  81. Dec 28 21:12:07 four Keepalived_vrrp: VRRP_Instance(VI_1) Now in FAULT state
  82. Dec 28 21:15:34 four kernel: e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
  83. Dec 28 21:15:35 four Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
  84. haproxy 1 进程
  85. [root@one ~]# pstree
  86. init─┬─crond
  87. ├─dbus-daemon
  88. ├─events/0
  89. ├─haproxy
  90. ├─keepalived───keepalived
  91. ├─keepalived.sh───haproxy_check.s───sleep
  92. 停止 haproxy 进程
  93. [root@one ~]# killall haproxy                                        #停止haproxy 进程
  94. [root@one ~]# tail /usr/local/keepalived/fault.log                   #fault log
  95. 2011-12-28_21:17:50 http://10.0.1.251:80 1      fault
  96. 2011-12-28_21:17:51 http://10.0.1.251:80 2      fault
  97. 2011-12-28_21:17:52 http://10.0.1.251:80 3      fault
  98. 2011-12-28_21:17:53 http://10.0.1.251:80 4      fault
  99. 2011-12-28_21:17:54 http://10.0.1.251:80 5      fault
  100. 2011-12-28_21:17:55 http://10.0.1.251:80 6      fault
  101. 2011-12-28_21:17:56 http://10.0.1.251:80 7      fault
  102. 2011-12-28_21:17:57 http://10.0.1.251:80 8      fault
  103. haproxy 1 日志
  104. [root@one ~]# tail /var/log/messages
  105. Dec 28 21:12:09 one Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
  106. Dec 28 21:17:58 one Keepalived: Terminating on signal
  107. Dec 28 21:17:58 one Keepalived: Stopping Keepalived v1.2.2 (12/25,2011)                   #keepalived 被haproxy_check.sh 监控脚本关闭
  108. Dec 28 21:17:58 one Keepalived_vrrp: Terminating VRRP child process on signal
  109. Dec 28 21:17:58 one kernel: ADDRCONF(NETDEV_UP): eth0: link is not ready
  110. Dec 28 21:17:58 one kernel: e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
  111. Dec 28 21:17:58 one kernel: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
  112. Dec 28 21:18:00 one kernel: ADDRCONF(NETDEV_UP): eth1: link is not ready
  113. Dec 28 21:18:00 one kernel: e1000: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
  114. Dec 28 21:18:00 one kernel: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
  115. haproxy 2 日志
  116. [root@four cluster]# tail /var/log/messages -f
  117. Dec 28 20:53:08 four Keepalived_vrrp: Configuration is using : 63577 Bytes
  118. Dec 28 20:53:08 four Keepalived_vrrp: Using LinkWatch kernel netlink reflector...
  119. Dec 28 20:53:08 four Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
  120. Dec 28 20:53:12 four Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
  121. Dec 28 20:53:13 four Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
  122. Dec 28 21:12:07 four Keepalived_vrrp: Kernel is reporting: interface eth0 DOWN
  123. Dec 28 21:12:07 four Keepalived_vrrp: VRRP_Instance(VI_1) Entering FAULT STATE
  124. Dec 28 21:12:07 four Keepalived_vrrp: VRRP_Instance(VI_1) Now in FAULT state
  125. Dec 28 21:15:34 four kernel: e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
  126. Dec 28 21:15:35 four Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
  127. Dec 28 21:18:02 four Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
  128. Dec 28 21:18:03 four Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE          #keepalived 状态为 master
  129. [root@four cluster]# ip add
  130. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
  131. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  132. inet 127.0.0.1/8 scope host lo
  133. inet6 ::1/128 scope host
  134. valid_lft forever preferred_lft forever
  135. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
  136. link/ether 08:00:27:27:ef:a6 brd ff:ff:ff:ff:ff:ff
  137. inet 10.0.2.254/24 brd 10.0.2.255 scope global eth0
  138. inet6 fe80::a00:27ff:fe27:efa6/64 scope link
  139. valid_lft forever preferred_lft forever
  140. 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
  141. link/ether 08:00:27:cd:f3:db brd ff:ff:ff:ff:ff:ff
  142. inet 10.0.1.254/24 brd 10.0.1.255 scope global eth1
  143. inet 10.0.1.250/24 scope global secondary eth1  #virtual ip
  144. inet6 fe80::a00:27ff:fecd:f3db/64 scope link
  145. valid_lft forever preferred_lft forever
  146. 4: sit0: <NOARP> mtu 1480 qdisc noop
  147. link/sit 0.0.0.0 brd 0.0.0.0

六 haproxy_check.sh 监控脚本

  1. 脚本默认监控 eth1 网卡,所以你需要根据自己的需要调整,如果你haproxy virtual ip 在eth0 网卡,那么你需要做如下更改:
  2. 6.1 使用"#"号注释掉 第14行 第16行,取消掉 第15行 第17行
  3. #eth1_ip=$(/sbin/ifconfig eth1  | sed -n '/inet addr:/ s/inet addr://pg' | awk -F" " '{print $1}')
  4. eth0_ip=$(/sbin/ifconfig eth0  | sed -n '/inet addr:/ s/inet addr://pg' | awk -F" " '{print $1}')
  5. #eth1_url="http://${eth1_ip}:80"
  6. eth0_url="http://${eth0_ip}:80"
  7. 6.2 将第35行 $eth1_url,替换成 $eth0_url
  8. if curl -IL -A "haproxy_check" "$eth1_url" > /dev/null 2>&1 ;then
  9. 6.3 将第48行 $eth1_url,替换成 $eth0_url
  10. if ! curl -IL -A "haproxy_check" "$eth1_url" > /dev/null 2>&1 ;then 

七 其它

  1. 5.2 模拟网络故障 haproxy 切换测试 与 5.3 模拟haproxy 80端口故障 keepalived 切换测试
  2. 五 haproxy 与 keepalived 整体测试,反过来测试也是没有问题的,不过要保证 haproxy.sh keepalived.sh 这两个服务脚本已经启动了,可以使用pstree 查看
  3. 如:[root@four cluster]# pstree
  4. init─┬─crond
  5. ├─events/0
  6. ├─events/1
  7. ├─haproxy
  8. ├─keepalived───keepalived
  9. ├─keepalived.sh───haproxy_check.s───sleep
本文转自 dongnan 51CTO博客,原文链接:
http://blog.51cto.com/dngood/753739

haproxy + keepalived “一键安装包” 配置与测试HOWTO相关推荐

  1. 利用lnmp一键安装包配置自动更新的免费SSL证书

    我的域名和博客空间原来都是在godaddy购买的,当时有个ssl的优惠(大概$14.4/年),但到期后那个续费也太贵了,就没有继续购买.不过看到现在的浏览器总是提示不安全,网址前的小锁标志上一个红叉很 ...

  2. LNMP 一键安装包配置 https

    一.安装包 安装大家按照官方说的安装即可. ./install.sh lnmpa 二.配置 为域名 bbs.wzlinux.com 配置虚拟主机 [root@test ~]# lnmp vhost a ...

  3. win2008一键配置php mysql_Windows 2008一键安装包配置环境:Windows+IIS+Php+Mysql

    集成包: IIS7组件.FTP7.php 5.5.7.mysql 5.6.15.phpMyAdmin 4.1.8.phpwind 9.0.ISAPI_Rewrite 安装包: 32位和64位 安装包启 ...

  4. 阿里云配置php mysql_阿里云Windows 2008一键安装包配置php web环境图文安装教程(IIS+Php+Mysql)...

    集成包下载地址: 集成包版本介绍: IIS7组件.FTP7.php 5.5.7.mysql 5.6.15.phpMyAdmin 4.1.8.phpwind 9.0.ISAPI_Rewrite 安装包: ...

  5. iis php环境安装包下载,Windows 一键安装包配置环境:Windows+IIS+Php+Mysql

    集成包: IIS7组件.FTP7.php 5.5.7.mysql 5.6.15.phpMyAdmin 4.1.8.phpwind 9.0.ISAPI_Rewrite 安装包: 32位和64位 安装包启 ...

  6. 测评宝塔编译安装LNMP与LNMP一键安装包速度比较

    之前搭建网站用过宝塔编译安装LNMP和LNMP一键安装包,感觉两者还是有点差距,现在对两者做比较 服务器信息 服务器物理位置:香港沙田 线路:cn2 GIA 服务器价格:25元/月 配置:1H1G 3 ...

  7. 树莓派 + lnmp一键安装包 + thinkphp搭建网站

    目录 前言: 一.准备树莓派 二.安装lnmp安装包 三.设置虚拟主机 1.添加虚拟主机​ 2.上传Thinkphp框架 3.进行一些配置(重要) 前言: 之前零星写了一些环境搭建的问题的解决方法,现 ...

  8. linux mysql 安装启动失败,Linux服务器一键安装包的mysql启动失败

    Linux服务器上用一键安装包配置的环境,启动mysql失败,提示如下错误信息: 排查方法: 1.查看服务器的磁盘空间是否正常,登录服务器执行命令 df -h 查看磁盘空间,如果服务器的系统盘或者数据 ...

  9. LNMP一键安装包 – 简单单单配置好linux服务器

    LNMP一键安装包 – 简单单单配置好linux服务器 lnmp-org 网站.独立博客越做越大,腰包越来越鼓,不少做网站的朋友明显感受到了虚拟主机已经不足以满足自己网站的负载,加之服务器硬件以及带宽 ...

最新文章

  1. 点击通知栏后打开Activity,并传参
  2. REM——适合移动开发的自适应方案
  3. python编程语言的缺点-常见的AI编程语言优缺点比较,程序员千万不要入错行!...
  4. Session 'app': Error Installing APK
  5. 阿里云服务器本地连接(windows) 阿里云服务器和本地的磁盘共享数据
  6. 搜狗浏览器中如何删除自带工具 搜狗浏览器删除自带工具的方法步骤
  7. 机器字长、存储字长、指令字长
  8. mysql 大量数据 更改索引_MySql——来自狂神说Java - 贤贤贤sir
  9. log4j2 配置详解及使用范例
  10. 完整安装sqlserver always on集群
  11. 定时监控服务,告警,并启动服务
  12. Android 集成微信h5支付
  13. windows虚拟网卡驱动开发~开源(建议收藏)
  14. 创业文档: 软件定制开发合同
  15. 构建自己的Aleax查询服务
  16. yapi 权限_yapi部署
  17. java 英文整数数字转成阿拉伯数字 正负百万亿以内
  18. 三维地理信息系统空间的可视分析
  19. 这些免费的网站值得你收藏
  20. 程序员是如何开灯的 白话闲聊mqtt协议

热门文章

  1. 【C语言】关于结构体最后的长度为0或1数组的思考
  2. 过主动防御自启动代码delphi
  3. C#在WinForm中实现清空指定类型控件的内容
  4. 前端面试题:算法-冒泡排序
  5. C# 写入和读出文本文件
  6. HashMap原理和使用
  7. [转]linux文件同步工具Unison的使用
  8. csu1356 :判断一个环是否为奇数环
  9. 新概念英语第一册1-34课单词
  10. [SCOI2007]降雨量