Jave EE系统架构问题请教

Posted on

Jave EE系统架构问题请教 - 开源中国 OSChina.NET

当前访客身份:游客 [ 登录 | 加入开源中国 ]

开源中国

讨论区

当前位置: 讨论区 » 技术问答 » Nginx 搜 索 adua

Jave EE系统架构问题请教

adua 发表于 2012-12-9 10:04 4个月前, 3回/213阅, 最后回答: 4个月前

Java、PHP、Ruby、iOS、Python 等 JetBrains 开发工具低至 99 元(3折),详情»

@鉴客 你好,想跟你请教个问题:一个基于JavaEE开发的系统,目前系统均为动态页面,如何使用nginx和squid技术来增强系统的页面缓存和负载均衡。谢谢!

标签: Nginx Squid 我想问同样的问题0个人想要问同样的问题 补充话题说明»

分享到 **

收藏 **

0 **

举报 **

0 | 0 **

按评价排序 | 显示最新答案 | 回页面顶部 共有3个答案 我要回答»

  • 鉴客

鉴客 回答于 2012-12-09 20:39

举报 你先说下为什么要这么做呢? 有帮助(0) | 没帮助(0) | 评论(0) | 引用此答案

  • loyal

loyal 回答于 2012-12-09 20:52

举报 nginx 就够了吧??? 有帮助(0) | 没帮助(0) | 评论(0) | 引用此答案

  • adua

adua 回答于 2012-12-17 20:30

举报 之前看到 http://labs.chinamobile.com/mblog/466/189076帖子将经典分层设计,发现我们系统即未用反向代理,也未用到应用缓存。目的想让1.系统宕机后用户无感知 2.系统访问速度加快。请求意见! 有帮助(0) | 没帮助(0) | 评论(0) | 引用此答案

非会员用户 回答案顶部 | 回页面顶部

有什么技术问题吗? 我要提问 类似的话题

© 开源中国(OsChina.NET) | 关于我们 | 广告联系 | @新浪微博 | 开源中国手机版 | 粤ICP备12009483号-3 开源中国手机客户端: Android iPhone WP7

基于tomcat7 web开发中的一点小东西

Posted on

基于tomcat7 web开发中的一点小东西

基于tomcat7 web开发中的一点小东西

控制台:

org.apache.jasper.compiler.TldLocationsCache tldScanJar

信息: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 这样的问题是你的页面中含有的注释 去掉就好了,tomcat7.0.20.

tomcat 7对EL表达式的语法要求比较严格,例如"${owner.new}"因包含关键字new就会导致解析出错。 问题是出来了,怎么解决呢?有三种,如下: 第一种:严格遵守java规范,修改对象的属性名称,要求不包含java关键字; 第二种:修改EL表达式,例如"${owner.new}"可以修改为"${owner['new']}"; 第三种:修改tomcat属性,忽略对EL表达式的关键字检查。修改$CATALINA_BASE/conf/catalina.properties文件,添加org.apache.el.parser.SKIP_IDENTIFIER_CHECK=true选项。

来源: [http://blog.csdn.net/benyuxy/article/details/7568386](http://blog.csdn.net/benyuxy/article/details/7568386)

java.net.SocketException Too many open files 问题的解

Posted on

java.net.SocketException Too many open files 问题的解决办法 - R&D--梦想在这里成真 R&D--夢を実現しましょう R&D--Dreams Come Ture - IT博客

R&D--梦想在这里成真 R&D--夢を実現しましょう R&D--Dreams Come Ture 努力 我们将梦想变为现实

IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合 :: 管理 posts - 134, comments - 20, trackbacks - 0

<2009年2月>日一二三四五六25262728293031123456789101112131415161718192021222324252627281234567

常用链接

留言簿(1)

随笔分类

随笔档案

文章分类

相册

搜索

*

最新评论

阅读排行榜

评论排行榜

原本以为是tomcat的配置或是应用本身的问题,"谷歌"一把后才发现,该问题的根本原因是由于系统文件资源的限制导致的。

具体可以参考http://www.bea.com.cn/support_pattern/Too_Many_Open_Files_Pattern.html 的说明。具体的解决方式可以参考一下: 1。ulimit -a 查看系统目前资源限制的设定。 [root@test security]/# umlimit -a -bash: umlimit: command not found [root@test security]/# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited max locked memory (kbytes, -l) unlimited max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 7168 virtual memory (kbytes, -v) unlimited [root@test security]/# 通过以上命令,我们可以看到open files 的最大数为1024 那么我们可以通过一下命令修改该参数的最大值

  1. ulimit -n 4096 [root@test security]/# ulimit -n 4096 [root@test security]/# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited max locked memory (kbytes, -l) unlimited max memory size (kbytes, -m) unlimited open files (-n) 4096 pipe size (512 bytes, -p) 8 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 7168 virtual memory (kbytes, -v) unlimited

这样我们就修改了系统在同一时间打开文件资源的最大数,基本解决以上问题。

以上部分是查找网络上的解决方法。设置了之后段时间内有作用。

后来仔细想来,问题还是要从根本上解决,于是把以前的代码由认真地看了一遍。终于找到了,罪魁祸首。

在读取文件时,有一些使用的BufferedReader 没有关闭。导致文件一直处于打开状态。造成资源的严重浪费。

修改之后的简单代码如下:

public void test(){ BufferedReader reader =null; try{ reader = 读取文件; String line = ""; while( ( ine=reader.readLine())!=null){ 其他操作 } } catch (IOException e){ System.out.println(e); } finally{
if(reader !=null){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } }

以上只是我的个人见解,希望对大家有所帮助。 posted on 2008-08-07 09:23 TRE-China R&D 阅读(6624) 评论(2) 编辑 收藏 引用 所属分类: LinuxJAVA

Feedback

/# re: java.net.SocketException: Too many open files 问题的解决办法 2011-03-08 11:10 | 212 212121 回复 更多评论 /# re: java.net.SocketException: Too many open files 问题的解决办法[未登录]

2011-11-24 12:58 | 11 不错 回复 更多评论 刷新评论列表

博问 - 解决您的IT难题 IT新闻: · 印度35美元平板机出师不利 · Firefox领先Windows,Chrome领先Linux · 物理是一个NP-hard问题 · 优酷网与CCTV6电影网再签署一年合作协议 · Bottlenose:将数据可视化融入社交网络运营中 博客园首页 IT新闻 IT问答 程序员招聘 标题 请输入标题 姓名 请输入你的姓名 主页 请输入验证码 验证码 /* 内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)

请输入评论内容 Remember Me? 登录 使用高级评论 新用户注册 返回页首 恢复上次提交 [使用Ctrl+Enter键可以直接提交] 博客园首页随笔: · 游戏运营技术之---玩家关系管理(PRM)--〉推进虚拟营销 · 建立完善的日期定义表 · 《人月神话》摘要 · C++标准编程:虚函数与内联 · 莫蹭网:“黑客”怎样伪造wifi钓你(Windows平台) 博客园 IT新闻 BlogJava 博客生活 C++博客 PHP博客 相关文章:

Powered by: IT博客 Copyright ©2012 TRE-China R&D

How Does Google Work Learn How Google Works Sear

Posted on

How Does Google Work Learn How Google Works Search Engine + AdWords

PPC Blog

Learn How Google Works: in Gory Detail

888 Tweet 388 inShare digg

How Google Works.

Vote on Hacker News, or Delicious Bookmark this on Delicious

FREE: add this infographic to your website!

600 Pixel Wide Version

How Google Works.

Infographic by the Pay Per Click Blog

Large Version

How Does Google Work?

Infographic by PPCBlog

Copyright 2011 - 2013 PPC Training Inc. - All Rights Reserved

QueueByArray

Posted on

QueueByArray

Algorithm Gossip: 伫列 - 使用阵列实作

说明

伫列是一种先进先出的资料结构,想像您在管子中放入球,最先放入的球在另一端会最先跑出来,在这边介绍如何使用阵列来实作伫列。

解法

使用阵列来实作伫列,我们必须保留两个旗标,假设front指向伫列的前端,rear向伫列的后端,我们每次从伫列后端加入一个资料,rear就加1指向最后一个资料,每次从伫列前端取出一个资料,front就加1指向伫列的最前端,如下图所示: Quene 这是最简单的伫列实作,但是由于阵列的大小必须先决定,所以这种线性的结构有个问题,front与rear会到达阵列的后端,而这个阵列就不能再使用了, 为了解决这个问题,将阵列当作环状来使用,当front或rear到达阵列后端时,就重新从阵列前端再循环,也就是形成环状伫列,如下图所示: Quene 不过阵列的容量还是受限制,所以这个阵列还是会满的,当front = rear时,伫列就满了;伫列的基本操作有五项:新增伫列、加入资料、显示前端资料、取出前端资料、显示所有的伫列元素。

实作

  • C /#include /#include /#define N 10 void createq(int[], int/, int/); void showfront(int[], int, int); void add(int[], int/, int/, int); void del(int[], int/, int/); void showqueue(int[], int, int); int main(void) { int queue[N]; int front, rear; int input, select; createq(queue, &front, &rear); while(1) { printf("\n\n请输入选项(-1结束):"); printf("\n(1)插入值至伫列"); printf("\n(2)显示伫列前端"); printf("\n(3)删除前端值"); printf("\n(4)显示所有内容"); printf("\n$c>"); scanf("%d", &select); if(select == -1) break; switch(select) { case 1: printf("\n输入值:"); scanf("%d", &input); add(queue, &front, &rear, input); break; case 2: showfront(queue, front, rear); break; case 3: del(queue, &front, &rear); break; case 4: showqueue(queue, front, rear); break; default: printf("\n选项错误!"); } } printf("\n"); return 0; } void createq(int queue[], int/ front, int/ rear) { int i; for(i = 0; i < N; i++) queue[i] = 0; /front = /rear = 0; } void showfront(int queue[], int front, int rear) { if(front == rear) printf("\n伫列为空!"); else printf("%d", queue[(front+1) % N]); } void add(int queue[], int/ front, int/ rear, int data) { int f, r; f = /front; r = /rear; r = (r+1) % N; if(f == r) { printf("\n伫列已满!"); return; } queue[r] = data; /rear = r; } void del(int queue[], int/ front, int/ rear) { int f, r; f = /front; r = /rear; if(f == r) { printf("\n伫列为空!"); return; } f = (f+1) % N; /front = f; } void showqueue(int queue[], int front, int rear) { int i; printf("\n伫列内容:"); for(i = (front+1) % N; i <= rear; i++) printf("%d ", queue[i]); }

补充

您如果仔细演算过上面的环状伫列,您会发现有一个空间会被浪费掉,这是因为判断伫列已满或已空的条件都是front = rear,浪费一个空间对现在的电脑记忆体如此足够来说,并不是个大问题,如果您一定要解决这个问题,可以多使用一个flag来判断,如果flag设定为 1且front = rear,则表示伫列已满,如果flag设定为0则front = rear,则表示伫列已空,这样就不会浪费一个伫列空间了,提供改良后的虚拟码如下: Procedure add(queue, n, front, rear, flag, data) if(front = rear and flag = 1) then call QUEUE_FULL queue(rear) <- data if(front = rear) then flag <- 1 end add Procedure del(queue, n, front, rear, flag, data) if(front = rear and flag = 0) then call QUEUE_EMPTY front <- (front+1) mod n if(front = rear) then flag <- 1 end del