当前位置: 首页 > news >正文

Java项目练习——学生管理系统

1. 整体结构

代码实现了基本的学生管理系统功能,包括登录、注册、忘记密码、添加、删除、修改和查询学生信息。
使用了ArrayList来存储用户和学生信息。
使用了Scanner类来处理用户输入。

2. 主要功能模块

登录 (logIn):验证用户名和密码,支持验证码校验。
注册 (register):验证用户名、密码、身份证号和手机号。
忘记密码 (forgetPassword):通过用户名、身份证号和手机号验证后修改密码。
管理学生信息 (Manage):提供添加、删除、修改和查询学生信息的功能。

如果有问题,希望大家指正

Student_JavaBean

package student_Management_System;public class Student_JavaBean {private String id;private String name;private int age;private String address;public Student_JavaBean() {}public Student_JavaBean(String id, String name, int age, String address) {this.id = id;this.name = name;this.age = age;this.address = address;}/*** 获取* @return id*/public String getId() {return id;}/*** 设置* @param id*/public void setId(String id) {this.id = id;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}/*** 获取* @return address*/public String getAddress() {return address;}/*** 设置* @param address*/public void setAddress(String address) {this.address = address;}
}

User_JavaBean

package student_Management_System;
public class User_JavaBean {//属性:用户名、密码、身份证号码、手机号码private String username;private String password;private String idCard;private String phone;public User_JavaBean() {}public User_JavaBean(String username, String password, String idCard, String phone) {this.username = username;this.password = password;this.idCard = idCard;this.phone = phone;}/*** 获取* @return username*/public String getUsername() {return username;}/*** 设置* @param username*/public void setUsername(String username) {this.username = username;}/*** 获取* @return password*/public String getPassword() {return password;}/*** 设置* @param password*/public void setPassword(String password) {this.password = password;}/*** 获取* @return idCard*/public String getIdCard() {return idCard;}/*** 设置* @param idCard*/public void setIdCard(String idCard) {this.idCard = idCard;}/*** 获取* @return phone*/public String getPhone() {return phone;}/*** 设置* @param phone*/public void setPhone(String phone) {this.phone = phone;}
}

主函数

package student_Management_System;import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;public class Student {public static void main(String[] args) {ArrayList<Student_JavaBean>list=new ArrayList<>();ArrayList<User_JavaBean> user=new ArrayList<>();Scanner sc=new Scanner(System.in);while(true) {System.out.println("欢迎来到学生管理系统");System.out.println("请选择操作1登录 2注册 3忘记密码 4退出");int choose_up = sc.nextInt();switch (choose_up) {case 1: {logIn(user,list);break;}case 2:register(user);searchUsername(user);break;case 3://       1,键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册//      2,键盘录入身份证号码和手机号码//	    3,判断当前用户的身份证号码和手机号码是否一致,//			如果一致,则提示输入密码,进行修改。//			如果不一致,则提示:账号信息不匹配,修改失败。forgetPassword(user);break;case 4:return;default:System.out.println("输入错误");break;}}}public static void logIn(ArrayList<User_JavaBean>user,ArrayList<Student_JavaBean>list) {//用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册//判断验证码是否正确,如不正确,重新输入//再判断用户名和密码是否正确,有3次机会Scanner sc = new Scanner(System.in);while (true) {System.out.println("请输入用户名");String username = sc.next();boolean flag = checkHava(user,username);if (flag) {int count = 2;while (count >= 0) {System.out.println("请输入密码");String password = sc.next();int flag2 = (index(user, username));if (flag2 >= 0) {if (user.get(index(user, username)).getPassword().equals(password)) {break;}System.out.println("密码错误还有" + count + "次机会");if (count == 0) {return;}count--;}}break;}else {System.out.println("登录失败,用户名不存在,请按下其它数字键重新输入,按下0退出程序");int temp = sc.nextInt();if (temp == 0) {return;}}}while (true) {System.out.println("请输入验证码");String newVerificationCode = verificationCode();System.out.println(newVerificationCode);String verificationCode = sc.next();if (verificationCode.equals(newVerificationCode)) {break;}}System.out.println("登录成功");Manage(list);}public static void Manage(ArrayList<Student_JavaBean>list){Scanner sc=new Scanner(System.in);while (true) {int choose = menu(sc);switch (choose) {case 1:add(list);break;case 2:delete(list);break;case 3:upData(list);break;case 4:search(list);break;case 5:System.out.println("退出");return;default:System.out.println("输入错误重新输入");break;}}}public static void forgetPassword(ArrayList<User_JavaBean> user) {Scanner sc = new Scanner(System.in);while (true) {System.out.println("请输入用户名");String username = sc.next();int index = index(user, username);if (index == -1) {System.out.println("用户名不存在,请按下其它数字键重新输入,按下0退出程序");int temp = sc.nextInt();if (temp == 0) {return;}continue;}while (true) {System.out.println("输入用户的身份证号");String IdCard = sc.next();if (user.get(index).getIdCard().equals(IdCard)) {break;} else {System.out.println("身份证号不匹配,请按下其它数字键重新输入,按下0退出程序");int temp = sc.nextInt();if (temp == 0) {return;}}}while (true) {System.out.println("请输入用户的手机号");String phone = sc.next();if (user.get(index).getPhone().equals(phone)) {break;} else {System.out.println("手机号不匹配,请按下其它数字键重新输入,按下0退出程序");int temp = sc.nextInt();if (temp == 0) {return;}}}System.out.println("请输入新密码");String newPassword = sc.next();user.get(index).setPassword(newPassword);System.out.println("修改成功");return;}}public static int index(ArrayList<User_JavaBean>user,String temp){for (int i = 0; i < user.size(); i++) {if(user.get(i).getUsername().equals(temp)){return i;}}return -1;}public static boolean checkHava(ArrayList<User_JavaBean>user,String username){for (int i = 0; i < user.size(); i++) {if(user.get(i).getUsername().equals(username)){return true;}}System.out.println("用户未注册,请先注册");return false;}public static String verificationCode(){Random random=new Random();char[] zLen =new char[5];for (int i = 0; i < zLen.length-1; i++) {int flag=random.nextInt(2);if(flag==0) {zLen[i] = (char) (random.nextInt(25) + 65);}else{zLen[i] = (char) (random.nextInt(26) + 97);}}zLen[zLen.length-1]=(char)(random.nextInt(10)+'0');for (int i = 0; i < zLen.length; i++) {char temp=zLen[i];int j=random.nextInt(zLen.length);zLen[i]=zLen[j];zLen[j]=temp;}return new String(zLen);}public static void searchUsername(ArrayList<User_JavaBean>user){System.out.println("用户名     身份证号\t\t\t 密码\t  手机\t");for (int i = 0; i < user.size(); i++) {System.out.println(user.get(i).getUsername()+" "+user.get(i).getIdCard()+" "+user.get(i).getPassword()+"    "+user.get(i).getPhone());}}public static void register(ArrayList<User_JavaBean>user){//用户名长度必须在3~15位之间//只能是字母加数字的组合,但是不能是纯数字//	2,密码键盘输入两次,两次一致才可以进行注册。//	3,身份证号码需要验证。//		验证要求://			长度为18位//			不能以0为开头//			前17位,必须都是数字//			最为一位可以是数字,也可以是大写X或小写x//	4,手机号验证。//		验证要求://			长度为11位//			不能以0为开头//			必须都是数字Scanner sc=new Scanner(System.in);User_JavaBean uj=new User_JavaBean();while(true) {System.out.println("请输入用户名(3-15位之间,只能字母加数字,但不能是纯数字)");String username = sc.next();boolean flag = checkUsername(username);if (flag) {uj.setUsername(username);break;} else {System.out.println("注册失败,用户名输入错误,请按下其它数字键重新输入,按下0退出程序");if(sc.nextInt()==0){return;}}}while(true){System.out.println("输入密码");String password=sc.next();if(checkPassword(password)){uj.setPassword(password);break;}else{System.out.println("两次密码输入不相同,请按下其它数字键重新输入,按下0退出程序");if(sc.nextInt()==0){return;}}}while(true){System.out.println("输入身份证号");String inCard=sc.next();if(checkInCard(inCard)){uj.setIdCard(inCard);break;}else{System.out.println("身份证号输入格式错误,请按下其它数字键重新输入,按下0退出程序");if(sc.nextInt()==0){return;}}}while(true){System.out.println("输入手机号");String phone=sc.next();if(checkPhone(phone)){uj.setPhone(phone);break;}else{System.out.println("手机号输入格式错误,请按下其它数字键重新输入,按下0退出程序");if(sc.nextInt()==0){return;}}}user.add(uj);System.out.println("注册成功!");}public static boolean checkPassword(String password){Scanner sc=new Scanner(System.in);System.out.println("请再次输入密码");String newPassword=sc.next();if(password.equals(newPassword)){return true;}System.out.println("两次输入不相同");return false;}public static boolean checkPhone(String Phone){//4,手机号验证。//		验证要求://			长度为11位//			不能以0为开头//			必须都是数字char first=Phone.charAt(0);char []temp=new char[Phone.length()];int count=0;if(Phone.length()==11){if(first!='0'){for (int i = 0; i < Phone.length(); i++) {temp[i]=Phone.charAt(i);if(temp[i]>='0'&&temp[i]<='9'){count++;}}return count == 11;}}return false;}public static boolean checkInCard(String inCard){//		验证要求://			长度为18位//			不能以0为开头//			前17位,必须都是数字//			最为一位可以是数字,也可以是大写X或小写xif(inCard.length()==18){char first=inCard.charAt(0);char []temp=new char[inCard.length()];char end=inCard.charAt(17);if(first!='0'){for (int i = 0; i < inCard.length()-1; i++) {temp[i]=inCard.charAt(i);if(temp[i]>='0'&&temp[i]<='9'){if(end>='0'&&end<='9'||end=='x'||end=='X'){return true;}}}}}System.out.println("身份证输入有误");return false;}public static boolean checkUsername(String pwd){Scanner sc=new Scanner(System.in);int len=pwd.length();if(len<3||len>15){return false;}int count=0;for (int i = 0; i < pwd.length(); i++) {char c=pwd.charAt(i);if(!(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z' || c >= '0' && c <= '9'))//判断是否是在允许的范围内{System.out.println("范围不正确");return false;}}for (int i = 0; i < pwd.length(); i++) {char c=pwd.charAt(i);//判断是否是纯数字if(c>='0'&&c<='9'){count++;}}if(count==pwd.length()){System.out.println("不能是纯数字");return false;}return true;}public static boolean checkId(ArrayList<Student_JavaBean>list,String id){for (int i = 0; i < list.size(); i++) {if(list.get(i).getId().equals(id)){return true;}}return false;}public static void delete(ArrayList<Student_JavaBean>list){Scanner sc=new Scanner(System.in);System.out.println("请输入需要删除的id");String id=sc.next();boolean flag=checkId(list,id);if(!flag){System.out.println("该id不存在");return;}for (int i = 0; i < list.size(); i++) {if(list.get(i).getId().equals(id)){list.remove(i);break;}}System.out.println("删除成功");}public static void upData(ArrayList<Student_JavaBean>list) {Scanner sc = new Scanner(System.in);Student_JavaBean sj=new Student_JavaBean();System.out.println("请输入需要修改的id");String id = sc.next();boolean flag=checkId(list,id);if(!flag){System.out.println("不存在该id");return;}System.out.println("请输入修改类型:1.id 2.姓名 3.年龄 4.地址");int type=sc.nextInt();switch (type) {case 1: {for (int i = 0; i < list.size(); i++) {if (list.get(i).getId().equals(id)) {System.out.println("输入新的id");String newId = sc.next();sj.setId(newId);list.get(i).setId(newId);System.out.println("修改成功");break;}}break;}case 2: {for (int i = 0; i < list.size(); i++) {if (list.get(i).getId().equals(id)) {System.out.println("输入新的姓名");String newName = sc.next();sj.setName(newName);list.get(i).setName(newName);System.out.println("修改成功");break;}}break;}case 3: {for (int i = 0; i < list.size(); i++) {if (list.get(i).getId().equals(id)) {System.out.println("输入新的年龄");int newAge = sc.nextInt();sj.setAge(newAge);list.get(i).setAge(newAge);System.out.println("修改成功");break;}}break;}case 4:{for (int i = 0; i < list.size(); i++) {if (list.get(i).getId().equals(id)) {System.out.println("输入新的地址");String newAddress = sc.next();sj.setAddress(newAddress);list.get(i).setAddress(newAddress);System.out.println("修改成功");break;}}break;}default:System.out.println("输入有误");break;}}public static void search(ArrayList<Student_JavaBean> list){if(list.size()==0){System.out.println("当前无学生信息,请添加后再查询");}else{System.out.println("id\t\t姓名\t年龄\t地址\t");for (int i = 0; i < list.size(); i++) {Student_JavaBean su=list.get(i);System.out.println(su.getId()+"\t"+su.getName()+"\t"+su.getAge()+"\t"+su.getAddress()+"\t");}}}public static void add(ArrayList<Student_JavaBean>list){Student_JavaBean s=new Student_JavaBean();Scanner sc=new Scanner(System.in);System.out.println("输入id:");String id=sc.next();s.setId(id);boolean flag=checkId(list,id);if(flag){System.out.println("该id已存在");return;}System.out.println("输入姓名:");String name=sc.next();s.setName(name);System.out.println("输入年龄:");int age=sc.nextInt();s.setAge(age);System.out.println("输入地址:");String address=sc.next();s.setAddress(address);list.add(s);System.out.println("添加成功");}public static int menu(Scanner sc){int choose;System.out.println("\"-------------欢迎来到学生管理系统----------------\"");System.out.println("\"1:添加学生\"");System.out.println("\"2:删除学生\"");System.out.println("\"3:修改学生\"");System.out.println("\"4:查询学生\"");System.out.println("\"5:退出\"");System.out.print("\"请输入您的选择:\"");choose=sc.nextInt();return choose;}}

相关文章:

Java项目练习——学生管理系统

1. 整体结构 代码实现了基本的学生管理系统功能&#xff0c;包括登录、注册、忘记密码、添加、删除、修改和查询学生信息。 使用了ArrayList来存储用户和学生信息。 使用了Scanner类来处理用户输入。 2. 主要功能模块 登录 (logIn)&#xff1a;验证用户名和密码&#xff0c;…...

sqlserver、达梦、mysql的差异

差异项sqlserver达梦mysql单行注释---- 1、-- &#xff0c;--后面带个空格 2、# 包裹对象名称&#xff0c;如表、表字段等 [tableName] "tableName"tableName表字段自增IDENTITY(1, 1)IDENTITY(1, 1)AUTO_INCREMENT二进制数据类型IMAGEIMAGE、BLOBBLOB 存储一个汉字需…...

Spring AOP(定义、使用场景、用法、3种事务、事务失效场景及解决办法、面试题)

目录 1. AOP定义&#xff1f; 2.常见的AOP使用场景&#xff1a; 3.Spring AOP用法 3.1 Spring AOP中的几个核心概念 3.1.1 切面、切点、通知、连接点 3.1.2 切点表达式AspectJ 3.2 使用 Spring AOP 的步骤总结 3.2.1 添加依赖: 3.2.2 定义切面和切点&#xff08;切点和…...

Flutter鸿蒙next 封装对话框详解

✅近期推荐&#xff1a;求职神器 https://bbs.csdn.net/topics/619384540 &#x1f525;欢迎大家订阅系列专栏&#xff1a;flutter_鸿蒙next &#x1f4ac;淼学派语录&#xff1a;只有不断的否认自己和肯定自己&#xff0c;才能走出弯曲不平的泥泞路&#xff0c;因为平坦的大路…...

【项目实战】通过LLaMaFactory+Qwen2-VL-2B微调一个多模态医疗大模型

前言 随着多模态大模型的发展&#xff0c;其不仅限于文字处理&#xff0c;更能够在图像、视频、音频方面进行识别与理解。医疗领域中&#xff0c;医生们往往需要对各种医学图像进行处理&#xff0c;以辅助诊断和治疗。如果将多模态大模型与图像诊断相结合&#xff0c;那么这会…...

SCSI驱动与 UFS 驱动交互概况

SCSI子系统概况 SCSI&#xff08;Small Computer System Interface&#xff09;子系统是 Linux 中的一个模块化框架&#xff0c;用于提供与存储设备的通用接口。通过 SCSI 子系统&#xff0c;可以支持不同类型的存储协议&#xff08;如 UFS、SATA、SAS&#xff09;&#xff0c…...

软件工程实践项目:人事管理系统

一、项目的需求说明 通过移动设备登录app提供简单、方便的操作。根据公司原来的考勤管理制度&#xff0c;为公司不同管理层次提供相应的权限功能。通过app上面的各种标准操作&#xff0c;考勤管理无纸化的实现&#xff0c;使公司的考勤管理更加科学规范&#xff0c;从而节省考…...

不使用三方软件,win系统下禁止单个应用联网能力的详细操作教程

本篇文章主要讲解&#xff0c;在win系统环境下&#xff0c;禁止某个应用联网能力的详细操作教程&#xff0c;通过本教程您可以快速掌握自定义对单个程序联网能力的限制和禁止。 作者&#xff1a;任聪聪 日期&#xff1a;2024年10月30日 步骤一、按下win按键&#xff08;四个小方…...

近似线性可分支持向量机的原理推导

近似线性可分的意思是训练集中大部分实例点是线性可分的&#xff0c;只是一些特殊实例点的存在使得这种数据集不适用于直接使用线性可分支持向量机进行处理&#xff0c;但也没有到完全线性不可分的程度。所以近似线性可分支持向量机问题的关键就在于这些少数的特殊点。 相较于…...

Golang开发环境

Golang开发环境搭建 Go 语言开发包 国外&#xff1a;https://golang.org/dl/ 国内(推荐)&#xff1a; https://golang.google.cn/dl/ 编辑器 Golang:https://www.jetbrains.com/go/ Visual Studio Code: https://code.visualstudio.com/ 搭建 Go 语言开发环境&#xff0c;需要…...

测试华为GaussDB(DWS)数仓,并通过APISQL快速将(表、视图、存储过程)发布为API

华为数据仓库服务 数据仓库服务&#xff08;Data Warehouse Service&#xff0c;简称DWS&#xff09;是一种基于公有云基础架构和平台的在线数据处理数据库&#xff0c;提供即开即用、可扩展且完全托管的分析型数据库服务。DWS是基于华为融合数据仓库GaussDB产品的云原生服务&a…...

使用GetX实现GetPage中间件

前言 GetX 中间件&#xff08;Middleware&#xff09;是 GetX 框架中的一种机制&#xff0c;用于在页面导航时对用户进行权限控制、数据预加载、页面访问条件设置等。通过使用中间件&#xff0c;可以有效地控制用户的访问流程&#xff0c;并在适当条件下引导用户到所需页面。 这…...

Navicat 17 功能简介 | SQL 预览

Navicat 17 功能简介 | SQL 预览 随着 17 版本的发布&#xff0c;Navicat 也带来了众多的新特性&#xff0c;包括兼容更多数据库、全新的模型设计、可视化智能 BI、智能数据分析、可视化查询解释、高质量数据字典、增强用户体验、扩展MongoDB 功能、轻松固定查询结果、便捷URI …...

ubuntu、Debian离线部署gitlab

一、软件包下载 gitlab安装包下载链接 ubuntu&#xff1a; ubuntu/focal 适用于 ubuntu20系列 ubuntu/bionic 适用于 ubuntu18 系列 Debian&#xff1a; debian/buster 适用于 Debian10系列 debian/bullseye 适用于 Debian11、12系列 二、安装gitlab ubuntu需要安装一些环境…...

数据库编程 SQLITE3 Linux环境

永久存储程序数据有两种方式&#xff1a; 用文件存储用数据库存储 对于多条记录的存储而言&#xff0c;采用文件时&#xff0c;插入、删除、查找的效率都会很差&#xff0c;为了提高这些操作的效率&#xff0c;有计算机科学家设计出了数据库存储方式 一、数据库 数据库的基本…...

独孤思维:总有一双眼睛默默观察你做副业

01 独孤昨天在陪伴群&#xff0c;分享了近期小白做副业的一些困扰。 并且以自己经历作为案例&#xff0c;分享了一些经验和方法。 最后顺势推出xx博主的关于365条赚钱信息小报童专栏。 订阅后&#xff0c;可以开拓副业赚钱思路&#xff0c;避免走一些弯路。 甚至于&#x…...

医院信息化与智能化系统(10)

医院信息化与智能化系统(10) 这里只描述对应过程&#xff0c;和可能遇到的问题及解决办法以及对应的参考链接&#xff0c;并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图&#xff0c;可以试试PlantUML&#xff0c;告诉GPT你的文件结构&#xff0c;让他给你对应…...

基于YOLO11/v10/v8/v5深度学习的危险驾驶行为检测识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…...

Flink CDC系列之:学习理解核心概念——Transform

Flink CDC系列之&#xff1a;学习理解核心概念——Transform Transform参数元数据字段函数比较函数逻辑函数字符串函数时间函数条件函数 示例添加计算列参考元数据列使用通配符投影所有字段添加过滤规则重新分配主键重新分配分区键指定表创建配置分类映射用户定义函数已知限制 …...

MyBatis-Plus:简化 CRUD 操作的艺术

一、关于MyBatis-Plus 1.1 简介 MyBatis-Plus 是一个基于 MyBatis 的增强工具&#xff0c;它旨在简化 MyBatis 的使用&#xff0c;提高开发效率。 ​ ‍ ‍ ‍ ​ ‍ 关于Mybatis 简介 MyBatis 是一款流行的 Java 持久层框架&#xff0c;旨在简化 Java 应用程序与数…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

02.运算符

目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&&#xff1a;逻辑与 ||&#xff1a;逻辑或 &#xff01;&#xff1a;逻辑非 短路求值 位运算符 按位与&&#xff1a; 按位或 | 按位取反~ …...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目

应用场景&#xff1a; 1、常规某个机器被钓鱼后门攻击后&#xff0c;我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后&#xff0c;我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...