.NET Core6.0 MVC+layui+SqlSugar 简单增删改查

HTML部分:

@{
    ViewData["Title"] = "用户列表";
}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>用户列表</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

    <link rel="stylesheet" href="~/layui/lib/layui-v2.6.3/css/layui.css" media="all">
    <link rel="stylesheet" href="~/layui/css/public.css" media="all">
    <script src="~/layui/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>

    <script src="~/learun/js/jquery/jquery-2.2.0.min.js"></script>

    <script>
        //添加用户 层
        function OpenAdd() {
            var index = layer.open({
                type: 1, //0 dialog 信息框 1; page 页面层;2 iframe 内联框架层;3 loading 加载层;4 tips 贴士层
                title: "",
                content: `
<table class="layui-table">
<tr>
        <td>账号</td>
        <td><input type="text" id="txtName" class="layui-text" /></td>
    </tr>
    <tr>
        <td>类型</td>
        <td>
                    <select id="selType" style="width:175px; height:32px;">
                <option value="0">普通用户</option>
                <option value="1">管理员</option>
            </select>
        </td>
    </tr>
</table>`,
                area: ["300px", "200px"],//弹出尺寸
                btn: ["保存"],
                btn1: function (index, layero) {
                    AddUser();
                },
                cancel: function () {
                    PageList(1);//刷新列表
                }
            });
        }
        //编辑用户 层
        function OpenEdit(id, name, type) {
            var index = layer.open({
                type: 1, //0 dialog 信息框 1; page 页面层;2 iframe 内联框架层;3 loading 加载层;4 tips 贴士层
                title: "",
                content: `
<table class="layui-table">
<tr>
        <td>ID</td>
            <td><span id="spanId"><span/></td>
    </tr>
    <tr>
        <td>账号</td>
                <td><input type="text" id="txtName" class="layui-text" value="" /></td>
    </tr>
    <tr>
        <td>类型</td>
        <td>
            <select id="selType" style="width:175px; height:32px;">
                <option value="0">普通用户</option>
                <option value="1">管理员</option>
            </select>
        </td>
    </tr>
</table>`,
                area: ["500px", "250px"],//弹出尺寸
                success: function () {
                    //回绑控件
                    $("#spanId").html(id);
                    $("#txtName").val(name);
                    $("#selType").val(type);
                },
                btn: ["保存"],
                btn1: function (index, layero) {
                    EditUser();
                },
                cancel: function () {
                    PageList(1);//刷新列表
                }
            });
        }
        //删除用户 层
        function OpenDel(id, name) {
            layer.confirm('确定删除: ' + name + ' ?', {
                btn: ['确定', '取消']
            }, function (index, layero) {//btn1
                if (name.toLowerCase() != 'admin'){
                    DelUser(id);
                }
                else{
                    layer.msg("不可以删除 admin 账号!");
                }
            }, function (index) {//btn2
                PageList(1);//刷新列表
            });
        }
    </script>

</head>
<body>
    <div class="layuimini-container" id="app">
        <div class="layuimini-main">
            <!-----查询条件----->
            <div class="layui-form-item">
                <div class="layui-inline">
                    <label class="layui-form-label">用户名</label>
                    <div class="layui-input-inline">
                        <input type="text" autocomplete="off" class="layui-input" id="txtUserName">
                    </div>
                </div>
                <div class="layui-inline">
                    <label class="layui-form-label">类型</label>
                    <div class="layui-input-inline">
                        <select id="selUserType" style="width:175px; height:32px;">
                            <option value="">全部</option>
                            <option value="0">普通用户</option>
                            <option value="1">管理员</option>
                        </select>
                    </div>
                </div>

                <div class="layui-inline">
                    <button type="button" class="layui-btn layui-btn-primary" lay-submit lay-filter="data-search-btn" onclick="PageList()"><i class="layui-icon"></i> 搜 索</button>
                    <button type="button" class="layui-btn" style="margin-left:300px;" onclick="OpenAdd()">添加新用户</button>
                </div>
            </div>
            <!-----查询条件----->
            <!--表格-->
            <table id="table" class="layui-table" lay-filter="table"></table>
            <!--表格-->
        </div>
    </div>

    <script type="text/html" id="templetType">
        {{#  if(d.type === '1'){ }}
         管理员
        {{#  } else { }}
          普通用户
        {{#  } }}
    </script>
    <script type="text/html" id="tempCreateDate">
        {{#}}
        {{  d.createDate.replace('T',' ') }}
        {{#}}
    </script>
 
    <script type="text/javascript">
        //初始化
        $(function () {
            PageList();
        });
        $(function () {
            $("#selUserType").change(function () {
                PageList();
            });
        });
        //查询
        function PageList() {
            var name = $("#txtUserName").val();//查询条件
            var type = $("#selUserType").val();

            layui.use(['table'], function () {
                var table = layui.table;

                table.render({
                    elem: '#table'//对应着Table的ID
                    , method: 'POST'
                    , url: '/User/GetUserPage'//URL为数据接口的地址
                    , where: { //where就是ajax的data,但不包括分页条件
                        "name": name,
                        "type": type,
                    }
                    , request: {  //分页条件: page  limit
                        pageName: 'page',    //页码的参数名称,默认:page 或者 index、pageIndex
                        limitName: 'size'  //每页数据量的参数名,默认:limit 或者 size、pageSize
                    }
                    , parseData: function (res) {
                        return {
                            "code": 0,//数据类型,必须的
                            "count": res.total,//总记录数,用于分页
                            "data": res.data,//必须的
                        }
                    }
                    , cols: [[
                        { field: 'account', title: 'ID', hide: true }
                        , { field: 'name', title: '姓名', sort: true }
                        , { field: 'type', title: '类型', sort: true, templet: "#templetType" }
                        , { field: 'createBy', title: '创建者', sort: true, }
                        , { field: 'createDate', title: '创建日', sort: true, templet: "#tempCreateDate" }
                        , { title: '操作', toolbar: '#barDemo' }
                    ]],
                    page: true,//开启分页功能
                    limit: 15,//当前每页条数
                    limits: [15, 30, 50, 100],//每页条数集合
                });
            });
        }
    </script>
    <script type="text/html" id="barDemo">
        <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
    </script>
    <script>
        layui.use('table', function () {
            var table = layui.table;
            //监听工具条
            table.on('tool(table)', function (obj) {
                var data = obj.data;
                if (obj.event === 'edit') {
                    OpenEdit(data.account, data.name, data.type);
                }
                if (obj.event === 'del') {
                    OpenDel(data.account, data.name);
                }
            });
        });
    </script>
    <script>
        //添加用户ajax
        function AddUser() {
            var name = $("#txtName").val();
            var type = $("#selType").val();

            if (name) {
                $.ajax({
                    type: "POST",
                    url: "/User/AddUser",
                    data: {
                        "name": name,
                        "type": type,
                    },
                    success: function (result) {
                        if (result.success) {
                            layer.msg('添加成功!', {
                                icon: 1,
                                time: 1000 //1秒关闭(如果不配置,默认是3秒)
                            }, function () {
                                PageList(1);
                                layer.closeAll();
                            });
                        }
                        else {
                            layer.msg('添加失败!');
                        }
                    }
                });
            }
            else {
                layer.msg("请填写[账号]!");
            }
        }
    </script>

    <script>
        function EditUser() {
            var account = $("#spanId").html();
            var name = $("#txtName").val();
            var type = $("#selType").val();

            if (account) {
                if (name) {
                    $.ajax({
                        type: "POST",
                        url: "/User/EditUser",
                        data: {
                            "account": account,
                            "name": name,
                            "type": type,
                        },
                        success: function (result) {
                            if (result.success) {
                                layer.msg('保存成功!', {
                                    icon: 1,
                                    time: 1000 //1秒关闭(如果不配置,默认是3秒)
                                }, function () {
                                    PageList(1);
                                    layer.closeAll();
                                });
                            }
                            else {
                                layer.msg('保存失败!');
                            }
                        }
                    });
                }
                else {
                    layer.msg("请填写[账号]!");
                }
            }
        }
    </script>

    <script>
        function DelUser(id) {
            var account = id;
            if (id) {
                $.ajax({
                    type: "POST",
                    url: "/User/DelUser",
                    data: {
                        "account": account,
                    },
                    success: function (result) {
                        if (result.success) {
                            layer.msg('删除成功!', {
                                icon: 1,
                                time: 1000 //1秒关闭(如果不配置,默认是3秒)
                            }, function () {
                                PageList(1);
                                layer.closeAll();
                            });
                        }
                        else {
                            layer.msg('删除失败!');
                        }
                    }
                });
            }
            else {
                layer.msg("删除失败!!");
            }
        }
    </script>

</body>
</html>

MVC部分:

using Microsoft.AspNetCore.Mvc;
using VoltageInvoiceBLL;
using VoltageInvoiceModel;
using VoltageInvoiceUI.Models;

namespace VoltageInvoiceUI.Controllers
{
    public class UserController : BaseController
    {
        #region 页面
        public UserController()
        {
            if (string.IsNullOrWhiteSpace(LOGIN_USER_NAME) || string.IsNullOrWhiteSpace(LOGIN_USER_TYPE) || string.IsNullOrWhiteSpace(LOGIN_USER_ACCOUNT))
            {
                RedirectToAction("LogIn", "Home");//返回登录页面
            }
        }
        //列表页面
        public IActionResult Index()
        {
            return View();
        }
        #endregion

        #region 用户管理
        public IActionResult Edit()
        {
            return View();
        }
        /// <summary>
        /// 分页查询用户
        /// </summary>
        public IActionResult GetUserPage(string name, string type, int page, int size)
        {
            PageResponse result = new PageResponse();

            UserBLL bll = new UserBLL();
            int total = 0;//总记录数
            int allPage = 0;//总分页数

            var list = bll.GetUserPage(name, type, page, size, ref total);
            if (list != null && list.Count > 0)
            {
                allPage = GetAllPage(total, size);
                result.total = total;
                result.allPage = allPage;
                result.pageIndex = page;
                result.pageSize = size;
                result.data = list;
            }
            return Json(result);
        }

        /// <summary>
        /// 添加用户
        /// </summary>
        [HttpPost]
        public IActionResult AddUser(string name, string type)
        {
            RestFulClass rfc = new RestFulClass();

            Userinfo user = new Userinfo()
            {
                Account = Guid.NewGuid().ToString(),
                Name = name,
                PWD = "123456",
                TYPE = type,
                IsDeleted = false,
                TAX = "",
                CreateBy = LOGIN_USER_NAME,
                CreateDate = DateTime.Now,
            };
            try
            {
                UserBLL bll = new UserBLL();
                var b = bll.AddUser(user);

                if (b)
                    rfc.success = true;
                else
                    rfc.success = false;
            }
            catch (Exception ex)
            {
                rfc.success = false;
                rfc.message = ex.Message;
            }

            return Json(rfc);
        }
        /// <summary>
        /// 编辑用户
        /// </summary>
        [HttpPost]
        public IActionResult EditUser(string account, string name, string type)
        {
            RestFulClass rfc = new RestFulClass();

            Userinfo user = new Userinfo()
            {
                Account = account,
                Name = name,
                TYPE = type,
                UpdateBy = LOGIN_USER_NAME,
                UpdateDate = DateTime.Now,
            };

            try
            {
                UserBLL bll = new UserBLL();
                var b = bll.EditUser(user);

                if (b)
                    rfc.success = true;
                else
                    rfc.success = false;
            }
            catch (Exception ex)
            {
                rfc.success = false;
                rfc.message = ex.Message;
            }

            return Json(rfc);
        }

        /// <summary>
        /// 删除用户
        /// </summary>
        [HttpPost]
        public IActionResult DelUser(string account)
        {
            RestFulClass rfc = new RestFulClass();
            try
            {
                if (!string.IsNullOrWhiteSpace(account))
                {
                    UserBLL bll = new UserBLL();
                    var b = bll.DelUser(account);

                    if (b)
                        rfc.success = true;
                    else
                        rfc.success = false;
                }
                else
                {
                    rfc.success = false;
                    rfc.message = "缺少需删除的用户id";
                }
            }
            catch (Exception ex)
            {
                rfc.success = false;
                rfc.message = ex.Message;
            }

            return Json(rfc);
        }
        #endregion

    }
}

SqlSugar部分:

using SqlSugar;
using VoltageInvoiceDAL;
using VoltageInvoiceModel;

namespace VoltageInvoiceBLL
{
    public class UserBLL
    {
        SqlSugarHelper sugar = new SqlSugarHelper();

        #region 登录验证
        /// <summary>
        /// 登录验证
        /// </summary>
        public Userinfo CheckLogin(string name, string pwd)
        {
            var db = sugar.SqlClient();//数据库连接对象
            var user = db.Queryable<Userinfo>()
                .Where(a => a.Name.Equals(name) && a.PWD.Equals(pwd) && a.IsDeleted == false)
                .ToList().FirstOrDefault();//查询

            return user;//返回登录成功的用户对象
        }

        public Userinfo CheckUser(string account, string pwdOld)
        {
            var db = sugar.SqlClient();//数据库连接对象
            var user = db.Queryable<Userinfo>()
                .Where(a => a.Account.Equals(account) && a.PWD.Equals(pwdOld) && a.IsDeleted == false)
                .ToList().FirstOrDefault();//查询

            return user;//返回登录成功的用户对象
        }
        /// <summary>
        /// 修改密码
        /// </summary>
        public bool ChangePwd(string account, string pwdNew)
        {
            var db = sugar.SqlClient();//数据库连接对象
            string sql = $"update Userinfo set PWD='{pwdNew}' where Account='{account}'";
            int i = db.Ado.ExecuteCommand(sql);

            return i > 0;
        }

        #endregion

        #region 编辑用户
        /// <summary>
        /// 分页查询用户数据
        /// </summary>
        public List<Userinfo> GetUserPage(string name, string type, int pageNumber, int pageSize, ref int totalNumber)
        {
            var db = sugar.SqlClient();//数据库连接对象
            var list = db.Queryable<Userinfo>()
                .Where(a => a.IsDeleted == false)
                .WhereIF(!string.IsNullOrWhiteSpace(name), (a => a.Name.Contains(name)))
                .WhereIF(!string.IsNullOrWhiteSpace(type), (a => a.TYPE.Equals(type)))
                .OrderBy(a => a.CreateDate, OrderByType.Desc)
                .ToPageList(pageNumber, pageSize, ref totalNumber);

            int total = totalNumber;
            return list;
        }

        /// <summary>
        /// 新增用户
        /// </summary>
        public bool AddUser(Userinfo userinfo)
        {
            var db = sugar.SqlClient();//数据库连接对象
            var i = db.Insertable(userinfo).ExecuteCommand();

            return i > 0;
        }

        /// <summary>
        /// 编辑用户
        /// </summary>
        public bool EditUser(Userinfo userinfo)
        {
            var db = sugar.SqlClient();//数据库连接对象
            var i = db.Updateable(userinfo)
                .IgnoreColumns(a => a.Account)
                .IgnoreColumns(a => a.PWD)
                .IgnoreColumns(a => a.IsDeleted)
                .IgnoreColumns(a => a.TAX)
                .IgnoreColumns(a => a.CreateBy)
                .IgnoreColumns(a => a.CreateDate)
                .Where(a => a.Account == userinfo.Account)
                .ExecuteCommand();

            return i > 0;
        }
        /// <summary>
        /// 逻辑删除用户
        /// </summary>
        public bool DelUser(string account)
        {
            var db = sugar.SqlClient();//数据库连接对象
            string sql = $"update Userinfo set IsDeleted=1 where Account='{account}'";// IsDeleted=1 逻辑删除
            int i = db.Ado.ExecuteCommand(sql);

            return i > 0;
        }
        #endregion

    }
}
using SqlSugar;
using VoltageInvoiceTools;

namespace VoltageInvoiceDAL
{
    public class SqlSugarHelper
    {
        public string _connectionString = CustomConfigManager.GetConfig("ConnectionString:DB");//获取SQL连接字符串
        public SqlSugarClient _db = null;

        /// <summary>
        /// 构造函数(初始化)
        /// 调用方法:
        ///  var db = sugar.SqlClient();
        /// var user = db.Queryable<Userinfo>().Where(a => a.Name.Equals(uid) && a.PWD.Equals(pwd)).ToList().FirstOrDefault();
        /// </summary>
        public SqlSugarClient SqlClient()
        {
            if (string.IsNullOrEmpty(_connectionString))
                throw new ArgumentNullException("数据库连接字符串为空");

            _db = new SqlSugarClient(new ConnectionConfig()
            {
                ConnectionString = _connectionString,//数据库连接字符串,见UI的appsettings.json内配置
                DbType = DbType.SqlServer,//数据库类型
                IsAutoCloseConnection = true,//自动断开连接
                MoreSettings = new ConnMoreSettings()
                {
                    IsWithNoLockQuery = true,//为true表式查询的时候默认会加上.With(SqlWith.NoLock),
                    IsAutoRemoveDataCache = true//为true自动清除缓存
                }
            });
            //输入最终SQL语句...
            _db.Aop.OnLogExecuting = (sql, pars) =>
            {
                var s1 = sql;//断点打在这里看内部生成的sql语句...
            };

            return _db;
        }

    }
}
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",

  //数据库连接字符串:
  "ConnectionString": {
    "DB": "Server=.;Database=VoltageInvoiceDB;User ID=sa;Password=123456;"
  }

}

界面预览:

本例源码下载: 

http://download.csdn.net/download/djk8888/88595401

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DevOps搭建(三)-Git安装详细步骤

前面两篇文章我们讲了如何安装swappiness安装和虚拟机。这篇我们详细讲下如何安装Git。 1、YUM源更改为阿里云镜像源 1.1、备份CentOS-Base.repo 先备份原有的 CentOS-Base.repo 文件 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup…

C# 热键注册工具类

写在前面 介绍一个验证过的热键注册工具类&#xff0c;使用系统类库user32.dll中的RegisterHotkey函数来实现全局热键的注册。 代码实现 [Flags]public enum KeyModifiers{Alt 1,Control 2,Shift 4,Windows 8,NoRepeat 0x4000}public static class HotKeyHelper{[DllImp…

十五、机器学习进阶知识:K-Means聚类算法

文章目录 1、聚类概述2、K-Means聚类算法原理3、K-Means聚类实现3.1 基于SKlearn实现K-Means聚类3.2 自编写方式实现K-Means聚类 4、算法不足与解决思路4.1 存在的问题4.2 常见K值确定方法4.3 算法评估优化思路 1、聚类概述 聚类&#xff08;Clustering&#xff09;是指将不同…

菜鸟学习日记(python)——运算符

我们进行运算时&#xff0c;需要两类数据&#xff0c;操作数和运算符&#xff0c;例如&#xff1a;ab就是一个运算&#xff0c;它的操作数是a和b&#xff0c;运算符是‘’ 在python中运算符包括以下几大类&#xff1a; 算数运算符比较&#xff08;关系&#xff09;运算符赋值…

【云原生 | Docker】Docker核心概念 应用上手最佳流程

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

ubuntu 下载编译 opencv4.2.0并检验

如有帮助点赞收藏关注&#xff01; 如需转载&#xff0c;请注明出处&#xff01; ubuntu 的opencv4.2.0下载与编译 下载依赖开始编译安装配置OpenCV编译环境检验* 完成 下载 首先下载opencv源码网址&#xff1a; https://opencv.org/releases/page/3/ 下载成zip后&#xff0c;…

Linux常用快捷键

1. tab 键补全 1)当我们忘记了一些指令怎么写时&#xff0c;可以双击tab键&#xff0c;查看所有指令&#xff0c;显示出来后可以按enter键往下翻&#xff0c;想要取消命令可以按ctrl c。 2)知道开头怎么写&#xff0c;后面的忘了&#xff0c;也可以双击tab键查询开头排列的指令…

Liunx系统使用超详细(三)

本篇内容开始逐渐描述有关liunx的各种命令的使用方法&#xff01; 目录 一、目录和文件区别 1.1目录&#xff1a; 1.2文件&#xff1a; 1.3总结&#xff1a; 二、Linux命令的写法 三、linux命令清屏 四、pwd命令 五、ls命令 5.1 ls&#xff1a; 5.2 ls -l&#xff1a…

HTML CSS JavaScript的网页设计

一、网页界面效果&#xff1a; 二、HTML代码&#xff1a; <!DOCTYPE html> <!-- 声明文档类型--> <html lang"en"> …

代码随想录第二十一天(一刷C语言)|回溯算法组合

创作目的&#xff1a;为了方便自己后续复习重点&#xff0c;以及养成写博客的习惯。 一、回溯算法 1、种类 排列、组合、分割、子集、棋盘问题 2、回溯步骤 &#xff08;0&#xff09;回溯抽象 回溯法解决的问题均可以抽象为树形结构&#xff08;N叉树&#xff09; &…

acwing-Linux学习笔记

acwing-Linux课上的笔记 acwing-Linux网址 文章目录 1.1常用文件管理命令homework作业测评命令 2.1 简单的介绍tmux与vimvimhomeworktmux教程vim教程homework中的一些操作 3 shell语法概论注释变量默认变量数组expr命令read命令echo命令printf命令test命令与判断符号[]逻辑运算…

等保测评报价相差很大,里面有什么门道

等保测评报价的差异主要源于以下几点&#xff1a; 服务质量评估标准不同&#xff1a;不同的测评机构在测评过程中所提供的服务范围、深度、细节等方面可能存在差异&#xff0c;因此导致报价有所不同。一些机构可能提供全面且细致的测评服务&#xff0c;致力于提供高质量的等保测…

Nested Named Entity Recognition with Span-level Graphs

原文链接&#xff1a; https://aclanthology.org/2022.acl-long.63.pdf ACL 2022 介绍 问题 基于span的方法虽然在解决嵌套实体上存在巨大潜力&#xff0c;但存在以下问题&#xff1a; 1&#xff09;难以充分利用span的丰富语义&#xff1b; 2&#xff09;重叠较多的正负样本会…

如何使用PostMan进行并发测试?

如何使用PostMan进行并发测试&#xff1f; &#x1f440;(Postman 的 runner 实际上是串行执行的&#xff0c;因此不能作为并发测试&#xff0c; 只是批量测试&#xff0c;本文如下称为并发的是错误的) 文章目录 如何使用PostMan进行并发测试&#xff1f;POST篇流程Pre-req 脚…

c++ atmoic acquire/release

由于多核cpu缓存的存在&#xff0c;以及gcc编译优化&#xff0c;cpu指令层面的优化&#xff0c;导致程序的执行顺序可能跟你写的顺序不完全一致&#xff08;reorder&#xff09;。 但是在多线程编程中如何确保各个线程能正确的读取到各个变量呢&#xff08;而不是cache中老旧的…

做一件荒谬的事:用AI推理下一次双色球结果 v0.1

做一件荒谬的事&#xff1a;用AI推理下一次双色球结果 v0.1 引言 事情的起因是父亲被亲戚安利&#xff0c;突然喜欢上了双色球&#xff0c;连规则和开奖结果怎么看都不懂的他&#xff0c;让我研究研究这个事&#xff0c;给他选个号。他还说老家有好几个人中了几百万&#xff…

3.C程序编译步骤

目录 1 预处理 2 编译 3 汇编 4 链接 5 文件大小情况 依次执行下面4个步骤 预处理 将所有头文件展开&#xff0c;比如stdio.h等&#xff0c;展开就相当于把stdio.h中的所有代码粘贴到你的代码里。将所有的宏文件展开&#xff0c;像stdio.h是官方定义的头文件&#x…

Batch Normalization

1.是什么&#xff1f; 批量归一化&#xff08;Batch Normalization&#xff09;&#xff0c;由Google于2015年提出&#xff0c;是近年来深度学习&#xff08;DL&#xff09;领域最重要的进步之一。该方法依靠两次连续的线性变换&#xff0c;希望转化后的数值满足一定的特性&am…

Python 解析JSON实现主机管理

JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;它以易于阅读和编写的文本形式表示数据。JSON 是一种独立于编程语言的数据格式&#xff0c;因此在不同的编程语言中都有对应的解析器和生成器。JSON 格式的设计目标是易于理解、…

应用分发平台的重要性:构建、扩展和管理您的移动应用

在当今的数字时代&#xff0c;移动应用已经成为我们日常生活的一部分。无论是用于商业、教育、娱乐还是社交&#xff0c;应用都在我们的生活中发挥着重要的作用。然而&#xff0c;构建一个成功的应用需要更多的工作——它需要一个合适的平台来发布、管理和跟踪。这就是应用分发…
最新文章