自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 资源 (3)
  • 收藏
  • 关注

原创 csrf验证问题 -- 不同域名下Iframe嵌套Cookie失效导致csrf验证失败

Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite属性,主要用于防止CSRF攻击和用户追踪。cookie的SameSite属性用来限制第三方Cookie,从而减少安全风险(防止CSRF)。在Chrome80之前默认None,在Chrome80之后,由于SameSite默认值是Lax。从上图可以看出,SameSite从None改成了Lax后,Form, Iframe, Ajax和Image中跨站的请求受到的影响最大。

2022-10-11 23:18:18 2144 3

原创 webstorm配置wsl2运行node项目

webstorm配置wsl运行node项目开启WSL支持安装Ubuntu安装WIndowsTerminal查看Win10的系统路径Windows访问wsl目录配置nodeWSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是 提高文件系统性能,以及添加 完全的系统调用兼容性。开启WSL支持安装Ubuntu打开MicrosoftStore

2021-11-20 18:13:37 1803

原创 H5中段落自动空两格

使用css 实现 2em 表示空2个字 text-indent:2em;给全部p标签加上p { text-indent:2em;}

2021-09-17 15:51:45 539

原创 Sentry搭建

Sentry搭建docker 安装docker-compose 安装git 安装Sentry搭建拉取工程执行安装脚本启动启动成功Sentry 是一个日志平台,分为客户端和服务端,客户端(目前客户端有Python, PHP,C#, Ruby,JS等多种语言)就嵌入在你的应用程序中间,程序出现异常就向服务端发送消息,服务端将消息记录到数据库中并提供一个web节目方便查看。Sentry由python编写,源码开放,性能卓越,易于扩展,目前著名的用户有Disqus, Path, mozilla, Pinteres

2021-08-28 11:26:39 339

原创 网络协议基础知识学习

网络模型http请求流程ip协议tcp协议DNS各协议之前的关系图学习资料来源 https://www.bilibili.com/video/BV1NK411w7mc?p=9&share_source=copy_web

2021-07-07 22:12:45 88 1

原创 Kubernetes学习--pod生命周期

pod生命周期pod生命周期pod生命周期一般pod对象从创建至终止的这段时间范围称为pod的生命周期,他主要包含下面过程pod的创建过程运行初始化容器(init container)过程运行主容器(main container)过程* 容器启动后钩子(post start),容器的终止前钩子(pre stop)* 容器的存活性探测,就绪性探测pod终止过程在整个生命周期中,Pod会出现5种状态挂起(pending):apiserver已经创建了pod资源对象,但他尚未被调度完成或者

2021-07-03 15:28:23 120

原创 Kubernetes学习--namespace,pod,Label,Service,Deployment入门学习

namespace,pod,Label,Service,Deploymentnamespace基本概念基本操作pod和deployment基本概念基本操作Label基本概念基本操作Service基本概念基本操作namespace基本概念Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。默认情况下,kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间进行互相的访问,那此时就可以将两

2021-06-24 22:15:03 541

原创 Kubernetes学习--资源管理方式

资源管理方式各种方式的优劣命令式对象管理命令式对象管理声明式对象配置命令式对象管理:直接使用命令去操作Kubernetes资源kubectl run nginx-pod --image=nginx:1.17.1 --port=80命令式对象配置:通过命令配置和配置文件去操作Kubernetes资源kubectl create/patch -f nginx-pod.yaml声明式对象配置:通过apply命令和配置文件去操作Kubernetes资源(创建和更新)kubectl app

2021-06-21 22:14:01 250

原创 Kubernetes学习--集群安装

Kubernetes--集群安装服务器准备查看centos版本配置host时间同步禁用iptables和firewalld禁用selinux禁用swap分区修改linux内核参数配置ipvs功能重启服务器检查之前关闭的各种配置是否生效Kubernetes安装docker安装添加配置文件启动docker服务器准备本地用VMware虚拟3台服务器,主机名分别命名node1,node2,master1查看centos版本cat /etc/redhat-release 推荐使用7.5及以上版本这里

2021-06-19 09:24:17 5510 24

原创 Kubernetes学习--基本概念

Kubernetes学习--基本介绍应用部署的演变传统部署虚拟化部署容器化部署应用部署的演变传统部署互联网早期,会直接将应用程序部署到物理机上优点:简单,不需要其他技术参与缺点:不能为应用程序定义资源使用边界,很难合理的分配计算机资源,而且程序之间容易产生影响(如一个程序内存泄漏,一直扩大,势必会影响其他程序的资源)虚拟化部署可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的一个环境优点:程序环境直接不会相互产生影响,提供了一定程度的安全性缺点:每个虚拟机都会有一个操作系统,浪费

2021-06-16 20:41:46 235

原创 node call和apply学习

call和apply的学习作用域上下文非箭头函数箭头函数call和applycallapply作用域作用域分为局部作用域和全局作用域,作用域往往和变量存在关系。处在局部作用域里面可以访问全局作用域的变量,而处在局部作用域外面不能访问局部作用域里面的变量。看一个局部作用域访问全局作用域的例子// 局部作用域访问全局作用域let globalVariable="这是一个全局变量"function globalFunction() { let localVariable = '这是一个本地变量

2021-06-14 12:26:36 296

原创 kafka学习 --- adminClient基本操作

adminClient基本操作引入kafka-clients <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.7.0</version> </dependency&g

2021-06-10 22:32:23 769 2

原创 kafka学习--docker zookeeper安装和kafka安装

zookeeper安装和kafka安装zookeeper安装kafka安装测试启动一个生产者启动一个消费者zookeeper安装docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper查看日志docker logs zookeeperkafka安装启动kafkadocker run -d --name kafka -p 9092:9092 -e

2021-06-07 22:48:15 202 3

原创 ELK -- es + kibana + logstash 读取配置mysql数据增量分析

es + kibana + logstash 读取配置mysql数据增量分析logstash镜像拉取配置去kibana看数据ElasticSearch和kibana的docker安装配置上一个笔记有详细安装链接: ELK – es+kibana+fileBeat读取Nginx日志文件分析logstash镜像拉取docker pull logstash:7.6.2配置先启动镜像docker run -it -d logstash:7.6.2把镜像文件拷贝出来docker cp 1c

2021-05-31 22:11:34 433 3

原创 ELK -- es+kibana+fileBeat读取Nginx日志文件分析

es+kibana+fileBeat读取日志文件分析es安装第一步获取es镜像配置config文件kibana安装下载镜像编写配置文件启动安装测试全部采用docker方式es安装第一步获取es镜像docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.2配置config文件http.host: 0.0.0.0# Uncomment the following lines for a production cluster de

2021-05-30 21:25:44 694 1

原创 分布式事务解决方案学习--可靠消息最终一致性

可靠消息最终一致性可靠消息最终一致性方案是指当事务发起方执行完成本地事务后并发出一条消息,事务参与方(消息消费者)定能够接收消息并处理事务成功,此方案强调的是只要消息发给事务参与方最终事务要达到一致。事务发起方(消息生产方)将消息发给消息中间件,事务参与方从消息中间件接收消息,事务发起方和消息中间件之间,事务参与方(消息消费方)和消息中间件之间都是通过网络通信,由于网络通信的不确定性会导致分布式事务问题。本地事务和消息发生的原子性问题本地事务和消息发送原子性问题就是事务发起方的本地事务提交后消息

2021-05-20 21:19:41 97

原创 分布式事务解决方案学习--TCC

分布式事务解决方案学习--TCC什么是TCC事务空回滚幂等性悬挂解决方案 Hmily分布式事务框架什么是TCC事务TCC是 Try,Confirm ,Cancel,三个单词的缩写,TCC要求每个分支事务需要实现三个操作:预处理Try,确定Confirm ,撤销Cancel。Try操作做业务的检查和资源预留,Confirm做业务确定操作, Cancel实习一个和Try相反的操作及回滚操作,TM(全局事务管理器)首先发起所有分支事务的try操作,任何一个分支事务的try操作失败,TM将会发起除失败分支的所

2021-05-16 23:38:03 162 1

原创 分布式事务解决方案学习--2PC(两阶段提交)

分布式事务解决方案学习2PC(两阶段提交)解决方案 seataAT模式和XA模式AT案例实际操作mysql安装(有数据库环境可忽略)找到seata示例示例说明数据准备测试2PC(两阶段提交)2PC即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段P(Prepare phase),提交阶段C(commit phase),2是指两个阶段准备阶段 : 事务管理器给每一个参与者发生Prepare信息,每个数据库参与者在本地执行事务,并写入日志,这时事务还没有提交提交阶段: 如果事务管理器收到了参与者

2021-05-09 12:42:26 546

原创 分布式事务学习--CAP理论学习总结

CAPC 一致性A 可用性p 分区容忍性CAP是Consistency,Availability,Partition tolerance ,分别是 一致性,可用性,和分区容忍性C 一致性用Mysql主从来举例,当一个写操作后的读操作都必须是数据的最新状态,当数据分布到多个节点上,如一主多从,在任意节点读取到的数据都必须是最新状态。如上图,商品信息的读取要满足一致性就要实现商品写入主数据库,从数据库查询新数据也成功商品服务写入主数据库失败,查询从数据库最新数据也失败写入主数据库后数据要同步

2021-05-04 17:45:59 172

原创 ElasticSearch入门学习笔记

ElasticSearch入门学习下载ElasticSearch运行下载ElasticSearch找到官网链接: https://www.elastic.co/cn/elasticsearch/点击下载因为是个人学习使用使用Windows版本运行下载解压打开bin目录运行elasticsearch.bat查看启动发现有一个9200端口和9300端口,9300端口是es内部通讯端口,9200是http RESTful端口,用postman请求查看返回结果...

2021-04-25 23:59:11 87

原创 netty -- 学习任务回声系统

回声系统(客户端发什么服务器响应什么)服务端代码import io.netty.bootstrap.ServerBootstrap;import io.netty.buffer.ByteBuf;import io.netty.channel.ChannelHandlerContext;import io.netty.channel.ChannelInboundHandlerAdapter;import io.netty.channel.ChannelInitializer;import io.

2021-04-20 23:44:10 109

原创 Jenkins+Docker+GitLab自动化部署springBoot项目

Jenkins+Docker+GitLab自动化部署springBoot项目安装DockerDocker安装Jenkins安装启动Jenkins配置JDK配置配置Maven下载Maven插件配置自动化部署安装Docker之前有专门介绍这里就不赘述了链接: docker安装Docker安装Jenkins安装安装docker pull jenkins/jenkins查看镜像docker images 注意:nginx和centos镜像本教程无关启动在data目录下创建jenkin

2021-04-19 23:10:44 1924 13

原创 netty学习 -- Channel

netty学习 -- ChannelChannelwrite()ChannelFuture连接问题sync()和addListener()方法说明sync()addListener()closeFuture()关闭Channelchannel的主要作用close()关闭channelcloseFuture()来处理channel的关闭sync()方法等待异步就结束addListener()方法增加回调操作pipeline()方法添加处理器write()方法写入writeAndFlush(

2021-04-17 18:04:29 532

原创 netty学习-EventLoop组件

netty--EventLoop组件EventLoopEventLoopEventLoop其实就是一个单线程执行器,同时内部维护了一个Selector(selector是多路复用器)

2021-04-13 22:13:40 370 1

原创 netty学习--HelloWorld

添加依赖 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.39.Final</version> </dependency>服务端import io.netty.bootstrap

2021-04-13 15:11:17 115

原创 nio-- ByteBuffer学习

基本使用首先创建一个文件dataTest.txt其内容为public class Test1 { public static void main(String[] args) { // 读取文件 try (FileChannel channel = new FileInputStream("dataTest.txt").getChannel()) { // 创建一个buffer缓冲区 ByteBuffer buff

2021-04-10 14:28:18 84

原创 go--数组和切片学习笔记

数组和切片数组数组的定义数组的长度是数组类型的一部分数组的初始化数组的遍历多维数组数组是值类型切片(slice)切片的定义由数组得到切片切片是引用类型数组数组是存放元素的容器,必须指定存放的元素的类型和容量(长度)数组的定义var 数组变量名 [元素个数] T类型// 如var arr=[3]int数组的长度是数组类型的一部分package mainimport "fmt"func main() { var a1 [3]bool var a2 [3]bool fmt.Prin

2021-04-04 22:04:19 290

原创 go踩坑[err is shadowed during return]错误

go项目启动时遇到一个err is shadowed during return 错误,经百度找到了问题所在,说到底还是变量作用域的问题链接: https://blog.csdn.net/u013600225/article/details/78628959func myTest2() (retI int, retF float64) { if true { //新的作用域 i0, retF := -1, -1.1 fmt.Println(i0, retF) return //报错:[re

2021-04-03 21:12:08 2478

原创 docker -- redis集群搭建

centos7部署redis-cluster安装docker安装需要的安装包配置镜像仓库安装最新版本的Docker引擎和容器启动docker下载redis镜像创建redis容器创建6个容器设置集群进入容器执行设置集群命令测试前言: 因公司测试服务器切换,在网上找了各种搭建方法均失败 , 好不容易安装好一个redis集群, go项目和node项目成功连接,但java项目直接 Too many Cluster redirections? 发现JedisCluster连接集群时,集群的内部通信出了问题 Jedi

2021-03-25 22:30:21 95

原创 docker学习笔记 -- mysql安装及数据卷挂载

mysql安装及数据卷挂载下载mysql5.7镜像docker pull mysql:5.7查看下载的mysql镜像https://hub.docker.com/_/mysql找到hub.docker里面的mysql发现密码是根据一个-e MYSQL_ROOT_PASSWORD连配置-e MYSQL_ROOT_PASSWORDdocker run -d -p 12002:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysq

2021-03-20 12:19:55 172

原创 docker -- docker安装

安装镜像和容器系统环境安装卸载旧版本安装需要的安装包和配置镜像仓库安装最新版本的Docker引擎和容器查看是否安装成功启动docker运行hello-world查看下载的镜像卸载配置阿里云镜像加速系统环境查看Linux系统版本[root@iZuf6gsc80xq4dyg43fqsiZ ~]# cat /etc/os-release NAME="CentOS Linux"VERSION="7 (Core)"ID="centos"ID_LIKE="rhel fedora"VERSION_ID=

2021-03-13 12:39:45 584

原创 node -- V8垃圾回收机制与内存限制(node深入浅出读书笔记)

V8垃圾回收机制与内存限制V8的内存限制V8的对象分配V8的垃圾回收机制分代回收算法新生代中的Scavenge 复制整理算法老年代中的Mark-Sweep & Mark-Compact标记整理算法查看GC日志trace_gcprofV8的内存限制在node中通过JavaScript使用内存时,64位系统下约为1.4GB,32位系统下约为0.7GB,在这样的限制下,导致node无法直接操作大内存对象,比如无法将2GB的文件读取内存中进行字符串处理,为什么要限制堆大小,表层原因是因为V8是为浏览器设

2021-03-08 23:11:03 529

原创 node -- 模块机制 (node深入浅出读书笔记)

模块机制模块加载过程优先从文件中加载路径分析和文件定位模块标识符分析核心模块路径形式的文件模块自定义模块文件定位文件扩展名的分分析目录分析和包模块编译JavaScript模块的编译json编译在node中模块的引入一般需要3个阶段路径分析文件定位编译执行在node中模块又分为两种,node自己的模块叫核心模块,还有一种是用户编写的模块叫文件模块,部分核心模块在node源代码的编译过程中就编译成了二进制执行文件,在node进程启动时就会直接加载到内存中,所以这部分核心模块可以省去文件定位和编译执

2021-03-07 14:25:55 248

原创 java--字节码角度理解i++,++i,--i

public class Test { public static void main(String[] args) { int a=10; int b=a++ + ++a + a--; System.out.println(a); System.out.println(b); }}代码允许结果根据javap 反编译字节码文件 Last modified 2021-3-4; size 549 bytes MD

2021-03-04 15:45:56 131 2

原创 java -- 分代回收

分代回收为什么进行分代分代是如何工作的代码演示垃圾回收的过程GC代码演示大对象直接进入老年代为什么进行分代因为java中有的对象需要长时间使用,长时间使用的对象就放在老年代中,那些用完了就可以丢弃的对象就可以放在新生代中,那么就可以根据对象的生命周期特点进行不同的垃圾回收策略,老年代的垃圾回收可以很久才发生一次,而新生代的就垃圾回收得很频繁分代是如何工作的当我们新创建一个对象的时候,默认是放在一个伊甸园的一个区域当我们多创建几个对象的时候发现伊甸园装不下了那么新生代就会发生一次垃圾回收(m

2021-02-28 14:55:52 429

原创 java--垃圾回收算法

垃圾回收算法如何判定是垃圾引用计数算法可达性算法回收算法标记清除标记整理复制整理如何判定是垃圾引用计数算法所谓的引用计数就是指只要一个对象被其中一个变量引用那么计数+1,如果有其他变量也引用了那么就也+1,但是会存在一个问题就是两个对象相互循环引用,那么这两个对象都没办法被垃圾回收掉,因为他们各自的引用计数都是1可达性算法首先要去确定一些根对象(肯定不能被回收的对象)GC Roots,在垃圾回收之前会去扫描,看他是否被根对象直接或者间接的引用,如果没有被引用说明可以被垃圾回收回收算法标记清除

2021-02-27 15:25:11 86

原创 java--java的几种引用

java的几种引用强引用软引用(SoftReference)代码示例配合引用队列释放软引用本身弱引用(WeakReference)虚引用强引用只有所有GC Roots对象都不通过`强引用`引用该对象,该对象才能被垃圾回收 软引用(SoftReference)仅有软引用引用该对象时,在垃圾回收后,内存任不足时会再次发出垃圾回收, 回收软引用对象.可以配合引用队列来释放软引用本身代码示例// -Xmx20m -XX:+PrintGCDetails -verbose:gcpublic cla

2021-02-25 22:47:44 81

原创 java--直接内存学习

直接内存直接内存allocateDirect源码内存分配内存释放直接内存常见于NIO操作,一般用于数据缓存分配回收成本较高,但读写性能高不受JVM内存回收管理普通java缓存区的操作,因为java无法直接读取系统缓存区,系统缓存区的数据还得复制一份直接内存的缓存读写操作,就相当于单独出一个内存java能读取,系统也能读取那么就减少了一次复制allocateDirect源码内存分配DirectByteBuffer(int cap) { // pa

2021-02-23 22:45:38 185

原创 java-方法区 (二) - StringTable串池

方法区StringTable串池字符串入池字符串拼接原理编译期优化intern() 主动入池StringTable是方法区的重要组成部分字符串入池案例:public class Test2 { public static void main(String[] args) { String a = "a"; String b = "b"; String ab = "ab"; }}编译成class文件后又编译回来 Last modi

2021-02-21 16:24:18 403 2

原创 java-jvm方法区学习(一)

jvm方法区学习方法区定义方法区定义方法区和堆差不多,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法区溢出,就会抛出内存溢出错误:Java.lang.OutOfMemoryErro:MetaSpace 或Java.lang.OutOfMemoryErro:PermGen space。在JDK1.6和以前的版本中方法区是在永久代 PermGen space中...

2021-02-21 14:33:57 256 3

HTTP缓存PDF.pdf

HTTP缓存

2021-07-06

Xshell7.rar

Xshell7.rar

2021-06-16

Navicat Premium 120.rar

Navicat Premium 120.rar

2021-02-03

空空如也

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

TA关注的人

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