使用PYQT制作人才交流管理系统

news2024/11/17 0:00:29

利用使用PYQT制作一个人才交流管理系统,先使用QT designer.exe设计好人才交流管理系统的各个UI界面,然后利用pyuic把生成的ui界面编译为py文件,在主函数文件内创建一个类继承ui.py界面的类,即可完成数据库逻辑与 GUI 代码分离,以提高可维护性和可重用性。

源码:

https://gitee.com/ink-ink0/hrm.git

1.系统简介

        系统采用PyCharm作为开发语言,采用Qt Designer来设计图形化界面,该工具有助于开发者加快开发PyQt程序的速度,并采用Qt里的一个强大的GUI库PyQt5进行开发,本系统连接MySql数据库,具备注册登录功能,以及对数据库的增、删、查、改功能。

        基于上述开发工具和技术,本系统具有新用户的注册登录功能,用户在注册登录时选择好是求职者用户还是公司用户还是管理员用户的身份,然后根据登入的身份来进入不同的界面。公司用户可以查看所有求职者简历信息、查看投递到本公司的简历信息并选择心仪的简历、查看统计共选择了多少份简历的功能,以及增删改查本公司的招聘信息;求职者可以投递简历,查阅公司发布的岗位信息,查阅公司信息,查询简历状态,增删改查自己的信息;管理员用户可以管理员可以查看所有求职者的简历信息、公司的基本信息、招聘信息以及所有的账号密码信息,具有删除指定用户、修改用户密码、直接添加新用户、对注册公司进行审核的功能,同时还可以统计平台的用户人数以及通过该平台成功就职的总人数。

2.需求分析

2.1 功能需求    

 系统功能表

业务流程图

3.数据库设计

表3.2.5公司信息表:com_infor

数据项名称

数据类型

允许非空

默认值

描述

c_id

int

N

公司编号

c_name

varchar(100)

N

公司名称

c_type

varchar(50)

Y

公司类型

work_addr

varchar(100)

Y

公司地址

c_tele

varchar(20)

Y

公司联系电话

c_email

varchar(50)

Y

公司联系电子邮箱

表3.2.6公司招聘消息表:recruit

数据项名称

数据类型

允许非空

默认值

描述

c_id

int

N

公司编号

company_type

varchar(50)

N

公司类型

company

varchar(100)

N

公司名称

position

varchar(50)

N

工作名称

position_require

varchar(100)

N

工作需求

job_duty

varchar(100)

N

工作职责

money

decimal(10,2)

N

薪资

job_place

varchar(100)

N

工作地点

表3.2.7求职者信息表:jobseeker

数据项名称

数据类型

允许非空

默认值

描述

id

int

N

求职者注册时获得的编号

name

varchar(50)

N

姓名

sex

varchar(10)

N

性别

email

varchar(50)

N

电子邮箱

phone

varchar(20)

N

联系电话

address

varchar(100)

N

地址

education

varchar(50)

N

学历

graduate_institutions

varchar(50)

N

毕业院校

work_experience

varchar(100)

Y

工作经验

skills

varchar(100)

Y

专业技能

intention

varchar(50)

N

就业意向

status

 tinyint(1)

Y

0

录取结果(1为已录,0为未录

创建表的sql语句 

一、公司招聘信息表
CREATE TABLE `recruit` (
  `c_id` int unsigned NOT NULL,
  `company_type` varchar(50) NOT NULL DEFAULT '无',
  `company` varchar(100) NOT NULL DEFAULT '无',
  `position` varchar(50) NOT NULL DEFAULT '无',
  `position_require` varchar(100) NOT NULL DEFAULT '无',
  `job_duty` varchar(100) NOT NULL DEFAULT '无',
  `money` decimal(10,2) NOT NULL DEFAULT '0.00',
  `job_place` varchar(100) NOT NULL DEFAULT '无'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1.增加一条信息
INSERT INTO `recruit` (`c_id`, `company_type`, `company`, `position`, `position_require`, `job_duty`, `money`, `job_place`) VALUES
('1', 'IT', 'ABC公司', 'Java开发工程师', '本科及以上学历,精通Java编程,熟悉Spring、MyBatis等框架', '负责公司项目的开发和维护工作', '15K-20K', '北京市海淀区'),
('2', '金融', 'XYZ银行', '信用卡销售代表', '大专及以上学历,有销售经验者优先考虑', '负责银行信用卡的销售和推广工作', '底薪+提成', '上海市浦东新区'),
('3', '教育', 'EFG培训机构', '英语教师', '本科及以上学历,英语专业优先,有教学经验者优先考虑', '负责英语课程的教学和管理工作', '10K-15K', '广州市天河区');

2.更新一条招聘信息
UPDATE `recruit` SET `position_require`='本科及以上学历,有3年以上的工作经验' WHERE `c_id`=1;

3.删除一条招聘信息
DELETE FROM `recruit` WHERE `c_id`=1;
4.查询所有招聘信息
SELECT * FROM `recruit`;
5.按公司名称查询招聘信息
SELECT * FROM `recruit` WHERE `company`='ABC公司';
6.按职位名称和薪资范围查询招聘信息
SELECT * FROM `recruit` WHERE `position`='销售代表' AND `money`>=4000.00 AND `money`<=6000.00;


二、公司信息表
CREATE TABLE `com_infor` (
  `c_id` int unsigned NOT NULL,
  `c_name` varchar(100) NOT NULL,
  `c_type` varchar(50) DEFAULT '无',
  `work_addr` varchar(100) DEFAULT '无',
  `c_tele` varchar(20) DEFAULT '无',
  `c_email` varchar(50) DEFAULT '无',
  PRIMARY KEY (`c_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
以下是增删改查的 SQL 语句:

1. 添加一家公司信息
INSERT INTO `com_infor` (`c_id`, `c_name`, `c_type`, `work_addr`, `c_tele`, `c_email`) 
VALUES (1, 'ABC公司', '私营企业', '北京市朝阳区', '010-12345678', 'abc@example.com');
2. 更新一家公司信息
UPDATE `com_infor` SET `work_addr`='北京市海淀区' WHERE `c_id`=1;
3. 删除一家公司信息
DELETE FROM `com_infor` WHERE `c_id`=1;
4. 查询所有公司信息
SELECT * FROM `com_infor`;
5. 按公司名称查询公司信息
SELECT * FROM `com_infor` WHERE `c_name`='ABC公司';
6. 按公司类型和工作地点查询公司信息
SELECT * FROM `com_infor` WHERE `c_type`='外资企业' AND `work_addr`='北京市朝阳区';



三、求职者回应的招聘表
CREATE TABLE `applications` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `company` varchar(50) NOT NULL,
  `position` varchar(50) NOT NULL,
  `resume_status` varchar(20) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3

以下是增删改查的 SQL 语句:
1. 添加一份简历投递记录
INSERT INTO `applications` (`name`, `company`, `position`, `resume_status`) 
VALUES ('张三', 'ABC公司', '销售代表', '已投递');
2. 更新一份简历投递记录的状态
UPDATE `applications` SET `resume_status`='已面试' WHERE `id`=1;
3. 删除一份简历投递记录
DELETE FROM `applications` WHERE `id`=1;
4. 查询所有简历投递记录
SELECT * FROM `applications`;
5. 按姓名查询简历投递记录
SELECT * FROM `applications` WHERE `name`='张三';
6. 按公司和职位查询简历投递记录
SELECT * FROM `applications` WHERE `company`='ABC公司' AND `position`='销售代表';


求职者信息表
CREATE TABLE `jobseeker` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `sex` varchar(10) NOT NULL,
  `email` varchar(50) NOT NULL,
  `phone` varchar(20) NOT NULL,
  `address` varchar(100) NOT NULL,
  `education` varchar(50) NOT NULL,
  `graduate_institutions` varchar(50) NOT NULL,
  `work_experience` varchar(100) DEFAULT NULL,
  `skills` varchar(100) DEFAULT NULL,
  `intention` varchar(50) NOT NULL,
  `status` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8mb3



四、管理员账户密码表
CREATE TABLE `admins` (
  `id` int NOT NULL,
  `type` varchar(10) DEFAULT '管理员',
  `username` text NOT NULL,
  `password` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
以下是增删改查的 SQL 语句:
1. 添加一个管理员账户
INSERT INTO `admins` (`id`, `type`, `username`, `password`) 
VALUES (1, '管理员', 'admin', 'password123');
2. 更新管理员账户的密码
UPDATE `admins` SET `password`='newpassword123' WHERE `id`=1;
3. 删除一个管理员账户
DELETE FROM `admins` WHERE `id`=1;
4. 查询所有管理员账户
SELECT * FROM `admins`;
5. 按用户名查询管理员账户
SELECT * FROM `admins` WHERE `username`='admin';
6. 按账户类型查询管理员账户
SELECT * FROM `admins` WHERE `type`='管理员';


五、求职者账户密码表
CREATE TABLE `user_job_seekers` (
  `id` int NOT NULL AUTO_INCREMENT,
  `type` varchar(10) DEFAULT '求职者',
  `job_seeker_name` varchar(50) NOT NULL,
  `username` varchar(255) NOT NULL,
  `password` text NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username_unique` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3
以下是增删改查的 SQL 语句:
1. 添加一份求职者信息
INSERT INTO `jobseeker` (`name`, `sex`, `email`, `phone`, `address`, `education`, `graduate_institutions`, `work_experience`, `skills`, `intention`, `status`) 
VALUES ('张三', '男', 'zhangsan@example.com', '13812345678', '北京市朝阳区', '本科', '清华大学', '3年工作经验', '熟练掌握Java编程', '软件开发工程师', 0);
2. 更新一份求职者信息
UPDATE `jobseeker` SET `work_experience`='5年工作经验' WHERE `id`=1;
3. 删除一份求职者信息
DELETE FROM `jobseeker` WHERE `id`=1;
4. 查询所有求职者信息
SELECT * FROM `jobseeker`;
5. 按姓名查询求职者信息
SELECT * FROM `jobseeker` WHERE `name`='张三';
6. 按学历和求职意向查询求职者信息
SELECT * FROM `jobseeker` WHERE `education`='本科' AND `intention`='软件测试工程师';

六、公司HR用户账户密码表
CREATE TABLE `user_hrs` (
  `id` int NOT NULL AUTO_INCREMENT,
  `type` varchar(10) DEFAULT '公司HR',
  `username` varchar(255) NOT NULL,
  `password` text NOT NULL,
  `company_name` varchar(50) NOT NULL,
  `status` int DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `username_unique` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3

以下是增删改查的 SQL 语句:

1. 添加一个公司 HR 账户
INSERT INTO `user_hrs` (`type`, `username`, `password`, `company_name`, `status`) 
VALUES ('公司HR', 'hr@abc.com', 'password123', 'ABC公司', 1);
2. 更新公司 HR 账户的密码
UPDATE `user_hrs` SET `password`='newpassword123' WHERE `id`=1;
3. 删除一个公司 HR 账户
DELETE FROM `user_hrs` WHERE `id`=1;
4. 查询所有公司 HR 账户
SELECT * FROM `user_hrs`;
5. 按用户名查询公司 HR 账户
SELECT * FROM `user_hrs` WHERE `username`='hr@abc.com';
6. 按状态和公司名查询公司 HR 账户
SELECT * FROM `user_hrs` WHERE `status`=1 AND `company_name`='ABC公司';





4. 详细的设计与实现

4.1登入界面主界面

4.1.1定义初始化方法 

首先通过pyqt5来使用python中的gui框架,定义一个login类,继承mainwindow和login_ui_form,用self.textEdit.toPlainText()去接收user,获取用户输入框中的用户名内容,用self.textEdit.text()去接收pwd,获取密码输入框中的密码内容,用user_type去选择用户类型是求职者,公司HR,还是管理员。

部分登入代码:towin.py

具体完整代码因为太长,会放在资源处,需修改代码中的数据库名称,用户名称和密码才可以运行

https://gitee.com/ink-ink0/hrm.git

#登入功能----------------------------------------------------------------
class Login(QMainWindow,login_Ui_Form):
    def __init__(self):
        super(Login, self).__init__()
        self.setupUi(self)
        self.buttonGroupuser_type.buttonClicked.connect(self.afterClickButton)#单选按钮设置
        self.pushButton.clicked.connect(self.login_btn)
        self.resign_first_win = None
        self.pushButton_2.clicked.connect(self.Open_resign_first)
        self.main_window =None
        self.jobseeker_change_win=None
        self.admin_main_window = None
        self.company_window=None

    def Open(self):
        self.show()
    def Open_resign_first(self):
        if not self.resign_first_win:
            self.resign_first_win=Resigin_first_Ui_Form()
        self.resign_first_win.Open()


    def jobseeker_login(self):
        pass
    def afterClickButton(self):
        btn=self.buttonGroupuser_type.checkedButton()
        type=btn.text()
        #print(type)
        return type

    def resign(self):
        print("注册")

    def login(self):
        print("login")
        conn = pymysql.connect(host='localhost',
                                user='root',
                                password='123456',
                                database='myhrms',
                                charset='utf8')
        user = self.lineEdit.text()
        pwd = self.lineEdit_2.text()
        user_type = self.afterClickButton()
        print(user_type)
        # 创建一个md5对象
        md5 = hashlib.md5()
        # 更新要加密的内容
        md5.update(pwd.encode('utf-8'))
        # 获取加密后的十六进制字符串
        pwd_md5 = md5.hexdigest()

        cur = conn.cursor()  # 生成游标对象
        result = None
        if user_type == '求职者':
            sql = "SELECT * FROM user_job_seekers WHERE username = %s AND password = %s "
            params = (user,pwd_md5)
            cur.execute(sql, params)
            result = cur.fetchone()
        elif user_type == '公司HR':
            sql = "SELECT * FROM user_hrs WHERE username = %s AND password = %s "
            params = (user,pwd_md5)
            cur.execute(sql, params)
            result = cur.fetchone()
        elif user_type == '管理员':
            sql = "SELECT * FROM admins WHERE username = %s AND password = %s "
            params = (user,pwd_md5)
            cur.execute(sql, params)
            result = cur.fetchone()

        cur.close()
        conn.close()
        return result, user_type

    def login_btn(self):
        try:
            result, user_type = self.login()
            print("login_btn_result", result)
            if result:
                print("成功登入")
                login.hide()
                type = result[1]
                user = result[3]
                print("result",result)
                print("type,user", type, user)
                if type == "求职者":
                    user = result[3]
                    self.Open_jobseeker(user)
                elif type == "公司HR":
                    user = result[2]
                    conn = pymysql.connect(host='localhost',
                                           user='root',
                                           password='123456',
                                           database='myhrms',
                                           charset='utf8')
                    cur = conn.cursor()  # 生成游标对象
                    sql1 = "select * from user_hrs where username =%s "
                    params = (user)
                    cur.execute(sql1, params)
                    data = cur.fetchall()  # 通过fetchall方法获得数据
                    stu = data[0][6]
                    print("公司HR",data[0][6])
                    # 打开公司HR界面
                    if stu ==1:
                        print("公司HR登入")
                        self.Open_company(user)
                    else:
                        print("管理员还未同意账号登入")
                        QMessageBox.warning(self, '错误', '管理员还未同意账号登入')

                elif type == "管理员":  # 打开管理员界面
                    self.Open_admin()
                    print("管理员登入")
                return type, user
            else:
                # self.textBrowser.setText("登录失败,请重试")
                QMessageBox.warning(self, '错误', '用户名或密码错误!')
                return None
        except Exception as e:
            print("登录失败,错误信息为:", e)
            QMessageBox.warning(self, '错误', '登录失败,请重试!')
            return None

login.py:此文件为设计登入界面的UI后编译成py文件 

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'login.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class login_Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(905, 496)
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(440, 350, 111, 61))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(Form)
        self.pushButton_2.setGeometry(QtCore.QRect(170, 350, 111, 61))
        self.pushButton_2.setObjectName("pushButton_2")
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(90, 130, 72, 15))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(Form)
        self.label_2.setGeometry(QtCore.QRect(100, 210, 72, 15))
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(Form)
        self.label_3.setGeometry(QtCore.QRect(90, 290, 72, 15))
        self.label_3.setObjectName("label_3")
        self.radioButton = QtWidgets.QRadioButton(Form)
        self.radioButton.setGeometry(QtCore.QRect(200, 290, 115, 19))
        self.radioButton.setObjectName("radioButton")
        self.buttonGroupuser_type = QtWidgets.QButtonGroup(Form)
        self.buttonGroupuser_type.setObjectName("buttonGroupuser_type")
        self.buttonGroupuser_type.addButton(self.radioButton)
        self.radioButton_2 = QtWidgets.QRadioButton(Form)
        self.radioButton_2.setGeometry(QtCore.QRect(350, 290, 115, 19))
        self.radioButton_2.setObjectName("radioButton_2")
        self.buttonGroupuser_type.addButton(self.radioButton_2)
        self.radioButton_3 = QtWidgets.QRadioButton(Form)
        self.radioButton_3.setGeometry(QtCore.QRect(520, 290, 115, 19))
        self.radioButton_3.setObjectName("radioButton_3")
        self.buttonGroupuser_type.addButton(self.radioButton_3)
        self.lineEdit = QtWidgets.QLineEdit(Form)
        self.lineEdit.setGeometry(QtCore.QRect(190, 120, 341, 31))
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(Form)
        self.lineEdit_2.setGeometry(QtCore.QRect(190, 200, 341, 31))
        self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)
        self.lineEdit_2.setObjectName("lineEdit_2")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "登入界面"))
        self.pushButton.setText(_translate("Form", "登入"))
        self.pushButton_2.setText(_translate("Form", "注册"))
        self.label.setText(_translate("Form", "用户名"))
        self.label_2.setText(_translate("Form", "密码"))
        self.label_3.setText(_translate("Form", "用户类型"))
        self.radioButton.setText(_translate("Form", "求职者"))
        self.radioButton_2.setText(_translate("Form", "公司HR"))
        self.radioButton_3.setText(_translate("Form", "管理员"))

5.效果演示

5.1求职者模块

 

 

 

 

5.2公司HR用户模块

 

 

 

 

 

5.3管理员模块

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/730596.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小米不再忍耐,裁员三分之一强势反击印度,印度制造或因此梦破

就在小米公司表态继续投资印度之后不久&#xff0c;印度媒体报道指小米印度公司的员工数量从1500人减少到1000人左右&#xff0c;这显示出小米开始强势反击印度&#xff0c;业界人士指出此举的影响远不止于此&#xff0c;结果很可能是导致印度制造的梦想破灭。 1.小米为印度手机…

软件工程——第9章面向对象方法学引论知识点整理

本专栏是博主个人笔记&#xff0c;主要目的是利用碎片化的时间来记忆软工知识点&#xff0c;特此声明&#xff01; 文章目录 1.当前最好的软件开发技术是&#xff1f; 2.面向对象的原则是什么&#xff1f; 3.人们把客观世界中的实体抽象为什么&#xff1f; 4.软件系统本质上…

主诉病程时长提取

编写Python函数 import re def structured_pro(original_text,keyword,out_unitNone):pattern_split_str[。&#xff0c;]pattern_splitre.compile(pattern_split_str,re.I|re.M)original_listpattern_split.split(original_text)pattern_keywordre.compile(keyword,re.I|re.M…

目前最好的MicrosoftProject替代方案

Microsoft Project是一个功能强大的项目管理工具。然而它可能是昂贵的&#xff0c;并且可能不适合所有的项目管理需求。幸运的是&#xff0c;有几个Microsoft Project的替代方案提供了类似的特性和功能。在本文中我们将探索目前可用的一些最好的Microsoft Project替代方案。 1、…

12.4 ARM异常处理

目录 ARM异常处理&#xff08;一&#xff09; 异常 概念 异常处理机制 ARM异常源 概念 ARM异常源 ARM异常模式 ARM异常处理&#xff08;二&#xff09; ARM异常响应 异常向量表 异常返回 IRQ异常举例​编辑 ARM异常处理&#xff08;三 &#xff09; 异常优先级 …

自我介绍这样写?

已经帮小伙伴改了 500 多份简历了&#xff0c;也发现了一些大家写简历时的共性问题。其中让我印象比较深刻的一个点就是 自我介绍 &#xff0c;基本上所有同学的自我介绍都是这么写的&#xff1a; 读这篇文章的朋友们&#xff0c;你是不是也是这么写自我介绍的呢&#xff1f; 这…

MySQL索引优化整合案例实现

目录 1 JOIN优化1.1 JOIN算法原理1.2 in和exists函数 2 order by优化2.1 索引排序2.2 额外排序2.3 排序优化 3 索引单表优化案例3.1. 建表3.2. 单表索引分析3.1.1 需求3.1.2 优化 4 索引多表优化案例 1 JOIN优化 1.1 JOIN算法原理 1) JOIN回顾 JOIN 是 MySQL 用来进行联表操作…

在 Jetpack Compose 中创建 BottomAppBar

Jetpack Compose 是 Android 的现代 UI 工具包&#xff0c;它使得构建美观且功能强大的应用变得更加简单。在本文中&#xff0c;我们将探讨如何使用 Jetpack Compose 创建一个 BottomAppBar。 开始之前 确保你的开发环境已经设置好了 Jetpack Compose。你需要使用 Android Stu…

矩阵Matrices

目录 矩阵的变换 向量和矩阵 矩阵的变换 房子图形的矩阵变换&#xff08;wiggle动态变换&#xff09; uicontrol的‘style’类型&#xff1a; X house dot2dot(X) theta1 wiggle(X) function dot2dot(X) % DOT2DOT Connect the points from a 2-by-n matrix. X(:,end1) X…

5 类数据,洞察游戏的秘密

数据犹如一扇扇窗户&#xff0c;透过它&#xff0c;我们可以洞察到游戏世界内部的诸多秘密。这些秘密&#xff0c;就像是隐藏在房间深处的宝藏&#xff0c;只有真正理解并善用它们&#xff0c;我们才能创造出更吸引人的游戏&#xff0c;形成更成功的商业模式。 一个关键的问题是…

【Linux】—— 浅谈进程优先级

本期&#xff0c;我们将来聊聊的是关于进程优先级的相关知识&#xff01;&#xff01;&#xff01; 目录 序言 &#xff08;一&#xff09;基本概念 &#xff08;二&#xff09;查看系统进程 1、PRI and NI 2、PRI vs NI &#xff08;三&#xff09;设置优先级 序言 首先…

关于antdesign-vue的layout组件样式失效问题(#components-layout-demo-custom-trigger)

1.错误描述 使用antdesign vue 中的layout作为主要布局&#xff0c;https://www.antdv.com/components/layout-cn 正常引入后&#xff0c;跟期望的样子不一样 期望中的样子 实际的样子 logo没有了&#xff0c;而且此时也无法更改样式。 此时的样式是这样的 无论怎么修改都…

Grafana 使用Rest API 作为数据源的实践

本文使用最新版本的Grafana 10 进行操作。 如果要使用Rest API 作为grafana 的数据源&#xff0c;可以选择安装一个Infinity的数据源插件。 如果创建数据源时&#xff0c;搜不到infinity&#xff0c;点击find more 查找安装该数据源插件 1. 安装 Infinity 数据源插件&#xf…

IP 协议的相关特性

目录 IP协议有三大特点&#xff1a;无连接、无状态、不可靠。 四位版本号 四位头部长度 八位服务类型: 十六位总长度 16 位标识, 3 位标志, 13 位片偏移 八位生存时间 八位协议 十六位首部校验和 关于IP v4地址不够的问题 ip地址动态分配: ip地址转换(NAT) 数据传输…

一个空的Object在内存中占用几个字节

文章目录 一、对象在内存中的布局1. 对象头1.1. 哈希码&#xff08;Hash Code&#xff09;&#xff1a;1.2. 对象所属的年代&#xff08;Generation&#xff09;&#xff1a;1.3. 对象锁&#xff08;Object Lock&#xff09;&#xff1a;1.4. 锁状态标志&#xff08;Lock State…

POE级联蓝牙定位系统方案_蓝牙信标,蓝牙网关,级联蓝牙网关

近年来,随着新能源行业的快速发展,在化工厂,核电厂以及电力电厂等企业,对人员定位,人员导航,资产定位,生命体征监测的需求越来越大。传统的蓝牙室内定位方案中蓝牙信标为锂亚电池供电,需定期更换电池且有安全隐患,为更好的服务有蓝牙定位导航,被动人员定位,生命体征…

vue创建项目报错npm install --loglevel error --legacy-peer-deps

vue创建项目报错npm install --loglevel error --legacy-peer-deps 如图所示&#xff1a; 话不多说&#xff0c;直接上解决方法&#xff1a; 1、找到这两个文件&#xff08;每个人的位置不一样&#xff0c;像我是安装在D盘&#xff09; 2、分别点进去&#xff0c;右键—属性…

A Survey on Evaluation of Large Language Models

这是LLM相关的系列文章&#xff0c;针对《A Survey on Evaluation of Large Language Models》的翻译。 大型语言模型评价综述 摘要1 引言2 背景2.1 大语言模型2.2 AI模型评估 3 评估什么3.1 自然语言处理任务3.1.1 自然语言理解3.1.2 推理3.1.3 自然语言生成3.1.4 多语言任务…

vue——接口修改请求头——有些接口不需要请求头传递token——基础积累

最近在写后台管理系统的时候&#xff0c;遇到一个切换租户的功能。在请求接口的时候不需要传递token 直接上代码吧&#xff1a; 1.html代码 login2(this.user.id, this.ruleForm.tenantType) .then(this.afterLogin) .finally(() > {this.confirmLoading false;if (this…

ja3指纹和akamai指纹

问题&#xff1a; 请求失效&#xff0c;带上抓包软件却可以->检测ja3浏览器指纹 方法&#xff0c;python 安装curl_cffi库 pip install curl_cffi 查看浏览器指纹 https://tls.browserleaks.com/json python 原生request 缺少两个指纹 使用curl_cffi之后 可以看到结果…