牛客社区所有的表和SQL语句

文章目录

  • 1 帖子表 discuss_post
    • 1.1 字段描述
    • 1.2 相关功能描述
      • 1.2.1 分页查询帖子
      • 1.2.2 查询帖子总数量
      • 1.2.3 插入一条帖子记录
      • 1.2.4 根据帖子ID查询某条帖子
      • 1.2.5 更新帖子评论数量
      • 1.2.6 更新帖子类型
      • 1.2.6 更新帖子状态
      • 1.2.7 更新帖子分数
  • 2 用户表 user
    • 2.1 字段描述
    • 2.2 相关功能描述
      • 2.2.1 根据用户ID查询用户
      • 2.2.2 通过用户名查询用户
      • 2.2.3 根据用户邮箱查询用户
      • 2.2.4 插入一条用户记录
      • 2.2.5 更新用户状态
      • 2.2.6 更新用户头像
      • 2.2.7 更新用户密码
  • 3 登录凭证表 login_ticket
    • 3.1 字段描述
    • 3.2 相关功能描述
      • 3.2.1 插入一条登录凭证记录
      • 3.2.2 根据凭证字符串查询登录凭证
      • 3.2.3 根据凭证字符串修改对应登录凭证的状态
  • 4 评论表 comment
    • 4.1 字段描述
    • 4.2 相关功能描述
      • 4.2.1 分页查询某个帖子的回帖,查询某个回帖下的所有评论和回复
      • 4.2.2 查询某条帖子的回帖数量,查询回帖下的评论和回复数量
      • 4.2.3 插入一条comment记录(回帖/评论/回复)
      • 4.2.4 根据comment 的 id查询回帖/评论/回复
  • 5 消息表 message
    • 5.1 字段描述
    • 5.2 相关功能描述
      • 5.2.1 分页查询某个用户的所有私信,按会话id分组,每组只有一条最新的私信
      • 5.2.2 根据userId,查询某个用户所有会话的数量
      • 5.2.3 根据conversation_id查询消息列表
      • 5.2.4 查询某个用户未读消息数量,查询某个用户的某个会话id下的未读消息数量
      • 5.2.5 新增一条消息记录
      • 5.2.6 根据消息ids,修改一批消息的状态
      • 5.2.7 查询某个用户的,某个通知事件类型的,一条最新通知
      • 5.2.8 查询某个用户的,某个通知事件类型的,通知数量
      • 5.2.9 查询某个用户的未读通知数量,查询某个用户的某个通知事件类型的未读通知数量
      • 5.2.10 分页查询某个用户的,某个通知事件类型的通知

1 帖子表 discuss_post

1.1 字段描述

描述字段类型
帖子Id,主键idint
贴子所属的用户id,帖子是由谁发表的user_idvarchar(45)
帖子标题titlevarchar(100)
帖子内容contenttext
帖子类型:0-普通; 1-置顶;typeint
帖子状态:0-正常; 1-精华; 2-删除;statusint
帖子创建时间create_timetimestamp
帖子评论数量(回帖、评论、回复)comment_countint
帖子分数(根据分数进行热度排行)scoredouble

1.2 相关功能描述

1.2.1 分页查询帖子

对应接口

List<DiscussPost> selectDiscussPosts(int userId, int offset, int limit, int orderMode);

注意事项

  1. 以下所有查询都是查未被删除的帖子,即status != 2。
  2. 如果userId不为0,即要查询某个用户的帖子。
  3. 如果 orderMode 为 0,先按照帖子类型(置顶1、普通0)降序排序,让置顶的帖子放在前面,type一样的帖子按照时间顺序降序排序,让先发表的帖子放在前面。
  4. 如果 orderMode 为 1,表示按照热度查询,先按照帖子类型(置顶1、普通0)降序排序,让置顶的帖子放在前面,type一样的帖子分数降序排序,让分数高的帖子放在前面,如果分数一样,按照时间排序,把先发布的帖子放在前面。

对应SQL

<select id="selectDiscussPosts" resultType="DiscussPost">
    select <include refid="selectFields"></include>
    from discuss_post
    where status != 2
    <if test="userId!=0">
        and user_id = #{userId}
    </if>
    <if test="orderMode==0">
        order by type desc, create_time desc
    </if>
    <if test="orderMode==1">
        order by type desc, score desc, create_time desc
    </if>
    limit #{offset}, #{limit}
</select>

1.2.2 查询帖子总数量

对应接口

int selectDiscussPostRows(@Param("userId") int userId);

注意事项

  1. 查询的是查未被删除的帖子,即status != 2。
  2. 如果userId不为0,表明要查询某个用户发布的帖子总数量,此时应该假设where条件判断。

对应SQL

<select id="selectDiscussPostRows" resultType="int">
    select count(*)
    from discuss_post
    where status != 2
    <if test="userId!=0">
        and user_id = #{userId}
    </if>
</select>

1.2.3 插入一条帖子记录

对应接口

int insertDiscussPost(DiscussPost discussPost);

注意事项

传入的是帖子对象

对应SQL

<insert id="insertDiscussPost" parameterType="DiscussPost" keyProperty="id">
    insert into discuss_post(<include refid="insertFields"></include>)
    values(#{userId},#{title},#{content},#{type},
    #{status},#{createTime},#{commentCount},#{score})
</insert>

1.2.4 根据帖子ID查询某条帖子

对应接口

DiscussPost selectDiscussPostById(int id);

注意事项

查询的是未被删除的帖子,所以status != 2。

对应SQL

<select id="selectDiscussPostById" resultType="DiscussPost">
    select <include refid="selectFields"></include>
    from discuss_post
    where status != 2 and id = #{id}
</select>

1.2.5 更新帖子评论数量

对应接口

int updateCommentCount(int id, int commentCount);

注意事项

更新帖子评论数量要和新增帖子放在同一个事务中,防止出现数据不一致问题。

对应SQL

<update id="updateCommentCount">
    update discuss_post set comment_count = #{commentCount} where id = #{id}
</update>

1.2.6 更新帖子类型

对应接口

int updateType(int id, int type);

注意事项

对应SQL

<update id="updateType">
    update discuss_post set type = #{type} where id = #{id}
</update>

1.2.6 更新帖子状态

对应接口

int updateStatus(int id, int status);

注意事项

对应SQL

<update id="updateStatus">
    update discuss_post set status = #{status} where id = #{id}
</update>

1.2.7 更新帖子分数

对应接口

int updateScore(int id, double score);

注意事项

对应SQL

<update id="updateScore">
    update discuss_post set score = #{score} where id = #{id}
</update>

2 用户表 user

2.1 字段描述

描述字段类型
用户ididint
用户名usernamevarchar(50)
用户密码passwordvarchar(50)
saltvarchar(50)
用户邮箱emailvarchar(100)
用户类型:0-普通用户; 1-超级管理员; 2-版主;typeint
用户状态:0-未激活; 1-已激活;statusint
注册用户的激活码activation_codevarchar(100)
用户头像header_urlvarchar(200)
用户创建时间create_timetimestamp

2.2 相关功能描述

2.2.1 根据用户ID查询用户

对应接口

User selectById(int id);

注意事项

对应SQL

<select id="selectById" resultType="User">
    select <include refid="selectFields"></include>
    from user
    where id = #{id}
</select>

2.2.2 通过用户名查询用户

对应接口

User selectByName(String username);

注意事项

对应SQL

<select id="selectByName" resultType="User">
    select <include refid="selectFields"></include>
    from user
    where username = #{username}
</select>

2.2.3 根据用户邮箱查询用户

对应接口

User selectByEmail(String email);

注意事项

对应SQL

<select id="selectByEmail" resultType="User">
    select <include refid="selectFields"></include>
    from user
    where email = #{email}
</select>

2.2.4 插入一条用户记录

对应接口

int insertUser(User user);

注意事项

对应SQL

<insert id="insertUser" parameterType="User" keyProperty="id">
    insert into user (<include refid="insertFields"></include>)
    values(#{username}, #{password}, #{salt}, #{email}, #{type}, #{status}, #{activationCode}, #{headerUrl}, #{createTime})
</insert>

2.2.5 更新用户状态

对应接口

int updateStatus(int id, int status);

注意事项

对应SQL

<update id="updateStatus">
    update user set status = #{status} where id = #{id}
</update>

2.2.6 更新用户头像

对应接口

int updateHeader(int id, String headerUrl);

注意事项

对应SQL

<update id="updateHeader">
    update user set header_url = #{headerUrl} where id = #{id}
</update>

2.2.7 更新用户密码

对应接口

int updatePassword(int id, String password);

注意事项

对应SQL

<update id="updatePassword">
    update user set password = #{password} where id = #{id}
</update>

3 登录凭证表 login_ticket

3.1 字段描述

描述字段类型
登录凭证ididint
用户id,谁的登录凭证user_idint
登录凭证字符串,一串UUID,保证每个登录用户不重复ticketvarchar(45)
0-有效; 1-无效;statusint
过期时间,一段时间后登录凭证会过期,用户需要重新登录expiredtimestamp

3.2 相关功能描述

3.2.1 插入一条登录凭证记录

对应接口

int insertLoginTicket(LoginTicket loginTicket);

注意事项

在插入一条登录凭证信息后需要将主键id回填,useGeneratedKeys = true, keyProperty = “id”
我觉得这个回填功能并没有使用到

对应SQL

@Insert({
        "insert into login_ticket(user_id,ticket,status,expired) ",
        "values(#{userId},#{ticket},#{status},#{expired})"
})
// @Options(useGeneratedKeys = true, keyProperty = "id")  // 这个回填并没有被使用到。

3.2.2 根据凭证字符串查询登录凭证

对应接口

LoginTicket selectByTicket(String ticket);

注意事项

对应SQL

@Select({
        "select id,user_id,ticket,status,expired ",
        "from login_ticket where ticket=#{ticket}"
})

3.2.3 根据凭证字符串修改对应登录凭证的状态

对应接口

int updateStatus(String ticket, int status);

注意事项

对应SQL

@Update({
        "<script>",
        "update login_ticket set status=#{status} where ticket=#{ticket} ",
        "<if test=\"ticket!=null\"> ",
        "and 1=1 ",
        "</if>",
        "</script>"
})

以下是对代码的解释:

解释 MyBatis 注解中的 @Update 使用

这段代码是一个 MyBatis 框架中使用的数据库更新操作的注解定义。这里使用的是 MyBatis 的动态 SQL 特性来构造 SQL 更新语句。让我们逐一分析这个代码的组成部分:

  1. @Update 注解:

    • @Update 是用于标识一个方法执行数据库的更新操作(即 SQL 的 UPDATE 语句)。
    • 在大括号 {} 内部,你可以定义实际执行的 SQL 语句。
  2. 使用 <script> 标签:

    • <script> 标签在这里用来包围可能包含动态 SQL 部分的 SQL 语句。
    • MyBatis 使用 XML 类似的标签来处理动态 SQL 语句,即使在注解中也可以使用这些标签。
  3. 更新语句:

    • update login_ticket set status=#{status} where ticket=#{ticket} 是一个基础的 SQL 更新语句,它的作用是更新 login_ticket 表中的 status 字段。更新的条件是 ticket 字段等于方法参数 ticket 的值。
  4. 使用 <if> 标签进行条件判断:

    • <if test=\"ticket!=null\"> 是一个条件语句,用来检查输入参数 ticket 是否不为 null
    • 这里的条件实际上并没有改变 SQL 逻辑,因为 and 1=1 是一个总是为真的条件。这种写法通常用于测试或者作为编写更复杂逻辑的占位符。
  5. 方法签名:

    • int updateStatus(String ticket, int status); 这个方法接收两个参数:ticketstatus,并返回一个整型值,表示更新操作影响的行数。
    • 在 MyBatis 中,更新操作通常返回一个整数,表示 SQL 语句影响的行数。

总结来说,这段代码通过 MyBatis 注解定义了一个更新数据库中 login_ticket 表的操作。它使用动态 SQL 来确保只有当 ticket 不为 null 时才执行更新,虽然在这个特定的示例中,and 1=1 没有实际的过滤作用,更多的可能是为了展示如何在条件内部使用固定的真值条件。

4 评论表 comment

4.1 字段描述

描述字段类型
回帖/评论/回复ididint
用户id,这条回帖/评论/回复是谁发的user_idint
在哪个实体类型下面:1-帖子;2-回帖entity_typeint
实体identity_idint
被回复的用户id,0-不是回复,是回帖或评论,不为0-回复的用户idtarget_idint
回帖/评论/回复的内容contenttext
回帖/评论/回复的状态:0-正常;1-删除statusint
回帖/评论/回复的创建时间create_timetimestamp

可以这样理解:在帖子下的评论,和在评论下的评论
也可以按照下面的理解
在这里插入图片描述

在这里插入图片描述

以这三条数据为例

在这里插入图片描述

在这里插入图片描述

以下是另外一组数据:

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

4.2 相关功能描述

4.2.1 分页查询某个帖子的回帖,查询某个回帖下的所有评论和回复

对应接口

List<Comment> selectCommentsByEntity(int entityType, int entityId, int offset, int limit);

注意事项

  1. 查询的回帖/评论/回复都是存在的,未被删除的,即 status = 0
  2. 当 entityType = 1:表示需要分页查询某个帖子下所有的回帖,此时会利用offset和limit参数
  3. 当 entityType = 2:表示需要查询某个回帖下的所有评论和回复,此时ofsset = 0, limit = Integer.MAX_VALUE

对应SQL

<select id="selectCommentsByEntity" resultType="Comment">
    select <include refid="selectFields"></include>
    from comment
    where status = 0
    and entity_type = #{entityType}
    and entity_id = #{entityId}
    order by create_time asc
    limit #{offset}, #{limit}
</select>

4.2.2 查询某条帖子的回帖数量,查询回帖下的评论和回复数量

对应接口

int selectCountByEntity(int entityType, int entityId);

注意事项

  1. 当 entiyType = 1:查询某条帖子的回帖数量,用于分页显示计算回帖页数。
  2. 当 entiyType = 2:查询回帖下的评论和回复数量,用于前端页面显示某条回帖下的评论和回复数量。

对应SQL

<select id="selectCountByEntity" resultType="int">
    select count(id)
    from comment
    where status = 0
    and entity_type = #{entityType}
    and entity_id = #{entityId}
</select>

4.2.3 插入一条comment记录(回帖/评论/回复)

对应接口

int insertComment(Comment comment);

注意事项

对应SQL

<insert id="insertComment" parameterType="Comment">
    insert into comment(<include refid="insertFields"></include>)
    values(#{userId},#{entityType},#{entityId},#{targetId},#{content},#{status},#{createTime})
</insert>

4.2.4 根据comment 的 id查询回帖/评论/回复

对应接口

Comment selectCommentById(int id);

注意事项

对应SQL

<select id="selectCommentById" resultType="Comment">
    select <include refid="selectFields"></include>
    from comment
    where id = #{id}
</select>

5 消息表 message

5.1 字段描述

消息ididint
消息发送方id:1-系统;大于1-用户idfrom_idint
消息接收方用户idto_idint
对话id或通知事件类型:小用户id_大用户id,表示是对话id;like/follow/comment,表示是通知事件类型conversation_idvarchar(45)
消息的内容contenttext
消息状态:0-未读;1-已读;2-删除;statusint
消息创建时间create_timetimestamp

在这里插入图片描述
在这里插入图片描述
可以这样理解:在帖子下的评论,和在评论下的评论
在这里插入图片描述

5.2 相关功能描述

5.2.1 分页查询某个用户的所有私信,按会话id分组,每组只有一条最新的私信

对应接口

List<Message> selectConversations(int userId, int offset, int limit);

注意事项

  1. 这个查询比较复杂,要嵌套查询,先查出每个会话最大的消息id,再查询这些消息id对应的完整的信息,按时间降序排序,只显示offset开始的limit条记录。
  2. 要选择未被删除的消息,所以status != 2
  3. 要选择的是私信,所以from_id != 1
  4. 要查的是user_id的对话信息,所以是from_id = #{userId} or to_id = #{userId}

对应SQL

<select id="selectConversations" resultType="Message">
    select <include refid="selectFields"></include>
    from message
    where id in (
        select max(id) from message
        where status != 2
        and from_id != 1
        and (from_id = #{userId} or to_id = #{userId})
        group by conversation_id
    )
    order by id desc
    limit #{offset}, #{limit}
</select>

5.2.2 根据userId,查询某个用户所有会话的数量

对应接口

int selectConversationCount(int userId);

注意事项

  1. 用于分页显示用户会话
  2. 要选择未被删除的消息,所以status != 2
  3. 要查询的是会话的数量,所以from_id != 1
  4. 要查的是user_id的对话信息,所以是from_id = #{userId} or to_id = #{userId}

对应SQL

我觉得直接使用这个SQL要比课程里面的要好。

select count(*) from message
where status != 2
and from_id != 1
and (from_id = 111 or to_id = 111)
group by conversation_id

5.2.3 根据conversation_id查询消息列表

对应接口

int selectLetterCount(String conversationId);

注意事项

对应SQL

我觉得这里不用写from_id != 1

<select id="selectLetterCount" resultType="int">
    select count(id)
    from message
    where status != 2
    // and from_id != 1  
    and conversation_id = #{conversationId}
</select>

5.2.4 查询某个用户未读消息数量,查询某个用户的某个会话id下的未读消息数量

对应接口

int selectLetterUnreadCount(int userId, String conversationId);

注意事项

  1. 是查询未读消息,消息发送发一定是已读的,所以要用to_id筛选
  2. 未读消息,status = 0

对应SQL

<select id="selectLetterUnreadCount" resultType="int">
    select count(id)
    from message
    where status = 0
    and from_id != 1
    and to_id = #{userId}
    <if test="conversationId!=null">
        and conversation_id = #{conversationId}
    </if>
</select>

5.2.5 新增一条消息记录

对应接口

 int insertMessage(Message message);

注意事项

  1. 如果是私信,由程序执行,同步添加
  2. 如果是通知,由消息队列,然后异步添加

对应SQL

<insert id="insertMessage" parameterType="Message" keyProperty="id">
    insert into message(<include refid="insertFields"></include>)
    values(#{fromId},#{toId},#{conversationId},#{content},#{status},#{createTime})
</insert>

5.2.6 根据消息ids,修改一批消息的状态

对应接口

int updateStatus(List<Integer> ids, int status);

注意事项

对应SQL

<update id="updateStatus">
    update message set status = #{status}
    where id in
    <foreach collection="ids" item="id" open="(" separator="," close=")">
        #{id}
    </foreach>
</update>

5.2.7 查询某个用户的,某个通知事件类型的,一条最新通知

对应接口

Message selectLatestNotice(int userId, String topic);

注意事项

  1. 要查询的是通知,所以from_id = 1
  2. 不能是已经删除的通知,所以status != 2
  3. 查询某个用户的通知,所以to_id = #{userId}

对应SQL
也可以按时间降序排序,然后limit 1,只返回1条,就是最新的那条通知

<select id="selectLatestNotice" resultType="Message">
    select <include refid="selectFields"></include>
    from message
    where id in (
        select max(id) from message
        where status != 2
        and from_id = 1
        and to_id = #{userId}
        and conversation_id = #{topic}
    )
</select>

5.2.8 查询某个用户的,某个通知事件类型的,通知数量

对应接口

int selectNoticeCount(int userId, String topic);

注意事项

  1. 要查询的是通知,所以from_id = 1
  2. 不能是已经删除的通知,所以status != 2
  3. 查询某个用户的通知,所以to_id = #{userId}

对应SQL

<select id="selectNoticeCount" resultType="int">
    select count(id) from message
    where status != 2
    and from_id = 1
    and to_id = #{userId}
    and conversation_id = #{topic}
</select>

5.2.9 查询某个用户的未读通知数量,查询某个用户的某个通知事件类型的未读通知数量

对应接口

int selectNoticeUnreadCount(int userId, String topic);

注意事项

对应SQL

<select id="selectNoticeUnreadCount" resultType="int">
    select count(id) from message
    where status = 0
    and from_id = 1
    and to_id = #{userId}
    <if test="topic!=null">
        and conversation_id = #{topic}
    </if>
</select>

5.2.10 分页查询某个用户的,某个通知事件类型的通知

对应接口

List<Message> selectNotices(int userId, String topic, int offset, int limit);

注意事项

按照时间降序排序。

对应SQL

<select id="selectNotices" resultType="Message">
    select <include refid="selectFields"></include>
    from message
    where status != 2
    and from_id = 1
    and to_id = #{userId}
    and conversation_id = #{topic}
    order by create_time desc
    limit #{offset}, #{limit}
</select>

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

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

相关文章

cesium primitive 移动 缩放 旋转 矩阵

旋转参考&#xff1a;cesium 指定点旋转rectangle Primitive方式 矩阵篇-CSDN博客 平移参考&#xff1a;cesium 调整3dtiles的位置 世界坐标下 相对坐标下 平移矩阵-CSDN博客 一、primitive方式添加polygon let polygonInstance new Cesium.GeometryInstance({geometry: Ce…

陆金所控股一季报到底是利好还是利空?

3月底&#xff0c;陆金所控股&#xff08;LU.N;06623.HK&#xff09;因其特别分红方案受到市场高度关注。但在4月23日发布的2024年一季度财报中&#xff0c;陆金所控股营收同比下降30.9%&#xff0c;净亏损8.3亿元。 两者对比&#xff0c;外界不由得对公司的经营状况产生疑惑。…

ROS 话题订阅模型之自定义消息类型 C++实现

ROS 话题订阅模型之自定义消息类型 1.自定义消息类型好处 ROS提供了许多标准的消息类型&#xff0c;如 std_msgs/String、sensor_msgs/Image 等&#xff0c;涵盖了很多常见的数据类型和传感器数据。但是&#xff0c;在实际的开发中&#xff0c;我们经常会遇到需要传输的数据类…

【Image captioning】论文阅读九—Self-Distillation for Few-Shot Image Captioning_2022

摘要 大规模图像字幕数据集的开发成本高昂,而大量未配对的图像和文本语料库可能有助于减少手动注释的工作。在本文中,我们研究了只需要少量带注释的图像标题对的少样本图像标题问题。我们提出了一种基于集成的自蒸馏方法,允许使用不成对的图像和字幕来训练图像字幕模型。该…

springcloud alibaba 整合seata的TCC

一、seata服务端搭建同上篇。 Seata的AT模式客户端两阶段提交流程源码分析 二、seata客户端的结构 1.示例DEMO工程 下单&#xff0c;扣余额&#xff0c; 减库存。 2. MAVEN配置。 父工程&#xff1a;由于spring-cloud-starter-alibaba-seata依赖的seata-spring-boot-starter…

C语言(static和extern)

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

Python写个二维码

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、进入官网下载二、下载一下三.输入代码 前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、进入官网下载 官网 pip insta…

FR-E840-0120-4-60 三菱变频器5.5KW型

FR-E840-0120-4-60 三菱变频器替换FR-E740-5.5K FR-E840用户手册,FR-E840-0120-4-60价格,FR-E840-5.5K价格,FR-E840-0120-4-60外部连接图,FR-E740-5.5K替换产品。 FR-E740-5.5K-CHT逐渐开始停产&#xff0c;现在用新型号FR-E840-0120-4-60替换。 FR-E840-0120-4-60参数说明&…

2024年前端技术发展趋势

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

anaconda安装python 3.8环境

打开anaconda命令行窗口 在命令行窗口中&#xff0c;输入命令&#xff1a;conda create -n py38 python3.8 执行命令后&#xff0c;显示conda版本、安装路径和安装的包 然后提醒是否安装&#xff0c;输入y 等待安装完成。然后进入python3.8&#xff0c;执行命令&#xff1a;con…

全网最全的平行坐标图(parallel coordinates plot)的绘制攻略

早上起来拥抱太阳&#xff0c;写小论文&#xff0c;看到人家的图怎么那么好看&#xff01;&#xff01;&#xff1f;&#xff1f; 这不得赶紧抄下来&#xff0c;我也发一个顶刊&#xff1f;于是开始思考如何解决绘制这个问题&#xff0c;目前现有的大部分解决方案都是直接调库…

【计算机毕业设计】理发店管理系统产品功能说明——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

Python Selenium无法打开Chrome浏览器处理自定义浏览器路径

问题 在使用Python Selenium控制Chrome浏览器操作的过程中&#xff0c;由于安装的Chrome浏览器的版本找不到对应版本的驱动chromedriver.exe文件&#xff0c;下载了小几个版本号的驱动软件。发现运行下面的代码是无法正常使用的&#xff1a; from selenium import webdriver …

HWOD:合并整型数组

一、知识点 合并整型数组目前有两种方法 合并数组并不一定需要真正的合并 1、下意识的方法 对两个整型数组分别排序&#xff0c;然后合并 2、不排序的方法 遍历两个数组&#xff0c;找出最小值&#xff0c;输出最小值。将两个数组中与最小值相等的位置置为超大值 重复以…

二叉树oj题(2)

1.二叉树的最近公共祖先 解题思路&#xff1a;方法一&#xff1a; 1.先判断p或者q 是不是 root当中的一个 2.左子树当中递归査找p或者q 3.右子树当中递归查找p或者q 如何查找: root 的 left 和 right 都不为空 ->root root的 left 为空 right 不为空->right这一侧找…

终于有人说明白了session、cookie和token的区别

一、首先介绍一下名词&#xff1a;Session、cookie、token&#xff0c;如下&#xff1a; 1.Session会话&#xff1a;客户端A访问服务器&#xff0c;服务器存储A的数据value&#xff0c;把key返回给客户端A&#xff0c;客户端A下次带着key&#xff08;session ID&#xff09;来…

ROS轻松入门(一)—— 基本概念:node节点、topic通信、service通信

node节点 ROS 中的每个节点都应该负责单一的、模块化的目的&#xff0c;例如控制车轮马达或发布来自激光测距仪的传感器数据。每个节点都可以通过主题、服务、操作或参数从其他节点发送和接收数据。 一个完整的机器人系统由许多协同工作的节点组成。在 ROS 2 中&#xff0c;单…

【java配置】jpcap的下载与idea配置

解决报错&#xff1a;Cannot resolve symbol ‘jpcap’ 1. jpcap的下载 官网下载链接 百度网盘下载 双击WinpPca安装&#xff0c;jacap1和jpcap2任选其中之一 2. idea配置 &#xff08;1&#xff09;查看当前使用jdk目录 File -> Project Settings -> SDKs &#…

STM32H750时钟频率和功耗以及RTC功能测试

STM32H750时钟频率和功耗和RTC功能测试 &#x1f4cc;相关篇《STM32H750片外QSPI启动配置简要》 ✨在使用STM32CubeMX修改STM32H750时钟树参数时&#xff0c;如果使用软件自动求解&#xff0c;这是一个非常耗时的操作&#xff0c;有时候还不一定成功&#xff0c;还是推荐使用手…

2024成都直播电商硝烟再起,天府锋巢AI 时代拉开帷幕

在今年1月份的“AI重构电商”生态大会上&#xff0c;百度借力AI数字人直播和文心大模型能力杀入电商场内&#xff0c;强调“AI重塑电商”。成都兴隆湖畔&#xff0c;天府锋巢直播产业基地计划开展高质量、低成本、互动性更强的虚拟数字人直播&#xff0c;为直播行业注入新的活力…