自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 学习笔记 | 前后端分离模式

前后端分离模式为什么要分离历史模式(JSP&Servlet)中 jsp文件到后期可能过于庞大,维护困难。MVC时代以后端为主,分Controller(路由器作用,对外提供Url接口),Model(和数据库表格的映射),View(浏览器页面显示,映射到jsp)来控制架构。但是,每次访问一次此Controller,View就会刷新一次,网络慢的时候页面就会白屏,用户体验会不好。通过使用A...

2020-03-27 00:52:23 384

原创 学习笔记 | 新建项目

使用IDEA新建springboot项目新建项目添加不同层的包其中common:通用代码,共用代码,常量类,异常处理config:配置controller(api、web):控制层api:需要登录后才能使用的接口open:不需要权限的接口dao:data access object 数据访问层model(mapper、responsibility):实体类DTO: 数据传输对...

2020-03-20 01:27:10 154

原创 web前端 | 博客(十三)评论功能

评论功能创建评论集合判断用户是否登录,如果用户登录,再允许用户提交评论表单在服务器端创建文章评论功能对应的路由再路由请求处理函数中接受客户端传递过来的评论信息将评论信息存储在评论集合中将页面重定向回文章详情页面在文章详情页面路由中获取文章评论信息并展示在页面中在model下新建comment.jsconst mongoose = require('mongoose');c...

2020-01-12 00:37:15 4509 1

原创 web前端 | 博客(十二)博客系统的前台展示页面

博客系统的前台展示页面在服务器端增加首页和文章详情页面对应的请求路由。将模板的公共部分抽离出来,包括模板骨架和页面公共的区域,并修改中的外链资源地址为绝对路径。在route下的home.js中,添加路由。...

2020-01-11 23:07:40 1135

原创 web前端 | 博客(十一)文章列表展示

文章列表展示找到文章列表请求页面的路由请求处理函数,先将所有数据查询出来,并展示在页面当中,之后再实现分页功能。在route/admin/下的article.js中,将文章集合的构造函数导入到当前文件中。并且增加代码 let articles = await Article.find({}); res.send(articles);此时,在localhost/admin/art...

2020-01-10 15:23:00 1158

原创 web前端 | 博客(十)文章管理功能

文章管理功能添加路由添加文章列表页面和文章编辑页面对应的路由,并在路由里添加这两个文件。事实上就是实现通过路由的方式访问这两个页面。再route文件夹下的admin.js文件夹中,建立这两个路由。由于页面渲染的请求地址都是从地址栏过来的,所以请求方式都是get。设置完成后,可以访问http://localhost/admin/article和http://localhost/admin/a...

2020-01-10 13:42:13 1033

原创 web前端 | 博客(九)删除用户功能

删除用户功能在点击删除按钮后,点击提交按钮时,向服务器端发送删除用户的请求,并且将要删除的用户id作为请求参数传递到服务器端。其实,删除用户的弹出框就是一个表单,要通过这个表单将删除用户的id传递到服务器端。这个表单,有一个含有用户id的隐藏域。在确认删除框中添加隐藏域用以存储要删除的用户id值未删除按钮添加自定义属性用以存储想要删除的用户id值为删除按钮添加点击事件,再点击事件处理函...

2020-01-06 21:28:53 1337

原创 web前端 | 博客(八)用户信息修改功能

用户信息修改功能当点击用户后面的按钮时,要跳转到用户信息修改页面。而修改和添加实际上是同一个页面。要区分跳转后是添加操作还是修改操作,在于携带的参数。如果是添加操作,那就直接跳转过去;如果是修改操作,那就携带当前用户的di,通过get的方式传递过去。这样,在跳转到用户编辑页面的时候,可以通过get方式中是否有id参数,来区分到底是添加操作还是修改操作。如果是修改操作,还需要将要修改的用户信息...

2020-01-06 20:50:33 10001

原创 web前端 | 博客(七)数据分页

数据分页当数据库中数据非常多时,如果不分页,数据库查询的时间会比较长,用户等待的时间也会比较长,因此数据需要分批次展示。这时就需要用到数据分页功能。分页的本质,就是在查询数据库时,通过指定查询条件,让数据库返回我们需要展示的数据。分页功能的核心要素:当前页。用户通过点击上一页或者下一页或者页码产生,客户端通过get参数方式传递到服务器端。总页数。根据总页数判断当前页是否是最后一页,根据...

2020-01-06 19:14:28 284

原创 web前端 | 博客(六)展示用户信息

展示用户信息从数据库中获取数据当访问用户列表页面时,要先在用户列表页面对应的路由处理函数中,将所有的用户信息从数据库中查出来。查询出来后,再使用res.render()渲染用户列表页面模板,并且将查询数据传递到模板中展示出来。此后,再去做文章列表的分页功能。route文件夹下的admin.js中,有一个创建用户列表的路由,在它所对应的路由处理函数文件userPage.js中,从数据库查询...

2020-01-06 18:07:21 1593

原创 web前端 | 博客(五)新增用户功能

新增用户功能为新增用户按钮添加链接,点击新增用户按钮切换到新增用户界面在服务器端添加一个链接对应路由,在路由处理函数中渲染新增用户模板在新增用户界面,需要为新增用户表单指定请求地址,当点击提交按钮时,将表单提交到这个地址;还需要为表单指定请求方式(Post,属于向数据库插入数据的操作);还需要为每一个表单项指定name属性,在服务器端通过name属性接收客户端传递过来的请求参数。当前客户端...

2020-01-06 17:37:15 1483

原创 web前端 | 博客(四)优化代码

优化代码分离app.js中的功能代码由于只想在app.js中引入一些模块,做一些基础的配置工作,并不想把实现具体功能的代码写在这个文件中,所以要把功能代码从app.js文件中分离出去。例如,把app.use('/admin', 请求处理函数)中app.use()保留,而把第二个参数,即请求处理函数,分离出去。在blog文件夹下新建一个middleware的文件夹,再在这个文件夹之下新建一个...

2020-01-05 15:05:15 128

原创 web前端 | 博客(三)登录拦截和重定向

与登陆与否相关的界面登陆成功后的重定向登陆后跳转页面,需要实现页面的重定向,在express中实现重定向的方法是res.redirect('重定向的地址'),把密码比对成功后的逻辑修改为 //将用户名存储在请求对象中 req.session.username = user.username; //重定向到用户列表页面 ...

2020-01-05 14:16:38 995

原创 web前端 | 博客(二)登录功能

实现登录功能创建用户集合,初始化用户连接数据库创建用户集合初始化用户为登录表单项设置请求地址,请求方式(GET方法会将参数放到地址栏中,不隐蔽,要用POST方法,它将参数放到消息体中,比较隐蔽)以及表单name属性当用户点击登录按钮时,客户端验证用户是否填写了登录表单如果其中一项没有输入,则阻止表单提交服务器端请求接收参数,验证用户是否填写了登录表单(有时候客户端的js代码...

2020-01-05 12:35:43 1182 1

原创 web前端 | 博客(一)项目搭建

项目搭建新建文件publicviewsmodelroute然后npm init -y安装所需要的模块npm install express mongoose art-template express-art-template添加app.js使用express构建服务器app.js是项目入口文件const express = require('express');//创建网...

2020-01-04 10:52:01 339

原创 debug | vs code 更新失败

手动移动了vs code的文件夹,当vs code需要更新的时候,会出现这样的问题如图找到Temp文件夹下的与上面那个日志文件同级的vscode-update-user-x64文件夹,打开,里面有一个名字很长的exe文件复制到安装vs code的文件夹里(与Code.exe同级)双击运行就可以更新了。但是安装路径默认是C盘,不会覆盖原来的文件。参考资料:VS Code安装更新失败解决方案...

2019-12-28 18:12:29 240

原创 angular8 | 网易云音乐项目实战(一)

angular8 网易云音乐项目实战(一)视频教程原地址:https://www.bilibili.com/video/av70355308本文为学习笔记从github上clone相关源码css样式:https://github.com/lycHub/ng-wyy网易云音乐接口:https://github.com/Binaryify/NeteaseCloudMusicApi编译运...

2019-12-26 19:08:10 1153

原创 PAT | A 1002 for Polynomials

This time, you are supposed to find A+B where A and B are two polynomials.Input Specification:Each input file contains one test case. Each case occupies 2 lines, and each line contains the informati...

2019-08-28 13:19:40 73

原创 PAT | A 1001 Format

Calculate a+b and output the sum in standard format – that is, the digits must be separated into groups of three by commas (unless there are less than four digits).Input Specification:Each input fil...

2019-08-28 12:27:48 76

原创 debug | IDEA 在空包中新建子包,如何使两个包不合并

背景在com空包中新建了一个叫hxy的子包,然而hxy自动被合并到com中去了教练这和教程上说的不一样!debug过程(虽然这个也不算bug啦但是为了格式整齐x)猜想显示问题?查找资料idea如何在包下建立子包(解决空包自动隐藏问题)点击那个齿轮,会有一个Hide EmptyMidd Packages,就是自动隐藏空包,默认是打了勾的,点一下取消即可。最终解决方法这个版...

2019-05-13 14:54:43 2415 1

原创 debug | Failed to create a Maven project: 'G:/***' already exists in VFS.

背景非常普通地在IDEA新建了一个MAVEN的webapp项目,然后在项目新建后,不存在src文件夹,并且报错Failed to create a Maven project: 'G:/***' already exists in VFS.Debug过程猜想可能是因为之前建过一次相同名字的项目,虽然后来删除了,但依然留下了一些文件,导致新建同名项目时出现问题。参考资料 Maven:...

2019-05-13 14:18:02 179

原创 数据结构 | PTA 编程题 01-复杂度2 Maximum Subsequence Sum

Given a sequence of K integers { N​1​​, N​2​​, …, N​K​​ }. A continuous subsequence is defined to be { N​i​​, N​i+1​​, …, N​j​​ } where 1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence w...

2019-05-12 14:41:55 372

原创 数据结构 | PTA 编程题 01-复杂度1 最大子列和问题

给定K个整数组成的序列{ N​1​​, N​2​​, …, N​K​​ },“连续子列”被定义为{ N​i​​, N​i+1​​, …, N​j​​ },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。...

2019-05-12 13:39:22 188

原创 数据结构 | PTA 函数题 04-树7 二叉搜索树的操作集

本题要求实现给定二叉搜索树的5种常用操作。函数接口定义:BinTree Insert( BinTree BST, ElementType X );BinTree Delete( BinTree BST, ElementType X );Position Find( BinTree BST, ElementType X );Position FindMin( BinTree BST );...

2019-05-12 13:16:14 343

原创 数据结构 | PTA 函数题 02-线性结构1 两个有序链表序列的合并

题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。函数接口定义:List Merge( List L1, List L2 );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* ...

2019-05-11 22:42:38 390

原创 数据结构 | PTA 函数题 01-复杂度3 二分查找

本题要求实现二分查找算法。函数接口定义:Position BinarySearch( List L, ElementType X );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last; ...

2019-05-11 22:34:34 191

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除