花了两天时间用 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 几个小时就可以搞定了。

21282 次点击
所在节点    分享创造
59 条回复
zonghua
2015-09-28 21:00:27 +08:00
@raysmond ASP.NET MVC 都好看,只是只能在 Windows 系统
raysmond
2015-09-28 21:10:51 +08:00
@HentaiMew 首先谢谢。我的重点岂不是网站本身,加缓存什么的设计我只是想学习和应用缓存这一块。至于你说的一些问题我有考虑。

1. 本来也想分模块,向 Sagan 一样分几个小 project ,但是想到这是一个小的应用就懒得分了,不过你说的对,最好分模块设计。

2. 文章 ID 这类的我没有考虑那么多,不过我想还是用 UUID 好一点,直接用裸的数据库自增 ID 是不太好。

3. 缓存设计只是不是为了这个博客,而是为了学习和应用。

4. 内存确实消耗挺大,最初 VPS 只有 1G ,装好 Jetty9 把项目放上去部署启动应用都不够内存了。
Gonster
2015-09-28 21:11:51 +08:00
@HentaiMew 第一次听说加参数不提倡了,能讲一下在哪里看到的吗,我想学习一下
itfanr
2015-09-28 21:11:53 +08:00
网站很漂亮
ToysMall
2015-09-28 21:47:30 +08:00
评估下,这套东西 php 写要多久?一天还是 2 天
raysmond
2015-09-28 21:49:37 +08:00
@ToysMall PHP 好久不写了,如果数量掌握一个 mvc 的框架的话,写起来应该也很快的。比如 Yii 这个框架把很多网站中要用的功能都包装好了。
ajan
2015-09-28 21:54:24 +08:00
想到马上要离开 java web 团队了,心情就会变好了
br00k
2015-09-28 22:24:29 +08:00
最近在用 spring boot ,感觉好方便。
HentaiMew
2015-09-28 22:40:44 +08:00
@Gonster 我并没有在哪里看到谁说不提倡手动优化 JVM... 即使看到了也不可能随便拿出来说的。。

上面其实注意看我说的是 java8 ,也想表示以后的 java.我给你举几个例子:
例如, java8 的 jvm 对 MaxPermSize 、 PermSize 等参数的移除。然而 JVM 上百个参数很多都是关于内存或者是垃圾回收器的,很多人习惯于调整例如年轻代、永久代以及老年代不同内存空间的 GC 参数。
然而 java8 直接移除了永久代取而代之的是具有 metaspace dynamic re-size 能力并且默认无限的”元空间“,杜绝了手动参数才能避免的内存溢出
java7 以来就对新的垃圾回收器 G1 的优化和 java8 新特性支持,其实就是一定程度上再尽可能的自动实现手动调整垃圾回收器的优化方式。
java8 还弃用了一些手动实现的 GC 组合方式,具体我不记得,而且我也不懂那些

然后就是,对于 无法预测 OR 不规律 /活动 的应用场景,无论怎么样手动设置参数都不可能完全”适合“,”过度优化“倒有可能, jvm 原本就是不断的再提升不同场景应用下的自动调整能力。
不断的手动 JVM ”调优“只是限制 java 应用的伸缩性。
就好像程序语言的不同不应该是高性能 WEB 应用的瓶颈,而主要瓶颈是 IO 和并发。然而解决瓶颈的方式是更具实际作用的系统架构优化,而不是花时间测试 AND 调整参数或者换一门程序语言。。

说实际的,就是,即使楼主手动调整了 JVM 堆的大小,可能只是一时起作用的权宜之计,运行中无法避免出现应该有的错误,例如内存不足,或者就因为调整而产生的内存溢出。
evilic
2015-09-28 22:46:55 +08:00
502
sewyu
2015-09-28 22:47:57 +08:00
速度搜搜地,配色也不错 很诱人
raysmond
2015-09-28 22:54:27 +08:00
@sewyu 速度还可以。现在只是做了文章缓存而已。并没有做其他优化,比如压缩合并 js , css ,使用 cdn 等。
raysmond
2015-09-28 22:54:53 +08:00
@evilic 我刚才在部署新的版本。
88250
2015-09-28 22:57:27 +08:00
GitHub 上 Star 数最多的 Java 博客: https://github.com/b3log/solo
Gonster
2015-09-28 23:13:20 +08:00
@HentaiMew java8 这些改动我是知道的,主要是我也在小内存的机器上跑过 spring mvc 的 web 工程,初始内存我并不觉得会消耗这么大。你说的是没错,那也要监控查看过 gc 频率,堆实际消耗,如果实际总是小于堆初始大小设定那完全可以调小嘛-、-. 还有阿里云应该用的不是 java8
hantsy
2015-09-28 23:20:43 +08:00
@raysmond 既然用了 Spring Boot ,为什么不用 application.yml 来配置呢,很多 Config 下的 类可以删除了。

对比一下我的两个 samples, 使用 Boot 的版本删除大部分配置,转而用 application.yml 直接配置了。

https://github.com/hantsy/angularjs-springmvc-sample
https://github.com/hantsy/angularjs-springmvc-sample-boot
raysmond
2015-09-28 23:27:43 +08:00
@hantsy 我也很想使用 Spring Boot ,目前一些 config 是直接从一些开源项目中拿来的,未来准备用 Spring Boot 替代一些。 angularjs-springmvc-sample-boot 分不同的 environment 的设计很不错。
varrily
2015-09-29 00:45:04 +08:00
不错,支持。。
twittercom
2015-09-29 08:48:56 +08:00
用到这么多高端的技术做了一个这么小型的博客,是表明你在用大炮打蚊子吗
NCE
2015-09-29 08:58:11 +08:00
@HentaiMew 这么费内存,开发那么麻烦,还用它干嘛, PHP 果然是世界上最好的语言,没有之一。

执行速度,占用内存,妥妥的

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

https://tanronggui.xyz/t/224315

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

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

© 2021 V2EX