spring
未读概述Spring 最成功,最吸引人的地方莫过于轻量级的声明式事务管理,仅此一点,它就宣告了重量级 EJB 容器的覆灭。Spring 声明式事务管理将开发者从繁复的事务管理代码中解脱出来,专注于业务逻辑的开发上,这是一件可以被拿来顶礼膜拜的事情。但是,世界并未从此消停,开发人员需要面对的是层出不穷的应用场景,这些场景往往逾越了普通 Spring 技术书籍的理想界定。因此,随着应用开发的深入,在使用经过 Spring 层层封装的声明式事务时,开发人员越来越觉得自己坠入了迷雾,陷入了沼泽,体会不到外界所宣称的那种畅快淋漓。本系列文章的目标旨在整理并剖析实际应用中种种让我们迷茫的场景,让阳光照进云遮雾障的山头。
DAO 和事务管理的牵绊很少有使用 Spring 但不使用 Spring 事务管理器的应用,因此常常有人会问:是否用了 Spring,就一定要用 Spring 事务管理器,否则就无法进行数据的持久化操作呢?事务管理器和 DAO 是什么关系呢?
也许是 DAO 和事务管理如影随行的缘故吧,这个看似简单的问题实实在在地存在着,从初学者心中涌出,萦绕在开发老手的脑际。答案当然是否定的!我们都 ...
Lex 代表 Lexical Analyzar。Yacc 代表 Yet Another Compiler Compiler。 让我们从 Lex 开始吧。
LexLex 是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。 这些词汇模式(或者常规表达式)在一种特殊的句子结构中定义,这个我们一会儿就要讨论。
一种匹配的常规表达式可能会包含相关的动作。这一动作可能还包括返回一个标记。 当 Lex 接收到文件或文本形式的输入时,它试图将文本与常规表达式进行匹配。 它一次读入一个输入字符,直到找到一个匹配的模式。 如果能够找到一个匹配的模式,Lex 就执行相关的动作(可能包括返回一个标记)。 另一方面,如果没有可以匹配的常规表达式,将会停止进一步的处理,Lex 将显示一个错误消息。
Lex 和 C 是强耦合的。一个 .lex 文件(Lex 文件具有 .lex 的扩展名)通过 lex 公用程序来传递,并生成 C 的输出文件。这些文件被编译为词法分析器的可执行版本。
Lex 的常规表达式常规表达式是一种使用元语言的模式描述。表达式由符号组成。符号一般是字符和数字,但是 Lex 中还有一些 ...
keytool -genkey -keystore capture.store -alias capturekeytool -export -keystore capture.store -alias capture -file capture.cerjarsigner -keystore capture.store capture.jar capture
词法分析(1)—词法分析的有关概念以及转换图
词法分析是编译的第一个阶段,前面简介中也谈到过词法分析器的任务就是:字符流——>词法记号流
这里词法分析和语法分析会交错进行,也就是说,词法分析器不会读取所有的词法记号再使用语法分析器来处理,通常情况下,每取一个词法记号,就送入语法分析器进行分析,图解:
词法分析器是编译器中与源程序直接接触的部分,因此词法分析器可以做诸如1). 去掉注释,自动生成文档(c#中的///注释)2). 提供错误位置(可以通过记录行号来提供),当字符流变成词法记号流以后,就没有了行的概念3). 完成预处理,比如宏定义
词法记号,词法单元(lexeme),模式模式是一种规则每个词法单元都有一个特定记号
比如 int a=3,这里 int,a,=,3都是词法单元,每个词法单元都属于某个词法记号,比如3就是”num”这个词法记号的一个词法单元,而模式规定了什么样的字符串的词法记号是什么样的(模式是一种规则)
某一特定模式规定了某个词法记号下的一类词法单元,比如:模式:用字母开头的包含字母和数字的串上 ...
1、 条件断点断点大家都比较熟悉,在Eclipse Java 编辑区的行头双击就会得到一个断点,代码会运行到此处时停止。
条件断点,顾名思义就是一个有一定条件的断点,只有满足了用户设置的条件,代码才会在运行到断点处时停止。
在断点处点击鼠标右键,选择最后一个"Breakpoint Properties"
断点的属性界面及各个选项的意思如下图,
2、 变量断点断点不仅能打在语句上,变量也可以接受断点,
上图就是一个变量的打的断点,在变量的值初始化,或是变量值改变时可以停止,当然变量断点上也是可以加条件的,和上面的介绍的条件断点的设置是一样的。
3、 方法断点
方法断点就是将断点打在方法的入口处,
方法断点的特别之处在于它可以打在 JDK的源码里,由于 JDK 在编译时去掉了调试信息,所以普通断点是不能打到里面的,但是方法断点却可以,可以通过这种方法查看方法的调用栈。
4、 改变变量值代码停在了断点处, ...
介绍
当分布式系统编程成为你生活中的一部分时,你需要经历一段学习曲线。这篇文章描述了一下我当前在这个领域大致属于哪个层次,并希望能为你指出足够多的错误,从别人的错误中学习,从而使你能以最优的路径通向成功。先声明一下,我在1995年时达到第1级,我现在处于第3级。你自己属于哪一级呢?
第0级:完全一无所知
每个程序员都从这一级开始。我不会在此浪费太多口舌,因为这实在没什么太多可说的。相反,我会引用一些我曾经经历过的对话,为从未接触过分布式系统的开发者们提供一些建议。
对话1:
NN:“在分布式系统中,复制是个很容易的操作,你只需要让所有的结点同时存储你要复制的东东就行了”。
另一段对话(从我记忆深处挖出来的):
NN: “为了我们的第一人称射击游戏,我们得写一个自己的网络处理引擎。”
我:“为什么?”
NN: “虽然已经有一些优秀的商业引擎了,但获取license的费用非常高昂,我们不想为此买单。”
我:“你之前对于分布式系统有什么经验吗?”
NN:“是的,我之前写过一个套接字服务器。”
我:“你觉得你要花多久能完成这个网络引擎?”
NN:“我想2周吧。保险起见,我计划用4周时间。”
好 ...
系统架构
未读首先来回答一个问题:为什么在磁盘中要使用b+树来进行文件存储呢?
原因还是因为树的高度低得缘故,磁盘本身是一个顺序读写快,随机读写慢的系统,那么如果想高效的从磁盘中找到数据,势必需要满足一个最重要的条件:减少寻道次数。
我们以平衡树为例进行对比,就会发现问题所在了:
先上个图
这是个平衡树,可以看到基本上一个元素下只有两个子叶节点
抽象的来看,树想要达成有效查找,势必需要维持如下一种结构:
树的子叶节点中,左子树一定小于等于当前节点,而当前节点的右子树则一定大于当前节点。只有这样,才能够维持全局有序,才能够进行查询。
这也就决定了只有取得某一个子叶节点后,才能够根据这个节点知道他的子树的具体的值情况。这点非常之重要,因为二叉平衡树,只有两个子叶节点,所以如果想找到某个数据,他必须重复更多次“拿到一个节点的两个子节点,判断大小,再从其中一个子节点取出他的两个子节点,判断大小。”这一过程。
这个过程重复的次数,就是树的高度。那么既然每个子树只有两个节点,那么N个数据的树的高度也就很容易可以算出了。
平衡二叉树这种结构的好处是,没有空间浪费,不会存在空余的空间,但坏处是需要取出多个节点,且 ...
背景:调试模式下,单步运行一个查询订单协议操作,记录了ibatis框架的执行动作,侧面剖析其原理。
一、简介:
1. dal 层的dao接口实现类通常会继承SqlMapClientDaoSupport。spring容器在初始化一个dao bean实例时,通常会注入两块信息DataSource(数据源)和sqlMapClient(主要是sql语句),这两块信息会封装到SqlMapClientTemplate
2. 其中数据源的实例通常采用apache的开源项目dbcp
代码配置如下:
<beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">
<propertyname="driverClassName"value="com.mysql.jdbc.Driver"/>
<propertyname=" ...
下载了文档自己截图存留
8种排序之间的关系:
1, 直接插入排序
(1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排
好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数
也是排好顺序的。如此反复循环,直到全部排好顺序。
(2)实例
(3)用java实现
123456789101112131415161718 package com.jsdiff; public class insertSort {public insertSort(){ inta[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51}; int temp=0; for(int i=1;i<a.length;i++){ int j=i-1; temp=a[i]; for(;j>=0&&temp<a[j] ...
一、为什么跳槽和选择公司
1. 为什么跳槽
虽然我们跳槽的原因各自不同,但是主要原因一般都是待遇、成长、稳定这些主要因素,也有一些比如想距离家更近等等因素。
待遇就是收入,比如工资、股票、奖金等等,在这个层面影响我们跳出的心态一般都是,比如我觉得我技术能力达到了某个阶段,但是目前薪水比我能力要低,或者是我一起成长的同学朋友同事现在薪水都比我高,或者是在高房价下面或者要养孩子,需要更多的收入来支撑,不管什么原因,追求高薪自然是我们在商业社会每个人的重要选择。这个无可厚非,不过就是要按照行业大情况、个人能力等综合考量。
跳槽很多普遍原因是待遇低,或者是跟自己预期不满足。另外一个是工作太累或者是没有发展空间了,还有的是为了离家距离近,这些也可以理解。不够我一个建议的原则是:不要频繁跳槽!
我感觉你在一个公司没有呆超过2年+,你其实对整个公司的认识还不是足够的,有时候容易片面,或者是刻意放低了自己目前的工作,觉得自己很悲催,不换个工作对不起自己。其实没必要,按照个人情况和行业大环境等等去做决定。
是否跳槽,自己决定想清楚,做了不要后悔!
2. 选择什么公 ...
