文档章节

简单说说 OSChina 的技术架构

红薯
 红薯
发布于 2009/02/18 15:48
字数 468
阅读 97134
收藏 741
点赞 94
评论 227

OsChina.NET 这个域名是在去年 08年8月16日申请的,然后花了不足一个月的时候开发了第一个版本的OsChina,包含有项目展示、新闻、后台管理、会员注册等功能,以后的每次的改进就没那么集中,有空的话就完善完善一直到今天,当然了,还会一直完善下去。

OsChina.NET 是用 Java 开发的(一个朋友说,不是PHP就是ASP.NET,肯定不是Java,不幸猜错了)。

目前整个工程的Java代码行数是 1.5 万包含注释,其中真正的代码行是 1 万刚好,整个项目目录不足十兆,包括所有的jar包。

Java 开发Web网站一般都有很多的框架可以选择,但在OsChina中几乎没有用到什么框架,除了:Lucene(搜索)、Velocity(页面模板)、EhCache(缓存)。其中参考了 Struts 的 DispatchAction 的思路自己写了一个只有一个 Java 文件的控制器(详情),还有一个URL映射的(详情)。之前的很多项目都用了 Hibernate 来访问数据库,但觉得配置太烦、jar包太大,于是决定在 OsChina 项目中尝试不用 Hibernate,后来选择了 DbUtils ,结果是:配置没了、代码比用 Hibernate 来得更少,程序更简洁。例如:

/**
 * 列出某人的好友
 * @param user
 * @return
 */
public static List ListFriendsOfUser(long user) {
	String sql = "SELECT friend FROM osc_friends WHERE user=?";
	return QueryHelper.query_cache(long.class, CACHE, user, sql, user);
}

其他方面:不在项目中启动线程来自动构建索引,而是提供一个程序让通过操作系统的crontab来定期调用。

OSChina 服务器硬件情况请看:http://www.oschina.net/question/32709_8800

服务器托管在广州电信较场西机房!

OSChina 的部分源码请看:http://www.oschina.net/code/tag/oschina

等等,想到再继续补充。。。。。。

© 著作权归作者所有

共有 人打赏支持
红薯

红薯

粉丝 19987
博文 122
码字总数 39006
作品 8
深圳
产品经理
加载中

评论(227)

lilugirl
lilugirl
你把博文分类浏览放哪里了,我自己的文章都不好找了!!
袁一涵
袁一涵

引用来自“虫虫”的评论

回过头来看,框架在Java领域是一个大大的谎言。

引用来自“九千里”的评论

大神为何这般讲?
9年过去了,不知道历经9年的争论有了结果没有,9年前说框架是谎言的人,现在是不是做到架构师了,是不是会极力推荐框架
九千里
九千里
十年过去了,现在的架构是不是大大改变了呢? 现在很流行微服务架构,OS网站会考虑也改版成微服务架构?还是说现在的OS其实已经在用微服务的架构了??
九千里
九千里

引用来自“虫虫”的评论

回过头来看,框架在Java领域是一个大大的谎言。
大神为何这般讲?
liwei2000
liwei2000
我还以为会很长呢,这么快就写完了:sweat:
Z
Zempty

引用来自“老余的故事”的评论

整个项目目录不足十兆,包括所有的jar包? 厉害。。
8年前不10M,现在1G了:flushed:
b
barfoo097
crontab 不是操作系统的,是crond的,谢谢
TAKCHINGLO
TAKCHINGLO
等等,想到再继续补充。。。。。。
没然后了?。。。
老余的故事
老余的故事
整个项目目录不足十兆,包括所有的jar包? 厉害。。
ubibi
ubibi
八年前的。。不知道现在怎么样了。
NoSQL数据库概览及其与SQL语法的比较

本文作者:伯乐在线 -周兆熊 。未经作者许可,禁止转载! 欢迎加入伯乐在线专栏作者。 HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,同时也是知名的NoSQL数据库之一。NoS...

伯乐在线 ⋅ 2015/11/13 ⋅ 0

如何利用 C++ 的 Lambda 表达式提升 Qt 代码

原文出处:oschina Lambda 表达式是在 C++11 中加入的 C++ 特性。在这篇文章中我们将看到如何用 Lambda 表达式来简化 Qt 代码。Lambda 很强大,但也要小心它带来的陷阱。 首先,什么是 Labm...

oschina ⋅ 2017/02/09 ⋅ 0

性能测试的艺术

原文出处:磁针石 为什么要进行性能测试? 什么是好的与坏的性能?为什么性能测试在软件开发生命周期(SDLC software development life cycle)中很重要? 性能不佳的应用通常无法实现企业预期...

磁针石 ⋅ 2016/03/21 ⋅ 0

简单在线文本编辑器--SEditor

简单在线文本编辑器SEditor,仿汽车之家论坛发帖 注意:id为调用参数(小写),即隐藏的内容表单项id, ReadCookie设置是否读取上次未提交的数据,1为开启,0为关闭(注意大小写)。 asp调用 ...

yxl2 ⋅ 2012/12/17 ⋅ 0

如何处理前任程序员留下的代码

原文出处:Justin Albano 译文出处:开源中国 身为一个软件工程师,我们不可避免的会遇到这样一些问题:不得不修改别人的代码,或者在别人的代码中添加新的功能。我们并不熟悉这些代码,它也...

Justin Albano ⋅ 2017/11/28 ⋅ 0

Ruby 和 Python 分析器是如何工作的?

原文出处:Julia Evans 译文出处:开源中国 你好! 我作为一名编写Ruby profiler的先驱,我想对现有的Ruby和Python profiler如何工作进行一次调查。 这也有助于回答很多人的问题:“你怎么写...

Julia Evans ⋅ 2017/12/24 ⋅ 0

.Net委托类型解析

原文出处:hystar 不像Windows API中使用C语言风格的函数指针这种不安全的方式进行回调。.Net中此功能使用使用更为安全和面向对象的委托(delegate)来完成。委托是一个类型安全的对象,它指向...

hystar ⋅ 2016/06/18 ⋅ 0

使用 ProxySQL 改进 MySQL SSL 的连接性能

原文出处:Percona 译文出处:开源中国 在这篇博文里,我们准备来看一下 ProxySQL 是如何提高 MySQL 的 SSL 连接性能的。 当用 SSL 部署 MySQL 时,主要的问题是如果没有使用连接池(例如:P...

Percona ⋅ 2017/10/03 ⋅ 0

提升网站访问速度的 SQL 查询优化技巧

原文出处:Delicious Brains 译文出处:开源中国 你一定知道,一个快速访问的网站能让用户喜欢,可以帮助网站从Google 上提高排名,可以帮助网站增加转化率。如果你看过网站性能优化方面的文...

Delicious Brains ⋅ 2017/12/09 ⋅ 0

为什么面向对象编程是有用的?(以一个角色扮演游戏为例)

本文由伯乐在线 -Janzou 翻译,艾凌风 校稿。未经许可,禁止转载! 英文出处:inventwithpython。欢迎加入翻译组。 本文面向的是那些刚刚接触编程,可能已经听说过”面向对象编程”,”OOP”...

伯乐在线 ⋅ 2014/12/31 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Greys Java在线问题诊断工具

Greys是一个JVM进程执行过程中的异常诊断工具。 在不中断程序执行的情况下轻松完成JVM相关问题排查工作 目标群体 有时候突然一个问题反馈上来,需要入参才能完成定位,但恰恰没有任何日志。回...

素雷 ⋅ 22分钟前 ⋅ 0

git从远程仓库拉取代码的常用指令

一种(比较麻烦的)拉代码的方法 git clone //克隆代码库,与远程代码库的主干建立连接,如果主干已经在就不用再clone啦,克隆路径为当前路径下的新创建的文件夹 git checkout -b //本地建立...

Helios51 ⋅ 36分钟前 ⋅ 0

005. 深入JVM学习—Java堆内存参数调整

1. JVM整体内存调整图解(调优关键) 实际上每一块子内存区域都会存在一部分可变伸缩区域,其基本流程:如果内存空间不足,则在可变的范围之内扩大内存空间,当一段时间之后,内存空间不紧张...

影狼 ⋅ 41分钟前 ⋅ 0

内存障碍: 软件黑客的硬件视图

此文为笔者近日有幸看到的一则关于计算机底层内存障碍的学术论文,并翻译(机译)而来[自认为翻译的还行],若读者想要英文原版的论文话,给我留言,我发给你。 内存障碍: 软件黑客的硬件视图...

Romane ⋅ 今天 ⋅ 0

SpringCloud 微服务 (七) 服务通信 Feign

壹 继续第(六)篇RestTemplate篇 做到现在,本机上已经有注册中心: eureka, 服务:client、order、product 继续在order中实现通信向product服务,使用Feign方式 下面记录学习和遇到的问题 贰 or...

___大侠 ⋅ 今天 ⋅ 0

gitee、github上issue标签方案

目录 [TOC] issue生命周期 st=>start: 开始e=>end: 结束op0=>operation: 新建issueop1=>operation: 评审issueop2=>operation: 任务负责人执行任务cond1=>condition: 是否通过?op3=>o......

lovewinner ⋅ 今天 ⋅ 0

浅谈mysql的索引设计原则以及常见索引的区别

索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针. 数据库索引的设计原则: 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索...

屌丝男神 ⋅ 今天 ⋅ 0

String,StringBuilder,StringBuffer三者的区别

这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。 首先说运行速度,或者说是, 1.执行速度 在这方面运行速度快慢为:StringBuilder(线程不安全,可变) > StringBuffer...

时刻在奔跑 ⋅ 今天 ⋅ 0

java以太坊开发 - web3j使用钱包进行转账

首先载入钱包,然后利用账户凭证操作受控交易Transfer进行转账: Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/Credentials credentials = Wallet......

以太坊教程 ⋅ 今天 ⋅ 0

Oracle全文检索配置与实践

Oracle全文检索配置与实践

微小宝 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部