当前位置: 首页 > 编程日记 > 正文

tomcat_deploy 平滑启动脚本

1.此脚本需要nginx安装ginx_upstream_check_module 配置完成平滑重启

2.脚本内容如下:

  1 #!/bin/bash
  2 cat <<MADAY
  3 ===---------------------------------------------------------===
  4 +-------------------------------------------------------------+
  5     A)服务器192.168.1.1 tomcat后台更新
  6     B)服务器192.168.1.2 tomcat后台更新
  7     C)服务器192.168.1.3 tomcat后台更新
  8     D)三台tomcat服务器无人值守后台跟新
  9 +-------------------------------------------------------------+
 10 ===---------------------------------------------------------===
 11 MADAY
 12 
 13 export USER=root
 14 export PASSWD=Quanjing321
 15 #1.#####################################  TOMCAT 8080 SHUTDOWN and start script ########################################################
 16 function tomcat1(){
 17 
 18 cat <<bbb >/root/tomcat_kill
 19 #!/bin/bash
 20 tomcat_8080_start=/export/servers/tomcat7-1/bin/startup.sh
 21 tomcat_8080_dir=/export/servers/tomcat7-1/webapps
 22 tomcat_8080_port_check=\`netstat -anpt |grep LISTEN|grep :8080|wc -l\`
 23 tomcat_8080=\`netstat -anpt |grep LISTEN|grep :8080| awk '{print \$7}' |awk -F "/" '{print \$1}'\`
 24 tomcat_8080_shutdown_dir=/export/servers/tomcat7-1/bin/shutdown.sh
 25 timedate=\`date +%Y%m%d%H%M\`
 26 
 27 tomcat_8081_start=/export/servers/tomcat7-2/bin/startup.sh
 28 tomcat_8081_dir=/export/servers/tomcat7-2/webapps
 29 tomcat_8081_port_check=\`netstat -anpt |grep LISTEN|grep :8081|wc -l\`
 30 tomcat_8081=\`netstat -anpt |grep LISTEN|grep :8081| awk '{print \$7}' |awk -F "/" '{print \$1}'\`
 31 tomcat_8081_shutdown_dir=/export/servers/tomcat7-2/bin/shutdown.sh
 32 
 33 tomcat_8082_start=/export/servers/tomcat7-3/bin/startup.sh
 34 tomcat_8082_dir=/export/servers/tomcat7-3/webapps
 35 tomcat_8082_port_check=\`netstat -anpt |grep LISTEN|grep :8082|wc -l\`
 36 tomcat_8082=\`netstat -anpt |grep LISTEN|grep :8082| awk '{print \$7}' |awk -F "/" '{print \$1}'\`
 37 tomcat_8082_shutdown_dir=/export/servers/tomcat7-3/bin/shutdown.sh
 38 #===========================================创建备份war包目录 并且备份上一个版本===============================================
 39 
 40 if [ -d /export/backup/api ]; then
 41 cp /export/servers/tomcat7-3/webapps/ROOT.war /export/backup/api/api_\${timedate}.war
 42 else
 43 mkdir -p /export/backup/api
 44 cp /export/servers/tomcat7-3/webapps/ROOT.war /export/backup/api/api_\${timedate}.war
 45 fi
 46 
 47 #==========================================闭盖nginx 连接不向后台转发==========================================================
 48 wget -q -O -  http://127.0.0.1:8080/health_check/set/1  > /dev/null
 49 sleep 5
 50 wget -q -O -  http://127.0.0.1:8081/health_check/set/1  > /dev/null
 51 sleep 5
 52 #==========================================kill进程 启动tomcat================================================================= 
 53 while true
 54 Connect=\`netstat -anpt |grep :8080 |grep ESTABLISHED|wc -l\`
 55 do
 56        if [ "\$Connect" -lt   "1" ]; then
 57                 echo "当前服务器没有ESTABLISHED连接停止tomcat";
 58  #              [[ -n \$tomcat_8080 ]] && kill -9 \$tomcat_8080
 59                  ps -elf |grep tomcat7-1|grep -v grep |awk '{print \$4}' |xargs kill  -9
 60                  rm -rf \$tomcat_8080_dir/ROOT*
 61                  cp /root/api.war   \$tomcat_8080_dir/ROOT.war
 62                  sh \$tomcat_8080_start
 63                  sleep 10
 64                break
 65         else
 66            echo "Exist process"
 67            sleep 2
 68 fi
 69 done
 70 
 71 while true
 72 Connect=\`netstat -anpt |grep :8081 |grep ESTABLISHED|wc -l\`
 73 do
 74        if [ "\$Connect" -lt   "1" ]; then
 75                 echo "当前服务器没有ESTABLISHED连接停止tomcat";
 76   #             [[ -n \$tomcat_8081 ]] && kill -9 \$tomcat_8081
 77                 ps -elf |grep tomcat7-2|grep -v grep |awk '{print \$4}' |xargs kill  -9
 78                  rm -rf \$tomcat_8081_dir/ROOT*
 79                  cp /root/api.war   \$tomcat_8081_dir/ROOT.war
 80                  sh \$tomcat_8081_start
 81                sleep 10
 82               break
 83         else
 84            echo "Exist process"
 85            sleep 2
 86 fi
 87 done
 88         sleep 5
 89    
 90      if [ "\$tomcat_8082_port_check" -eq "1" ]; then
 91           ps -elf |grep tomcat7-3|grep -v grep |awk '{print \$4}' |xargs kill  -9
 92           rm -rf \$tomcat_8082_dir/ROOT*
 93           cp /root/api.war   \$tomcat_8082_dir/ROOT.war
 94           sh \$tomcat_8082_start
 95       elif [ "\$tomcat_8082_port_check" -eq "1" ];then
 96           echo "tomcat 8082 启动成功"
 97       else
 98           rm -rf \$tomcat_8082_dir/ROOT*
 99           cp /root/api.war   \$tomcat_8082_dir/ROOT.war
100           sh \$tomcat_8082_start
101      fi
102  
103 #=========================================后台启动完成 开盖nginx===============================================================
104 sleep 5
105 if [ \$tomcat_8080_port_check -eq 1 ];then
106 wget -q -O -  http://127.0.0.1:8080/health_check/set/0  > /dev/null
107 echo "tomcat 8080端口启动正常"
108 else
109  echo "tomcat 8080端口启动失败 请检查后台程序"
110 fi
111 sleep 5
112 if [ \$tomcat_8081_port_check -eq 1 ];then
113 wget -q -O -  http://127.0.0.1:8081/health_check/set/0  > /dev/null
114 echo "tomcat 8081端口启动正常"
115 else
116  echo "tomcat 8081端口启动失败 请检查后台程序"
117 fi
118 bbb
119 #==================================================脚本发送执行==================================================
120 /usr/bin/expect << EOF
121 set timeout -1 
122 spawn scp /root/tomcat_kill  /export/shell/appdeploy/api.war root@192.168.1.1:/root/
123 expect {
124 "(yes/no)?" {send "yes\r";exp_continue}
125 "password:" {send "$PASSWD\r"}
126 }
127 interact
128 expect eof
129 EOF
130 
131 /usr/bin/expect << EOF
132 set timeout -1
133 spawn ssh root@192.168.1.1
134 expect {
135 "(yes/no)?" {send "yes\r";exp_continue}
136 "password:" {send "$PASSWD\r"}
137 }
138 expect -re "\](\$|#)"
139 send  "sh -x /root/tomcat_kill \r" 
140 expect -re "\](\$|#)"
141 send "rm -rf /root/tomcat_kill \r"
142 expect -re "\](\$|#)"
143 send "exit\r"
144 interact
145 expect eof
146 EOF
147 
148 }
149 
150 
151 #2.###############################################tomcat 2 start script###############################################
152 function tomcat2(){
153 
154 cat <<bbb >/root/tomcat_kill
155 #!/bin/bash
156 tomcat_8080_start=/export/servers/tomcat7-1/bin/startup.sh
157 tomcat_8080_dir=/export/servers/tomcat7-1/webapps
158 tomcat_8080_port_check=\`netstat -anpt |grep LISTEN|grep :8080|wc -l\`
159 tomcat_8080=\`netstat -anpt |grep LISTEN|grep :8080| awk '{print \$7}' |awk -F "/" '{print \$1}'\`
160 tomcat_8080_shutdown_dir=/export/servers/tomcat7-1/bin/shutdown.sh
161 timedate=\`date +%Y%m%d%H%M\`
162 
163 tomcat_8081_start=/export/servers/tomcat7-2/bin/startup.sh
164 tomcat_8081_dir=/export/servers/tomcat7-2/webapps
165 tomcat_8081_port_check=\`netstat -anpt |grep LISTEN|grep :8081|wc -l\`
166 tomcat_8081=\`netstat -anpt |grep LISTEN|grep :8081| awk '{print \$7}' |awk -F "/" '{print \$1}'\`
167 tomcat_8081_shutdown_dir=/export/servers/tomcat7-2/bin/shutdown.sh
168 
169 tomcat_8082_start=/export/servers/tomcat7-3/bin/startup.sh
170 tomcat_8082_dir=/export/servers/tomcat7-3/webapps
171 tomcat_8082_port_check=\`netstat -anpt |grep LISTEN|grep :8082|wc -l\`
172 tomcat_8082=\`netstat -anpt |grep LISTEN|grep :8082| awk '{print \$7}' |awk -F "/" '{print \$1}'\`
173 tomcat_8082_shutdown_dir=/export/servers/tomcat7-3/bin/shutdown.sh
174 #===========================================创建备份war包目录 并且备份上一个版本===============================================
175 
176 if [ -d /export/backup/api ]; then
177 cp /export/servers/tomcat7-3/webapps/ROOT.war /export/backup/api/api_\${timedate}.war
178 else
179 mkdir -p /export/backup/api
180 cp /export/servers/tomcat7-3/webapps/ROOT.war /export/backup/api/api_\${timedate}.war
181 fi
182 #==========================================闭盖nginx 连接不向后台转发==========================================================
183 wget -q -O -  http://127.0.0.1:8080/health_check/set/1  > /dev/null
184 sleep 5
185 wget -q -O -  http://127.0.0.1:8081/health_check/set/1  > /dev/null
186 sleep 5
187 wget -q -O -  http://127.0.0.1:8082/health_check/set/1  > /dev/null
188 sleep 5
189 #==========================================kill进程 启动tomcat================================================================= 
190 while true
191 Connect=\`netstat -anpt |grep :8080 |grep ESTABLISHED|wc -l\`
192 do
193        if [ "\$Connect" -lt   "1" ]; then
194                 echo "当前服务器没有ESTABLISHED连接停止tomcat";
195  #              [[ -n \$tomcat_8080 ]] && kill -9 \$tomcat_8080
196                  ps -elf |grep tomcat7-1|grep -v grep |awk '{print \$4}' |xargs kill  -9
197                  rm -rf \$tomcat_8080_dir/ROOT*
198                  cp /root/api.war   \$tomcat_8080_dir/ROOT.war
199                  sh \$tomcat_8080_start
200                  sleep 10
201                break
202         else
203            echo "Exist process"
204            sleep 2
205 fi
206 done
207 
208 while true
209 Connect=\`netstat -anpt |grep :8081 |grep ESTABLISHED|wc -l\`
210 do
211        if [ "\$Connect" -lt   "1" ]; then
212                 echo "当前服务器没有ESTABLISHED连接停止tomcat";
213   #             [[ -n \$tomcat_8081 ]] && kill -9 \$tomcat_8081
214                 ps -elf |grep tomcat7-2|grep -v grep |awk '{print \$4}' |xargs kill  -9
215                  rm -rf \$tomcat_8081_dir/ROOT*
216                  cp /root/api.war   \$tomcat_8081_dir/ROOT.war
217                  sh \$tomcat_8081_start
218                sleep 10
219               break
220         else
221            echo "Exist process"
222            sleep 2
223 fi
224 done
225         
226 while true
227 Connect=\`netstat -anpt |grep :8082 |grep ESTABLISHED|wc -l\`
228 do
229        if [ "\$Connect" -lt   "1" ]; then
230                 echo "当前服务器没有ESTABLISHED连接停止tomcat";
231   #             [[ -n \$tomcat_8082 ]] && kill -9 \$tomcat_8082
232                 ps -elf |grep tomcat7-3|grep -v grep |awk '{print \$4}' |xargs kill  -9
233                  rm -rf \$tomcat_8082_dir/ROOT*
234                  cp /root/api.war   \$tomcat_8082_dir/ROOT.war
235                  sh \$tomcat_8082_start
236                sleep 10
237               break
238         else
239            echo "Exist process"
240            sleep 2
241 fi
242 done
243 #=========================================后台启动完成 开盖nginx===============================================================
244 sleep 5
245 if [ \$tomcat_8080_port_check -eq 1 ];then
246 wget -q -O -  http://127.0.0.1:8080/health_check/set/0  > /dev/null
247 echo "tomcat 8080端口启动正常"
248 else
249  echo "tomcat 8080端口启动失败 请检查后台程序"
250 fi
251 sleep 5
252 if [ \$tomcat_8081_port_check -eq 1 ];then
253 wget -q -O -  http://127.0.0.1:8081/health_check/set/0  > /dev/null
254 echo "tomcat 8081端口启动正常"
255 else
256  echo "tomcat 8081端口启动失败 请检查后台程序"
257 fi
258 sleep 5
259 if [ \$tomcat_8082_port_check -eq 1 ];then
260 wget -q -O -  http://127.0.0.1:8082/health_check/set/0  > /dev/null
261 echo "tomcat 8082端口启动正常"
262 else
263  echo "tomcat 8082端口启动失败 请检查后台程序"
264 fi
265 bbb
266 ################################################脚本发送执行###############################################
267 /usr/bin/expect << EOF 
268 set timeout -1
269 spawn scp /root/tomcat_kill  /export/shell/appdeploy/api.war root@192.168.1.2:/root/
270 expect {
271 "(yes/no)?" {send "yes\r";exp_continue}
272 "password:" {send "$PASSWD\r"}
273 }
274 interact
275 expect eof
276 EOF
277 
278 /usr/bin/expect << EOF
279 set timeout -1
280 spawn ssh root@192.168.1.2
281 expect {
282 "(yes/no)?" {send "yes\r";exp_continue}
283 "password:" {send "$PASSWD\r"}
284 }
285 expect -re "\](\$|#)"
286 send  "sh -x /root/tomcat_kill \r" 
287 expect -re "\](\$|#)"
288 send "rm -rf /root/tomcat_kill \r"
289 expect -re "\](\$|#)"
290 send "exit\r"
291 interact
292 expect eof
293 exit
294 EOF
295 }
296 
297 #3.###############################################tomcat 3 start script###############################################
298 function tomcat3(){
299 
300 cat <<bbb >/root/tomcat_kill
301 #!/bin/bash
302 tomcat_8080_start=/export/servers/tomcat7-1/bin/startup.sh
303 tomcat_8080_dir=/export/servers/tomcat7-1/webapps
304 tomcat_8080_port_check=\`netstat -anpt |grep LISTEN|grep :8080|wc -l\`
305 tomcat_8080=\`netstat -anpt |grep LISTEN|grep :8080| awk '{print \$7}' |awk -F "/" '{print \$1}'\`
306 tomcat_8080_shutdown_dir=/export/servers/tomcat7-1/bin/shutdown.sh
307 timedate=\`date +%Y%m%d%H%M\`
308 
309 tomcat_8081_start=/export/servers/tomcat7-2/bin/startup.sh
310 tomcat_8081_dir=/export/servers/tomcat7-2/webapps
311 tomcat_8081_port_check=\`netstat -anpt |grep LISTEN|grep :8081|wc -l\`
312 tomcat_8081=\`netstat -anpt |grep LISTEN|grep :8081| awk '{print \$7}' |awk -F "/" '{print \$1}'\`
313 tomcat_8081_shutdown_dir=/export/servers/tomcat7-2/bin/shutdown.sh
314 
315 tomcat_8082_start=/export/servers/tomcat7-3/bin/startup.sh
316 tomcat_8082_dir=/export/servers/tomcat7-3/webapps
317 tomcat_8082_port_check=\`netstat -anpt |grep LISTEN|grep :8082|wc -l\`
318 tomcat_8082=\`netstat -anpt |grep LISTEN|grep :8082| awk '{print \$7}' |awk -F "/" '{print \$1}'\`
319 tomcat_8082_shutdown_dir=/export/servers/tomcat7-3/bin/shutdown.sh
320 #===========================================创建备份war包目录 并且备份上一个版本===============================================
321 
322 if [ -d /export/backup/api ]; then
323 cp /export/servers/tomcat7-3/webapps/ROOT.war /export/backup/api/api_\${timedate}.war
324 else
325 mkdir -p /export/backup/api
326 cp /export/servers/tomcat7-3/webapps/ROOT.war /export/backup/api/api_\${timedate}.war
327 fi
328 
329 #==========================================闭盖nginx 连接不向后台转发==========================================================
330 wget -q -O -  http://127.0.0.1:8080/health_check/set/1  > /dev/null
331 sleep 5
332 wget -q -O -  http://127.0.0.1:8081/health_check/set/1  > /dev/null
333 sleep 5
334 #==========================================kill进程 启动tomcat================================================================= 
335 while true
336 Connect=\`netstat -anpt |grep :8080 |grep ESTABLISHED|wc -l\`
337 do
338        if [ "\$Connect" -lt   "1" ]; then
339                 echo "当前服务器没有ESTABLISHED连接停止tomcat";
340  #              [[ -n \$tomcat_8080 ]] && kill -9 \$tomcat_8080
341                  ps -elf |grep tomcat7-1|grep -v grep |awk '{print \$4}' |xargs kill  -9
342                  rm -rf \$tomcat_8080_dir/ROOT*
343                  cp /root/api.war   \$tomcat_8080_dir/ROOT.war
344                  sh \$tomcat_8080_start
345                break
346         else
347            echo "Exist process"
348            sleep 2
349 fi
350 done
351 
352 while true
353 Connect=\`netstat -anpt |grep :8081 |grep ESTABLISHED|wc -l\`
354 do
355        if [ "\$Connect" -lt   "1" ]; then
356                 echo "当前服务器没有ESTABLISHED连接停止tomcat";
357   #             [[ -n \$tomcat_8081 ]] && kill -9 \$tomcat_8081
358                 ps -elf |grep tomcat7-2|grep -v grep |awk '{print \$4}' |xargs kill  -9
359                  rm -rf \$tomcat_8081_dir/ROOT*
360                  cp /root/api.war   \$tomcat_8081_dir/ROOT.war
361                  sh \$tomcat_8081_start
362                sleep 10
363               break
364         else
365            echo "Exist process"
366            sleep 2
367 fi
368 done
369         sleep 5
370    
371      if [ "\$tomcat_8082_port_check" -eq "1" ]; then
372           ps -elf |grep tomcat7-3|grep -v grep |awk '{print \$4}' |xargs kill  -9
373           rm -rf \$tomcat_8082_dir/ROOT*
374           cp /root/api.war   \$tomcat_8082_dir/ROOT.war
375           sh \$tomcat_8082_start
376       elif [ "\$tomcat_8082_port_check" -eq "1" ];then
377           echo "tomcat 8082 启动成功"
378       else
379           rm -rf \$tomcat_8082_dir/ROOT*
380           cp /root/api.war   \$tomcat_8082_dir/ROOT.war
381           sh \$tomcat_8082_start
382      fi
383  
384 #=========================================后台启动完成 开盖nginx===============================================================
385 sleep 5
386 if [ \$tomcat_8080_port_check -eq 1 ];then
387 wget -q -O -  http://127.0.0.1:8080/health_check/set/0  > /dev/null
388 echo "tomcat 8080端口启动正常"
389 else
390  echo "tomcat 8080端口启动失败 请检查后台程序"
391 fi
392 sleep 5
393 if [ \$tomcat_8081_port_check -eq 1 ];then
394 wget -q -O -  http://127.0.0.1:8081/health_check/set/0  > /dev/null
395 echo "tomcat 8081端口启动正常"
396 else
397  echo "tomcat 8081端口启动失败 请检查后台程序"
398 fi
399 bbb
400 #==================================================脚本发送执行==================================================
401 /usr/bin/expect << EOF 
402 set timeout -1
403 spawn scp /root/tomcat_kill  /export/shell/appdeploy/api.war root@192.168.1.3:/root/
404 expect {
405 "(yes/no)?" {send "yes\r";exp_continue}
406 "password:" {send "$PASSWD\r"}
407 }
408 interact
409 expect eof
410 EOF
411 
412 /usr/bin/expect << EOF
413 set timeout -1
414 spawn ssh root@192.168.1.3
415 expect {
416 "(yes/no)?" {send "yes\r";exp_continue}
417 "password:" {send "$PASSWD\r"}
418 }
419 expect -re "\](\$|#)"
420 send  "sh -x /root/tomcat_kill \r" 
421 expect -re "\](\$|#)"
422 send "rm -rf /root/tomcat_kill \r"
423 expect -re "\](\$|#)"
424 send "exit\r"
425 interact
426 expect eof
427 EOF
428 }
429 ##############################################菜单目录#############################################################
430 read -p "请您输入(A|B|C|D): " zm
431 case "$zm" in
432 A|a)
433    tomcat1
434        ;;  
435 B|b)      
436    tomcat2
437      ;;    
438 C|c)      
439    tomcat3
440      ;;
441 D|d)
442   tomcat1 
443   tomcat2
444   tomcat3
445   ;; 
446 esac
447 exit 0

转载于:https://www.cnblogs.com/wangshaojie/p/7132801.html

相关文章:

判断输入是否为中文的函数

1functionischinese(s){ 2varrettrue ; 3for ( vari0 ;i < s.length;i) 4 retret &&(s.charCodeAt(i) > 10000 ); 5returnret; 6 }

OpenERP与Python 元编程

Python元编程被称为“黑魔法”。Python界的传奇人物Tim Peters有云&#xff1a; 引用 Python的元编程这种黑魔法99%的人都无需了解&#xff0c;如果你拿不准是否应该用到它时&#xff0c;你不需要它. OpenERP基本遵循了Tim Peters的教诲&#xff0c;但是却在6.1版本之后忍不住触…

联手中科大、浙大、华科大等高校,阿里研发4项最新AI安全技术

随着互联网技术对抗环境日益复杂化&#xff0c;各大网络平台页面可供用户上传并做展示的内容&#xff0c;都可能面临恶意攻击&#xff0c;例如黑灰产团伙会发布色情等不良图片和视频&#xff0c;以及发布可能涉嫌抄袭侵权的商品或其他违规信息&#xff0c;甚至一些黑灰产团伙还…

联想S820 MIUI刷机包 MIUI 4.4.30 流畅执行 在线主题破解

ROM介绍 破解免费使用MIUI全部主题(方法&#xff1a;开机开启Root权限&#xff0c;进入WSM工具箱→安装二进制文件→重新启动→再次进入WSM工具箱→两个工具打上勾→重新启动)&#xff0c;然后尽情奔放吧 .加入V4A音效 .加入安卓4.4切换特效 .加大外放音量。不爆音 .集成 WSM …

列表框操作函数集合

1 /*列表框互相操作函数集 */23// 描述: 添加不重复列表框元素4functionselAdd( srcList, dstList )5 {6varselectedIndex newArray();7varcount 0 ;89for( i0 ; i < srcList.options.length; i ){1011if( srcList.options[i].selected ){1213selectedIndex[count] i;14…

看过漫改,但你看过「改漫」吗?AI 一键让影视变漫画

作者 | 神经小兮来源 | HyperAI超神经头图 | 下载于视觉中国把影视剧变成漫画&#xff0c;是怎样的一种神操作&#xff1f;来自大连理工大学和香港城市大学的团队&#xff0c;最新提出的 AI 框架&#xff0c;可自动将影视剧转换为漫画。从此&#xff0c;观影追剧又多了一种打开…

跨越企业的“中等收入陷阱”

在国际经济学中&#xff0c;有一个“中等收入陷阱”的概念&#xff0c;含义为&#xff1a;新兴市场国家突破人均GDP1000美元的“贫困陷阱”后&#xff0c;很快会奔向1000美元至3000美元的“起飞阶段”&#xff1b;但到人均GDP3000美元附近以后&#xff0c;快速发展中积聚的矛盾…

docker 数据卷与容器卷

2019独角兽企业重金招聘Python工程师标准>>> 容器中管理数据主要有两种方式&#xff1a; 数据卷&#xff08;Data Volumes&#xff09; 数据卷容器&#xff08;Data Volumes Dontainers&#xff09; 数据卷 使用-v可以挂载一个本地的目录到容器中作为数据卷。 [root…

document.all与WEB标准

1、DOM  WEB标准现在可真是热门中热门&#xff0c;不过下面讨论的是一个不符合标准的document.all[]。DOM&#xff0d;&#xff0d;DOCUMENT OBJECT MODEL文档对象模型&#xff0c;提供了访问文档对象的方法.例如文档中有一个table,你要改变它的背景颜色&#xff0c;那就可…

终于有人把Python讲清楚了!

经常有人问我&#xff0c;Python初学者该怎么学好Python&#xff1f;其实从事Python开发的这些年中&#xff0c;我见过很多相关的教程和书籍&#xff0c;他们大都这样讲 &#xff1a;先介绍 Python 的基本语法规则、list、dict、tuple 等数据结构&#xff0c;然后再介绍字符串处…

开源 免费 java CMS - FreeCMS1.5-建站向导

2019独角兽企业重金招聘Python工程师标准>>> 下载地址&#xff1a;http://code.google.com/p/freecms/ 建站向导 从FreeCMS 1.5开始支持 为了方便用户创建站点&#xff0c;系统提供了建站向导功能。 从左侧管理菜单点击建站向导进入。 第一步&#xff1a;创建…

Python实战之网络编程socket学习笔记及简单练习

sk socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) 参数一&#xff1a;地址簇 socket.AF_INET IPv4&#xff08;默认&#xff09; socket.AF_INET6 IPv6 socket.AF_UNIX 只能够用于单一的Unix系统进程间通信 参数二&#xff1a;类型 socket.SOCK_STREAM 流式socke…

用IE重起计算机或者关机

<script language"JavaScript"> var Applicationnew ActiveXObject(Shell.Application.1); </script> <button οnclickApplication.ShutdownWindows();>关机</button><br> <button οnclickApplication.Suspend();>挂起</bu…

系统故障分析和排查

日志的功能 用于记录系统、程序运行中发生的各种事件通过阅读日志&#xff0c;有助于诊断和解决系统故障日志文件的分类内核及系统日志由系统服务syslog统一进行管理&#xff0c;日志格式基本相似用户日志记录系统用户登录及退出系统的相关信息程序日志由各种应用程序独立管理的…

用数据分析《你好,李焕英》“斐妈”爆红的真相

作者 | 俊欣来源 | 数据分析与篮球头图 | 下载于视觉中国《你好&#xff0c;李焕英》成为了春节档最热门最火爆的电影之一。截止目前&#xff0c;根据猫眼电影专业版的数据显示&#xff0c;该影片的票房已经突破了43亿&#xff1b;在抖音搜索上&#xff0c;因为其“好哭”而冲上…

[转] Android开发之如何保证Service不被杀掉(broadcast+system/app)

转发&#xff1a;原文链接http://blog.csdn.net/mad1989/article/details/22492519 序言 最近项目要实现这样一个效果&#xff1a;运行后&#xff0c;要有一个service始终保持在后台运行&#xff0c;不管用户作出什么操作&#xff0c;都要保证service不被kill&#xff0c;这可真…

如何使得按确定和取消按纽转到两个不同的页面!

问&#xff1a; 如何使得按确定和取消按纽转到两个不同的页面&#xff01; confirm(),后面的具体参数是什么&#xff1f; ______________________________________________________________________________________________ 答1&#xff1a; 看个例子吧&#xff01; <scrip…

PHP函数学习nl2br(),strlen(),mb_strlen()

2019独角兽企业重金招聘Python工程师标准>>> 1 nl2br($str): 注意&#xff1a;n之后的是字母L的小写&#xff0c;不要当做数字1. 函数作用&#xff1a;在$str中的每个新行(\n)之前插入HTML换行符( <br/> ) 示例&#xff1a; echo nl2br("One line.\nAnot…

携手中国电信、中国联通,华为正式发布首个5G超级刀片站 A+P 2.0天线商用网络

近日&#xff0c;在2021 MWC 上海期间&#xff0c;中国电信、中国联通携手华为发布首个5G超级刀片站 AP 2.0天线商用网络。 中国电信5G共建共享工作组高级项目经理李志军分享中国电信部署AP 2.0后的商用体验。AP 2.0颜值与实力兼备&#xff0c;解决了无空间部署5G以及5G挂高低…

『干货』分享你最喜欢的技巧和提示(Xcode,objective-c,swift,c...等等)

亲爱的读者们,你们好 !年底将近,分享从过去一年你最喜欢的技巧和建议作为礼物送给新手们。提交你的最喜欢的迅速或objc琐事,实用的提示,意外的发现,实用的解决方法,没用的迷恋,或不论什么其它你认为今年非常酷。就在以下写下你的评论! 笔者分享总结例如以下(本篇会不定期进行更…

一口一个,超灵活的Python迷你项目

来源 | 法纳斯特责编 | 寇雪芹头图 | 下载于视觉中国在使用Python的过程中&#xff0c;我最喜欢的就是Python的各种第三方库&#xff0c;能够完成很多操作。下面就给大家介绍22个通过Python构建的项目&#xff0c;以此来学习Python编程。大家也可根据项目的目的及提示&#xff…

说说大型高并发高负载网站的系统架构【转】

我在CERNET做过拨号接入平台的搭建&#xff0c;而后在Yahoo&3721从事过搜索引擎前端开发&#xff0c;又在MOP处理过大型社区猫扑大杂烩的架构升级等工作&#xff0c;同时自己接触和开发过不少大中型网站的模块&#xff0c;因此在大型网站应对高负载和并发的解决方案上有一些…

DataGrid 的 全选/取消全选 控制(CheckBox)

DataGrid控件: <Columns> <asp:TemplateColumn> <HeaderStyle Width"10px"></HeaderStyle> <HeaderTemplate> <INPUT id"CheckAll" name"CheckAll" type"checkbox"…

k8s入门系列之介绍篇

Kubernetes介绍1.背景介绍  云计算飞速发展    - IaaS    - PaaS    - SaaS  Docker技术突飞猛进    - 一次构建&#xff0c;到处运行    - 容器的快速轻量    - 完整的生态环境2.什么是kubernetes  Kubernetes(k8s)是Google开源的容器集群管理系…

元宵节就要到了,花灯要不要来一盏?3D的那种

又是一年元宵佳节&#xff01;我国各地庆祝元宵节的方式很有讲究&#xff0c;有的地方吃汤圆&#xff0c;一个个软糯香圆&#xff1b;有的地方办灯展&#xff0c;十分热闹。当然&#xff0c;疫情当下&#xff0c;为了大家的安全&#xff0c;不建议线下聚众集会。但是&#xff0…

Android Timer的使用

1&#xff1a;服务端使用PHP <?phpecho date(Y-m-d H:i:s); ?> 2&#xff1a;activity_main.xml <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_w…

屏蔽相应键盘按钮

<script language"Javascript"><!-- //屏蔽鼠标右键、CtrlN、ShiftF10、F11、F5刷新、退格键 //Author: meizz(梅花雨) 2002-6-18 function document.oncontextmenu(){event.returnValuefalse;}//屏蔽鼠标右键function window.onhelp(){return false} //…

MySQL查询缓存

2019独角兽企业重金招聘Python工程师标准>>> MySQL 查询缓存保存查询返回的完整结果。当查询命中改缓存&#xff0c;MySQL 会立刻返回结果&#xff0c;跳过了解析、优化和执行阶段。 查询缓存系统会跟踪查询涉及查询中的每个表&#xff0c;如果这些表发生变化&#…

事半功倍系列 javascript

清华大学出版的《事半功倍系列 javascript》,本人照着书敲出来的,有些翻译了一下.前几年看了一下,最近无事,重新翻了翻,很有帮助.本书应该有光盘的,但学校的书,光盘不知在哪.希望对你学 javascript有帮助 第一章javascript简介 1.在地址栏输入javascript语句 Javascript:Doc…

Golang 本地帮助文档

2019独角兽企业重金招聘Python工程师标准>>> godoc -http:8000 url: http://127.0.0.1:8000 转载于:https://my.oschina.net/koalaone/blog/169626