- 博客(32)
- 资源 (40)
- 收藏
- 关注
原创 ConcurrentHashMap原理分析
集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅
2014-05-31 13:11:24 617
转载 Java5 并发学习
Java5 并发学习 在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动、调度、管理线程的一大堆API了。在Java5以后,通过Executor来启动线程比用Thread的start()更好。在新特征中,可以很容易控制线程的启动、执行和关闭过程,还可以很容易使用线程池的特性。 一、创建任务 任务就是一个实现了Runnable接口的
2014-05-30 11:05:06 566
转载 判断一个单链表是否有环及环的连接点
给定一个单链表,只给出头指针h:1、如何判断是否存在环?2、如何知道环的长度?3、如何找出环的连接点在哪里?4、带环链表的长度是多少? 解法:1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。2、对于问题2,记录下问题1的碰
2014-05-23 21:10:28 1450
转载 atoi和itoa
atoi函数是C语言库提供的,是把字符串转换成整型数和把字符串转换成整型数。而itoa函数是广泛应用的非标准C语言扩展函数,由于它不是标准C语言函数,所以不能在所有的编译器中使用,它的功能是把一整数转换为字符串。两个函数功能很好理解,但是它们的实现需要考虑到很多问题,在面试中,很多面试官都会问atoi和itoa的实现,这可以很好的了解程序员编程的功底。那么在实现atoi一般需要考虑到那些情
2014-05-19 22:57:34 1648
转载 Linux异步机制
什么是异步通知:很简单,一旦设备准备好,就主动通知应用程序,这种情况下应用程序就不需要查询设备状态, 特像硬件上常提的“中断的概念”。 比较准确的说法其实应该叫做“信号驱动的异步I/O”,信号是在软件层次上对中断机制的一种模拟。阻塞I/O意味着一直等待设备可访问再访问,非阻塞I/O意味着使用poll()来查询是否可访问,而异步通知则意味着设备通知应用程序自身可访问。(希望用这么一句话能表达我的意思
2014-05-16 21:57:26 2818
转载 Linux系统的各类同步机制
一、锁机制:1、自旋锁:spinlock_t lock=SPIN_LOCK_UNLOCKED;spi_lock_init(&lock);spin_lock(&lock);spin_trylock(&lock);spin_unlock(&lock);spin_lock_irq();spin_lock_bh(&lock);//软件中断安全版本的自旋锁。2、读
2014-05-16 21:41:43 3984
原创 i++ 是否为原子操作 和 Java中的volatile关键字
研究ThreadPoolExecutor的时候,发现其中大量使用了volatile变量。 不知为何,因此做了一番查找,研究: 其中借鉴了很多网上资料。 在了解volatile变量作用前,先需要明白一些概念: 什么是原子操作? 所谓原子操作,就是"不可中断的一个或一系列操作" , 在确认一个操作是原子的情况下,多线程环境里面,我们可以避免仅仅为保护这个操作在外围加上性
2014-05-16 21:29:10 5827 2
转载 TCP的流量控制和拥塞控制
TCP的流量控制和拥塞控制TCP的流量控制1. 利用滑动窗口实现流量控制 如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。 设A向B发送数据。在连接建立时,B告诉了A:“我的接收窗口
2014-05-09 22:05:01 50299 12
原创 数据库原理常见问答
常见问答1. 试述数据库系统有哪些特点(特别是相对于文件系统)?①数据共享,特别是实现数据字段的共享。②较高的数据独立性。③面向整体的数据结构话模型。④可控冗余度。⑤数据的统一管理和控制。2. 简述关系的性质?①任意两个元组不能全同。②元组是非排序的。③属性是非排序的。④属性必须有不同的名称,而不同属性可以来自一个域。⑤同一属性名处的诸属性值(同列)是同类型数据,且必须
2014-05-08 17:05:50 2199
转载 TCP协议疑难杂症全景解析
1.网络协议设计ISO提出了OSI分层网络模型,这种分层模型是理论上的,TCP/IP最终实现了一个分层的协议模型,每一个层次对应一组网络协议完成一组特定的功能,该组网络协议被其下的层次复用和解复用。这就是分层模型的本质,最终所有的逻辑被编码到线缆或者电磁波。 分层模型是很好理解的,然而对于每一层的协议设计却不是那么容易。TCP/IP的漂亮之处在于:协议越往上层越复杂。我们把网络定义
2014-05-07 10:52:57 725
转载 随便扯扯,程序员应该具备哪些素质
趁着这几天无事,好好总结一下从事软件开发以来的一些想法,这篇blog尝试从我自身的一些经历来谈谈程序员应该具备哪些素质。如有不足之处,还请不吝赐教!下面,我将列出并展开所有我认为程序员必须具备的素质。基础知识你也许是像我一样的自学者,没有数电/模电,编译原理,操作系统原理,网络与数据库等方面的知识,但是对于这些你应该尝试去了解、理解。当初跨专业考研之时学习的操作系统/网络/
2014-05-07 10:17:24 943
转载 细数JDK里的设计模式
结构型模式:适配器模式:用来把一个接口转化成另一个接口。java.util.Arrays#asList()javax.swing.JTable(TableModel)java.io.InputStreamReader(InputStream)java.io.OutputStreamWriter(OutputStream)javax.xml.bind.annotation.adapt
2014-05-07 00:03:35 617
转载 有一堆袜子,如何用最快速高效的算法来给袜子配对?
【问题描述】昨天我在整理从洗衣店洗干净的一堆袜子,发现我用的方法非常不高效。我用了一个最简单的方法:拿到一只袜子,然后从头到尾去找另外一只袜子。用这种方法需要重复平均超过 n/2*n/4=n2/8 双袜子。作为一个计算机科学家,我在想我应该怎么做?我立马就想到了根据尺寸颜色排序来得到一个复杂度为O(NlogN)的方法。哈希或其他“非原地”的方法在这里不可取,因为我不可能复制
2014-05-06 11:02:25 1755
转载 为何智能路由器们要用开源系统?
小米日前正式推出了小米路由器,在业界又一次引发了关于“抢占客厅”讨论。这两款小米路由使用的miWiFi系统,不出所料是基于开源OpenWRT(OpenWRT也基于Linux开发)系统的定制版本。360安全路由360SOS,是与硬件厂商共同基于开源Linux系统的定制版本。曾经以小米营销模式为榜样引起高调关注的极路由,其使用的HiWiFi系统,也基于OpenWRT进行了定制。而果壳路由和小度路由的系
2014-05-06 10:10:01 1424
转载 路由器操作系统那点事
很多朋友跟我讲,如果不OpenWRT,哪这路由就没法儿用了!非常理解大家对OpenWRT的热爱,我做为一个开源项目的拥护者和参与者,今天来给大家讲讲路由器操作系统的那点事儿。让大家了解下各种固件的来由。先来说说现在市面上的各种路由器的固件有哪些种吧。中国地大物博、奇葩众多,我国的无线路由器厂家802.11n的年代里,以价格这个永垂不朽的利器将八国联军全部打夸,造就了一代传奇。他们使用了很多
2014-05-06 09:54:32 1803
转载 如何选择开源许可证?
如何为代码选择开源许可证,这是一个问题。世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种----GPL、BSD、MIT、Mozilla、Apache和LGPL----之中做选择,也很复杂。乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择。这是我见过的最简单的讲解,只用两分钟,你就能搞清楚这六种许可证之间的最大区别。下面是
2014-05-06 09:40:05 708
转载 Ubuntu 12.04常用的快捷键
超级键操作 1、超级键(Win键)–打开dash。 www.2cto.com 2、长按超级键– 启动Launcher。并快捷键列表。 3、按住超级键,再按1,2,3等数字键–从Launcher打开一个应用程序,当你按住超级键时,每个应用程序图标上都会显示一个数字,按下对应的数字就会打开盖应用程序。 4、超级键+A–从Launcher打开应用程序窗口。
2014-05-05 00:36:09 677
原创 B/S与C/S结构安全的相对比较
关于网络安全软件B/S、C/S两种结构的优劣,近两年来出现过一些技术性的争论,但目前业内人士已经基本达成共识,B/S结构的优越性得到了普遍的认可,B/S结构是否能成为C/S结构的终结者还有待时间的验证。何为C/S、B/S结构 C/S结构软件(即客户机/服务器模式)分为客户机和服务器两层,客户机不是毫无运算能力的输入、输出设备,而是具备了一定的数据处理和数据存储能力;通
2014-05-05 00:25:38 10304
转载 第一范式、第二范式及第三范式的定义与举例 and SQL常用函数集锦
第一范式存在非主属性对码的部分依赖关系 R(A,B,C) AB是码 C是非主属性 B-->C B决定C C部分依赖于B第一范式定义:如果关系R 中所有属性的值域都是单纯域,那么关系模式R是第一范式的那么符合第一模式的特点就有1)有主关键字2)主键不能为空,3)主键不能重复,4)字段不可以再分例如: StudyNo | Name | Sex
2014-05-05 00:11:20 10159
原创 ORA-01843的错误 插入日期数据时报错
当我在SQLPLUS执行 :INSERT INTO customers ( customer_id, first_name, last_name, dob, phone) VALUES ( 5, 'Doreen', 'Blue', '20-MAY-1970', NULL);出现 “ORA-01843: 无效的月份 ”这个错误。 Google之后找到下面的这篇文章
2014-05-04 21:24:06 3478
转载 jvm如何判断对象已死?
在java的垃圾回收中,jvm是如何判断堆中的对象是否已死呢?主流的判断方法有两种。1.引用计数算法: 这种算法的思路是如果某一个对象被别的对象引用,那么就把他们引用计数器加上1,这样当进行垃圾回收时如何判断该引用的数量为0,此时就代表没有进行任何对象对其进行引用,这种方法判断效率很高,在很多情况下是个不错的选择,例如微软的COM,AS3的FlashPlayer,Python语言
2014-05-04 00:56:12 853
转载 java nio 简介
首先了解下所谓的java nio是个什么东西! 传统的并发型服务器设计是利用阻塞型网络I/O 以多线程的模式来实现的,然而由于系统常常在进行网络读写时处于阻塞状态,会大大影响系统的性能;自Java1. 4 开始引入了NIO(新I/O) API,通过使用非阻塞型I/O,实现流畅的网络读写操作,为开发高性能并发型服务器程序提供了一个很好的解决方案。这就是java nio 首
2014-05-03 14:00:32 632
原创 随机访问文件RandomAccessFile 与 内存映射文件MappedByteBuffer
一.RandomAccessFile RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的。但是该类仅限于操作文件。 RandomAccessFile不属于InputStream和OutputStream类系的。实际上,除了实现
2014-05-03 13:38:38 3222
原创 Linux常用命令大全
系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpui
2014-05-03 01:27:01 1137
原创 Linux中查看进程占用内存和系统资源情况的命令
用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况...还有一种办法是 ps -ef | sort -k7 ,将进程按运行时间排序,看哪个进程消耗的cpu时间最多。top:主要参数 d:指定更新的间隔,以秒计算。 q:没有任何延迟
2014-05-03 00:40:17 10947
原创 Oracle 11g 错误:ORA-28002: the password will expire within 7 days 解决方法
ERROR:ORA-28002: the password will expire within 7 days错误是提示密码快过期了,有两个办法解决这个问题。一. 修改已经报错用户的密码已经被报告了密码快要过期的账户必须再改一次密码(需要DBA权限)以system用户为例sqlplus / as sysdbaalter user system identi
2014-05-02 21:57:12 13290
原创 Ubuntu 12.04 安装JDK 8和Eclipse
Ubuntu 12.04 下安装 JDK8方法一:(缺点是安装时附加openjdk等大量程序并无法去除,优点是安装简单)$ sudo apt-get install eclipse方法二:(优点是安装内容清爽,缺点是配置麻烦)1、安装JDK,参考1、下载 JDK 8从http://www.oracle.com/technetwork/java/javaseb
2014-05-02 01:06:11 18136 4
原创 Ubuntu 12.04 安装WPS
1. 安装包下载:wps官网的 debian .deb 包2 根据wifi说明,需要一下三个lib:libtiff.so.4libpng12.so.0libjpeg.so.62通过以下命令查看是否具备: liaoqianwen@liaoqianwen-F80S:~ aptitude search libtiff 如果没有,安装: liao
2014-05-01 15:38:48 2344
原创 Ubuntu包管理命令 dpkg、apt和aptitude
起初GNU/Linux系统中只有.tar.gz。用户 必须自己编译他们想使用的每一个程序。在Debian出现之後,人们认为有必要在系统 中添加一种机 制用来管理 安装在计算机上的软件包。人们将这套系统称为dpkg。至此着名的‘package’首次在GNU/Linux上出现。不久之後红帽子也开始着 手建立自己的包管理系统 ‘rpm’。GNU/Linux的创造者们很快又陷入了新的窘境。他们希望通过
2014-05-01 14:55:18 1716
原创 ubuntu 12.04 安装 codeblock 12.11
一: Ubuntu 14.04版已经发布了,但本人还是12.04版的,主要是笔记本是双系统,担心升级之后造成不必要的麻烦。所以还在用12.04。在Linux环境下的 C/C++ 开发IDE中,Codeblocks是一个很不错的工具。 现在最新版的是Codeblocks 13.12了。 但我在安装Codeblocks 14.12出错了。(两种安装方法:1. 下载Codeblo
2014-05-01 14:17:19 4244
Eclipse的Fat jar打包插件
2014-01-08
java创建 JSON 格式的数据
2013-12-29
java.nio API详解
2013-12-28
IntelliJ+IDEA使用技巧
2013-12-12
javax.jms.jar
2013-10-17
javax.persistence.jar
2013-10-17
javax.ejb.jar
2013-10-17
javax.ejb.jar下载
2013-10-17
javax.servlet.jar下载
2013-10-17
Java语言程序设计 第8版 Y.Daniel Lang 编程练习题+课后复习题+例题程序
2013-07-18
GA79-2010 消防球阀 标准
2017-05-16
Java 开源项目中文文档 Spring、Hibernate、Mybatis、Velocity、Guava、JFreeChart
2016-02-23
dubbo.xsd文件
2015-09-30
解决api-ms-win-crt-runtime-l1-1-0.dll 丢失问题 绿色版 工具下载
2015-07-27
UFO数据集+60000条记录
2015-04-29
codeblocks-13.12-1_i386.debian.stable.tar.xz
2014-05-01
codeblocks_12.11-2_i386-debian-stable.tar.bz2
2014-05-01
《Java并发编程实战》中文版 Java Concurrency in Practice
2014-01-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人