自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉搜索树(BST)

一个完整的树: 一个树的高度是h, 如果它的叶子节点的高度是h 或者h-1,那它就是完整的树.BST 是一个递归的结构. 或是一个空树, 或是一个节点, 它有key, 有左子树和右子树.BST结合了链表插的灵活 和 有序数组检索的效率. 它需要检索的节点只和它的高度有关.BST, 同样的数据集, 如果插入的顺序不同, 树的形状可能完全不同。完美的平衡树: 所有节点的 左边子树和右边子树的高度是一样的。平衡树, 左右子树的高度, 最多相差1, 左右子树是平衡的。大量的插入后, 不太可能出现跛脚的树。

2023-02-23 11:49:40 283 1

原创 tar 的使用

tar 的使用, 各种参数解释

2022-12-13 14:57:39 162

原创 linux 启动加载文件

linux 启动加载文件; 在linux 运行当中. 动态加载

2022-12-12 17:23:18 384

原创 /etc/sudoers配置文件的解释

/etc/sudoers配置文件的解释

2022-12-09 17:09:49 286

原创 windows 下, 查询端口占用

端口占用, 终止程序, windows

2022-12-06 15:33:02 76

原创 7. java 终止线程

Java 提供了一种协作的机制,这样 一个线程就能 终止另一个线程 正在做的事。 7.1. Task Cancellation 用户请求 或者 时间到了 都会 产生 终止任务的需求 7.1.1. Interruption 使用interruption 来取消任务 7.1.2. Interruption Policies 中断策略 是 线程在 接收到 中断请求 所做出的应对 7.1....

2022-02-08 16:00:37 280

原创 Linux 虚拟化 hypervisors

虚拟化虚拟化 是指 一个中间介质,它把复杂的层 转换成 简单的接口,这些接口 可以被多个用户使用。有点像虚拟 内存。虚拟化 常见的目的:创建 多个隔离的环境,以便多个系统运行 从而避免冲突。简单介绍 虚拟机。我们将 仔细地 探索 容器。虚拟机在虚拟机模式中,你利用软件 创建了一台 全新的机器(处理器,内存,IO接口等;在上面运行 整个操作系统,包括内核。这种叫系统虚拟器。你能完全用软件 创建虚拟机。我们将体验 术语和我们的体验 是如何相关的。在VirtualBox,我们可以使用GUI

2021-10-18 13:42:14 390

原创 关闭你的系统

shutdown立刻关掉系统:# shutdown -h now重启系统:# shutdown -r now关机的之前,不要断电。在n 分钟之后,关闭系统# shutdown -h +n如果你设置了一个关机时间,shutdown 会创建/etc/nologin,并且系统就会只允许 超级用户登录。当关闭时间到了,shutdown 会告诉 systemd,然后 systemd 会启动 一个 关闭单元。关闭步骤:1.init 要求所有进程 完全关闭;2.如果进程没反应,用TERM 杀;3

2021-10-18 10:42:23 277

原创 Linux- sed xargs expr exec

sed 常用于用正则表达式 来替换一些文本:$ sed 's/exp/text/'把每行的 冒号 替换成 %,且 标准输出显示:$ sed 's/:/%/' /etc/passwd加 g (global) 表示替换掉 所有的 冒号:$ sed 's/:/%/' /etc/passwd删除 3到6行:$ sed 3,6d /etc/passwd3,6 是地址,d是删除命令。s 和 d是sed最常见的应用。可以把正则表达式 作为地址:$ sed '/exp/d'上面这些例子,sed 都是往

2021-10-15 11:49:23 235

原创 Linux-系统 5 运行级别

传统系统 5 初始化。在 Linux 系统中,会有一些进程在运行。机器的这种状态 被称作运行级别,由0-6代表。查看自己系统的 运行级别:时间是 运行级别 被建立的时间运行级别 常见的用途是 区分:系统 启动,关闭,单用户模式 和控制台状态。但是 运行级别 正在成为 过去。systemd 更喜欢 目标单元。...

2021-10-15 11:01:27 274

原创 Linux-systemd 的协助组件

systemd 除了启动 和 服务管理,还包含其他功能。在 /lib/systemd 下的程序 和这些功能相关。几个专门的 系统服务:1.udevd: systemd 的一部分2.journald: 一个日志服务3.resoved: 一个名字服务,为DNS缓存。所有这些服务 都以 systemd- 开头,比如:systemd-udevd在这当中,有些服务只是包了一层皮。他们实际调用了 标准系统工具。比如:systemd-fsck。我们可以通过 用户手册 了解 /lib/systemd 下的程序

2021-10-15 10:18:35 113

原创 Linux-systemd 资源 并发启动 和 按需 启动

systemd 能延迟 一个单元的启动 直到它被需要。 这个操作 是这样的:1.你创建了一个 systemd 单元A,一个系统服务;2.你指定了一个系统资源,像是:网络端口/socket,文件 或者 设备,单元A 用这个来提供 服务;3.你创建了另一个 systemd 单元,单元R,来表示那个 资源。这些 资源单元 被分类成 各种类型:socket 单元,路径单元 和 设备单元。4.你定义了 单元A 和 单元R 的关系。一般来说,这个关系是 隐含的 基于单元的名字,但也可以是 直白的。 建好...

2021-10-14 17:15:48 540

原创 Linux-临时文件 管理

mktemp 它的参数 是模板。不是所有的 unix 版本 都有 mktemp。如果没有,建议 安装 GNU coreUtils package。在异常情况下,如何保证删除临时文件:必须有 exit,不然程序会继续执行。mktemp 也可以不要参数。不要参数的话,就是以tmp 开头。...

2021-10-13 14:35:56 104

原创 Linux - systemd 依赖

如果 关于依赖的规则 如果太严格,会破坏 性能和稳定性。比如,如果 设置 命令行在数据库 启动以后 才能启动。这样的话,如果数据库启动失败了 且严格按照规则,命令行都无法出来。Unix启动时的 任务 高度容错;任务常会失败 但不会给 标准服务 造成 严重 的问题。为满足 灵活和容错,systemd 提供了多种依赖类型:Requires: 严格依赖。如果被依赖的 单元 启动失败,依赖它 的单元也不会被启动。Wants:在启动一个 单元的时候,systemd 会去启动 它的 wants 单元。但是不管

2021-10-13 11:02:50 3699

原创 Linux 命令替代

shell 可以 重定向命令的标准输出 到 shell自己的命令行。shell 还可以把命令的 输出 存储到 shell 变量,用 $()。例子:sed 's/.*://':去除冒号和冒号前面的东西。$()比较容易出错。还有种 语法 是 (``);$()是新的。...

2021-10-11 17:04:04 170

原创 Linux-if 条件 case for while

以文件的属性 做if条件。比如,常规文件:[ -f file ]测试的 条件 分为三种:字符串,文件和计算。下面是操作手册 文档的一部分:if 条件 文件:-e:如果文件存在,返回true。-s:如果文件不为空,返回true。测试文件的类型:文件权限:文件1 比 文件2新:[ file1 -nt file2 ]找 硬链接, 用-ef比较两个文件。if 字符串 条件:= != -z:为空-n:不为空if 数学 相关条件=只比字符串;-eq 比数字...

2021-10-11 14:09:36 162

原创 Linux- Systemd 对进程 跟踪和同步

systemd 有进程的信息,能控制 它启动的进程。为管理启动的单元,systemd 使用了cgroups,一个Linux 内核的特性,用来 跟踪进程树形结构。cgroup 也简化了单元文件。服务单元文件中的 type 属性,指出了 启动行为。有两种 行为:simple:这种服务进程 不会产生 新的服务进程,也不会终止;它一直 保持 那个主 服务进程。fork: 会产生 新的进程,以前那个会 死掉。在终止的时候,服务 会就绪。type=simple 没有 考虑 启动完成 需要的时间,所以 依赖 这个

2021-10-11 11:10:25 212

原创 Linux-Shell 条件

#!/bin/shif[$1=hi];then echo 'the first argument is "hi"'else echo -n 'the first argument is not "hi"--' echo It was $1 if then else fi 是关键字;[是一个程序,另一个名字是test。1.执行 [ 后的语句。2.如果 结果码 是0,就执行 then 后的语句3.如果 结果码 不是0,就执行 else 后的语句4.条件语句 在 ...

2021-10-09 16:28:32 154

原创 Linux-退出码 exit code

当unix 程序完成的时候,会产生个退出码,称作 错误码,给启动这个程序的 父进程。没问题的时候,这个码是0,否则是其他值(并不绝对是这样)。要立刻记录下退出码,因为它会被 下一个 执行成功命令 覆盖。可以用 exit 1 退出 当前程序,会把1传给 父进程。当然也可以传其他值。有些程序的 退出码 用1 表示某种结果 而不是发生的错误。比如 grep。...

2021-10-09 15:25:38 3068

原创 Linux systemd 的操作

我们主要是通过 systemctl 和 systemd 做交互,我们可以打开和关掉服务,展示状态 和 重新加载 配置。systemctl list-units 是列出正在运行的单元输出的格式:--full 显示 单元的全称; --all 显示所有状态(active or inactive)的单元查状态的 systemctl 命令是很有用的:systemctl status 不仅显示状态,也显示日志。systemctl status 对 其他的单元类型(比如: mount 和 target) 也包

2021-10-09 14:33:22 527

原创 Linux - systemd 配置

systemd 的配置文件主要在 /lib/systemd/system /usr/lib/systemd/system 和 /etc/systemd/system。避免修改 系统单元(/usr/lib/systemd 和 /lib/systemd) 下的配置,因为这部分由系统自身 维护。可以修改 /etc 下的配置。可以通过 systemctl -p UnitPath show 查看 系统单元配置的路径。可以通过以下命令查看 配置路径 和 单元路径pkg-config systemd --var

2021-10-08 17:31:29 606

原创 Linux 启动 和 单元依赖图

当启动一个系统,你正激活 一个 默认的单元,一般是一个目标单元 被称作 default.target。这个 target unit 包含了很多 服务单元和安装单元 作为依赖。单元依赖 是 图型结构。systemd-analyze dot 可以查看依赖。依赖非常多,但是有许多方法来过滤单元。当你激活顶部的 单元,下面的所有单元 都要激活。在很多系统中,default.target 是一个链接,这个链接指向 其他 高级 target unit,比如指向 代表用户接口启动(user interface sta

2021-09-30 11:01:33 103

原创 Linux 特殊变量

特殊变量特殊变量 如何 在脚本中 和 命令交互。单个参数: $1 $2$1 $2 ... $n 是脚本参数的值shift 往右移动一个参数的指针

2021-09-29 17:11:37 94

原创 Linux 文本中的单引号

如何把单引号 传到文本里面?1.用斜杆 转义符2.可以放到双引号里如果要保证没有 扩展,用 '\''

2021-09-29 16:28:23 278

原创 Linux 单引号和双引号

文本当你使用引号,你是想建个 字符串,这个字符串会 原样 传到命令行。用 $ * 和 ; 时,都可能会用到引号。当shell 运行 一个命令 会发生:1.运行命令前,这个shell 会寻找变量和globes,然后执行替代。2.shell 把替代的结果 传给了 命令。比如:$ grep r.*t /etc/passwd如果 当前目录下,有 r.input 这样的文件,命令就会变成:$ grep r.input /etc/passwd单引号$ grep 'r.*t' /etc/passw

2021-09-29 16:00:03 298

原创 Linux shell 引用 和 语法

什么时候改用 引号 和 其他符号。 打印 $100:需要加上 单引号shell 脚本 的各种 限制shell 能重定向 输出,功能强大,但也有限制。shell 脚本 能简化和自动化 任务,这些任务也可以在shell 命令行 执行。其他复杂任务,可以用 python 或者 编译语言 C。保持 shell 脚本的短小。...

2021-09-29 11:42:41 48

原创 Linux 单元 和 单元类型

systemd 不仅仅 操作 进程 和 服务;它能够 管理文件系统的安装,监控网络连接的请求,运行定时器等。每种能力 称作 一个单元类型;每个具体功能称作 一个单元。每个单元 有他自己的配置文件。在启动期间 执行的 最重要的 单元类型:1.service unit,控制 服务后台进程2.target units,通过分组的方式 控制其他的 单元3.socket units,代表进来的网络连接 请求 的 位置4.mount units,代表文件系统 的添加...

2021-09-29 10:25:57 182

原创 Linux netcat 和 端口扫描

netcat 能连接 远程的 udp/tcp 端口,指定一个本地端口,监听端口,扫描端口,重定向 标准I/O from or to 网络连接。对一个端口 打开 TCP 连接:$ netcat host port监听 某个端口:$ netcat -l port_number等待 连接;连接建立后,打印连接过来的 输出;发送 标准输入。端口扫描nmap 可以 给出 当前机器 提供了哪些服务。nmap 可以扫描一台机器的 端口 或者 网络上其他机器的端口。nmap 可以帮助 查看你的 防火墙。

2021-09-28 16:52:53 300

原创 Linux tcpdump

tcpdump 把网卡 设置成 promiscuous 模式,并记录任何 通过的包。sudo tcpdump -i xxx -ntcpdump 认识 各个网络层 的各种协议( ARP, RARP, ICMP, TCP, UDP, IP, IPv6)。比如:TCP 的包# tcpdump tcpweb 和 UDP 的包:tcpdump udp or port 80 or port 443推荐一个有界面的 抓包 工具:wireshark原始类型操作符or and !。可以..

2021-09-28 16:16:44 85

原创 Linux lsof 和 诊断工具

lsof 不仅能追踪 被打开的文件,还能显示 使用各种端口的程序。lsof -i普通用户运行lsof -i, 会显示该用户的进程。如果用 root 是显示所有的进程。使用 lsof -i -n 直接显示IP使用 sudo lsof -i -n -P 直接显示端口通过 协议 和端口 来过滤查看某个端口的进程# lsof -i:port# lsof -iprotocol@host:port端口 443 的 tcp 连接。# lsof -iTCP:443端口可以用 /etc/s..

2021-09-28 15:31:18 105

原创 Linux - 确认 init

看init 用户手册 可以 确认 init。1. /usr/lib/systemd /etc/systemd 表示 使用的是 systmd;2. /etc/init 下面的 .conf 文件,表示使用的 Upstart;3. /etc/inittab 表示使用的是 system V。systemdsystemd 除了处理 常规的启动流程,它还包含了大量标准 Unix 服务的功能,比如 cron 和 inetd。systemd 有先进的 服务管理功能。systemd 能 跟踪 个体服务守护.

2021-09-28 11:23:33 80

原创 Linux 网络连接服务器:inetd/xinetd

inetd 标准化网络 端口访问。inetd 读自己的配置文件,监听上面的端口。当一个新的网络连接进来,inetd将一个新的进程跟这个连接连上。有个新版本 xinetd,不过现在几乎没用了。TCP WRAPPER,它有个白名单和黑名单。现在比较少用了。...

2021-09-27 17:32:32 158

原创 Linux fail2ban 以及ssh 客户端

如果我们开启了 ssh,并把它 暴露在 internet上,我们会遭到不断的攻击。fail2ban 监控日志,发现攻击,便利用iptable 禁止了攻击源IP。过些时候,再自动恢复。

2021-09-27 15:29:36 87

原创 Linux sshd 服务器

要运行 sshd 需要 一个配置文件 和 主机 keys。配置文件 可以在 /etc/ssh 找到。sshd_config:# 后面代表默认值。PermitRootLogin:允许root 远程登录创建 host keyshost keys 对,公钥 有 .pub,私钥没有后缀。RSA DSA :openssh 的 ssh-keygen 创建 keys:ssh_known_host 用来存放 其他主机的 公钥。...

2021-09-27 14:35:44 45

原创 Linux- user space 如何 启动

initinit 是用户空间 程序,它在 /sbin 目录下;它负责启动和关闭 系统的 重要程序。·systemd 是 init 的标准实现;它是如何工作的?怎样和它交互?system V 也是 init 程序,常存在于老版本中。还有些 init 的不同实现 在嵌入式的 系统里出现。以后 init 的各种版本 都是来处理 system V init 短处。system V init 通过 脚本 顺序启动 服务,这有点过于简单了。这种 策略 导致了系统管理 和 新能方面的问题:1.两

2021-09-27 11:38:23 281

原创 Linux 网络服务器

网络服务器 就像 后台守护程序, 如 cron, 除了 他们是通过网络的端口 交互。syslogd 可以 接收 UDP 的数据包(在端口514)网络服务器的共性 是 多进程。进程 监听 端口。 当收到一个连接请求后,启动一个新进程来处理 这个连接请求。secure shell单一的 secure shell server。最常见的网络 服务应用 之一,SSH 是远程 访问 Unix 服务器的标准。Openssh 的 客户端 是 ssh,服务端是 sshd。ssh 会做:编码你的 密码 和

2021-09-26 17:16:03 190

原创 Linux curl

http 请求 是 先 建立TCP连接(在传输层)。建立好连接以后,客户端发送 header,应用层开始工作。curl 发到服务器端 的内容。前面的16进制 数据 表示了 已传输多少。首先是 GET 指令,然后其他 最后是空行。然后是服务器 那边过来的, 首先过来的是头。《=是 debug out,0000是偏移。这有个重要的点。服务器 发来 分 recv header 和 recv data,但 curl怎么取, 操作系统怎么处理 或者 网络怎么接收 却不会区分他们。区别只存在于 用户空间 层面的

2021-09-26 15:23:19 70

原创 Linux 用 GRUB 命令行 来找设备和分区

GRUB 有它自己 找设备的策略。第一个 被找到的 硬盘 叫 hd0,随后的叫 hd1 等等。设备的名字会改变,但是 GRUB 可以根据UUID 找到内核所在的位置。列出设备在 boot 菜单中,点击C 进入 GRUB 命令行,我们就能体验 GRUB 访问 设备。键入 ls。显示器会 显示出 GRUB 认识的 设备。这有一个 磁盘设备(hd0), 然后有一个分区(hd0, msdos1)。如果 这有swap partition 也会被显示出来。msdos 表示 磁盘包含了..

2021-09-26 11:30:50 7741

原创 Linux GRUB

GRUB 意思是 Grand Unified Boot Loader。我们由更新的 GRUB2 和 以前的 GRUB Legacy。GRUB 最重要的 一个功能是 文件系统 查找,这样我们才能够选择 内核镜像 和 配置。通过观察 菜单,我们可以学到很多。当 BIOS 画面出现时,按住 shift 或者 esc 会弹出这个 菜单。查看本机 boot loader。1.重启 Linux 系统2.按住shift 或者 esc3.再按 e 可以看到 boot loader configura.

2021-09-24 11:09:14 86

原创 Linux lsof 和 strace

跟踪程序的执行 和 系统调用我们如何判断一个 程序 为何失败。strace(system call trace) 和 ltrace(libirary trace) 可以查看一个程序要做什么。stracesystem call 是一个 被授权的 操作,由 用户空间进程 要求 内核 执行,如 从一个文件读数据。strace 会打印 一个进程的 所有系统调用。默认的话,strace 的输出 是给到 standard error。我们可以使用 -o save_file 放到文件里。或者使用 2&

2021-09-23 17:30:42 108

空空如也

空空如也

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

TA关注的人

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