自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (3)
  • 收藏
  • 关注

转载 JAVA多线程和并发基础面试问答

原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。(校对注:非常赞同这个观点)Ja

2014-12-31 14:22:58 476

转载 Java线程面试题 Top 50

原文链接:http://www.importnew.com/12773.html        不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。在典型

2014-12-31 12:08:49 518

转载 Java多线程编程(十)-并发编程原理(分布式环境中并发问题)

       在分布式环境中,处理并发问题就没办法通过操作系统和JVM的工具来解决,那么在分布式环境中,可以采取一下策略和方式来处理:避免并发时间戳串行化数据库行锁统一触发途径避免并发在分布式环境中,如果存在并发问题,那么很难通过技术去解决,或者解决的代价很大,所以我们首先要想想是不是可以通过某些策略和业务设计来避免并发。比如通过合理的时间调度,避开共享资源的存取冲突。另外

2014-12-30 17:26:12 3611

转载 Java多线程编程(九)-并发编程原理(Java多线程性能优化)

       大家使用多线程无非是为了提高性能,但如果多线程使用不当,不但性能提升不明显,而且会使得资源消耗更大。下面列举一下可能会造成多线程性能问题的点:死锁过多串行化过多锁竞争切换上下文内存同步下面分别解析以上性能隐患死锁 关于死锁,我们在学习操作系统的时候就知道它产生的原因和危害,这里就不从原理上去累述了,可以从下面的代码和图示重温一下死锁产生的原因:publ

2014-12-30 16:41:37 608

转载 Java多线程编程(八)-并发编程原理(Java多线程开发技巧)

       很多开发者谈到Java多线程开发,仅仅停留在new Thread(...).start()或直接使用Executor框架这个层面,对于线程的管理和控制却不够深入,通过读《Java并发编程实践》了解到了很多不为我知但又非常重要的细节。不应用线程池的缺点 有些开发者图省事,遇到需要多线程处理的地方,直接new Thread(...).start(),对于一般场景是没问题的

2014-12-30 16:24:34 513

转载 Java多线程编程(七)-并发编程原理(Java并发工具)

        基于线程安全的一些原则来编程当然可以避免并发问题,但不是所有人都能写出高质量的线程安全的代码,并且如果代码里到处都是线程安全的控制也极大地影响了代码可读性和可维护性。因此,Java平台为了解决这个问题,提供了很多线程安全的类和并发工具,通过这些类和工具就能更简便地写线程安全的代码。归纳一下有以下几种:同步容器类并发容器类生产者和消费者模式阻塞和可中断方法Synchr

2014-12-30 16:01:04 452

转载 Java多线程编程(六)-并发编程原理(Java存储模型和共享对象)

很多程序员对一个共享变量初始化要注意可见性和安全发布(安全地构建一个对象,并其他线程能正确访问)等问题不是很理解,认为Java是一个屏蔽内存细节的平台,连对象回收都不需要关心,因此谈到可见性和安全发布大多不知所云。其实关键在于对Java存储模型,可见性和安全发布的问题是起源于Java的存储结构。Java存储模型原理 有很多书和文章都讲解过Java存储模型,其中一个图很清晰地说明了其

2014-12-30 11:36:04 440

转载 Java多线程编程(五)-并发编程原理(写线程安全的Java代码)

在写Java程序的时候,何时需要进行并发控制,关键在于判断这段程序或这个类是否是线程安全的。当多个线程访问一个类时,如果不用考虑这些线程在运行时环境下的调度和交替执行,并且不需要额外的同步,这个类的行为仍然是正确的,那么称这个类是线程安全的。我们设计类就是要在有潜在并发问题存在情况下,设计线程安全的类。线程安全的类可以通过以下手段来满足:不跨线程共享变量使状态变量为不可变的在任何访

2014-12-30 11:31:53 481

转载 Java多线程编程(四)-并发编程原理(操作系统篇)

在多线程、多处理器甚至是分布式环境的编程时代,并发是一个不可回避的问题,很多程序员一碰到并发二字头皮就发麻,也包括我。既然并发问题摆在面前一个到无法回避的坎,倒不如拥抱它,把它搞清楚,决心花一定的时间从操作系统底层原理到Java的基础编程再到分布式环境等几个方面深入探索并发问题。先就从原理开始吧。并发产生的原因 虽然从直观效果上,处理器是并行处理多项任务,但本质上一个处理器在某个时

2014-12-30 11:12:32 523

转载 大型网站架构演变和知识体系

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这篇文章中将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的知识体系,希望能给想从事

2014-12-30 06:29:50 401

转载 Java多线程编程(三)-并发编程原理(java虚拟机序)

Java的并发编程是依赖虚拟机内存模型的三个特性实现的:(1).原子性(Atomicity):原子性是指不可再分的最小操作指令,即单条机器指令,原子性操作任意时刻只能有一个线程,因此是线程安全的。Java内存模型中通过read、load、assign、use、store和write这6个操作保证变量的原子性操作。long和double这两个64位长度的数据类型java虚拟机

2014-12-29 15:46:47 454

转载 Java多线程编程(二)-并发编程原理(java虚拟机)

随着多核CPU的高速发展,为了充分利用硬件的计算资源,操作系统的并发多任务功能正变得越来越重要,但是CPU在进行计算时,还需要从内存读取输出,并将计算结果存放到内存中,然而由于CPU的运算速度比内存高几个数量级,CPU内的寄存器数量和容量有限,为了不让CPU长时间处于等待内存的空闲状态,在CPU和内存之间引入了速度接近CPU的高速缓存Cache作为CPU和内存之间的缓冲。计算机硬件并发的原

2014-12-29 15:44:44 531

转载 致诸位新程序员:来自Chuck Jazdzewski慈父般的忠告

原文链接:http://www.ituring.com.cn/article/details/18838英文原文:Fatherly Advice To New Programmers记住这几句话,学无止境。(Never stop learning.)沟通至关重要。(Communication is critical.)履行承诺,胜过交付。(Under promise, over del

2014-12-29 06:09:26 449

转载 努力成为优秀的工程师

原文链接:http://www.programmer.com.cn/15606/摘要:华为诺亚方舟实验室首席科学家李航结合自己的亲身经验,提出了成为优秀工程师应该遵循的五项原则:面对问题,解决问题;系统地解决问题;站在用户角度看问题;以最小的代价获得最大的效益;磨在细处。  我一直在IT企业的研究部门任职,迄今经历了三家公司:NEC、微软、华为。工作都是既有基础研究,又有产

2014-12-27 21:38:37 480

转载 分享成为高效程序员的7个重要习惯

原文链接:http://gamerboom.com/archives/65164#作为软件工程师,你希望从工作中获得的是:稳定的薪水、参与好项目的机会、好工作的跳板或只是和其他程序员成为好基友。这里的“高效”,我指的是按时完符合要求的项目的能力。经历过不少软件编写工作后,我相信以下实践会帮助你学会“高效”,同时提高专业声望、拉长职业寿命,和获得个人满足。1. 理解你的需求  成

2014-12-27 20:39:16 453

转载 Java多线程编程(一)-多线程编程设计要点

1.多线程中有主内存和工作内存之分, 在JVM中,有一个主内存,专门负责所有线程共享数据;而每个线程都有他自己私有的工作内存, 主内存和工作内存分别在JVM的stack区和heap区。2.线程的状态有'Ready', 'Running', 'Sleeping', 'Blocked', 和 'Waiting'几个状态,'Ready' 表示线程正在等待CPU分配允许运行的时间。3.线程

2014-12-26 15:23:03 480

原创 Java线程(十)-死锁

如果服务器当机或应用程序运行得如蜗牛,其中可能原因之一是被称为死锁线程问题。线程死锁就是一直处于堵塞BLOCKED 状态。什么是死锁?两个线程A和B,那么死锁发生时,一般是两个对象的锁相互等待造成的。线程发生死锁可能性很小,即使看似可能发生死锁的代码,在运行时发生死锁的可能性也是小之又小。下面看个死锁的例子:package com.thread;/** * Java线

2014-12-26 13:55:47 473

原创 Java线程(九)-生产者消费者模型

对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的。就像学习每一门编程语言一样,Hello World!都是最经典的例子。实际上,准确说应该是“生产者-消费者-仓库-产品”模型,四者缺一不可。对于此模型,他们之间的关系应该明确以下几点:(01) 生产者仅仅在仓库未满时候生产,仓满则停止生产。(02) 消费者仅仅在仓库有产品时候才能消费,仓空则等待。(03)

2014-12-26 13:19:00 555

转载 好的程序员到底好在哪里?

原文链接:http://www.oschina.net/translate/what-makes-a-good-programmer-good英文原文:What Makes a Good Programmer Good?  我这些年和许多程序员工作过——他们有些人超级棒,有些明显比较平常。因为我近来和一些熟练的程序员工作的很愉快,我花了一些时间考虑我羡慕他们什么。是什么让一个好

2014-12-26 12:57:40 485

转载 Facebook和Google如何激发工程师的创造力

原文链接:http://taiwen.lofter.com/post/664ff_ad8a15今天终于“朝圣”了两个伟大的公司——Facebook和Google,对创造力和驱动力的来源有了更多的理解,尤其是对于典型的知识型工作者——软件工程师,如何激发和维持他们的内心激情。简单来说,就是充分满足物质需求,然后将能去掉的条条框框都拿掉,让这些聪明的人自行其是,自己管理自己或者向上管理

2014-12-26 12:52:57 405

转载 中国软件开发工程师之痛

原文链接:http://blog.csdn.net/hzliyun/article/details/9417085在近期的一次会议上,有高层谈到之前在中国觉得自己做得很牛,但与美国同行接触后却发现与人家存在很大的差距,这一点我在外企工作时也有过同样的体会。真正与外国同行接触后才会知道什么是差距,在这篇文章中我从软件开发工程师的角度以“痛点”的形式来谈一谈我所认为的差距。  技能之痛

2014-12-26 06:53:05 467

转载 技术负责人的三种角色

来源:http://www.csdn.net/article/2014-11-11/2822592企业管理是一盘棋,而技术是支撑企业生存和发展的重要一环。因此,作为企业的技术负责人,无论企业处于发展中的哪个阶段,实施管理都无外乎是要做好几件事:定目标,在深入了解企业的资源状况和整体目标的基础上,做好相对固定的长期技术计划;分任务,做好计划以后,把计划分解成若干技术执行人员能够充分理解和

2014-12-26 06:44:26 451

转载 HashMap与HashTable(三)-区别与联系

Hashtable和 HashMap做为 Map的基本特性 两者都实现了Map接口,基本特性相同-         对同一个Key,只会有一个对应的value值存在-         如何算是同一个Key? 首先,两个key对象的hash值相同,其次,key对象的equals方法返回真内部数据结构Hashtable和HashMap的内部数据结构相

2014-12-26 06:20:15 559

原创 HashMap与HashTable(二)-HashMap原理与实现

HashMap在Java开发中有着非常重要的角色地位,每一个Java程序员都应该了解HashMap。主要从源码角度来解析HashMap的设计思路,并且详细地阐述HashMap中的几个概念,并深入探讨HashMap的内部结构和实现细节,讨论HashMap的性能问题。1. HashMap设计思路以及内部结构组成HashMap设计思路        Map是一种以键值对存储数据的

2014-12-25 15:50:49 1993 3

原创 HashMap与HashTable(一)-源代码

一、HashMap源代码:/* * %W% %E% * * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package java.ut

2014-12-25 14:32:43 754

原创 Java线程(八)-线程的同步

一、同步方法线程的同步是保证多线程安全访问竞争资源的一种手段。线程的同步是Java多线程编程的难点,往往开发者搞不清楚什么是竞争资源、什么时候需要考虑同步,怎么同步等等问题,当然,这些问题没有很明确的答案,但有些原则问题需要考虑,是否有竞争资源被同时改动的问题?对于同步,在具体的Java代码中需要完成以下两个操作:把竞争访问的资源标识为private;同步哪些修改变量的

2014-12-24 16:50:36 406

原创 Java线程(七)-线程的调度

一、休眠Java线程调度是Java多线程的核心,只有良好的调度,才能充分发挥系统的性能,提高程序的执行效率。这里要明确的一点,不管程序员怎么编写调度,只能最大限度的影响线程执行的次序,而不能做到精准控制。线程休眠的目的是使线程让出CPU的最简单的做法之一,线程休眠时候,会将CPU资源交给其他线程,以便能轮换执行,当休眠一定时间后,线程会苏醒,进入准备状态等待执行。线程休眠的

2014-12-24 15:46:01 389

原创 Java线程(六)-线程的交互

一、线程交互的基础知识void notify()  唤醒在此对象监视器上等待的单个线程。void notifyAll()  唤醒在此对象监视器上等待的所有线程。void wait()  导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。当然,wait()还有另外两个重载方法:void wait(long timeout

2014-12-24 15:31:12 442

原创 项目管理积分制度

背景:在项目中,通常由于项目的繁忙使得项目任务的跟踪很大程度上失去意义,导致在最后进行项目任务结算与项目成员工作考核上没有更好的依据,只能凭借印象或者项目经理的主观性做考核。为使项目经理更清晰的分配工作计划,同时更加准确、客观的对项目成员的工作做出考核,特制定项目成员积分制度。目的:1、 项目经理能够更加明确在一定时间内的项目任务与计划。2、 项目经理对项目的进度能够宏观的掌控

2014-12-24 13:18:52 3930

转载 软件开发中的质量保证

如何保证软件的质量一直就是令人头疼的事,这里列了一个自己实际运作的一套用于保证软件质量的体系,还望大家多加指点。软件的质量保证的关注点主要分为三个方面:1、对于需求的满足      保证软件的设计/实现对于需求是满足的。2、对于设计的满足      保证代码的实现是遵循设计的。3、代码的质量/性能      避免代码实现造成的性能或其他的一些非功能性问题。

2014-12-24 06:32:31 1701

原创 Java线程(五)-线程的同步与锁

一、同步问题提出线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。例如:两个线程ThreadA、ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据。public class Foo { private int x = 100; public int getX() { return x; }

2014-12-23 22:27:49 460

原创 Java线程(四)-线程状态的转换

一、线程状态线程的状态转换是线程控制的基础。线程状态总的可分为五大状态:分别是创建、销毁、可运行、运行、等待/阻塞。用一个图来描述如下:1、创建状态:线程对象已经创建,还没有在其上调用start()方法。2、可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。当start()方法调用时,线程首先进入可运行状态。在线程运行之后或者从阻塞、等待或睡眠状

2014-12-23 22:09:08 623

原创 谁与争锋-亨利大帝(谢幕)

当时光的列车缓缓驶过酋长球场.32岁的亨利就坐在哪里.深情的目光望去.都是自己22岁的影子.还是那辆列车.随着时光送走了匆匆过客.静静开往另一片大陆.33岁的亨利就在那里.深情的目光望去.依稀浮现着自己25岁的模样.远方的期许固然美好.而列车短暂的停留.更好像岁月的美丽回眸.当时光奏出回家的天籁.35岁的亨利就在那里.深情的目光望去.勾勒出自己29岁的动人画面.渐行渐远的车辙默默都走了属于4座城市

2014-12-23 20:49:05 1523

原创 Java线程(三)-线程栈模型与线程的变量

要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型。线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶。线程栈的内容是随着程序的运行动态变化的,因此研究线程栈必须选择一个运行的时刻(实际上指代码运行到什么地方。下面通过一个示例性的代码说明线程(调用)栈的变化过程:这幅图描述在代码执行到两个不同时刻1、2时候,虚拟机线程调用栈示意图。当程序执行到

2014-12-23 13:45:34 481

原创 Java线程(二)-创建与启动

一、定义线程1、扩展java.lang.Thread类。此类中有个run()方法,应该注意其用法:public void run(){}如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。Thread 的子类应该重写该方法。2、实现java.lang.Runnable接口。使用

2014-12-23 13:31:49 560

原创 Java线程(一)-概念与原理

一、操作系统中线程和进程的概念现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的

2014-12-23 13:23:32 451

转载 Linux技术救火命令

线上查问题的时候有些命令是必备,有必要把一些常用命令总结一下(这类命令和相关参数相当多,只总结自己常用得到的),查找问题一般可以分为系统参数、性能参数、进程、内存、网络、存储、内存和jvm这么几类:系统参数cat /proc/cpuinfo  cpu相关参数cat/proc/meminfo内存相关参数cat/proc/loadavg负载情况性

2014-12-22 21:57:21 431

原创 Java虚拟机(七)-JVM内存模型总结

JVM内存模型优点 1. 内置基于内存的并发模型:多线程机制2. 同步锁Synchronization3. 大量线程安全型库包支持 4. 基于内存的并发机制,粒度灵活控制,灵活度高于数据库锁。 5. 多核并行计算模型 6. 基于线程的异步模型。JVM性能的人为问题 1. 关键原因是:没有正确处理好对象的生命周期。 2. 需要从需求中找出存在自然边界的业务

2014-12-22 17:33:59 635

转载 常见项目风险

风险主要是指可能会对项目的进度,质量和成本产生影响的因素,事件——尚未发生的叫风险,已经发生的叫问题. 例如 1. 内部风险 a) 团队内部分工定位不明确,信息沟通不透明 b) 需求变更:包括客户提出新需求、原有需求发生变更、原有需求不够清晰 c) 系统变更:包括平台核心功能升级、已上线系统的升级、新模块上线 d) 技术变更:包括核心技术的更换,或者新技术、新工具的引入

2014-12-22 17:32:05 5358

转载 何谓精通

精通这个词估计是在简历中最常见到的词了,简历上通常都充斥着精通struts2、精通java、精通hibernate等等词语,近来经常看些比较底层的书,越来越体会到精通这个词应该具备的份量了,也越来越理解以前朋友和我说的在国外工程和研究是分的很清楚的原因了,在这篇blog里来扯扯自己对精通这个词的看法。 先来看几个面试的片段,从中也许能看出些端倪,:)----------------

2014-12-22 17:30:59 432

Linux下面使用sqlplus热键冲突

Linux下面使用sqlplus热键冲突 解决方案包中包括:libtermcap-devel-2.0.8-46.1.i386.rpm rlwrap-0.42.tar.gz readline-devel-5.1-1.1.i386.rpm

2015-05-07

TreeMap源码

TreeMap源码是基于数据结构中的红黑树进行设计并开发的。

2015-01-13

线程池的简单实现

服务器程序利用线程技术响应客户请求已经司空见惯,可能您认为这样做效率已经很高,但您有没有想过优化一下使用线程的方法。这里简单的实现线程池技术的JAVA代码。

2015-01-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除