`
异步获取爱
  • 浏览: 80784 次
  • 性别: Icon_minigender_1
  • 来自: 大男子主义世界
社区版块
存档分类
最新评论
文章列表
      我在写这篇文章之前,我对Java内部类也不是很清楚,只知道简单的应用。前几天有个朋友问我怎么理解Java内部类,我当时就有点傻了,想了半天也没有说出来,我想,如果让大家来回答这个问题,大家该怎么回答呢?我 ...
Java是一种伟大的语言。它管理内存,传授面向对象的编程(思想),使我们更好地用它来编码。另外,它确实是一种“编写一次,到处运行“的语言。然而,Java应用程会遇到一些常见的开发者和应用者独耳熟能详的性能挑战。 ...
    最近在阅读 《Inside the JVM》 这本书,结合一些日常工作学习中的感想,随便写一些东西,蜻蜓点水,不必有章法。 关于“单例同步”:     一直有人在问单例对象的并发调用是否需要同步,基本属于“月经帖”了,答 ...
    线程安全总结(二)所谓线程的“工作内存”到底是个什么东西?有的人认为是线程的栈,其实这种理解是不正确的。看看JLS(java语言规范)对线程工作内存的描述,线程的working memory只是cpu的寄存器和高速缓存的抽象描述 ...
最近想将java基础的一些东西都整理整理,写下来,这是对知识的总结,也是一种乐趣。已经拟好了提纲,大概分为这几个主题: java线程安全,java垃圾收集,java并发包详细介绍,java profile和jvm性能调优 。慢慢写吧。本人jameswxx ...
最近在发现使用Taobao的时候的一个小细节,于是便萌发起了写这篇文章。       当我们在 www.taobao.com 中进行登录之后,然后直接切换到 www.tmall.com 域名下,发现www.tmall.com首页的最顶部马上显示成了:  您好, andyfaces。 首先,用户名应该是存储在cookie中的,于是在taobao.com的域名中用 firefox看到用户名确实是存储在 cookie, 而tmall.com中没有存储该cookie:       可以确定的是对于cookie来说肯定是不允许垮域访问的。无论是通过JS还是Server端程序来说都是如此,那么tm ...
CAS(Central Authentication Service) 是 Yale 大学发起的一个开源项目,据统计,大概每 10 个采用开源构建 Web SSO 的 Java 项目,就有 8 个使用 CAS 。对这些统计,我虽然不以为然,但有一点可以肯定的是, CAS 是我认为最简单实效,而且足够安全的 SSO 选择。        本节主要分析 CAS 的安全性,以及为什么 CAS 被这样设计,带着少许密码学的基础知识,我希望有助于读者对 CAS 的协议有更深层次的理解。 从结构体系看, CAS 包含两部分: l         CAS Server CAS Server 负责完成对用户的认 ...
简介      锁(lock)作为用于保护临界区(critical section)的一种机制,被广泛应用在多线程程序中。无论是 Java 语言中的 synchronized 关键字,还是 java.util.concurrent 包中的 ReentrantLock,都是多线程应用开发人员手中强有力的工具 ...
1. 介绍     MapReduce是google发明的一种编程模型。在这种编程模型下,用户通过定义一个map函数和一个reduce函数来解决问题。map函数对用户输入的键/值对(key/value pair)进行处理(处理时可能只有值这一项有用),生成一系列新的键/值对作为中间结果;系统(MapReduce的实现)对map函数生成的键/值对进行处理,将同属于一个键(key)的值(value)组合在一起,生成键/值列表((key/list of values) pair)对;reduce函数将键/值列表对作为输入,对同属于一个键的值列表进行处理,生成最终处理结果输出。     如果一个问题可 ...
一、TCP/IP 协议介绍   在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容。TCP/IP协议是分层的,从底层至应用层分别为:物理层、链路层、网络层、传输层和应用层,如下图所示:     从应用层至物理层,数据是一层层封装,封装的方式一般都是在原有数据的前面加一个数据控制头,数据封装格式如下:  其中,对于TCP传输协议,客户端在于服务器建立连接前需要经过TCP三层握手,过程如下: 二、HTTP协议 2.1 简介   超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议,自 1990 年起,H ...
ConcurrentHashMap中主要实体类就是三个:ConcurrentHashMap(整个Hash 表),Segment(桶),HashEntry(节点),对应上面的图可以看出之间的关系。     get方法(请注意,这里分析的方法都是针对桶的,因为ConcurrentHashMap的最大改进就是将粒度细化到了桶上),首先判断了当前桶的数据 个数是否为0,为0自然不可能get到什么,只有返回null,这样做避免了不必要的搜索,也用最小的代价避免出错。然后得到头节点(方法将在下面涉及) 之后就是根据hash和key逐个判断是否是指定的值,如果是并且值非空就说明找到了,直接返回;程序非常简单, ...
用一个Map存放常用的Object,这个Map的并发读取的频率很高,而写入的频率很低,一般只在初始化、或重新装装载的时候写入。读写冲突虽然很少发生,不过一旦发生,Map的内部结构就可能乱掉,所以,我们不得不为Map加上同步锁。 我们可以采用Copy On Write的机制,来加强Map的读取速度。 Copy On Write是这样一种机制。当我们读取共享数据的时候,直接读取,不需要同步。当我们修改数据的时候,我们就把当前数据Copy一份副本,然后在这个副本上进行修改,完成之后,再用修改后的副本,替换掉原来的数据。这种方法就叫做Copy On Write。 Oracle等关系数据库的数据修改 ...
启动Tomcat时,报Missing config file:WEB-INF/dwr/dwr-**.xml 自己的该文件却在项目中存在。 寻找了一些资料,下面是刚刚的解决方案,以后有发现其他的解决方案或原理继续贴上去。 解决方案一: 可能你的Tomcat是6.0.16版本的,换个其他版本的试试。

排列組合

說明 將一組數字、字母或符號進行排列,以得到不同的組合順序,例如1 2 3這三個數的排列組合有:1 2 3、1 3 2、2 1 3、2 3 1、3 1 2、3 2 1。 解法 可以使用遞迴將問題切割為較小的單元進行排列組合,例如1 2 3 4的排列可以分為1 [2 3 4]、2 [1 3 4]、3 [1 2 4]、4 [1 2 3]進行排列,這邊利用旋轉法,先將旋轉間隔設為0,將最右邊的數字旋轉至最左邊,並逐步增加旋轉的間隔,例如: 1 2 3 4 -> 旋轉1 -> 繼續將右邊2 3 4進行遞迴處理 2 1 3 4 -> 旋轉1 2 變為 2 1-> 繼續將右邊1 3 ...
說明 如果搜尋的數列已經有排序,應該儘量利用它們已排序的特性,以減少搜尋比對的次數,這是搜尋的基本原則,二分搜尋法是這個基本原則的代表。 解法 在二分搜尋法中,從數列的中間開始搜尋,如果這個數小於我們所搜尋的數,由於數列已排序,則該數左邊的數一定都小於要搜尋的對象,所以無需浪費時間在左邊的數;如果搜尋的數大於所搜尋的對象,則右邊的數無需再搜尋,直接搜尋左邊的數。 所以在二分搜尋法中,將數列不斷的分為兩個部份,每次從分割的部份中取中間數比對,例如要搜尋92於以下的數列,首先中間數索引為(0+9)/2 = 4(索引由0開始): [3 24 57 57 67 68 83 90 92 95] 由於6 ...
Global site tag (gtag.js) - Google Analytics