自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ICMP(Internet Control Message Protocol)概述

ICMP(Internet Control Message Protocol,互联网控制消息协议)是一种用于在网络设备之间传递控制消息和错误报告的协议。ICMP是IP协议套件的一部分,主要用于诊断网络问题和报告通信中的错误。

2024-05-21 13:14:28 716

原创 DHCP 动态分配概述

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种网络协议,用于自动分配IP地址和其他网络配置参数(如子网掩码、默认网关、DNS服务器)给网络中的设备。这简化了网络管理,因为管理员不需要手动配置每个设备的网络设置。

2024-05-21 13:06:09 919

原创 Ubuntu 22.04上重启网络

在Ubuntu 22.04中,默认的网络管理工具是 netplan。因此,我们可以使用 netplan 或 NetworkManager 来管理网络。ip a。

2024-05-21 12:58:16 144

转载 Ubuntu 22.04 安装JDK17

转载自:https://www.jianshu.com/p/96b961e96640。

2024-05-20 12:53:54 6

原创 Redis- 如何防止攻击者利用未授权访问 Redis 服务的攻击获取目标机器的 root 权限

以下攻击步骤展示了如何利用未加防护的 Redis 服务器,通过配置 Redis 的持久化机制,将攻击者的 SSH 公钥写入目标机器的文件,从而获取目标机器的 root 权限。这是一种典型的利用未授权访问 Redis 服务的攻击方法。cd ~/.ssh/进入攻击者的~/.ssh目录。使用命令将 SSH 公钥文件id_rsa.pub的内容包裹在前后两个空行中,并重定向输出到key.txt文件。加入前后两个空行是关键,因为这样可以确保文件的格式正确,不会破坏已有的条目。

2024-05-15 13:07:53 365

原创 Linux- cron调度进程

cron是一个 Unix 类操作系统中的时间调度守护进程,用于在特定的时间或间隔运行指定的命令或脚本。它非常适合自动化系统管理和维护任务,如备份、日志轮转、系统监控等。以下是cron守护进程的详细介绍。cron。

2024-05-15 12:45:30 285

原创 云服务器上Redis数据库被攻击实录+总结

通过以上步骤,可以详细了解攻击过程,并采取有效的措施防止类似攻击的发生。增强 Redis 服务器和系统的安全性是关键,确保只有受信任的用户能够访问和管理服务器。计划任务格式:计划任务的格式是一个定时器表达式后跟执行命令。这条任务每 15 分钟执行一次curl命令下载并执行远程脚本。文件路径:攻击者将 Redis 配置为将数据持久化到cron计划任务目录,如。这导致持久化的内容成为cron守护进程的一部分计划任务。持久化机制的滥用:通过 Redis 的SAVE。

2024-05-15 11:40:15 742

原创 Maven 杂记

父工程pom.xml中的一些注意点。pom.xml中的一些注意点。

2024-04-19 16:04:53 501

原创 Maven实战—搭建微服务 Maven 工程架构

搭建一个电商平台项目,该平台包括用户服务、订单服务、通用工具模块等。

2024-04-19 15:59:20 704

原创 CentOS8 安装Cloc代码统计工具

cloc 是一款开源工具,用于计算源代码文件中的实际代码行数、注释行数和空白行数,支持多种编程语言。

2024-04-06 22:56:45 314

原创 常用的正则表达式

【代码】常用的正则表达式。

2024-03-15 23:27:09 441

原创 docker 安装 RabbitMQ & 安装 rabbitmq_delayed_message_exchange插件

RabbitMQ安装延迟交换机插件

2024-03-14 19:07:35 709 1

原创 Python- 关闭XShell后仍然保持Django项目运行

nohup是一个 Unix 和 Linux 系统上的命令,它的名称来自 “no hang up” 的简写。在了解nohup的作用之前,我们需要先理解 “挂断信号”(hangup signal,简称 HUP)的概念。在 Unix-like 系统中,当我们通过 SSH、终端或其他方式登录到一个系统并启动一个程序时,这个程序与我们的登录会话是关联的。如果会话被终止(例如,关闭终端、断开SSH连接等),系统会向所有与该会话关联的进程发送一个称为 “挂断信号”(SIGHUP)的信号。

2024-03-13 11:19:03 400

原创 Git 进行版本控制时,配置 user.name 和 user.email

在使用 Git 进行版本控制时,配置user.name和user.email是一个非常重要的初始步骤,但不是绝对必须的。这两个配置项定义了当你进行提交(commit)时用于标识提交者的信息。

2024-03-12 14:40:45 553

原创 Centos安装mysql8

【代码】Centos安装mysql8。

2024-03-09 12:31:44 363

原创 关于django makemigrations/migrate在生成数据表上遇到的一些问题

请注意,直接删除迁移文件和更改数据库可能会导致数据丢失和一些不可预见的问题,特别是在生产环境中。如果可能的话,试着避免删除迁移文件,而是使用Django提供的迁移系统来管理数据库变化。:当你删除迁移文件夹时,Django失去了追踪数据库架构变化的能力。即使你之后切换到了MySQL,由于Django没有可识别的变化(因为它依赖于迁移文件来跟踪变化),所以它不会生成新的迁移文件。如果没有检测到任何变化(即使你删除了迁移文件和更改了数据库),Django就不会创建新的迁移文件。)中的变化来生成迁移的。

2024-03-03 01:13:42 637

原创 Python中的反射

在Python中,反射(Reflection)是一种动态地访问对象和调用其方法的能力,而不需要在编写代码时显式地知道对象的类或属性。这种机制使得代码具有更高的灵活性和可扩展性。

2024-03-02 16:23:32 400

原创 HTTP 头部- Origin Referer

Origin请求头部是一个 HTTP 头部,它提供了发起请求的网页的源(协议、域名和端口)信息。它通常在进行跨域资源共享(CORS)请求时使用,以便服务器可以决定是否接受请求。假设我们在浏览器的地址栏输入并访问,这个网站上有一个 AJAX 请求,该请求需要从获取数据。当这个 AJAX 请求被发出时,浏览器会自动添加一个Origin服务器会检查这个Origin头部,根据设置的 CORS 策略来决定是否允许这个请求。如果 CORS 策略允许来自的请求,服务器将响应数据并在响应头部中包含适当的头部。

2024-02-19 23:51:25 1768 1

原创 Web- 同源策略(Same-Origin Policy, SOP)

协议(Protocol):例如,HTTP、HTTPS。域名(Host):例如,。端口(Port):例如,80(HTTP的默认端口)、443(HTTPS的默认端口)。只有当这三部分完全匹配时,两个 URL 才属于同一个源。

2024-02-19 20:30:45 1077

原创 Redis- SCAN命令

SCAN命令是 Redis 提供的一种用于迭代当前数据库中的键空间(key space)的命令。它是在 Redis 2.8 版本中引入的,旨在替代KEYS命令,以提供一种更为高效和可扩展的方式来遍历大量键。SCAN命令通过游标分批返回键集合,从而避免了一次性加载所有键到内存中引起的性能问题。

2024-02-18 15:42:06 1763

原创 Reactor模式

Reactor模式是一种用于处理并发I/O操作的设计模式,它能够在单线程或有限的多线程环境中高效地管理多个I/O操作。这种模式特别适合于I/O密集型应用,如网络服务器(Web服务器、数据库服务器等)和某些类型的事件驱动应用。Reactor模式通过将I/O事件非阻塞地分派给相应的事件处理程序来实现高效的并发行为,避免了传统的阻塞I/O调用所导致的资源浪费。

2024-02-18 12:22:25 900

原创 微服务- 熔断、降级和限流

熔断:自动检测服务故障,暂时切断服务调用,防止故障扩散,类似于电路中的熔断器。降级:在服务出现问题时,主动降低服务质量(如返回默认响应),保证核心服务的可用性。限流:控制访问频率和并发量,防止服务因过度使用而过载,确保服务的稳定性。这些技术手段通常在微服务架构中是相辅相成的,通过合理的设计和实现,可以显著提高分布式系统的弹性和稳定性。

2024-02-18 11:46:14 1761

原创 Fork/Join线程池

Fork/Join线程池是Java 7中引入的一个用于并行执行任务的框架,它的设计目的是充分利用多核处理器的计算能力,加快处理速度,提高性能。Fork/Join框架主要用于任务需要分解为多个子任务执行的场景,是一种分而治之的并行计算模型。它的核心思想是将一个大任务分解(Fork)成若干个小任务,如果这些小任务还太大,则继续分解,直到足够小可以直接计算,然后执行这些任务,并将结果合并(Join)。

2024-02-18 11:03:18 1012

原创 单点登录(SSO,Single Sign-On)

单点登录(SSO,Single Sign-On)是一种用户身份验证服务,允许用户使用一组登录凭据(如用户名和密码)访问多个应用程序或系统。SSO旨在提高用户体验和安全性,通过减少用户需要记住的密码数量,降低密码疲劳和重用的风险。以下是SSO工作原理的概述以及常见的实现技术。

2024-02-15 23:34:13 886

原创 JavaWeb- 转发(Forward)和重定向(Redirect)

在Java Web开发中,转发(Forward)和重定向(Redirect)是两种常用的页面请求处理方式,它们都可以用于在处理完一个请求后,将用户引导到另一个资源或页面。

2024-02-07 20:29:57 1041

原创 Spring- FactoryBean接口中的getObject()方法

在Spring框架中,方法通常与FactoryBean接口相关。Spring的是一个用于创建复杂对象的工厂模式的实现。当在Spring应用程序上下文中配置一个时,该Bean实际上产生的是方法返回的对象,而不是实例本身。这提供了一种灵活的方式来封装复杂对象的创建逻辑,使得这些对象可以被Spring容器管理。

2024-02-04 21:16:58 1257

原创 Java基础- equals() 和 hashCode()

方法,以确保遵守Java的约定,并保证对象可以在Java的所有集合中正确地工作。返回的值)不同,这将导致集合无法正确地存储或检索对象。方法,这是因为Java的集合框架的设计遵循了一致性的原则,即如果两个对象通过。中,我们可能会发现无法查找到刚刚放入的对象,因为查找过程依赖于。方法它们应该是相等的),从而破坏集合的唯一性约束。方法的文档明确规定了这一点,即如果两个对象根据。方法来改变对象的相等性逻辑时,同样需要重写。方法比较是相等的,那么这两个对象的。方法是相等的,那么在两个对象上调用。),但它们的哈希码(

2024-02-03 20:44:32 389

原创 Java基础- default 和 protected

是两种不同的访问修饰符,它们用来设置类、变量、方法和构造器的访问级别。理解这两者之间的区别对于管理Java程序中的访问权限非常重要。了解这些区别可以帮助在Java程序设计中更好地控制类成员的访问权限,从而提高代码的封装性和安全性。

2024-02-03 20:11:52 682

原创 Java- @FunctionalInterface声明一个接口为函数式接口

是 Java 8 中引入的注解,用于声明一个接口是函数式接口。函数式接口是指仅包含一个抽象方法的接口,可以用于支持 Lambda 表达式和方法引用。注解确保该接口只包含一个抽象方法,从而确保其满足函数式接口的定义。以下是使用注解是一种良好的实践,因为它可以提醒开发者该接口是用于支持函数式编程的,同时编译器也能够在编译时进行验证,确保接口的设计满足函数式接口的要求。

2024-01-24 22:58:41 445

原创 Java- 流式处理

流式处理(Stream API)是Java 8 中引入的一项功能,它提供了一种更为声明式和函数式的方式来处理集合数据。通过使用流,可以更轻松、清晰地执行各种集合操作,如过滤、映射、聚合等。流可以用于处理数组、集合等数据源。流式处理提供了一种更简洁、可读性更高的方式来处理集合数据,同时也能够更好地利用多核架构,提高性能。

2024-01-24 22:52:59 1556

原创 Java- 常用的函数式接口

这些函数式接口使得在Java中更容易实现函数式编程的概念,通过Lambda表达式或方法引用,可以简洁地表示各种不同类型的函数。是一些常用的函数式接口,用于表示不同类型的函数。

2024-01-24 22:44:46 535

原创 Java并发- ABA问题

ABA问题是在并发编程中出现的一种问题,特别是在使用非阻塞算法时。它主要发生在某些数据结构(如栈、队列、链表等)的原子操作中。ABA问题的名称来自于数据结构中元素的状态变化序列:元素最初处于状态A,然后被改变为状态B,最后又被改回原先的状态A。

2024-01-22 19:59:25 387

原创 浅谈Java序列化

假设我们有一个Person类,其中包含一些基本信息和一个不可序列化的字段(如线程)。我们可以自定义序列化和反序列化过程来处理这个不可序列化的字段。// 敏感信息,不希望序列化 public Employee(String name , int age , String ssn) {

2024-01-22 19:53:53 1007

原创 Java并发- wait set & entry set

在Java多线程编程中,wait set(等待集)和entry set(入口集)是两种不同的线程队列,它们用于管理线程同步和通信。它们的主要区别在于它们的用途和工作方式。wait()notify()总结来说,等待集用于线程间的协调和条件等待,而入口集用于管理对对象锁的竞争。两者都涉及线程等待的情况,但等待的原因和机制不同。在等待集中的线程是在等待某个条件的变化,而在入口集中的线程是在等待获取锁。

2024-01-21 17:47:35 695

原创 Java多线程- 生产者消费者

【代码】Java多线程- 生产者消费者。

2024-01-21 17:21:46 358

原创 Redis- AOF刷盘策略

在Redis中,是一个与持久化相关的配置选项,它属于 Redis 的 AOF(Append Only File)持久化策略的一部分。Redis支持两种主要的数据持久化方式:RDB(快照)和AOF(追加只文件)。AOF持久化通过记录每个写操作到一个日志文件来工作,以此在Redis重启后重放这些操作以恢复数据。

2024-01-20 22:38:29 791

原创 SpringMVC- ThreadLocal变量的注意点

在Web应用中,尤其是在使用Spring框架或类似的服务器端Java技术时,是一种常用的方式来存储每个请求的用户信息或上下文数据。然而,由于Web服务器通常使用线程池来处理请求,因此理解和正确使用变得至关重要。

2024-01-20 22:32:08 698

原创 Spring- 自定义注解 + 环绕通知

首先,我们需要定义一个自定义注解。这个注解将被用于标记那些需要应用特定逻辑的方法。// 可以在这里定义注解的属性// 方法实现。

2024-01-18 17:50:21 912

原创 Java基础- Function接口

整个流程是这样的:从employees列表创建一个流,过滤掉服务年限不超过 5 年的员工,然后将剩余员工的信息通过函数转换成字符串,最后将这些字符串收集到一个新的列表中。这个流水线式的处理方式使得对集合的操作既高效又易于理解。

2024-01-10 22:20:47 495

原创 Java基础- 泛型

如果一个泛型方法包含多个泛型类型参数,这些类型参数会在方法的声明中一起被指定。这允许方法在不同类型的参数上操作,而这些类型彼此之间可以是完全独立的。泛型方法的优点在于,我们可以编写一个方法,它可以在不同类型的数据上工作,而不需要针对每种数据类型编写重复的代码。泛型方法允许在方法级别上指定类型参数,提供了极大的灵活性和类型安全性。是一个类型参数,它将在整个方法中代表某个类型。是泛型方法的关键部分,它使得方法能够灵活地处理不同类型的数据,同时保持类型安全和清晰的代码结构。方法中,我们传递了一个。

2024-01-10 22:05:08 435

空空如也

空空如也

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

TA关注的人

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