民宿管理系统5

管理员管理:

新增管理员信息:

前端效果:

前端代码:

<body>
<div class="layui-fluid"><div class="layui-row"><div class="layui-form"><div class="layui-form-item"><label for="loginname" class="layui-form-label"><span class="x-red">*</span>登录名</label><div class="layui-input-inline"><input type="text" id="loginname" name="loginname" lay-verify="required|loginname" class="layui-input"></div></div><div class="layui-form-item"><label for="L_loginpassword" class="layui-form-label"><span class="x-red">*</span>设置登录密码</label><div class="layui-input-inline"><input type="password" id="L_loginpassword" name="loginpassword" lay-verify="required|loginpassword" class="layui-input"></div></div><div class="layui-form-item"><label for="L_confirmloginpassword" class="layui-form-label"><span class="x-red">*</span>确认密码</label><div class="layui-input-inline"><input type="password" id="L_confirmloginpassword" name="confirmloginpassword" lay-verify="required|confirmloginpassword" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label"></label><button class="layui-btn" lay-filter="submit" lay-submit="">保存</button></div></div></div>
</div><script>layui.use(['form', 'layer', 'upload'], function () {$ = layui.jquery;var form = layui.form,upload = layui.upload,layer = layui.layer;//自定义验证规则form.verify({loginname: function (value) {var code;$.ajax({url: "/admin/checkloginname",type: "GET",async: false,  //关闭异步,当success返回结果后才执行ajax之后的内容data: {"loginname": value},success: function (s) {code = s;}});if (code != true) {return '登录名重复,请重新输入!';}},loginpassword: [/(.+){6,12}$/, '密码必须6到12位'],confirmloginpassword: function () {if ($('#L_confirmloginpassword').val() != $('#L_loginpassword').val()) {return '两次密码不一致';}}});//监听提交form.on('submit(submit)', function (data) {console.log(data.field);$.ajax({url: "/admin/addadmin",type: "post",data: data.field,success: function (s) {if (s == true) {layer.alert("新增管理员信息成功!", {icon: 6}, function () {parent.layer.closeAll();parent.location.href = "/admin/sysindex";});} else {layer.msg("登录名重复!", function () {});}},error: function () {layer.msg("接口异常!", function () {});}});});});
</script></body>

后端代码:

AdminController:
/*** 新增管理员页面*/@GetMapping("/addadminpage")public String addadminpage() {return "admin/addadminpage";}/*** 新增管理员,判断新增管理员登录名是否重复*/@GetMapping("/checkloginname")@ResponseBodypublic boolean checkaddadminloginname(@RequestParam("loginname") String loginname) {return adminService.checkaddadminloginname(loginname);}/*** 新增管理员信息*/@PostMapping("/addadmin")@ResponseBodypublic boolean addadmin(@RequestParam("loginname") String loginname,@RequestParam("loginpassword") String loginpassword,@RequestParam("confirmloginpassword") String confirmloginpassword) {return adminService.addadmin(loginname,loginpassword);}
AdminService:
/*** 新增管理员,判断新增管理员登录名是否重复*/boolean checkaddadminloginname(String loginname);/*** 新增管理员*/boolean addadmin(String loginname, String loginpassword);
AdminServicelpml:
/*** 新增管理员,判断新增管理员登录名是否重复*/@Overridepublic boolean checkaddadminloginname(String loginname) {Admin admin = adminMapper.selectaddadminloginname(loginname);return admin==null;}/*** 新增管理员*/@Overridepublic boolean addadmin(String loginname, String loginpassword) {Admin admin=new Admin();admin.setGname(loginname);admin.setGpassword(loginpassword);Admin admin1=adminMapper.selectaddadminloginname(loginname);if(admin1==null)return adminMapper.addadmin(admin);else return false;
AdminMapper:
/*** 新增管理员,判断新增管理员登录名是否重复*/Admin selectaddadminloginname(@Param("loginname")String loginname);/*** 新增管理员*/boolean addadmin(Admin admin);
AdminMapper.xml:
 <select id="selectaddadminloginname" resultType="com.homestay.pojo.Admin">select gname from adminwhere gname=#{loginname}</select><insert id="addadmin">insert into admin(gname,gpassword)values (#{gname,jdbcType=VARCHAR},#{gpassword,jdbcType=VARCHAR})</insert>

测试:

登录名重复:

必填项为空:

两次密码不一样:

新增成功:

管理员分页查询:

前端效果:

前端代码:

<body>
<div class="layui-fluid"><div class="layui-row layui-col-space15"><div class="layui-col-md12"><div class="layui-card"><div class="layui-card-body "><form class="layui-form layui-col-space5"><div class="layui-inline layui-show-xs-block"><input type="text" name="dname" placeholder="管理员名称" autocomplete="off" class="layui-input"></div><div class="layui-inline layui-show-xs-block"><button class="layui-btn" lay-submit="" lay-filter="search_btn"><i class="layui-icon">&#xe615;</i></button></div><a class="layui-btn layui-btn-small" style="line-height:1.6em;margin-top:3px;float:right" onclick="reload();" title="刷新"><i class="layui-icon layui-icon-refresh" style="line-height:30px"></i></a></form></div><div class="layui-card-body "><table id="departmenList" lay-filter="departmenList"></table></div></div></div></div>
</div><script type="text/html" id="departmenListBar"><a class="layui-btn layui-btn-xs" lay-event="edit" >编辑</a>
<!--    <a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</a>-->
</script><script type="text/javascript" th:inline="javascript">layui.use(['form', 'layer', 'table'], function () {var form = layui.form,layer = layui.layer,$ = layui.jquery,table = layui.table;var tableIns = table.render({elem: '#departmenList',url: '/admin/pagequaryadmin',method: 'get',title: '管理员列表',page: true,  //开启分页height: "full-110",  //高度最大化减去差值110,高度将始终铺满// toolbar: true,  //开启工具栏limit:10,  //每页显示的条数limits: [5,10,20,30],  //每页条数的选择项cols:[[{type: 'checkbox', field: 'gid', fixed: "left"},{field: 'gid', title: '管理员id', align: "center", unresize: "true"},{field: 'gname', title: '管理员名称', align: 'center', unresize: "true"},{field: 'gpassword',title: '管理员密码',align: 'center',unresize: true,hide: true  // 关键设置:隐藏列},{title: '操作', align: "center", unresize: "true", toolbar: "#departmenListBar"}]]});//搜索form.on('submit(search_btn)', function (data) {tableIns.reload({url: '/admin/listbyname',where: data.field, page: {curr: 1 //重新从第 1 页开始}});return false;});//监听工具条table.on('tool(departmenList)', function (obj) {var data = obj.data, //获得当前行数据layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)switch (layEvent) {case 'del':layer.confirm('确定删除此管理员?', {icon: 3, title: '提示信息'}, function (index) {$.post("/admin/department/delete",{"gid": data.gid}, function (s) {layer.msg(s.msg);});layer.close(index);tableIns.reload();});break;// case 'edit'://     xadmin.open('管理员编辑', '/admin/checkadminpasswordpage?gid=' + data.gid, 450, 300);//     break;case 'edit':// 构建传递的参数var params = {gid: data.gid,gname: data.gname,gpassword: data.gpassword};// 将参数转换为查询字符串var queryString = $.param(params);// 打开弹窗layer.open({type: 2,title: '管理员编辑',area: ['450px', '300px'],content: '/admin/checkadminpasswordpage?' + queryString});break;default:break;}});});function reload() {$.get("/admin/reload", function (data) {if (data) {location.reload();} else {parent.location.reload();}});}
</script>
</body>

后端代码:

AdminController:
/*** 编辑管理员页面*/@GetMapping("/updateadminpage")public String updateadminnpage() {return "admin/updateadminpage";}/*** 管理员分页查询* @return*/@GetMapping("/pagequaryadmin")@ResponseBodypublic Result pagequaryadmin(@RequestParam Map<String,Object> map) {int page = Integer.parseInt(map.get("page").toString());int limit = Integer.parseInt(map.get("limit").toString());int start=(page-1)*limit;return adminService.getadminList(start,limit);}
AdminService:
/*** 管理员分页查询* @param start* @param limit* @return*/Result getadminList(int start, int limit);
AdminServicelpml:
/*** 管理员分页查询* @param start* @param limit* @return*/@Overridepublic Result getadminList(int start, int limit) {int totaladmin=adminMapper.getTotaladmin();//获取管理员总数List<Admin> adminList=adminMapper.findadminList(start, limit);//获取管理员数据Result result = new Result();result.setCode(0);result.setMsg("查询成功");result.setCount(totaladmin);result.setData(adminList);return result;}
AdminMapper:
/*** 获取管理员总数* @return*/int getTotaladmin();/*** 获取管理员数据* @param start* @param limit* @return*/List<Admin> findadminList(@Param("start")int  start,@Param("limit") int limit);
AdminMappe.xml:
 <select id="getTotaladmin" resultType="java.lang.Integer">select count(*) from admin</select><select id="findadminList" resultType="com.homestay.pojo.Admin">select<include refid="Base_Column_List"></include>from adminorder by gidlimit #{start},#{limit}</select>

测试:

选择5页:

选择10页:

搜索框模糊查询:

后端代码:

AdminController:

/*** 模糊查询* @param map* @return*/@GetMapping("/listbyname")@ResponseBodypublic Result listbyname(@RequestParam Map<String,Object> map) {int page = Integer.parseInt(map.get("page").toString());int limit = Integer.parseInt(map.get("limit").toString());int start=(page-1)*limit;String dname=map.get("dname").toString();return adminService.listbyname(start,limit,dname);}

AdminService:

/*** 模糊查询* @param start* @param limit* @param dname* @return*/Result listbyname(int start, int limit, String dname);

AdminServicelpml:

/*** 模糊查询* @param start* @param limit* @param dname* @return*/@Overridepublic Result listbyname(int start, int limit, String dname) {int totaladmin=adminMapper.getTotaladminbyname(dname);//获取管理员总数List<Admin> adminList=adminMapper.findadminListbyname(start, limit,dname);//获取管理员数据Result result = new Result();result.setCode(0);result.setMsg("查询成功");result.setCount(totaladmin);result.setData(adminList);return result;}

AdminMapper:

 /*** 模糊查询获取总数* @param dname* @return*/int getTotaladminbyname(@Param("dname") String dname);/*** 模糊查询* @param start* @param limit* @param dname* @return*/List<Admin> findadminListbyname(@Param("start")int  start,@Param("limit") int limit, @Param("dname") String dname);

AdminMapper.xml:

    <select id="getTotaladminbyname" resultType="java.lang.Integer">select count(*)from adminwhere gname like concat('%',#{dname},'%')</select><select id="findadminListbyname" resultType="com.homestay.pojo.Admin">select <include refid="Base_Column_List"></include>from adminwhere gname like concat('%',#{dname},'%')order by gidlimit #{start},#{limit}</select>

测试:

编辑、删除管理员:

需要输入该管理员密码才能进行编辑信息,包括删除该管理员

前端效果:

检查管理员密码:

密码正确后:

前端代码:

检查密码页面:

<body>
<div class="layui-fluid"><div class="layui-row"><div class="layui-form"><div class="layui-form-item"><label for="gid" class="layui-form-label"><span class="x-red">*</span>管理员id: </label><div class="layui-input-inline"><input type="text" id="gid" name="gid"  class="layui-input" readonly="readonly" th:value="${session.gid}"></div></div><div class="layui-form-item"><label for="adminpassword" class="layui-form-label"><span class="x-red">*</span>输入管理员密码</label><div class="layui-input-inline"><input type="password" id="adminpassword" name="adminpassword" lay-verify="required" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label"></label><button class="layui-btn" lay-filter="submit" lay-submit="">确定</button></div></div></div>
</div><script>layui.use(['form', 'layer', 'jquery'], function () {var form = layui.form,layer = layui.layer,$ = layui.jquery;form.on('submit(submit)', function (data) {var loadingIndex = layer.load(1);$.ajax({url: "/admin/checkadminpassword",type: "POST",data: data.field,dataType: "json",success: function (response) {layer.close(loadingIndex);// 调试输出console.log('验证响应:', response);// 兼容两种响应格式if ((response && response.success) || response === true) {layer.msg("验证成功", {icon: 1, time: 1000}, function() {// 解决方案1:直接使用top窗口的xadmintop.xadmin.open('修改管理员', '/admin/updateadmin');// 解决方案2:先关闭当前弹窗再打开新窗口var index = parent.layer.getFrameIndex(window.name);parent.layer.close(index);setTimeout(function() {top.xadmin.open('修改管理员', '/admin/updateadmin',300,300);}, 300);});} else {layer.msg(response.message || "密码错误");}},error: function(xhr) {layer.close(loadingIndex);console.error('请求失败:', xhr.responseText);layer.msg("请求失败: " + (xhr.responseJSON?.message || xhr.statusText));}});return false;});});
</script></body>

编辑页面:

<body >
<div class="layui-fluid"  style="padding: 65px;"><div class="layui-row"><div class="layui-form"><div class="layui-form-item"><label for="gid" class="layui-form-label"><span class="x-red">*</span>管理员id: </label><div class="layui-input-inline"><input type="text" id="gid" name="gid"  class="layui-input" readonly="readonly" th:value="${session.gid}"></div></div><div class="layui-form-item"><label for="newadminname" class="layui-form-label" >新登录名</label><div class="layui-input-inline"><input type="text" id="newadminname" name="newadminname" class="layui-input"  th:value="${session.adminname}"></div></div><div class="layui-form-item"><label for="L_newPwd" class="layui-form-label"><span class="x-red">*</span>新密码</label><div class="layui-input-inline"><input type="password" id="L_newPwd" name="newgpassword" lay-verify="required|newgpassword" class="layui-input" th:value="${session.adminpassword}"></div><div class="layui-form-mid layui-word-aux">6到16个字符</div></div><div class="layui-form-item"><label for="L_confirmPwd" class="layui-form-label"><span class="x-red">*</span>确认密码</label><div class="layui-input-inline"><input type="password" id="L_confirmPwd" name="confirmPwd" lay-verify="required|confirmPwd" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label"></label><button class="layui-btn" lay-filter="submit" lay-submit="">保存</button><a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除管理员</a></div></div></div>
</div><script>layui.use(['form', 'layer', 'upload'], function () {$ = layui.jquery;var form = layui.form,upload = layui.upload,layer = layui.layer;// 删除按钮点击事件$('.layui-btn-danger').on('click', function() {layer.confirm('确定删除此管理员?', {icon: 3, title: '提示信息'}, function (index) {$.post("/admin/delete",{"gid": $('#gid').val()},function (success) {  // 直接接收布尔值if (success) {layer.msg('删除成功', {icon: 1});// 删除成功后刷新父窗口setTimeout(function() {xadmin.father_reload();}, 1000);} else {layer.msg('删除失败', {icon: 2});}});layer.close(index);});return false; // 阻止默认行为});//自定义验证规则form.verify({newgpassword: [/(.+){6,12}$/, '密码必须6到12位'],confirmPwd: function () {if ($('#L_newPwd').val() != $('#L_confirmPwd').val()) {return '两次密码不一致';}}});//监听提交form.on('submit(submit)', function (data) {console.log(data.field);$.ajax({url: "/admin/updateadmininformation",type: "post",data: data.field,success: function (s) {if (s == true) {layer.alert("修改成功!", {icon: 6}, function () {parent.layer.closeAll();});} else {layer.msg("登录名重复,修改失败!", function () {});}},error: function () {layer.msg("接口异常!", function () {});}});});});
</script>
</body>

后端代码:

AdminController:

/*** 编辑管理员,检查密码页面*/@GetMapping("/checkadminpasswordpage")public String checkadminpasswordpage(@RequestParam("gid") String gid,@RequestParam("gname")String gname,@RequestParam("gpassword")String gpassword, HttpSession session) {session.setAttribute("gid",gid);session.setAttribute("adminname",gname);session.setAttribute("adminpassword",gpassword);return "admin/updatecheckadminpasswordpage";}/*** 检查密码*/@PostMapping("/checkadminpassword")@ResponseBodypublic boolean checkadminpassword(@RequestParam("gid") String gid,@RequestParam("adminpassword") String adminpassword) {return adminService.checkadminpassword(gid,adminpassword);}/*** 跳转修改弹窗* @return*/@GetMapping("/updateadmin")public String updateadmin() {return "admin/updateadmin";}/*** 修改管理员信息* @param gid* @param newgpassword* @param newadminname* @return*/@PostMapping("/updateadmininformation")@ResponseBodypublic boolean updateadmininformation(@RequestParam("gid")String gid,@RequestParam("newgpassword")String newgpassword,@RequestParam("newadminname")String  newadminname ) {return adminService.updateadmininformation(gid,newgpassword,newadminname);}/*** 删除管理员*/@PostMapping("/delete")@ResponseBodypublic boolean delete(@RequestParam("gid")String gid) {return adminService.deleteadmin(gid);}@GetMapping("/reload")@ResponseBodypublic boolean reload() {return true;}

AdminService:

/*** 编辑管理员时,检查密码* @param gid* @param adminpassword* @return*/boolean checkadminpassword(String gid, String adminpassword);/*** 修改管理员信息* @param gid* @param newgpassword* @param newadminname* @return*/boolean updateadmininformation(String gid, String newgpassword, String newadminname);/*** 删除管理员* @param gid* @return*/boolean deleteadmin(String gid);

AdminServicelpml:

/*** 编辑管理员时,检查密码* @param gid* @param adminpassword* @return*/@Overridepublic boolean checkadminpassword(String gid, String adminpassword) {String gpassword=adminMapper.selectaddminpassword(gid);if(adminpassword.equals(gpassword))return true;else return false;}/*** 修改管理员信息* @param gid* @param newgpassword* @param newadminname* @return*/@Overridepublic boolean updateadmininformation(String gid, String newgpassword, String newadminname) {//检查登录名是否重复try {int count=adminMapper.countadminid(gid,newadminname);if(count>0){throw  new RuntimeException("登录名重复");}}catch (RuntimeException e) {return false;}//没有重复修改信息adminMapper.updateadmininformation(gid,newadminname,newgpassword);return true;
}/*** 删除管理员* @param gid* @return*/@Overridepublic boolean deleteadmin(String gid) {return adminMapper.deleteadmin(gid);}

AdminMapper:

/*** 编辑管理员时,检查密码是否正确* @param gid* @return*/String selectaddminpassword(String gid);/*** 检查登录名是否重复* @param gid* @param newadminname* @return*/int countadminid(@Param("gid") String gid,@Param("newadminname") String newadminname);/*** 修改信息* @param gid* @param newadminname* @param newgpassword*/void updateadmininformation(@Param("gid") String gid,@Param("newadminname") String newadminname,@Param("newgpassword") String newgpassword);/*** 删除管理员* @param gid* @return*/boolean deleteadmin(String gid);

AdminMapper.xml:

 <select id="selectaddminpassword" resultType="java.lang.String">select gpasswordfrom adminwhere gid=#{gid}</select><select id="countadminid" resultType="java.lang.Integer">select count(*)from adminwhere gid!=#{gid} and gname=#{newadminname}</select><update id="updateadmininformation">update adminsetgpassword=#{newgpassword},gname=#{newadminname}where gid=#{gid}</update><delete id="deleteadmin">delete from adminwhere gid = #{gid,jdbcType=INTEGER}</delete>

测试:

检查密码错误:

正确后:

提示:

密码两次不一样

登录名重复:

删除:

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

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

相关文章

​腾讯地图轨迹云:重构位置管理的数字神经中枢

——从轨迹追踪到智能决策&#xff0c;开启产业互联网新篇章 在数字经济与实体经济深度融合的今天&#xff0c;位置服务已成为企业数字化转型的核心基础设施。无论是物流运输中的车辆调度、共享经济中的设备管理&#xff0c;还是智慧城市中的交通优化&#xff0c;精准的轨迹数…

rce命令执行原理及靶场实战(详细)

2. 原理 在根源上应用系统从设计上要给用户提供一个指定的远程命令操作的接口。漏洞主要出现在常见的路由器、防火墙、入侵检测等设备的web管理界面上。在管理界面提供了一个ping服务。提交后&#xff0c;系统对该IP进行ping&#xff0c;并且返回结果。如果后台服务器并没有对…

GeoTools 将 Shp 导入PostGIS 空间数据库

前言 ❝ GeoTools 在空间数据转换处理方面具有强大的能力&#xff0c;能够高效、简洁的操纵 Shp 数据。特别是与空间数据库PostGIS 相结合&#xff0c;更能展示出其空间数据处理的优势&#xff0c;借助 GeoTools&#xff0c;我们可以实现 Shp 数据高效入库。 本文上接系列文章 …

基于SpringBoot+Vue的家政服务系统源码适配H5小程序APP

市场前景 随着社会经济的发展和人口老龄化的加剧&#xff0c;家政服务需求不断增长。我国65岁及以上人口增长较快&#xff0c;2022年我国65岁及以上老年人数量达2.1亿人&#xff0c;占比较2016年增长4.1个百分点&#xff0c;达14.9%。我国65岁及以上人口数量庞大&#xff0c;老…

《企业级日志该怎么打?Java日志规范、分层设计与埋点实践》

大家好呀&#xff01;&#x1f44b; 今天我们要聊一个Java开发中超级重要但又经常被忽视的话题——日志系统&#xff01;&#x1f4dd; 不管你是刚入门的小白&#xff0c;还是工作多年的老司机&#xff0c;日志都是我们每天都要打交道的"好朋友"。那么&#xff0c;如…

1Panel vs 宝塔面板:现代化运维工具的全方位对比

1Panel vs 宝塔面板对比分析 1Panel 和 宝塔面板&#xff08;BT-Panel&#xff09;都是服务器管理工具&#xff0c;旨在简化 Linux 服务器的运维工作&#xff0c;但它们在设计理念、功能侧重点和技术实现上有明显差异。以下从多个维度对两者进行对比分析&#xff1a; 1. 定位与…

怎么开发一个网络协议模块(C语言框架)之(四) 信号量初始化

// 原始代码 /* gVrrpInstance.sem = OsixCreateBSem(OSIX_SEM_Q_PRIORITY, OSIX_SEM_FULL); */ gVrrpInstance.sem = OsixCreateMSem(OSIX_SEM_Q_FIFO | OSIX_SEM_DELETE_SAFE); if (gVrrpInstance.sem == NULL) {printf("[VRRP]:vrrp init error, failed to create vrrp…

电脑C盘清理技巧:释放空间,提升性能

文章目录 一、使用系统自带的磁盘清理工具&#xff08;一&#xff09;打开磁盘清理工具&#xff08;二&#xff09;清理临时文件&#xff08;三&#xff09;清理系统文件 二、使用第三方清理工具&#xff08;一&#xff09;CCleaner&#xff08;极力推荐&#xff09;&#xff0…

ARM笔记-ARM处理器及系统结构

第二章 ARM处理器及系统结构 2.1 ARM处理器简介 采用RISC架构的ARM微处理器的特点&#xff1a; 体积小、功耗低、低成本、高性能&#xff1b;支持 Thumb&#xff08;16位&#xff09;/ARM&#xff08;32位&#xff09;双指令集&#xff0c;能很好地兼容 8位/16位 器件&#x…

关于如何在Springboot项目中通过excel批量导入数据

接口文档 2.5 批量导入学生账号 2.5.1 基本信息 请求路径:/admin/students/batch-import 请求方式:POST 接口描述:通过上传Excel文件批量导入学生账号信息。 2.5.2 请求参数 参数格式:multipart/form-data 参数说明: 参数名称参数类型是否必须备注filefile是包含学…

【TypeScript】知识点梳理(四)

#没事去翻翻官网文档&#xff0c;其实有很多用法是我们还不知道的&#xff0c;官方资料总是最权威的&#xff0c;也推荐大家无聊看看各个官网hhh&#xff0c;不一定是记忆&#xff0c;但在某种场景下我们或许能想到还有多一种解决方式# noImplicitAny 当我们没有表明类型时&…

Python匿名函数(lambda)全面详解

文章目录 Python匿名函数(lambda)全面详解一、lambda函数基础1. 什么是lambda函数&#xff1f;2. lambda函数语法3. 与普通函数的区别 二、lambda函数使用场景1. 作为函数参数2. 在数据结构中使用3. 作为返回值4. 立即调用(IIFE) 三、lambda函数高级用法1. 多参数lambda2. 条件…

Qt Widgets模块功能详细说明,基本控件:QCheckBox(三)

一、基本控件&#xff08;Widgets&#xff09; Qt 提供了丰富的基本控件&#xff0c;如按钮、标签、文本框、复选框、单选按钮、列表框、组合框、菜单、工具栏等。 1、QCheckBox 1.1、概述 (用途、状态、继承关系) QCheckBox 是 Qt 框架中的复选框控件&#xff0c;用于表示二…

HarmonyOS 鸿蒙应用开发基础:转换整个PDF文档为图片功能

在许多应用场景中&#xff0c;将PDF文档的每一页转换为单独的图片文件是非常有帮助的。这可以用于文档的分享、扫描文档的电子化存档、或者进行进一步的文字识别处理等。本文将介绍如何使用华为HarmonyOS提供的PDF处理服务将整个PDF文档转换为图片&#xff0c;并将这些图片存放…

【算法】: 前缀和算法(利用o(1)的时间复杂度快速求区间和)

前缀和算法&#xff1a;高效处理区间求和的利器 目录 引言什么是前缀和前缀和的基本实现前缀和的作用前缀和的典型应用场景前缀和的优缺点分析实战例题解析 引言 区间求和问题的普遍性暴力解法的时间复杂度问题前缀和算法的核心思想 什么是前缀和 前缀和的数学定义 通俗来…

NDVI谐波拟合(基于GEE实现)

在遥感影像中&#xff0c;我们常用 NDVI&#xff08;归一化植被指数&#xff09;来衡量地表植被的绿度。它简单直观&#xff0c;是生态监测、农情分析的基础工具。但你是否注意到&#xff1a; NDVI 虽然“绿”&#xff0c;却常常“乱”。 因为云层、观测频率、天气干扰&#xf…

基于Python+YOLO模型的手势识别系统

本项目是一个基于Python、YOLO模型、PyQt5的实时手势识别系统&#xff0c;通过摄像头或导入图片、视频&#xff0c;能够实时识别并分类不同的手势动作。系统采用训练好的深度学习模型进行手势检测和识别&#xff0c;可应用于人机交互、智能控制等多种场景。 1、系统主要功能包…

黑马点评--短信登录实现

短信登录 导入黑马点评项目 导入资料中提供的SQL文件 其中的核心表有&#xff1a; tb_user &#xff1a;用户表 tb_user_info &#xff1a;用户详情表 tb_shop&#xff1a;用户信息表 tb_shop_type&#xff1a;商户类型表 tb_blog&#xff1a;用户日记表&#xff08;达人…

AWS EC2实例安全远程访问最佳实践

EC2 远程连接方案对比 远程访问 Amazon EC2 实例主要有以下四种方式&#xff1a; Secure Shell (SSH) 远程访问AWS Systems Manager 会话管理器适用于 Linux 实例的 EC2 Serial ConsoleAmazon EC2 Instance Connect SSH 远程访问 SSH&#xff08;Secure Shell&#xff09;广…

Idea如果有参数,怎么debug

如上图&#xff0c;输入输出路径是需要运行的时候给参数。 那么 FileInputFormat.setInputPaths(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); 给上面的代码给参数的步骤为 1.在类名或者方法名上右键&#xff0c;选择More Run/Debug…