谈谈个人网站的建立(一)——建站历史和技术架构

news/2024/5/18 18:00:56/文章来源:https://blog.csdn.net/weixin_30646505/article/details/98171883

首先,帮忙点击一下我的网站http://www.wenzhihuai.com/。谢谢啊,如果可以,GitHub上麻烦给个star,以后面试能讲讲这个项目,GitHub地址https://github.com/Zephery/newblog
大学的时候萌生的一个想法,就是建立一个个人网站,前前后后全部推翻重改了4、5遍,现在终于能看了,下面是首页。

400

由原本的ssh变成ssm,再变成ssm+shiro+lucene,到现在的前后台分离。前台使用ssm+lucene,后台使用spring boot+shiro。其中,使用pagehelper作为分页,lucene用来搜索和自动补全,使用百度统计的API做了个日志系统,统计pv和uv什么的,同时,还有使用了JMX来观察JVM的使用和cpu的使用率,机器学习方面,使用了adaboost和朴素贝叶斯对微博进行分类,有兴趣的可以点点有点意思这个页面。
本文从下面这几个方面来讲讲网站的建立:
1.建站故事与网站架构
2.lucene搜索的使用
3.使用quartz来定时备份数据库
4.使用百度统计api做日志系统
5.使用jmx观察jvm和cpu
6.使用druid来监测数据库
7.使用机器学习对微博进行分析
8.网站性能优化
9.SEO优化

1.建站故事与网站架构

1.1建站过程

起初,是因为学习的时候老是找不到什么好玩而又有挑战性的项目,看着struts、spring、hibernate的书,全都是一些小项目,做了感觉也没啥意义,有时候在博客园看到别人还有自己的网站,特羡慕,最终就选择了自己做一个个人网站。期初刚学的ssh,于是开始了自己的ssh搭建个人网站的行程,但是对于一个后端的人来说,前端是个大问题啊。。。。所以初版的时候差不多全是纯生的html、css、js,至少发博客这个功能实现了,但是确实没法看。前前后后折腾了一个多月,决定推翻重做,到百度看看别人怎么做的。首先看到的是杨青的网站,已经好几年没更新了,前端的代码看起来比较简单,也是自己能够掌握的,但是不够美观,继续找,在模板之家发现了一个高大上的模板。

600

第二版的界面确实是这样的,只是把图片的切换变成了wowslider,也是简单的用bootstrap和pagehelper做了下分页,现在的最终版保留了它的header,然后评论框使用了多说(超级怀念多说)。后端也由原来的ssh变成了ssm,之后加上了lucene来对文章进行索引。之后,随着多说要关闭了,突然之间有很多div都不适应了(我写死了的。。。),再一次,没法看,不想看,一怒之下再次推翻重做,变成了现在这个版本。
最终版本在考虑时,也找了很多模板,影响深刻的是tale和欲思这两个主题,期中,tale使用的是java语言写的,刚知道的那一刻我就没好感了,java后端我是要自己全部写的,tale这个页面简洁但是不够炫,而且内容量太低,可能就只是个纯博客,之后发现了欲思,拓展性强,只可惜没有静态的版本,后台是纯生的PHP(嗯,PHP是世界上最好的语言),看了看,没事,保存网页,前端自己改,后端自己全部重写,最终变成了现在这个版本,虽然拼接的时候各种css、js混入。。。。还好在做网站性能优化的时候差不多全部去掉了。最终版加入redis、quartz、shiro等,还有python机器学习、flask的restful api,可谓是大杂烩了。
页面看着还算凑合,至少不是那种看都看不过去的那种了,但是仔细看看,还是有不少问题的,比如瀑布流,还有排版什么的。只能等自己什么时候想认真学学前端的东西了。
已经部署在腾讯云服务器上,存储使用了七牛云的cdn。

1.2 网站整体技术架构

最终版的技术架构也算是用上了自己大部分所学的内容吧,虽然有些确实还不是非常理解(TT),只能在以后的专研中慢慢加深,技术架构图如下:


awfawefwefwef.png

网站核心主要采用Spring SpringMVC和Mybatis,下图是当访问一篇博客的时候的运行流程,参考了张开涛的博客。

awefaweagregrgbwerbwer.png

运行流程分析
1.浏览器发送http请求。/blogdetail.html?blogid=1。
2.tomcat容器初始化,顺序为context-param>listener>filter>servlet,此时,spring中的bean还没有被注入的,不建议在此处加载bean,网站声明了两个类(IPFilter和CacheControlFilter),IPFilter用来拦截IP,CacheControlFilter用来缓存。
3.初始化Spring。
4.DispatcherServlet->HandlerMapping进行请求到处理的映射,HandlerMapping将“/blogdetail”路径直接映射到名字为“/blogdetail”的Bean进行处理,即BlogController。
5.自定义拦截器,其中BaseIntercepter实现了HandleInterceptor的接口,用来记录每次访问的链接以及后台响应的时间。
6.DispatcherServlet-> SimpleControllerHandlerAdapter,SimpleControllerHandlerAdapter将HandlerExecutionChain中的处理器适配为BlogController。
7.BlogController执行查询,取得结果集返回数据。
8.blogdetail(ModelAndView的逻辑视图名)->InternalResourceViewResolver, InternalResourceViewResolver使用JstlView,具体视图页面在/blogdetail.jsp。
9.JstlView(/blogdetail.jsp)->渲染,将在处理器传入的模型数据(blog=Blog!)在视图中展示出来;
10.返回响应。

1.3 日志系统

日志系统架构如下:


awfawefwefawefwef.png

日志系统曾经尝试采用过ELK,实时监控实在是让人不能不称赞,本地也跑起来了,但是一到服务器,卡卡卡,毕竟(1Ghz CPU、1G内存),只能放弃ELK,采用百度统计。百度统计提供了Tongji API供开发者使用,只是有次数限制,2000/日,实时的话实在有点低,只能统计前几天的PV、UV等开放出来。其实这个存放在mysql也行,不过这些零碎的数据还是放在redis中,方便管理。
出了日志系统,自己对服务器的一些使用率也是挺关心的,毕竟服务器配置太低,于是利用了使用了tomcat的JMX来对CPU和jvm使用情况进行监控,这两个都是实时的。出了这两个,对内存的分配做了监控,Eden、Survivor、Tenured的使用情况。

1.4 【有点意思】自然语言处理

本人大学里的毕业设计就是基于AdaBoost算法的情感分类,学到的东西还是要经常拿出来看看,要不然真的浪费了我这么久努力做的毕业设计啊。构建了一个基本的情感分类小系统,每天抓取微博进行分类存储在MySql上,并使用flask提供Restful API给java调用,可以点击这里尝试(请忽略Google的图片)。目前分类效果不是很明显,准确率大概只有百分之70%,因为训练样本只有500条(找不到训练样本),机器学习真的太依赖样本的标注。这个,只能请教各位路人大神指导指导了。


QQ%E6%88%AA%E5%9B%BE20170825141127.png

总结

断断续续,也总算做了一个能拿得出手仍要遮遮掩掩才能给别人看的网站,哈哈哈哈哈,也劳烦各位帮忙找找bug。前前后后从初学Java EE就一直设想的事也还算有了个了结,期间碰到的坑实在实在太多,甚至中途也停止了三个月的制作(实习太忙)。不过回头一看,貌似自己的技术并没有提升多少啊哈哈哈哈,好神奇,一年前知识广度甚至还多点,现在只是代码的规范化。好好提升自己哈哈哈。谈起写博客这件事,有时候一动笔心里就有别人博客的阴影,别人已经写好了,自己为什么还要写,换个角度?百度一搜,这个角度也有人写了,无奈,深度也比自己广,其实不管怎样以后要多多看书,专研专研,写点更加精品文章。PS:GitHub上求给个Star,以后面试能讲讲这个网站哈哈哈哈,感谢各位。

转载于:https://www.cnblogs.com/w1570631036/p/7412222.html

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

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

相关文章

网站图片优化的十五个原则

现在的网站大量的使用图片,那么这些图片如何优化才好呢?1)在网站设计之初,就先要做好规划,比如背景图片如何使用等等,做到心中有数。2)编辑图片的时候,要做好裁剪,之展示必要的,重要的&#xf…

网站优化之图片

图片应做成响应式、(大尺寸图片建议)使用渐进式JPEG、使用mozJPEG,tinyPNG等工具对图片进行压缩; 压缩工具: http://c7sky.com/kraken-io-image-optimizer.html 这里主要讲类似于bannner等大图优化加载问题; 压缩工具: -TinyPNG和…

网站加速技术

定义:网站加速技术是一个综合的提高网站访问速度的各种技术的总和。 静态数据:css、js、flash之类的数据,变动不大。 动态数据:从数据库查询出来的数据。 (一)页面静态化,可以从某种角度加快网站…

【网站管理5】_讲解网站后台SEO优化和如何修改关键字以及关键词布局

讲解网站后台SEO优化和如何修改关键字以及关键词布局 制作:赖忠标 QQ:392277956 1.打开后台点击左侧边上的栏目,点击最后的系统-系统基本参数-站点设置 如下图 2.上图所改处的关键词 是网站首页的关键词和描述,放在首页处…

wordpress制作独立手机端并绑定域名_【教程】手把手教你如何用Wordpress快速搭建个人网站...

上一篇文章中(【教程前言】WordPress能够为您做什么样的网站),我就跟大家描述过可以用Wordpress大家私人博客,在这篇文章中,我将详细展示如何用Wordpress创建个人博客,整个过程比你想象的更容易&#xff0c…

如何在首页只显示所有子网站的特定通知

我们设置好了在首页显示所有子网站(部门网站)的通知。但是,正常情况下,部门网站中的通知会包括发布到整个公司的通知以及本部门内部的通知。而在首页中显示的应该是针对整个公司的通知,下面我们就来进行一些设置。 在顶…

php网站中找不到指定的数据库,php找不到数据库的解决方法

php找不到数据库的解决方法发布时间:2020-08-21 14:15:38来源:亿速云阅读:79作者:小新这篇文章将为大家详细讲解有关php找不到数据库的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大…

网站互点排名掉了网站互点排名掉了网站互点_葫芦岛seo公司关键词排名突然下降分析...

网站优化过程中,葫芦岛 发现发现有些网站会不时出现关键词百度排名忽然下降的现象,很多SEO人员肯定遇到过。很多行业的网站出现大规模洗牌之际,有站长喜有站长忧。一诺建站公司根据关键词百度排名突降几种现象进行分析及解决办法。1、原本NO.…

网页内存位置访问无效_网站访问速度慢的四大原因是什么?

很多企业的网站都是做了百度推广的,投下了大量的广告引流费用,如果网站访问速度很慢,导致网站收益不好就比较冤枉了。今天小编将会介绍几种常见的引起网站访问速度比较慢的原因。原因一:服务器配置问题服务器内存空间小&#xff0…

树莓派上的lnmp,建立网站

本篇主要记录lnmp的搭建过程&#xff0c;以及遇到的问题。 <时间:2018.2.11开始-18.3.8结束> 使用wordpress 可道云 等开源软件作为网站程序。 网站的运行环境是lnmp&#xff0c;它是 linux nginx mysql php的缩写。 注意: &#xff08; 首先: nginx安装完成后网页可以是…

初学者福音——10个最佳APP开发入门在线学习网站

2019独角兽企业重金招聘Python工程师标准>>> 根据Payscale的调查显示&#xff0c;现在的APP开发人员的年薪达到&#xff1a;$66,851。这也是为什么那么多初学的开发都想跻身到APP开发这行业的主要原因之一。每当你打开App Store时候&#xff0c;看着琳琅满目的APP&a…

Flask开发微电影网站(二)

1.安装数据库连接依赖包 pip install flask-sqlalchemy 2.创建movie数据库 在CentOS虚拟机&#xff0c;进入MaridDB数据库提示符&#xff0c;创建movie数据库 create database movie 3.定义MaridDB数据库连接 在app目录下的__init__.py文件中添加以下内容 # _*_coding:utf-8_*_…

一步一步SharePoint 2007之十七:解决实现Form认证后无法再用SharePoint Designer编辑网站的问题...

值得提一下的是&#xff0c;或许Microsoft公司还没有考虑到实现Form认证后无法再用SharePoint Designer编辑网站的问题&#xff0c;所以这里讲到的方法并不是彻底的解决问题&#xff0c;而是用一个简单的方法巧妙的避开这个问题。希望SharePoint Designer正式版出来后&#xff…

SEO指南:如何快速制定一份简易的SEO计划

如果你是一家初创公司&#xff0c;这意味着你的资源有限&#xff0c;当然你迫切需要客户&#xff0c;又想低成本的获取潜在的用户&#xff0c;那么最好的选择就是搜索引擎优化&#xff0c;其实它并不复杂&#xff0c;自然搜索流量往往会带来高质量的用户&#xff0c;特别是在付…

实现网站页面的QQ临时会话,分享到空间微博等按钮.

原文:实现网站页面的QQ临时会话&#xff0c;分享到空间微博等按钮.一 qq临时会话要实现qq临时会话首先要到qq在线状态官网开通qq在线状态&#xff0c;其中临时对话也分为加密和未加密。1.1:加密模式<a target"_blank" href"http://sighttp.qq.com/authd?IDK…

国家哀悼日将网站全部变成灰色的代码

国家哀悼日将网站全部变成灰色的代码 html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale1); }PS:这个只是一个CSS里面的滤镜的使用,在FF,Opera下不支持, 假如要全部实现那种效果的话,要手动去改图片等东西. 不过有些站也是这样简单处理了一下而已,如: 百度…

Php将网站推送到手机桌面的方法,网站如何添加主动(实时)推送

前言&#xff1a;很多同学为了更好更快的让百度收录&#xff0c;抓取咱们网站的内容&#xff0c;所以&#xff0c;我们经常需要提交链接&#xff0c;这点很重要&#xff01;下面介绍几种提交的方式&#xff1a;1.主动推送&#xff1a;最为快速的提交方式&#xff0c;建议您将站…

原创内容与高质量链接, 为什么SEO关键词排名还不理想?

随着百度算法不断的更新&#xff0c;很多朋友发现SEO越来越摸不着边际&#xff0c;而且排名很难做起来&#xff0c;经常会遇到这样一种情况&#xff1a;原创内容高质量的外部链接&#xff0c;可关键词排名与收录仍旧没有什么起色&#xff0c;究竟是哪里出了问题呢&#xff1f; …

Vue+thinkJs博客网站(一)之vue多页面应用的webpack3配置

一.项目简介 本项目使用vue作为前端框架&#xff0c;thinkJs作为后端框架&#xff0c;构建个人博客网站&#xff0c;页面分为博客展示和后台管理&#xff0c;主要目的是学习使用thinkJs。现在只完成了主要的博客增删改功能&#xff0c;发现webpack的配置遇到了一些坑&#xff0…

搭建网站必不可少的知识9

接下来我们利用刚才得到的FTP信息进行网站文件的上传。小编以前使用FlashFXP&#xff0c;后来管理的服务器多了&#xff0c;涉及Linux系统和win系统以及虚拟主机&#xff0c;就改用xshell&#xff0c;他没法登录WIN系统远程&#xff0c;但是另外两种登录都包含。现在打开xshell…