【Python】Python内置函数详解与实用指南
前言Python内置函数是Python编程语言中预先定义的函数,它们嵌入到Python解释器中,任何时候都能直接使用,无需导入任何模块。这些内置函数的存在极大地提升了程序员的开发效率和程序的可读性。掌握Python内置函数是每个Python开发者必备的基础技能。本文将系统地介绍Python中最常用的内置函数,并提供实用的代码示例。 一、数学运算函数(一)abs() - 绝对值函数abs()函数返回数字的绝对值。 123456789# 整数绝对值print(abs(-5)) # 输出: 5print(abs(5)) # 输出: 5# 浮点数绝对值print(abs(-3.14)) # 输出: 3.14# 复数的模print(abs(3+4j)) # 输出: 5.0 (二)round() - 四舍五入函数round()函数对数字进行四舍五入。 1234567# 基本四舍五入print(round(3.14159)) # 输出: 3print(round(3.14159, 2)) # 输出: 3.14print(round(3.141...
【LINUX】通过JumpServer访问远程Web应用
【LINUX】通过JumpServer访问远程Web应用一、前言在企业环境中,我们经常需要通过堡垒机(如JumpServer)连接和管理客户的远程服务器。在部署完Web应用后,由于网络隔离或安全策略限制,我们常常无法直接从本地浏览器访问这些应用。本文将介绍几种通过JumpServer访问远程Web应用的方法,帮助运维人员和开发者解决此类问题。 二、基本原理要通过JumpServer访问远程Web应用,本质上是建立一个从本地机器到远程服务器的安全通道,主要依靠以下技术: (一)SSH端口转发SSH端口转发(又称SSH隧道)是最常用的方法,分为以下几种: 本地端口转发:将本地端口的流量转发到远程服务器 远程端口转发:将远程端口的流量转发到本地服务器 动态端口转发:创建一个SOCKS代理服务器 (二)JumpServer的Web文件管理器一些JumpServer版本提供了文件管理器功能,可以下载远程服务器上的文件到本地。 三、通过SSH端口转发访问远程Web应用(一)本地端口转发本地端口转发是最常用的方法,适用于需要从本地访问远程Web应用的场景。 1. 命令格式1ssh -L [...
【LINUX】服务器数据库自动备份脚本实现
【LINUX】服务器数据库自动备份脚本实现一、前言在服务器运维过程中,数据库备份是一项至关重要的工作。数据是企业的核心资产,一旦数据丢失或损坏,可能会造成不可估量的损失。因此,建立一个可靠的自动备份机制是保障数据安全的基础措施。本文将详细介绍如何在Linux服务器上创建一个自动备份数据库的脚本,并通过crontab设置定时任务,实现数据库的自动备份。 二、准备工作(一)环境要求在开始之前,请确保您的服务器环境满足以下条件: Linux操作系统(本文以Ubuntu/CentOS为例) 已安装数据库服务(MySQL/MariaDB/PostgreSQL等) 具有数据库管理员权限 足够的磁盘空间用于存储备份文件 (二)备份策略规划在创建备份脚本前,笔者建议先规划好备份策略: 备份频率:每天、每周或自定义周期 备份时间:选择服务器负载较低的时间段 备份保留期:决定保留多少天的备份文件 备份存储位置:本地存储、远程服务器或云存储 备份方式:全量备份或增量备份 三、创建备份脚本(一)MySQL/MariaDB备份脚本以下是一个完整的MySQL&...
【LINUX】服务器重启后自动启动应用脚本
【LINUX】服务器重启后自动启动应用脚本一、前言服务器重启后,通常需要手动启动各种应用服务,如Nginx、Java应用、数据库等。这不仅繁琐,而且可能因为人为疏忽导致某些服务未能及时启动。本文将介绍如何编写一个自动启动脚本,使服务器重启后能自动启动所需的各种应用服务,提高系统的可用性和运维效率。 二、实现方式在Linux系统中,有多种方式可以实现应用的自动启动: (一)systemd服务方式这是现代Linux发行版(如CentOS 7+、Ubuntu 16.04+)推荐的方式。 为每个应用创建systemd服务单元文件 启用服务自启动 (二)crontab定时任务方式使用@reboot指令,在系统重启时执行指定脚本。 (三)rc.local方式在/etc/rc.d/rc.local或/etc/rc.local文件中添加启动命令。 本文将重点介绍这几种方式的具体实现。 三、systemd服务方式systemd是现代Linux系统的初始化系统和服务管理器,是实现应用自启动的首选方式。 (一)systemd服务单元文件详解systemd服务单元文件通常由三个主要部分组成:[Uni...
【LINUX】服务器常用命令
后端常用命令启动jar包命令 直接启动 1nohup java -jar web.jar > web.out 2>&1 & 在jar包同级创建文件夹config,然后用config中的配置文件启动 1nohup java -Dfile.encoding=UTF-8 -jar web.jar --spring.config.location=file:./config/ > web.out 2>&1 & 数据库常用命令导出/备份MySQL数据库 先cd到要存储备份文件的文件夹 然后执行备份命令 (一)基本备份命令12345# 导出整个数据库mysqldump -u [用户名] -p [数据库名] > [导出文件名].sql# 示例:导出名为 mydb 的数据库到 backup.sqlmysqldump -u root -p mydb > mydb_backup.sql 输入密码后即可导出数据 (二)导出特定表12345# 导出数据库中的特定表mysqldump -u [用户名] -p [...
【LINUX】常用网络工具安装与使用指南
一、前言在Linux系统管理和网络故障排查过程中,掌握一系列常用网络工具的使用方法至关重要。这些工具可以帮助我们诊断网络连接问题、分析网络性能、排查DNS解析故障等。本文将介绍几种最常用的Linux网络工具,包括它们的安装方法和基本用法。 二、基础网络工具(一)pingping是最基本的网络连通性测试工具,用于检测本机与目标主机之间的网络是否畅通。 1. 安装方法在大多数Linux发行版中,ping工具已预装在系统中,属于iputils包的一部分。 12345# Debian/Ubuntu系统确认安装apt-get install iputils-ping# CentOS/RHEL系统确认安装yum install iputils 2. 常用用法1234567891011# 基本用法ping example.com# 指定ping的次数ping -c 4 example.com# 指定发送间隔时间(秒)ping -i 2 example.com# 指定包大小(字节)ping -s 1500 example.com (二)traceroute/tracepathtra...
【LINUX】域名无法解析但IP可访问的排查与解决方案
一、问题描述在服务器环境中,笔者遇到了一个典型的网络连接问题:服务器无法通过域名访问特定目标,但直接使用IP地址却能够正常连接。具体表现为: 使用ping 域名命令无法获得响应 使用ping IP地址命令能够正常响应 其他需要域名解析的服务同样无法正常工作 这类问题通常指向DNS(域名解析系统)配置异常,本文将详细记录问题的排查过程和解决方案。 二、排查过程(一)确认问题范围首先需要确认问题的范围和具体表现: 12ping example.com # 无法连接,超时或解析失败ping 93.184.216.34 # 正常响应(假设这是example.com的IP地址) 这种情况明确表明服务器的网络连接本身是正常的,问题出在域名解析环节。 (二)检查DNS配置 查看当前DNS配置 12cat /etc/resolv.conf # Linux系统查看DNS配置ipconfig /all # Windows系统查看DNS配置 检查DNS服务器是否可达 1ping 8.8.8.8 # 测试Google公共DNS服务器连通性 ...
【Java】详解自定义对象属性复制工具类BeanPropertyUtils
前言在Java应用程序开发中,经常需要在不同的对象之间传递数据,特别是当处理数据传输对象(DTOs)、视图对象(VOs)、领域模型(Entities/Models)等分层对象时,属性的复制成为一项常见任务。虽然存在许多优秀的第三方库(如Apache Commons BeanUtils, Spring Framework BeanUtils, MapStruct等)来简化这一过程,但在某些情况下,我们可能需要更细粒度的控制、避免引入额外的重型依赖,或者仅仅是为了学习和理解其内部机制,这时编写一个自定义的对象属性复制工具类就显得很有价值。本文将详细探讨如何设计和实现一个自定义的 BeanPropertyUtils 工具类。 本工具类的设计也将遵循《【Java】编写自定义通用工具类指南》中提出的各项原则。 一、为何需要自定义对象属性复制工具? 细粒度控制:自定义实现可以让我们完全控制复制逻辑,例如: 如何处理 null 值(是跳过、赋 null 还是抛异常)。 当源和目标属性名称或类型不完全匹配时如何处理。 是否复制静态或瞬态(transient)字段。 在复制前后执行自定义...
【Java】详解对象属性变化比较工具类BeanCompareUtils
前言在许多Java应用中,跟踪对象状态的变化至关重要。例如,在数据持久化之前记录哪些字段被修改用于审计日志,或者在用户界面上高亮显示已更改的数据,亦或是在数据同步过程中仅传输变更部分。为了实现这些功能,我们需要一个能够比较两个对象并找出其属性值差异的工具。虽然有一些成熟的库(如JaVers、Apache Commons Lang的DiffBuilder)提供了强大的对象审计和比较功能,但有时我们可能需要一个更轻量级、更易于定制的解决方案。本文将探讨如何设计和实现一个自定义的BeanCompareUtils工具类来比较对象属性的变化。 本工具类的设计也将遵循《【Java】编写自定义通用工具类指南》中提出的各项原则。 一、为何需要自定义对象属性比较工具? 特定场景定制:可以根据具体业务需求定制比较逻辑,例如如何格式化差异报告、如何处理特定类型的属性(如加密字段、大型文本字段)。 轻量级集成:对于简单的比较需求,引入功能全面的大型审计库可能过于重型。 细粒度控制:完全掌控哪些属性参与比较、如何比较(例如,字符串比较是否忽略大小写、日期比较的精度等)。 学习与理解:通过自行实现,可以深入...
【Java】编写自定义通用工具类指南
前言在Java开发中,除了JDK内置的工具类和丰富的第三方库(如Apache Commons, Google Guava, Hutool等)外,我们经常需要在项目中编写自定义的通用工具类。这些工具类封装了项目中特有、可复用的逻辑,能够显著提高代码的复用性、可读性和可维护性,同时确保特定处理方式的统一性。本文将探讨编写自定义通用工具类的原因、设计原则、组织方式、以及一些最佳实践和注意事项。 一、为何需要自定义工具类?尽管有大量现成的工具可用,但在以下情况下,自定义工具类依然非常必要: 封装项目特有逻辑:某些辅助功能与具体业务场景紧密相关,或者需要组合多个原子操作形成一个项目内通用的步骤,这些不适合放在业务逻辑代码中,也不太可能被通用库覆盖。 简化常用操作:对于一些第三方库中虽然存在但使用起来较为繁琐,或者需要固定参数组合的常用操作,可以封装一层更简洁的API。 统一处理方式:确保项目中对某些特定任务(如日期格式化、特定加密解密、响应体封装等)的处理方式保持一致。 提高代码复用性:将重复代码提取到工具类中,避免在多个地方复制代码,减少冗余。 增强代码可读性:将复杂的辅助逻辑从主业务...

