民宿管理系統6

普通管理員管理:

新增普通管理員:

前端效果:

前端代碼:

<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: "/smalladmin/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: "/smalladmin/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>

后端代碼:

SmalladminController
/*** 超級管理員,新增普通管理員頁面*/@GetMapping("/addadminpage")public String adduserpage() {return "smalladmin/addadminpage";}/*** 超級管理員新增普通管理員,判斷新增普通管理員登錄名是否重復*/@GetMapping("/checkloginname")@ResponseBodypublic boolean checkaddadminloginname(@RequestParam("loginname") String loginname) {return smalladminService.checkaddadminloginname(loginname);}/*** 超級管理員新增普通管理員信息*/@PostMapping("/addadmin")@ResponseBodypublic boolean addadmin(@RequestParam("loginname") String loginname,@RequestParam("loginpassword") String loginpassword,@RequestParam("confirmloginpassword") String confirmloginpassword) {return smalladminService.addadmin(loginname,loginpassword);}@GetMapping("/updateadminpage")public String updateadminpage() {return "smalladmin/updateadminpage";}
SmalladminService
/*** 超級管理員新增普通管理員,判斷新增普通管理員登錄名是否重復*/boolean checkaddadminloginname(String loginname);/*** 超級管理員新增普通管理員信息*/boolean addadmin(String loginname, String loginpassword);
SmalladminServicelpml
/*** 超級管理員新增普通管理員,判斷新增普通管理員登錄名是否重復*/@Overridepublic boolean checkaddadminloginname(String loginname) {Smalladmin smalladmin=smalladminMapper.selectaddadminloginname(loginname);return smalladmin==null;}/*** 超級管理員新增普通管理員信息*/@Overridepublic boolean addadmin(String loginname, String loginpassword) {return smalladminMapper.addsmalladmin(loginname,loginpassword);}
SmalladminMapper
/*** 超級管理員新增普通管理員時,檢查登錄名是否重復* @param loginname* @return*/Smalladmin selectaddadminloginname(String loginname);/*** 超級管理員新增普通管理員信息* @param loginname* @param loginpassword* @return*/boolean addsmalladmin(@Param("loginname") String loginname,@Param("loginpassword") String loginpassword);

SmalladminMapper.xml

  <select id="selectaddadminloginname" resultType="com.homestay.pojo.Smalladmin">select<include refid="Base_Column_List"></include>from smalladminwhere sname=#{loginname}</select><insert id="addsmalladmin">insert into smalladmin(sname,spassword)values (#{loginname},#{loginpassword})</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: '/smalladmin/pagequarysmalladmin',method: 'get',title: '管理員列表',page: true,  //開啟分頁height: "full-110",  //高度最大化減去差值110,高度將始終鋪滿// toolbar: true,  //開啟工具欄limit:10,  //每頁顯示的條數limits: [5,10,20,30],  //每頁條數的選擇項cols:[[{type: 'checkbox', field: 'sid', fixed: "left"},{field: 'sid', title: '普通管理員id', align: "center", unresize: "true"},{field: 'sphoto',title: '普通管理員頭像',align: 'center',unresize: "true",templet: function(d) {// 如果 uphoto 是圖片URL,直接渲染為 <img> 標簽return '<img src="' + d.sphoto + '" style="width: 40px; height: 40px; border-radius: 50%;" />';}},{field: 'sname', title: '普通管理員名稱', align: 'center', unresize: "true"},{field: 'spassword',title: '普通管理員密碼',align: 'center',unresize: "true"},{title: '操作', align: "center", unresize: "true", toolbar: "#departmenListBar"}]]});//搜索form.on('submit(search_btn)', function (data) {tableIns.reload({url: '/smalladmin/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("/smalladmin/delete",{// "nid": $('#nid').val()"sid":data.sid},function (success) {  // 直接接收布爾值if (success) {layer.msg('刪除管理員成功', {icon: 1});// 刪除成功后刷新父窗口setTimeout(function() {xadmin.father_reload();}, 1000);} else {layer.msg('刪除管理員失敗', {icon: 2});}});layer.close(index);});return false;// 阻止默認行為break;// case 'edit'://     xadmin.open('管理員編輯', '/admin/checkadminpasswordpage?gid=' + data.gid, 450, 300);//     break;case 'edit':// 構造完整的編輯URL,包含所有參數var editUrl = '/smalladmin/updatesmalladminpage?sid=' + data.sid+ '&sphoto=' + encodeURIComponent(data.sphoto || '')+ '&sname=' + encodeURIComponent(data.sname || '')+ '&spassword=' + encodeURIComponent(data.spassword || '');// 打開編輯窗口(調整彈窗大小以適應內容)xadmin.open('普通員工編輯', editUrl, 800, 550);break;default:break;}});});function reload() {$.get("/smalladmin/reload", function (data) {if (data) {location.reload();} else {parent.location.reload();}});}
</script>
</body>

后端代碼:

SmalladminController:
/*** 超級管理員編輯普通管理員,分頁查詢*/@GetMapping("/pagequarysmalladmin")@ResponseBodypublic Result pagequarysmalladmin(@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 smalladminService.getsmalladminList(start,limit);}
SmalladminService
/*** 分頁查詢普通管理員* @param start* @param limit* @return*/Result getsmalladminList(int start, int limit);
SmalladminServicelpml
/*** 分頁查詢普通管理員* @param start* @param limit* @return*/@Overridepublic Result getsmalladminList(int start, int limit) {int countsmalladmin=smalladminMapper.countsmalladmin();List<Smalladmin> smalladmins=smalladminMapper.selectsmalladmin(start,limit);Result result=new Result();result.setData(smalladmins);result.setCount(countsmalladmin);result.setMsg("查詢成功");result.setCode(0);return result;}
SmalladminMapper:
 /*** 獲取普通管理員總數* @return*/int countsmalladmin();/*** 分頁查詢,獲取數據* @param start* @param limit* @return*/List<Smalladmin> selectsmalladmin(@Param("start") int start, @Param("limit") int limit);

SmalladminMapper.xml

  <select id="countsmalladmin" resultType="java.lang.Integer">select count(*) from smalladmin</select><select id="selectsmalladmin" resultType="com.homestay.pojo.Smalladmin">select<include refid="Base_Column_List"></include>from smalladminorder by sidlimit #{start},#{limit}</select>

測試:

一頁5條:

一頁10條:

模糊查詢:

后端代碼:

SmalladminController
 /*** 模糊查詢*/@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 smalladminService.listbyname(dname,start,limit);}
SmalladminService
/*** 模糊查詢* @param dname* @param start* @param limit* @return*/Result listbyname(String dname, int start, int limit);
SmalladminServicelpml
 /*** 模糊查詢* @param dname* @param start* @param limit* @return*/@Overridepublic Result listbyname(String dname, int start, int limit) {int countsmalladmin=smalladminMapper.countsmalladminbyname(dname);List<Smalladmin> smalladmins=smalladminMapper.selectsmalladminbyname(dname,start,limit);Result result=new Result();result.setData(smalladmins);result.setCount(countsmalladmin);result.setMsg("查詢成功");result.setCode(0);return result;}
SmalladminMapper
/*** 模糊查詢獲取名總數* @param dname* @return*/int countsmalladminbyname(@Param("dname") String dname);/*** 模糊查詢* @param dname* @param start* @param limit* @return*/List<Smalladmin> selectsmalladminbyname(@Param("dname") String dname, @Param("start") int start, @Param("limit") int limit);
?SmalladminMapper.xml
    <select id="countsmalladminbyname" resultType="java.lang.Integer">select count(*)from smalladminwhere sname like concat('%',#{dname},'%')</select><select id="selectsmalladminbyname" resultType="com.homestay.pojo.Smalladmin">select<include refid="Base_Column_List"></include>from smalladminwhere sname like concat('%',#{dname},'%')order by sidlimit #{start},#{limit}</select>

測試:

刪除普通管理員

后端代碼:

SmalladminController
/*** 刪除普通管理員* @param sid* @return*/@PostMapping("/delete")@ResponseBodypublic boolean delete(@RequestParam("sid") int sid) {return smalladminService.deletesmalladmin(sid);}
SmalladminService
/*** 刪除普通管理員* @param sid* @return*/boolean deletesmalladmin(int sid);
SmalladminServicelpml
/*** 刪除普通管理員* @param sid* @return*/@Overridepublic boolean deletesmalladmin(int sid) {return smalladminMapper.deletesmalladmin(sid);}
SmalladminMapper
/*** 刪除普通管理員* @param sid* @return*/boolean deletesmalladmin(int sid);
SmalladminMapper.xml
  <delete id="deletesmalladmin">delete from smalladminwhere sid = #{sid,jdbcType=INTEGER}</delete>

測試

編輯普通管理員:

前端效果

前端代碼

<body>
<div class="layui-fluid"><div class="layui-row"><div class="layui-form"><div class="layui-form-item"><label class="layui-form-label">普通管理員頭像</label><div class="img-upload-area"><img class="layui-upload-img" id="nphoto" th:src="${session.smallphoto}"><div class="upload-btn-group"><button type="button" class="layui-btn layui-btn-primary" id="choiceImg"><i class="layui-icon">&#xe67c;</i>選擇圖片</button><button type="button" class="layui-btn" id="uploadImg"><i class="layui-icon">&#xe67c;</i>上傳圖片</button></div></div><p id="uploadErrorText" style="margin-left: 120px; color: var(--error-color);"></p></div><div class="layui-form-item"><label for="sid" class="layui-form-label"><span class="x-red">*</span>普通管理員id</label><div class="layui-input-inline"><input type="text" id="sid" name="sid" class="layui-input" readonly="readonly" th:value="${session.sid}"></div></div><div class="layui-form-item"><label for="updatesmallname" class="layui-form-label"><span class="x-red">*</span>修改登錄名</label><div class="layui-input-inline"><input type="text" id="updatesmallname" name="updatesmallname" lay-verify="required|loginname" class="layui-input" th:value="${sname}"></div></div><div class="layui-form-item"><label for="updatesmallloginpassword" class="layui-form-label"><span class="x-red">*</span>修改登錄密碼</label><div class="layui-input-inline"><input type="password" id="updatesmallloginpassword" name="updatesmallloginpassword" lay-verify="required|updatesmallloginpassword" class="layui-input" th:value="${spassword}"></div></div><div class="layui-form-item"><label for="confirmloginpassword" class="layui-form-label"><span class="x-red">*</span>確認密碼</label><div class="layui-input-inline"><input type="password" id="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="" id="submit"><i class="layui-icon">&#xe605;</i> 保存修改</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({required: function(value) {if(value.trim() === '') {return '此項不能為空';}}});//選完文件后不自動上傳var uploadInst = upload.render({elem: '#choiceImg',url: '/smalladmin/upload/updatesmalladminphoto',auto: false,bindAction: '#uploadImg',choose: function (obj) {obj.preview(function (index, file, result) {$('#nphoto').attr('src', result);});},before: function() {layer.load(1, {shade: [0.1, '#fff']});},done: function (res) {layer.closeAll('loading');if (res == true) {layer.msg('上傳成功', {icon: 1});} else {layer.msg('上傳失敗', {icon: 2});}},error: function () {layer.closeAll('loading');var uploadErrorText = $('#uploadErrorText');uploadErrorText.html('<span style="color: var(--error-color);">上傳失敗,請重試</span>');}});//自定義驗證規則form.verify({// oldPwd: function (value) {//     var code;//     $.ajax({//         url: "/admin/password",//         type: "GET",//         async: false,  //關閉異步,當success返回結果后才執行ajax之后的內容//         data: {"oldPwd": value},//         success: function (s) {//             code = s;//         }//     });//     if (code != true) {//         return '舊密碼錯誤,請重新輸入!';//     }// },updatesmallloginpassword: [/(.+){6,12}$/, '密碼必須6到12位'],confirmloginpassword: function () {if ($('#updatesmallloginpassword').val() != $('#confirmloginpassword').val()) {return '兩次密碼不一致';}}});//監聽提交form.on('submit(submit)', function (data) {var loadIndex = layer.load(2, {shade: [0.1, '#fff']});$.ajax({url: "/smalladmin/updatesmalladmininformation",type: "post",data: data.field,success: function (s) {layer.close(loadIndex);if (s == true) {layer.alert("普通管理員信息修改成功!", {icon: 1,title: '成功',skin: 'layui-layer-molv'}, function () {parent.layer.closeAll();parent.location.reload();});} else {layer.msg("登錄名重復,普通管理員信息修改失敗!", {icon: 2});}},error: function () {layer.close(loadIndex);layer.msg("請求失敗,請檢查網絡連接", {icon: 2});}});return false;});});
</script>
</body>

后端代碼:

SmalladminController
/*** 修改普通管理員頁面* @return*/@GetMapping("/updatesmalladminpage")public String updatesmalladminpage(@RequestParam("sid")String sid, @RequestParam("sname")String sname,@RequestParam("spassword")String spassword, HttpSession session,@RequestParam("sphoto")String sphoto, Model model) {model.addAttribute("sid", sid);model.addAttribute("sname", sname);model.addAttribute("spassword", spassword);model.addAttribute("sphoto", sphoto);session.setAttribute("smallphoto",sphoto);session.setAttribute("sid",sid);return "smalladmin/updatesmalladminpage";}/*** 修改普通管理員信息* @param sid* @param sname* @return*/@PostMapping("/updatesmalladmininformation")@ResponseBodypublic boolean updatesmalladmininformation(@RequestParam("sid")String sid,@RequestParam("updatesmallname")String sname,@RequestParam("updatesmallloginpassword")String spassword,HttpSession session){return smalladminService.updatesmalladmin(sid,sname,spassword);}@PostMapping({"/upload/updatesmalladminphoto"})@ResponseBodypublic boolean updatesmalladminphoto(HttpServletRequest request, @RequestParam("file")MultipartFile file, HttpSession session, Model model) throws IOException, URISyntaxException{/*1、給文件起一個新的文件名--------------------*/String suffixName = UploadFileUtils.getSuffixName(file);String newFileName = UploadFileUtils.getNewFileName(suffixName);/*-----------------------------------------*//*2.在本機(或服務器)創建一個文件夾-----------*/String realPath = System.getProperty("user.dir") + "\\upload\\";
//System.getProperty("user.dir")獲取該項目在本機上的絕對路徑,比如“C:\java\demo”
//realPath:圖片在服務器上的物理存儲地址,比如“C:\java\demo\\upload”File fileDirectory = new File(realPath); //在內存中創建文件夾映射對象,比如“C:\java\demo\\upload”File destFile = new File(realPath + newFileName); //在內存中創建文件映射對象,比如“C:\java\demo\\upload\xxxx.jpg”if (!fileDirectory.exists() && !fileDirectory.mkdirs()) {System.out.println("文件夾創建失敗!");return false;}/*-----------------------------------------*//*3.把file以新文件名形式存入本機(或服務器)文件夾-----*/file.transferTo(destFile);/*----------------------------------------------*//*4.創建能訪問該文件的URL地址(不是電腦的物理地址、不是絕對路徑)放入數據庫表-----*/
//new URI()生成一個統一資源定位地址,例如URL,如果語法不正確則拋出異常URI uri = new URI(request.getRequestURL() + "");
//http://localhost:8081/admin/upload/userImg/uri = UploadFileUtils.getHost(uri); //http://localhost:8081String sqlImg = uri + "/upload/" + newFileName; //sqlImg:存入數據庫表中的圖片地址,比如“http://localhost:8081/upload/xxxx.jpg”if (smalladminService.updatesmalladminphoto(session.getAttribute("sid").toString(), sqlImg)) {session.setAttribute("smalladminphoto", sqlImg);return true;} else {return false;}/*--------------------------------------------------------------------*/}
SmalladminService
 /*** 修改普通管理員信息* @param sid* @param sname* @param spassword* @return*/boolean updatesmalladmin(String sid, String sname, String spassword);/*** 改照片* @param sid* @param sqlImg* @return*/boolean updatesmalladminphoto(String sid, String sqlImg);
SmalladminServicelpml
/*** 修改普通管理員信息* @param sid* @param sname* @param spassword* @return*/@Overridepublic boolean updatesmalladmin(String sid, String sname, String spassword) {try {int countsmalladminname=smalladminMapper.countsmalladminname(sid,sname);//判斷登錄名是否重復if(countsmalladminname>0){throw new RuntimeException("登錄名重復");}} catch (RuntimeException e) {return false;}smalladminMapper.updatesmalladmin(sid,sname,spassword);return true;}/*** 修改頭像* @param sid* @param sqlImg* @return*/@Overridepublic boolean updatesmalladminphoto(String sid,  String sqlImg) {return smalladminMapper.updatesmalladminphoto(sid,sqlImg);}
SmalladminMapper
/*** 修改頭像* @param sid* @param sqlImg* @return*/boolean updatesmalladminphoto(@Param("sid")String sid,@Param("sqlImg") String sqlImg);/*** 檢查登錄名是否重復* @param sid* @param sname* @return*/int countsmalladminname(@Param("sid")String sid,@Param("sname") String sname);/*** 修改普通管理員信息* @param sid* @param sname* @param spassword*/void updatesmalladmin(@Param("sid") String sid,@Param("sname") String sname,@Param("spassword") String spassword);
SmalladminMapper.xml
  <update id="updatesmalladminphoto">update smalladminset sphoto=#{sqlImg}where sid=#{sid}</update><select id="countsmalladminname" resultType="java.lang.Integer">select count(*)from smalladminwhere sname=#{sname} and sid!=#{sid}</select><update id="updatesmalladmin">update smalladminset sname=#{sname},spassword=#{spassword}where sid=#{sid}</update>

測試:

登錄名重復

密碼不一樣

必填項為空

修改成功

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79941.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79941.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79941.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue3+ant design vue + Sortable實現多級表格列拖動

1、最近遇到個需求&#xff0c;需使用vue3ant design vue Sortable實現多級表格的表頭允許用戶拖拽移動。即當用戶拖拽一級表頭時&#xff0c;其對應的子級表頭及數據應同步移動&#xff0c;并且只允許一級非固定表頭允許拖拽。 2、代碼 <a-table:data-source"rowDat…

第五十四篇 AI與數據分析

一、AI數據分析就像做菜 想象你在廚房做一道新菜&#xff0c;AI數據分析的流程其實非常相似&#xff1a; 買菜&#xff08;獲取數據&#xff09; 去市場挑選新鮮蔬菜 從Excel/數據庫獲取數據例&#xff1a;pd.read_csv(超市銷售表.csv) 洗菜切菜&#xff08;清洗數據&#x…

差分OPA verilogaA 模型

做電路設計&#xff0c;需要提前用理想模型如VerilogA模型做驗證。這里分享一個由ahdlib庫里單端opamp改造而來的差分opamp。參考何樂年的《模擬集成電路設計與仿真》10.4節423頁&#xff1b; 描述的小信號模型如上。 VerilogA 用到了SRI/C&#xff0c;GBWgm/C,gaingm*r1等概念…

Solidity語言基礎:區塊鏈智能合約開發入門指南

一、Solidity概述 Solidity是以太坊生態系統中最重要的智能合約編程語言&#xff0c;由Gavin Wood于2014年提出。作為面向合約的高級語言&#xff0c;它結合了JavaScript、Python和C的語法特點&#xff0c;專為在以太坊虛擬機&#xff08;EVM&#xff09;上運行而設計。 核心…

開啟智能Kubernetes管理新時代:kubectl-ai讓操作更簡單!

在如今的科技世界中,Kubernetes 已經成為容器編排領域的標桿,幾乎所有現代應用的基礎設施都離不開它。然而,面對復雜的集群管理和日常運維,許多開發者常常感到無所適從。今天,我們將為大家介紹一款結合了人工智能的強大工具——kubectl-ai。它不僅能幫助開發者更加順暢地與…

2003-2020年高鐵站開通時間數據

2003-2020年高鐵站開通時間數據 1、時間&#xff1a;2003-2020年 2、來源&#xff1a;Chinese High-speed Rail and Airline Database&#xff0c;CRAD 3、指標&#xff1a;高鐵站名稱、開通時間、所在省份、所在城市、所屬線路名稱 4、說明&#xff1a; Hsrwsnm[高鐵站名…

神經網絡—感知器、多層感知器

文章目錄 前言一、生物神經元與感知器的類比二、感知器1、簡單感知器2、多層感知器&#xff08;1&#xff09;多層感知機結構 3、神經網絡結構 總結1、感知器的局限性如何突破感知器的局限性&#xff1f; 2、感知器的應用 前言 感知器&#xff08;Perceptron&#xff09;是神經…

避免數據丟失:在存儲測試數據之前,要做好Redis持久化

Redis提供兩種持久化方法&#xff1a; 一、RDB&#xff08;Redis DataBase&#xff09;&#xff1a; 1、周期性保存內存快照到磁盤&#xff08;生成 dump.rdb 文件&#xff09;。 2、配置save 相關參數。 我本地的配置如下&#xff1a; &#xff08;1&#xff09;配置文件re…

Oracle EBS FORM快捷鍵與觸發器的關系與使用

Oracle EBS FORM快捷鍵與觸發器的引用 1、快捷鍵作用&#xff0c;可以看文檔fmrweb.res 2、文件內容&#xff1a;標識了快捷鍵的作用 9 : 0 : “Tab” : 1 : “Next Field” 9 : 1 : “ShiftTab” : 2 : “Previous Field” 116 : 0 : “F5” : 3 : “Clear Field” 38 : 0 :…

Java 24:重構數字信任邊界 —— 后量子時代的智能安全防御體系構建

引言 在量子計算陰影與 AI 驅動攻擊交織的網絡安全新紀元&#xff0c;Java 平臺正經歷著自誕生以來最深刻的安全架構革新。作為企業級應用的核心基礎設施&#xff0c;Java 24 不僅延續了 “一次編寫&#xff0c;處處運行” 的跨平臺基因&#xff0c;更以后量子密碼學引擎、動態…

【故障定位系列】容器CPU問題引起的故障如何快速排查

原文地址&#xff1a;https://mp.weixin.qq.com/s/0VlIjbeEdPZUbLD389disA 當生產環境中的容器CPU出現異常時&#xff0c;可能會引發上層業務出現一系列問題&#xff0c;比如業務請求緩慢、網頁卡頓甚至崩潰等&#xff0c;如果沒有一個有效的故障定位方法&#xff0c;運維人員很…

DeepSeek 智能客服應用指南:構建、策略與成效升級

目錄 一、引言二、DeepSeek 與智能客服的相遇2.1 DeepSeek 的技術亮點2.2 智能客服&#xff1a;企業不可或缺的 “數字助手”2.3 DeepSeek 如何適配智能客服需求 三、基于 DeepSeek 搭建智能客服系統3.1 需求分析3.2 技術選型3.3 系統架構設計3.4 搭建步驟實操 四、基于 DeepSe…

JVM運行時數據區域(Run-Time Data Areas)的解析

# JVM運行時數據區域(Run-Time Data Areas)的解析 歡迎來到我的博客&#xff1a;TWind的博客 我的CSDN:&#xff1a;Thanwind-CSDN博客 我的掘金&#xff1a;Thanwinde 的個人主頁 本文參考于&#xff1a;深入理解Java虛擬機&#xff1a;JVM高級特性與最佳實踐 本文的JVM均…

【特別版】Kubernetes集群安裝(1master,2node)

Kubernetes集群安裝 虛擬機準備 按照三臺虛擬機標準&#xff0c;一臺控制節點兩臺工作節點 主機名ip配置要求master-k8s192.168.242.102GB或更多RAM&#xff0c;2個CPU或更多CPU&#xff0c;硬盤30GB或更多node01-k8s192.168.242.112GB或更多RAM&#xff0c;2個CPU或更多CPU…

Excel點擊單元格內容消失

Excel點擊單元格內容消失 前言一、原因說明二、解決方案1.菜單欄中找到“審閱”&#xff0c;選擇“撤銷工作表保護”2.輸入密碼3.解除成功 前言 Excel想要編輯單元格內容時&#xff0c;無論是單擊還是雙擊單元格內容都莫名其妙的消失了 一、原因說明 單擊或者雙擊Excel中單元…

最優化方法Python計算:有約束優化應用——線性Lasso回歸預測器

實際應用中&#xff0c;特征維度 n n n通常遠大于樣本容量 m m m&#xff08; n ? m n\ll m n?m&#xff09;&#xff0c;這種高維小樣本場景下特征數據可能含有對標簽數據 y i y_i yi?的取值不必要的成分&#xff0c;甚至是噪聲。此時&#xff0c;我們希望回歸模型中的優化…

如何為APP應用程序選擇合適的服務器

搭建一個成功的APP應用程序&#xff0c;服務器選擇是至關重要的決策之一。合適的服務器不僅能確保應用流暢運行&#xff0c;還能節省成本并保障安全性。本文將為您詳細解析如何為APP選擇最佳服務器方案。 一、了解您的APP需求 在選擇服務器前&#xff0c;首先需要明確您的應用…

k8s(11) — 探針和鉤子

鉤子和探針的區別&#xff1a; 在 Kubernetes&#xff08;k8s&#xff09;中&#xff0c;鉤子&#xff08;Hooks&#xff09;和探針&#xff08;Probes&#xff09;是保障應用穩定運行的重要機制&#xff0c;不過它們的用途和工作方式存在差異&#xff0c;以下為你詳細介紹&…

Kafka消息隊列之 【消費者分組】 詳解

消費者分組(Consumer Group)是 Kafka 提供的一種強大的消息消費機制,它允許多個消費者協同工作,共同消費一個或多個主題的消息,從而實現高吞吐量、可擴展性和容錯性。 基本概念 消費者分組:一組消費者實例的集合,這些消費者實例共同訂閱一個或多個主題,并通過分組來協調…

什么是Blender?怎么獲取下載Blender格式文件模型

glbxz.com glbxz.com 官方可以下載Blender格式文件模型 BlenderBlender 是一個免費的開源程序&#xff0c;用于建模和動畫&#xff0c;最初由一家名為 Neo Geo 的動畫工作室作為內部應用程序開發&#xff0c;后來作為自己的程序發布。這是一個稱職的程序&#xff0c;近年來由于…