自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(107)
  • 收藏
  • 关注

原创 【云原生系列】容器安全

在自己构建镜像的情况下,可以通过如下步骤尽量保障镜像安全性:首先,在编码阶段,要求工程师具备一定的安全知识,避免编写包含漏洞或可利用的代码,从代码源头上减少可被攻击的风险;除了对基本的基础设施资源进行监控外,还需要对正在运行的作业容器进行监控,保证任务的准确运行。最小化权限是容器安全中的一项基本原则,旨在减少容器运行时的攻击面,提高整体系统的安全性。这个原则强调的是仅授予容器运行所需的最低权限,避免过度的权限赋予,从而减少潜在的安全风险。应有效的收敛特权容器的存在,限制对构建环境的访问,减少潜在的风险。

2024-01-17 10:45:58 1439

原创 【云原生系列】Kubernetes知识点

容器顾名思义是一个载体,我们生活当中使用的容器,一般指的是被子,碗等等,用来装东西的。在软件开发运维方面容器承载的是应用程序及其所有依赖项(例如jdk、jar。构建后的文件、nginx)按照传统方式进行部署时,可以简单的分为两步,在操作系统上安装环境依赖,然后再跑程序。如果需要在另外一台服务器上进行部署还是需要重复上面的操作,安装依赖再运行程序。可能现在觉得两步骤并不麻烦,但当一个繁重的系统,需要依赖很多环境配置和中间件,那部署对于运维人员是一个重复且枯燥的体力活,而且一旦版本不一致还会导致其他问题的产生。

2023-11-30 14:29:15 1229

原创 【云原生系列】Docker学习

因为EXPOSE通常只是作为记录机制,也就是告诉用户哪些端口会提供服务,Docker可以很容易地把Dockerfile里的EXPOSE指令转换成特定的端口绑定规则。只需要在运行时加上-P参数,Docker会自动为用户创建端口映射规则,并且帮助避免端口映射的冲突。windows上启动没有指定路径,默认挂载路径/var/lib/docker/volumes/xxx/_data。可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换。web项目docker部署,打成镜像。

2023-09-10 21:45:16 1134 2

原创 【云原生系列】openstack搭建过程及使用

1.关闭防火墙和网关2.更换yum源最好就是选择“更新软件包”完成之后再执行一次3.安装openstack-train源4.安装packstack5.修改主机名6.修改/etc/selinux/config禁用selinux修改标红处7.临时关闭selinux8.重启及创建快照reboot。

2023-07-26 15:21:32 3017

原创 【云原生系列】云原生安全

云原生是一种构建和运行应用程序的方法,它利用云计算的弹性和可扩展性,借助容器化、微服务架构和自动化管理等特性来提高应用程序的开发、交付和管理效率。例如,自动化的漏洞扫描工具可以帮助企业及时发现和修复应用程序中的漏洞,但如果配置不当或误报漏洞,可能会导致误报和漏报的问题。企业需要采取综合的安全措施,包括容器化安全、微服务安全、自动化管理和员工安全培训等,以保护整个数字生态系统的安全性。中国企业需要建立健全的安全运维流程,包括实时监控、漏洞管理、紧急修复等,以确保云原生应用的稳定性和安全性。

2023-07-12 17:37:03 895

原创 【云原生系列】云原生介绍及未来发展

Prometheus和Grafana的组合提供了强大的监控和可视化能力,帮助开发人员实时监控和分析应用程序的性能和健康状态。云原生作为一种面向云环境的现代化软件开发和部署方法,借助云计算的优势和特性,推动了应用程序的现代化转型。随着云原生的不断发展和推广,它将继续引领着应用程序开发和部署的新潮流,助力企业实现数字化转型和创新驱动的发展。云原生技术可以用于开发和部署高度可扩展的AI和ML模型,利用容器化和自动化的特性来实现快速迭代和实验。云原生涉及许多新的技术和概念,包括容器化、微服务架构、容器编排等。

2023-07-07 16:57:34 1399

原创 【云原生系列】了解云计算

软件即服务(SaaS)是最高层次的服务模型,用户可以直接使用云提供的应用程序,而无需关心底层的基础设施和平台。云计算的发展也推动了服务模型的出现,如基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS),使用户能够根据自身需求选择所需的服务层级。虚拟化技术是云计算的基础,它通过在物理硬件上创建虚拟的资源环境,实现资源的隔离和共享。云计算平台通常具有高可用性和容错性,通过在多个地理位置部署数据中心和备份系统,可以提供持续的服务和数据备份,减少了系统故障和数据丢失的风险。

2023-07-07 16:48:22 160

原创 SQL注入引发的思考

SQL注入是一种常见的安全漏洞,出现在使用SQL(Structured Query Language)进行数据库交互的应用程序中。它允许攻击者通过将恶意的SQL代码插入到应用程序的输入字段中来执行未经授权的数据库操作。

2023-06-29 17:43:53 189

原创 windows作为网关给ubuntu服务器联网

1、windows主机(联网),网卡1上网使用;网卡2分配IP地址连接内网。2、内网ubuntu主机,主机ip和win主机网卡2同段。

2023-06-09 14:35:06 946

原创 word下载--前端Vue后端springboot

后端接口:使用poi生成文档。

2023-05-06 17:33:03 188 1

原创 文件上传--前端Vue后端springboot

【代码】文件上传--前端Vue后端springboot。

2023-05-06 17:13:02 238

原创 jar包反编译工具(java-decompiler)

我的电脑win11,下载前两个软件发现无法正常运行,在尝试第三个安装包中的程序可以正常运行。导出源代码:点击file -> Save All Sources按钮进行导出。导出源代码:点击 file-> save all 按钮进行导出。反编译的源代码基本符合,可以还原内部类。优点:反编译的源代码基本符合,没有乱七八糟新增的修饰符。导出的文件resources保存的是.class文件。导出源代码:点击 文件-> 全部保存 按钮进行导出。导出的文件sources保存的是.java文件。我的电脑目前无法使用。

2023-04-19 16:54:52 10484

原创 logback和log4j日志框架堆栈信息添加TraceId

logback和log4j修改打印的堆栈信息

2023-03-24 18:43:43 3812 4

原创 mongoDB多表联查以及MongoTemplate的表联查API使用

mongoDB多表联查代码使用

2022-07-28 19:56:51 1990 1

原创 POI使用--循环word模版填入对应数据、图片(包含嵌套循环)

1.目录结构2.引入依赖 <!--poi-tl word支持--> <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.10.2</version> <.

2022-05-23 20:32:55 8244 6

原创 lambda表达式完成aop切面功能

背景:最近项目中涉及到自定义线程池中子线程获取父线程的traceId,这个数据的传递过程可以用lamdba表达式进行封装实现的。这让我想到spring容器的三级缓存。其中的一个缓存singletonFactories就是存放的lambda表达式的。// 缓存的声明private final Map<String, ObjectFactory<?>> singletonFactories = new HashMap<>(16);// lambda作为参数调用a

2022-02-16 18:10:44 856 1

原创 Spring Boot中调用@Async注解的异步方法并获取返回值

该方法无需创建任何实体,只需要通过传参即可获取返回结果需求背景 最近正在研发的系统有接口需要从多个表中获取数据进行处理,所以打算使用多线程异步获取到这几个表处理后的数据结果。由于Spring Boot提供多线程ThreadPoolTaskExecutor类,使用代码如下代码配置类@Configurationpublic class ThreadPoolConfig { @Value("${threadpool.core-pool-size}") private ...

2021-12-22 14:11:57 8229

原创 shell语句结构

比较语法字符串比较是否为空 [ -z 字符串 ] 等于 [ 字符串1 = 字符串2 ] 不等于 [ 字符串1 != 字符串2 ]方括号、字符和等式之间必须要有一个空格# 判断变量TT是否为空liangjiabao@liangjiabaodeMacBook-Air mongodb-macos-x86_64-5.0.3 % [ -z "$TT"]liangjiabao@liangjiabaodeMacBook-Air mongodb-macos-x86_64-5.0.3 % echo

2021-12-08 19:36:25 146

原创 shell语法基础

解释器查看所有的解释器cat /etc/shells查看正在使用的解释器类型grep root /etc/passwd输出>代表正确输出指定位置2>代表错误输出指定位置&>表示所有(正确和错误都包括)输出指定位置>>表示追加定义变量定义变量的格式:变量名 = 变量值取消变量的格式:unset 变量名注意事项变量名可以字母/数字/下划线组成,不能以数字开始变量名的语

2021-10-27 20:18:46 160

原创 ThreadLocal源码分析理解弱引用和内存泄漏

目录一、说明三个API二、源码分析setThreadLocalMap底层结构结构图map.setgetremoveexpungeStaleEntryresize扩容三、思考与总结想共享线程的ThreadLocal数据怎么办?为什么ThreadLocalMap的key要设计成弱引用?示例代码代码中对象所在堆栈的对应图释放线程中引用后堆栈对应图使用弱引用将key为null,对应的Entry如何清除?内存泄露问题解决一、说明T

2021-07-22 14:43:52 3672 3

原创 redis乐观锁和悲观锁在spring boot的使用

目录乐观锁:使用乐观锁任务类悲观锁使用setnx分布式锁redission引入pom配置类任务类总结乐观锁:认为什么时候都不会出问题,所以不会上锁!更新数据的时候去判断一下,在此期间是否有人修改过这个数据 获取version 更新时候比较version使用监听操作和事务操作实现乐观锁测试多线程修改值,使用watch可以当作redis的乐观锁操作在事务执行之前先watch key,当事务前后key改变了事务失败,那就先取消监视,再重新监视进行事务操

2021-07-21 17:06:16 1859 2

原创 Mysql索引

1.定义索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。Mysql官方:索引是一种优化查询的数据结构2.索引类型哈希表哈希表这种结构适用于只有等值查询的场景。范围查询不好使全文索引(FullText Key)全文索引主要是为了检索大文本数据中的关键字的信息,是目前搜索引擎数据库使用的一种技术。Mysql5.6 之前只有 MYISAM 引擎支持全文索引,在5.6版本中,InnoDB加入了对全文索引的支持,但是不支持中文全文索引.在5.7.6版本,MySQL内

2021-07-02 22:05:37 1058 9

原创 HashMap红黑树原理及源码分析---图形、注释一应俱全

一、红黑树定义红黑树是一种结点带有颜色属性的二叉查找树,除此还有以下5大性质: 节点是红色或黑色。 根是黑色。 所有叶子都是黑色(叶子是NIL节点,这类节点不可以忽视,否则代码会看不懂)。 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。) 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点(黑色平衡)。NIL节点:为了红黑树平衡而添加的空节点二、节点新增原理:如果插入的是第一个节点(根节点),红色变黑色。-----基

2021-06-13 16:30:34 6929 14

原创 Spring循环依赖是如何解决的?

什么是循环依赖如何解决循环依赖问题spring通过提前暴露对象的方式(完成实例化但是没有初始化的对象)解决循环依赖问题

2021-05-30 18:40:21 1294 6

原创 JVM是如何回收垃圾的?

JVM如何回收垃圾其实就是GC操作,那GC操作的步骤是什么?我们可以将它分为两个步骤:找垃圾和清除垃圾

2021-05-30 16:27:56 350 4

原创 阅读Spring官网总结Aop用法

前置通知使用切入点表达式 @Before("execution(* com.xyz.myapp.dao.*.*(..))") public void doAccessCheck() { // ... }返回后通知 @AfterReturning( pointcut="com.xyz.myapp.CommonPointcuts.dataAccessOperation()", returning="retVal.

2021-05-30 12:10:18 628 4

原创 Spring的IoC容器Bean创建过程从理论到源码分析

文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言我们都知道Spring有以下很多优点:方便解耦,简化开发。降低了业务对象替换的复杂性,可以让开发人员更关注业务逻辑 方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付 数据库事务问题 ......1.那IOC起到了什么作用?IOC容器的主要作用其实就是第一点说的,方便解耦,简化开发。(1).那它是如何解耦的?这就.

2021-05-08 16:48:21 16593 34

原创 Map排序和遍历

computeIfAbsent最常见的用法是构造一个用作初始映射值或记忆结果的新对象,如:map.computeIfAbsent(key, k -> new Value(f(k)));或者实现一个多值地图, Map<K,Collection<V>> ,每个键支持多个值:map.computeIfAbsent(key, k -> new HashSet<V>()).add(v);getOrDefault(Object key, V .

2021-03-31 22:08:52 207 3

原创 SpringBoot七大传播机制

事务传播行为类型 说明 PROPAGATION_REQUIRED required(必修的) 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。 PROPAGATION_SUPPORTS supports(支持的) 支持当前事务,如果当前没有事务,就以非事务方式执行。 PROPAGATION_MANDATORY ...

2021-03-31 22:03:41 315 1

原创 aop中Pointcut切入点指示符

execution:用于匹配方法执行的连接点。这是在使用Spring AOP时要使用的主要切入点指示符。 within:将匹配限制为某些类型内的连接点(使用Spring AOP时,在匹配类型内声明的方法的执行)。 this:在bean引用(Spring AOP代理)是给定类型的实例的情况下,将匹配限制为连接点(使用Spring AOP时方法的执行)。 target:在目标对象(代理的应用程序对象)是给定类型的实例的情况下,将匹配限制为连接点(使用Spring AOP时方法的执行)。 args:将匹配

2021-03-31 22:01:50 1222 1

原创 java分别发送post请求application/x-www-form-urlencoded和application/json类型数据

有时候我们在postman上调用接口它可以正常返回结果,但是自己写后端代码时报400错误时,这可能就是对请求头的Content-Type没有设置的结果。post提交数据有多种方式,而application/x-www-form-urlencoded和application/json都是比较常见的方式。x-www-form-urlencoded是表单提交的一种,表单提交还包括multipart/form-data。以 application/x-www-form-urlencoded 方式提交数据,会

2021-03-05 20:58:51 22871 8

原创 compare()和compareTo()区别

compareToa.compareTo(b):将此对象与指定的对象进行比较以进行排序。Comparable接口:比较值并返回一个int,它告诉值是否比较小于,等于或大于。如果您的类对象具有自然顺序,请实现该Comparable<T>接口并定义此方法。所有具有自然排序实现的Java类Comparable<T>- 示例:String,包装类,BigIntegercomparecompare(a, b):比较其两个参数的顺序。比较器接口:比较两个对象的值。..

2020-10-28 17:04:05 2296 13

原创 多层嵌套break跳出指定循环

平常break最常出现的就是在for循环或者while循环中跳出到当前循环,但是在多层循环嵌套下break还能跳出指定的循环语法结构如下"自己定义的名称" : { for|while(){ break "自己定义的名称"; }}实例:定义两个数组 int[] nums1 = new int[6]; nums1[4] = 4; int[] nums2 = new int[6]; ..

2020-10-23 10:19:25 4702 8

原创 xxlJob与Spring Boot原生定时器的区别

xxljob我接触是在做钉钉考勤项目的时候,自己的接口模块是一个job,每天早上固定时间去调钉钉的接口获取当天的排班信息。而@Scheduled是在学习视频时接触到,敲了一个demo。说起来xxljob和@Scheduled定时器的区别,之前只是知道这两个都是用来定时执行的。并且之前的理解就是这两个应该差不多可以等价,后来得到了一些启发。进行深究这两个区别。先来简单介绍下xxljob,xxl-job是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。@Schedule

2020-08-21 21:58:19 5072 2

原创 思想上移,行动下移

天将降大任于斯人也,何为大任?报效国家还是造福人类?任何事情能够成功都是做好一件件小事积累成的。勿以恶小而为之,勿以善小而不为,就是这个道理。成才的秘密锦囊就是认真对待每一个细节。责任心体现在对待细微事情的态度上,态度决定一切,细节决定成败。歌德曾说:“决定一个人的一生,以及整个命运的,只是一瞬间。”这一瞬间指的就是对待大小事务的态度,以及每件事情的责任心。人就是由于对待大小事情的态度不同,结果也有了千差万别。我们生活中,如何把一件件看似不起眼的小事做好、做细,做成功。取决于我们是否有责任心和一双善于发

2020-08-21 20:38:43 317 3

原创 软件设计(原则)的理解和认识

我们的代码要有变得灵活可用,便于维护,符合用户的业务需求,不能死板。封装好代码,将共用的代码封装起来。让程序符合低耦合、高内聚的特性,功能易于扩展,思路更清晰。在此基础上还要多写注释,增加程序员对代码的可读性,提高用户的体验。...

2020-08-04 20:58:33 375 4

原创 SpringBoot配置swagger2过程和详解

pom文件首先pom文件中引入依赖 <!--swagger2 依赖--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> </dependency> <dependency

2020-06-29 16:43:46 7028 9

原创 IDEA中依赖报错Error:java: Annotation processing is not supported for module cycles...

报错提示:解决步骤:选择file->project structure->Modules由于我的maven项目是yingxue-web依赖yingxue-service,所以要删除yingxue-service中的yingxue-web依赖,留下yingxue-web中的yingxue-service依赖。问题原因:就是依赖循环,使得程序无法运行...

2020-06-20 14:58:24 16923 3

原创 匿名函数转换lambda表达式实例步骤

实例 // 1 完成匿名函数 Runnable runnable = new Runnable() { @Override public void run() { System.out.println("run"); } }; new Thread(runnable).start(); // 2 省略实例化对象

2020-06-14 11:06:13 906 3

原创 代码审查服务gerrit搭建+httpd反向代理

一、安装依赖:安装java8依赖[root@localhost ~]# yum install java-1.8.0-openjdk* -y安装git依赖[root@localhost ~]# yum install git二、安装httpd反向代理[root@localhost ~]# yum install httpd三、搭建gerrit1.创建gerrit用户[root@localhost ~]# adduser gerrit2.切换到gerrit用户中

2020-06-01 21:52:30 1509 3

空空如也

空空如也

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

TA关注的人

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