资源库建设网站微信平台制作网站开发

web/2025/10/3 10:43:20/文章来源:
资源库建设网站,微信平台制作网站开发,建立站点的作用,开源网站系统【JavaEE】进阶 个人博客系统#xff08;4#xff09; 文章目录 【JavaEE】进阶 个人博客系统#xff08;4#xff09;1. 增加博文1.1 预期效果1.1 约定前后端交互接口1.2 后端代码1.3 前端代码1.4 测试 2. 我的博客列表页2.1 期待效果2.2 显示用户信息以及博客信息2.2.1… 【JavaEE】进阶 · 个人博客系统4 文章目录 【JavaEE】进阶 · 个人博客系统41. 增加博文1.1 预期效果1.1 约定前后端交互接口1.2 后端代码1.3 前端代码1.4 测试 2. 我的博客列表页2.1 期待效果2.2 显示用户信息以及博客信息2.2.1 约定前后端交互接口2.2.2 后端代码2.2.3 前端代码2.2.4 测试 2.3 删除文章2.3.1 约定前后端交互接口2.3.2 后端代码2.3.3 前端代码2.3.4 测试 2.4 退出登录2.4.1 约定前后端交互接口2.4.2 后端代码2.4.3 前端代码2.4.4 测试 3. 修改文章3.1 页面初始化3.1.1 约定前后端接口3.1.2 后端代码3.1.3 前端代码3.1.4 测试 3.2 修改文章3.2.1 约定前后端交互接口3.2.2 后端代码3.2.3 前端代码3.2.4 测试 4. 博客详情页4.1 期待效果4.2 约定前后端交换接口4.3 后端代码4.4 前端代码4.5 测试 【JavaEE】进阶 · 个人博客系统4 1. 增加博文 1.1 预期效果 用户在网页中编写标题和正文点击提交选择 输入摘要取消继续编写文章 提交成功后选择 继续写文章返回“我的博客列表页” 1.1 约定前后端交互接口 后端 /art/publish将前端传递过来的数据保存到数据库返回受影响行数 前端 /art/publish标题正文摘要当前登录用户sessionid 1.2 后端代码 controller层 由于经常需要对字符串进行检查我封装了一个方法 为什么前端检验完了后端还检验呢 千万别相信“前端”因为这个“前端”可能不是浏览器正常的流程也可能是通过postman等方式发送的请求这个就可以绕开前端代码的校验~不用担心因为 public class APPUtils {/*** 字符串全部都有长度才返回true* param strings* return*/public static boolean hasLength(String... strings) {for(String x : strings) {if(!StringUtils.hasLength(x)) {return false;}}return true;} }修改 RequestMapping(/publish) public CommonResult publish(RequestBody ArticleInfo articleInfo, HttpServletRequest request) {// 1. 获取当前用户详信息UserInfo userInfo SessionUtils.getUser(request);articleInfo.setUid(userInfo.getId());articleInfo.setPhoto(userInfo.getPhoto());// 2. 校验参数if(!APPUtils.hasLength(articleInfo.getContent(), articleInfo.getSummary(), articleInfo.getTitle())) {return CommonResult.fail(-1, 非法参数);}// 3. 提交到数据库中int rows articleService.publish(articleInfo);// 4. 返回return CommonResult.success(rows); }service层 Autowired private ArticleMapper articleMapper;public int publish(ArticleInfo articleInfo) {return articleMapper.insert(articleInfo); }mapper层 Insert(insert into articleinfo (title, content, summary, uid, photo) values (#{title}, #{content}, #{summary}, #{uid}, #{photo})) int insert(ArticleInfo articleInfo);拦截器配置 拦截不排除此接口 1.3 前端代码 function publish() {var title jQuery(#text);var content jQuery(#content);// 1. 参数校验if (title.val().trim() ) {alert(标题不能为空);title.focus();return false;}if (content.val().trim() ) {alert(正文不能为空);content.focus();return false;}// 2. 输入摘要var summary prompt(请输入摘要);if(summary ) {return false;}// 3. 发送请求jQuery.ajax({url: /art/publish,method: POST,contentType: application/json; charsetutf8,data: JSON.stringify({title: title.val().trim(),content: content.val().trim(),summary: summary.val().trim(),}),// 3. 处理响应success: function (body) {if (body.code 200 body.data 1) {if(confirm(发布成功请问是否继续创作)) {location.href location.href;}else {location.href myblog_lists.html;}} else {alert(发布失败 body.msg);}},}); }1.4 测试 为了避免写文章过程中session过去我将session设置为永不过期 2. 我的博客列表页 2.1 期待效果 左侧窗口显示用户信息右侧窗口显示用户创作的博文简介 标题时间以及阅读量摘要查看正文修改文章删除文章按钮 右上角 点击主页跳转到所有人的博客列表页点击写博客跳转到博客创作页点击退出登录后端删除登录记录跳转到登录页面 2.2 显示用户信息以及博客信息 2.2.1 约定前后端交互接口 后端 /article/get_mylist通过当前登录用户查询博客返回用户信息以及博客信息的组合 前端 /article/get_mylistget接受响应投喂给页面 2.2.2 后端代码 controller层 RequestMapping(/get_mylist) public CommonResult getMylist(HttpServletRequest request) {// 1. 获取当前登录用户UserInfo userInfo SessionUtils.getUser(request);// 2. 通过此用户发布的所有文章ListArticleInfo list articleService.getListByUid(userInfo.getId());// 3. 标题 / 正文太长 处理ArticleUtils.substringList(list);// 4. 返回给前端MapString, Object map new HashMap();map.put(user, userInfo);map.put(list, list);return CommonResult.success(map); }// 文章工具类 public class ArticleUtils {//标题截取长度private static final int _TITLE_LENGTH 40;//摘要截取长度private static final int _SUMMARY_LENGTH 160;public static void substringList(ListArticleInfo list) {if(list ! null list.size() ! 0) {// 并发处理 list 集合list.stream().parallel().forEach((art) - {//标题截取if(art.getTitle().length() _TITLE_LENGTH) {art.setTitle(art.getTitle().substring(0, _TITLE_LENGTH) ...);}//摘要截取if(art.getSummary().length() _SUMMARY_LENGTH) {art.setSummary(art.getSummary().substring(0, _SUMMARY_LENGTH) ...);}});}} }service层 public ListArticleInfo getListByUid(int uid) {return articleMapper.getListByUid(uid); }mapper层 Select(select * from articleinfo where uid #{uid} order by id desc) ListArticleInfo getListByUid(Param(uid) int uid); //越晚发布排在越前拦截器配置 不排除此接口 时间格式配置 可以接受数据库时间的类型一般是 DateLocalDataTimeTimeStamp 网络资料 LocalDateTime和Date是Java中表示日期和时间的两种不同的类它们有一些区别和特点。 类型LocalDateTime是Java 8引入的新类型属于Java 8日期时间APIjava.time包。而Date是旧版Java日期时间APIjava.util包中的类。 不可变性LocalDateTime是不可变的类型一旦创建后其值是不可变的。而Date是可变的类型可以通过方法修改其值。 线程安全性LocalDateTime是线程安全的多个线程可以同时访问和操作不同的LocalDateTime实例。而Date是非线程安全的如果多个线程同时访问和修改同一个Date实例可能会导致不可预期的结果。 时间精度LocalDateTime提供了纳秒级别的时间精度可以表示更加精确的时间。而Date只能表示毫秒级别的时间精度。 时区处理LocalDateTime默认不包含时区信息表示的是本地日期和时间。而Date则包含时区信息它的实际值会受到系统默认时区的影响。 而TimeStamp就是long类型的时间戳的包装~ 对于时间格式的控制 json的构造本身是通过getter去获取的所以可以重写getter来控制显示效果 全局配置 但是这只适合jdk8之前的Date类型 局部配置 对于时间类型的属性是可以通过注解JsonFormat来配置的 2.2.3 前端代码 左 右 jQuery.ajax({type: get,url: /art/get_mylist,success: function (body) {if (body.code 200) {// 1. 改变左侧窗口jQuery(.card img).attr(src, body.data.user.photo);jQuery(.card h3).text(body.data.user.name);if(body.data.user.git.trim() ! ) {jQuery(.card a).attr(href, body.data.user.git);}jQuery(#count).text(body.data.list.length);// 2. 显示文章构造博客html元素for (var blog of body.data.list) {console.log(body.title);var art div classblogdiv classtitle blog.title /div;art div classdate blog.createtime 阅读量 blog.rcount /div;art div classcontent blog.summary /div;art div classthing;art a hrefblog_detail.html?aid blog.id 查看正文/a;art a hrefmyblog_update.html?aid blog.id 修改文章/a;art div iddel stylebackground-color: rgba(255, 0, 0, 0.6) οnclickdel( blog.id )删除文章/div;art /div/div;// 3. 追加到div.articlejQuery(.article).append(jQuery(art));}}}, });你也可以以标签为单位去设置属性以及嵌套这有逻辑的构建而我这里是单纯的拼接字符串用jQuery(str)构造html元素 2.2.4 测试 2.3 删除文章 2.3.1 约定前后端交互接口 后端 /art/delete根据当前登录用户id和删除文章对应的作者id判断是否有权限删除有才能删除返回受影响行数 前端 /art/deletepostJSONid文章id如果受影响行数为1刷新页面 2.3.2 后端代码 controller层 RequestMapping(/delete) public CommonResult delete(RequestBody ArticleInfo articleInfo, HttpServletRequest request) {// 1. 获取当前登录用户的idint uid SessionUtils.getUser(request).getId();// 2. 设置到文章对象里articleInfo.setUid(uid);// 3. 删除int rows articleService.delete(articleInfo);// 4. 返回return CommonResult.success(rows); }service层 public int delete(ArticleInfo articleInfo) {return articleMapper.delete(articleInfo); }mapper层 Delete(delete from articleinfo where id #{id} and uid #{uid}) // 查找文章和检测权限在一步搞定 int delete(ArticleInfo articleInfo);拦截器配置 拦截不排除 2.3.3 前端代码 function del(aid) {// 0. 参数校验if (parseInt(aid) NaN || aid 0) {return false;}jQuery.ajax({method: post,url: /art/delete,contentType: application/json; charsetutf8,data: JSON.stringify({id: aid,}),success: function (body) {if (body.code 200 body.data 1) {location.href location.href;} else {alert(删除失败\n);}},}); }2.3.4 测试 2.4 退出登录 2.4.1 约定前后端交互接口 后端 /user/logout根据当前用户进行删session操作无返回值 前端 /user/logouta标签的get 2.4.2 后端代码 controller层 RequestMapping(/logout) public void logout(HttpServletRequest request, HttpServletResponse response) throws IOException {// 设置为null也可以但这是因为我们的判断原理的原因//SessionUtils.setUser(request, null);// 调用工具类里的注销方法SessionUtils.remove(request);response.sendRedirect(blog_login.html); }/*** 注销* param request*/ public static void remove(HttpServletRequest request) {HttpSession session request.getSession(false);if(session ! null session.getAttribute(ApplicationVariable.SESSION_KEY) ! null) {session.removeAttribute(ApplicationVariable.SESSION_KEY);} }拦截器配置 拦截不排除 2.4.3 前端代码 a href/user/logout退出登录/a2.4.4 测试 3. 修改文章 预期效果就是原有数据显示出来供用户修改 3.1 页面初始化 3.1.1 约定前后端接口 后端 /art/get_art根据uid和aid查询文章返回文章信息 前端 /art/get_artpostjsonaid将数据投喂到网页 3.1.2 后端代码 controller层 RequestMapping(/get_art) public CommonResult getArt(RequestBody ArticleInfo articleInfo, HttpServletRequest request) {// 1. 获取当前登录用户的idint uid SessionUtils.getUser(request).getId();// 2. 设置到文章对象里articleInfo.setUid(uid);// 3. 查询文章ArticleInfo art articleService.getArt(articleInfo);// 4. 返回(查询不到一个对象是null如果查询不到对象集合返回的是空集合)return art null ? CommonResult.fail(-1, 查询不到) : CommonResult.success(art); }service层 public ArticleInfo getArt(ArticleInfo articleInfo) {return articleMapper.getArticleCheck(articleInfo); }mapper层 Select(select * from articleinfo where id #{id} and uid #{uid}) ArticleInfo getArticleCheck(ArticleInfo articleInfo);//检查权限的查询文章Select(select * from articleinfo where id #{id}) ArticleInfo getArticle(ArticleInfo articleInfo);拦截器配置 拦截不排除 3.1.3 前端代码 scriptvar aid getParamValue(aid);// 1. 校验参数function init() {if (aid null || aid 0) {alert(非法参数);location.href myblog_lists.html;return false;}// 2. 查询文章jQuery.ajax({url: /art/get_art,method: post,contentType: application/json; charsetutf8,data: JSON.stringify({id: aid,}),success: function (body) {if (body.code 302) {location.href body.msg;return false;}if (body.code 200) {jQuery(#text).val(body.data.title);jQuery(#content).val(body.data.content);jQuery(#summary).val(body.data.summary);//用隐藏输入框保存摘要信息} else {alert(发布失败 body.msg);}},});}init(); /script注意 如果直接写代码的话而不是调用方法默认页面跟代码一起加载而调用方法是页面加载后调用此init方法 如果不采取这种方式的话会导致请求返回的页面被拦截器拦下 为什么还是用json而不是用querystring直接发送请求 习惯吧因为json比较通用如果还需要其他信息querystring不方便 修改页跟添加页是一样的为什么不重用 重用会导致一些没有必要的判断不符合单一设计原则麻烦/乱/开发不舒适耦合度高… 3.1.4 测试 3.2 修改文章 3.2.1 约定前后端交互接口 后端 /art/update接受文章数据返回受影响行数 前端 /art/updatepostjson上传文章数据成功则跳转到我的博客列表页 3.2.2 后端代码 controller层 RequestMapping(/update) public CommonResult update(RequestBody ArticleInfo articleInfo, HttpServletRequest request) {// 0. 确认用户int uid SessionUtils.getUser(request).getId();articleInfo.setUid(uid);// 1. 校验参数if(!APPUtils.hasLength(articleInfo.getContent(), articleInfo.getSummary(), articleInfo.getTitle())) {return CommonResult.fail(-1, 非法参数);}// 2. 修改int rows articleService.update(articleInfo);// 3. 返回return CommonResult.success(rows); }service层 public int update(ArticleInfo articleInfo) {return articleMapper.updateArticle(articleInfo); }mapper层 必须是有权限才能修改更新时间修改为当下 Update(update articleinfo set content #{content}, title #{title}, summary #{summary}, updatetime now() where id #{id} and uid #{uid}) int updateArticle(ArticleInfo articleInfo);拦截器配置 拦截不排除 3.2.3 前端代码 function update() {if (aid null || aid 0) {alert(非法参数);location.href myblog_lists.html;return false;}var title jQuery(#text);var content jQuery(#content);// 1. 参数校验if (title.val().trim() ) {alert(标题不能为空);title.focus();return false;}if (content.val().trim() ) {alert(正文不能为空);content.focus();return false;}// 2. 输入摘要var summary prompt(请输入摘要, jQuery(#summary).val());if (summary.trim() ) {return false;}jQuery(#summary).val(summary);// 3. 发送请求jQuery.ajax({url: /art/update,method: POST,contentType: application/json; charsetutf8,data: JSON.stringify({id: aid,title: title.val().trim(),content: content.val().trim(),summary: summary.trim(),}),// 3. 处理响应success: function (body) {if (body.code 302) {location.href body.msg;return false;}if (body.code 200 body.data 1) {location.href myblog_lists.html;} else {alert(修改失败 body.msg);}},}); }3.2.4 测试 4. 博客详情页 4.1 期待效果 根据是否登录改变导航栏根据querystring中的aid显示对应的博文和作者信息每次访问成功阅读量加1本次显示是加1之前作者的文章总数通过后端计算正文以html的样式渲染出来 这样的复杂查询可以用到并发编程 【JavaEE】Callable接口(NO.6线程创建方法)-JUC的常见类-与线程安全有关集合类_s:103的博客-CSDN博客用有返回值的线程创建方式获取的时候若未结束等待… 4.2 约定前后端交换接口 后端 /art/detail通过aid找到文章通过文章uid找到作者查询总文章数通过aid修改文章阅读量返回 “login”true/falsetrue代表登录中“count”文章数“user”用户“art”文章 前端 /art/detailjsonaid接受响应投喂给代码 4.3 后端代码 controller层 查询文章信息校验文章是否存在根据uid查询用户总文章数的任务根据uid查询用户信息的任务根据aid更新阅读量的任务线程池执行任务构造响应数据并返回 Autowired private ArticleService articleService; Autowired private UserService userService; RequestMapping(/detail) public CommonResult detail(RequestBody ArticleInfo articleInfo, HttpServletRequest request) throws ExecutionException, InterruptedException {// 1. 查询文章信息ArticleInfo art articleService.getArtByAid(articleInfo);// 2. 校验文章是否存在if(art null) {return CommonResult.fail(-1, 非法参数!);}// 3. 根据uid查询用户总文章数的任务FutureTaskInteger task1 new FutureTaskInteger(() - {return articleService.getArtNumberByUid(art.getUid());});// 4. 根据uid查询用户信息的任务FutureTaskUserInfo task2 new FutureTaskUserInfo(() - {return userService.getUserByUid(art.getUid());});// 5. 根据aid更新阅读量的任务FutureTaskInteger task3 new FutureTaskInteger(() - {return articleService.incrementRCount(art.getId());});// 6. 线程池执行任务APPUtils.THREAD_POOL.submit(task1);APPUtils.THREAD_POOL.submit(task2);APPUtils.THREAD_POOL.submit(task3);// 7. 构造响应数据并返回MapString, Object map new HashMap();map.put(login, SessionUtils.getUser(request) ! null);map.put(count, task1.get());map.put(user, task2.get());map.put(art, art);return CommonResult.success(map); }service层 ArticleService public int getArtNumberByUid(int uid) {return articleMapper.getArtNumberByUid(uid); }public int incrementRCount(int aid) {return articleMapper.incrementRCount(aid); }UserService public UserInfo getUserByUid(int uid) {return userMapper.getUserByUid(uid); }mapper层 ArticleMapper Select(select count(*) from articleinfo where uid#{uid}) int getArtNumberByUid(Param(uid) int uid);Update(update articleinfo set rcount rcount 1 where id #{aid}) int incrementRCount(Param(aid) int aid);UserMapper Select(select * from userinfo where id #{uid}) UserInfo getUserByUid(Param(uid) int uid);拦截器配置 排除拦截editor.md是个目录要排除整个目录才对不然后面渲染不上去之前可以渲染是因为我们处于登录状态~因为详情页不需要登录~ 4.4 前端代码 导航栏 网页图标 右侧用户卡片 右侧文章信息 var aid getParamValue(aid); function init() {if (aid null || aid 0) {alert(非法参数);return false;}jQuery.ajax({method: post,url: /art/detail,contentType: application/json; charsetutf8,data: JSON.stringify({id: aid,}),success: function (body) {if (body.code 200) {// 1. 导航栏显示if (body.data.login false) {jQuery(#icon).attr(href, img/logo2.png);jQuery(.navigation img).attr(src, img/logo2.png);jQuery(.navigation .space).css(width, 75%);jQuery(.title).text(未登录);jQuery(#add).hide();jQuery(#logout).text(登录);jQuery(#logout).attr(href, blog_login.html);}// 2. 文章数显示jQuery(#count).text(body.data.count);// 3. 用户信息显示jQuery(.card img).attr(src, body.data.user.photo);jQuery(.card h3).text(body.data.user.name);if (body.data.user.git.trim() ! ) {jQuery(.card a).attr(href, body.data.user.git);}// 4. 文章信息显示jQuery(.article h3).text(body.data.art.title);jQuery(.article .date).text(body.data.art.createtime 阅读量 body.data.art.rcount);editormd.markdownToHTML(pc, {markdown: body.data.art.content,});} else {alert(查看失败 body.msg);}},}); } init();4.5 测试 文章到此结束谢谢观看 可以叫我 小马我可能写的不好或者有错误但是一起加油鸭 代码myblog_system/src · 游离态/马拉圈2023年9月 - 码云 - 开源中国 (gitee.com)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

旅游网站建设案例分析北京个人制作网站有哪些

本文深入研究Vuex,一个Vue.js状态管理库。我们将介绍创建它是为了解决的问题、其背后的核心概念、如何设置它,当然,还将在每一步中使用代码示例。 Vuex是一个由Vue团队构建的状态管理库,用于管理Vue.js应用程序中的数据。它提供了一种集中管理跨应用程序使用的数据的方式,…

没有数据库的网站深圳市建设交易宝安

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用,人工智能…

优秀的html5网站做区块链在哪个网站

目录 总体流程介绍 1. 从 Kafka 读取数据 2. 使用 UDF 进行数据解析 3. 将

网站设计公司网站设计公司网站经营性备案难不难

目录 📝认识文件 🚩树型结构组织 和 目录 🎈绝对路径和相对路径 🚩文件类型 📝文件系统操作 🎈File 概述 🎈File类的使用 1. 绝对路径 vs 相对路径 2. 路径分隔符 3. 静态成员变量 4…

网站搭建平台选哪个便宜网站建设哪家好

一直有一个做机器人的梦,所以从去年起放弃了十多年的软件开发,开始进入嵌入式领域,先后在.Net Micro Framework 项目中完成了Ti DM335上的GPIO、I2C、USB等驱动,方浅浅地了解了什么叫嵌入式开发。 对非软件也非硬件出身的我&#…

刷赞网站怎么做的外贸网络推广招聘

---恢复内容开始--- 之前在写项目的时候,发现原本想让父子元素之间加点边距,却让父元素产生了margin-top,于是百度之后发现了原因。 在css2.1盒模型中 In this specification, the expression collapsing margins means that adjoining ma…

如何选择企业建站公司jsp网站建设美食

当然,理解纯CSS选择器(CSS Selectors)对于进行UI自动化测试非常重要。CSS选择器允许您通过元素的属性、层级关系、类名、ID等来精准定位页面上的元素。下面我将详细讲解CSS选择器的常见用法,并结合您的需求提供具体的示例。 1. 基…

做h5动画的素材网站h5海报是什么意思

LOL手游国际服已经于10月27日开服(苹果为10月28日开服),LOL手游官方为大家准备了开服活动。各位玩家可以通过参与活动获得免费皮肤。为了迎接新玩家的到来,LOL手游官方推出了新手活动《WILDRIFTACADEMY》,玩家需要用五天时间完成该活动&#…

制作网站软件免费网站建设是什么意思

Java的方法类似于其他语言如C中的函数,比如我们第一个Java程序 输出Hello,world!中用到一个方法System.out.printfln();这里的printfln()就是一个方法,System是系统类,out是对象。1.什么是方法?方法是语句…

网站后台视频教程wordpress导航自定义

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

购买一个域名能建几个网站室内设计3d效果图用什么软件

Vue3【十二】09Computed计算属性 计算属性 获取全名 这种方式是只读的不能修改 这样定义fullName是一个计算属性&#xff0c;可读可写 案例截图 目录结构 代码 Person.vue <template><div class"person"><h1>我是 Person 组件</h1>姓&…

做网站有哪些苏州网站设计选哪家

在第2章节中&#xff0c;我们介绍了如何通过Spring Boot来实现HTTP接口&#xff0c;以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是&#xff0c;这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点&#xff0c;…

石家庄站列车时刻表手机上怎么设计logo

在PyTorch中&#xff0c;state_dict是一个非常重要的概念&#xff0c;它是一个包含模型参数的字典对象。每个模型的state_dict都包含了该模型的所有参数&#xff08;权重和偏置等&#xff09;&#xff0c;用于在训练和推理过程中重现模型的内部状态. pytorch 中的 state_dict 是…

企业网站美化牛商网网站做seo好么

软件工程文档 文档是软件开发使用和维护当中必备的资料&#xff0c;文档主要是管理人员、开发人员、操作人员、用户人员之间进行协商沟通的桥梁。 1.可行性分析文档 主要是说明软件在经济上&#xff0c;技术上和市场情景等方面的可行性。根据这个文档&#xff0c;公司判断软件能…

phpnow 新建网站枣强网站建设

连续写了两篇文章&#xff0c;这一篇我想是序的完结篇了。结合用户注册的例子再将他简单丰富一下。在这里只添加一个简单需求&#xff0c;就是用户注册成功后给用户发一封邮件。补充一下之前的代码 public class DomainService {public void Register(User user){if (_userRepo…

个人网站wordpress新闻头条最新消息今天发布

在php中&#xff0c;如何判断[1,0,1]和[ [0, 0, 0],//体质正常 [1, 0, 0],//气虚体质 [0, 1, 0],//血瘀体质 [0, 0, 1],//阴虚体质 [1, 1, 0],//气虚兼血瘀体质 [1, 0, 1],//气虚兼阴虚体质 [0, 1, 1],//血瘀兼阴虚体质 [1, 1, 1],//气虚兼血瘀兼阴虚体质 ];中的第n项相等&…

自己做网站新手入门阿里巴巴外贸网站首页

maven常见问题问答 收藏转载于:https://www.cnblogs.com/shl-2012/p/3530548.html

淄博高端网站企业网站注册官网

在Python中&#xff0c;主函数通常指的是脚本的入口点&#xff0c;也就是当你直接运行一个Python脚本时&#xff0c;会首先执行的函数。在大多数Python脚本中&#xff0c;主函数并不是通过main()这样的函数名来定义的&#xff0c;而是通过检查脚本是作为模块导入还是被直接运行…

湖南网站建设 尖端磐石网络软装设计师招聘

golang内存管理基本是参考tcmalloc来进行的。go内存管理本质上是一个内存池&#xff0c;只不过内部做了很多优化&#xff1a;自动伸缩内存池大小&#xff0c;合理切割内存块。 基本概念&#xff1a; Page&#xff1a;页&#xff0c;一块 8 K大小的内存空间。Go向操作系统申请和…

淘客网站如果做优化更新网站要怎么做呢

Unity的渲染管线&#xff08;Rendering Pipeline&#xff09;负责将游戏场景转化为可以在屏幕上显示的像素。 Unity 提供以下渲染管线&#xff08;官方文档的介绍&#xff09;&#xff1a; 内置渲染管线是 Unity 的默认渲染管线。这是通用的渲染管线&#xff0c;其自定义选项…