摘要: 工欲善其事必先利其器。 添加golang的代理的环境变量GOPROXY="https://goproxy.cn" 在gopath的上一级目录执行go mod init github.com/beego 进入到gopath路径下执行 go get -u github.com/beego/beego/v 阅读全文
posted @ 2023-01-11 11:48 first_semon 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 背景 vpp 高版本编译需要高版本的gcc支持,不然编译过程中很多编译参数都识别不了。但是服务器此时有没有连接互联网,故需要先将高版本的gcc源代码通过互联网下载下来,移动到服务器上进行编译安装。 要求 输入gcc -v or gcc --version 输出当前安装gcc的版本号 实现 现到互联网 阅读全文
posted @ 2023-01-04 11:48 first_semon 阅读(1406) 评论(0) 推荐(0) 编辑
摘要: 背景 目前基于dpdk数据平面开发套件的应用越来越多,而dpdk对于上层应用运行时,服务的进程数多于1时。要求网卡支持多队列,否则项nginx这种多进程应用程序只能再默认配置下运行。只能启动一个worker。 要求 在kvm虚机中将网卡设置支持多队列。使类似nginx这种多进程应用程序可以运行多wo 阅读全文
posted @ 2022-06-21 17:28 first_semon 阅读(904) 评论(0) 推荐(0) 编辑
摘要: 背景 远程办公场景下,本地windos环境与linux服务器之间文件共享的场景环境搭建。 需求 本人希望可以在windows环境下,在某一种工具下改变的代码逻辑可以同步到对应的linux服务器上,因为在实际的工作环境中本人使用的事vscode来调试远在linux服务器上的代码的。这次居家办公,没有v 阅读全文
posted @ 2021-08-09 15:37 first_semon 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 背景: 操作dpdk的过程肯定会设计到网卡的绑定。本人最常用的网卡绑定方式是uio模式,即运行在用户空间的I/O技术。Linux系统中一般的驱动设备都是运行在内核空间,而在用户空间用应用程序调用即可。但是这种方式与kernel密切相关,无法做到dpdk打包与系统内核无关化。故而谋求最安全的vfio方 阅读全文
posted @ 2021-06-18 16:16 first_semon 阅读(924) 评论(0) 推荐(0) 编辑
摘要: 需求背景 临近项目结束,收尾工作还是给了自己,程工嫌弃之前源码安装的方式存在风险,自己就给自己找了一个活儿干。我提出两种打包方式:linux一种是打包成bin格式的软件包,另一种是rpm格式的软件包,由于软件包的生态环境问题,最后选择了rpm格式的软件包。主要是目标系统是centos维护比较方便。 阅读全文
posted @ 2021-06-08 09:35 first_semon 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 背景 为了增强web服务器的安全性,减轻服务器的压力,给服务器增加一道安全屏障,减少服务器受到"不必要"的攻击。 需求 因为原有的服务器使用nginx做web服务器(至于为什么使用nginx?以及nginx的优势在哪里?我在这里就不过多的赘述了。想了解的自行学习相关知识),所以要想给服务器增加一道安 阅读全文
posted @ 2021-04-13 11:35 first_semon 阅读(1899) 评论(5) 推荐(0) 编辑
摘要: 背景: 在项目压力测试期间出现单线程的redis操作读写有时对线程资源的竞争情况,导致在获取不到数据,或者获取数据的时候出现数据丢失的情况。 需求: 在大并发的时候,可以有效的对redis缓存进行操作,不会因为单线程的的资源竞争导致无效的操作。 技术实现: 既然知道是在并发的情况下,因为redis资 阅读全文
posted @ 2021-01-04 11:32 first_semon 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 简单的git服务器搭建操作: 安装git在服务器上 下载git客户端在windos 服务器端操作: 查看要创建的用户 id username 创建用户: useradd username 设置用户密码:passwd username 服务器端创建仓库然后把仓库的owner修改为username 以/ 阅读全文
posted @ 2020-12-31 11:19 first_semon 阅读(3744) 评论(0) 推荐(1) 编辑
摘要: 背景 在启动dpdk多进程实例的时候,发现两个进程相互切换启动时,有一个进程必报无法申请足够的连续的大页数,导致dpdk主进程启动失败。 需求: 解决dpdk无法申请足够的连续大页数,让两个进程切换时都可以正常启动。 错误如下: 1 EAL: Detected 32 lcore(s) 2 EAL: 阅读全文
posted @ 2020-12-25 15:30 first_semon 阅读(2018) 评论(0) 推荐(0) 编辑
摘要: 背景: 文件对比工具 需求: 不希望对比文件时打开的默认编码方式不是utf-8格式 操作指南: 打开一个会话如下图: 双击打开后注意下图标红的地方,点击小人图标 点击图标后图案出下面窗口 注意在第四部的时候选择整个会话在确认即可改变默认打开的编码格式 阅读全文
posted @ 2020-12-24 12:36 first_semon 阅读(439) 评论(0) 推荐(0) 编辑
摘要: 为了突破自己,接受了服务器环境搭建的任务,一个拿着一份工资却干着三份职业的工作。 环境需求: 有两台服务器连接在交换机上。暂且较AServer、BServer。AServer通过PICA8交换机与代理服务器相连接(有tcp连接),BServer通过交换机与代理服务器没有连接。现在需要将客户端发送给A 阅读全文
posted @ 2020-11-09 15:38 first_semon 阅读(959) 评论(0) 推荐(0) 编辑
摘要: 刚刚终于想明白了关于TCP分片后,为什么抓包是从来没看到过IP分片,而在pingICMP报文的时候,很容易就出现IP分片。 之前考虑问题只考虑了一方面:作为接收方,TCP的mss字段和ip的MTU字段,在TCP连接的前两次握手时,沟通好了,以小的值为最大传输字节。(一般情况下MTU=40+MSS。具 阅读全文
posted @ 2020-08-20 10:33 first_semon 阅读(203) 评论(0) 推荐(0) 编辑
摘要: snort 安装步骤1:预装daq(数据采集器)。依赖flex、bison、libpcap 本次安装daq-2.0.7 apt-get install flex、bison、libpcap 下载daq安装包。 tar -zxvf daq-2.0.7.tar.gz cd daq-2.0.7 ./con 阅读全文
posted @ 2020-07-27 12:14 first_semon 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 此图时基于snort-2.9.16原代码绘制,希望对各位有所帮助 注意:看不清的你需要下载再来放大 阅读全文
posted @ 2020-07-27 12:09 first_semon 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 前两天使用docker的日志分割,今天想起来看看docker容器中的日志有没有分割出来到宿主机上, 不看不知道,一看吓一跳,有分割日志,但是好像少了昨天的日志,看了以下容器中是否是今天的日期, 一看容器中是今天的日期,但是在0点的时候昨天的日志没有分出来,因为它还在容器中,一开始以为脚本写错了, 后 阅读全文
posted @ 2020-06-24 17:50 first_semon 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 最进项目中使用到了socketproc通信,但是这样有一点不是很好,必须单独启动一个进程来执行代码中的shell命令,后面想在nginx+lua的环境下使用openresty中的lua-resty-shell,但是在后续阅读源码说明的时候发现依赖关系过于复杂,会导致引入的openresty模块越来越 阅读全文
posted @ 2020-06-23 18:22 first_semon 阅读(2411) 评论(0) 推荐(0) 编辑
摘要: 之前写过一篇在宿主机上的nginx日志分割,现在应为项目运行在docker容器里面,但是容器中并不像宿主机那样安装了crontab定时任务,虽然可以将crontab打包进镜像,但是应为项目没有打包进去,所以只能只能选择其他的解决方案了。 下面我来说明一下这边的解决方案: 在创建好镜像以后,还需要通过 阅读全文
posted @ 2020-06-22 15:51 first_semon 阅读(3015) 评论(1) 推荐(0) 编辑
摘要: #--version 1.0 FROM ubuntu:16.04 MAINTAINER Semon ENV REFRESHED_AT 2020-06-16 RUN apt-get -qq update #该指令运行时会刷新APT报的缓存,用来确保我们使用的安装的每个软件包都更新到最新版本 RUN a 阅读全文
posted @ 2020-06-16 18:06 first_semon 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 做软件开发的人都知道:接触真正底层系统驱动的的机会很少(做网络驱动的除外哦),上周和同事一起在一块物理机的办卡上安装centerOS6.5(至于为啥安装6.5版本的,只能说厂商要求的),遇到了一个持续好几天的问题:拔掉U盘后,物理机启动不了。博友们可能会说,bootleader安装在了U盘上,改一下 阅读全文
posted @ 2020-06-03 10:31 first_semon 阅读(862) 评论(0) 推荐(0) 编辑
摘要: curl http://www.baidu.com :不带有有任何参数,表示发出GET请求 -A 指定客户端的用户代理表头即User-Agent。Curl的默认用户代理字符串时 curl / [verison] -b 向服务器发送cookie。curl –b‘foo=bar; foo1=bar1’ 阅读全文
posted @ 2020-06-03 09:52 first_semon 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 1:docker 安装时 linux内核版本过低问题 使用uname -a 可以查看linux内核的版本号,例如ubuntu会输出类似的内容: root@ubuntu:~# uname -a Linux ubuntu 4.4.0-142-generic #168-Ubuntu SMP Wed Jan 阅读全文
posted @ 2020-05-28 08:23 first_semon 阅读(208) 评论(0) 推荐(0) 编辑
摘要: --功能描述 -- 实现基本的时间服务,具体功能是 --1:只支持GET和POST方法 --2:只支持HTTP 1.1/2协议 --3:只允许某些用户访问 --4:GET方法获取当前时间,以HTTP时间格式输出 --5:POST方法在请求体力传入时间戳,服务器转换为http时间格式 --6:可以使用 阅读全文
posted @ 2020-05-27 09:53 first_semon 阅读(734) 评论(0) 推荐(0) 编辑
摘要: 在编写shell脚本的时候,难免会使用shell脚本的字符串拼接,不经常使用的话真的会忘记。本人写着一篇的目的也就是记录以下,到时候回过头来不用找的太麻烦。 首先变量与变量拼接 str1="123" str2="456" echo $str1$str2 结果输出123456 其次字符串与变量拼接 s 阅读全文
posted @ 2020-05-26 17:26 first_semon 阅读(10359) 评论(0) 推荐(0) 编辑
摘要: 首先是日志定时分割脚本 #@/bin/sh dat=`date +"%Y%m%d" ` mon=`date +"%Y%m"` echo $dat mondir="/usr/openResty/logs/$mon" /bin/echo $mondir #>> /usr/openRest/hello.i 阅读全文
posted @ 2020-05-25 16:12 first_semon 阅读(668) 评论(0) 推荐(0) 编辑
摘要: 今天写了一个nginx日志分割的简单脚本,发现手动执行脚本可以将日志成功分割,但是使用crontab定时任务就会执行失败。 然后自己写了一个只有一句话的shell脚本,发现一样的问题,然后就开始根据问题找原因: 1:是不是crontab的权限不对。然后使用了 ls /etc/init.d/cront 阅读全文
posted @ 2020-05-25 10:23 first_semon 阅读(1289) 评论(0) 推荐(0) 编辑
摘要: 由于本人因为项目需要,所以学习了openresty,总体感觉下来:nginx给我打开了新的世界大门。使用openresty搭建web服务是真的方便,弄个配置,加两个location基本就可以搭建一个简单的web服务器(见笑了!因为本人刚接触,有说的不恰当的地方还请见谅) 下面来重点说一下ngx.lo 阅读全文
posted @ 2020-05-22 17:26 first_semon 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 此篇博客仅仅是为了记录nginx中的变量即含义,因为太多了,刚接触真的既不俩那么多变量是什么意思。暂时mark以下: nginx-lua 部分api说明 ngx.arg 指令参数,如跟在content_by_lua_file后面的参数 ngx.var 变量,ngx.var.VARIABLE引用某个变 阅读全文
posted @ 2020-05-21 15:03 first_semon 阅读(975) 评论(0) 推荐(0) 编辑
摘要: 今天公司电路修改,网络断了一会儿,吃完午饭回来发现xshell一直连接失败,看了以下,ip地址不对了,能连接上就出大问题了。ifconfig 了linux的IP地址,发现跟之前显示出来的不太一样:网卡字段变成了enp0s3了,以下子我还以为电脑被黑客攻击了。 查了资料后发现,ubuntu高版本以后好 阅读全文
posted @ 2020-05-21 14:55 first_semon 阅读(648) 评论(0) 推荐(0) 编辑
摘要: (1)openresty的安装参考上一篇博客https://www.cnblogs.com/first-semon/p/12858959.html openresty的安装路径默认实在/usr/local/openresty下 (2)在/usr/local/openresty/nginx/conf/ 阅读全文
posted @ 2020-05-11 17:44 first_semon 阅读(721) 评论(0) 推荐(0) 编辑
摘要: 在使用mapx控件时,需要从本地导入小区基站数据,并在地图中显示出来,另外在窗口中将导入的小区数据写入到tablewidget中。基本就是这么个流程。 首先是mapx自定义工具消息的响应:当点击地图图元坐标时,弹出对话框,显示小区的名字 ToolUsed 事件在用户使用地图上的定制工具时调用。此过程 阅读全文
posted @ 2020-05-11 17:25 first_semon 阅读(1849) 评论(0) 推荐(0) 编辑
摘要: 傻瓜式的跟着教程一步步安装: 准备条件: 1:linux 操作系统。 2:make,gcc,gdb等一堆工具的安装 3:openresty依赖的安装。apt-get install libreadline-dev libpcre3-dev libssl-dev perl 4:wget https:/ 阅读全文
posted @ 2020-05-09 17:23 first_semon 阅读(918) 评论(0) 推荐(0) 编辑
摘要: 参考云风大神的例子,对其进行了改进,支持多次提交单个日程,改变时间后,提前日程触发时间。 方案一主要思路是:在repeat循环中每次都会计算一个假的当前时间。通过假的当前时间计算出日程的下次触发时间,然后计算下次日程的触发时间和假的当前时间的差值来决定线程挂起的时长。如何改变假的当前时间是通过cha 阅读全文
posted @ 2019-03-29 11:55 first_semon 阅读(636) 评论(0) 推荐(0) 编辑
摘要: 工作需要看一下websocket的东西,然后使用autobahn三方,但是使用pip install安装怎么也安装不上,问了很多网站,都说的升级pip,可是每一个鸡巴管用的,不过还是谢谢他们,现在我只想说:网上的东西真乱。下面来说一下我的解决方案, 将python 2.7.5降到2.7.14一切ok 阅读全文
posted @ 2018-07-12 16:20 first_semon 阅读(274) 评论(0) 推荐(0) 编辑
摘要: #配置,禁止进,允许出,允许回环网卡 iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -i lo -j ACCEPT #允许ping,不允许删了就行 iptables -A INPUT -p icmp -j ACCEPT #允许ssh iptables -A INPUT -p tcp -m tcp --dpor... 阅读全文
posted @ 2018-06-21 13:25 first_semon 阅读(132) 评论(0) 推荐(0) 编辑
摘要: Socket描述符选项[SOL_SOCKET] #include <sys/socket.h> int setsockopt( int socket, int level, int option_name, const void *option_value, size_t option_len); 阅读全文
posted @ 2018-06-14 17:30 first_semon 阅读(785) 评论(0) 推荐(0) 编辑
摘要: 今天好奇__init__和__new__的区别是什么? 我了解到: __init__:只是单纯的返回一个类对象的实例,是在__new__之后调用的 __new__:创建一个类对象实例, 运行结果如下: 可以看出使用__new__创建的对象是同一个对象,是单例。如否要验证__init__和__new_ 阅读全文
posted @ 2018-06-12 15:26 first_semon 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 1:什么是存储过程:存储过程是在大型数据库系统中,一组完成特定功能的SQL语句集合,在存储过程中,经过第一次编译后,再次调用不需要再次编译,用户通过指定存储过程的名字并给参数来执行它。存储过程是数据库中一个重要的对象。数据库存储的基本语法:DELIMITER //CREATE DEFINER='ro 阅读全文
posted @ 2018-06-06 16:21 first_semon 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 什么会观察者模式?观察者模式就是订阅-推送模式。是为了解耦合才会被利用起来的设计模式。 经典的就是boss 前台和员工之间的故事。一天A员工在看电影,B员工在看动漫,但是两人担心boss来了,自己没及时关掉页面,被老板发现,就委托前台的小姐姐如果老板来了通知一下他们。 对于A和B来说就出于观察者的位 阅读全文
posted @ 2018-05-31 21:06 first_semon 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 准备条件:1>确保所安装的环境能够访问网络,2>环境中拥有gcc\g++、make、tar等工具3>以root身份登录安装过程:1>输入命令:wget http://download.redis.io/releases/redis-4.0.9.tar.gz2>解压下载的压缩包到当前目录下:tar z 阅读全文
posted @ 2018-05-24 17:09 first_semon 阅读(145) 评论(0) 推荐(0) 编辑