民宿管理系統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
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82183.shtml
英文地址,請注明出處:http://en.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…