无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,很有可能导致无法SSH连接,这将是很认人头疼的事. 以下内容是为了防止这种情况发生而写的,如果SSH端口是22(这里不建议用默认端口最好改掉SSH端口).
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT
注意要/etc/rc.d/init.d/iptables save,以下每一步都最好执行一遍此语句,以下不再累述, 否则直接执行service iptables restart命令后, 刚才添加的将丢失.




阅读全文 »

有个老项目,通过 Squid 提供文件下载功能,利用 delay_parameters 实现带宽控制,问题是我玩不转 Squid,于是盘算着是不是能在 Nginx 里找到类似的功能。

好消息是 Nginx 提供了 limit_ratelimit_rate_after,举个例子来说明一下:

location /download/ {
    limit_rate_after 500k;
    limit_rate 50k;
}

大概意思是:用户下载达到 500k 后,便控制其速度在 50k 以内。

坏消息是此控制是针对单个连接而言的。换言之,只能限制单个连接的带宽,不能限制总带宽。不过使用 limit_conn 模块的话,可以在一定程度上缓解问题:

阅读全文 »

原版

SSM框架的Web程序主要用到了三个技术:

  • Spring:用到了注解和自动装配,就是Spring的两个精髓IOC(反向控制)和 AOP(面向切面编程)。

  • SpringMVC:用到了MVC模型,将逻辑代码放到Controller层处理。

  • Mybatis:用到了与数据库打交道的层面,放在所有的逻辑之后,处理与数据库的CRUD相关的操作。

要完成一个功能:

  • 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。

  • 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进行的那些操作,比如 insert、selectAll、selectByKey、delete、update等。

  • 写Mapper.java,将Mapper.xml中的操作按照id映射成Java函数。

  • 写Service.java,为控制层提供服务,接受控制层的参数,完成相应的功能,并返回给控制层。

  • 写Controller.java,连接页面请求和服务层,获取页面请求的参数,通过自动装配,映射不同的URL到相应的处理函数,并获取参数,对参数进行处理,之后传给服务层。

  • 写JSP页面调用,请求哪些参数,需要获取什么数据。

阅读全文 »

RubyLouvre

今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑问无法得到正确的解释,为什么我们现在做java的web开发,会选择struts2或者springMVC这样的框架,而不是使用servlet加jsp这样的技术呢?特别是现在我们web的前端页面都是使用velocity这样的模板语言进行开发,抛弃了jsp,这样的选择又会给我们java的web开发带来什么样的好处,延着这个问题的思路,我又发现新的疑问,为什么现在很多java企业级开发都会去选择spring框架,spring框架给我们开发的应用带来了什么?这么一想还真是问倒我了,我似乎很难找到一串能让人完全信服的答案,最终我发现,这些我认为我很熟悉很常用的技术,其实还有很多让我陌生不解的地方,这些陌生和不解的地方也正是我是否能更高层次使用它们的关键,今天这篇文章我就来讲讲这些问题,不过struts2,spring这样的技术经过这么多年的积累已经是相当庞大和复杂,它们的面很广,本人虽然已经用了它们多年,还是有很多技术不熟悉和不清楚,所以本文不是全面对我题目做出解答的文章,而是根据我现有知识结构来理解这个问题。

阅读全文 »

最近几年,前端技术迅猛发展,差不多每年都会冒出一款主流的框架。 每次新开业务线或启动新项目时,是第一件事就是纠结:使用什么框架,重造什么轮子?我很高兴应CSDN的邀请谈我的看法。

在五六年,移动端还没有兴起,我们没有什么选择,就是jQuery。有人会说,jQuery只是类库,不是框架;但那时前端业务还没有像今天这么繁重,原本是后端干的事,全部挪到前端来,因为光是jQuery就可以包打天下。jQuery不够用,还有成千上万的jQuery的插件呢。于是问题就是这样一一衍生出来了,一个页面太多jQuery插件了,请求数太多了,于是我们得打包。打包需要我们对插件有规划。于是这需求在社区上逐渐形成了某些规则,其中最出名的是AMD规范,体现上requirejs这个加载库上。

requirejs是前端技术发展上的一个分水岭。javascript在es6之前一直没有自己的加载机制,requirejs的出现意味着前端可以向更大规模发展。以后我说的技术选型,一个非常重要的甄选点, 就是 是否存在加载器机制或符合某个模块规范。

阅读全文 »