B047-cms02-高级查询 删除 添加 修改

news2024/9/27 21:25:12

目录

      • 高级查询
        • 页面准备
        • 下拉框显示文章类型
          • ArticleController
          • 用jstl和el表达式取值展示
        • 高级查询参数
          • ArticleQuery
        • 高级查询页面发送请求
          • 导入jquery.jdirk.js
          • 在jquery下引用
          • 绑定按钮发送请求
          • 高级查询sql
      • 绑定删除事件
        • 绑定事件拿到标签id值
        • 准备模态框来自xmind
        • 弹出删除模态框
        • 绑定删除模态框确定按钮发送删除请求
        • 后台删除实现
          • ArticleController
          • AiticleMapper.xml
        • 删除完成
          • 封装AjaxResult
          • ArticleController
          • 前台处理
      • 添加或修改弹出模态框
        • 模态框准备-来自xmind
        • 添加和修改按钮加上id
        • 分别绑定事件
        • 添加完成
          • 请求路径
          • ArticleController
          • ArticleMapper.xml
          • jsp
        • 修改:获取回显数据
        • 回显数据
        • 修改后台完成
          • 设置隐藏域id
          • 添加操作中清空隐藏域id
          • ArticleController
          • ArticleMapper.xml
      • tips:获取模态框内所有数据的方法

高级查询

页面准备

copy xmind高级查询代码到文章页面表格上方

<!-- 高级查询 -->
<div class="row app-title">
	<div class="col-md-12">
	<!-- 表单 -->
	<form id="queryForm" class="form-inline">
		<div class="form-group">
			<label for="title">标题:</label>
				<input type="text" class="form-control" name="title" id="title">
		</div>
		<div class="form-group" style="margin-left: 20px">
			<label>文章类型:</label>
			<select name="typeId" class="form-control" id="typeId">
				<option value="">请选择</option>
				<option value="1">技术文章</option>
				<option value="2">行业新闻</option>
				<option value="3">学科咨询</option>
			</select>
		</div>
		<div class="form-group" style="margin-left: 20px">
			<label>是否启用:</label>
			<select name="enable" class="form-control" id="enable">
				<option value="">请选择</option>
				<option value="1">启用</option>
				<option value="0">禁用</option>
			</select>
		</div>
		<button type="button" id="queryButton" class="btn btn-success" style="margin-left: 20px">查询</button>
	</form>
	</div>
</div>

在这里插入图片描述

下拉框显示文章类型

ArticleController
	/**
	 * @Description:跳转到后台文章展示页
	 */
	@RequestMapping("/index")
	public String index(Map<String, Object> map){
		// 查询到文章类型
		List<ArticleType> list = typeService.findAll();		
		// 把数据放入map中相当于把数据放入request域,然后前台EL表达式去取
		map.put("list", list);
		
		return "article/article";
	}
用jstl和el表达式取值展示
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
					<div class="form-group" style="margin-left: 20px">
						<label>文章类型:</label>
						<select name="typeId" class="form-control" id="typeId">
							<option value="">请选择</option>
							<!-- 
								items:循环的对象
								var: 每次循环的结果
							 -->
							<c:forEach items="${list}" var="type">
								<option value="${type.id }">${type.name }</option>							
							</c:forEach>
						</select>
					</div>

高级查询参数

在这里插入图片描述

			<!-- 高级查询 -->
			<div class="row app-title">
				<div class="col-md-12">
				<!-- 表单 -->
				<form id="queryForm" class="form-inline">
					<div class="form-group">
						<label for="title">标题:</label>
							<input type="text" class="form-control" name="title" id="title">
					</div>
					<div class="form-group" style="margin-left: 20px">
						<label>文章类型:</label>
						<select name="typeId" class="form-control" id="typeId">
							<option value="">请选择</option>
							<!-- 
								items:循环的对象
								var: 每次循环的结果
							 -->
							<c:forEach items="${list}" var="type">
								<option value="${type.id }">${type.name }</option>							
							</c:forEach>
						</select>
					</div>
					<div class="form-group" style="margin-left: 20px">
						<label>是否启用:</label>
						<select name="enable" class="form-control" id="enable">
							<option value="">请选择</option>
							<option value="1">启用</option>
							<option value="0">禁用</option>
						</select>
					</div>
					<button type="button" id="queryButton" class="btn btn-success" style="margin-left: 20px">查询</button>
				</form>
				</div>	
			</div>
ArticleQuery
@AllArgsConstructor
@NoArgsConstructor
@Data
public class ArticleQuery extends PageQuery{
	
	// 标题  String
	private String title;
	
	// 文章类型id
	private Long typeId;
	
	// 是否启用  SpringMVC会自动转Boolean值和0、1
	private Boolean enable;
}

高级查询页面发送请求

导入jquery.jdirk.js

方便在页面中整体并动态地取值
/cms02/src/main/WebContent/static/system/js/jquery.jdirk.js

在jquery下引用
		<script src="/static/system/js/jquery-3.3.1.min.js"></script>		
		<script type="text/javascript" src="/static/system/js/jquery.jdirk.js"></script>
	    <script type="text/javascript" src="/static/system/js/form-load.js"></script>
	    <script type="text/javascript" src="/static/system/js/jquery-form.js"></script>
绑定按钮发送请求
		    // 高级查询绑定事件
		    $("#queryButton").click(function(){
		    	
		    	// 获取参数    jquery.jdirk.js提供的方法
		    	var dataForm = $("#queryForm").serializeObject();
		    	
		    	// 发送请求  相当于发送的是gridmanager的url,即增加dataForm参数发送GridManager异步请求
		    	GridManager.setQuery('demo-ajaxPageCode', dataForm);
		    });
高级查询sql
	<!-- mybatis通过getBegin方法拿到begin当做一个属性的值 -->
	<select id="findAll" resultType="article">
		select * from t_article
		<include refid="query"></include>
		limit #{begin}, #{pageSize}
	</select>
	
	<!-- Integer findCount(ArticleQuery aq); -->
	<select id="findCount" resultType="int">
		select count(id) from t_article
		<include refid="query"></include>
	</select>
	
	<!-- sql片段 -->
	<sql id="query">
		<where>
			<if test="enable!=null">
				and enable = #{enable}
			</if>
			<if test="typeId!=null">
				and typeId = #{typeId}
			</if>
			<if test="title!=null and ''!=title.trim()">
				and title like concat('%',trim(#{title}),'%' )
			</if>
		</where> 
	</sql>

绑定删除事件

绑定事件拿到标签id值

{
	key: 'id',
	align: "center",
	text: '操作 &nbsp;&nbsp;<a style="color:green" href="javascript:;">添加</a>',
	template: function(cell, row, index, key){// 模板

	return '<a style="color:red" data-id="'+cell+'" href="javascript:;">删除</a>&nbsp;&nbsp;'+
			'<a style="color:blue" href="javascript:;">修改</a>';
	}
}
			// 删除操作  绑定的是删除按钮
		    $("body").on("click","a[data-id]",function(){
		    	// 获取id
		    	delId = $(this).data("id");
		    	alert(delId)
		    });

准备模态框来自xmind

	<!-- 删除时的确认模态框 -->
	<div class="modal fade" id="delModal">
		<div class="modal-dialog">
			<div class="modal-content message_align">
				<div class="modal-header">
					<button type="button" class="close" data-dismiss="modal" aria-label="Close">
						<span aria-hidden="true">×</span>
					</button>
				</div>
				<div class="modal-body">
						<h5 style="color: red">您确认要删除吗?</h5>
				</div>
				<div class="modal-footer">
					<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
					<a href="javascript:void(0);" id="delModalButton" class="btn btn-success">确定</a>
				</div>
			</div><!-- /.modal-content -->
		</div><!-- /.modal-dialog -->
	</div>

弹出删除模态框

		 	// 删除操作  绑定的是删除按钮
		    $("body").on("click","a[data-id]",function(){
		    	// 获取id
		    	var delId = $(this).data("id");
		    	// alert(delId)
		    	// 弹出模态框
		    	$("#delModal").modal("show");
		    });

绑定删除模态框确定按钮发送删除请求

			var delId;
		 	// 删除操作  绑定的是删除按钮
		    $("body").on("click","a[data-id]",function(){
		    	// 获取id
		    	delId = $(this).data("id");
		    	// alert(delId)
		    	// 弹出模态框
		    	$("#delModal").modal("show");
		    });

			// 删除模态框确定按钮  绑定一个事件  发送删除请求
		    $("#delModalButton").click(function(){
		    	
		    	// alert("......");
		    	// 删除请求
		    	$.ajax({
		    		type: "post",
		    		url: "/system/article/delById",
		    		data: {"id":delId}, // "id="+delId
		    		dataType: "json",
		    		success: function(msg){
						console.debug(msg);
		    		}
		    	});		    	    	
		    });

后台删除实现

ArticleController
	@RequestMapping("/delById")
	@ResponseBody
	public String delById(Long id){
		try {
			service.delById(id);
			return "ok";
		} catch (Exception e) {
			e.printStackTrace(); // 打印异常信息
			return "no";
		}
	}
AiticleMapper.xml
	<!-- void delById(Long id); -->
	<delete id="delById">
		delete from t_article where id=#{id}
	</delete>

删除完成

封装AjaxResult
@Data
@AllArgsContructor
@NoArgsContructor
public class AjaxResult {

	private Boolean success = true;
	private String error;
}
ArticleController
	@RequestMapping("/delById")
	@ResponseBody
	public AjaxResult delById(Long id){
		try {
			service.delById(id);
			return new AjaxResult();
		} catch (Exception e) {
			e.printStackTrace(); 		// 打印异常信息到控制台
			return new AjaxResult(false, "删除失败");
		}
	}
前台处理
			// 删除模态框确定按钮  绑定一个事件  发送删除请求
		    $("#delModalButton").click(function(){
		    	
		    	// alert("......");
		    	// 删除请求
		    	$.ajax({
		    		type: "post",
		    		url: "/system/article/delById",
		    		data: {"id":delId}, // "id="+delId
		    		dataType: "json",
		    		success: function(msg){
		    			if(msg.success){// 成功
		    				// 关闭模态框
		    				$("#delModal").modal("hide");
		    				// 刷新数据 ????
		    				GridManager.refreshGrid("demo-ajaxPageCode", true);
		    			}else{
		    				// 关闭模态框
		    				$("#delModal").modal("hide");
		    				// 失败提示
		    				alert(msg.error)
		    			}
		    		}
		    	});		    	    	
		    });

添加或修改弹出模态框

模态框准备-来自xmind

<!-- 添加或者修改的模态框 -->
<div class="modal fade" id="saveModel">
	<div class="modal-dialog">
		<div class="modal-content message_align">
			<div class="modal-header">
				<button type="button" class="close" data-dismiss="modal" aria-label="Close">
					<span aria-hidden="true">×</span>
				</button>
			</div>
			<div class="modal-body">
				<form action="/system/article/save" method="post" class="form-horizontal" id="saveForm">
					<input type="hidden" name="id">
						<div class="form-group row">
							<label for="title" class="control-label col-md-3">文章标题</label>
							<div class="col-md-9">
								<input class="form-control" type="text" name="title">
							</div>
						</div>
						<div class="form-group row">
							<label for="typeId" class="control-label col-md-3">文章类型</label>
							<div class="col-md-9">
								<select name="typeId" class="form-control">
									<c:forEach items="${list}" var="t">
										<option value="${t.id}">${t.name}</option>
									</c:forEach>
				                 </select>
				            </div>
						</div>
				                <div class="form-group row">
				                  	<label for="enable" class="control-label col-md-3" >是否启用</label>
				                  	<div class="col-md-9">
				                    	<div class="form-check">
				                      		<label class="form-check-label">
				                        		<input class="form-check-input" type="radio" checked="checked" id="enable" name="enable" value="1">启用
				                      		</label>
				                    	</div>
				                    	<div class="form-check">
				                      		<label class="form-check-label">
				                        		<input class="form-check-input" type="radio" name="enable" value="0">禁用
				                      		</label>
				                    	</div>
				                  	</div>
				                </div>
				                <div class="form-group row">
				                  	<label for="content" class="control-label col-md-3">文章内容</label>
				                  	<div class="col-md-9">
				                   	 	<textarea class="form-control" style="resize: none" rows="4" name="content"></textarea>
				                  	</div>
				                </div>
				             </form>
			            </div>
			            <div class="modal-footer">
			                <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
			                <a href='javascript:void(0);' id="saveButton" class="btn btn-success" >确定</a>
			            </div>
			        </div>
			    </div>
			</div>

添加和修改按钮加上id

	{
		key: 'id',
		align: "center",
		text: '操作 &nbsp;&nbsp;<a style="color:green" id="addBtn" href="javascript:;">添加</a>',
		      template: function(cell, row, index, key){// 模板
		                	
		      return '<a style="color:red" data-id="'+cell+'" href="javascript:;">删除</a>&nbsp;&nbsp;'+
		             "<a style='color:blue' data-row='111' href='javascript:;'>修改</a>";
		}
	}

分别绑定事件

		    // 添加操作  绑定添加按钮  事件委托
		    $("body").on("click","#addBtn",function(){
 		    	// 清空form中数据
		    	$("#saveForm").get(0).reset();

		    	// 弹出模态框
		    	$("#saveModal").modal("show");
		    })
		    
		    // 修改操作  绑定修改按钮  事件委托
		    $("body").on("click","a[data-row]",function(){
		    	// 清空form中数据
		    	$("#saveForm").clearForm();	// clearForm()、ajaxSubmit()都是jquery-form.js插件的方法
		    	
		    	// 弹出模态框
		    	$("#saveModal").modal("show");
		    })

		    // 保存操作
		    $("#saveButton").click(function(){
		    	// 发送请求
		    	// 把form表单中的数据发送到后台,url路径是form中的action
		    	$("#saveForm").ajaxSubmit({
		    		success: function(msg){
			    		console.debug(msg)	
		    		}
		    	});
		    });

添加完成

请求路径
<form action="/system/article/save" method="post" class="form-horizontal" id="saveForm">
ArticleController
	@RequestMapping("/save")
	@ResponseBody
	public AjaxResult save(Article article){
		
		try {
			service.add(article);	
			return new AjaxResult();
		} catch (Exception e) {
			e.printStackTrace(); // 打印异常信息
			return new AjaxResult(false, "保存失败");
		}
	}
ArticleMapper.xml
	<!-- void add(Article article); -->
	<insert id="add">
		insert into t_article(title,url,typeId,clickCount,content,enable,createDate)
		values(#{title},#{url},#{typeId},#{clickCount},#{content},#{enable},#{createDate})
	</insert>
jsp
			// 保存操作
		    $("#saveButton").click(function(){
		    	// 发送请求
		    	// 把form表单中的数据发送到后台,url路径是form中的action
		    	$("#saveForm").ajaxSubmit({
		    		success: function(msg){	    			
			    		if(msg.success){// 成功
			    			// 关闭模态框
			    			$("#saveModal").modal("hide");
			    			// 刷新数据 ????
			    			GridManager.refreshGrid("demo-ajaxPageCode");
			    		}else{
			    			// 关闭模态框
			    			$("#saveModal").modal("hide");
			    			// 失败提示
			    			alert(msg.error)
			    		}			    		
		    		}
		    	});
		    });

修改:获取回显数据

{
	key: 'id',
	align: "center",
	text: '操作 &nbsp;&nbsp;<a style="color:green" id="addBtn" href="javascript:;">添加</a>',
	template: function(cell, row, index, key){// 模板
		// row是一个json对象,要转成string
		 var str = JSON.stringify(row);
		//  console.debug(str);
		// data:  数据必须是标准格式  {'id':10,'name':'zs'}
		return '<a style="color:red" data-id="'+cell+'" href="javascript:;">删除</a>&nbsp;&nbsp;'+
			   "<a style='color:blue' data-row='"+str+"' href='javascript:;'>修改</a>";
	}
}
		    // 修改操作  绑定修改按钮  事件委托
		    $("body").on("click","a[data-row]",function(){
		    	// 清空form中数据
		    	$("#saveForm").clearForm();	// clearForm()、ajaxSubmit()都是jquery-form.js插件的方法
		    	// 数据回显  获取数据
		    	var row = $(this).data("row");
		    	console.debug(row);
		    	// 弹出模态框
		    	$("#saveModal").modal("show");
		    })

回显数据

			// 修改操作  绑定修改按钮  事件委托
		    $("body").on("click","a[data-row]",function(){
		    	// 清空form中数据
		    	$("#saveForm").clearForm();	//clearForm()、ajaxSubmit()都是jquery-form.js插件的方法,会清空默认值
		    	// 数据回显  获取数据
		    	var row = $(this).data("row");
		    	// console.debug(row);
		    	
		    	// 数据回显	插件提供的方法
		    	$("#saveForm").setForm(row);
		    	
		    	// 弹出模态框
		    	$("#saveModal").modal("show");
		    })

修改后台完成

设置隐藏域id
<input type="hidden" name="id" id="saveId">
添加操作中清空隐藏域id

防止被判断为修改操作

		    // 添加操作  绑定添加按钮  事件委托
		    $("body").on("click","#addBtn",function(){
 		    	// 清空form中数据
		    	$("#saveForm").get(0).reset();		// 这种清空不会清空默认值
				
		    	// 手动清空隐藏域id
		    	$("#saveId").val("");
		    	
		    	// 弹出模态框
		    	$("#saveModal").modal("show");
		    })
ArticleController
	@RequestMapping("/save")
	@ResponseBody
	public AjaxResult save(Article article){
		
		try {
			if(article.getId()==null){ // 添加操作
				service.add(article);
			}else{
				service.update(article);
			}	
			return new AjaxResult();
		} catch (Exception e) {
			e.printStackTrace(); // 打印异常信息
			return new AjaxResult(false, "保存失败");
		}
	}
ArticleMapper.xml
	<!-- void update(Article article); -->
	<update id="update">
		update t_article set title=#{title},url=#{url},typeId=#{typeId},
		clickCount=#{clickCount},content=#{content},
		enable=#{enable},createDate=#{createDate} where id=#{id}
	</update>

tips:获取模态框内所有数据的方法

1.一个一个标签获取

2.jquery.jdirk.js提供的方法

 		    	var dataForm = $("#queryForm").serializeObject();

3.jquery-form.js插件的方法ajaxSubmit(),发送路径在action中

/* 添加和更新模态框点击确定时绑定事件请求后台 */
$("#saveButton").on("click",function(){
	$("#saveForm").ajaxSubmit({
		success:function(data){
			if(data.success){
				//关闭添加和修改模态框
				$("#saveModel").modal("hide");
				//刷新表格
				GridManager.refreshGrid('demo-baseCode');
			}else{
				alert(data.msg);
			}
		}
	});
});
<form action="/system/article/save" method="post" class="form-horizontal" id="saveForm">

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

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

相关文章

matlab不显示子图刻度并调整子图间距

matlab中在使用subplot函数画图时&#xff0c;尤其是做emd分解查看IMF时&#xff0c; 正常画图的代码及结果如下&#xff1a; figure for i 1:size(imf_norm,1)subplot(7,1,i)plot(imf_norm(i,:))ylabel(IMFstring(i)) end其中imf_norm为分解得到的imfs 效果图&#xff1a; …

python里apply用法_Python apply函数的用法

Python编程语言Python 是一种面向对象、解释型计算机程序设计语言&#xff0c;由Guido van Rossum于1989年底发明&#xff0c;第一个公开发行版发行于1991年。Python语法简洁而清晰&#xff0c;具有丰富和强大的类库。它常被昵称为胶水语言&#xff0c;它能够把用其他语言制作的…

HDL抽象等级 仿真模型 网表 delay speicfy与sdf

1.HDL 硬件描述语言 抽象分级 HDL这里主要说verilog 在描述硬件电路时分为三个抽象级别 行为级模型&#xff1a;主要用于test bench&#xff0c;着重系统行为和算法&#xff0c;不在于电路实现&#xff0c;不可综合&#xff08;常用描述有initial&#xff0c;fork/join&#…

【MYSQL】MYSQL应用环境,系统特征,储存引擎,应用框架和索引功能的详细讲解

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

DINO-DETR匈牙利匹配与加噪过程学习记录

今天再来回顾一下DINO中匈牙利匹配与损失函数部分&#xff0c;该部分大致与DETR相似&#xff0c;却又略有不同。 为了查看数据方便&#xff0c;博主将num_query改为20&#xff0c;max_select值也为20。 匈牙利匹配过程 首先是数据送入匈牙利匹配中进行标签匹配过程了。 获取…

qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in

兄弟们看看是不是这个错&#xff1a; QObject::moveToThread: Current thread (0xe5205f0) is not the objects thread (0xa14d0f0). Cannot move to target thread (0xe5205f0)qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/xxx/python3.…

Esp32+Blynk实现云端控制LED开灭

目录 环境配置依赖库安装blynk 基础设置 GPIO 点灯实验 环境配置 依赖库安装 参考 blynk 官方快速上手文档 如果要使用 blynk 提供的环境&#xff0c;我们就必须安装对应的库 选择基于 blynk 且适用于 ESP32 的库并安装到 arduino 上&#xff1a; blynk 基础设置 进入官网并且…

Question1:harbor登录成功,推送镜像失败

denied: requested access to the resource is denied 解决方案 查看用户的权限 Harbor 用户角色权限速查 系统级角色&#xff1a; Harbor 系统管理员&#xff1a;“Harbor 系统管理员”拥有最多的权限。除了上述权限外&#xff0c;“Harbor 系统管理员”还可以列出所有项目、…

一种令人拍案叫绝的 ChatGPT 攻击手段!

公众号关注 “GitHubDaily” 设为 “星标”&#xff0c;每天带你逛 GitHub&#xff01; 最近看到一个非常巧妙的 ChatGPT 攻击手段&#xff0c;跟大家分享一下&#xff0c;也算是做个提醒。 不论你是否懂技术&#xff0c;我都建议你了解一下这种攻击手段&#xff0c;有备无患。…

Golang的trace性能分析

文章目录 一、trace概述二、trace的使用方式代码中trace采集通过pprof采集 三、trace分析细节trace的web界面trace中需要关注的关注GC的频率关注goroutine调度情况关注goroutine的数量理想情况 四、GC分析当前服务GC情况设置GOGC设置GOMEMLIMITGC阈值的讨论GC的特点 五、gorout…

【每日挠头算法题(8)】最后一个单词的长度|重新排列字符串

文章目录 一、最后一个单词的长度思路1&#xff1a;从后往前遍历具体代码如下&#xff1a; 思路2&#xff1a;具体代码如下&#xff1a; 二、重新排列字符串思路具体代码如下&#xff1a; 一、最后一个单词的长度 点我直达~ 思路1&#xff1a;从后往前遍历 从后往前遍历&…

Stable DiffusionAI绘画一键启动整合包

点击"仙网攻城狮”关注我们哦~ 不当想研发的渗透人不是好运维 让我们每天进步一点点 简介 搞了个Stable DiffusionAI绘画整合包&#xff0c;里面有二次元风格、3D风格、真人模型&#xff0c;需要的后台回复“AI绘画”即可获取下载链接,放几个用SD生成的图。 实战 1.下载好…

调用万维易源API实现图像性别转换

目录 1、作者介绍2、调用万维易源API2.1 API介绍2.2 API调用过程 3、代码实现3.1 实现步骤3.2 完整代码 4、问题与分析 1、作者介绍 梁随欣&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2022级研究生 研究方向&#xff1a;模式识别与人工智能 电子邮箱&…

【Java技术专题】「入门到精通系列教程」深入探索Java特性中并发编程体系的原理和实战开发指南( 线程基础技术专题)

深入探索Java特性中并发编程体系的原理和实战开发指南 并发编程介绍什么是并发编程并发编程的好处是什么并发编程的挑战是什么并发编程模型有哪些如何学习并发编程本系列专题文章大全 实战原理计算的问题简单的方法&#xff1a;更快的CPU来遍历靠谱的方法&#xff1a;分而治之来…

Redis客户端 - RedisSerializer

原文首更地址&#xff0c;阅读效果更佳&#xff01; Redis客户端 - RedisSerializer | CoderMast编程桅杆https://www.codermast.com/database/redis/redistemplate-redis-serializer.html 前景回顾 在上一篇中&#xff0c;我们实现了一个简单的案例&#xff0c;操作一个 St…

【22AP20 解码处理器(Hi3536AV100)】

22AP20 解码处理器(Hi3536AV100) 一、产品简介 22AP20 是针对多路高清/超高清&#xff08;1080p/4M/5M/4K&#xff09;智能 NVR 产品应用开发的新一代专业高端 SoC 芯片。22AP20 集成了 ARM Cortex-A55 八核处理器和性能强大的图像分析工具处理器&#xff0c;支持多种智能算法…

webpack无损压缩本地静态资源图片image-minimizer-webpack-plugin

开发如果项目中引用了较多图片&#xff0c;那么图片体积会比较大&#xff0c;将来请求速度比较慢。 我们可以对图片进行压缩&#xff0c;减少图片体积。 一、image-minimizer-webpack-plugin介绍 Image-minimizer-webpack-plugin是一个用于优化和压缩图片的Webpack插件。它使…

Qt5.15.2安装Android开发环境。

文章目录 1.下载并安装JDK1.1.下载1.2.安装 2.修改sdk_definitions.json文件3.QtCreator的配置3.1.设置JDK、Android SDK的路径3.2.设置openssl 现在&#xff08;20230617&#xff09;利用QtCreator来配置android开发环境还是挺方便的。基本三步搞定&#xff08;不过你要先安装…

《分布式中间件技术实战:Java版》学习笔记(一):抢红包

数据库建表 (1)red_send_record 记录用户发送了若干总金额的若干个红包。 CREATE TABLE red_send_record (id int(0) NOT NULL AUTO_INCREMENT,user_id int(0) NOT NULL COMMENT 用户id,red_packet varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL…

笔记本电脑介绍:记录生活,激发灵感

笔记本电脑是一种轻便、便携的电脑&#xff0c;它的出现改变了人们的工作和生活方式&#xff0c;它的优势在于它的小巧、轻便、便携性&#xff0c;可以满足用户的不同需求。本文将从笔记本电脑的结构、功能、优势和应用四个方面进行详细阐述。 一、笔记本电脑的结构 笔记本电…