`
文章列表
随机生成和为S的N个正整数——投影法      随机生成和为S的N个正整数有很多种解法。下面讲解一种比较高效且比较有趣味性的解法——投影法。     以生成和为20的4个数为例,可以先生成随机生成0到20之间的三个数字再排序,假设得到了4,7,18。然后在X-Y数轴上画出这三个数,如下图: 然后将这些数值投影到Y轴上,可得下图: 由图很容易看出AB,BC,CD,DE这四段的长度和肯定为20。因此AB,BC,CD,

分组topN

数据库表结构:sc sid:学生id cid:课程id socre:分数 需求:查询每门课程分数最高的三个学生   select a.* from sc a where 3 > (select count(*) from sc where a.cid=cid and a.socre>score) order by a.cid,a.score desc   分析:利用子查询建立一个笛卡尔积,对于a表的每一行都跟另外一个表的每一行匹配,如果count的值小于N说明该行的分数在top N之内   select a.* from sc a left join sc ...

awk两个文件对比

最简单的方式是使用linux的comm命令,但是需要文件有序,comm命令的参数: -1 不显示只在第1个文件里出现过的列。 -2 不显示只在第2个文件里出现过的列。 -3 不显示只在第1和第2个文件里出现过的列。 comm命令是一个非常简洁的命令,其只有两个参数。不过三个参数也结常要组合使用,我们常用的用法如下: comm - 12 就只显示在两个文件中都存在的行; comm - 23 只显示在第一个文件中出现而未在第二个文件中出现的行; comm - 123 则什么也不显示。 也可以使用awk命令实现 1.同时在file1和fil ...
安装pl sql developer 下载instant-client,这样可以不用安装oracle客户端就能连接oracle数据库,地址:http://www.oracle.com/technetwork/cn/database/features/instant-client/index-092699-zhs.html 将下载好的instant-client解压即可 进入instant-client目录,建一个network的文件夹,再在network文件夹下建一个admin的文件夹,在admin文件夹下创建一个文件tnsnames.ora,内容如下: alumni = (DE ...
BeanFactory是Spring IOC容器的重要接口,用于实例化、获取bean实例和bean相关信息,重要的方法有: FactoryBean主要用于定制化实例bean,主要接口有: 通过重写getObject方法我们可以实例化我们想要的bean。 Spring IOC实例化bean后会判断该bean是否是FactoryBean的子类,如果是就调用getObject,并将结果返回。 
排序优化主要是利用索引的有序性, select * from table_a where id > 10 order by create desc limit 10可以建立一个联合索引id,create 当按照id查出数据后已经是按照create有序了。   对于分页查询 select * fromtable_a order by id desc limit m n,如果m很大会扫描很多行,可以利用where语句来限制扫描的行数 select * fromtable_a wehre id > x order by id desc limit m n,x的值根据第几页和取 ...

CAS-非阻塞同步

    博客分类:
  • java
CAS(compare-and-swap):比较并交换,依赖于硬件指令集,如果一个变量的值跟期望的值相等就将变量的值替换成新值,并返回旧值,该操作是一个原子操作。 在java中sun.misc.Unsafe类提供了compareAndSwapInt和compareAndSwapLong方法来实现CAS指令。 AtomicInteger就是依赖Unsafe类来实现: public final int incrementAndGet() { for (;;) { int current = get(); int next ...
DispatcherServlet在启动时会根据配置文件创建HandlerMapping,这些HandlerMapping都实现了Ordered接口,DispatcherServlet实例化所有的HandlerMapping后放到一个集合中,并根据order对HandlerMapping进行排序。 DispatcherServlet在接受请求时会循环遍历有序的HandlerMapping集合,RequestMappingHandlerMapping的order是0,开始接收请求。 RequestMappingHandlerMappin继承AbstractHandlerMethodMapp ...
DefaultAnnotationHandlerMapping的继承关系:DefaultAnnotationHandlerMapping实现了ApplicationContextAware接口,通过IOC实例化后会调用ApplicationContextAwareProcessor的postProcessBeforeInitialization方法完成context的注入。   public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdown ...
DispatcherServlet继承FrameworkServlet,FrameworkServlet继承HttpServletBean,HttpServletBean继承HttpServlet,Web容器(比如Resin、Tomcat)启动时是调用HttpServlet的init方法初始化Servlet,HttpServletBean重写了init方法: public final void init() throws ServletException { if (logger.isDebugEnabled()) { logger.debug("Initializ ...
find ./  -name *|xargs grep 'abc'
 最近开始看spring IOC的源码,在网上也看了很多介绍,但是描述的都不是很清楚,可能跟个人的思路有关,自己看了之后按照自己的思路写一下对源码的认识。 对于web应用一般使用ContextLoadListener来加载spring配置,首先从该类开始: public void contextInitialized(ServletContextEvent event) { this.contextLoader = createContextLoader(); if (this.contextLoader == null) { this.contextLoader = ...
在awk中两个特别的表达式,BEGIN和END 提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作。 任何在BEGIN之后列出的操作(在{}内)将在awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。 因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果。           例:累计销售文件xs中的销售金额(假设销售金额在记录的第三字段):              $awk              >'BEGIN { FS=":";print "统计销售金额&quo ...
Global site tag (gtag.js) - Google Analytics