微布开发-清理服务器日志(*.log结尾的文件)及MySQL存储的日志
接上篇,上次提到了排查是因为服务器的磁盘不够导致服务器没有写入的空间,进一步导致服务器宕机,下面是我清理磁盘日志的操作。
清理日志文件(*.log文件)我们的Java的日志文件是根据日期分开成不同的log,所以我写了一个shell脚本用来每天定时清理三天之前的所有日志文件。
清理的Linux命令如下:
1find log文件的文件路径 -mtime +3 -name "*.log" -exec rm -rf {} \;
shell脚本命令如下:
12345678910111213#!/bin/bash# 指定日志目录路径log_dir="*******/***/***"# 计算三天前的日期three_days_ago=$(date -d "3 days ago" +%Y%m%d)# 删除三天前的日志文件find "$log_dir" -mtime +3 -name "*.log" -exec rm -rf {} \;echo "已删除 ...
微布开发-服务器排查
服务器排查服务器版本4核8g,CentOS 7.6
场景:每次上课前20min,服务器响应超时,服务器几乎处于宕机状态
排查流程:1、查看服务器CPU状态、以及MySQL慢查询记录使用top命令,发现占用最多的MySQL一般CPU120%左右,初步判断可能是慢查询导致的,定位到对应的MySQL的慢查询文件路径,并查看其日志,发现慢查询的触发都是在半夜的时候(后续去排查为什么半夜出现此问题),排除是MySQL慢查询导致。
2、查看服务器宕机记录:使用命令last reboot和last -F |grep crash发现没有宕机导致的重启的情况
3、查看系统日志:定位到/var/log文件夹下,查看messages,sa记录等,我查看了sa记录(sar -u -f sa09 | more、sar -s -f sa09 | more),发现memory在用户使用的高峰期,就会几乎爆满了,但是问题不大,只要没有100%就还好,毕竟他这个%memused是算上了buff/cached的。通过top命令发现实际上使用的大概是50%(不含buff/cache)左右。
4、查看磁盘读写情况毋庸 ...
GO-50度灰
初级篇:1-341. 左大括号 { 不能单独放一行在其他大多数语言中,{ 的位置你自行决定。Go 比较特别,遵守分号注入规则(automatic semicolon injection):编译器会在每行代码尾部特定分隔符后加 ; 来分隔多条语句,比如会在 ) 后加分号:
1234567891011// 错误示例func main(){ println("hello world")}// 等效于func main(); // 无函数体{ println("hello world")}
./main.go: missing function body
./main.go: syntax error: unexpected semicolon or newline before {
1234// 正确示例func main() { println("hello world")}
2. 未使用的变量如果在函数体代码中有未 ...
Go-Grammar
关键字Go语言设计的关键字,了解这些关键字有助于命名变量的冲突避免
go的二十五个关键字12345break default func interface selectcase defer go map structchan else goto package switchconst fallthrough if range typecontinue for import return var
简介
var和const 是 Go语言基础里面的变量和常量申明
package和import 用于分包和导入
func 用于定义函数和方法
return 用于从函数返回
defer 用于类似析构函数
go 用于并发
select 用于选择不同类型的通讯
interface 用于定义接口
struct 用于定义抽象数据类型
break、case、continue、for、fallthrough、el ...
面经-深信服GO一二面
一面算法:30min(1)合并三个升序字符串,不能创建新的链表,而是使用已有链表实现。——手撕
(2)在一个长字符串里面,找出是否出现过的某个字符或子字符串。(遍历或者hashset手撕)
场景题:(1)给两篇文章,怎么从文章1中找出文章2重复的内容,前提是:内存资源有限。
考虑因素:内存有限、高效
深度:除了使用哈希、布隆、MySQL、分段比较这些有没有其他的方法?
引申问题:如果有五个服务器、现在需要进行负载均衡,可以怎么实现?(哈希取模,虚拟地址分配到哈希环,实现虚拟地址和服务器地址映射)
(2)如果有一个10G的文件在服务器中,我现在客户端需要从服务器下载,但是网络不是很稳定,并且能保证用户能下载完文件,传输数据用的udp协议不是tcp协议,应该需要注意些什么?
考虑因素:网络不稳定,传输方式居然是udp。。。
感觉在应用层实现一个tcp机制,保证数据传输的有序、可靠性。
常见八股:(1)http和https之间区别?
(2)为什么现在大部分请求还是http而不是rpc?
二面项目:(1)比较熟悉的项目是什么?
(2)微布校园的难点有哪些?怎么解决?(缓存雪崩和击穿、缓存和数据 ...
面经-睿联校招一面-2023-9-20
Linux文件权限有那些?怎么控制文件权限?x权限是用来干什么的?操作系统中,进程和线程区别?操作系统中的交换分区作用MySQL中幻读和脏读的区别MySQL中聚簇索引和非聚簇索引的区别MySQL的乐观锁和悲观锁为什么MySQL使用B+树?什么子网掩码?有什么用?为什么说tcp是流式的传输协议http的常用请求方法URL的组成部分http和https的区别https如何保证传输安全刚刚提到的https的密匙协商是什么样的过程?Java面向对象的多态的理解快排的思想JWT的组成,以及怎么后端校验此token是否有效的?雪花算法怎么实现不重复的?(从组成的角度回答)
Netty-Client
客户端初始化创建引导类,确认线程模型,IO模型,以及业务处理逻辑。
客户端只需要一个线程模型即可,毕竟不是服务端不需要一个统一的线程模型去管理很多连接,客户端只需要一个线程模型主动去连接服务端就行了。
123456789101112131415161718192021222324252627public class NettyClient { public static void main(String[] args) { NioEventLoopGroup workerGroup = new NioEventLoopGroup(); Bootstrap bootstrap = new Bootstrap(); bootstrap // 1.指定线程模型 .group(workerGroup) // 2.指定 IO 类型为 NIO .channel(NioSocketChannel.c ...
Netty-Server
Netty服务端初始化一般需要两个线程组,一个是用来管理接受新线程的线程组(Boss),一个是处理每条连接的读写数据的线程组(Worker),可以理解成老板出去接活,员工干细活。所以服务端的创建关键代码如下:
1234567891011121314151617public class NettyServer { public static void main(String[] args) { NioEventLoopGroup bossGroup = new NioEventLoopGroup();//接受管理新的连接 NioEventLoopGroup workerGroup = new NioEventLoopGroup();//处理每条连接的数据读写 ServerBootstrap serverBootstrap = new ServerBootstrap();//引导类进行服务端的启动操作。 serverBootstrap .group(bossGroup, work ...
Spring-IOC-部分源码解读
Spring容器启动123public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationfile.xml");}
ApplicationContext context = new ClassPathXmlApplicationContext(...)就是在 ClassPath 中寻找 xml 配置文件,根据 xml 文件内容来构建 ApplicationContext。
简单介绍一下FileSystemXmlApplicationContext 和 AnnotationConfigApplicationContext 这两个类
1、FileSystemXmlApplicationContext 的构造函数需要一个 xml 配置文件在系统中的路径,其他和 ClassPathXmlApplicationContext 基本上一样。
2、Annotati ...