Flask 数据库前后端交互案例-1

Flask 数据库前后端交互案例

  • 目录结构
  • templates目录
    • base.html
    • header.html
    • left.html
    • 首页
    • 职员管理页面
    • 添加员工界面
    • 员工编辑页面
    • 员工详情界面
  • 后台
    • main.py
    • app.py
    • models.py
    • views.py
  • 数据库数据
    • position.sql
    • person.sql
    • permission.sql
    • department.sql

目录结构

在这里插入图片描述

静态文件链接:https://pan.baidu.com/s/1aapt_kPHw7Tkg0KUDQJsOg
提取码:zht1

templates目录

base.html

templates/base.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="description" content=""><meta name="author" content=""><title>{% block title %}{% endblock %}</title><!-- Bootstrap Core CSS --><link href="static/lib/sb-admin/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet"><!-- MetisMenu CSS --><link href="static/lib/sb-admin/vendor/metisMenu/metisMenu.min.css" rel="stylesheet"><!-- Custom CSS --><link href="static/lib/sb-admin/dist/css/sb-admin-2.css" rel="stylesheet"><!-- Custom Fonts --><link href="static/lib/sb-admin/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"><link href="static/css/index.css" rel="stylesheet" type="text/css"><!--[if lt IE 9]><script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script><script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script><![endif]--></head><body>
<div id="wrapper"><!-- Navigation --><nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0">{% include  'header.html' %}{% include  'left.html' %}</nav>{% block Page_Content %}{% endblock %}
</div>
<!-- jQuery -->
<script src="static/lib/sb-admin/vendor/jquery/jquery.min.js"></script><!-- Bootstrap Core JavaScript -->
<script src="static/lib/sb-admin/vendor/bootstrap/js/bootstrap.min.js"></script><!-- Metis Menu Plugin JavaScript -->
<script src="static/lib/sb-admin/vendor/metisMenu/metisMenu.min.js"></script><!-- Custom Theme JavaScript -->
<script src="static/lib/sb-admin/dist/js/sb-admin-2.js"></script><script src="static/lib/echarts/js/echarts.min.js"></script><script src="static/js/index.js"></script>
</body>
</html>

header.html

templates/header.html

<div class="navbar-header"><button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a class="navbar-brand" href="./index.html">XXXXX考勤管理系统</a></div><!-- /.navbar-header --><ul class="nav navbar-top-links navbar-right"><li><a>欢迎:<span>{{ request.cookies.person_name}}</span></a></li><li><a href="/logout">退出</a></li><li><a href="./profile.html">个人中心</a></li></ul>

left.html

templates/left.html

<div class="navbar-default sidebar" role="navigation"><div class="sidebar-nav navbar-collapse"><ul class="nav" id="side-menu"><li><a href="/"><i class="fa fa-dashboard fa-fw"></i> 首页</a></li><li><a href="/news"><i class="fa fa-envelope-o fa-fw"></i> 新闻管理</a></li><li><a href="/permission"><i class="fa fa-table fa-fw"></i> 权限管理</a></li><li><a href="#"><i class="fa fa-bar-chart-o fa-fw"></i> 考勤管理<span class="fa arrow"></span></a><ul class="nav nav-second-level"><li><a href="/attendance_me">个人考勤</a></li><li><a href="/attendance_subordinate">下属考勤</a></li></ul></li><li><a href="#"><i class="fa fa-user fa-fw"></i> 人事管理<span class="fa arrow"></span></a><ul class="nav nav-second-level"><li><a href="/department">部门管理</a></li><li><a href="/person">职员管理</a></li></ul><!-- /.nav-second-level --></li></ul></div><!-- /.sidebar-collapse -->
</div>

首页

templates/index.html

{% extends "base.html" %}
{% block title %}首页{% endblock %}
{% block  Page_Content %}<!-- Page Content --><div id="page-wrapper"><div class="container-fluid"><div class="row"><div class="col-lg-12"><h1 class="page-header">首页</h1></div><!-- /.col-lg-12 --></div><!-- /.row --><div class="row"><div class="col-lg-12"><div id="show"></div><div class="col-lg-6"><div class="panel panel-default"><div class="panel-heading">公司新闻<a class="pull-right" href="./news.html">查看更多...</a></div><div class="panel-body"><div class="col-lg-6"><a href="./detail_news.html">XXX简介</a></div><div class="col-lg-6 text-right">2020-05-06 16:37:39</div><div class="col-lg-6"><a href="#">新闻99</a></div><div class="col-lg-6 text-right">2020-05-06 16:37:39</div><div class="col-lg-6"><a href="#">新闻98</a></div><div class="col-lg-6 text-right">2020-05-06 16:37:39</div><div class="col-lg-6"><a href="#l">新闻97</a></div><div class="col-lg-6 text-right">2020-05-06 16:37:39</div></div></div></div><div class="col-lg-6"><div class="panel panel-default"><div class="panel-heading">考勤情况<a class="pull-right" href="attendance_me.html">查看更多...</a></div><div class="panel-body"><div class="col-lg-6">摔伤了,请假3天。</div><div class="col-lg-6 text-right">已驳回</div><div class="col-lg-6">住院5</div><div class="col-lg-6 text-right">已通过</div><div class="col-lg-6">因家里有事,调休1</div><div class="col-lg-6 text-right">已驳回</div><div class="col-lg-6">请年假1</div><div class="col-lg-6 text-right">申请中</div></div></div></div></div><!-- /.col-lg-12 --></div></div><!-- /.container-fluid --></div>
{% endblock %}

在这里插入图片描述

职员管理页面

templates/person.html

{% extends "base.html" %}
{% block title %}职员管理{% endblock %}
{% block  Page_Content %}<!-- Page Content --><div id="page-wrapper"><div class="container-fluid"><div class="row"><div class="col-lg-12"><h1 class="page-header">职员管理</h1></div><!-- /.col-lg-12 --></div><!-- /.row --><div class="row"><div class="col-lg-12"><div class="row"><div class="col-lg-8">{% if  Filter==0%}<a class="btn btn-default active" href="/person?filter=all">全部</a>{% else %}<a class="btn btn-default" href="/person?filter=all">全部</a>{% endif %}{% for department in department_list %}{% if Filter==department.id %}<a class="btn btn-default active" href="/person?filter={{ department.id }}">{{ department.name }} </a>{% else %}<a class="btn btn-default" href="/person?filter={{ department.id }}">{{ department.name }} </a>{% endif %}{% endfor %}</div><form role="form" class="col-lg-3" method="get" action="/person">{% if Filter!=0 %}<input type="hidden" name="filter" value="{{ Filter }}">{% endif %}<div class="form-group input-group"><input type="text" name="search" class="form-control" placeholder="输入要搜索的雇员的名字"value=""><span class="input-group-btn"><button class="btn btn-default" type="submit"><i class="fa fa-search"></i></button></span></div></form><div class="col-lg-1"><a class="btn btn-default" href="/add_person">添加</a></div></div><div class="row"><table class="table"><thead><tr><th>职员用户名</th><th>职员部门</th><th>职员职位</th><th>操作</th></tr></thead><tbody>{% for person in person_list %}<tr><td>{{  person.nickname }}</td><td>{{ person.position.dept.name }}</td><td>{{ person.position.name }}</td><td><a class="btn btn-default" href="/detail_person?id={{ person.id }}">详情</a><a class="btn btn-default" href="/update_person?id={{ person.id }}">编辑</a><a class="btn btn-default" href="/del_person?id={{ person.id }}">删除</a></td></tr>{% endfor %}</tbody><tfoot><tr><td colspan="4"><ul class="pagination"><li class="active"><a href="#">1</a></li><li><a href="#">2</a></li><li><a href="#">3</a></li><li><a href="#">4</a></li><li><a href="#">5</a></li></ul></td></tr></tfoot></table></div></div><!-- /.col-lg-12 --></div></div><!-- /.container-fluid --></div><!-- /#page-wrapper -->
{% endblock %}

在这里插入图片描述

添加员工界面

templates/add_person.html

{% extends "base.html" %}
{% block title %}个人中心-添加{% endblock %}
{% block  Page_Content %}<!-- Page Content --><div id="page-wrapper"><div class="container-fluid"><div class="row"><div class="col-lg-12"><h1 class="page-header">个人中心-添加</h1></div><!-- /.col-lg-12 --></div><!-- /.row --><div class="row"><div class="col-lg-12"><div class="row"><p></p><form method="post" enctype="multipart/form-data" action="/add_person"><div class="form-group"><label class="control-label">用户名:</label><input class="form-control" type="text" name="username"><label class="text-primary username_error"></label></div><div class="form-group"><label class="control-label">密码:</label><input class="form-control" type="password" name="password"><label class="text-primary password_error"></label></div><div class="form-group"><label class="control-label">职位:</label><select class="form-control" name="position_id">{% for position in position_list %}<option value="{{ position.id }}">{{ position.name }}</option>{% endfor %}</select></div><div class="form-group"><button class="btn btn-primary btn-block">提交</button></div></form></div></div><!-- /.col-lg-12 --></div></div><!-- /.container-fluid --></div>
{% endblock %}

在这里插入图片描述

员工编辑页面

templates/edit_person.html

{% extends "base.html" %}
{% block title %}职员管理-编辑{% endblock %}
{% block  Page_Content %}<!-- Page Content --><div id="page-wrapper"><div class="container-fluid"><div class="row"><div class="col-lg-12"><h1 class="page-header">职员管理-编辑</h1></div><!-- /.col-lg-12 --></div><!-- /.row --><div class="row"><div class="col-lg-12"><div class="row"><p></p><form method="post" enctype="multipart/form-data" action="/update_person?id={{ person.id }}"><div class="form-group"><label class="control-label">用户名:</label><input class="form-control" type="text" name="username" value="{{ person.username}}"><label class="text-primary username_error"></label></div><div class="form-group"><label class="control-label">密码:</label><input class="form-control" type="password" name="password" value="{{person.password}}"><label class="text-primary password_error"></label></div><div class="form-group"><label class="control-label">昵称:</label><input class="form-control" type="text" name="nickname" value="{{ person.nickname }}"></div><div class="form-group"><label class="control-label">性别:</label><select class="form-control" name="gender">{% if  person.gender == '男'%}<option value="男" selected></option><option value="女"></option>{% else %}<option value="男" ></option><option value="女" selected></option>{% endif %}</select></div><div class="form-group"><label class="control-label">年龄:</label><input class="form-control" type="number" name="age" value="{{ person.age }}"></div><div class="form-group"><label class="control-label">电话:</label><input class="form-control" type="text" name="phone" value="{{ person.phone }}"></div><div class="form-group"><label class="control-label">邮箱:</label><input class="form-control" type="text" name="email" value="{{ person.email}}"></div><div class="form-group"><label class="control-label">头像:</label><input type="file" name="photo"></div><div class="form-group"><label class="control-label">地址:</label><textarea class="form-control" name="address">{{ person.address }}</textarea></div><div class="form-group"><label class="control-label">职位:</label><select class="form-control" name="position_id">{% for position in position_list %}{% if  person.position.id==loop.index%}<option value="{{ position.id }}" selected>{{ position.name }}</option>{% else  %}<option value="{{ position.id }}">{{ position.name }}</option>{% endif %}{% endfor %}</select></div><div class="form-group"><button class="btn btn-primary btn-block">提交</button></div></form></div></div><!-- /.col-lg-12 --></div></div><!-- /.container-fluid --></div>{% endblock %}

在这里插入图片描述

员工详情界面

templates/detail_person.html


{% extends "base.html" %}
{% block title %}职员管理-详情{% endblock %}
{% block  Page_Content %}
<!-- Page Content --><div id="page-wrapper"><div class="container-fluid"><div class="row"><div class="col-lg-12"><h1 class="page-header">职员管理-详情</h1></div><!-- /.col-lg-12 --></div><!-- /.row --><div class="row"><div class="col-lg-12"><div class="row"><table class="table"><tr><td>用户名</td><td>{{person.username}}</td></tr><tr><td>密码</td><td>{{person.password}}</td></tr><tr><td>昵称</td><td>{{person.nickname}}</td></tr><tr><td>性别</td><td>{{person.gender}}</td></tr><tr><td>年龄</td><td>{{person.age}}</td></tr><tr><td>工号</td><td>{{person.workid}}</td></tr><tr><td>电话</td><td>{{person.phone}}</td></tr><tr><td>邮箱</td><td>{{person.email}}</td></tr><tr><td>照片</td><td>{{person.photo}}</td></tr><tr><td>地址</td><td>{{person.address}}</td></tr><tr><td>绩效</td><td>{{person.score}}</td></tr><tr><td>职位</td><td>{{  person.position.name    }}</td></tr><tr><td>部门</td><td>{{ person.position.dept.name }}</td></tr></table></div></div><!-- /.col-lg-12 --></div></div><!-- /.container-fluid --></div>
{% endblock %}

在这里插入图片描述

后台

main.py

#控制文件
from app import app
from models import db
from views import *if __name__ == '__main__':# 删除所有表# db.drop_all()# 创建所有表db.create_all()app.run(debug=True)

app.py

import os
from flask import Flask,request
from flask import render_template,redirect
# 引入表格模块
from flask_sqlalchemy import SQLAlchemy
#导入pymysql
import pymysql
#用pymysql 代替 MySqldb
pymysql.install_as_MySQLdb()
app=Flask(__name__)
# 获取文件路径
BASE_DIR=os.path.abspath(os.path.dirname(__file__))
# 配置数据库sqlite
app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///'+os.path.join(BASE_DIR,'sqlite3.db')
#配置数据库mysql
# app.config['SQLALCHEMY_DATABASE_URI']='mysql://root:root@127.0.0.1:3306/test'
# 创建一个父类让python中的类去继承 就可映射成表格
db=SQLAlchemy(app)

models.py

#存放类模块
from app import db
#抽象父类
class Base(db.Model):__abstract__=Trueid = db.Column(db.INT, primary_key=True, autoincrement=True)#添加员工def save(self):# 保存对象db.session.add(self)# 提交事务db.session.commit()def updte(self):db.session.commit()def delete(self):# 删除对象db.session.delete(self)# 提交事务db.session.commit()
#职位
class Position(Base):__tablename__="position"name=db.Column(db.String(32)) #职位名称level=db.Column(db.Integer)  #级别#关系属性#为了查询方便,flask提供了关系属性,为了方便查询,但是不会在数据库中生成相应的字段persons=db.relationship("Person",backref='position')department_id=db.Column(db.Integer,db.ForeignKey("department.id"))#当知道职位查询所有的员工时,通过 职位对象.persons就可以获得所有的员工# 当员工查询对应的职位的时候,通过 员工对象.position就可获得对应的职位
# 职员
class Person(Base):"""雇员表"""__tablename__ = "person"username = db.Column(db.VARCHAR(100))password = db.Column(db.VARCHAR(64))nickname = db.Column(db.String(64), nullable=True)  # 昵称gender = db.Column(db.String(8), nullable=True)  # 性别age = db.Column(db.Integer, nullable=True)  # 年龄workid = db.Column(db.String(32), nullable=True)  # 工号phone = db.Column(db.String(64), nullable=True)  # 电话email = db.Column(db.String(64), nullable=True)  # 邮箱photo = db.Column(db.String(64), nullable=True)  # 照片address = db.Column(db.Text, nullable=True)  # 地址score = db.Column(db.Float, nullable=True)  # 绩效#关系属性#职位和员工一对多关系position_id=db.Column(db.Integer,db.ForeignKey("position.id"))
#职位与权限中间表
permission_position=db.Table('permission_position',db.Column("id",db.Integer,primary_key=True,autoincrement=True),db.Column("position_id",db.Integer,db.ForeignKey("position.id")), #关联positiondb.Column("permission_id",db.Integer,db.ForeignKey("permission.id")), #关联permission
)
#权限表
class Permission(Base):__tablename__="permission"name=db.Column(db.String(32)) #权限名称desc=db.Column(db.String(128)) #权限描述#关系属性positions=db.relationship('Position',# 和模型类进行关联backref='permissions',secondary=permission_position)
#部门表
class Department(Base):__tablename__='department'#实体属性name=db.Column(db.String(32))description=db.Column(db.String(128))#关系属性positions=db.relationship('Position',backref='dept')

views.py

from  app import *
from models import *
import hashlib
import time
from  functools import wraps
from flask import request
# 登录装饰器
def Login_Decorator(func):@wraps(func)def inner():person_name = request.cookies.get('person_name')if person_name:return func()else:return redirect('login')return inner
@app.route('/')
@Login_Decorator
def index():return render_template('index.html')
# 职员管理
@app.route('/person')
@Login_Decorator
def person():res=request.args.get("filter")print(res)search=request.args.get("search")department_list = Department.query.all()flag = Falseif res=="all" or res==None:Filter=0person_list = Person.query.all()else:flag=TrueFilter=int(res)pos_list=Position.query.filter(Position.department_id==Filter).all()person_list=[ps for person in pos_list for ps in person.persons] #遍历所有部门的成员存入字典if search!=None:if flag:person_list=[person for person in person_list if search in person.nickname]else:person_list=Person.query.filter(Person.nickname.like("%"+search+"%")).all()return render_template("person.html",**locals())
# 添加员工
@app.route('/add_person',methods=["GET","POST"])
def add_person():if request.method=="GET":position_list=Position.query.all()return render_template("add_person.html",position_list=position_list)else:username=request.form.get("username")password=hashlib.md5(request.form.get("password").encode()).hexdigest() #md5进行加密position_id=request.form.get("position_id")user=Person(username=username,password=password,position_id=position_id)user.save()return redirect("/person")# 删除员工
@app.route('/del_person')
@Login_Decorator
def del_person():id=request.args.get('id')person=Person.query.get(id)person.delete()return redirect("/person")# 编辑员工
@app.route('/update_person',methods=["GET","POST"])
@Login_Decorator
def update_person():id = request.args.get('id')person = Person.query.get(id)if request.method=="GET":position_list = Position.query.all()return render_template("edit_person.html",**locals())else:username=request.form.get("username")password=hashlib.md5(request.form.get("password").encode()).hexdigest() #md5进行加密nickname=request.form.get("nickname")gender=request.form.get("gender")age=request.form.get("age")phone=request.form.get("phone")email=request.form.get("email")adress=request.form.get("address")position_id=request.form.get("position_id")#文件保存photo=request.files.get("photo")if len(photo.filename)!=0:#替换成新图片时删除以前图片,并判断是否是第一次添加print(person.photo.startswith("/static/"))if person.photo.startswith("/static/"):os.remove(BASE_DIR+person.photo)path=os.path.join(BASE_DIR,"static/img",photo.filename)photo.save(path)photo_name="/static/img/"+photo.filenameelse:photo_name = person.photoperson.username=usernameperson.password=passwordperson.nickname=nicknameperson.gender=genderperson.age=ageperson.phone=phoneperson.email=emailperson.adress=adressperson.photo=photo_nameperson.position_id=position_idperson.updte()return redirect("/person")#员工详情
@app.route('/detail_person')
@Login_Decorator
def detail_person():id = request.args.get('id')person = Person.query.get(id)return render_template("detail_person.html", person=person)#登录
@app.route('/login', methods=['GET', 'POST'])
def login():msg = ''print("asd")if request.method == 'POST':# 1.获取用户名和密码username = request.form.get('username')password=hashlib.md5(request.form.get("password").encode()).hexdigest()# 2.查询数据库 (用户名和密码)person_obj = Person.query.filter(Person.username == username, Person.password == password).first()# 3.判断if person_obj:# (1).正确 --->> 重定向到首页response = redirect('/')# 4.将用户名保存到cookie中,用于首页显示response.set_cookie('person_name', person_obj.nickname)return response# (2).错误--->> 提示错误信息msg = '用户名或者密码错误'# get方式或者用户名校验失败后返回登录页面return render_template('login.html', msg=msg)#登录退出
@app.route('/logout')
@Login_Decorator
def logout():response = redirect('/login')# 1.清除所有的cookieresponse.delete_cookie('person_name')# 2.重定向到登录界面return response

数据库数据

在这里插入图片描述

position.sql

INSERT INTO "position"("id", "name", "level", "department_id") VALUES (1, '市场部_部长', 1, 1);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (2, '市场部_主任', 2, 1);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (3, '人事部_部长', 3, 5);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (4, '人事部_主任', 4, 5);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (5, '技术部_部长', 5, 2);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (6, '技术部_主任', 6, 2);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (7, '新媒体部_部长', 7, 4);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (8, '新媒体部_主任', 8, 4);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (9, '财务部_部长', 9, 3);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (10, '财务部_主任', 10, 3);

person.sql

INSERT INTO "position"("id", "name", "level", "department_id") VALUES (1, '市场部_部长', 1, 1);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (2, '市场部_主任', 2, 1);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (3, '人事部_部长', 3, 5);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (4, '人事部_主任', 4, 5);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (5, '技术部_部长', 5, 2);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (6, '技术部_主任', 6, 2);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (7, '新媒体部_部长', 7, 4);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (8, '新媒体部_主任', 8, 4);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (9, '财务部_部长', 9, 3);
INSERT INTO "position"("id", "name", "level", "department_id") VALUES (10, '财务部_主任', 10, 3);

permission.sql

INSERT INTO "permission"("id", "name", "desc") VALUES (1, '新闻管理', '对新闻进行增删改查');
INSERT INTO "permission"("id", "name", "desc") VALUES (2, '人事管理', '对人事进行增删改查');
INSERT INTO "permission"("id", "name", "desc") VALUES (3, '考勤管理', '对考勤进行增删改查');
INSERT INTO "permission"("id", "name", "desc") VALUES (4, '权限管理', '对权限进行增删改查');

department.sql

INSERT INTO "department"("id", "name", "description") VALUES (1, '市场部', '负责市场相关');
INSERT INTO "department"("id", "name", "description") VALUES (2, '技术部', '负责技术相关');
INSERT INTO "department"("id", "name", "description") VALUES (3, '财务部', '负责财务相关');
INSERT INTO "department"("id", "name", "description") VALUES (4, '新媒体部', '负责新媒体相关');
INSERT INTO "department"("id", "name", "description") VALUES (5, '人事部', '负责人事相关');



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

    如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    ArcGIS Pro 和 Python — 分析全球主要城市中心的土地覆盖变化

    第一步——设置工作环境 1–0. 地理数据库 在下载任何数据之前,我将创建几个地理数据库,在其中保存和存储所有数据以及我将创建的后续图层。将为我要分析的五个城市中的每一个创建一个地理数据库,并将其命名为: “Phoenix.gdb” “Singapore.gdb” “Berlin.gdb” “B…

    Git--分布式版本控制系统

    目录 一、理解分布式版本控制系统二、远程仓库三、克隆远程仓库四、向远程仓库推送五、拉取远程仓库六、配置Git七、给命令配置别名八、创建标签九、操作标签 一、理解分布式版本控制系统 我们⽬前所说的所有内容&#xff08;⼯作区&#xff0c;暂存区&#xff0c;版本库等等&a…

    AI文章写作网站

    最强AI文章写作网站——心语流光&#xff08; Super Ai Writer &#xff09; 特点 多轮问答写作&#xff0c;自动携带历史记录进行问答可以自定义携带历史记录的轮数&#xff0c;为0则携带全部历史记录&#xff0c;有效避免token浪费&#xff08;类似coze平台&#xff09;AI生…

    探讨mfc100u.dll丢失的解决方法,修复mfc100u.dll有效方法解析

    mfc100u.dll丢失是一个比较常见的情况&#xff0c;由于你电脑的各种操作&#xff0c;是有可能引起dll文件的缺失的&#xff0c;而mfc100u.dll就是其中的一个重要的dll文件&#xff0c;它的确实严重的话是会导致程序打不开&#xff0c;系统错误的。今天我们就来给大家科普一下mf…

    Python爬虫--Ajax异步抓取腾讯视频评论

    在某些网站 &#xff0c;当我们滑下去的时候才会显示出后面的内容 就像淘宝一样&#xff0c;滑下去才逐渐显示其他商品 这个就是采用 Ajax 做的 然后我们现在就是要编写这样的爬虫。 规律分析&#xff1a; 这个时候就要用到我们的 Fiddler 了 我们需要分析加载评论的规律 …

    【Linux】NFS网络文件系统搭建

    一、服务端配置 #软件包安装 [roothadoop01 ~]# yum install rpcbind nfs-utils.x86_64 -y [roothadoop01 ~]# mkdir /share#配置文件修改 #格式为 共享资源路径 [主机地址] [选项] # [roothadoop01 ~]# vi /etc/exports /share 192.168.10.0/24(rw,sync,no_root_squash) #…

    Wi-Fi HaLow:重塑物联网的未来

    Wi-Fi HaLow&#xff1a;引领物联网连接的革命 数字时代的蓬勃发展正在引发一场深刻的变革&#xff0c;物联网已经融入到我们的日常生活和工作中&#xff0c;成为不可或缺的一部分。随着新一代Wi-Fi技术一Wi-Fi HaLow的崭露头角&#xff0c;有望在2024年及未来&#xff0c;重新…

    Android Studio开发之路(八)Spinner样式设置

    一、需求 白色背景显示下拉框按钮 问题&#xff1a; 设置Spinner的背景可以通过设置background&#xff1a; android:background"color/white",但是一旦设置了这个值&#xff0c;右侧的下拉按钮就会消失 方法一、自定义一个style&#xff08;不成功&#xff09; …

    OpenTelemetry-2.Go接入Jaeger(grpc,gin-http)

    目录 1.什么是OpenTelemetry 2.搭建jaeger 3.链路追踪 本地调用 远程调用 GRPC proto server端 client端 Gin-HTTP 调用流程 api1 api2 grpc 4.完整代码 1.什么是OpenTelemetry 参考&#xff1a;OpenTelemetry-1.介绍-CSDN博客 2.搭建jaeger 参考&#xff1a;…

    Win32 API 光标隐藏定位和键盘读取等常用函数

    Win32 API 光标隐藏定位和键盘读取等常用函数 一、Win32 API二、控制台程序指令modetitlepausecls 三、控制台屏幕上坐标的结构体COORD四、句柄获取函数GetStdHandle五、控制台光标操作1.控制台光标信息结构体CONSOLE_CURSOR_INFO2.得到光标信息函数GetConsoleCursorInfo3. 设置…

    【注解和反射】获取类运行时结构

    继上一篇博客【注解和反射】类加载器-CSDN博客 目录 七、获取类运行时结构 测试 getFields()和getDeclaredFields() getMethods()和getDeclaredMethods() 七、获取类运行时结构 获取类运行时结构通常指的是在Java等面向对象编程语言中&#xff0c;使用反射&#xff08;Ref…

    STL——List常用接口模拟实现及其使用

    认识list list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元素…

    【IDEA】在IntelliJ IDEA中导入Eclipse项目:详细指南

    IntelliJ IDEA和Eclipse是两款常用的集成开发环境&#xff08;IDE&#xff09;&#xff0c;在软件开发中经常会遇到需要在它们之间迁移项目的情况。本文将重点介绍如何在IntelliJ IDEA中导入Eclipse项目&#xff0c;以帮助开发者顺利地迁移他们的项目&#xff0c;并在IntelliJ …

    大型语言模型高效推理综述

    论文地址&#xff1a;2404.14294.pdf (arxiv.org) 大型语言模型&#xff08;LLMs&#xff09;由于在各种任务中的卓越表现而受到广泛关注。然而&#xff0c;LLM推理的大量计算和内存需求给资源受限的部署场景带来了挑战。该领域的努力已经朝着开发旨在提高LLM推理效率的技术方…

    RustGUI学习(iced)之小部件(二):如何使用滑动条部件

    前言 本专栏是学习Rust的GUI库iced的合集&#xff0c;将介绍iced涉及的各个小部件分别介绍&#xff0c;最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个&#xff0c;目前处于发展中&#xff08;即版本可能会改变&#xff09;&#xff0c;本专栏基于版本0.12.1. 概述…

    Redis中的慢查询日志(一)

    慢查询日志 概述 Redis的慢查询日志功能用于记录执行时间超过给定时长的命令请求&#xff0c;用户可以通过这个功能产生的日志来 监视和优化查询速度。服务器配置有两个和慢查询日志相关的选项: 1.slowlog-log-slower-than选项指定执行时间超过多少微妙(1秒1000 000微妙)的命…

    【精】DevOps实战学习CI/CD落地方案#CI篇#

    目录 先有个大概了解 基本概念 CI/CD Devops 阿里云效 devops产品 K8s jenkins docker git maven 知行合一&#xff0c;上手操作 实操记录 安装VMware 安装并配置虚拟机 安装并配置docker docker安装 修改镜像源&#xff08;关键且易出错&#xff09; CentOS…

    低代码信创开发核心技术(四)动态元数据系统设计

    一、概述 在当今快速发展的信息技术领域&#xff0c;动态元数据系统扮演着至关重要的角色。它不仅能够提供数据的描述信息&#xff0c;还能动态地适应业务需求的变化&#xff0c;从而提高系统的灵活性和可扩展性。构建一个动态元数据系统意味着我们可以在不重启系统的情况下&a…

    Facebook的未知力量:数字世界的新引擎

    在数字化的时代&#xff0c;社交媒体已经成为了我们日常生活中不可或缺的一部分&#xff0c;而Facebook作为其中的巨头&#xff0c;其影响力远远超出了我们的想象。但是&#xff0c;Facebook背后隐藏的力量和影响远不止于此&#xff0c;它正逐渐成为数字世界的新引擎&#xff0…

    书生·浦语 大模型(学习笔记-5)XTuner 微调 LLM:1.8B、多模态、Agent

    目录 一&#xff1a;两种微调 二、数据的一生 三、微调方案 四、XTuner 五、InternLM2 1.8B模型&#xff08;相关知识&#xff09; 一&#xff1a;两种微调 增量与训练和指令微调的区别 二、数据的一生 原始数据转换为标准格式数据 添加对话模板&#xff0c;直接调用即可…