引言由于CentOS 8 官方已在21年年底停止了服务,所以CentOS8默认的yum源都已不可用,需要更换镜像源。
操作过程进入repo目录1cd /etc/yum.repo.d/
这个目录下的repo文件都是官方源,已不可用。如果你用过CentOS 7可以发现8和7的repo结构是不一样的,如果你用CentOS 7或之前的源就会报错。
备份或删除默认repoCentOS只会加载一个对应字段的yum源,留着官方yum源可能会导致覆盖、报错等,所以需要(备份之后)删掉。不备份其实也无所谓。
123456# 备份+删除mkdir bakmv *.repo bak# 删除rm -rf *.repo
下载镜像源建议下载国内的镜像源,访问更快。这里选的是阿里云的镜像源。
1wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
更新cache下载之后系统会自动读取repo文件加载,只需要更新一下缓存就行。
12yum clean allyum makecache
验证 ...
4630436162ade97ba2718b7d0c4b3b63baf02c47a9940bc0e97033aecf20207e75b2a9eaf47a16203709df405e89136873b87ffe58376de743e27b478e50cd8636042f3a1e9ff2a1ed6e9ac30f6bbcb949c308bb11c1b170b12de422cb52e79ba71c9d3c2c89b8f15c586aa5d44577af50fdd51b1a94adc1274d5106c8aae074d2a118da128bd7cbf83d447be8663461
请输入密码
Confirm
引言之前因为第一次接触博客,所以没注意到图床图片的大小会影响网站的加载速度,上传图片的时候没进行压缩,导致一堆文章的封面都有几mb。注意到的时候又因为之前上传的图片在多处被使用,一个个查找+重新上传图床实在太麻烦,所以一直丢着没改。今晚突然心血来潮,遂改之。
原图片优化webp是谷歌于2010年提出了一种新的图片压缩格式,这种格式的图片有损条件下支持透明通道。据官方实验显示:无损WebP相比PNG减少26%大小;有损WebP在相同的SSIM(Structural Similarity Index,结构相似性)下相比JPEG减少25%~34%的大小;有损WebP也支持透明通道,大小通常约为对应PNG的1/3。
非常适合博客图片压缩有没有?
把原图床图片全部下载下来,用Python脚本把.jpg和.png格式的图片转换成webp格式:
12345678910111213141516171819202122232425262728293031323334#!/usr/bin/env python3"""把当前目录及其子目录下所有 .jpg / .png ...
CPURAIDRAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,简称为「磁盘阵列」,其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统,从而实现比单块磁盘更好的存储性能和更高的可靠性。
RAID卡(阵列卡)用独立的硬件板卡来实现RAID功能的办法,一块自带CPU的RAID卡俨然就是一个小型的计算机系统,有自己的CPU、内存、ROM、总线和IO接口,不过这个系统内的微型计算机专门用于处理RAID运算。简单来讲就是RAID卡直接管理磁盘,并根据不同的RAID模式生成虚拟磁盘给计算机系统使用。
影响RAID卡的因素影响 RAID 卡性能的因素很多,其中可调因素主要有 RAID 卡缓存( CACHE )大小、写策略( WRITE POLICY )、读策略( READ POLICY )、条带的大小( STRIPE SIZE )。
HBA卡(直通卡)一般HBA就是给主机插上后,给主机扩展出更多的接口,来连接外部的设备。通过简单的磁盘控制器就可以实现稳定高效并且是低成本的SAS和SATA连接服务器的解决方案,可以将磁盘直接传送至OS而无 ...
CPU核心组件之一,承担着大部分计算任务执行计算任务管理和调度服务器的资源安全防护任务能耗和散热控制
内存稳定性,可靠性,ECC错误校验技术,热插拔技术CPU能够直接访问的存储器,CPU从内存中读取操作指令和数据,又把运算或处理送回内存。
主板稳定性、高性能和高兼容性。主板是服务器硬件的核心,连接所有硬件组件并提供通信和数据传输。CPU和内存接口,BIOS芯片,I/O控制芯片、键盘和面板控制开关接口、IPMI芯片、网络接口、指示灯插接件、扩充插槽、电源和风扇控制芯片等。相较普通计算机主板更大,槽位更多,可拓展性更强。所有的板卡必须通过主板发挥作用,主板性能和质量的好坏直接影响到整个系统。
硬盘机械硬盘便宜,容量大,读写慢,噪音大,易物理损坏
固态硬盘贵,读写快,安静,不易物理损坏,需要散热
网卡用于连接服务器与网络之间的硬件设备。它允许服务器通过网络与其他设备进行通信,包括传输数据、接收数据和处理网络请求。数据链路层。服务器网卡相较普通网卡传输速度快、CPU占用率低、安全性能高。
分类结构类型:刀片服务器Mezz卡、灵活插卡总线类型:PCIE网卡、ISA网卡应用类型:工作站网 ...
Python 真难写啊
7.2199. 二叉树的右视图 - 力扣(LeetCode)广度优先 层序遍历后每层取最右边的结点储存
时间复杂度 : 遍历所有子节点 O(N)
空间复杂度 : 最坏情况下包含一层的所有节点O(n/2);最好情况下(链表树)只包含一个节点O(1)
1234567891011121314class Solution: def rightSideView(self, root: Optional[TreeNode]) -> List[int]: if not root: return [] q = deque([root]) res = [] while q: n = len(q) res.append(q[0].val) for _ in range(n): node = q.popleft() if node.right: q.append(node.right ...
8.11面试题 01.04. 回文排列 - 力扣(LeetCode)题目跟常见的那种判断回文不太一样 还有注意字符范围
123456789101112131415161718class Solution { public boolean canPermutePalindrome(String s) { char[] chars = s.toCharArray(); int n = chars.length; int[] ch = new int[128]; for (int i = 0; i < n; i++) { ch[chars[i]]++; } boolean flag = false; for (int i = 0; i < 128; i++) { int num = ch[i]; if (num%2 == 0) continue; ...
8.4240. 搜索二维矩阵 II - 力扣(LeetCode)题目说要高效的算法 虽然我写的算法能过但是用了27ms 别人的只用了6ms
12345678910111213141516171819class Solution { public boolean searchMatrix(int[][] matrix, int target) { return searchMatrix(matrix,target,new int[]{0,0},matrix.length-1,matrix[0].length-1); } boolean searchMatrix(int[][] matrix, int target, int[]index, int row, int col) { if(index[0]==col&&index[1]==row) return matrix[row][col]==target; if(index[0]>col||ind ...
7.28374. 猜数字大小 - 力扣(LeetCode)没注意到越界问题 用二分的另一种写法可以避免越界不用long
123456789101112131415public class Solution extends GuessGame { public int guessNumber(int n) { int ans = 1+(n-1)/2; // 注意此处取中间值写法 int res,left=1,right=n; while(true) { res = guess(ans); if(res == 0) break; if(res == -1) { right=ans-1; }else{ left=ans+1; }ans= left+(right-left) /2 ; } ...
(找不到好看的封面图了)
7.21735. 小行星碰撞 - 力扣(LeetCode)REVIEW
本来以为是简简单单的栈 结果条件判断一多就错错错错错 代码写完也很臃肿 我该去好好学一下各种数据结构的函数了
1234567891011121314151617181920212223242526272829class Solution { public int[] asteroidCollision(int[] asteroids) { Deque<Integer> stack = new ArrayDeque<>(),stack2 = new ArrayDeque<>(); for(int num:asteroids){ if(stack.isEmpty()){ if(num>0) stack.push(num); else stack2.push(num); ...