01 2013 档案

摘要:1.问题 今天在本地和测试环境用jetty跑应用发现本地环境跑起来有问题,而测试环境却没有问题,出现的是war包的WEB-INF的lib目录下有两个jar包a.jar和b.jar,但是这两个jar包邮两个包名和类目一样,但是功能却不一样的类,那么jetty启动加载这个类的时候用的是a.jar里面的类还是b.jar里面的类呢,出了问题只能查了。 2.本地环境jetty加载目录里面是b.jar排在a.jar前面,而测试环境是a.jar排在b.jar前面,而记载a.jar里面的类是正确的。我们看看jetty怎么处理: 首先jetty加载一个APP war的过程中WebInfConfigurati.. 阅读全文
posted @ 2013-01-28 22:54 zhwj184 阅读(397) 评论(0) 推荐(0)
摘要:安全三要素:机密性(加密),完整性(数字签名),可用性(DDos攻击)安全评估:资产等级评估-》威胁分析-》风险分析-》设计安全方案白帽子兵法:secure by default:白名单黑名单,flash : 检测服务器的crossdomain.xml来验证是否允许客户端flash跨域请求最小权限原则:纵深防御 Defense in Depth数据与代码分离原则 缓冲区代码溢出,将用户数据当代码执行不可预测性原则浏览器安全: 同源策略 script,img,iframe,link等标签可以跨域加载资源,js不能读写这些标签返回的内容; XMLHTTPRequest跨域访问标准 浏览器沙箱 .. 阅读全文
posted @ 2013-01-28 13:25 zhwj184 阅读(276) 评论(0) 推荐(0)
摘要:在session的public Result executeCompiledStatement(Statement cs, Object[] pvals)方法执行中会处理事务 boolean isTX = cs.isTransactionStatement(); if (!isTX) { if (database.logger.getSqlEventLogLevel() >= SimpleLog.LOG_NORMAL) { sessionContext.setDyn... 阅读全文
posted @ 2013-01-20 15:16 zhwj184 阅读(473) 评论(0) 推荐(0)
摘要:执行过程先分析select语句的解析过程: select语句的解析集中在ParserDQL类的XreadQueryExpression方法中,其中XreadQueryExpressionBody select除了limit,offset,fetch关键字外的其他条件解析,XreadOrderByExpression是limit,offset,fetch,ordre by的解析,我们分析简单的select * from user where * order by * limit 2 offset 5 这种语句,对于嵌套子查询和联合查询待会简单过下。 QueryExpression que... 阅读全文
posted @ 2013-01-19 22:38 zhwj184 阅读(355) 评论(0) 推荐(0)
摘要:查询过程前面解析类似insert,最终调用是在下面这个QuerySpecification类的getSingleResult方法,RangeVariable是查询条件相关 private Result getSingleResult(Session session, int maxRows) { int[] limits = sortAndSlice.getLimits(session, this, maxRows); Result r = buildResult(session, limits); ... 阅读全文
posted @ 2013-01-18 00:23 zhwj184 阅读(441) 评论(0) 推荐(0)
摘要:我们看看insert语句的执行过程, 如果cs.isTransactionStatement()是true,则表示启动事务执行, public Result executeCompiledStatement(Statement cs, Object[] pvals) { Result r; if (abortTransaction) { rollback(false); return Result.newErrorResult(Error.error(ErrorCode.X_40001)); ... 阅读全文
posted @ 2013-01-17 21:38 zhwj184 阅读(502) 评论(0) 推荐(0)
摘要:hsqldb是java版的简化数据库,代码量比较少,对于学习数据库的设计是一个比较好的选择,对于derby代码量比较大,mysql c++更复杂,所以就通过学习hsqldb来学习数据库的设计。在这里可以下载到源码http://hsqldb.org/,源码包下org.hsqldb.test有很多的测试类,大家可以从这里开始调试学习hsqldb。HyperSQL数据库叫catalog,根据数据库存储方式不同分为几种:• mem: stored entirely in RAM - without any persistence beyond the JVM process's life• f 阅读全文
posted @ 2013-01-17 17:17 zhwj184 阅读(600) 评论(0) 推荐(0)
摘要:在server类的handleConnection方法中处理客户端的输入, 首先调用allowConnection方法检测下客户端ip是否合法,ServerAcl类中可以查看,在server启动输入参数中可以指定acl 黑白名单ip文件,检测代码很简单,这里就不说明了,有兴趣的看下ServerAcl类。 protected boolean allowConnection(Socket socket) { if (isShuttingDown) { return false; } return (acl == n... 阅读全文
posted @ 2013-01-17 17:17 zhwj184 阅读(316) 评论(0) 推荐(0)
摘要:1.普通的通过构造函数初始化,没有指定构造函数参数的就是用默认的无参的构造方法<bean id="exampleBean" class="examples.ExampleBean"/> <bean name="anotherExample" class="examples.ExampleBeanTwo"/>构造函数的几种方式:1.普通沟通函数注入方式,按照构造函数参数的顺序和个数来注入beanpackage x.y; public class Foo { public Foo(Bar bar 阅读全文
posted @ 2013-01-08 17:04 zhwj184 阅读(272) 评论(0) 推荐(0)
摘要:通常在数据库DAO层的查询中,我们会定义一个DAO接口,而在实现中我们只是拼接查询参数并且指定一个ibatis的sqlmap中的sqlid进行查询,Dao的实现很类似,而且非常简单,其实可以简化这种的实现,不需要这些实现代码,下面我们通过annotation机制来简化这块的实现。比如public class TestDaoImpl extends SqlMapClientDaoSupport implements TestDao { @Override public int updateBrandOfferStatusByBrandMemberId(Long brandMemb... 阅读全文
posted @ 2013-01-06 23:32 zhwj184 阅读(254) 评论(0) 推荐(0)