首页 文章 精选 留言 我的

精选列表

搜索[高性能rpc框架],共10000篇文章
优秀的个人博客,低调大师

uCharts 1.9.0 发布,高性能跨平台图表库

新增地图图表类型map;新增多Y轴绘制,支持全部直角坐标系类图表类型。 更新记录 未来计划(V1.0 至 2.0 版本) 2019.08.xx 推迟计划加入第二种仪表盘样式,增加《亲手教您如何改造 uCharts,打造您的专属图表》教程。 2019.08.xx 计划加入渐变颜色填充功能,支持柱状图、区域图、混合图、圆弧进度条。 2019.08.xx 计划修复折线图样式为曲线时,个别情况下曲线超出X轴的问题。 未来计划(全新 V2.0 版本) 2019.5.20 重要又浪漫的日期,uCharts 团队正式成立了。 我们将以追求极致、追求完美的极客精神来打造 uCharts。uCharts2.0 版本正在前期策划中,将以全新结构重写 uCharts,支持多Y轴、多X轴、自定义图例位置、以及更多图表类型,请各位敬请期待。 支持图表类型 饼图pie 圆环图ring 线图line(直线、曲线) 柱状图column(分组、堆叠、温度计) 区域图area(直线、曲线) 雷达图radar 圆弧进度图arcbar 仪表盘gauge K线图candle 混合图mix(支持 Point、Line 直线曲线、Column、Area 直线曲线) 玫瑰图rose(面积模式、半径模式) 词云图word(横向、横纵混排) 漏斗图funnel 地图map 插件特点 改造后的插件可以跨端使用,支持 H5、小程序(微信/支付宝/百度/头条/QQ/360)、APP,调用简单方便、性能及体验极佳。 虽然没有 Echarts 及 F2 图表功能强大,但可以实现一套业务逻辑各端通用,并解决了支付宝小程序图表显示模糊等问题。 支持单页面多图表,demo 中单页 10 个图表,响应速度超快。 支持入场动画及ToolTip动画效果。 独特支持横屏模式。 为何不用 Echarts? 相比 Echarts 及 F2 的复杂的设置,本插件几乎等于傻瓜式的配置。 Echarts 在跨端使用更复杂,本插件只需要简单的两个<canvas>标签轻松区别搞定,代码整洁易维护。 Echarts 在iOS端图表显示错位,只能引用网页解决。 本插件打包后的体积相比 Echarts 小很多很多,所以性能更好。 如果您是uni-app初学者,那么强烈建议您使用 uCharts,并且目前可以跨全端通用,减少工作量,增强一致性体验。 图表样式均可自定义,懂JS的都可以读懂插件源码,直接修改u-charts.js源码即可。 本插件经过大量测试,反复论证并加以改造而成,请各位放心使用。 uni-app 图表选型参考流程 亲手教您如何改造uCharts,打造您的专属图表 为何要改造 uCharts? 并不是所有图表插件直接拿来就可以满足客户需求,如果您的 UI 设计师设计一个图表,如下图: 您会发现这个图表即使在 echarts 里也不是很好实现,那么就需要我们自己动手去实现。下面就让我们一起来完成,本文旨在抛砖引玉,希望各位朋友能够更好的应用 uCharts 来完成您的项目,如果您有更好的设计,请提交您的 PR 到 GithubuCharts跨端图表,帮助更多朋友,感谢您的付出及贡献! uCharts 跨端图表改造教程(暂未完成,请关注) 图表示例 快速体验 一套代码编到 7 个平台,依次扫描二维码,亲自体验 uCharts 图表跨平台效果!iOS 因 demo 比较简单无法上架,请自行编译。

优秀的个人博客,低调大师

《高性能Linux服务器构建实战》笔记

系统安全、故障排查、自动化运维、集群架构 1、账号安全,安装完后可以删除的账号: adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher 禁用登录功能:usermod -s /sbin/nologin nagios 2、关闭不需要的服务: anacron auditd autofs avahi-daemon avahi-dnsconfd bluetooth cpuspeed firstboot gpm haldaemon hidd ip6tables ipsec isdn lpd mcstrans messagebus netfs nfs nfslock nscd pcscd portmap readahead_early restorecond rpcgssd rpcidmapd rstatd sendmail setroubleshoot yppasswdd ypserv 系统必须运行的服务:

优秀的个人博客,低调大师

架构高性能网站秘笈(二)——动态内容缓存

什么是动态内容缓存? 浏览器向服务器发送请求后,服务器会根据浏览器的要求做相应的处理(如:数据库操作),然后将处理后的结果注入JSP页面生成HTML,最后将生成的HTML返回给浏览器显示。我们知道,数据库读取操作是非常耗时的,如果能将每次请求中的数据库处理时间去掉,那服务器的相应速度将会大幅提升。要实现这一点,我们就需要将常用的HTML页面事先生成好,当用户发出请求时,服务器只需从缓存中取出即可,无需再做数据库处理操作。 综上所述:事先生成HTML页面的技术称为动态内容缓存。 什么是“缓存命中率”? 缓存命中率 = 访问缓存的请求数/请求总数 缓存命中率是衡量缓存是否有效的重要指标。如果将所有需要访问的数据均缓存起来,那么缓存命中率是100%。但一半情况下,为了节约存储空间,只将访问频率较高的数据缓存起来,那么这样就会造成有一些请求能够通过缓存访问数据,而有一些请求需要查询数据库访问数据。 我们没有办法确保缓存的命中率100%,但我们需要使用一些算法确保缓冲命中率较高。也只有当缓冲命中率较高的情况下,缓冲才能发挥它真正的价值。 PS:缓存与缓冲的区别? 这里顺便提一下“缓存”和“缓冲”的区别。 缓冲:缓冲是一块临时的存储空间,为了解决不同存储设备之间读写速率不匹配而产生的。比如:内存的读写速度远远大于硬盘的读写速度。当内存中的数据向硬盘中写入时,内存会先将数据写入内存缓冲区,再由内存缓冲区向硬盘写入数据。这样内存快速腾空之后就可以做其他事了,提高了效率。 缓存:缓存是在一些为了避免重复计算,而被暂时性存储的数据。 综上所述:缓冲=缓冲区,它是指内存中的一片区域;而缓存指的是数据,一些味了避免重复计算而被临时性存储的数据。 它们都是为了提高处理效率而存在的,都采用了“牺牲空间换取时间”的思想。 缓存的三种存储方式 缓存可以存储在三种不同的地方: 存储在内存 存储在IO设备 存储在内存和IO设备上 存储在缓存服务器上 对于小型网站,缓存首选的存储位置就是内存。内存相对于IO设备有较快的访问速度,能大大缩短缓存的读取时间。但内存资源比较宝贵,如果没钱买大内存的服务器的话,那就只好考虑第二种办法,将缓存存在IO设备中。对于一些小型网站,如果需要存储的缓存数据量比较大,而且买不起大内存的服务器的话,那存储在IO设备是不错的选择。但IO设备相对于内存来说有个致命的缺陷,那就是慢!因此,对于资金不充裕的小型网站来说,第三种方式最为合适。如果既想获得内存的读写速度,又想拥有IO设备的巨大存储空间,那就可以选择两者结合的方式。内存中开辟一块固定大小的缓冲区,用于存储使用频率较高的缓存数据,而将使用频率较低的缓存数据存储至IO设备。当缓冲区存满时,你需要使用LRU算法将最近最旧未使用的缓存从缓冲区中扔出去,而将最近一段时间IO设备中访问频率最高的缓存放进来,从而保证了当前缓冲区中数据的命中可能性是最大的。最后,对于大型网站来说,可以使用专门的缓存服务器来存储缓存。这主要有两点好处: 节约服务器的内存资源,让服务器的内存作更多数据处理的工作,而把数据存储的工作交给缓存服务器; 缓存服务器具有更好的可扩展性。如果网站需要定期举办一些营销活动,为了应付急剧增加的并发量,缓存服务器是不二之选。 但是,由于Web服务器与缓存服务器采用TCP通信,而建立和释放TCP连接时间开销比较大,因此对于小型网站来说,直接将缓存存在内存无疑是种首选办法。 如何实现缓存? 这里就简单地介绍下基于内存的缓存机制,近期我会单独写一篇“基于内存+IO+LRU算法的缓存机制”的博客,敬请关注。 服务器在接收客户端发来的请求后,首先根据请求的URL判断内存中是否有对应的缓存;若有的话先判断该缓存是否过期,若没过期就直接返回缓存数据;若过期了,或者内存中根本就没有该请求的缓存的话,就调用业务逻辑层的相关函数,处理客户端发来的请求,生成客户端需要的数据。然后给生成的数据设置一个有效期,并存入缓存,供下次使用,最后将数据返回给用户。 静态化页面 之前我们介绍的缓存机制仍然需要服务器程序去判断存储空间中是否有缓存,而服务器程序判断的过程也需要时间,如果缓存很多的话,服务器程序需要找半天。那么我们能否把静态页面事先都生成好,让浏览器直接访问静态页面,而无需再通过服务器程序访问缓存。 要知道,浏览器直接访问静态页面的速度比通过服务器程序访问静态页面的速度要快很多很多很多! 要实现这样的想法,我们可以这么做: 服务器程序启动的时候将生成所有需要访问的HTML页面,存储至服务器外设中; 浏览器所有a标签中的href都填写这些静态HTML页面URL; 在服务器中开启一条定时线程,每隔一段时间检查动态数据发生修改的HTML页面,并生成新的HTML页面; 当数据库发生修改时,立即更新与该数据相关的HTML页面。

优秀的个人博客,低调大师

高性能缓存服务器Varnish架构配置

Varnish跟Squid都是一款内容加速缓存服务器,我们可以使用它们来对我们的网页内容进行缓存,以此来从某个方面提高用户体验度,提升网站整体的抗压能力。 目前自建的CDN中,有很多都是基于Squid、Varnish等相关缓存软件,经过内部的二次开发实现了更好的内容加速及管理。 那今天我们一起来学习一下Varnish简单的搭建及日常的维护,深入的东西后期分享,跟大家一起来交流。这里直接上Shell脚本自动初始化并安装: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 #!/bin/sh #autoinstallvarnish #2014-07-28bywugk DIR= /usr/src CODE=$? VER=$1 if [-z$1]; then echo "Usage:{$0'Version'install|config|start|help},Example$02.1.5install}" exit fi URL=https: //repo .varnish-cache.org /source/varnish- ${VER}. tar .gz function install () { if [!-d /usr/local/varnish -o!-f /etc/init .d /varnishd ]; then cd $DIR;wget-c$URL if [$CODE== '0' ]; then echo "ThisvarnishFilesisDownloadSuccessed!" else echo "ThisvarnishFilesisDownloadFailed!" fi useradd -s /sbin/noin varnish mkdir -p /data/varnish/ {cache,} chown -Rvarnish.varnish /data/varnish/ tar xzfvarnish-${VER}. tar .gz; cd varnish-${VER}; /bin/sh autogen.sh;. /configure --prefix= /usr/local/varnish -- enable -dependency-tracking-- enable -debugging-symbols-- enable -developer-warnings- enable -extra-warnings&& make && make install else echo "ThisVarnishisexists,Pleaseexit..." sleep 1 exit 0 fi } function config() { if [!-d /usr/local/varnish/ -o-f /etc/init .d /varnishd ]; then echo "Youcan'tconfigvarnish,Pleaseensureyouvarnishdirisornotexist..." exit 0 else echo "VarnishAlreadySuccessInstall,PleaseConfigvarnish......" fi mv /usr/local/varnish/etc/varnish/default .vcl /usr/local/varnish/etc/varnish/default .vcl.bak cat >> /usr/local/varnish/etc/varnish/default .vcl<<EOF backendserver_1 { .host= "192.168.149.128" ; .port= "8080" ; .probe={ .timeout=5s; .interval=2s; .window=8; .threshold=5; } } backendserver_2 { .host= "192.168.149.129" ; .port= "8080" ; .probe={ .timeout=5s; .interval=2s; .window=8; .threshold=5; } } directorrsverrandom{ { .backend=server_1; .weight=6; } { .backend=server_2; .weight=6; } } aclpurge{ "localhost" ; "127.0.0.1" ; } subvcl_recv { if (req.http.host~ "^(.*).tdt.com" ) { set req.backend=rsver; } else { error200 "Nocahceforthisdomain" ; } if (req.request== "PURGE" ) { if (!client.ip~purge) { error405 "Notallowed." ; } else { return (pipe); } } if (req.http.x-forwarded- for ) { set req.http.X-Forwarded-For= req.http.X-Forwarded-For "," client.ip; } else { set req.http.X-Forwarded-For=client.ip; } if (req.request!= "GET" &&req.request!= "HEAD" ) { return (pipe); } if (req.http.Expect) { return (pipe); } if (req.http.Authenticate||req.http.Cookie) { return (pass); } if (req.http.Cache-Control~ "no-cache" ) { return (pass); } if (req.url~ "\.jsp" ||req.url~ "\.php" ) { return (pass); } else { return (lookup); } }subvcl_pipe { return (pipe); }subvcl_pass { return (pass); }subvcl_hash { set req. hash +=req.url; if (req.http.host) { set req. hash +=req.http.host; } else { set req. hash +=server.ip; } return ( hash ); }subvcl_hit { if (req.request== "PURGE" ) { set obj.ttl=0s; error200 "Purged." ; } if (!obj.cacheable) { return (pass); } return (deliver); }subvcl_miss { if (req.request== "PURGE" ) { error404 "Notincache." ; } if (req.http.user-agent~ "spider" ) { error503 "Notpresentlyincache" ; } return (fetch); } subvcl_fetch { if (req.request== "GET" &&req.url~ "\.(txt|js)$" ) { set beresp.ttl=3600s; } else { set beresp.ttl=30d; } if (!beresp.cacheable) { return (pass); } if (beresp.http.Set-Cookie) { return (pass); } return (deliver); } subvcl_deliver{ if (obj.hits>0){ set resp.http.X-Cache= "HITFROMTDTWSCacheCenter" ; } else { set resp.http.X-Cache= "MISSFROMTDTWSCacheCenter" ; } return (deliver); } EOF if [$?==0]; then echo '----------------------------------' sleep 2 echo "ThisVarinshConfigSuccess!!!" else echo "ThisVarinshConfigFailed,PleaseCheckConf!" fi } function start() { if [!-d /usr/local/varnish -o-f /etc/init .d /varnishd ]; then echo "Youcan'tconfigvarnish,Pleaseensureyouvarnishdirisornotexist..." exit 0 else count=` ps -ef| grep varnishd| grep - v grep | wc -l` if [$count- eq 0]; then echo "VarnishAlreadySuccessInstall,Nowstartvarnish...." cat <<EOF ------------------------------------------------------ StartVarnishtolisten0.0.0.0:80. TheVarnishloadbalancerserver1(192.168.149.1288080). TheVarnishloadbalancerserver1(192.168.149.1298080). TheVarnishMgraddresstolisten0.0.0.0:8001. TheVarnishCacheDIR /data/varnish/cache . EOF /usr/local/varnish/sbin/varnishd -n /data/varnish/cache -f /usr/local/varnish/etc/varnish/default .vcl-a0.0.0.0:80-s file , /data/varnish/varnish_cache .data,16G-puser=varnish-pgroup=varnish-pdefault_ttl=14400-pthread_pool_max=8000-psend_timeout=20-w5,51200,30-T0.0.0.0:8001-P /usr/local/varnish/var/varnish .pid if [$?==0]; then echo "Startvarnish...OK" fi else echo "Warning,ThisVarnishServiceisexist." fi fi } case $2 in install ) install ;; config) config ;; start) start ;; *) echo "Usage:{Usage$0versioninstall|config|start|help}" ;; esac Varnish简单测试如下图: 1.第一张图,第一次访问没有命中,去后端服务器取数据,同时在本地缓存一份:(MISS) 2.第二张图,第二次访问,缓存服务器存在,则直接从缓存中返回:(HIT) 实际线上环境中,如果用户访问我们的网站,使用Ctrl+F5刷新,我们的缓存就会失效,因为我们配置文件里面是这么配置的,匹配浏览器头信息: Pragma no-cache Cache-Control no-cache 1 2 3 4 if (req.http.Cache-Control~ "no-cache" ) { return (pass); } 只有注释掉这段代码或者设置只允许某个特定的IP,用户通过浏览器按Crtl+F5才不会把缓存给清除。 下面是针对某个特定的IP地址允许刷新: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 acl local { "192.168.149.128" } subvcl_hit{ if (!obj.cacheable){ return (pass); } if (client.ip~ local &&req.http.Pragma~ "no-cache" ){ set obj.ttl=0s; return (pass); } return (deliver); } 由于时间的原因,文章就暂时写到这里,更多深入的东西继续分享,文章引用煮酒哥的配置,非常感谢。欢迎大家一起讨论。 http://yuhongchun.blog.51cto.com/1604432/1293169 http://zyan.cc/post/313/ 本文转自 wgkgood 51CTO博客,原文链接:http://blog.51cto.com/wgkgood/1531694

优秀的个人博客,低调大师

高性能缓存服务器Squid架构配置

前言*随着网站访问人数越来越多,承受的并发和压力也越来越高,这时候我们需要对网站和架构进行优化,今天我们来讨论使用Squid对架构进行优化,缓存网站。网上对squid描述的文章也有成千上万,我这里简单记录一下实践的步骤。 一、实施环境 1 2 3 系统版本:CentOSx86_645.8 Squid版本:squid-2.6 Nginx版本:nginx-1.4.2 二、正式安装 安装之前我们需要对系统进行优化,主要优化系统内核相关参数,仅供参考: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 vi /etc/sysctl .conf #sysctl.confconfig2014-03-26 net.ipv4.ip_forward=0 net.ipv4.conf.default.rp_filter=1 net.ipv4.conf.default.accept_source_route=0 kernel.sysrq=0 kernel.core_uses_pid=1 net.ipv4.tcp_syncookies=1 kernel.msgmnb=65536 kernel.msgmax=65536 kernel.shmmax=68719476736 kernel.shmall=4294967296 net.ipv4.tcp_max_tw_buckets=10000 net.ipv4.tcp_sack=1 net.ipv4.tcp_window_scaling=1 net.ipv4.tcp_rmem=4096873804194304 net.ipv4.tcp_wmem=4096163844194304 net.core.wmem_default=8388608 net.core.rmem_default=8388608 net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.core.netdev_max_backlog=262144 net.core.somaxconn=262144 net.ipv4.tcp_max_orphans=3276800 net.ipv4.tcp_max_syn_backlog=262144 net.ipv4.tcp_timestamps=0 net.ipv4.tcp_synack_retries=1 net.ipv4.tcp_syn_retries=1 net.ipv4.tcp_tw_recycle=1 net.ipv4.tcp_tw_reuse=1 net.ipv4.tcp_mem=94500000915000000927000000 net.ipv4.tcp_fin_timeout=1 net.ipv4.tcp_keepalive_time=15 net.ipv4.ip_local_port_range=102465535 优化Linux文件打开最大数: 1 2 3 4 5 vi /etc/security/limits .conf *softnproc65535 *hardnproc65535 *softnofile65535 *hardnofile65535 接下来上自动安装Squid脚本,里面分别配置了两个虚拟主机域名,前端有LVS,LVS均衡后端多组squid集群,根据命中率去调整squid集群的数量,Squid后端均衡Nginx或者Apache。(完整的架构LVS+Keepalived+Squid+Nginx+Resin/Tomcat/PHP+MySQL集群) 简单逻辑图如下: 直接上脚本: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 #!/bin/sh #Automakeinstallsquidserver #Authorwugk2014-03-26 SQUID_CNF= /etc/squid/squid .conf CACHE_DIR=( /data/cache1 /data/cache2 ) #Installsquidshell yum install -ysquid #configsquid.conf cat >>$SQUID_CNF<<EOF #globalconfigsquid.conf2014-03-26 http_port80accelvhostvport cache_peer192.168.149.128parent800originservername=wugk1 cache_peer192.168.149.129parent800originservername=wugk2 cache_peer_domainwugk1www.wugk1.com cache_peer_domainwugk2www.wugk2.com visible_hostnamelocalhost forwarded_foroff viaoff cache_varyon #aclconfig aclmanagerprotocache_object acllocalhostsrc127.0.0.1 /32 aclto_localhostdst127.0.0.0 /8 0.0.0.0 /32 acllocalnetsrc10.0.0.0 /8 #RFC1918possibleinternalnetwork acllocalnetsrc172.16.0.0 /12 #RFC1918possibleinternalnetwork acllocalnetsrc192.168.0.0 /16 #RFC1918possibleinternalnetwork aclSSL_portsport443 aclSafe_portsport808080 #http aclSafe_portsport21 #ftp aclSafe_portsport443 #https aclallsrc0.0.0.0 /0 aclCONNECTmethodCONNECT http_accessallowmanagerlocalhost http_accessdenymanager http_accessdeny!Safe_ports http_accessdenyCONNECT!SSL_ports http_accessallowlocalnet http_accessallowlocalhost http_accessallowall aclPURGEmethodPURGE http_accessallowPURGElocalhost http_accessdenyPURGE #squidconfig2014-03-25 cache_diraufs /data/cache1 1024016256 cache_diraufs /data/cache2 1024016256 cache_mem4000MB maximum_object_size8MB maximum_object_size_in_memory256KB hierarchy_stoplistcgi-bin? coredump_dir /var/spool/squid refresh_pattern^ ftp :144020%10080 refresh_pattern^gopher:14400%1440 refresh_pattern-i( /cgi-bin/ |\?)00%0 refresh_pattern\.(jpg|png|gif|mp3|xml|html|htm|css|js)144050%2880ignore-reload refresh_pattern.020%4320 EOF #configcache_dir mkdir -p${CACHE_DIR[@]}; chown -Rsquid:squid${CACHE_DIR[@]} #restartsquidserver /etc/init .d /squid restart if [ "$?" == "0" ]; then echo "TheSquidServerInstallSuccessfully!!" else echo "TheSquidServerInstallFailed!!,PleaseCheckLog......" fi 最后测试,前端LVS截图(注LVS此处不配置了,博客有专门的安装方法) 通过浏览器查看head头,缓存命中情况截图如下: 通过命令 1 squidclient-p 80 mgr:info|egrep "(RequestHitRatios|ByteHitRatios)" 查看缓存命中率如下: 三、批量清空缓存 使用Shell脚本批量清空squid缓存脚本auto_clean_cache.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #!/bin/sh DIR= /data/cache/ Command= /usr/sbin/squidclient if [ "$1" = "" ]; then echo "Usage:{$0" \$1 ",Exampleexec$0forum.php}" exit fi grep -r-a$1${DIR}|strings| grep "http:" | grep - v "=" >list.txt count=` cat list.txt| wc -l` if [ "$count" - eq "0" ]; then echo -e "---------------------------------\nThe$1cachealreadyupdate,Pleaseexit......" exit fi while read line do $Command-mPURGE-p80 "$line" >> /dev/null if [$?- eq 0]; then echo -e "----------------------------------\nThe$linecacheupdatesuccessfully!" fi done <list.txt 脚本执行: 1 2 3 4 [root@node2~]#shauto_clean_cache.shforum.php ---------------------------------- Thehttp: //www.wugk2.com/forum.phpcacheupdatesuccessfully! [root@node2~]# 更多squid优化及深入配置后期更新。。 本文转自 wgkgood 51CTO博客,原文链接:http://blog.51cto.com/wgkgood/1384580

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册