指针漫谈
🧨🧧🧨🧧🧨:首先祝大家新年快乐!一、什么是指针(Pointer)在计算机科学中,指针(英语:Pointer),是编程语言中的一类数据类型及其对象或变量,用来表示或存储一个存储器地址,这个地址的值直接指向(points to)存在该地址的对象的值。【 维基百科 】
二、我理解的指针了解磁盘系统的同学可能听说过inode这个东西(这里具体讲了inode),它是Unix文件系统中用来储存文件元信息的东西。
在文件系统中,每个文件对象都对应着一个 inode,其中存储着常用的一些信息(所有者、创建时间、修改时间、文件权限、对应文件对象在系统中存储块的位置等等)操作系统访问一个文件时分为三个步骤:
通过文件名找到对应的 inode 编号
通过 inode 编号访问对应文件对象的元信息
根据元信息找到文件对应的扇区下对应的数据块,读取数据
🪜 当然了这是简化的流程,实际读取文件比这个复杂一些。还会涉及到内核调用和页缓存等其他操作。
从这个例子可以发现inode像是一种索引,并且会记录用来指向实际的存储数据块的地址。
🍺 这里是不是发现有点像指针了。
三、从Java和Go的角 ...
如何防止IP被恶意解析
一、什么是恶意解析?有什么影响?1.1、恶意解析:如果能直接通过主机IP访问某个网站服务,那么无需服务器管理者的许可任意一个域名解析到此IP也将能访问到该网站服务。
1.2、造成的影响:
针对国内政策来说,如果是一个未备案的域名解析到你的服务器上并且被工信部或者云服务商扫描到将会触发警告或者关闭网站甚至服务商会关停该服务器资源。
如果恶意域名被搜索引擎拉黑或惩罚过,那么被恶意指向的正规网站在搜索引擎的排名将会下降或者拉黑。
如果是高权重域名恶意解析到你这里,那么你相当于在帮助他利用你站点的内容增长他域名的收录量。
如果被有心的人利用,恶意解析过来之后你的网站可能会有大规模的流量攻击。
二、防范手段(nginx)由上述可知恶意解析的根源在于:你的某个网站服务可以直接通过IP访问到。
所以我们需要禁止通过IP访问到web服务:
server { listen 80 default_server; server_name _; return 444;}
将nginx的配置文件中默认的server块修改为上面的配置即可。
这个server块将会添加一个不 ...
OpenVPN客户端路由策略配置
OpenVPN的路由策略可以在客户端配置,也可以在服务端配置。不过个人不推荐在服务端配置,这样会比较限制用户使用的灵活性。所以本文只讲客户端配置路由策略的方式。
先贴一下默认的demo.ovpn部分配置:
clientdev tunproto udpremote 1.1.1.1 1194resolv-retry infinitenobindpersist-keypersist-tunremote-cert-tls serverauth SHA512cipher AES-256-CBCignore-unknown-option block-outside-dnsblock-outside-dnsverb 3# 证书略
下面是几个比较重要的点
🚀 当我们需要自定义路由策略的时候需要添加route-nopull拒绝服务端push的策略。
🚨block-outside-dns配置项会阻止tap/tun以外的所有网络接口的DNS请求,会影响规则外的网站访问,所以需要删除此配置项。
⚠️默认可写入100条路由规则,如果不够用则使用max-routes 1000定义为最大1000条 ...
利用PicGo打造个人图床
向开源致敬!!!
1、PicGo简介项目地址:https://github.com/Molunerfinn/PicGo
作者对于PicGo的简介:一个用于快速上传图片并获取图片 URL 链接的工具
支持的储存厂家:【下表为默认,且作者不再打算支持新的厂家,不过支持安装插件】
厂商
最低版本
七牛云 云储存 (S3类型)
v1.0
腾讯云 COS v4/v5 (S3类型)
v1.1 / v1.5.0
阿里云 OSS (S3类型)
v1.6.0
又拍云 云储存 (S3类型)
v1.2.0
GitHub 仓库 (类似代码提交)
v1.5.0
SM.MS V2 (没用过)
v2.3.0-beta.0
Imgur (没用过)
v1.6.0
2、PicGo安装直接点击此处进入releases界面选择合适的版本以及合适的系统安装包进行下载安装即可。
3、插件安装因为默认不支持AWS S3(含各厂家衍生版)的储存接入而我这里想接入Oracle Cloud的对象储存,所以就需要去找一个可以接入基于S3通用类型的插件。
⚠️ Oracle C ...
使用火焰图分析CPU使用情况
1、安装Perf性能分析工具Perf工具是非常强大的Linux性能分析工具,可以通过该工具获得进程内的调用情况、资源消耗情况并查找分析热点函数。
所以我们使用perf工具进行性能数据的采集。
在Ubuntu上,如果不知道perf如何安装的话可以直接执行perf在命令执行报错回显里面会有建议:
root@ubuntu:~# perfCommand 'perf' not found, but can be installed with:apt install linux-oem-5.6-tools-common # version 5.6.0-1017.17, orapt install linux-tools-common # version 5.4.0-92.103root@ubuntu:~#
这里他建议我们执行apt install linux-oem-5.6-tools-common或者apt install linux-tools-common进行perf的安装。那我们就先执行apt install linux-tools-common ...
ElasticsSearch伪集群搭建
⚠️⚠️⚠️该教程基于docker- compose建立伪集群,仅适用于开发和测试中使用
1、建立项目目录及各配置文件。
首先创建一些需要映射的目录:root@ubuntu:~# mkdir -p es/dataroot@ubuntu:~# mkdir -p es/logsroot@ubuntu:~# ll es/total 16drwxr-xr-x 4 root root 4096 Jan 10 02:25 ./drwxr-xr-x 4 root root 4096 Jan 10 02:25 ../drwxr-xr-x 2 root root 4096 Jan 10 02:25 data/drwxr-xr-x 2 root root 4096 Jan 10 02:25 logs/root@ubuntu:~#
然后创建docker-compose.yml配置文件version: '3'services: es_node0: image: elasticsearch:7.16.2 container_name: es_node0 privilege ...
两步实现在Ubuntu18,20等高版本设置静态IP
新版本的Ubuntu已经放弃了在/etc/network/interfaces里面配置IP,改为在/etc/netplan/00-installer-config.yaml的yaml文件中配置IP地址。
1. 修改配置文件【🎗️注意:不同的云服务器厂商这个yaml的文件名字可能不一样,请注意自己的文件名】使用熟悉的编辑器打开 /etc/netplan/ 下面的yaml配置文件,我的是00-installer-config.yaml
vi /etc/netplan/00-installer-config.yaml
根据自己的需要配置
# This is the network config written by 'subiquity'network: ethernets: enp0s3: # 网卡的名称 dhcp4: true enp0s8: addresses: [10.0.0.101/20] # 配置的静态ip地址和掩码 注意单词是a ...
简单的聊一聊Redis
一、Redis雪崩、穿透、并发等问题1.1、缓存雪崩缓存雪崩指的是:数据未加载到缓存中或缓存同一时间大规模的失效,所有请求都穿透到数据库。最终可能会导致数据库主机CPU和内存负载过高甚至宕机。
🌰举一个雪崩的简单例子:
1、redis集群大面积故障或数据没有预读到缓存中。
2、当大量的请求进来后没有命中缓存将直接穿透到数据库,数据库的压力暴增。
3、如果持续有请求穿透缓存进来,可能很快就会超出数据库当时的设计阈值,直至宕机。
4、由于大量的应用服务依赖数据库和redis的服务,这个时候很快就会变成各服务集群的雪崩,最后整个服务彻底崩溃。
⚠️缓存雪崩解决思路:
📉1、缓存的高可用
缓存层设计成高可用,防止缓存大面积故障。即使个别节点、个别机器、甚至是机房宕掉,依然可以提供服务,例如 Redis Sentinel 和 Redis Cluster 都实现了高可用。(官方推荐Redis Sentinel)
📉2、缓存降级
可以利用ehcache等本地缓存,但主要还是对源服务访问进行限流、资源隔离(熔断)、降级等。
当访问量剧增、服务出现问题仍然需要保证服务还是可用的。系统可以根据一些关 ...
优化在4G网络环境差的地区中项目的响应速度
1、背景简述最近做了一个网红街的商户收银系统:包含小商铺场景下用户微信扫码点餐H5、小程序、商家PAD点餐、排号、叫号、时间预测等,堂食多人扫桌码点餐、商家PAD点餐等。在前期的现场测试中发现该地区中国移动,中国电信4G、5G网络带宽低,抖动大。偶尔会出现用户端软件响应速度极慢。
2、大致结构
3、当前策略目前全站接入HTTP/2,目前服务器支持的技术如下:
(1)、多路复用:代替掉HTTP1.x的序列和阻塞机制。同域名下所有通信都在单个连接上完成。单个连接可以承载任意数量的双向数据流。数据流以消息的形式发送,而消息又由一个或多个帧组成,多个帧之间可以乱序发送,因为根据帧首部的流标识可以重新组装。
(2)、Server Push:HTTP/2 规范中引入的一种新技术,即服务端在没有被客户端明确的询问下,抢先地 “推送” 一些网站资源给客户端(浏览器),该特性可以极大的改善页面访问效果。(3)、头部压缩:HTTP/2在客户端和服务器端使用“首部表”来跟踪和存储之前发送的键-值对,对于相同的数据,不再通过每次请求和响应发送;首部表在HTTP/2的连接 ...
Nginx的动静态gzip压缩配置及参数详解
gzip的两种实现方式。1、动态gzip压缩的实现。当前端Vue使用普通的编译打包的方式构建出index.html,xxx.js,xxx.css等文件后,可以直接放到nginx的虚拟主机根目录下即可通过绑定的域名去访问。这时如果想开启gzip压缩则按照如下示例:
gzip on; # 打开gzipgzip_buffers 16 8k; # 缓冲区数量和大小 (按照内存页大小以8K为单位申请16倍的内存空间)gzip_comp_level 6; # 压缩级别1-9级别越大越吃性能,压缩比越高,视实际配置设置gzip_http_version 1.1; # 用于识别http协议的版本,早期的浏览器不支持gzip压缩,用户会看到乱码,所以为了支持前期版本加了此选项。默认在http/1.0的协议下不开启gzip压缩。gzip_min_length 256; # 最小触发值,以K为单位,当值为0时,所有页面都进行压缩。gzip_proxied any; # Nginx做为反向代理的时候启用:off – 关闭所有的代理结果数据压缩;expired – 如果header中包含”Expires”头信息 ...