三个常用查询:根据用户名 / token查询用户信息+链表分页条件查询

news/2024/5/17 10:12:50

目录

1.根据用户名或者token查询用户信息

会员信息实体类

统一状态Result类

 controller层

service层及实现类

dao层

测试:

2.链表分页条件查询

会员等级实体类

封装条件类PageVo 

controller层

service层及实现类

dao层

Mapper.xml层

测试

vue前端参考



1.根据用户名或者token查询用户信息

mybatisplus...

微服务项目前期环境:项目搭建,依赖注入...

会员表数据库


SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
-- Table structure for mbs_member
-- ----------------------------
DROP TABLE IF EXISTS `mbs_member`;
CREATE TABLE `mbs_member` (`id` int NOT NULL AUTO_INCREMENT COMMENT '会员客户ID',`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '账号',`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '密码',`pw_salt` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '盐值列',`status` int DEFAULT NULL COMMENT '账号状态(帐号启用状态:0->启用;1->禁用)',`id_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '(身份证,护照,军官证,台胞证,港澳台来往内地通行证)',`path_front` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '正面',`path_reverse` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '反面',`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '客户名字',`contact_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '联系人',`contact_phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '联系电话',`contact_address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '联系地址',`license_no` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '驾照号',`sex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '性别',`phone_num` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '电话',`address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '地址',`email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '邮箱',`member_level_id` int DEFAULT NULL COMMENT '会员级别(普通,金卡,白金,钻石)',`Account_Balance` double DEFAULT '0' COMMENT '账户余额',`integration` int DEFAULT '0' COMMENT '积分',`growth` double DEFAULT NULL COMMENT '成长值',`history_integration` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '历史积分数量(只加不减)',`open_id` int DEFAULT NULL COMMENT '微信返回ID',`token` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '登录验证token',`id_card` varchar(18) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '证件编号',`head_pic` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '头像',PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=89 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of mbs_member
-- ----------------------------
INSERT INTO `mbs_member` VALUES ('71', 'zhanghaojie', 'f5455390512559851fdffdc9dc71e1debe7261c41509579a3cb8d8085b86bee95d3808d9345e79790a2b2a153effe2615b1b4302694018d0d369f13a4a6e5005', '8efbe27a-4', '0', '1', null, null, '小浩杰', null, null, null, '410100123457', null, '15136204889', null, '222222@qq.com', '1', '11240', '5610', '3760', '2260', null, null, null, 'https://wangzherongyao.oss-cn-beijing.aliyuncs.com/upload/files/1605770604552-7c5b7014-09cb-4d0a.jpg');
INSERT INTO `mbs_member` VALUES ('78', 'test111', '111591072d3b1a693158b77a16df045daf87fca20ea7fc00c32411b6ace2d2c7ac0a70777619883fac37417ca9a09593465c51e7ab56cfb2b1debc174e2ffb3a', 'fcba1cda-2ce7-4d49-9658-976ff2b5aa9d', '0', '1', null, null, 'test111', null, null, null, '511621200011011212', null, '18398591677', null, '1111@11.cc', '3', '94620.96000000002', '1000', '65790.4', '0', null, null, '51162******212', 'https://qy002-bookstore.oss-cn-hangzhou.aliyuncs.com/staff_headicon/9ddb6b4b-8332-47a6-84ae-d5b9234e5065bg5.jpg');
INSERT INTO `mbs_member` VALUES ('88', 'cjj', '836bac861900ae9df5bf390ede7c2a45c1287f346139d3d3576300be822e1f17746c95d622955cc292427748dc12959447a28ba46ce13eb3c41fdcab09956161', 'c5546504-f2a1-4494-a738-8297e786acee', '0', '1', null, null, '成JJ', null, null, null, null, null, '13645678922', null, null, '1', '200', '50', '10500', '500', null, null, null, 'https://qy002-bookstore.oss-cn-hangzhou.aliyuncs.com/staff_headicon/29727801-0855-484d-bf5d-c6f69e8a72ad111.jpg');

会员信息实体类


@TableName("mbs_member")
@Data
@ApiModel("会员信息实体类")
public class Member implements Serializable {/*** 会员客户ID*/@ApiModelProperty("会员客户ID")@TableIdprivate Integer id;/*** 账号*/@ApiModelProperty("账号")private String username;/*** 密码*/@ApiModelProperty("密码")private String password;/*** 盐值列*/@ApiModelProperty("盐值列")private String pwSalt;/*** 账号状态(帐号启用状态:0->启用;1->禁用)*/@ApiModelProperty("账号状态(帐号启用状态:0->启用;1->禁用)")private Integer status;/*** (身份证,护照,军官证,台胞证,港澳台来往内地通行证)*/@ApiModelProperty("(身份证,护照,军官证,台胞证,港澳台来往内地通行证)")private String idType;/*** 正面*/@ApiModelProperty("正面")private String pathFront;/*** 反面*/@ApiModelProperty("反面")private String pathReverse;/*** 客户名字*/@ApiModelProperty("客户名字")private String name;/*** 联系人*/@ApiModelProperty("联系人")private String contactName;/*** 联系电话*/@ApiModelProperty("联系电话")private String contactPhone;/*** 联系地址*/@ApiModelProperty("联系地址")private String contactAddress;/*** 驾照号*/@ApiModelProperty("驾照号")private String licenseNo;/*** 性别*/@ApiModelProperty("性别")private String sex;/*** 电话*/@ApiModelProperty("电话")private String phoneNum;/*** 地址*/@ApiModelProperty("地址")private String address;/*** 邮箱*/@ApiModelProperty("邮箱")private String email;/*** 会员级别(普通,金卡,白金,钻石)*/@ApiModelProperty("会员级别(普通,金卡,白金,钻石)")private Integer memberLevelId;/*** 账户余额*/@ApiModelProperty("账户余额")private Double accountBalance;/*** 积分*/@ApiModelProperty("积分")private Integer integration;/*** 成长值*/@ApiModelProperty("成长值")private Double growth;/*** 历史积分数量(只加不减)*/@ApiModelProperty("历史积分数量(只加不减)")private String historyIntegration;/*** 微信返回ID*/@ApiModelProperty("微信返回ID")private Integer openId;/*** 登录验证token*/@ApiModelProperty("登录验证token")private String token;/*** 证件编号*/@ApiModelProperty("证件编号")private String idCard;/*** 头像*/@ApiModelProperty("头像")private String headPic;
//---------------------------------------------------------------------
//    @ApiModelProperty("对应会员级别,一对一")@TableField(exist = false)private MemberLevel memberLevel;//会员等级名}

统一状态Result类

@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("统一的json对象")
public class Result<T> {@ApiModelProperty("状态码")private Integer code;@ApiModelProperty("提示消息")private String msg;@ApiModelProperty("响应data数据")private T data;}

 controller层


@RestController
@RequestMapping("member")
@Api(tags = "客户管理--会员管理")
public class MemberController {@Autowiredprivate MemberService memberService;@GetMapping("/getByUsername")@ApiOperation("根据会员名称查询会员信息")public Member getByUsername(@RequestParam String username){return memberService.getByUsername(username);}@GetMapping("/getMember")@ApiOperation("根据token查询会员基础信息")public Result<Member> getMember(@RequestParam String token){return memberService.getMember(token);}
}

service层及实现类

public interface MemberService  {Member getByUsername(String username);Result<Member> getMember(String token);
}//-------------------------------------------------------------@Service
public class MemberServiceImpl implements MemberService {@Autowiredprivate MemberDao memberDao;@Overridepublic Member getByUsername(String username) {QueryWrapper wrapper = new QueryWrapper();//会员名称wrapper.eq("username",username);//账号状态(帐号启用状态:0->启用;1->禁用)wrapper.eq("status",0);Member member = memberDao.selectOne(wrapper);return member;}@Autowiredprivate StringRedisTemplate redisTemplate;@Overridepublic Result<Member> getMember(String token) {ValueOperations<String, String> ops = redisTemplate.opsForValue();String memberCache = ops.get("sso:member:" + token);Member member = JSON.parseObject(memberCache, Member.class);return new Result<>(200,"成功",member);}}

dao层

@Mapper
public interface MemberDao extends BaseMapper<Member> {
}

测试:

2.链表分页条件查询

等级表数据库

SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
-- Table structure for mbs_member_level
-- ----------------------------
DROP TABLE IF EXISTS `mbs_member_level`;
CREATE TABLE `mbs_member_level` (`id` bigint NOT NULL AUTO_INCREMENT,`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,`growth_point` int DEFAULT NULL COMMENT '成长值',`default_status` int DEFAULT NULL COMMENT '是否为默认等级:0->不是;1->是',`free_freight_point` decimal(10,2) DEFAULT NULL COMMENT '免运费标准',`priviledge_comment` int DEFAULT NULL COMMENT '是否有评论获奖励特权',`priviledge_promotion` int DEFAULT NULL COMMENT '是否有专享活动特权',`priviledge_member_price` int DEFAULT NULL COMMENT '是否有会员价格特权',`priviledge_birthday` int DEFAULT NULL COMMENT '是否有生日特权',`note` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '说明',`ratio` double DEFAULT NULL COMMENT '积分 普通1 白银1.2 黄金1.5....',PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1684561963877740550 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of mbs_member_level
-- ----------------------------
INSERT INTO `mbs_member_level` VALUES ('1', '普通', '10000', '1', '200.00', '1', '0', '1', '0', '等级1', '1');
INSERT INTO `mbs_member_level` VALUES ('2', '白银', '20000', '0', '100.00', '1', '1', '1', '1', '等级2', '1.2');
INSERT INTO `mbs_member_level` VALUES ('3', '黄金', '50000', '0', '50.00', '1', '1', '1', '1', '等级3', '1.5');
INSERT INTO `mbs_member_level` VALUES ('4', '钻石', '90000', '0', '0.00', '1', '0', '1', '1', '等级4', '1.8');
INSERT INTO `mbs_member_level` VALUES ('10', '星耀', '140000', '0', '800.00', '1', '1', '1', '11', '最高级', '2');

当前需要链表查询会员等级

会员等级实体类


@TableName("mbs_member_level")
@Data
@ApiModel("客户管理--会员等级-实体类")
public class MemberLevel implements Serializable {/*** */@ApiModelProperty("")@TableId(type = IdType.AUTO)private String id;/*** */@ApiModelProperty("等级名")
//    @TableField(value = "name")private String name;/*** 成长值*/@ApiModelProperty("成长值")private Integer growthPoint;/*** 是否为默认等级:0->不是;1->是*/@ApiModelProperty("是否为默认等级:0->不是;1->是")private Integer defaultStatus;/*** 免运费标准*/@ApiModelProperty("免运费标准")private BigDecimal freeFreightPoint;/*** 是否有评论获奖励特权*/@ApiModelProperty("是否有评论获奖励特权")private Integer priviledgeComment;/*** 是否有专享活动特权*/@ApiModelProperty("是否有专享活动特权")private Integer priviledgePromotion;/*** 是否有会员价格特权*/@ApiModelProperty("是否有会员价格特权")private Integer priviledgeMemberPrice;/*** 是否有生日特权*/@ApiModelProperty("是否有生日特权")private Integer priviledgeBirthday;/*** 说明*/@ApiModelProperty("说明")private String note;/*** 积分 普通1 白银1.2 黄金1.5....*/@ApiModelProperty("积分 普通1 白银1.2 黄金1.5....")private Double ratio;}

封装条件类PageVo 

@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "分页条件查询--用户管理")
public class PageVo {Integer pageNo;Integer pageSize;CouponVo Data;}//---------------------------------------@Data
public class CouponVo {String name;String phoneNum;String email;String userName;String orderSn;}

controller层


@RestController
@RequestMapping("member")
@Api(tags = "客户管理--会员管理")
public class MemberController {@Autowiredprivate MemberService memberService;//分页条件查询@PostMapping("queryByPage222")public Result<Map<String,Object>> pageResult(@RequestBody PageVo pageVo){return memberService.selectAllPage(pageVo);}
}

service层及实现类

public interface MemberService  {//分页条件查询Result<Map<String,Object>> selectAllPage(PageVo pageVo);}//-------------------------------------------------------------@Service
public class MemberServiceImpl implements MemberService {@Autowiredprivate MemberDao memberDao;//分页条件查询@Overridepublic Result<Map<String,Object>> selectAllPage(PageVo pageVo) {Page<Member> page = new Page<>(pageVo.getPageNo(), pageVo.getPageSize());List<Member> members = memberDao.selectByMyPage(page,pageVo);// page.setRecords(members);//page.setTotal(members.size());//获取分页总条数long total = page.getTotal();Map<String,Object> data = new HashMap<>();data.put("records",members);data.put("total",total);return new Result<>(200,"查询成功",data);}
}

dao层

@Mapper
public interface MemberDao extends BaseMapper<Member> {//分页查询List<Member> selectByMyPage(Page<Member> page, PageVo pageVo);
}

Mapper.xml层

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fifth.member.dao.MemberDao"><!--链表查询条件查询-一对一--><resultMap id="selectAll110" type="com.fifth.entity.Member" autoMapping="true"><id property="id" column="id"/><association property="memberLevel" javaType="com.fifth.entity.MemberLevel" autoMapping="true"><id property="id" column="id"/><result property="name" column="memberLevelName"/></association></resultMap><select id="selectByMyPage" resultMap="selectAll110">SELECT m.*,ml.name memberLevelNameFROM mbs_member m JOIN mbs_member_level ml ON m.member_level_id = ml.id<where><if test="pageVo.data.phoneNum != null and pageVo.data.phoneNum != ''">AND m.phone_num LIKE CONCAT('%', #{pageVo.data.phoneNum}, '%')</if><if test="pageVo.data.email != null and pageVo.data.email != ''">AND m.email LIKE CONCAT('%', #{pageVo.data.email}, '%')</if><if test="pageVo.data.userName != null and pageVo.data.userName != ''">AND m.username LIKE CONCAT('%', #{pageVo.data.userName}, '%')</if><if test="pageVo.data.name != null and pageVo.data.name != ''">AND m.name LIKE CONCAT('%', #{pageVo.data.name}, '%')</if></where></select></mapper>

测试

vue前端参考

<template><div><!--搜索查询--><el-row><el-col :span="3"><el-inputv-model="searchForm.name"size="mini"clearableplaceholder="请输姓名"></el-input></el-col><el-col :span="3"><el-inputv-model="searchForm.userName"size="mini"clearableplaceholder="请输用户名"></el-input></el-col><el-col :span="3"><el-inputv-model="searchForm.email"size="mini"clearableplaceholder="邮箱"></el-input></el-col><el-col :span="3"><el-inputv-model="searchForm.phoneNum"size="mini"clearableplaceholder="电话"></el-input></el-col><el-col :span="3"><el-buttontype="primary"size="mini"@click="search()"icon="el-icon-search"v-has="'member:search'">搜索</el-button></el-col><el-col :span="3"><el-buttontype="primary"size="mini"v-has="'member:flush'"@click="flush()"icon="el-icon-refresh">刷新</el-button></el-col></el-row><el-row><el-table :data="tableData" style="width: 100%"><el-table-column label="用户头像"><template slot-scope="scope"><el-imagestyle="width: 60px; height: 60px":src="scope.row.headPic"></el-image></template></el-table-column><el-table-columnprop="name"label="客户姓名"align="center"width="100"></el-table-column><el-table-columnprop="username"align="center"label="用户名"width="100"></el-table-column><el-table-column prop="memberLevel.name" width="150" align="center" label="会员级别"></el-table-column><el-table-column prop="accountBalance" width="150" align="center" label="账户余额"></el-table-column><el-table-column prop="integration" width="150" align="center" label="积分"></el-table-column><el-table-column prop="licenseNo" width="180" align="center" label="驾照号"></el-table-column><el-table-column prop="email" width="180" align="center" label="邮箱"></el-table-column><el-table-column prop="phoneNum" width="180" align="center" label="电话"></el-table-column><el-table-column prop="idType" width="180" align="center" :formatter="zjFormat" label="证件类型"></el-table-column><el-table-column prop="idCard" width="180" align="center" label="身份证号"><template slot-scope="scope">{{scope.row.idCard? scope.row.idCard.replace(/^(.{6})(?:\w+)(.{4})$/, "\$1********\$2"):""}}</template></el-table-column><el-table-column prop="address" width="180" align="center" label="地址"></el-table-column><el-table-column prop="contactName" width="180" align="center" label="联系人"></el-table-column><el-table-column prop="contactAddress" width="280" align="center" label="联系地址"></el-table-column><el-table-columnprop="contactPhone"label="联系人电话"align="center"width="180"></el-table-column><el-table-column prop="sex" :formatter="sexFormat" label="性别"></el-table-column><el-table-column prop="status" :formatter="zhFormat" label="账号状态"></el-table-column><el-table-column width="150" label="用户状态"><template slot-scope="scope"><el-switchv-model="scope.row.status"active-color="#13ce66"inactive-color="#ff4949":active-value=0:inactive-value=1active-text="启用"inactive-text="禁用"@change="handleChangeStatus(scope.$index, scope.row)"></el-switch></template></el-table-column></el-table></el-row><el-row><!--分页插件--><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="currentPage":page-sizes="[2, 3, 5, 10, 20]":page-size="pageSize"layout="total, sizes, prev, pager, next, jumper":total="total"></el-pagination></el-row></div>
</template><script>
export default {data() {return {value: true,optionsA: [],tableData: [],imgUrl: "",currentPage: 1, //页码 第几页pageSize: 5, //每页显示数量total: 100, //总条数searchForm: { name: "", phoneNum: "", email: "", userName: "" }, //搜索form表单dialogFormVisible: false, //是否显示对话框  默认是不显示form: { passold: "", pass: "", checkPass: "" },formLabelWidth: "120px",condition: "",};},created() {//初始化方法 类似于jquery  $({})this.loadData();var _this = this;_this.$http.post("/member/memberLevel/queryByPage", {pageNo: this.currentPage,pageSize: 100,data: {},}).then(function (response) {console.log(JSON.stringify(response));if (response.data.code == 200) {_this.optionsA = response.data.data.records;//_this.total = response.data.data.total;}}).catch(function (error) {//错误的处理// handle errorconsole.log(error);}).then(function () {//总执行 最终处理      类似java  异常处理的finally// always executed});},//所有函数methods: {//加载数据loadData() {var _this = this;//复制 $http官网代码// var token  = localStorage.getItem("token");_this.$http.post("/member/queryByPage222", {pageNo: this.currentPage,pageSize: this.pageSize,data: {name: this.searchForm.name,phoneNum: this.searchForm.phoneNum,email: this.searchForm.email,userName: this.searchForm.userName,},}).then(function (response) {console.log(JSON.stringify(response.data.data))if (response.data.code == 200) {_this.tableData = response.data.data.records;_this.total = response.data.data.total;}}).catch(function (error) {console.log(error);_this.$message.error("你错了。。。");});},zjFormat(row, column, cellValue, index){return cellValue == "1" ? "身份证" : cellValue == "2" ? "护照" : cellValue == "3" ? "军官证" : cellValue == "4" ? "台胞证" : "港澳台来往内地通行证";},//格式化性别方法sexFormat(row, column, cellValue, index) {//row当前行数据//column 列名称//cellValue 列的值//index 下标//alert(cellValue);return cellValue == 0 ? "男" : cellValue == 1 ? "女" : "未知";},zhFormat(row, column, cellValue, index) {//row当前行数据//column 列名称//cellValue 列的值//index 下标//alert(cellValue);return cellValue == 0 ? "正常" : "异常";},//处理每页数量发生变化handleSizeChange(val) {console.log(`每页 ${val} 条`);//让每页数量发生变化this.pageSize = val;//重载数据this.loadData();},//处理当前页变化handleCurrentChange(val) {console.log(`当前页: ${val}`);//让每页数量发生变化this.currentPage = val;//重载数据this.loadData();},//查询search() {this.loadData();},//刷新flush() {location.reload();}, //修改用户状态(禁用/启用)handleChangeStatus(index, row) {//     //确认框提示//     this.$confirm("此操作将永久删除该数据, 是否继续?", "提示", {//       confirmButtonText: "确定",//       cancelButtonText: "取消",//       type: "warning",//     })//       .then(() => {//     var _this = this; //复制 $http官网代码 // var token  = localStorage.getItem("token");//     //alert(JSON.stringify(row));//     _this.$http//       .post("/member/edit", row)//       .then(function (response) {//         if (response.data.code == 200) {//           //alert("操作成功");//           _this.loadData;//         }//       })//       .catch(function (error) {//         console.log(error);//         _this.$message.error("你错了。。。");//       });console.log(index, row);//确认框提示this.$confirm("此操作将关乎账号的启用禁用, 是否继续?", "提示", {confirmButtonText: "确定",cancelButtonText: "取消",type: "warning",}).then(() => {//让_this等于当前vue对象var _this = this;// alert(111);//赋值 $http官网代码  this.form =form:{deptName:'',description:'',status:1}_this.$http.post("/member/edit", row) //指定请求的url及参数  get.then(function (response) {//正确返回对象的处理// handle successconsole.log(response);//JSON.stringify   把json转换为json字符串,方便查看console.log(JSON.stringify(response));//直接使用this 会指 $http对象  错误// this.tableData//判断返回值是否正确if (response.data.code == 200) {//提示添加成功_this.$message({message: "恭喜你,这是一条成功消息",type: "success",});//重新加载数据_this.loadData();} else {//错误提示信息_this.$message.error("错了哦,这是一条错误消息");}}).catch(function (error) {//错误的处理// handle errorconsole.log(error);});}).catch(() => {this.$message({type: "info",message: "已取消",});});},},
};
</script>
<style>
</style>

链表前端拿数据


http://www.mrgr.cn/p/70172138

相关文章

Sentinel Dashboard集成Nacos

1.前言 当项目上Sentinel Dashboard做流量监控的时候&#xff0c;我们可以通过Sentinel控制台修改限流配置&#xff0c;但当我们使用Nacos作为配置中心动态配置流控规则的时候&#xff0c;问题就来了。 首先我们要明白&#xff0c;Sentinel Dashboard的配置是从机器的内存中加…

基于解析法和遗传算法相结合的配电网多台分布式电源降损配置(Matlab实现)

目录 1 概述 2 数学模型 2.1 问题表述 2.2 DG的最佳位置和容量&#xff08;解析法&#xff09; 2.3 使用 GA 进行最佳功率因数确定和 DG 分配 3 仿真结果与讨论 3.1 33 节点测试配电系统的仿真 3.2 69 节点测试配电系统仿真 4 结论 1 概述 为了使系统网损达到最低值&a…

推荐用于学习RN原生模块开发的开源库—react-native-ble-manager

如题RN的原生模块/Native Modules的开发是一项很重要的技能&#xff0c;但RN官网的示例又比较简单&#xff0c;然后最近我接触与使用、还有阅读了react-native-ble-manager的部份源码&#xff0c;发现里边完全包含了一个Native Modules所涉及的知识点/技术点&#xff0c;故特推…

web自动化测试-PageObject 设计模式

为 UI 页面写测试用例时&#xff08;比如 web 页面&#xff0c;移动端页面&#xff09;&#xff0c;测试用例会存在大量元素和操作细节。当 UI 变化时&#xff0c;测试用例也要跟着变化&#xff0c; PageObject 很好的解决了这个问题。 使用 UI 自动化测试工具时&#xff08;包…

工程师是怎样对待开源

工程师如何对待开源 本文是笔者作为一个在知名科技企业内从事开源相关工作超过 20 年的工程师&#xff0c;亲身经历或者亲眼目睹很多工程师对待开源软件的优秀实践&#xff0c;也看到了很多 Bad Cases&#xff0c;所以想把自己的一些心得体会写在这里&#xff0c;供工程师进行…

呼吸灯——FPGA

文章目录 前言一、呼吸灯是什么&#xff1f;1、介绍2、占空比调节示意图 二、系统设计1、系统框图2、RTL视图 三、源码四、效果五、总结六、参考资料 前言 环境&#xff1a; 1、Quartus18.0 2、vscode 3、板子型号&#xff1a;EP4CE6F17C8 要求&#xff1a; 将四个LED灯实现循环…

无涯教程-jQuery - jQuery.post( url, data, callback, type)方法函数

jQuery.post(url&#xff0c;[data]&#xff0c;[callback]&#xff0c;[type])方法使用POST HTTP请求从服务器加载页面。 该方法返回XMLHttpRequest对象。 jQuery.post( url, [data], [callback], [type] ) - 语法 $.post( url, [data], [callback], [type] ) 这是此方法使…

ElasticSearch基本使用--ElasticSearch文章一

文章目录 官网学习必要性elasticsearch/kibana安装版本数据结构说明7.x版本说明ElasticSearch kibana工具测试后续我们会一起分析 官网 https://www.elastic.co/cn/ 学习必要性 1、在当前软件行业中&#xff0c;搜索是一个软件系统或平台的基本功能&#xff0c; 学习Elastic…

6.2.tensorRT高级(1)-第一个完整的分类器程序

目录 前言1. CNN分类器2. 补充知识2.1 知识点2.2 智能指针封装 总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习 tensorRT …

强化学习(EfficientZero)(应用于图像和声音)

目录 摘要 1.背景介绍 2.MCTS&#xff08;蒙特卡洛树搜索&#xff09;&#xff08;推理类模型&#xff0c;棋类效果应用好&#xff0c;控制好像也不错&#xff09; 3.MUZERO 4.EfficientZero&#xff08;基于MUZERO&#xff09; 展望 参考文献 摘要 在文中&#xff0c;基于…

版本适配好帮手 Android SDK Upgrade Assistant / Android Studio Giraffe新功能

首先是新版本一顿下载↓&#xff1a; Download Android Studio & App Tools - Android Developers 在Tools中找到Android SDK Upgrade Assistant 可以在此直接查看SDK升级相关信息&#xff0c;不用跑到WEB端去查看了。 例如看一下之前经常要对老项目维护的android 12蓝牙…

【C进阶】回调函数(指针进阶2,详解,小白必看)

目录 6. 函数指针数组 6.1简单计算器 6.2函数指针数组实现计算器 7. 指向函数指针数组的指针(仅作了解即可) 8.回调函数 8.1关于回调函数的理解​编辑 8.1.1用回调函数改良简单计算器 8.2qsort库函数的使用 8.2.1冒泡排序 8.2.2qsort的概念 8.3冒泡排序思想实现qsor…

PKG内容查看工具:Suspicious Package for Mac安装教程

Suspicious Package Mac版是一款Mac平台上的查看 PKG 程序包内信息的应用&#xff0c;Suspicious Package Mac版支持查看全部包内全部文件&#xff0c;比如需要运行的脚本&#xff0c;开发者&#xff0c;来源等等。 suspicious package mac使用简单&#xff0c;只需在选择pkg安…

开发和测试模型

瀑布模型 需求分析-计划-设计-编码-执行测试-运行维护 特点: 线性结构每个阶段只执行一次 其他模型的基础框架 缺点: 测试后置 前面的风险被推迟到测试阶段才被发现,项目大面积需要修改,工作量大 测试时间不够 没有充足的测试时间进行功能评估和需求功能比对,会将缺陷暴露给用…

代码版本管理工具 git

1. 去B站看视频学习&#xff0c;只看前39集&#xff1a; 01-Git概述&#xff08;Git历史&#xff09;_哔哩哔哩_bilibili 2.学习Linux系统文本编辑器的使用 vi编辑器操作指令分享 (baidu.com) (13条消息) nano编辑器的使用_SudekiMing的博客-CSDN博客 windows下载安装Git官…

使用贝叶斯滤波器通过运动模型和嘈杂的墙壁传感器定位机器人研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【C++】开源:Boost网络库Asio配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Asio网络库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次…

小程序----配置原生内置编译插件支持sass

修改project.config.json配置文件 在 project.config.json 文件中&#xff0c;修改setting 下的 useCompilerPlugins 字段为 ["sass"]&#xff0c; 即可开启工具内置的 sass 编译插件。 目前支持三个编译插件&#xff1a;typescript、less、sass 修改之后可以将原.w…

GNSS技术知识你知道多少?这些你或许还未掌握

GNSS信号频段 GNSS频谱图展示了不同的GNSS信号及其星座、载波频率、调制方案&#xff0c;以及所有这些信号在同一L波段频段内如何相互关联&#xff0c;是GNSS专业人员的必备工具&#xff0c;包括设计和开发GNSS系统的工程师&#xff0c;以及测试GNSS系统的工程师。 GNSS术语 …

基于深度学习的高精度课堂人脸检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度课堂人脸检测系统可用于日常生活中或野外来检测与定位课堂人脸目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的课堂人脸目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标…