只因把https改成http:带宽减少了70%
刚看到个贴子,说有人把网站的 https 改成 http,结果带宽直接减少了70%,属实离谱。
很多人眼里,“https就是多了个s,应该没啥差别”,但实际这就是安全和信任的分水岭。现在的浏览器、搜索引擎、甚至网络服务商,对 http 都会自动限流、拦截,用户端看到“不安全”提示也本能退出。等于你自己把门口招牌换成了“危险区域”,流量自然大幅缩水。
有人调侃“这操作堪比自断一臂”,也有人说“省下的证书钱,亏在流量上十倍百倍”。我挺认同后者,省小钱吃大亏,职场和技术里都不少见。
别嫌麻烦,安全和标准其实就是效率,长远看才是真省心。【备注:文末可领最新资料】
算法题:联赛信息统计
昨晚十一点多在公司楼下吹风,手机叮一声,群里小李问:东哥东哥,能不能把咱们部门「友谊赛」数据算个积分榜?我正困得要命…想了下,这种统计其实很常见:一堆比赛结果,算每队的胜平负、进失球、净胜球、积分,然后排个名,对吧。
就给你一串比赛记录,每条像 “Home,Away,2,1”。意思是主队Home进2个,客队Away进1个。要统计每支队的:胜/平/负、GF/GA、GD、Pts,然后按规则排:积分优先→净胜球→进球数→队名字典序。嗯就这四条,够用。
第一步,扫一遍原始记录,用一个 Map<String,Team> 累加。赢了+3,平了各+1,输了+0,进失球都要记; 第二步,把 Team 丢进列表里按排序规则排一下就完了。整体就是 O(M log N),M场比赛、N支队。
import java.util.*;
publicclassLeagueStats{
staticclassTeam{
String name;
int wins, draws, losses, gf, ga;
Team(String n){ this.name=n; }
intpts(){ return wins*3 + draws; }
intgd(){ return gf - ga; }
}
// record 格式:Home,Away,homeGoals,awayGoals
publicstatic List<Team> compute(List<String> records){
Map<String, Team> map = new HashMap<>();
for(String r : records){
if(r == null || r.isEmpty()) continue;
String[] p = r.split("\\s*,\\s*");
if(p.length != 4) continue; // 脏数据略过
String home = p[0], away = p[1];
int gh = Integer.parseInt(p[2]);
int ga = Integer.parseInt(p[3]);
Team H = map.computeIfAbsent(home, Team::new);
Team A = map.computeIfAbsent(away, Team::new);
H.gf += gh; H.ga += ga;
A.gf += ga; A.ga += gh;
if(gh > ga){ H.wins++; A.losses++; }
elseif(gh < ga){ A.wins++; H.losses++; }
else { H.draws++; A.draws++; }
}
List<Team> list = new ArrayList<>(map.values());
list.sort((x,y)->{
if(y.pts()!=x.pts()) return y.pts()-x.pts();
if(y.gd()!=x.gd()) return y.gd()-x.gd();
if(y.gf!=x.gf) return y.gf - x.gf;
return x.name.compareToIgnoreCase(y.name);
});
return list;
}
// 小示例跑一下
publicstaticvoidmain(String[] args){
List<String> input = Arrays.asList(
"A,B,2,1","C,A,0,0","B,C,3,3","A,B,1,1","B,C,0,2"
);
List<Team> table = compute(input);
int rank = 1;
for(Team t : table){
System.out.printf(
"%d. %s Pts=%d W-D-L=%d-%d-%d GF=%d GA=%d GD=%d%n",
rank++, t.name, t.pts(), t.wins, t.draws, t.losses,
t.gf, t.ga, t.gd()
);
}
}
}
有人问并列名次要不要并列显示?上面用了稳定规则(积分→净胜→进球→名字),所以不会有并列显示的尴尬;真想并列,就把“队名”这条去掉,输出时同分同序号就行。还有,输入里可能有空格、大小写乱七八糟,我在 split("\\s*,\\s*") 做了容错,你们别手抖。
啊对,对了,如果某队在某轮没出场也要出现?那就赛程读完再把“应有队名集合”合并一次,保证零比赛也能在榜单。还有自弃权、判负 0:3 这种…业务定死就当成一条普通比分塞进去就好,别搞特殊分支,逻辑保持闭环最省心。
一遍累加 O(M),排序 O(N log N)。要按主客场拆开统计、或者加“近五场走势”,就在 Team 里多放点字段或者额外建个 Match 列表就够了。想做实时榜?Kafka/队列进来一条算一条,最后用有序结构维护前 K 名,没毛病。
-END-
我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html