首页 文章 精选 留言 我的

精选列表

搜索[分片调整],共10004篇文章
优秀的个人博客,低调大师

[Android Traffic] 调整定时更新的频率(C2DM与退避算法)

转载自:http://blog.csdn.net/kesenhoo/article/details/7395253 Minimizing the Effect of Regular Updates[最小化定时更新操作的副作用] 最佳的定时更新频率是不确定的,通常由设备状态,网络连接状态,用户行为与用户定义明确的偏好而决定。 Optimizing Battery Life(【Android Training - 04】优化电池寿命)这一章有讨论如何根据设备状态来修改更新频率。里面介绍了当断开网络连接的时候去关闭后台服务,在电量比较低的时候减少更新的频率。 这一课会介绍更新频率是多少才会使得更新操作对无线电状态机的影响最小。 C2DM与指数退避算法的使用 Use Cloud to Device Messaging as an Alternative to Polling[使用C2DM作为轮询方式之一] 关于Android Cloud to Device Messaging (C2DM)详情,请参考:http://code.google.com/intl/zh-CN/android/c2dm/ 每次app去向server询问检查是否有更新操作的时候会激活无线电,这样造成了不必要的能量消耗(在3G情况下,会差不多消耗20秒的能量)。 C2DM是一个用来从server到特定app传输数据的轻量级的机制。使用C2DM,server会在某个app有新数据的时候通知app有这个消息[有点像PUSH短信的类型]。 比起轮询方式(app为了即时拿到最新的数据需要定时向server请求数据),C2DM这种有事件驱动的模式会在仅仅有数据更新的时候通知app去创建网络连接来获取数据[很显然这样减少了app的大量操作,当然也减少了很多电量]。 C2DM需要通过使用固定TCP/IP来实现操作。当在你的设备上可以实现固定IP的时候,最好使用C2DM。[这个地方应该不是传统意义上的固定IP,可以理解为某个会话情况下]。很明显,使用C2DM既减少了网络连接次数,也优化了带宽,还减少了对电量的消耗。 Optimize Polling with Inexact Repeating Alarms and Exponential Backoffs[通过不定时的重复提醒与指数退避来优化轮询操作] 如果需要使用轮询机制,在不影响用户体验的前提下,当然设置默认更新频率是越低越好[减少电量的浪费]。 一个简单的方法是给用户提供更新频率的选择,允许用户自己来处理如何平衡数据及时性与电量的消耗。 当设置安排好更新操作后,可以使用不确定重复提醒的方式来允许系统把当前这个操作进行定向移动(比如推迟一会)。 int alarmType = AlarmManager.ELAPSED_REALTIME; long interval = AlarmManager.INTERVAL_HOUR; long start = System.currentTimeMillis() + interval; alarmManager.setInexactRepeating(alarmType, start, interval, pi); 若是多个提醒都被做了“定向移动”,那么很有可能到某个点同时被触发,那么这样就可以使得多个操作在同一个无线电状态下操作完。 如果可以,请设置提醒的类型为ELAPSED_REALTIME or RTC而不是_WAKEUP。这样能够更进一步的减少在等待同时被触发的时候对电量的消耗。 我们还可以通过根据app被使用的频率来有选择性的减少更新的频率。 另一个方法在app在上一次更新操作之后还未被使用的情况下,使用指数退避算法(exponential back-offalgorithm)来减少更新频率。当然我们也可以使用一些类似指数退避的方法。 SharedPreferences sp = context.getSharedPreferences(PREFS, Context.MODE_WORLD_READABLE); boolean appUsed = sp.getBoolean(PREFS_APPUSED, false); long updateInterval = sp.getLong(PREFS_INTERVAL, DEFAULT_REFRESH_INTERVAL); if (!appUsed) if ((updateInterval *= 2) > MAX_REFRESH_INTERVAL) updateInterval = MAX_REFRESH_INTERVAL; Editor spEdit = sp.edit(); spEdit.putBoolean(PREFS_APPUSED, false); spEdit.putLong(PREFS_INTERVAL, updateInterval); spEdit.apply(); rescheduleUpdates(updateInterval); executeUpdateOrPrefetch(); 初始化一个网络连接的花费不会因为是否成功下载了数据而改变。我们可以使用指数退避算法来减少重复尝试(retry)的次数,这样能够避免浪费电量。例如: private void retryIn(long interval) { boolean success = attemptTransfer(); if (!success) { retryIn(interval*2 < MAX_RETRY_INTERVAL ? interval*2 : MAX_RETRY_INTERVAL); } } 后记:这一课讲到C2DM与指数退避算法等,其实这些细节很值得我们注意,如果能在实际项目中加以应用,很明显质量会比较高。谢谢! 学习自:http://developer.android.com/training/efficient-downloads/regular_updates.html 转载请注明出处: http://blog.csdn.net/kesenhoo,谢谢! 分类: Android Traffic 本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/p/4324438.html如需转载请自行联系原作者 demoblog

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

如何搭建redis集群---让集群拥有分片的数据内存的扩容和哨兵的高可用

前言:为什么要搭建集群? 通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取。Redis是一个很好的Cache工具。大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿。由于内存大小的限制,使用一台 Redis 实例显然无法满足需求,这时就需要使用多台 Redis作为缓存数据库。但是如何保证数据存储的一致性呢,这时就需要搭建redis集群.采用合理的机制,保证用户的正常的访问需求.采用redis集群,可以保证数据分散存储,同时保证数据存储的一致性.并且在内部实现高可用的机制.实现了服务故障的自动迁移. ---linux系统为dsCentOS-empty 1.Redis集群搭建 主从划分: 3台主机 3台从机共6台 端口划分7000-7005 1.1集群搭建 1.1准备集群文件夹 1.准备集群文件夹 Mkdir cluster 2.在cluster文件夹中分别创建7000-7005文件夹 cd cluster mkdir 7000 7001 7002 7003 7004 7005 1.2复制配置文件 将redis根目录中的redis.conf文件复制到cluster/7000/ 并以原名保存 cp redis.conf cluster/7000/ 1.3编辑配置文件 1.注释本地绑定IP地址 2.关闭保护模式 3.修改端口号 4.启动后台 5.修改pid文件 先保存退出,在7000文件目录下输入pwd,复制路径 再次进入路径为上面7000文件的路径 6.修改持久化文件路径(与5中的路径相同) 7.设定内存优化策略(自定义) 8.关闭AOF模式 9.开启集群配置 10.开启集群配置文件 11.修改集群超时时间 12.保存配置信息退出 1.4 复制修改后的配置文件 说明:将7000文件夹下的redis.conf文件分别复制到7001-7005中 [root@localhost cluster]# cp 7000/redis.conf 7001/ [root@localhost cluster]# cp 7000/redis.conf 7002/ [root@localhost cluster]# cp 7000/redis.conf 7003/ [root@localhost cluster]# cp 7000/redis.conf 7004/ [root@localhost cluster]# cp 7000/redis.conf 7005/ 1.5 批量修改 分别将7001-7005文件中的7000改为对应的端口号的名称,修改时注意方向键的使用。 批量修改端口号:%s/7000/7001/g 1.6通过脚本编辑启动/关闭指令 1.创建启动脚本 vim start.sh 2.创建关闭脚本 vim stop.sh 记住保存退出!!! 3.启动redis 节点 sh start.sh 4.检查redis节点启动是否正常 1.7创建redis集群 #5.0版本执行 redis-cli --cluster create --cluster-replicas 1 192.168.126.166:7000 192.168.126.166:7001 192.168.126.166:7002 192.168.126.166:7003 192.168.126.166:7004 192.168.126.166:7005 在type 'yes' to accept 那里输入yes 这张图采用于我的老师,因为我的已经搭建完全,不忍心充型搭建,请谅解啊!!! 1.8 Redis集群高可用测试 1.关闭redis主机.检查是否自动实现故障迁移. 2.再次启动关闭的主机.检查是否能够实现自动的挂载. 一般情况下 能够实现主从挂载 个别情况: 宕机后的节点重启,可能挂载到其他主节点中(7001-7002) 都是正确的

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

Proxy-Go v9.8 发布,代理调整优化了指定出口 IP 逻辑!

Proxy 是 golang 实现的高性能 http、https、websocket、tcp、udp、socks5 代理服务器,支持正向代理、反向代理、透明代理、内网穿透、TCP/UDP 端口映射、SSH 中转、TLS 加密传输、协议转换、DNS 防污染智能代理、前置 CDN/Nginx 反代、代理连接重定向、API动态调用上级代理、限速限连接数。提供全平台的命令行版本,友好易用的Windows&Linux&macOS控制面板,强大的安卓版。 更新内容 1.sps代理增加指定出口IP参数--bind-listen. 2.sps\socks5\http代理,取消指定出口IP访问失败的时候使用非绑定模式访问。 特色功能 链式代理,程序本身可以作为一级代理,如果设置了上级代理那么可以作为二级代理,乃至N级代理。 通讯加密,如果程序不是一级代理,而且上级代理也是本程序,那么可以加密和上级代理之间的通讯,采用底层tls高强度加密,安全无特征。 智能HTTP代理,HTTPS代理,SOCKS5代理,会自动判断访问的网站是否屏蔽,如果被屏蔽那么就会使用上级代理(前提是配置了上级代理)访问网站;如果访问的网站没有被屏蔽,为了加速访问,代理会直接访问网站,不使用上级代理。 域名黑白名单,更加自由的控制网站的访问方式。 跨平台性,无论你是widows,linux,还是mac,甚至是树莓派,都可以很好的运行proxy。 多协议支持,支持HTTP(S),TCP,UDP,Websocket,SOCKS5代理。 TCP/UDP端口转发。 游戏盾,游戏代理,高仿服务器。 内网穿透,P2P传输,协议支持TCP和UDP,针对HTTP的优化穿透。 SSH中转,HTTP(S),SOCKS5代理支持SSH中转,上级Linux服务器不需要任何服务端,本地一个proxy即可开心上网。 KCP协议支持,HTTP(S),SOCKS5代理支持KCP协议传输数据,降低延迟,提升浏览体验。 动态选择上级代理,通过外部API,HTTP(S),SOCKS5,SPS代理可以实现基于用户或者IP的限速,连接数限制,动态获取上级。 灵活的上级分配,HTTP(S),SOCKS5,SPS代理可以通过配置文件实现基于用户或者IP的限速,连接数限制,指定上级。 反向代理,支持直接把域名解析到proxy监听的ip,然后proxy就会帮你代理访问需要访问的HTTP(S)网站。 透明HTTP(S)代理,配合iptables,在网关直接把出去的80,443方向的流量转发到proxy,就能实现无感知的智能路由器代理。 协议转换,可以把已经存在的HTTP(S)或SOCKS5或SS代理转换为一个端口同时支持HTTP(S)和SOCKS5和SS代理,转换后的SOCKS5和SS代理如果上级是SOCKS5代理,那么支持UDP功能,同时支持强大的级联认证功能。 自定义底层加密传输,http(s)\sps\socks代理在tcp之上可以通过tls标准加密以及kcp协议加密tcp数据,除此之外还支持在tls和kcp之后进行自定义加密,也就是说自定义加密和tls|kcp是可以联合使用的,内部采用AES256加密,使用的时候只需要自己定义一个密码即可。 底层压缩高效传输,http(s)\sps\socks代理在tcp之上可以通过自定义加密和tls标准加密以及kcp协议加密tcp数据,在加密之后还可以对数据进行压缩,也就是说压缩功能和自定义加密和tls|kcp是可以联合使用的。 安全的DNS代理,可以通过本地的proxy提供的DNS代理服务器与上级代理加密通讯实现安全防污染的DNS查询。 负载均衡,高可用,HTTP(S)\SOCKS5\SPS代理支持上级负载均衡和高可用,多个上级重复-P参数即可。 指定出口IP,HTTP(S)\SOCKS5\SPS\TCP代理支持客户端用入口IP连接过来的,就用入口IP作为出口IP访问目标网站的功能。如果入口IP是内网IP,出口IP不会使用入口IP 支持限速,HTTP(S)\SOCKS5\SPS\TCP代理支持限速。 支持限连接数,HTTP(S)\SOCKS5\SPS\TCP代理支持限连接数。 SOCKS5代理支持级联认证。 证书参数使用base64数据,默认情况下-C,-K参数是crt证书和key文件的路径,如果是base64://开头,那么就认为后面的数据是base64编码的,会解码后使用。 支持客户端IP黑白名单,更加安全的控制客户端对代理服务的访问,如果黑白名单同时设置,那么只有白名单生效。socks/http(s)/sps/tcp/udp/dns/内网穿透bridge/内网穿透tbridge,都支持客户端IP黑白名单。 端口范围批量监听,HTTP(S)\SOCKS5\SPS\TCP代理支持指定端口范围监听,避免启动过多进程,提高性能。 下载地址: Gitee Github

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

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等操作系统。

用户登录
用户注册