们经常想把精彩的网页内容做截图。或者在制作某些教程的时候也需要截图。通常情况下你或许会选择SnagIT之类的截图工具。在这里特别推荐一款Firefox浏览器的截图插件。功能非常强大,使用非常方便。忍不住要推荐给大家。用Firefox打开下面的链接进行安装http://screenshot-program.com/fireshot/视频演示Demo:推荐Firefox截图插件
系统 2019-08-29 22:13:43 2170
本系列文章从一个全新的视角来思考web性能优化与前端工程之间的关系,通过解读百度前端集成解决方案小组(F.I.S)在打造高性能前端架构并统一百度40多条前端产品线的过程中所经历的技术尝试,揭示前端性能优化在前端架构及开发工具设计层面的实现思路。静态资源管理与模板框架让我们再来看看前面的优化原则表还剩些什么:优化方向优化手段请求数量合并脚本和样式表,拆分初始化负载请求带宽移除重复脚本缓存利用使Ajax可缓存页面结构将样式表放在顶部,将脚本放在底部,尽早刷新文
系统 2019-08-29 22:13:18 2170
最近有好几个咨询如何动态部署Bean/动态部署Springmvc控制器;首先声明下:基于普通Java/JavaEE环境的不适合做动态部署;如果你有这种需求请考虑使用如PlayFramework/Grails这种框架。但是还是有少量朋友会有这种需求:我的应用中只有少量几个需要动态部署的组件;好吧,那我来写一个能动态部署Bean/Controller的工具类吧。注意,因为Spring整个框架非常好的遵循开闭原则,所以只能通过反射来操作,而且目前不考虑Sprin
系统 2019-08-29 22:00:48 2170
研究Glusterfs半年多了,通过实际操作以及源代码分析,对它有了越来越深的了解,由衷的赞叹Gluster的整体架构。今天时间不早了,想写点关于Glusterfs的冗余镜像产生脑裂的原因。首先,简单描述一下脑裂,所谓脑裂,就是指两个或多个节点都“认为”自身是正常节点而互相“指责”对方,导致不能选取正确的节点进行接管或修复,导致脑裂状态。这种现象出现在数据修复、集群管理等等高可用场景。Glusterfs的冗余镜像(下文简称AFR)提供了数据副本功能,能够在
系统 2019-08-12 09:27:39 2170
Geneva是微软开发的用于构建自定义安全令牌服务(STS)的探测功能、要求从ASP.NET应用程序进行联合身份验证的机制,以及简化ASP.NET应用程序和WCF服务的基于声明的授权的对象模型。它可以帮助开发人员更轻松地开发用于认证/授权的基于声明(claims-based)的身份模型的应用。这是由微软开发但得到行业支持的模型采用WS-Federation、WS-Trust和SAML(SecurityAssertionMarkupLanguage,安全断言
系统 2019-08-12 09:27:10 2170
启动时:Hibernate:insertintoSessionInfo(lastModificationDate,rulesByteArray,startDate,OPTLOCK)values(?,?,?,?)取得连接Hibernate:insertintoProcessInstanceInfo(lastModificationDate,lastReadDate,processId,processInstanceByteArray,startDate,st
系统 2019-08-12 09:26:58 2170
继续开始我们重构手法的系列,今天介绍的是SplitTemporaryVariable---分解临时变量。在我们平常写的程序中肯定有某些临时变量被赋予了超过一个的责任。如果他们不是那种收集结果(temp=temp+QString("abc"))或者循环变量(i=i+1),然而他们却被赋值了多于一次。那么我们肯定说,这个变量被赋予了超过一个的责任,别看这是个小小问题,但这会阻扰我们阅读者的判断,我们会去揣测,这个变量到底是用来干嘛的。从而影响我们看清程序正常的
系统 2019-08-12 01:54:55 2170
数据库主键设计之思考在我们的数据库设计中,不可逃避的就是数据库表的主键,可能有很多朋友没有深入思考过,主键的设计对整个数据库的设计影响很大,因此我们不得不要重视起来。主键的必要性:有些朋友可能不提倡数据库表必须要主键,但在我的思考中,觉得每个表都应该具有主键,不管是单主键还是双主键,主键的存在就代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,本记录的修改与删除,当我们没有主键时,这些操作会变的非常麻烦。主键的无意义性:
系统 2019-08-12 01:54:03 2170
[User]1.db.addUser("name","pwd","true/false")2.db.auth("name","pwd")3.showusers4.db.removeUser("name")[Collection]1:db.createCollection("name")2:db.getCollectionNames()[Document]1:db.User.save({})2:db.User.find()3:db.User.find({})
系统 2019-08-12 01:53:42 2170
Linux下的程序,常常支持N多的命令行选项。那么,我们怎样编写支持命令行选项的程序呢。以下给出两个演示样例。演示样例1,简单的命令行选项。以下的程序,支持4个选项,-i,-n,-s,-d编译后,能够这样运行(选项之间的顺序无所谓):./a.out-i-n100-shahaha-d好了,以下是代码。#include#include#includeintenable_opt_i;intenable_o
系统 2019-08-12 01:53:15 2170