开发总结-Dao层(Mapper层)

Mybatis-plus新用法

VehicleBO one = vehicleService.getOne(Wrappers.<VehicleBO>lambdaQuery().eq(VehicleBO::getVin, reqVo.getVin()));

boolean b = bizAccountApplyService.remove(Wrappers.<BizAccountApplyBO>lambdaQuery().eq(BizAccountApplyBO::getId, 1457753126076448l));

iBizAccountService.update(Wrappers.<BizAccountBO>lambdaUpdate().setSql("follow_count=follow_count+1").eq(BizAccountBO::getId, accountId));

mybatisPlus坑

字段更新为null 默认不生效,除非加上updateStrategy = FieldStrategy.IGNORED

@ApiModelProperty(value = "贷款类型")
@TableField(value = "LOAN_TYPE", updateStrategy = FieldStrategy.IGNORED)
private String loanType;

Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: 无法将 NULL 插入 (“ZHXY_RSW_LOCAL”.“T_EXAM_SUBJECT”.“ID”)
使用mybatis-plus插入时,明明设置了id的值,还报这个错
解决办法:在id字段上,添加 @TableId(type = IdType.INPUT)
在这里插入图片描述

条件是表中的某个字段不为null时,添加过滤

在这里插入图片描述
上面这样写会报错,下面这样写才对
在这里插入图片描述

left join时左表过滤用where,右表过滤用and

说有下面两张表
在这里插入图片描述
在这里插入图片描述
– 找出每个班级的名称及其对应的女同学数量

SELECT c.name, count(s.name) as num 
FROM classes c left join students s 
on s.class_id = c.id 
and s.gender = 'f'
group by c.name

– 找出一班的同学总数

SELECT c.name, count(s.name) as num 
FROM classes c left join students s 
on s.class_id = c.id 
where c.name = '一班' 
group by c.name

mysql分组后 组内排序 然后取每组第一条结果

需求:按room_id分组后,组内按data_time排序,然后取每组的第一条数据
可能看不懂,但就这么写没错,亲测正确(必须加limit)

		select t.* from (
            select t1.room_id,t2.room_name,t1.queuing_time,t1.in_num
            from t_meal_room t2
            left join t_meal_data t1 on t1.room_id=t2.id
            order by t1.data_time desc 
limit 999999999
        )  t  group by room_id 

resultMap

适用场景:类似一个项目多个合同
在这里插入图片描述

<resultMap id="projectManegeMap" type="com.iflytek.project.base.vo.resp.ProjMoneyManageVo">
    <result column="PROJECT_ID" property="projectId"/>
    <result column="PROJECT_NAME" property="projectName"/>
    <result column="PROJECT_CODE" property="projectCode"/>
    <result column="PROJECT_STAGE" property="projectStage"/>
    <result column="ESTIMATED_INVESTMENT_AMOUNT" property="estimatedInvestmentAmount"/>
    <!--ProjMoneyManageVo有属性 List<ContractInfo> contractList-->
    <collection property="contractList" javaType="list" ofType="com.iflytek.project.base.vo.resp.ContractInfo">
        <result column="CONTRACT_ID" property="contractId"/>
        <result column="CONTRACT_MONEY" property="contractMoney"/>
        <result column="SIGN_DATE" property="signDate"/>
        <result column="PAYMENTS_NUM" property="paymentsNum"/>
        <result column="CURRENT_NUM" property="currentNum"/>
        <result column="PAYED_MONEY" property="payedMoney"/>
        <result column="TOPAY_MONEY" property="topayMoney"/>
        <result column="PAYMENTS_PER" property="paymentsPer"/>
        <result column="PAYED_TOPAY" property="payedTopay"/>
        <result column="PAYED_PER" property="payedPer"/>
    </collection>
</resultMap>

in 占位符

mapper接口ids传数组String[]

List<TTopicFileStorage> selectFileList(@Param("ids") String[] ids, @Param("stage") String stage);

mapper.xml

and d.id IN
<foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
    #{item}
</foreach>

或者
mapper接口idList传列表List

List<ProjectFileResp> getProjectFileByIds(@Param("idList") List<String> idList);

mapper.xml

<if test='idList != null and idList.size() >0'>
    and t.id in
    <foreach collection="idList" item="id" open="(" close=")" separator=",">
        #{id}
    </foreach>
</if>

根据某个字段正序和倒叙排序

前端传过来排序的字段和如何排
sortField: rk_avg_score
sortOrder: asc
后端排序的时候使用 $ 代替#,这里只能用$, 用#不行 报错:ORA-01745: 无效的主机/绑定变量名

order by ${reqVo.sortField} ${reqVo.sortOrder}

函数使用

日期转为指定格式的字符串
在这里插入图片描述
字符串转时间

AND h.HJSJ >= to_date('2021/01/01 00:00:00', 'YYYY-MM-DD hh24:mi:ss')

如果为null则显示0(oracle)

NVL(expr, 0)

MySQL中是

IFNULL(t4.CURRENT_NUM,0) CURRENT_NUM

保留两位小数

ROUND(expr, 2)

oracle批量插入

比循环一个一个插入快
mapper接口:

Integer insertCommonSelectUser(List<CommonSelectUser> list);

xml文件:

<insert id="insertCommonSelectUser" parameterType="java.util.List">
       insert all 
       <foreach collection="list" item="item" index="index">
           into COMMON_SELECT_USER(ID,REF_ID,REF_SRC,USER_CODE,USER_NAME)
           values (#{item.id},#{item.refId},#{item.refSrc},#{item.userCode},#{item.userName})
       </foreach>
       SELECT 1 FROM DUAL
</insert>

插入系统当前时间

oracle:sysdate
mysql:now()

将这种查询结果封装为list套list结构

想要的效果:公共的流程类别信息提出来,里面包含所有该类别的流程信息列表
在这里插入图片描述
在这里插入图片描述
返回结果结构:

[
        {
            "id":"624f25edffb74976a1d3bbe5d0e2d34e",  //流程类别id
            "name":"行政办公",  //流程类别名称
            "flowList":[  //该流程类别下的所有流程信息列表
                {
                    "id":"2",
                    "createPermission":"全员可见",
                    "flowName":"公务用车",
                    "lcbm":null,
                    "remark":"公务用车"
                }
            ]
        },
        {
            "id":"7677ee5644254a74a7656eaeee186202",
            "name":"学生工作",
            "flowList":[
                {
                    "id":"4",
                    "createPermission":"全员可见",
                    "flowName":"流程4",
                    "lcbm":null,
                    "remark":null
                },
                {
                    "createUser":null,
                    "createDate":null,
                    "opUser":null,
                    "opDate":null,
                    "activeFlag":null,
                    "id":"c5b946f6dca5439c9defd1cc8b700dae",
                    "createPermission":"全员可见",
                    "flowName":"接待申请",
                    "lcbm":null,
                    "remark":"复杂表单xxxx"
                }
            ]
        },
        {
            "id":"a61689b5eee44155ab22ace3a5a0d5e0",
            "name":"教学教学",
            "flowList":[
                {
                    "id":"1",
                    "createPermission":"指定人员可见",
                    "flowName":"保修申请",
                    "lcbm":null,
                    "remark":"这个是很短的一个说明"
                }
            ]
        }
]

怎么实现? 返回结果使用resultMap
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

GROUP BY

test原始表
在这里插入图片描述
SELECT NAME FROM test GROUP BY NAME 的结果:
在这里插入图片描述
理解分析:GROUP BY NAME
该句执行后,我们想象生成了虚拟表3,如下所图所示,生成过程是这样的:group by name,那么找name那一列,具有相同name值的行,合并成一行,接下来对这个虚拟表执行select操作,如果执行select * 因为SCORE有两个数据,所以会报错,对于SCORE这样多个值得该怎么办呢?答案就是聚合函数
在这里插入图片描述
GROUP BY多个字段
例如: GROUP BY NAME,NUMBER我们可以把name和number 看成一个整体字段,以他们整体来进行分组的。如下图
在这里插入图片描述
SELECT NAME,AVG(SCORE) AVG FROM test GROUP BY NAME,NUMBER 结果为:
在这里插入图片描述
GROUP BY统计
有这样一张表:
在这里插入图片描述
统计:按专业为维度,统计每个专业 老师平均指导学生数量
思路:用专业分组,统计所有的学生数/所有的老师数

	SELECT x.XNZYMC, ROUND(COUNT(x.XH)/COUNT(DISTINCT x.GH), 0) ZDXSS
	From x 
	GROUP BY x.XNZYMC

在这里插入图片描述
HAVING COUNT(1) > 1

SELECT COMMENT_ID
FROM COMMENT_COMMENTTAG
WHERE POST_ID = 1
GROUP BY COMMENT_ID, COMMENT_TAG
HAVING COUNT(1) > 1

根据COMMENT_ID 和 COMMENT_TAG分组后取数量大于1的COMMENT_ID

深入理解JOIN

select * from student

在这里插入图片描述

select * from score

在这里插入图片描述

select a.* ,b.* from student a join score b on a.s_id=b.s_id 

在这里插入图片描述

select a.* ,b.* from student a left join score b on a.s_id=b.s_id

在这里插入图片描述
由此可见join或者left join都是以数据多的一张表为基表,数据少表的根据关联字段匹配到数据多的表。

LEFT JOIN ON 和 JOIN ON

在这里插入图片描述

SELECT * FROM `product` t1 LEFT JOIN `product_details` t2 ON t1.ID=t2.ID 

在这里插入图片描述
分析理解:把两张表水平拼接在一起,左表全部查出来,根据条件来匹配出右表,不匹配的右表用null代替。

JOIN ON相当于在LEFT JOIN ON的基础上,将右表不匹配的记录null删除

SELECT * FROM `product` t1 JOIN `product_details` t2 ON t1.ID=t2.ID

在这里插入图片描述

MySQL中的concat

concat(str1,str2,…)
在这里插入图片描述
在这里插入图片描述

Oracle中的||(类似MySQL中的concat)拼接字段

Oracle中的concat() 与 ‘||’ 不同在于,concat()只能对两个字符串进行拼接(字符串多的话只能嵌套使用),而||可以对字符串无限拼接。跟MySQL中的concat一样。
在这里插入图片描述

Mysql 中group_concat

使用情况:
在这里插入图片描述

select t3.*,group_concat(t4.GROUP_NAME separator',') groupName
 from t3
 left join t4 on t4.ID=t3.AREA_ID

Oracle中WM_CONCAT

功能类似MySQL的group_concat
原表:
在这里插入图片描述
结果:
在这里插入图片描述
做法:
第一步:先将原表两个字段CAPACITY, SCORE合并为一个字段CAPACITY_SCORE
在这里插入图片描述

SELECT PROJECT_ID,PROJECT_NAME,AWARD_LEVEL_NAME,
	   CONCAT(CONCAT(t4.CAPACITY_NAME, ':'), t3.SCORE) CAPACITY_SCORE
	FROM XXX ...

第二步:再将合并后的结果列转行
在这里插入图片描述

SELECT PROJECT_ID,PROJECT_NAME,AWARD_LEVEL_NAME,
TO_CHAR(WM_CONCAT(CAPACITY_SCORE)) GROUP_CAPACITY_SCORE 
FROM (
	SELECT PROJECT_ID,PROJECT_NAME,AWARD_LEVEL_NAME,
	   CONCAT(CONCAT(t4.CAPACITY_NAME, ':'), t3.SCORE) CAPACITY_SCORE
	FROM XXX ...
) tt GROUP BY PROJECT_ID,PROJECT_NAME,AWARD_LEVEL_NAME

注意1:SELECT 的字段都要再GROUP BY中分组,否则出现 > ORA-00979: not a GROUP BY expression

注意2:TO_CHAR(WM_CONCAT())配套使用,单独使用WM_CONCAT()查询很慢

Oracle中listagg列转行

有这样一个字典表
在这里插入图片描述
需求结果
在这里插入图片描述
在这里插入图片描述
如果T_BOOKS_TEACHER表中is_Lately_Three字段存了上面字典表中的TYPE_NO为SFJSNCBJC的多个INFO_CODE,查询的时候要求翻译过来

		SELECT
		b.IS_LATELY_THREE,
			(
				SELECT listagg(info_name, ',') WITHIN GROUP(ORDER BY info_code)
				FROM t_dict_info
				WHERE type_no = 'SFJSNCBJC'
				AND info_code IN
				((SELECT REGEXP_SUBSTR(b.is_Lately_Three, '[^,]+', 1, LEVEL, 'i') AS STR
				FROM DUAL
				CONNECT BY LEVEL <= LENGTH(b.is_Lately_Three) -
				LENGTH(REGEXP_REPLACE(b.is_Lately_Three, ',', '')) + 1))
			) isLatelyThreeName
		FROM
		 T_BOOKS_TEACHER b 
		where
			b.PLAN_ID='3031e8270f7241bb9d93b527e1dbcb77'

在这里插入图片描述

DECODE 函数(好用,有点像case when)

decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)
SELECT DECODE(t.SSEX, null,‘未知’,‘1’,‘男’,‘0’,‘女’, ‘男’) SEX
FROM STUDENTS t
在这里插入图片描述

CASE WHEN(MySQL和Oracle)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

CASE WHEN实现行转列

现有表
在这里插入图片描述
需求是
在这里插入图片描述
方法1:临时表
在这里插入图片描述
方法2:静态sql
在这里插入图片描述

统计(MySQL 字段符合条件+1)

在这里插入图片描述
在这里插入图片描述

两张表table1和table2根据一个字段id相同,将table2的name字段值设置为table1对应id的name值

在这里插入图片描述
在这里插入图片描述
结果table2:
在这里插入图片描述

合并两个查询的结果集

在这里插入图片描述
在这里插入图片描述

union all

把两个SQL的结果叠加在一起,常用来代替or

(
    select max(t.WHICH_ROUND) WHICH_ROUND,
           t.PROJECT_ID       id
    from t_biz_file t
             join t_biz_project t1
                  on t1.ID = t.BELONG_ID and t.BELONG_TYPE = 'LX' and t1.STATE != 'ZC'
    group by t.PROJECT_ID
)
union all
(
    select max(t.WHICH_ROUND) WHICH_ROUND,
           tbm.ID
    from t_biz_file t
             join t_biz_project t1 on t1.ID = t.PROJECT_ID and t.BELONG_TYPE = 'SH'
             join t_biz_meeting tbm on t.BELONG_ID = tbm.id and tbm.STATE != 'ZC'
    group by tbm.ID
)

排序的字段有null的

在这里插入图片描述

传多个参数,可以使用map也可以使用@Param注解或者使用reqVo对象

使用了@Param注解,xml中就要使用注解中的字符串.属性

使用map

mapper.xml (如果mapper接口中添加了@Param(“map”),那xml中使用要加map.password这样,没加@Param注解,就不需要加map. 跟javaBean一致)

<!--根据邮件数字字符串区间查询-->
<select id="findByEmailArea" resultType="cn.tedu.store.entity.User">
   select * from t_user where email between #{startEmail} and #{endEmail} and password=#{password}
</select>

mapper接口

List<User> findByEmailArea(Map<String,String> map);

单元测试

@Test
public void findByEmailArea(){
   HashMap<String, String> map = new HashMap<>();
   map.put("startEmail","12346");
   map.put("endEmail","12349");
   map.put("password","zhu");
   List<User> list = mapper.findByEmailArea(map);
   for (User user:list) {
      System.err.println(user);
   }
}

使用@Param注解

Mapper.xml跟上面一样,将参数用#{}占位替代
Mapper接口

List<User> findByEmailArea(@Param("startEmail") String startEmail,
                     @Param("endEmail") String endEmail,
                     @Param("password") String password
                     );

单元测试:

String startEmail="12346";
String endEmail="12349";
String password="zhu";
List<User> list = mapper.findByEmailArea(startEmail,endEmail,password);
for (User user:list) {
   System.err.println(user);
}

另外,使用@Param注解,如果传入的是一个对象,在xml中使用这个对象中的属性时,需要使用@Param注解中的字符串.属性 来获得
例如

Page<TEnterpriseResources> selectListByCondition(Page<TEnterpriseResources> page, @Param("query") TEnterpriseResourcesReqVo query);

在这里插入图片描述

使用reqVo对象

vo对象
在这里插入图片描述
mapper接口

Integer selectAlarmCount(BeginEndTimeVo vo);

mapper.xml (如果mapper接口中添加了@Param(“vo”),那xml中使用要加vo.beginTime这样,没加@Param注解,就不需要加vo. 跟Map一致)

在这里插入图片描述

动态SQL

注意:test后面的条件,单引号写在外面,双引号写在里面,切记!否则会出现条件不起作用的情况(特别是字符串,一定是这样)

查询:

<select id="selectListByCondition" resultType="com.iflytek.core.entity.TEnterpriseResources">
    select * from t_enterprise_resources
    <where>
        yxx = '1'
        <if test='query.park!= null and query.park !="" and query.park != "null"'>
         and   PARK = #{query.park}
        </if>
        <if test='query.enterpriseName != null and query.enterpriseName != "" and query.enterpriseName != "null"'>
        and ENTERPRISE_NAME like '%${query.enterpriseName}%'
        </if>
        <if test='query.status != null and query.status != "" and query.status != "null"'>
        and STATUS = #{query.status}
        </if>
        <if test='query.tag != "0" and query.tag != null and query.tag != "" and query.tag != "null"'>
        and KEY_ENTERPRISES = '1'
        </if>
        <if test='query.tag != "1" and query.tag != null and query.tag != "" and query.tag != "null"'>
        and INVALID_ENTERPRISE = '0'
        </if>
    </where>
</select>

更新:

Mapper接口

/*根据code批量废弃服务站*/
Integer abandonedByCodes(@Param("codes") List<String> codes);

Xml

<update id="abandonedByCodes" parameterType="java.util.List">
    update appoint_dealer
    set STATUS='0'
    where CODE in
    <foreach collection="codes" open="(" close=")" separator="," item="code">
        #{code}
    </foreach>
</update>


update ${bindTable} set
   <foreach collection="inputControls" separator="," item="item">
      ${item.bindColumn} = #{item.value}
   </foreach>
where ID=#{id}

删除:

service:

void delete(String id);

serviceImpl:

@Override
public void delete(String ids) {
    if(StringUtils.isNotBlank(ids)){
        String[] idArr = ids.split(",");
        mapper.delete(idArr);
    }
}

mapper接口:

void delete(@Param("idArr")String[] idArr);

mapper.xml

<select id="delete">
   <if test="idArr != null and idArr.length != 0 ">
   update t_instructor_resource set yxx = '0' where id in
   <foreach collection="idArr" item="resourceId" index="index" open="(" close=")" separator=",">
      #{resourceId}
   </foreach>
   </if>
</select>

新增:

<if test='query.fileIdList != null and query.fileIdList.size() >0'>
    and t.id in
    <foreach collection="query.fileIdList" item="id" open="(" close=")" separator=",">
        #{id}
    </foreach>
</if>
<!-- sql片段对应字段名,id属性值任意 -->
	<sql id="key">
		<!-- 去掉最后一个, -->
		<trim suffixOverrides=",">
			<if test="id!=null">
				students_id,
			</if>
			<if test="name!=null">
				students_name,
			</if>
			<if test="sal!=null">
				students_sal,
			</if>
		</trim>
	</sql>
	
	<!-- sql片段,最后一个逗号必须用<trim>去除-->
	<sql id="value">
		<!-- 去掉最后一个, -->
		<trim suffixOverrides=",">
			<if test="id!=null">
				#{id},
			</if>
			<if test="name!=null">
				#{name},
			</if>
			<if test="sal!=null">
				#{sal},
			</if>
		</trim>
	</sql>
	
	<!-- <include refid="key"/>和<include refid="value"/>表示引用上面定义的sql片段 -->
	<insert id="dynaInsert" parameterType="cn.itcast.javaee.mybatis.app14.Student">
		insert into students(<include refid="key"/>) values(<include refid="value"/>)
	</insert>

if else switch case写法

<if test='query.carType!=null and query.carType!=""'>
    <choose>
        <when test='query.carType=="unknown"'>
            and t1.CAR_TYPE is null
        </when>
        <when test='query.carType=="unknown2"'>
            ... 这里可以多个when条件,类似swach case
        </when>
        <otherwise>
            and t1.CAR_TYPE=#{query.carType}
        </otherwise>
    </choose>
</if>

时间范围过滤

mysql日期时间 根据日期范围过滤
表数据:
在这里插入图片描述
在这里插入图片描述
date函数将字符串类型的日期或时间 转为对应的日期
在这里插入图片描述

时间范围拼接

where ALARM_TIME <![CDATA[>]]> concat(#{year},'-12-01 00:00:00') and ALARM_TIME <![CDATA[<=]]> concat(#{year},'-12-31 23:59:59')

本年

<if test='query.type == "2"'>
    and   ALARM_TIME <![CDATA[>]]> (SELECT  DATE_FORMAT(now(), '%Y-01-01 00:00:00'))
    and ALARM_TIME <![CDATA[<=]]> (SELECT DATE_FORMAT(now(), '%Y-12-31 23:59:59'))
</if>

本月

<if test='query.type == "3"'>
    and   ALARM_TIME <![CDATA[>]]> (SELECT  DATE_FORMAT(DATE_SUB(NOW(),INTERVAL (DAYOFMONTH(NOW())-1) day),'%Y-%m-%d 00:00:00'))
    and ALARM_TIME <![CDATA[<=]]> (SELECT DATE_FORMAT(  LAST_DAY(NOW()),'%Y-%m-%d 23:59:59'))
</if>

字符串日期比较大小

字符串转为Long然后比较大小

String inputDate = (String)map.get("INPUT_DATE");
Long input = Long.valueOf(inputDate.replaceAll("[-\\s:]", ""));

模糊查询

<if test='query.userName!=null and query.userName!=""'>
   and  t1.USER_NAME like concat('%',#{query.userName},'%')
</if>
或者
<if test='query.userName!=null and query.userName!=""'>
  and  t1.USER_NAME like concat(concat('%',#{query.userName}),'%')
</if>
或者
<if test='courseVo.bookName!=null and courseVo.bookName!="" '>
    <bind name="bookName" value=" '%'+courseVo.bookName+'%' "/>
    and (t2.book_name like #{bookName} or t2.ISBN like #{bookName})
</if>

使用HashMap可以接收所有查询的返回

一条记录就是一个Map,其中key就是字段名,value就是该条记录的数据
mapper.xml
在这里插入图片描述
mapper.java
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第一阶段--Day2--信息安全法律法规、网络安全相关标准

目录 1. 针对信息安全的规定 2. 网络安全相关标准 1. 针对信息安全的规定 《中华人民共和国计算机信息系统安全保护条例》1994年2月18日颁布并实施 中华人民共和国计算机信息系统安全保护条例__增刊20111国务院公报_中国政府网 《中华人民共和国国际联网安全保护管理…

纯血鸿蒙APP实战开发——Navigation实现多设备适配案例

介绍 在应用开发时&#xff0c;一个应用需要适配多终端的设备&#xff0c;使用Navigation的mode属性来实现一套代码&#xff0c;多终端适配。 效果图预览 使用说明 将程序运行在折叠屏手机或者平板上观看适配效果。 实现思路 本例涉及的关键特性和实现方案如下&#xff1a…

Android 音视频播放器 Demo(一)—— 视频解码与渲染

本篇作为 Android 音视频实战系列的第二篇文章&#xff0c;主要介绍视频解码与渲染过程。本系列文章目录如下&#xff1a; Android 音视频基础知识 Android 音视频播放器 Demo&#xff08;一&#xff09;—— 视频解码与渲染 Android 音视频播放器 Demo&#xff08;二&#xff…

金属冶炼及压延加工制造数字孪生可视化平台,推进行业数字化转型

金属冶炼及压延加工制造数字孪生可视化平台&#xff0c;推进行业数字化转型。随着科技的不断进步和工业的快速发展&#xff0c;金属冶炼及压延加工行业正面临着前所未有的挑战和机遇&#xff0c;数字化转型成为了行业发展的必然趋势。在这个过程中&#xff0c;数字孪生可视化平…

【前端热门框架【vue框架】】——条件渲染和列表渲染的学习的秒杀方式

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;程序员-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;v…

R语言使用sjPlot包优雅绘制回归模型的交互效应图

交互作用效应(p for Interaction)在SCI文章中可以算是一个必杀技&#xff0c;几乎在高分的SCI中必出现&#xff0c;因为把人群分为亚组后再进行统计可以增强文章结果的可靠性&#xff0c;进行可视化后可以清晰的表明变量之间的关系。不仅如此&#xff0c;交互作用还可以使用来进…

实验8 顺序图、状态图

一、实验目的 通过绘制顺序图、状态图&#xff0c;掌握顺序图、状态图之间的基本原理和差异。 能对简单问题进行顺序图、状态图的分析与绘制。 二、实验项目内容&#xff08;实验题目&#xff09; 在图书信息管理系统中&#xff0c;系统管理员可以对图书信息进行管理和维护…

【C++ 容器 set】set的相关用法

博主首页&#xff1a; 有趣的中国人 专栏首页&#xff1a; C进阶 其它专栏&#xff1a; C初阶 | 初阶数据结构 | Linux 博主会持续更新 本篇文章主要讲解 C容器set的相关用法 的相关内容 文章目录 1. 关联式容器2. 树形结构的关联式容器3. set的介绍以及相关使用操作3.1 se…

Linux内核驱动开发-001字符设备开发-003独立按键杂项驱动

1驱动程序 /*************************************************************************> File Name: key_misc.c> Author: yas> Mail: rage_yashotmail.com> Created Time: 2024年04月22日 星期一 17时20分42秒**********************************************…

不同语言在算法使用方面的差异(Java 、C++篇)

由于我认为的会了是能得到结果了&#xff0c;所以我亲自去把题解的C代码给改成了Java的&#xff0c;尽管代码和逻辑上的高度统一。编译器还是报错了。 第三个死都过不去。而且后面的还超时了。 这使我十分怀疑是不是超时或者空间不够所导致的。但是去问讯飞星火&#xff0c;它…

PhotosCollage for Mac:优雅且实用的照片拼贴软件

PhotosCollage for Mac是一款优雅且实用的照片拼贴软件&#xff0c;为Mac用户提供了一个便捷、高效的平台&#xff0c;以创建精美、个性化的照片拼贴作品。 PhotosCollage for Mac v1.4.1激活版下载 该软件界面简洁直观&#xff0c;操作便捷。用户只需将想要拼贴的照片拖入“照…

社交媒体数据恢复:Singal

Signal 数据恢复方法 Signal 是一款主打安全的即时通信应用&#xff0c;它采用了端到端加密的聊天方式。然而&#xff0c;有时候用户可能会遇到数据丢失的问题&#xff0c;例如不小心删除了重要的聊天记录或者忘记了 PIN 码导致无法访问账户数据。以下是针对 Signal 数据恢复的…

花生壳域名收费?那就用免费的dnsexit动态域名解析保姆级图文教程,效果杠杠的

免费dnsexit动态域名解析教程 在互联网上有很多不同的域名解析服务&#xff0c;其中dnsexit是一个流行的免费动态域名解析服务&#xff0c;它允许用户动态更新其IP地址&#xff0c;确保域名始终指向正确的服务器。以下是一个dnsexit动态域名解析的图文教程&#xff0c;帮助你了…

区块链 | OpenSea 相关论文:Toward Achieving Anonymous NFT Trading(三)

&#x1f951;原文&#xff1a; Toward Achieving Anonymous NFT Trading VII 讨论&#xff1a;关于匿名性与市场平台的困境 在本文的这一部分&#xff0c;我们将讨论关于隐藏 NFT 所有者地址的困境&#xff0c;以及为什么像 OpenSea 这样的 NFT 市场平台几乎必须得到完全的信…

Python-VBA函数之旅-min函数

目录 一、min函数的常见应用场景 二、min函数使用注意事项 三、如何用好min函数&#xff1f; 1、min函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;神奇夜光杯-CSDN博客 一、min函数的常见应用场景 mi…

vue跟jQuery中的事件冒泡、事件捕获、事件委托(事件代理)

1、事件捕获、事件冒泡 在JS中&#xff0c;我们管事件发生的顺序叫“事件流” 标准的事件流&#xff1a;当dom触发了事件后&#xff0c;会先通过事件传播捕获到目标元素&#xff0c;然后目标节点通过事件传播实现事件冒泡 事件传播&#xff1a;无论是捕获还是冒泡&#xff0…

百面算法工程师 | 池化相关总结

目录 14.1 什么是池化 14.2 池化层的作用 14.3 平均池化 14.4 最大池化 14.5 空间金字塔池化 14.6 ROI Pooling 14.7 最大池化与平均池化是如何进行反向传播的 14.8 卷积层与池化层的区别 欢迎大家订阅我的专栏一起学习共同进步 祝大家早日拿到offer&#xff01; lets…

位运算、状态压缩、枚举子集汇总

本文涉及知识点 证明容斥原理和证明集合枚举都用到了&#xff1a;二项式定理 【数学归纳法 组合数学】容斥原理 基础知识 位运算优先级 位运算的结合性都是从左到右。优先级低的先运算。 优先级位运算符说明7<< >>位左移/位右移10&按位与11^按位异或12按位…

织梦云端:网络信号原理的艺术解码

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的Linux高性能服务器编程系列之《织梦云端&#xff1a;网络信号原理的艺术解码》&#xff0c;在这篇文章中&#xff0c;你将会学习到网络信号原理以及应用&#xff0c;并且我会给出源码进行剖析&#xff0c;以及手绘UML图…

【树莓派】yolov5 Lite,目标检测,行人检测入侵报警,摄像头绑定

延续之前的程序&#xff1a; https://qq742971636.blog.csdn.net/article/details/138172400 文章目录 播放声音pygame不出声音怎么办&#xff08;调节音量&#xff09;树莓派上的音乐播放器&#xff08;可选&#xff09;命令行直接放歌&#xff08;尝试放mp3歌曲&#xff09; …
最新文章