- 博客(207)
- 收藏
- 关注
转载 彻底搞懂 HTTP 3XX 重定向状态码和浏览器重定向
最近好好研究了一下 HTTP 的 3XX 状态码,发现这里面涉及到的知识点还挺多的,很多在我们日常开发过程中也会用到,于是就想通过这篇文章来和大家聊一聊它们的含义以及应用场景。3XX 状态码是关于重定向的,常见的状态码有:301,302,303,304,307 和 308。这篇文章主要分析永久重定向和临时重定向相关的状态码,至于其他重定向就不在这里细讲了。
2024-01-02 14:13:48 155
转载 真正“搞”懂HTTP协议08之重定向
其实关于重定向,最核心的就是301和302了,大家一定要会,没啥好说的。重定向在一定程度上提供了一定场景下的应用解决方案,但是其实也会带来一定的问题,比如,只要重定向就一定会发送一次额外的请求,造成性能的浪费。另外要格外注意的就是循环跳转的问题。本篇的东西不多,那就到这里啦,学习这么无聊,下一篇我们来吃点点心。
2024-01-02 11:18:44 92
转载 HTTP请求中的referrer和Referrer-Policy
有些使用了https的网站,可能在URL中使用一个参数(sid)来作为用户身份凭证,而又需要引入其他https网站的资源,这种情况,网站肯定不希望泄露用户的身份凭证信息。当https网站需要引入不安全的http网站的资源或者有链接要跳转到http网站时,这时候将https源网站的URL信息传过去也是不太安全的。是完整的URL信息,该URL带了很多敏感数据比如加密后的token,sessionID等,长度特别长,请求头中的cookie和请求的URL也带着很大块的信息,最终我们决定让。所谓同源网站,是协议、
2023-12-29 14:05:41 119
原创 spring-aop
cglib,使用MethodProxy时生成2个代理对象,一个针对target,一个针对proxy,继承FastClass;jdk,第17次开始,针对方法生成代理对象,直接调用原始方法;
2023-12-28 20:03:06 387
原创 web安全,常见的攻击以及如何防御
XSS即Cross Site Scripting(跨站脚本攻击),攻击者通过各种方式将恶意代码注入到用户的页面中,这样就可以通过脚本进行一些操作。以后,基本就杜绝了 CSRF 攻击。当然,前提是用户浏览器支持 SameSite 属性。(1)为了防止这种攻击,表单一般都带有一个随机 token,告诉服务器这是真实请求。CSRF即Cross-site request forgery(跨站请求伪造)
2023-12-27 18:55:19 744
转载 cookie属性
Path是Cookie的有效路径,和Domain类似,也对子路径生效,如Cookie1和Cookie2的Domain均为a.com,但Path不同,Cookie1的Path为 /b/,而Cookie的Path为 /b/c/,则在a.com/b页面时只可以访问Cookie1,在a.com/b/c页面时,可访问Cookie1和Cookie2。Max-age也是Cookie的有效期,但它的单位为秒,即多少秒之后失效,若Max-age设置为0,则立刻失效,设置为负数,则在页面关闭时失效。
2023-12-27 17:50:51 25
原创 maven构建单个模块,遇到错误:Could not find the selected project in the reactor
pl 参数用于指定要构建的子模块,可以通过指定子模块的 artifactId 或者模块路径来指定。在命令中使用 -pl my-submodule 表示只构建名为 my-submodule 的子模块。-am 参数用于自动构建依赖的模块。如果当前构建的模块依赖于其他模块,使用 -am 参数可以让 Maven 自动构建这些依赖的模块。在命令中使用 -am 表示构建所有依赖的模块。
2023-12-18 14:48:16 928
转载 单元测试实践(SpringCloud+Junit5+Mockito+DataMocker)
目前我们的项目中,单元测试的应用还在第一期,但是投入在上面的时间和精力,实际上到实际开发时间的2-3倍。因为涉及到基础框架的搭建,新框架的引入整合,底层开发编写测试代码的审核,团队的培训等等。我预计在后期,成熟的框架和流程支持下,覆盖核心业务代码的单元测试耗时应该能到实际开发工时的50%-80%左右。但是这部分的投入是能够减少测试以及线上的问题发生的概率,节省了修复的时间。
2023-11-30 23:18:20 274
转载 基于 Jenkins、Gitlab、Harbor、Helm 和 Kubernetes 的 CI/CD(二)
直接 upgrade 是不是就可以达到应用更新的结果了。我们是不是只需要将上面关于 api 服务使用的镜像用我们这里 Jenkins 构建后的替换掉就可以了,这样我们更改上面的最后运行 Helm当然我们可以将需要更改的值都放入一个 YAML 之中来进行修改,我们这里通过--set。
2023-11-29 01:17:54 40
转载 Kubernetes Helm 初体验
Helm这个东西其实早有耳闻,但是一直没有用在生产环境,而且现在对这货的评价也是褒贬不一。正好最近需要再次部署一套测试环境,对于单体服务,部署一套测试环境我相信还是非常快的,但是对于微服务架构的应用,要部署一套新的环境,就有点折磨人了,微服务越多、你就会越绝望的。虽然我们线上和测试环境已经都迁移到了kubernetes环境,但是每个微服务也得维护一套yaml文件,而且每个环境下的配置文件也不太一样,部署一套新的环境成本是真的很高。如果我们能使用类似于yum的工具来安装我们的应用的话是不是就很爽歪歪了啊?
2023-11-29 01:06:39 27
转载 Kubernetes使用Prometheus搭建监控平台
Prometheus是SoundCloud开源的一款开源软件。它的实现参考了Google内部的监控实现,与源自Google的Kubernetes结合起来非常合适。另外相比influxdb的方案,性能更加突出,而且还内置了报警功能。它针对大规模的集群环境设计了拉取式的数据采集方式,你只需要在你的应用里面实现一个metrics接口,然后把这个接口告诉Prometheus就可以完成数据采集了。未来将进一步完善Prometheus增加更多的监控数据源使用AlertManager实现异常提醒(DONE)上面用的。
2023-11-29 01:03:06 19
转载 Kubernetes Deployment滚动升级
我们k8s集群使用的是1.7.7版本的,该版本中官方已经推荐使用Deployment代替(rc)了,DeploymentRecreate删除现在的Pod,重新创建;滚动升级,逐步替换现有Pod,对于生产环境的服务升级,显然这是一种最好的方式。
2023-11-29 01:01:28 38
转载 手动搭建高可用的kubernetes 集群
export NODE_NAME=etcd01 # 当前部署的机器名称(随便定义,只要能区分不同机器即可)$ export NODE_IP=192.168.1.137 # 当前部署的机器IP$ export NODE_IPS="192.168.1.137 192.168.1.138 192.168.1.170" # etcd 集群所有机器 IP$ # etcd 集群间通信的IP和端口。
2023-11-29 00:50:39 55
转载 在 Kubernetes 上安装 Gitlab CI Runner
从 Gitlab 8.0 开始,Gitlab CI 就已经集成在 Gitlab 中,我们只要在项目中添加一个文件,然后添加一个Runner,即可进行持续集成。在介绍 Gitlab CI 之前,我们先看看一些 Gitlab CI 的一些相关概念。
2023-11-29 00:46:32 85
转载 在 Kubernetes 上安装 Gitlab
Gitlab官方提供了 Helm 的方式在 Kubernetes 集群中来快速安装,但是在使用的过程中发现 Helm 提供的 Chart 包中有很多其他额外的配置,所以我们这里使用自定义的方式来安装,也就是自己来定义一些资源清单文件。Gitlab。
2023-11-29 00:44:56 54
转载 Pod 中挂载单个文件的方法
挂载数据的时候,如果挂载目录下原来有文件,挂载后将被覆盖掉。有的时候,我们希望将文件挂载到某个目录,但希望只是挂载该文件,不要影响挂载目录下的其他文件。部分,如果 subPath 是一个文件夹的话就会去创建这个文件夹,如果是文件的话就可以进行单独挂载了。可以看到 nginx.conf 文件正是我们上面的 ConfigMap 对象中的内容,验证成功。6.原理: 下面是绑定 subPath 的源码部分,我们可以看到下面的。5.验证: 下面是我们生成的 Pod,看状态可以看出已经正常运行了。
2023-11-29 00:43:00 50
转载 kubernetes 持久化存储(二)
前面我们和大家一起学习了一些基本的资源对象的使用方法,前面我们也和大家讲到了有状态的应用和对数据有持久化的应用,我们有通过hostPath或者emptyDir的方式来持久化我们的数据,但是显然我们还需要更加可靠的存储来保存应用的持久化数据,这样容器在重建后,依然可以使用之前的数据。但是显然存储资源和 CPU 资源以及内存资源有很大不同,为了屏蔽底层的技术实现细节,让用户更加方便的使用,Kubernetes便引入了PV和PVC两个重要的资源对象来实现对存储的管理。
2023-11-29 00:37:27 14
转载 kubernetes 持久化存储(一)
前面我们和大家一起学习了一些基本的资源对象的使用方法,前面我们也和大家讲到了有状态的应用和对数据有持久化的应用,我们有通过hostPath或者emptyDir的方式来持久化我们的数据,但是显然我们还需要更加可靠的存储来保存应用的持久化数据,这样容器在重建后,依然可以使用之前的数据。但是显然存储资源和 CPU 资源以及内存资源有很大不同,为了屏蔽底层的技术实现细节,让用户更加方便的使用,Kubernetes便引入了PV和PVC两个重要的资源对象来实现对存储的管理。
2023-11-29 00:28:24 15
转载 Kubernetes RBAC 详解
前面两节课我们学习了KubernetesConfigMap和Secret,其实到这里我们基本上学习的内容已经覆盖到Kubernetes中一些重要的资源对象了,来部署一个应用程序是完全没有问题的了。RBAC- 基于角色的访问控制。RBAC使用API Group 来实现授权决策,允许管理员通过 Kubernetes API 动态配置策略,要启用RBAC,需要在 apiserver 中添加参数,如果使用的kubeadm安装的集群,1.6 版本以上的都默认开启了RBAC。
2023-11-29 00:26:09 21
转载 基于 kubernetes 的动态 jenkins slave基于 Jenkins 的 CI/CD(一)
前面的课程中我们学习了持久化数据存储在Kubernetes中的使用方法,其实接下来按照我们的课程进度来说应该是讲解服务发现这一部分的内容的,但是最近有很多同学要求我先讲解下 CI/CD 这块的内容,所以我们先把这块内容提前来讲解了。提到基于Kubernete的CI/CD,可以使用的工具有很多,比如JenkinsGitlab CI已经新兴的drone之类的,我们这里会使用大家最为熟悉的Jenkins来做CI/CD的工具。
2023-11-29 00:21:19 92
转载 Jenkins Pipeline 部署 Kubernetes 应用(二)
要实现在 Jenkins 中的构建工作,可以有多种方式,我们这里采用比较常用的Pipeline这种方式。Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。Node:节点,一个 Node 就是一个 Jenkins 节点,Master 或者 Agent,是执行 Step 的具体运行环境,比如我们之前动态运行的 Jenkins Slave 就是一个 Node 节点。
2023-11-28 23:57:50 58
转载 在kubernetes 集群上搭建docker 私有仓库Harbor
为方便管理,这里我们在模板文件中均添加一个,这样让Harbor都放在该namespace 下运行。由于我们的系统是通过来和外部进行交流的,所以这里实际上是不需要nginx 这一层的,所以可以将下面nginx 想关的操作移除掉就行。将下面的*.rc.yaml文件中的改成Deployment,因为Deployment比功能更加丰富, apiVersion 改成对应的版本,将sepc 下面的selector 删除。同样的在下面的所有*.rc.yaml(除mysql.rc.yaml外)和。
2023-11-28 23:56:49 37
转载 基于 Jenkins、Gitlab、Harbor、Helm 和 Kubernetes 的 CI/CD(一)
这节课结合前面所学的知识点给大家介绍一个完整的示例:使用 Jenkins + Gitlab + Harbor + Helm + Kubernetes 来实现一个完整的 CI/CD 流水线作业。其实前面的课程中我们就,我们利用 Kubernetes 来动态运行 Jenkins 的 Slave 节点,可以和好的来解决传统的 Jenkins Slave 浪费大量资源的缺点。
2023-11-28 23:55:53 68
转载 解决 kubernetes 重启报错的问题
后发现k8s集群起不来,有几台node节点状态是NotReady,下面展示一下吧!上面就说得很清楚了,是没有禁用 swap 导致的;由于意外突发情况,公司服务器断电关机,找到原因后,解决就快了。
2023-11-26 15:48:52 122
转载 Mac安装gitlab
前面在运行gitlab实例时,利用volume选项已经将gitlab的数据目录指定为$HOME/gitlab/data/,因此git仓库将存放在目录$HOME/gitlab/data/git-data/repositories/下。由于gitlab的设置、日志和数据都已经保存在用户目录中,升级gitlab时只需停止和删除当前的gitlab实例,再执行第2步和第3步,重新下载gitlab镜像并启动gitlab实例即可。GitLab的配置存储在/etc/gitlab/gitlab.rb文件中。
2023-11-25 22:01:24 509
转载 kubernetes v1.23.1(k8s)在centos7上快速安装指导
除了上述的一键手动更新证书之外,还可以使用 Kubernetes 证书 API 执行手动证书更新。使用wget命令,地址为:(https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml),这个地址国内访问不了,所以我把内容复制下来,这个yml配置文件中配置了一个国内无法访问的地址(quay.io),我已经将其改为国内可以访问的地址(quay-mirror.qiniu.com)。
2023-11-25 21:44:46 230
转载 如何保证API接口的安全性
只有在token有效、timestamp未超时、缓存服务器中不存在nonce三种情况同时满足,接口请求才有效。服务端可以写一个过滤器对token、timestamp和nonce进行过滤和验证。
2023-11-23 17:40:29 34
原创 如何预防mysql数据库被比特币勒索
1.MySQL密码不能太简单,也不能太短,推荐20位左右的数字大小写字母标点符号混合。2.服务器密码不能太简单,也不能太短,推荐20位左右的数字大小写字母标点符号混合。3.MySQL版本不能太低,我被破解的MySQL版本是5.5。4.MySQL默认端口号不要为默认的33065.如果条件允许,尽量选择付费版的MySQL服务器,而不要使用自己下载社区版MySQL。6.做好数据备份,建议每天睡觉前备份一次,因为破解一般实在凌晨进行,不知为什么。7.做好密码保护工作,不要在社区网站上泄露自己的密码。8.在服务器上打
2023-11-23 09:18:39 212
原创 Minikube Mac安装使用
在浏览器访问 :8080 即 http://127.0.0.1:8080/在浏览器访问 http://localhost:7080/# 等待几分钟 让docker 拉取相关镜像。# 创建 deployment 对象。# 在另一个shell 窗口执行。发布LoadBalancer。创建deployment。查看dashboard。# 暴露8080 端口。安装minikube。浏览器访问控制台地址。验证服务是否正常运行。
2023-11-20 23:49:35 424
转载 MySQL 之 LEFT JOIN 避坑指南
通过上面的问题现象和分析,可以得出了结论:在left join语句中,左表过滤必须放where条件中,右表过滤必须放on条件中,这样结果才能不多不少,刚刚好。SQL 看似简单,其实也有很多细节原理在里面,一个小小的混淆就会造成结果与预期不符,所以平时要注意这些细节原理,避免关键时候出错。
2023-11-16 19:05:56 63
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人