自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 shell脚本使用总结

shell脚本功能总结。

2024-10-13 10:32:21 512

原创 对运行的服务所在目录就行备份

思考: 我们既然能对web服务进行备份那么一定也可以对游戏后端服务进行备份等也可以吧备份信息从backup.log改到发送邮件到运维人员的邮箱上,使用这个命令。检查并确认服务器上的特定服务(如Nginx或Apache)是否正在运行。通过backup.log文件(或失败的通知,如果脚本中的任何步骤失败)。命令将Web服务器的根目录同步到备份目录。创建一个备份目录,如果它不存在的话。停止该服务以进行备份(如果必要)。管理一个Web服务器的备份任务。重新启动之前停止的服务。(可选)压缩备份目录。

2024-10-11 00:36:29 435

原创 服务端口的查看和释放

结合之前的释放端口的脚本,我们便可以先查看服务是否在运行以及对应端口是多少,对其先测试状态,在决定是否要关闭服务释放端口。命令的作用是创建一个filename的文件其后缀最少有3个大写的X,临时文件创建后X变成对应的随机数.测试端口是否有响应 这里使用telnet协议,一般默认安装了,在这个目录下。这个脚本执行之后,我们的目标端口就被释放了,就可以运行我们需要的服务程序.这里我们通过telnet 协议以及脚本可以简单判断一个服务端口的状态。lsof 查看端口是否存在。

2024-10-10 00:14:58 725

原创 定时将内存使用前十的进程名称写入日子

我们可以将次脚本每次输出的结果追加放入一个日志文件中,且使用定时任务重定时打印系统内存使用情况,方便排查服务器问题。每当我们执行这个脚本的时候我们就能获取当前使用内存前十的进程的名称。获取第八行开始的文本在使用awk对每一行文本进行计算和打印。查看进程信息,其中包含了cpu使用率和内存使用率。最后我们将这些命令写入shell脚本文件中。根据第二列的数字进行倒序,支取10个。这里我们将脚本设置文每分钟执行一次。统计使用内存和cpu前十的进程。打印一次的结果放入xxx文件中。

2024-10-09 01:16:48 256

原创 linux 定时任务

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。思考:linux提供了方便简介的定时任务功能,在服务端开发的时候我们需要对日志没数据,等进行备份,只需要将对应脚本或命令配置一下可以省去许多人力物力,日志堆积也可以用此方案定时检查堆积内容的大小,查过一定阈值将旧的删除。

2024-09-29 23:38:28 970

原创 Liniux systemctl

在上面的配置文件中,为了演示起见,我将一些本测试脚本不需要但是比较重要的配置项也写了出来,其实如果不需要可以删除,但是[Unit]/[Service]/[Install]这三个标签需要保留。对于这种服务,我们希望他永远不要停止,就算是服务器重启,我们也希望他能在服务器重启后也能自己启动,这是我们就需要用enable和disable这个命令来关闭和开启服务的开机自启。systemctl命令控制:启动、停止、开机自启能够被syatemctl管理的软件,一般也称之为服务。firewalld 防火墙。

2024-09-28 11:17:13 303

原创 Linux 学习 awk 和sed 命令使用

命令awk 是一种处理文本文件的语言,是一个强大的文本分析工具。awk 通过提供编程语言的功能,如变量、数学运算、字符串处理等,使得对文本文件的分析和操作变得非常灵活和高效。之所以叫 awk 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。这里我们有一个文本文件test.txt命令Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处理、编辑文本文件。

2024-09-26 23:09:00 523

原创 Linux学习 进程 端口

思考:这个可以作为服务端自动化部署脚本的其中启动服务前需要做的一部分操作,正常情况下我们要释放的端口一般是我们之前在跑着的服务器,不能直接这样结束掉进程,不然会对难以保证结束进程时正在交互的数据的正确性,应该使用优雅关闭的方式将对应的pid进行关闭,在释放端口,在启动新的服务。用于显示当前系统中的进程, ps 命令显示的进程列表不会随时间而更新,是静态的,是运行 ps 命令那个时刻的状态或者说是一个进程快照。这个脚本执行之后,我们的目标端口就被释放了,就可以允许我们需要的服务程序.

2024-09-25 23:25:55 920

原创 Linux学习 重定向 管道 流

【代码】Linux学习 重定向 管道 流。

2024-09-24 22:13:41 166

原创 Linux 压缩制定目录下指定类型的多个文件

当使用 tar 命令创建归档时,如果看到 tar: Removing leading ‘/’ from hard link targets 的消息,表示你在归档中使用了绝对路径。tar 会自动去掉绝对路径的前导斜杠,以便在解压时能够保持相对路径。编写一个 Shell 脚本,将指定目录下的指定类型的文件打成一个压缩包。这里主要会涉及到文件查找find和打包tar命令。这是第一版,里面存在着很大的问题。

2024-09-23 23:30:44 275

原创 linux 学习 03

思考:最常用的莫过于这5个(-f -e,-r,-w-x),当我们需要对某个文件操作的时候我们首先要判断是否为空文件,在判断是否可以读写和执行。表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为。关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

2024-09-22 10:09:31 1320

原创 Shell 脚本学习

不难看出我们创建的helloworld.sh文件他的权限信息为:-rw-r–r–,对于我们现在登录的root账号也就是对应的第二个到第四个"rw-"也就是仅仅只有读写的权限没有执行的权限,我们如何解决这个问题,以上例子中,: 是一个空命令,用于执行后面的 Here 文档,<<‘EOF’ 表示开启 Here 文档,COMMENT 是 Here 文档的标识符,在这两个标识符之间的内容都会被视为注释,不会被执行。Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。

2024-09-21 19:10:57 1015

原创 Linux学习01

如何得到一台装有linux系统的电脑或服务器这里我采用的是白嫖华为云的服务器,实名认证之后免费送一个月,装虚拟机更加轻松简单,当然也不是一顶要华为云才有这种活动,其他的阿里云,腾讯云等各大云服务厂商都有这种体验活动,刚学linux的朋友可以先考免费的体验一下,后续觉得不错,可以长期购买.

2024-09-20 00:20:18 310

原创 23.3警报管理

我们编写的应用程序只需要一个警报,这个警报会在CPU因为计算超大质数而开始熔化时抛出(别忘了我们正在建设一家销售质数的公司)。这个警报处理器是OTPgen_event行为的回调模块,它的代码如下。但是这里报错了,为什么呢,我来会比对发现,我粗心这里把handle_event方法写成了handler_event,还有如果我们把这行代码添加上,就算下次写错了,idea也会提示我们存在没有实现的方法需要我们编写,这样一眼就能看出错误了。现在来找点乐子:启动系统,生成一个警报,安装警报处理器,再生成一个警报……

2024-09-18 23:34:00 239

原创 23.2.3分析错误

这里有个问题,我们调用error_logger:error_msg/1产生的错误日志条目消息最终成为日志里的第1条,宁没有立即出现在list里面,而是下一次启动的时候再去读取才会把这个错误信息读取到list中。由于之前我们启动了一个rb_server了,所以这里我们先要调用rb:stop方法将之前的停止掉,再来启动一个带参数的新的rb_server。如果报错了,请大家去检查一下配置文件中的错误日志目录是否存在,不存在一定要自己去创建一下,否则就会出现这种情况。接下来我们用带参数的start方法启动。

2024-09-14 00:05:09 312

原创 23.2.2配置错误记录器02

这里只列出了进度报告,而它们原本应该出现在shell里。但是error_logger:error_msg/1报告的错误没有保存在日志里,为此我们必须配置一个滚动日志。下面的配置既能提供shell输出,又能把写入shell的所有信息复制到一个滚动日志文件里。接下来的配置文件会在shell里列出错误报告,所有的进度报告则会保存在一个文件里。在生产环境里,我们真正感兴趣的只有错误,而非进度或信息报告,所以只让错误记录器报。运行它会产生与之前例子类似的输出,区别在于错误日志里只会有错误报告。

2024-09-12 23:12:24 365

原创 23.2 配置错误记录器

在启动Erlang时可以给系统提供一个启动参数它会创建一个适合进行程序开发的环境,只提供一种简单的错误记录形式。(不带启动参数的erl命令就等于erl -boot start_clean)它会创建一个适合运行生产系统的环境。系统架构支持(System Architecture Support Libraries,简称SASL)将负责错误记录和过载保护等工作。

2024-09-11 23:27:15 342

原创 Erlang之ETS学习03

这意味着匹配描述总是含有一个以上元组元素的列表(含有三个参数的元组元素),元组的第一个元素应是 ets:match/2 的文档中所描述的模式,第二个元素应是含 0 个或多个断言测试的列表,第三个元素应是包含关于实际返回值的描述的列表,通常是一个对返回值全描述的列表,即返回匹配对象的所有项目。当一个表被锁定,一序列的 ets:first/1 和 ets:next/2 的调用都会保证成功执行,并且表里的每一个对象数据只返回一次,即使在遍历的过程中,对象数据被删除或插入。对表操作的性能也会显著降低。

2024-09-10 23:54:55 924

原创 Erlang之ETS学习03

二者都是返回一个 ETS 表的所有对象数据的列表我们查看源码可以知道tab2list(Tab)底层是直接调用的ets:match_object(Tab, ‘‘)方法,现在我们只需要讨论ets:match(Tab,’’)和ets:match_object(Tab, ‘_’)的效率问题。

2024-09-09 23:10:57 418

原创 Erlang之ETS学习02

一个匹配模式也许包含的项值有:绑定部分(Erlang 项),‘_’ 可以匹配任何 Erlang 项,和匹配变量:‘$N’(N>=0)函数将返回一个匹配每个对象数据的元素的列表,每个元素是一个绑定变量模式的有序列表。根据匹配模式 Pattern 匹配 ETS 表 Tab 里的对象数据。这样也是可以的,但是一定要是变量匹配的值才会出现在结果列表里面。为了更好的展示效果这次我们采用bag类型的表。

2024-09-07 00:12:30 193

原创 Erlang之ETS学习02

{}keypos,N}参数的效果。

2024-09-04 23:29:45 411

原创 Erlang之ETS学习01

说到ETS那不得不提到DETS,ets和dets是两个系统模块,可以用来高效存储海量的Erlang数据。ETS是Erlang Term Storage(Erlang数据存储)的缩写,DETS则是Disk ETS(磁盘ETS)的缩写。

2024-09-03 23:29:36 706

原创 23.用OTP构建系统

本质上是把事件生成和事件处理分开进行,这样我们就能暂不决定如何处理事件,同时又不影响事件生成。这里的要点在于事件处理器提供了一种架构,让我们可以安装自定义的处理器。错误记录器的架构遵循事件处理器的模式。可以在错误记录器里安装不同的处理器来让它做不同的事情。首先,提供一个名称来作为消息发送的目的地,也就是名为errors的注册进程。最开始启动服务器是,我们my_handler里的方法是**no_op()**无论向服务器发送什么事件都不会做任何处理。方法,只对too_hot的事件进行处理,忽略掉其他任何事件。

2024-09-02 23:37:53 203

原创 【无标题】

【代码】【无标题】

2024-08-31 00:07:19 99

原创 erlang gen_server之my_job_center练习前三个功能的编写

【代码】erlang gen_server之my_job_center练习前三个功能的编写。

2024-08-30 00:17:42 122

原创 gen_server 的回调结构

% gen_server:call(Name, Request )调用服务器,但最终回去调用回调模块里的handle_call(Request,From,State),主要取决于Request参数的值一般包含操作方式和对应参数%% gen_server 的回调结构%% 启动服务器%% 如果返回{ok, State},就说明我们成功启动了服务器,它的初始状态是State%% 新增当前用户到数据库end,%% 存钱end,%% 取钱->end,%% 关闭银行。

2024-08-28 00:08:45 474

原创 初探gen_server

【代码】初探gen_server。

2024-08-27 00:34:34 178

原创 server1:基本的服务器

这个回调模块没有用于并发的代码,没有分裂,没有发送,没有接收,也没有注册。它是纯粹的顺序代码,别无其他。这就意味着我们可以在完全不了解底层并发模型的情况下编写客户端服务器模型。一旦理解了基本的结构,就可以轻轻松松地“自主研发”了。这段代码里面,不仅包含了服务器框架代码调用的回调方法:init(),handle();还包含了客户端将调用的接口方法:add(),ind()。OTP的惯例是把这两类函数放在同一个模块里。这一小段代码凝聚了服务器的精华。它是一个小小的服务器,可以用回调模块作为它的参数。

2024-08-24 01:03:17 147

原创 gen server 学习01

Erlang有一种公布进程标识符的方法,它让系统里的任何进程都能与该进程通信。这样的进程被称为注册进程(registered process),这里主要介绍一下register这个方法。用AnAtom(一个原子)作为名称来注册进程Pid。如果AnAtom已被用于注册某个进程,这次注册就会失败。spawn是一个Erlang基本函数,它会创建一个并发进程并返回一个进程标识符。返回的结果是一个进程标识符Pid(process identifier),这个会在下面用到。

2024-08-22 23:58:00 126

原创 TCP长连接和心跳包相关知识

客户端向服务器端发送的请求报文由于网络等原因滞留,未能发送到服务器端,此时连接请求报文失效,客户端会再次向服务器端发送请求报文,之后与服务器端建立连接,当连接释放后,由于网络通畅了,第一次客户端发送的请求报文又突然到达了服务器端,这条请求报文本该失效了,但此时服务器端误认为客户端又发送了一次连接请求,两次握手建立好连接,此时客户端忽略服务器端发来的确认,也不发送数据,造成不必要的错误和网络资源的浪费。有长连接自然也有短连接,短连接是指双方有数据发送时,就建立连接,发送几次请求后,就主动或者被动断开连接。

2024-08-21 23:19:37 703

原创 C/C++ 大数求和,差大整数求和!

大数加法

2023-01-13 16:13:47 276

原创 SpringDataRedis快速入门

SpringDataRedis快速入门

2022-10-09 22:44:16 202

原创 如何解决自定义Redis序列化器不生效

如何解决redis自定义序列化器无法生效,以及RedisConnectionFactory无法自动装配的问题。

2022-10-09 08:41:16 2418

原创 Android开发 RadioGroup中RadioButton不互斥解决方案

android开发radioButton间不互斥!

2022-09-30 16:19:55 957 1

原创 关于Redis配置主从复制集群遇到的问题,主机不显示从机的连接信息

redis主机不显示从机连接,通过配置文件完美解决。

2022-08-09 10:44:23 1110 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除