前言 在几个月之前,笔者想自己实现一个性能比较良好的基于tcp的服务器.于是断断续续写了个把月,因为还需要找工,还有论文什么的.拖了这么久.现在开辟这样的一个博客,我想记录下自己的思路,也和大家分享自己的代码.个人觉得一个优秀的服务器,不能考虑各种通用性,平台无关性.我写的这个服务器只针对linux平台. 在写这个系列文章之前,我想把功能都独立出来.每一篇文章专注于一个功能. 本系列文章均系笔者所写,难免有一些错误或者纰漏,如果小伙伴们有好的建议或者更好的算法,请不吝赐教. 正文 目标 本篇文章…
我在上一篇文章介绍了著名的LNMP主机一键安装工具,对比了军哥lnmp和AMH主机的差别,由于AMH拥有用户后台界面,易于新手操作,值得推荐. 但是,上周末我网站宕机,收到DNSPOD发来了宕机提醒,不得不半夜爬起来处理VPS问题,最终查明原因是AMH运行产生了大量的mysql数据库二进制文件,25GB的VPS硬盘几乎占满,导致网站不稳定,出现502宕机错误. AMH作者给出了解决办法,我不喜欢,其实后台修改配置就好了.考虑到所有lnmp vps用户的方便,我把所有解决办法都列出来给各位参考:…
Golang 作为广泛用于服务端和云计算领域的编程语言,tcp socket 是其中至关重要的功能.无论是 WEB 服务器还是各类中间件都离不开 tcp socket 的支持. Echo 服务器 拆包与粘包 优雅关闭 与早期的每个线程持有一个 socket 的 block IO 模型不同, 多路IO复用模型使用单个线程监听多个 socket, 当某个 socket 准备好数据后再进行响应.在逻辑上与使用 select 语句监听多个 channel 的模式相同. 目前主要的多路IO复用实现主要包括…
https://blog.csdn.net/u010050174/article/details/72510367 步骤: 1.新建 一个bat脚本 2.添加到window执行计划中,进行每日执行. 具体操作 1.新建一个  del_before_30days.bat  文件. 内容:   forfiles -p "E:\working\logs" -s -m *.log -d -30 -c "cmd /c del @path" 脚本意思为: 路径:为E:\work…
这是我从别的地方看到的. 1.修改php.ini,打开extension=php_sockets.dll 2.客户端程序 SocketClient.php <?php set_time_limit(0); $host = "127.0.0.1"; $port = 3046; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)or die("Could not create socket\n"); $co…
最近通过 PyQt5 设计了一个下载服务器指定日期日志文件的程序,里面有些有意思的技术点,现在做一些分享. PyQt5 是一套 Python 绑定 Digia Qt5 应用的框架,是最强大的 GUI 库之一,使用 PyQt5 我们能够很容易的开发桌面应用,接下来我们将用它来开发一个下载服务器日志文件的小程序. 前期准备 软件 QT5 Python 模块 PyQt5==5.15.7 paramiko==2.9.2 PyCharm 添加扩展工具 PyUIC PyUIC 扩展用于将使用 Qt Desi…
Linux下编写TCP服务器调用的函数顺序为:socket -> bind -> listen -> accept -> recv/send socket 参见:http://c.biancheng.net/view/2131.html socket函数成功返回文件描述符,失败返回-1 bind 参见:http://c.biancheng.net/view/2344.html 需要注意的是,bind函数的第二个参数类型为struct sockaddr *,但用的时候经常传入stru…
log4j错误信息:log4j:ERROR Failed to rename [D:/logs/wmts_] to [D:/logs/wmts_2015-12-21.log ]. 起因:部门网站使用B/S架构请求,请求过程中需要将日志文件记录下来,以便出现问题进行查找,刚开始服务器上的日志文件能够正常输出,后来日志文件不能输出,部门领导让我查找原因并修改. 介绍:本人JAVA小白一枚,之前是学.Net出身,来到公司之后由于公司需要才转的JAVA,日志输出做的比较少所以部门经理刚交给我的时候心里还…
古怪的需求 在实习的公司碰到一个古怪的需求:在一台服务器上写日志文件,每当日志文件写到一定大小时,比如是1G,会将这个日志文件改名成另一个名字,并新建一个与原文件名相同的日志文件,再往这个新建的日志文件里写数据:要求写一个程序能实时地读取日志文件中的内容,并且不能影响写操作与重命名操作. RandomAccessFile类中seek方法可以从指定位置读取文件,可以用来实现文件实时读取.JDK文档对RandomAccessFile的介绍 Instances of this class suppor…
今天突然收到手头一台数据库服务器的磁盘空间告警邮件,C盘空间只剩下5.41GB大小(当系统磁盘剩余空间小于总大小的10%时,发出告警邮件),如下图所示: 由于还有一些微弱印象:前阵子这台服务器的C盘剩余空间比较大.“事出反常必有妖”,肯定有什么不正常的情况发生,因为这台服务器有好几个账号,也是应用服务器(IIS和数据库部署在一起),例如,那个用户在桌面放一些大文件也有可能导致C盘空间被消耗,于是用TreeSzie工具分析查看到底是那些文件比较大,结果一查发现了一个惊人的事情: C:\WINDOW…