Linux ulimit命令
ulimit 用于设置用户被限制使用的资源 ulimit -a 查看所有限制 ulimit -c 程序发生错误生成 core 文件的大小 ulimit -d 每个进程数据段的最大值 ulimit -e 默认进程调度优先级 ulimit -f 当前 shell 可创
ulimit 用于设置用户被限制使用的资源 ulimit -a 查看所有限制 ulimit -c 程序发生错误生成 core 文件的大小 ulimit -d 每个进程数据段的最大值 ulimit -e 默认进程调度优先级 ulimit -f 当前 shell 可创
查看网络连接 lsof -i 显示所有网络连接 lsof -i 6 lsof -iTCP lsof -i :22 lsof -i@192.168.1.1 lsof -i@192.168.1.1:22 lsof -i -sTCP:LISTEN 查看用户信息 lsof -u fancy lsof -u ^fancy lsof -t -u fancy 查看命令进程 lsof -p pid lsof -c stock lsof -t -c stock 返回pid 查看
最近看了深入理解Linux网络,里面写的测试单机百万个TCP连接还是很好玩的 于是想自己测试一下,我就用熟悉的 Go 来写,然后也记录一下我遇到的一
内核编译需要安装如下工具 apt install make apt install gcc apt install g++ apt install flex apt install bison apt install libelf-dev apt install libssl-dev apt install libncurses-dev apt install dwarves apt install zstd 环境变量不要设置中文
主命令 dis ip int brief dis arp all arp-proxy enable vlan 10 vlan batch 1 2 3 4 dis vlan 设置端口的vlan interface ethernet 0/0/1 port link-type access port default vlan 10 dis vlan dis port vlan 设置trunk port link-type trunk port trunk allow-pass vlan 10 20
总结 写计划总结呢,一方面给记录一下这一个月到底做了哪些,给自己一个交代。 另一方面呢,也确实需要给自己的学习过程做一个约束。我这个人喜欢玩的东
Url 是统一资源定位器,web 浏览器需要通过 Url 来向 web 服务器请求页面 Hex 编码 Url 只能使用 ascii 码字符集,所以大部分的非英文字符需要转化成有效的 ascii 字符格式 Url
最近准备把常用的密码学相关的一些算法都过一遍,先从最简单的 Hex 编码开始吧 在我自己学习的过程中,看过别人的文章,自己也看过源码,发现有些文章的介
事情的背景是这样的,最近在学习网络的时候遇到一个工具cain&abel,于是到网上去找。原作者的网站已经不运营了,所以只能找到一些网
事情的背景是这样的,最近给家里的树莓派配了外网访问的地址,以便在公司可以访问,写写自己的东西。 今天早上,ssh登录的时候突然登不上了,第一反
1. w 查看服务器当前被谁登录。 2. last 查看服务器曾经被谁登录过。 3. 查看 ~/.bash_history 文件 该文件记录了曾经执行过的命令。 4. iftop 查看网络状况。 5. lsof 该命令可以查看各种
IPv4协议 IP协议是TCP/IP协议中最核心的部分,所有TCP、UDP、ICMP等协议的数据都要通过IP协议封装过后才能传输。 这里我们先来
gitbook的使用 一直以来都是把文章写到博客里,但是博客有个缺点,就是分类没有那么清晰,找个相关的文章比较纠结。于是乎,想把以前的文章整
这篇文章作为 metasploit 渗透测试魔鬼训练营这本书的记录 有些方法一看就会,一学就懂,然后合上书就忘了,所以得记下来,方便查询 1.搜集信息 通过 dns 和 IP 地址挖
前提:自己的树莓派装的是ubuntu20.04server 有些问题树莓派官方的系统并没有问题,但是ubuntu就有问题 1.读取18b20温度
树莓派每次拔下来做开发后,时区总是紊乱 1.tzselect 2.cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
因为工作中用到双网卡上网的缘故,把相关知识理了一遍 主要是使用双网卡,一个上外网一个上内网 1.查看路由表 route print 永久路由: 网络地址 网络掩码 网关地址
工作职责: 全球密码学题目收集分类整理 CTF密码方向解题\出题 高校密码学方向技术培训 国密\商密算法安全研究 对公司软硬件产品加密算法安全分析 区块
之前一直使用百度自带的网址导航,但是最近发现不能添加类别目录了。所以想找个差不多的导航网址,一直没有找到。 要么是各种弹广告,要么是不能自己添
作为一个 Linux 爱好者,总归对网络安全又那么些兴趣吧,Kali 就是最好的工具吧。 说是初始用,其实之前已经多多少少玩过几次了,现在把遇到的问题记录下
Linux新手配置 还记得我上大学那会儿,装一个Linux系统还是一件比较复杂的事请。 先要下载镜像,然后刻到光盘里面,然后再用光盘安装。 最头疼
源码 go slice 的源码位于 go/src/runtime/slice.go 下 定义 slice 的定义如下 type slice struct { array unsafe.Pointer len int cap int } 其中包括一个指向内存实际存储空间的指针 array slice 的长度 len slice 的容量 cap 扩容 主要的扩容逻辑是
panic 向已经关闭的 chan 写数据 重复关闭 chan 阻塞 为初始化的 channel 值为 nil, 向未初始化的 chan 读写数据会导致 goroutine 永久阻塞 向已满的 chan 写,从空 chan 读 0值 读取已关闭的 chan,
进程与内存 进程占用的用户空间,划分成 5个不同的内存区域 代码段 数据段 BSS 段 堆 栈 size 命令可以查看一个可执行文件各个段的大小
1.prometheus 的安装官方教程已经讲得很详细了 https://grafana.com/ 2.先记录 ./prometheus –config.file=./prometheus.yml node_exporter 安装在需要监控的机子上 安装 grafane, data source 中选择 prometheus, 然后在官网的 dashboard 找到模板然后导入到自己的 dashboard 中 prometheus 服务端
1.docker 的官方教程已经讲得很详细了, 我这里就只做学习记录 https://docs.docker.com/ 2.安装就按照教程好了 3.一些命令 docker –version 查看当前 docker 版本 docker create 创建一个容器但是不运行它 docker rm 删除
前言 我决定这一节作为这个系列的最后一节了, 基本上把这些学会了应该能入门了 一些更深入的游戏开发, 就要靠你自己了 这一节就把碰撞检测讲一下 代码 这一
前言 sdl2 提供了快速旋转和翻转的功能, 这一节我们就来看看如何使用 代码 代码这边我把 texture 结构体单独拎出来放到一个文件里, 代码量多了之后就要注意工程管理
前言 动画就是显示一组图片来创造一个移动的错觉 在 SDL 中就是把 texture 中的不同部分, 一帧一帧的循环显示就可以了 代码 package main import ( "github.com/veandco/go-sdl2/img" "github.com/veandco/go-sdl2/sdl" ) type Texture struct { t *sdl.Texture } func (this *Texture) LoadFromFile(path string)
前言 上一节讲了颜色调制, 这一节我们讲透明度的转换 由于透明度的变化会使得两张图片的融合, 我们还需要设置容和标志 代码 package main import ( "github.com/veandco/go-sdl2/img" "github.com/veandco/go-sdl2/sdl" ) type Texture struct { t *sdl.Texture }
前言 我们可以使用颜色调制, 来动态地改变 texture 上渲染的图片的颜色 代码 package main import ( "github.com/veandco/go-sdl2/img" "github.com/veandco/go-sdl2/sdl" ) type Texture struct { *sdl.Texture } func (t *Texture) LoadFromFile(path string) bool { img, err := img.Load(path) if err != nil { panic(err) } t.Texture, err = Grender.CreateTextureFromSurface(img) if err != nil
前言 SDL2 的教程上说这一节叫 color keying, 实在不懂这是什么意思 百度了一下说是抠图, 我实在是对应不上这两个词 通俗的解释一下吧, 就是比如你有一张图, 你想把背景
前言 SDL2 说你有时候只想渲染窗口的一部分, 那么你可以使用 viewport 好了, 没啥好说的上代码 代码 package main import ( "github.com/veandco/go-sdl2/img" "github.com/veandco/go-sdl2/sdl" ) const ( W = 670 H = 620 ) func main() { sdl.Init(sdl.INIT_EVERYTHING) defer sdl.Quit() window, _ := sdl.CreateWindow("test", sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, W, H,
前言 SDL2 可以在渲染器 renderer 上直接画几何图, 下面我们就来试试吧, 很简单 代码 package main import ( "github.com/veandco/go-sdl2/sdl" ) const ( W = 670 H = 620 ) func main() { sdl.Init(sdl.INIT_EVERYTHING) defer sdl.Quit() window, _ := sdl.CreateWindow("test", sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, W, H, sdl.WINDOW_SHOWN) defer window.Destroy() renderer, _ := sdl.CreateRenderer(window, -1,
前言 SDL2 宣称加入了新的渲染技术, 就是基于硬件加速的 texture 渲染, 我也不知道这个 texture 指的是什么, 不妨猜一猜, 应该是纹理图片吧 我们这里不纠结 SDL 的具体技术啦
前言 现在我们已经可以在窗口里展示我们的图片了 由于图片的数量不多, 所以我们感觉不到渲染的速度, 但当你真正开发一款游戏的时候, 你会发现渲染未经处
前言 我们现在已经会显示图片了, 这一节我们来讲一下事件驱动 原理 SDL 事件包括了键盘输入, 鼠标输入, 手柄, 等等 SDL 会将所有发生的事件放到一个队列中去,
前言 上一节我们创建了一个窗口, 这一节我们将在窗口上显示一张图片 显示图片 package main import ( "github.com/veandco/go-sdl2/img" "github.com/veandco/go-sdl2/sdl" ) func main() { sdl.Init(sdl.INIT_EVERYTHING) defer sdl.Quit() window, _ := sdl.CreateWindow("test", sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, 670, 620, sdl.WINDOW_SHOWN) defer window.Destroy() surface, _ := window.GetSurface() defer surface.Free() surface.FillRect(nil, sdl.MapRGB(surface.Format, 0x0, 0x0, 0x0))
前言 一直以来 Go 语言都是作为服务器开发的优势语言, 但我一直想用 Go 来做游戏客户端, 市面上也没有特别好的引擎, 然后就像自己玩玩 我还是选择最纯粹的 SDL
读写分离 Go 在往 chan 里写数据的时候, 是没有办法判断该 chan 是否是关闭的, 此时必须要加上一个标志位, 在发送之前判断一下 正常情况下是可行的, 但是在压测的
go 单链表的实现 package fcbase import ( "fmt" ) type LNode struct { Data interface{} next *LNode } func NewLNode() *LNode { return &LNode{} } func CreateList(head *LNode, num int) { cur := head for i := 0; i < num; i++ { cur.next = NewLNode() cur.next.Data = i cur = cur.next } } func PrintList(head *LNode) { for cur := head.next; cur != nil; cur
最近重读 go语言圣经, 看到6.5节用 bit 数组来实现 set 这样的好处是一个 64 位的 word 值就能存 64 个值, 有效利用内存 但是也想到一些问题 文中的插入的实现是这
1. apt-get install libncurses5-dev Linux 的图形界面库, 编译内核的时候会用到 2. 在进行内核模块学习的时候, 在树莓派 /usr/src 下面没有源码树, 需要你自己安装 sudo apt install raspberrypi-kernel-headers
1. CPU 平均负载 1. 单位时间内, 活跃的进程数 活跃的进程是指处于可运行状态和不可中断状态的进程 可运行状态进程是指正在使用 cpu 和正在等待 cpu 的进程 不可中断
1. 简介 进程是资源管理的单位 线程是 cpu 调度的单位 内核中调度的是一个 task 的结构, 我们可以称之为任务 任务调度的目的主要是以下三点 尽量公平的调度所有任务
1. 树莓派安装 MySQL 安装 apt install mariadb-server-10.0 配置 mysql_secure_installation 登录 mysql -uroot -pxxxxxx 添加用户 create user 'fancy'@'localhost' identified by 'xxxxxx'; grant all on *.* to 'fancy'@'localhost' identified by 'xxxxxx'; 然后 fancy 用户就可以登录使用了 mysql -ufancy -pxxxxxx
1. svn 服务器安装( 我以下的命令皆在 root 权限下运行) Centos yum install subversion 树莓派 apt install subversion 成功安装后,即可查看版本 svnserve --version 2. 创建仓库 在用户 home 目录下创建一个文件夹作为 svn 仓
1. cpu 运算单元 负责计算,但不知道运算哪些数据,运算完不知道该存放再何处 数据单元 包括 cpu 内部缓存,寄存器组,空间小,速度快 控制单元 获取指令,根据指
标题1 标题2 标题3 标题4 标题5 标题6 排列1 排列2 排列3 引用1 引用排列1 引用排列2 引用排列3 引用2 引用3
1. 内存管理 调整内存数据段 brk 内存映射 mmap 2. 文件管理 打开 open 创建 creat 关闭 close 定位 lseek 读取 read 写入 write 3. 进程管理 创建进程 fork 运行新二进制文件 execve 等待子进程结束 waitpid 4. 网
之前用的 blog 主题是直接拿的别人的,风格虽然简洁,但不是我喜欢的配色 想自己改一下,发现主题框架太复杂,所以一直没有动手 最近发现了一个风格不错的,
计划任务就是定时去做某些事情 Linux提供两种计划任务 at 和 cron at 仅执行一次就结束 cron 循环执行 at Centos 默认开启了 atd 这个服务,其他系统可自行检查 (服务相
1.最简单的方法就是在命令后面加个 &,但这种方式有个弊端,就是该命令进程会与当前会话关联,如果当前会话退出,该进程也会退出 2.nohup [cmd] &am
Linux利用信号与进程进行通信 常用信号 1 SIGHUP 挂起进程 2 SIGINT 终止进程 3 SIGQUIT 停止进程 9 SIGKILL 无条件终止进程 15 SIGTERM 尽可能终止进程 17 SIGSTOP 无条件停止进程 18 SIGTSTP 停止进
日志记录了系统运行过程中的重要信息,当系统出现错误的时候,可以通过其来分析问题 Linux有自己的一套日志管理服务系统,即 rsyslog.se
1. 线程的主要成本 时间成本 线程切换的开销,主要是寄存器的保存与恢复 线程的调度 线程之间的同步与互斥 空间成本 线程执行状态 线程局部存储 线程的堆栈 这里
服务:常驻系统内存中的进程且可以提供一些系统和网络功能 现在最新的Linux系统都统一使用systemctl进行服务的管理 1.运行级别的分类 runlevel
1.添加用户 useradd 1.useradd -D 查看添加用户的默认值 GROUP=100 //新用户组ID HOME=/home //新用户home目录位于该目录下 INACTIVE=-1 //密码过期后不会被禁用 EXPIRE= //密码未设置过期日
1. cpu 上下文切换 cpu 通过通用寄存器和 pc 程序计数器来控制 task 从哪里运行 cpu 的上下文切换需要先把前一个 task 的寄存器的值保存下来, 再把下一个 task 的寄存器值加载
ssh是我们最常用的登录到远程服务器的方式,它使用非对称加密方式进行数据传输 1. 生成秘钥对 ssh-keygen -t rsa -C "717632318@qq.com" 生成的秘钥对存放在~/.ssh/下,id_
1.安装直接可以按照此教程 http://www.ansible.com.cn/ 我的机器一台树莓派,使用 将这行代码 deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main 加到 /etc/apt/sources.list 里,然后执行如下命令 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 sudo apt update sudo apt install ansible 还有两个云服务器
1. 进程列表 命令外加上括号会变成进程列表,当前shell会生成一个子shell来执行括号内的一组命令 echo $BASH_SUBSHELL是否是1可用
因为从大学的时候就开始使用Vim,所以到现在用的最顺手Idea的也就是Vim了,这篇文章就用来记录一下使用过程中的一些问题。 我们经常遇到把其
非详细教程,仅供查阅 修改本地 hosts,你会发现 github 快了很多 linux: /etc/hosts windows: C:\Windows\System32\drivers\etc\hosts linux: /etc/init.d/networking restart windows:ipconfig /flushdns 199.232.69.194 github.global-ssl.fastly.net 140.82.112.4 github.com git初始认证 ssh-keygen -t rsa -C "717632318@qq.com" 生成秘钥对 将.ssh/id_rs
sudo 是常用的 Linux 系统命令,允许普通用户执行 root 命令 此时普通用户就可以利用 sudo 来实现提权,使自己拥有 root 权限 利用awk命令 sudo awk ‘BEGIN {system("/bin/bash")}’ fancy@raspberrypi:~ $ sudo awk 'BEGIN {system("/bin/bash")}' [sudo] fancy 的密码
方法1 func del(data []int, d int) []int { i := 0 for _, v := range data { if v != d { data[i] = v i++ } } return data[:i] } 方法2 func del2(data []int, d int) []int { for i := 0; i < len(data); i++ { if data[i] == d { data = append(data[0:i], data[i+1:len(data)]...) i-- } } return data }
1. 食物营养
凯撒密码基本的理念就是位移取模 我们来加密一段字符串a,密钥key取500,这里的key可以取任意的整数, m作为取值的范围,不能小于可取值的范
升级Go到1.13 设置各类环境变量 export PATH=$PATH:~/go/bin export GOROOT=~/go export GOPATH=~/gopkg export GO111MODULE=on export GOBIN=~/gobin export GOCACHE=~/gocache export GOPROXY=https://goproxy.cn,direct 新建目录fancygo(根据项目需要自行修改目录名字) mkdir fancygo cd fancygo 创建 main.go 并写入代码
用户管理 1.添加用户 useradd fancy 2.添加组 groupadd fancy 3.设置密码 passwd fancy echo "xxxxx" | passwd fancy --stdin 5.加入sudo用户 sudo echo "%fancy ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 后台运行 nohup ./a.out& 遍历删除所有文件 find . -name .svn -exec
1. 头像
1. 头像
nmap是一款开源网络探测和安全审计工具 它被设计出来用于快速扫描大量的网络,也可用来扫描单独的主机