磁盘文件系统---inode
1、理解inode,首先要了解文件在硬盘上的储存规则。文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个”块”(block)。这种由多个扇区组成的”块”,是文件存取的最小单位。”块”的大小,最常见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在”块”中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为”索引节点”。
2、了解inode的内容inode包含文件的元信息,具体来说有以下内容:
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个:ctime指inode创建时间,mtime指文件内容上一次修改的时间,atime指文件最后一次访问的时间。
* 链接数,即有多少文件名指向这个inode
* 文件数据bloc ...
OpenLiteSpeed的常用重写规则和头部操作
1、http 301 to https .htaccess规则【@ to www视具体情况增减】1.1、虚拟主机—重写—重写规则RewriteCond %{HTTPS} off [OR]RewriteCond %{HTTP_HOST} !^www.RewriteRule ^(.*)$ https://www.%{SERVER_NAME}/$1 [L,R=301]
1.2、http to httpsRewriteEngine OnRewriteCond %{SERVER_PORT} 80RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R,L]
2、启用HSTS虚拟主机—资源集—static—头部操作
Strict-Transport-Security: max-age=31536000; includeSubDomains; preloadX-Content-Type-Options nosniffX-XSS-Protection 1;mo ...
nginx配置SSL双向认证【客户端认证】
SSL双向认证绝大多数SSL应用都以单向认证为主,即客户端只要信任服务端,就可以使用服务端的公钥加密后向服务端发起请求,由服务端的私钥解密之后获得请求数据。
如果这个过程反过来,让服务端信任客户端,服务端使用客户端的公钥加密之后将数据返回给客户端,其实也是可以做到的,原理和实现跟单向认证都差不多。
服务端信任客户端的操作往往也会伴随着客户端认证服务端的过程,所以让服务端信任客户端的SSL认证方式往往也被称为SSL双向认证,并且要配置SSL双向认证必须先开启服务端SSL,先配置客户端信任服务端。
Nginx的SSL双向认证配置第一步 开启https访问【服务端证书不一定必须是和客户端是同一CA签发的证书,所以可以用CA机构的正规可信证书】根据理论知识,我们必须先开启Nginx的SSL配置,即启用https。这个过程较为简单,目前比较好用的就是亚洲诚信这种免费一年的证书方案。申请免费证书的过程略过,直接贴启用https的配置:【let’s encrypt这个免费证书方案不推荐使用,因为苹果设备会强制进行OCSP校验但是let’s encrypt的OCSP服务在国内访问很慢或者是完全不能访问 ...
acme.sh入门教程
acme.sh域名鉴权方式由项目的wiki可知:acme.sh内置两种鉴权方式:http 和 dns 验证
http验证(webroot模式):有些地方会称为“文件验证”,验证方式是在你的网站根目录下放置一个文件, 来验证你的域名所有权。
dns验证(dnsapi模式):验证方式是去你域名解析接入商那里添加一条TXT的记录指向指定的值。
两种验证的使用方式
http验证一般比较便利,不需要你去acme里配置任何东西,所以一般都是使用这个去进行证书申请鉴权的。
⚠️ 大陆的网络环境下往往会报验证错误而无法成功申请证书。因为acme会使用cloudflare或google的dns服务器去验证解析是否生效,而google和cloudflare的dns服务在大陆往往不能访问会造成申请失败。但是这个功能在acme的执行过程中不是必要的,所以这时需要我们手动增加一个配置项来跳过public dns check即可。(官方文档中说的是In dns mode会有public dns check,但是我实际使用中http验证过程中也会有public dns check)
🌰 具体做法为:在.acm ...
Spring Boot单包小项目管理方案
1、文章背景17年左右刚参加工作时的时候接触的第一个项目是采用SSM开发的,那个时候公司项目一般的部署方式为打war包放到tomcat上,使用tomcat bin下的各种脚本去管理tomcat服务。后来主流开发渐渐的往的springboot靠拢,从之前的打war包上传tomcat中到打jar包直接运行。这中间我一直感觉很不方便,一直在找一种比较方便的单包小项目管理方案。
2、jar包管理1.0刚接触springboot时,网上的各种博文都是教你使用nohup去管理。
nohup java -jar xxx.jar -jvm parameter &
nohup:英文全称no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。 nohup 命令,在默认情况下(非重定向时),会输出一个名叫nohup.out 的文件到当前目录下,如果当前目录的nohup.out 文件不可写,输出重定向到$HOME/nohup.out 文件中。
这样有一个问题就是:你需要记住每个jar包的放置位置,每次操作都要先进到这个目录。并且需要额外的保护措施来避免服务 ...
谷歌黑语法
谷歌黑语法简介:原本是google的搜索引擎中使用快速查询的语法,后来发展成谷歌黑客 (Google hacking),也叫Google dorking,是一种利用谷歌搜索和其他谷歌应用程序来发现网站配置和计算机代码中的安全漏洞的计算机黑客技术。
基本脑图
基本使用方式:site:csdn.net filetype:doc 在指定网站搜索指定后缀的文件site:xx.com inurl:login 找登录入口site:xx.com inurl:admin 尝试找一下管理员登录的入口
还有下面一些妙用自己细细品哈site:wcipeg.com intitle:”index of” etcintitle:”Index of” .sh_historyintitle:”Index of” .bash_historyintitle:”index of” passwdintitle:”index of” people.lstintitle:”index of” pwd.dbintitle:”index of” etc/shadowintitle:”index of” spwdint ...
docker和docker-compose的安装
先介绍一下docker是啥:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
再说一下docker compose是啥:docker compose是docker三剑客之一,用于定义和运行多个容器 Docker 应用程序的工具。通过docker compose,你可以使用YML文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从YML文件配置中创建并启动所有服务。Compose对应的命令为docker-compose。简单一点说就是把一堆docker组合编排到一起以实现快速管理。
本文的目的是为了方便我配置swarm,所以用的版本都是比较新的。如果您只是单纯的使用docker或者docker compose则无需特别新的版本好了,回归正题1、如何安装docker先查看内核版本以确定兼容哪些docker版本
[root@ecs ~]# uname -r3.10.0-1062.9.1.el7.x86_6 ...
Spring Boot与Docker部署
第一种:结合编辑器使用1、开启Docker远程访问首先需要开启docker远程访问功能,以便可以进行远程操作。以centos7为例:打开/usr/lib/systemd/system/docker.service文件,修改ExecStart这行。
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
重启后生效
systemctl daemon-reload systemctl restart docker.service
测试是否生效
curl http://127.0.0.1:2375/info
2、新建maven工程主要部分
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.14&l ...
抓取占用CPU高的JAVA线程,进而找出有问题的代码段
写在前面:当你的java项目总是出现CPU占用很高的情况(服务器性能极弱除外),很可能因为某段代码出现死锁之类的BUG而导致CPU占用高甚至敲命令都卡顿!在日志无法具体指向的时候,你根本无法确定哪个地方出现了BUG,从而你也没法去解决。下面,就介绍一个抓取高占用CPU的线程的简单方法:
1.运行top命令取得JAVA线程号(PID),假如是2068;
2.运行jstack + pid 命令导出JAVA线程信息到result文件,命令行为
3.jstack 2068>result
4.运行top -p 2068 -H 查看CPU占用排名情况,并记录PID;
5.运行 ./jtgrep +PID 找到线程头文字(PID为第3步获取) ;
6.使用vi/vim打开result,查询头文字就能找到相应线程。
下面为jtgrep代码:
#bin/bash nid =`python -c "print hex($1)"` grep -i $nid $2
写在后面:此方法无须安装任何软件,能够快速找出占用CPU的JAVA线程,是发现同类问题的首选办法,但很多时候你可能 ...
小白玩转Linux的必备技能——进阶篇
玩转Linux的必备技能–进阶篇如下:1、启用root用户
某些公有云服务商不会直接提供给你root账户,而是给你密钥或者是其他用户,这种情况下就需要我们手动开启root账户并设置密码登录。
先用云服务商提供给你的密钥文件或者是其他用户登录上去
然后执行sudo su获得root权限
执行vi /etc/ssh/sshd_config找到PermitRootLogin和PasswordAuthentication如果这两项前面有注释则去掉注释并将后面改为yes
文件保存退出后执行passwd root按照提示进行root账户的密码设置(输入的密码不会显示)
最后执行systemctl restart sshd重启ssh服务,然后就可以用root用户登录了
2、了解Linux的目录结构
/ :根目录,每一个文件和目录从根目录开始,只有root用户具有该目录下的写权限。
/bin : 用户二进制文件包含二进制可执行文件。在单用户模式下,你需要使用的常见Linux命令都位于此目录下。系统的所有用户使用的命令都设在这里。
/bo ...