完了,二哥网站的图片挂了

news/2024/5/20 6:03:08/文章来源:https://blog.csdn.net/qing_gee/article/details/124519354

二哥的编程知识星球正式开放了,这是一个Java学习指南+编程实战的学习宝地,可以帮助你提高编程能力、养成好的学习习惯、找到志同道合的学习伙伴、拿到更好的 Offer。详情戳链接🔗《Java程序员进阶之路》!

大家好,我是二哥!

很早之前,就有小伙伴给我反馈说《Java 程序员进阶之路》经常有图片不显示或者加载缓慢。

但由于白嫖(GitHub图床+jsdelivr CDN)的力量实在是太过强大了(狗头),再加上我本人没有遇到过这个问题,所以就一直拖延着,迟迟没有行动。

直到某一天,我神秘的流量用光了,上不去了谷歌,访问不了 X 网,我才发现,原来我的网站加载图片这样慢啊!!!!经常是一蹦一蹦出来的,肉眼(带近视镜)可见的慢。

事没到自己头上,显然高高挂起,可一旦事搁到自己头上,就受不了了呀!

于是我打开站长工具检测了一下图片的访问速度,好家伙,我直接好家伙!国内的访问速度能飙到 100ms,国外的确实快,只有 14.7ms,

要知道,网站面对的用户群体大多数都是国内的小伙伴,这速度,真的是劝退用户!

再加上我今天看到小林把自己的网站也升级了自己的图床,所以我就也按捺不住了。

怎么办?

不可能一个个手动替换啊,《Java 程序员进阶之路》上少说也有 200 篇文章,一篇文章平均 5 张图片的话,也得 1000 张吧,全部替换下来还不得疯!

由于我本地已经分门别类的保存了所有的图片,就只剩下:

  • 第一步,把图片上传到某云厂商
  • 第二步,批量替换所有文章中的图片链接为新图床的地址

替换链接的思路也比较简单,就是读取所有 md 文件,找到其中的图片地址,按照下图的方式替换即可。

第一步,上传图库到云厂商

直接选择扫描文件夹就可以把所有的图片上传到新的图床里。

PS:这里有个坑,不知道有眼尖的小伙伴看出来了没?

第二步,开启 CDN

只使用 OSS 的话,除了流量计费比较高一点外,就是图片没有进行加速服务,所以我就顺带开启了 CDN 服务。开启方法非常简单,只需要将域名回源到 OSS 就可以了。

第三步,编写 Java 代码批量转链

@Slf4j
public class ConvertAllFileWithPool {public static final String img_url_pre_before = "https://cdn.jsdelivr.net/gh/itwanger/toBeBetterJavaer/images/";private final static String img_url_pre_after = "http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/images/";private final static String docPath = "/Users/maweiqing/Documents/GitHub/toBeBetterJavaer/docs/";public static void main(String[] args) throws IOException {// 递归遍历目录以及子目录中的所有文件List<File> files = FileUtil.loopFiles(docPath);log.info("总文件数{}",files.size());ExecutorService executorService = Executors.newCachedThreadPool();for (File file: files) {if (FileNameUtil.isType(file.getName(), "md")) {log.info("MD 文件{}", file.getName());executorService.submit(() -> {FileReader fileReader = FileReader.create(file, Charset.forName("utf-8"));String result = fileReader.readString().replaceAll(img_url_pre_before,img_url_pre_after);log.info("转换完毕");try {FileWriter writer = new FileWriter(file);writer.write(result);writer.flush();} catch (IOException e) {log.error("写入文件出错了{}", e);}});}}}
}

思路非常简单,也没有多少行代码:

  • 通过 hutool 的 FileUtil.loopFiles() 方法递归遍历目录以及子目录中的所有文件;
  • 通过 Executors.newCachedThreadPool() 创建一个缓存线程池,由于最多 1087 个文件,所以不用担心线程池资源耗尽;也就不用严格按照阿里手册上强制要求的不能使用 Executors 创建线程池,因地制宜;
  • 循环遍历所有文件,通过 FileNameUtil.isType() 过滤掉不是 md 的文件;
  • 通过 FileReader 读取文件内容,并通过 String 类的 replaceAll() 方法替换原有的图片链接;
  • 通过 FileWriter 重新写入文件;

来看一下执行日志:

17:29:30.547 [main] INFO top.image.ConvertAllFileWithPool - 总文件数1087
。。。
17:29:30.649 [main] INFO top.image.ConvertAllFileWithPool - MD 文件flow-control.md
17:29:30.649 [pool-1-thread-12] INFO top.image.ConvertAllFileWithPool - 转换完毕
17:29:30.649 [pool-1-thread-4] INFO top.image.ConvertAllFileWithPool - 转换完毕
17:29:30.649 [pool-1-thread-8] INFO top.image.ConvertAllFileWithPool - 转换完毕
17:29:30.649 [pool-1-thread-5] INFO top.image.ConvertAllFileWithPool - 转换完毕

基本上不到一秒钟就完成了,因为有 GitHub 作为版本仓库,所以我们可以放心大胆地执行,不用担心出错,大不了重来就是了。

大概检查几个文件后,发现 OK,就可以把修改后的文件提交到版本库了。

重新部署网站后,打开站长工具重新测试了一下图片的访问速度,这次就快多了,国内基本上都是在 20ms 左右,这比原来的 100ms 快了五分之四啊!

早知道这样子,我就早切换链接了!

小插曲

本地图片上传 OSS 的时候一点没注意,多了一个 images 的目录,就导致我构建网站后,发现图片全部挂了!

人慌了好一阵子,OSS 也没提供移动资源的功能,索性就只能在 md 文件中多加了一个 images 目录,这下只能将错就错了。

充了 100 块钱,不知道能用多久,OSS+CDN,链接中没敢用 HTTPS,因为 HTTPS 也收费,就先用 HTTP 了。

好了,今天是五一劳动节,大早上起来我就在星球里制定了五月份的学习计划,不少球友都响应了,也制订了自己的学习计划。

药卷一起卷(狗头)


没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_736302.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql负载导致网站访问高_MySQL负载高导致网站访问慢解决实例

今日发现网站访问慢&#xff0c;一次进行了排查&#xff0c;开始思路混乱&#xff0c;下面来梳理下一、故障分析首先&#xff0c;判断访问慢现象&#xff0c;是个人还是集体&#xff1f;&#xff1f;&#xff1f;个人现象排查&#xff1a;检查个人网络&#xff0c;pc&#xff0…

网站被腾讯停止访问人工服务器,网站被腾讯屏蔽怎么办?实测多种解封方式

前两天不知道怎么搞的&#xff0c;腾讯把我的一个网站给报毒了&#xff0c;在 QQ 和微信里都进行了屏蔽&#xff0c;无法访问。给出的原因是“该网站有未经证实的境外博彩内容”。作为一个负责任的站长&#xff0c;我建站这么多年来一直都是兢兢业业&#xff0c;从未发布过任何…

seo网站自动发布链接工具_死链接是什么?会影响网站seo吗?检测方法与测试工具又有哪些?...

前些天基于企业网站seo需求&#xff0c;调整网站标题title及确定网站标题统一规范&#xff0c;顺便再检查了一下死链接。一检查&#xff0c;发现就有漏网之鱼。什么是死链接&#xff1f;先说一下什么是死链接。顾名思义&#xff0c;死链接就是死的链接嘛。当你点开一个链接&…

java使用token访问url一直携带token认证_SpringBoot入门建站全系列(十二)Spring Security使用token做认证...

SpringBoot入门建站全系列&#xff08;十二&#xff09;Spring Security使用token做认证Spring 是一个非常流行和成功的 Java 应用开发框架。Spring Security 基于 Spring 框架&#xff0c;提供了一套 Web 应用安全性的完整解决方案。一般来说&#xff0c;Web 应用的安全性包括…

iframe src 不加载页面_五种方法延迟加载图像,以获得更好的网站性能

lazy-load由于图像是Web上最重要的内容之一&#xff0c;因此网站上的页面加载时间很容易成为问题。即使进行了适当的优化&#xff0c;图像也可能会很重。这会对访问者必须等待才能访问您网站上的内容的时间产生负面影响。除非您想出一种不会影响速度感知的图像加载解决方案&…

seo自动发外链_怎么找高质量外链资源(如何找发外链平台)

如今&#xff0c;搜索引擎越来越关注外部链接的质量。作为seo外部链接成员&#xff0c;我们如何获得高质量的外链资源&#xff1f; 我可以向您保证&#xff0c;大多数网站管理员在寻找高质量的外链资源时都会头疼。每天只知道要发布多少个大型平台&#xff0c;但这真的可以吗&a…

蓝科响应式网站模板php_简约现代风格的房地产响应式设计网站模板

哈喽&#xff01;大家好&#xff0c;这里公众号&#xff0c;Adobe素材助手。简约现代风格的房地产响应式设计网站模板&#xff0c;可以自定义无限的可能性。因为我们包含了UI准则来维护设计风格。因此&#xff0c;如果您想在部分&#xff0c;页面或其他内容上添加任何内容&…

【Firefox插件】Firebug:能够调试所有网站语言

Javascript 的调试&#xff0c; 是开发 Web 应用尤其是 AJAX 应用很重要的一环&#xff0c; 目前对 Javascript 进行调试的工具很多&#xff0c; 我比较喜欢使用的是 Firebug 。Firebug 是 Joe Hewitt 开发的一套与 Firefox 集成在一起的功能强大的 web 开发工具&#xff0c…

网站大型服务器价格,大型网站服务器价格

大型网站服务器价格 内容精选换一换3月&#xff0c;跳不动了&#xff1f;>>>当下的时代&#xff0c;人们对于网络安全方面的意识在不断的加强&#xff0c;给网站部署配置服务器证书(即SSL证书)之后&#xff0c;网站的通信协议就是加密的&#xff0c;也保障了网站的安全…

设计电子商务网站建设方案_高级电子商务网站设计

学习高级Axure特性&#xff0c;本教程学习创建可展示用户选购产品数量和计算总价的购物车。本课程的学习基于前两级系列教程文档&#xff1a;初级电子商务网站设计、中级电子商务网站设计部件使用&#xff1a;矩形、按钮形状、文本面板、动态面板、水平线交互事件&#xff1a;O…

eeg数据集_开源脑成像数据集网站

本文首发在个人博客上(7988888.xyz)&#xff0c;此文章中所有链接均通过博客进行访问。本文可配合之前推送的文章DeepBCI数据方法集EEG / ERP数据可免费公开下载(2020年更新)原创 如何搜索公共数据集https://crcns.org/data-setshttp://predict.cs.unm.edu/#myCarouselhttp://w…

mockplus模板_社交网站原型模板分享

随着ins、Fancebook等社交产品在各类人群中迅速普及&#xff0c;社交网站在人们的日常生活中占据的使用比重也越来越大。那么如何设计一款社交网站呢&#xff1f;今天我们一起来聊聊这个话题~社交网站原型设计思路社交网站的内容通常由用户主导&#xff0c;如果想要设计一个新的…

indesign自学网百度云_新老网赚博客应如何应对百度搜索流量大减-小小课堂SEO培训教程...

最近&#xff0c;小小课堂SEO自学网上线了一个网赚博客&#xff0c;说实话&#xff0c;在这个时候上线这样一个博客实在非明智之举&#xff0c;不过&#xff0c;既然要想踏入这个行业&#xff0c;什么时候都是最好的时间。今天&#xff0c;小小课堂SEO自学网带来的是《新老网赚…

强大的网站测试工具viewDNS.info记

今天偶然在微博上看到忘了谁转发的李开复的抗议GitHub被屏蔽的微博http://weibo.com/1197161814/zfGjQaBDB?typecomment#_rnd1462418248683&#xff0c;GitHub被屏蔽是之前的事&#xff0c;现在墙内是可以访问的&#xff0c;不过现在ping它依然不通畅。然后根据那张李开复贴出…

一个CTF网站的rules

官网: https://ctf.internetwache.org 我是看到YouTube上的视频才知道这个网站的。 https://www.youtube.com/channel/UClcE-kVhqyiHCcjYwcpfj9w 这个频道有很多有趣的CTF视频。 之前记得是搜DirtyCow搜到的。 用dig 8.8.8.8没找到其IP&#xff0c;而用dig 114.114.1…

html5在线音乐网站模板,国内首家HTML5音乐网站发布

IPAD上市后&#xff0c;获得用户的喜爱&#xff0c;但是尽管苹果迷们热力追捧&#xff0c;但是仍然有不少批评和不满的声音&#xff0c;比如内存小&#xff0c;不支持多任务等&#xff0c;而其中最受网民们质疑的就是不支持FLASH&#xff0c;乔布斯在这一点是是非常坚决的&…

html代码清明节,清明节网上祭祀网站登陆地址:http://www.tsingming.com/index.html

中国有三大鬼节&#xff1a;清明、中元、寒衣。农历七月&#xff0c;中国习俗上称它为鬼月&#xff0c;谓此月鬼门关大门常开不闭&#xff0c;众鬼可以出游人间。清明节清明要上坟&#xff0c;同时有踏青的习俗。以前清明也叫寒食节&#xff0c;曾长达百日&#xff0c;曹操改为…

iphone文件连接服务器 怎么删除密码,iPhone如何查看或删除Safari浏览器保存的网站密码...

自动保存密码和自动填充功能很便利&#xff0c;用户在使用 Safari 登录某个网站时&#xff0c;可以直接调用已经保存的密码进行自动填充。移动端的 Safari 浏览器自从新增了自动填充功能后&#xff0c;便可以通过 iCloud 服务的无缝同步&#xff0c;调用 iCloud 钥匙串(iCloud …

如何利用.git文件夹下载整个网站泄漏的源码

参考&#xff1a; https://www.jianshu.com/p/edae09535ea3 完整命令&#xff1a; wget -r -p -np -k http://www.xxx.com/.git/ #先递归批量下载.git目录 git log #查看网站的提交记录 git reset --hard [log hash] #恢复到指定版本号其中--recursive&#xff08;递归&#x…

一个IIS、Nginx服务器架设多个网站

关于本文更详细的内容&#xff0c;欢迎关注我的个人网站《程序员网》 背景&#xff1a; 自己在阿里云打折的时候买了一个独立IP的服务器&#xff0c;同时名下还有好几个域名。 所以需要在一个服务器中架设多个网站&#xff0c;根据访问时候的域名不同&#xff0c;而指向不同的…