- 博客(47)
- 收藏
- 关注
原创 牛客网项目18:Redis
1. Redis介绍注: 下载地址:https://github.com/microsoftarchive/redis2. Spring整合Redis(1) 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</ar
2022-05-22 21:11:58 332
原创 牛客网项目17:统一记录日志
1. 大体思路记录日志可能发生在任何时刻,为了方便管理、修改,我们采用AOP面向方面(切面)编程。①②③2. 代码①示例在com.nowcoder.mycommunity目录下新建包:aspect,并在里面新建类:AlpahAspectpackage com.nowcoder.mycommunity.aspect;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotatio.
2022-05-22 17:55:02 234
原创 牛客网项目16:统一处理异常
1. 大体思路2. 返回错误页面在 HomeController 中添加方法: //返回错误页面 @RequestMapping(path = "/error", method = RequestMethod.GET) public String getErrorPage(){ return "/error/500"; }3. 异常处理类在controller包下新建包:advice,在里面新建:ExceptionAdvicepa
2022-05-20 12:14:46 328
原创 剑指offer42:连续子数组的最大和
1. 题目描述输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:62. 解题思路核心点是:dpi作为以数组中第 i 个元素结尾的子数组的最大和。那么就有以下关系:3. 代码public class ques42 { private List<Integer> ans = new LinkedList<>(); public int maxSubArray(int[] nums) { int
2022-05-20 11:26:43 108
原创 牛客网项目15:发送私信
1. 大体思路①发送私信- 采用异步的方式发送私信;- 发送成功后,刷新私信列表。②设置已读- 访问私信详情时,将显示的私信设置为已读状态。2. 数据层①在 MessageMapper 中添加: //添加私信 int insertMessage(Message message); //将私信设置为已读(修改消息的状态) int updateStatus(List<Integer> ids, int status);②在mess
2022-05-19 17:18:36 422
原创 牛客网项目14:私信列表
1. 大体思路①私信列表:- 查询当前用户的会话列表,每个会话只显示一条最新的私信;- 支持分页显示。②私信详情:- 查询某个会话所包含的私信;- 支持分页显示。2. 数据层①创建Message实体类该实体类对应于message表。public class Message { private int id; private int fromId; private int toId...
2022-05-19 16:10:12 225
原创 牛客网项目13:添加评论
1. 大体思路①数据层:- 增加评论数据;- 修改帖子的评论数量。②业务层:- 处理添加评论的业务;- 先增加评论,再更新帖子的评论数量。③表现层:- 处理添加评论数据的请求;- 设置添加评论的表单。评论分为三种:① 楼主;② 回复楼主;③ 楼层间的互相回复。2. 数据层①DiscussPostMapper中添加方法://插入评论后,更新对应帖...
2022-05-18 18:15:17 446
原创 牛客网项目12:查看评论
1. 开发思路①数据层:- 根据实体查询一页评论数据;- 根据实体查询评论的数量。②业务层:- 处理查询评论的业务;- 处理查询评论数量的业务。③表现层:- 显示帖子详情数据时,同时显示该帖子所有的评论数据。2.创建评论表的实体类在entity包下新建实体类:Comment,对应评论的表。package com.nowcoder.mycommunity.entity;imp...
2022-05-18 11:20:29 407
原创 牛客网项目11:帖子详情
1. 大体思路点击帖子,会打开一个链接,把帖子的内容显示完整。按照正常的开发流程:数据层 - 服务层 - 页面。2. 数据层①在 dao.DiscussPostMapper类下添加增删改查方法:selectDiscussPostById 根据主键查询帖子。//根据主键查询帖子DiscussPost selectDiscussPostById(int id);②在 resources.mapper.discusspoat-mapper.xml 下添加上面Mapper对应的SQL
2022-05-14 15:31:16 314
原创 剑指offer40:最小的k个数
1. 题目描述输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。2. 思路① 普通先创建一个大小为k的容器,遍历输入的数组。如果有比容器中小的数,就把容器中最大的数踢出去,把当前这个值放进来。整个数组遍历结束后,容器中的数就是咱们想要的最小k个数。② 进阶由于每次都从容器中取最大的数,如果用数组作为这个容器,那么每次从里面查找最大的数,时间复杂度为o(k)。因此可以从查找方面改进算法的时间
2022-05-12 22:08:39 407
原创 牛客网项目10:发布帖子
1. 大体思路①异步请求这次用到了AJAX,网页能够将增量更新呈现在页面上,而不需要刷新整个页面。我们点击【发布帖子】按钮后,会出现一个弹窗,此时后面的页面并没有被刷新。②流程我们点击发布按钮后,publishBtn按钮会执行index.js中的publish()方法,跳转到:CONTEXT_PATH + "/discuss/add";会执行控制器类 DiscussPostController 的 addDiscussPost()方法。里面调用Service: discussP
2022-05-12 16:27:22 667 1
原创 剑指offer39:数组中出现次数超过一半的数字
1. 题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如:{1,2,3,2,2,2,5,4,2}输出:22. 思路这是一个十分巧妙的想法:由于目标数字的数量超过数组长度的一半,也就是超过其他所有数字之和。①我们可以从第一个数字开始遍历,并用一个变量count存储它出现的次数,初始化为1;②当下一个数字与它不同时,count减1。当count减到小于或等于0时,把正遍历到的这个数作为新的基准,并设定count=1,按照上述过程继续遍历剩下的数组。
2022-05-11 22:22:06 237
原创 牛客网项目9:敏感词过滤
1. 大体思路①我们在resources目录下,新建一个txt文件,里面装有想要过滤的敏感词。②敏感词过滤器:- 定义前缀树;- 根据敏感词,初始化前缀树;- 编写过滤敏感词的方法。③前缀树- Trie、字典树、查找树;- 特点:查找效率高、消耗内存大;- 应用:字符串检索、词频统计、字符串排序等。结构特点:- 根节点为空,其他每个节点只包含一个字...
2022-05-11 15:26:14 779
原创 牛客网项目8:登录检查
1. 大体思路防止用户直接输入:http://localhost:8080/community/user/setting,从而进入某些页面。因此进入某些页面时,需要检查用户的登录状态。由于众多页面都需要进行登录状态的判定,因此写在拦截器中。不过一个一个添加要拦截与放行的路径十分麻烦,我们可以自定义注解。让被注解标识的方法,被拦截。2. 自定义注解- 常用的元注解:@Target、@Retention、@Document、@Inheri...
2022-05-10 22:42:48 270
原创 牛客网项目7:账号设置
主要是更改头像。1. 大体思路①在用户点击【账号设置】按钮,发送【/user/setting】,执行UserController的控制器方法getSettingPage()会返回静态资源【/site/setting】,进入到设置页面;②我们点击【上传头像】按钮后,发送【/user/upload】,执行UserController的控制器方法uploadHeader()。将文件存储到我们在配置文件中设置的路径下,并更新当前user的headerUrl属性为指定格式的路径;③当我们需要访问头像(
2022-05-10 22:00:04 446
原创 牛客网项目6:显示登录信息
1. 思路用户登录以后,每次发送请求时都会携带含有登录凭证 ticket 的 cookie,我们需要根据这个请求凭证 ticket 去 login_ticket 表中查询出对应的请求凭证对象,里面包含userid,进而查询到用户user。将user里面的信息通过模板引擎展现到页面上。每次发送请求都得执行上述步骤,因此将这一系列的过程放进拦截器中,这样就不用给每个请求都写上此过程了。2. 拦截器(1) 创建- 定义拦截器,实现HandlerInterceptor;...
2022-05-09 12:15:26 367
原创 牛客网项目5:登录、退出功能
1. 访问登录页面点击顶部区域内的连接,打开登陆页面。2. 登录 - 验证账号、密码、验证码; - 成功时:生成登录凭证,发送给客户端; - 失败时:跳转回登录页。登录凭证对应的表:login_ticket字段:id、user_id、ticket字符串凭证、status当前是否过期、expired过期时间1> 创建 login_ticket表对应的实体类在entity目录下,新建类:LoginTicket//登录凭证对应的表:login_...
2022-05-05 12:00:17 639
原创 牛客网项目4:生成验证码
利用Kaptcha包实现。1.引入依赖<dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version></dependency>2. 编写配置类,对Kaptcha进行配置在com.nowcoder.mycommunit.
2022-05-04 10:49:21 491
原创 牛客网项目3:注册、激活功能
思路汇总①注册功能:首先在主页index,点击注册:<a class="nav-link" th:href="@{/register}">注册</a>通过控制器方法getRegisterPage(),跳转到register.html界面。输入账号密码邮箱后,点击立即注册。form表单跳转到th:action="@{/register}"。由于此次发送的是POST请求,执行register()控制器方法。该方法调用了userService.register(user
2022-04-26 21:59:49 1781
原创 牛客网项目2:发送邮件
1. 邮箱设置在邮箱客户端中开启SMTP服务。2. Spring Email①引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>2.1.5.RELEASE</version></depen
2022-04-25 22:33:12 692
原创 剑指offer33:二叉搜索树的后序遍历
1. 题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。例如:[5,7,6,9,11,10,8] 返回true[7,4,6,5] 返回fasle2. 题目思路前置知识:①二叉搜索树左子树上的点都小于根节点,右子树上的点都大于根节点;②由于是后序遍历,因此根节点位于末尾。具体解法如下:①先取出列表最后的元素作为根节点,将列表...
2022-04-17 15:18:38 526
原创 剑指offer32-3:从上到下“之”字形打印二叉树
1. 题目说明“之”字形打印二叉树:输出:[[1], [3, 2], [4,5,6,7], [15,14,13,12,11,10,9,8]]2. 解题思路有了前面两道题的经验,我二话不说,直接找规律。先构建两个栈,第一个栈先存取头节点1,然后pop出,将其左右节点按照先左后右的节点顺序push进stack2,按照此操作进行即可。 stack1=[1] ans=[] stack2=[] ..
2022-04-10 22:20:46 691
原创 剑指offer32-2:从上到下分行打印二叉树
1. 题目描述从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。输出:[[3], [9, 20], [15, 7]]即在上题的基础上,分行打印。2. 解题思路在上一题层序打印二叉树的基础上,在while中加入for循环,循环次数为该层的节点数:将该层的节点值先存入容器1中。for循环结束后,再把容器1放进容器2中,即可得到满足题目要求的输出。3. 代码import java.util.ArrayList;import java.util.LinkedLi
2022-04-10 21:58:42 445
原创 剑指offer32-1:从上到下打印二叉树
1. 题目描述从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。输出:[3, 9, 20, 15, 7]2. 解题思路其实为二叉树的层序遍历。①第一个节点为3,存储到一个容器中,list = [3]②将容器中第一个元素取出,放进最终答案的容器中,ans = [3];并将刚才取出元素的左右节点依次放入一开始的容器,list = [9, 20]③重复第二个步骤:list = [20] ans = [3, 9]...
2022-04-09 22:31:12 724
原创 剑指offer50:第一个只出现一次的字符
1. 题目在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。2. 分析可以采用Map,用键存储字符,用值存储该字符出现的次数。本题还有一个比较巧妙的点是,采用数组模拟Map时,直接利用字符串做差计算出字符所在的索引位置。这样避免了在遍历字符串时,每次都与数组中对比,看有没有存在这个字符,避免了遍历数组,使得时间复杂度变为了O(n),即只需遍历一次字符串即可。3. 代码import java.util.HashMap;import java
2022-04-08 16:03:14 494
原创 剑指offfer10:斐波那契数列
1. 题目描述写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0F(1) = 1F(n) = F(n-1) + F(n-2)2. 代码public class ques10 { public static void main(String[] args) { int a = Fibonacci2(7); S...
2022-04-08 15:53:43 226
原创 快速上手tensorflow:tensor运算后的类型
利用tensorflow计算出导数时,其类型为列表的tensor,与其他单个tensor进行运算时,其结果的维度会发生变化,这里对其进行总结。
2022-03-19 17:50:46 1390
原创 Python函数:学习率衰减 tf.train.exponential_decay()
生动形象地介绍了学习率衰减函数: tf.train.exponential_decay()
2022-03-08 16:58:06 2014
原创 MySQL (3) 流程
1. 首先需要开启MySQL的服务,登陆上去;这样SQLyog才能去进行连接。2. 需要对MySQL进行登录:我们为root用户,打开客户端输入密码;3. 初次打开SQLyog时,需要新建连接:新建 - 起名(我起名为MySQL1472) - 密码为当时安装MySQL服务端时设的密码 - 端口号为当时安装MySQL服务端时设的端口号 - 连接。主界面结构如下:...
2022-02-26 14:59:57 391
原创 MySQL (2) 配置、启动、停止等操作
一、启动与停止1. 方式一:计算机 - 右键管理 - 服务 - 找到MySQL0815 - 启动类型(停止、自动:开机自启、手动)2. 方式二:进入终端win + x(或者直接右键windows) + 命令提示符(管理员)- 开启服务:net start mysql0815 (不用加;这是终端的命令而不是sql指令)- 停止服务:net stop mysql0815注:右键windo...
2022-02-26 14:36:44 483
原创 MySQL (1) 安装、配置
MySQL的安装、配置这里选择customer自定义安装。2. 直接点下一步,不更改路径;3.点击安装;4.安装完后,直接点finish。跳出以下界面,点击next进行配置。5. 选择精确配置。6. 选择开发器;7. 选择多功能数据库;8. 安装位置不用管,继续下一步;9. 允许连接数:第一个选项为20,第二个为500,最后一个可以自己设置...
2022-02-26 14:25:27 522
原创 springMVC: RestFul案例3
该RestFul案例对应于尚硅谷杨博超老师的springMVC课程的56-63。本文从0开始详细记录了该RestFul案例的各个步骤,包括整体搭建、文件配置、程序等。
2022-02-13 18:42:27 346
原创 springMVC: RestFul案例2
该RestFul案例对应于尚硅谷杨博超老师的springMVC课程的56-63。本文从0开始详细记录了该RestFul案例的各个步骤,包括整体搭建、文件配置、程序等。
2022-02-13 18:30:55 198
原创 springMVC: RestFul案例1
该RestFul案例对应于尚硅谷杨博超老师的springMVC课程的56-63。本文从0开始详细记录了该RestFul案例的各个步骤,包括整体搭建、文件配置、程序等。
2022-02-10 15:06:16 255
原创 学生邮箱激活IDEA、pycharm
这是我第三次用学生邮箱激活JB账号了,由于激活的有效期为1年,而我又老是忘记操作步骤,因此进行记录。步骤如下:1. 浏览器搜索IDEA;2. 点击学习工具 - 免费许可证下面的、适用于学生和教师 - 立即申请 ;3. 填写信息;填写后在学生邮箱中受到来信,点击链接;4. 点击“Get started to use”后,在新的界面选择 “I accept”。获取免费的JB使用!5. 进入IDEA,登录JB账号。成功激活。备注:① 由于我之前激活过,在到期.
2022-01-29 00:37:36 3308 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人