花了两天时间用 Spring MVC 写了个博客网站

2015-09-28 18:44:09 +08:00
 raysmond

之前用 PHP 和 Ruby on Rails 写过网站,最近在学习 Spring 框架,顺便写了一个博客网站替代原来我比较旧的网站。初学 Spring MVC ,这是我用它撸的第一个网站。主要用的到的技术有:

我的博客网站是 http://raysmond.com
网站所有源代码开源在 Github 上面, https://github.com/Raysmond/SpringBlog
初学 Spring ,很多写法可能不符合 best practice ,希望有人能给一些建议。

网站部署在阿里云 ECS 上,顺便说一下 Java 的网站挺耗内存啊。
这个开源项目其实我主要是想学习 Spring 以及 Java 后台开发的一些技术,练练手。也希望有兴趣的朋友和我一起来开发晚上这个项目。把你认为最牛逼的技术和架构在这样一个最小的博客系统里面体现出来。

花了两天踩各种 Java 写网站的坑,但是也学习到一些知识。这个项目的目的不是写这个网站,而是学习。如果只是写这样一个博客网站的话,用 RoR 几个小时就可以搞定了。

21225 次点击
所在节点    分享创造
59 条回复
raysmond
2015-09-28 18:46:43 +08:00
我喜欢它是一个很小很轻量的项目,但是技术上五脏俱全,更多体现 Best Practice 。
broadliyn
2015-09-28 19:50:05 +08:00
markdown service 这个,其实 markdownToHtml 可以独立放在一个 Util 类中做静态方法的。
raysmond
2015-09-28 19:58:05 +08:00
@broadliyn 这是一种常见的方法。我做成 service 主要是想用 service/interface 这种 Spring 里面常用的方法。我看了 Spring 的 Sagan 源码,很多类似于工具类的都做成了 service 。不过这个 service 和常用与操作 model 的 service 有点混淆。也许用一个 @util 或 @helper 这种命名好一点。
WildCat
2015-09-28 20:00:53 +08:00
内存占用多少
raysmond
2015-09-28 20:05:26 +08:00
@WildCat 用 Jetty9 跑起来大概用了接近 1G ,加上 MySQL , Redis , Nginx 等要 1.5G 以上吧。
Kilerd
2015-09-28 20:11:39 +08:00
这样式看上去 好熟悉,不就是 GitHub 上开项目介绍网站的第一个模板吗?
Gonster
2015-09-28 20:12:13 +08:00
jvm 参数没改吗,应该用不了这么多_(:з」∠)_
raysmond
2015-09-28 20:13:40 +08:00
@Gonster 什么都用默认的,刚好有一台阿里云够用。对于修改参数,节省内存有什么好的文章可以推荐看看么?
raysmond
2015-09-28 20:14:53 +08:00
@Kilerd 其实不是,我直接在 Bootstrap 自己写的,也就是 CSS 写了 100 多行,只不过头部的大背景和那个开源项目的差不多,所以错以为是同一个。
Gonster
2015-09-28 20:31:33 +08:00
Gonster
2015-09-28 20:32:10 +08:00
@raysmond 忘了点回复..
raysmond
2015-09-28 20:35:37 +08:00
@Gonster 谢谢,我看看。
WildCat
2015-09-28 20:46:44 +08:00
@raysmond OMG ,比 Rails 还吃内存
raysmond
2015-09-28 20:47:47 +08:00
@WildCat 是啊,没怎么调。要跑 Jvm , Jetty , MySQL , redis 一堆东西。
zhicheng
2015-09-28 20:48:52 +08:00
TextArea.com 欢迎大家~
zonghua
2015-09-28 20:51:31 +08:00
我写了两年都没写出来, java 那套框架太烦啦
phptester
2015-09-28 20:55:05 +08:00
http://raysmond.com/about 页面中
Little about Mongodb, Redis, Python, Go, JavaScript, SASS, Angularjs
从语法上来说这个句子好像表达的是否定的意思
raysmond
2015-09-28 20:55:49 +08:00
@zonghua JavaEE 那一套太烦了,我也不写 Servlet 。 Spring 框架和 Play 框架比较人性化一点,符合日常 MVC 开发的方式。 Spring 的 AOP 和 DI 解耦,写起来也很方便。不过还是没有我用 Rails 来得方便。
raysmond
2015-09-28 20:57:17 +08:00
@phptester 我只是想表达我会一点这些玩意,不熟练。你觉得应该怎么写?
HentaiMew
2015-09-28 20:58:38 +08:00
原本打了一大堆又不想发了。。。
说得简洁点:
1.你并没有模块化项目结构,构建工具只是用来拉取依赖。那么 gradle 意义何在,还不如 maven 方便
2.访问文章的参数居然是一个 ID ,估计还是自增的主键....这样是非常不好的,一是如果以后有分表需求,
二是数据迁移产生变动可能会产生一大堆死链,三是 URL 不够语义化,
什么样是语义化的 URL 参数,
例如: https://www.quora.com/How-do-I-fix-srt-log-file-error-Windows-10
3.一个原本就很小访问量的博客,为什么要缓存文章,更应该缓存的是博客首页的文章”列表“,以及类似热门文章热门评论的那些数据。

然后就是 1GB 内存半点不夸张...毕竟你用了 spring ,凡是用了 spring 再稍稍多一点的注入项,启动不上 G 我都觉得有点奇怪
(当然我说的是 java8 ,在 jvm 上加参数优化其实已经不提倡了,并且一部分已经被废弃)
然后就是 jetty 的确比 tomcat 占用内存小,但是相比项目导致的内存占用根本不值一提, jetty 更大的优势的整个 servlet 运行环境的封装。

话说..我的一些项目如果完整的在一台机跑起来 8GB 都有点勉强

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/224315

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX