自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GarfieldEr007的专栏

勤奋治学 深度思考 静心钻研 先苦后甜

  • 博客(173)
  • 资源 (1)
  • 收藏
  • 关注

转载 提升编程水平的靠谱方法

杰洛德·桑托 (Jerod Santo) 写于 2016年12月19日编者按:我原先曾在2010年5月,为“编程加油站”网( Fuel Your Coding )写过这个话题。很不幸,那家网站现已关闭了,所以我重新在本网站发表这篇文章,以飨后来的读者。我原本打算更新些许应时的内容,而今想想保持原样也就足够了。没更新的那些部分也许看上去有些可笑,不过,呵呵,希望您乐在其中!

2017-02-28 22:30:43 1408

转载 谈谈Java反射机制

写在前面:什么是java反射机制?我们又为什么要学它?当程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。我们认为java并不是动态语言,但是它却有一个非常突出的动态相关机制,俗称:反射。IT行业里这么说,没有反射也就没有框架,现有的框架都是以反射为基础。在实际项目开发中,用的最多的是框架,填的最多的是类,反射这一概念就是将框架和类揉在一起的调和剂。所以,反射才是接触项目开

2017-02-24 23:26:23 931

转载 Java并发:volatile内存可见性和指令重排

volatile两大作用1、保证内存可见性2、防止指令重排此外需注意volatile并不保证操作的原子性。(一)内存可见性1 概念JVM内存模型:主内存和线程独立的工作内存Java内存模型规定,对于多个线程共享的变量,存储在主内存当中,每个线程都有自己独立的工作内存(比如CPU的寄存器),线程只能访问自己的工作内存,不可以访问其它线程的工作内

2017-02-24 23:25:28 937

转载 死磕Java并发:Java内存模型之happens-before

在上篇博客(死磕Java并发:深入分析volatile的实现原理)LZ提到过由于存在线程本地内存和主内存的原因,再加上重排序,会导致多线程环境下存在可见性的问题。那么我们正确使用同步、锁的情况下,线程A修改了变量a何时对线程B可见?我们无法就所有场景来规定某个线程修改的变量何时对其他线程可见,但是我们可以指定某些规则,这规则就是happens-before,从JDK 5 开始,JMM就使用

2017-02-24 23:25:09 914

转载 多线程之线程池的应用

在Java1.5中提供了一个非常高效实用的多线程包:java.util.concurrent,提供了大量高级工具,可以帮助开发者编写高效易维护、结构清晰的Java多线程程序。线程池之前我们在使用多线程都是用Thread的start()来创建启动一个线程,但是在实际开发中,如果每个请求到达就创建一个新线程,开销是相当大的。服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚

2017-02-24 23:25:02 923

转载 你真的很熟分布式和事务吗?

微吐槽hello,world.不想了,我等码农,还是看看怎么来处理分布式系统中的事务这个老大难吧!本文略长,读者需要有一定耐心,如果你是高级码农或者架构师级别,你可以跳过。本文注重实战或者实现,不涉及CAP,略提ACID。本文适合基础分布式程序员:本文会涉及集群中节点的failover和recover问题.本文会涉及事务及不透明事务的问题.本文会提到微博

2017-02-24 23:24:53 896

转载 浅谈Spring框架注解的用法分析

1.@Component是Spring定义的一个通用注解,可以注解任何bean。2.@Scope定义bean的作用域,其默认作用域是”singleton”,除此之外还有prototype,request,session和global session。案例:@Component和@Scope用法分析:BeanAnnotation类:1

2017-02-24 23:24:40 958

转载 框架开发之Java注解的妙用

注解的好处:1.能够读懂别人写的代码,特别是框架相关的代码。2.本来可能需要很多配置文件,需要很多逻辑才能实现的内容,就可以使用一个或者多个注解来替代,这样就使得编程更加简洁,代码更加清晰。3.(重点)刮目相看。(但是怎么样才能让别人刮目相看呢?会用注解不是目的,最重要的是要使用自定义注解来解决问题。)举个栗子:如果面试的时候,你跟老板说你会使用注解,老板觉得你

2017-02-24 23:24:25 843

转载 死磕Java并发:深入分析volatile的实现原理

通过前面一章我们了解了synchronized是一个重量级的锁,虽然JVM对它做了很多优化,而下面介绍的volatile则是轻量级的synchronized。如果一个变量使用volatile,则它比使用synchronized的成本更加低,因为它不会引起线程上下文的切换和调度。Java语言规范对volatile的定义如下:Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和

2017-02-24 23:24:02 973

转载 Java常见内存溢出异常分析

Java虚拟机规范规定JVM的内存分为了好几块,比如堆,栈,程序计数器,方法区等,而Hotspot jvm的实现中,将堆内存分为了三部分,新生代,老年代,持久带,其中持久带实现了规范中规定的方法区,而内存模型中不同的部分都会出现相应的OOM错误,接下来我们就分开来讨论一下。栈溢出(StackOverflowError)栈溢出抛出java.lang.StackOverflowErro

2017-02-24 23:23:53 879

转载 Java Web系列:Spring MVC基础

1.Web MVC基础MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来。就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是一样的方法。框架只能在技术层面上给我们帮助,无法在思考和过程上帮助我们,而我们很多人都不喜欢思考和尝试。2.实现Web MVC的基础实现Web MVC基础可以概括为1个前段控制器和2个映射。

2017-02-24 23:19:24 1262

转载 在运行期通过反射了解JVM内部机制

在日常工作中,我们都习惯直接使用或者通过框架使用反射。在没有反射相关硬编码知识的情况下,这是Java和Scala编程中使用的类库与我们的代码之间进行交互的一种主要手段。但是,使用反射仅限于JVM内部运行的Java和Scala代码。假使在运行期通过反射既能查看自己的代码又能看到JVM的代码,会有怎样的效果呢 ?当我们开始创建 Takipi 的时候,试图寻找一种通过分析JVM堆内存来进行一些底

2017-02-24 23:18:20 1032

转载 Java反射最佳实践

概要:最简单优雅的使用反射。本文的例子都可以在示例代码中看到并下载,如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以提交pull request。本文的示例代码主要是基于jOOR行编写的,如果想了解更多请查看这里的测试代码。固定连接:https://github.com/tianzhijiexian/Android-Best-Practices/blob/

2017-02-24 23:17:26 986

转载 粗浅看 java反射机制

Java 反射是 Java 被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运 行时透过 Reflection APIs 取得任何一个已知名称的class 的内部信息,包括其 modifiers( 诸如 public, static 等 )、superclass (例如 Object)、 实现之 interfaces(例如 Cloneable),也包括 fields 和 methods

2017-02-24 23:15:38 1072

转载 「深入Java」类型信息:RTTI和反射

1.RTTI Run-Time Type Infomation 运行时类型信息为什么需要RTTI?越是优秀的面向对象设计,越是强调高内聚低耦合,正如依赖倒转原则所说:“无论是高层模块还是低层模块,都应该针对抽象编程”。比如说我们有一个抽象父类:1Shape draw()以下是三个具体

2017-02-24 23:14:19 903

转载 Class对象和Java反射机制

一 前言很多书上都说,在java的世界里,一切皆对象。其实从某种意义上说,在java中有两种对象:实例对象和Class对象。实例对象就是我们平常定义的一个类的实例:123456/** * Created by aristark on 3/28/16. */public

2017-02-24 23:13:14 934

转载 Java反射在JVM的实现

本文目录什么是Java反射,有什么用?Java Class文件的结构Java Class加载的过程反射在native的实现附录1. 什么是Java反射,有什么用?反射使程序代码能够接入装载到JVM中的类的内部信息,允许在编写与执行时,而不是源代码中选定的类协作的代码,是以开发效率换运行效率的一种手段。这使反射成为构建灵活应用的主要工具。反射可以:调用一些

2017-02-24 23:12:24 1277

转载 谈谈Java反射机制

写在前面:什么是java反射机制?我们又为什么要学它?当程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。我们认为java并不是动态语言,但是它却有一个非常突出的动态相关机制,俗称:反射。IT行业里这么说,没有反射也就没有框架,现有的框架都是以反射为基础。在实际项目开发中,用的最多的是框架,填的最多的是类,反射这一概念就是将框架和类揉在一起的调和剂。所以,反射才是接触项目开

2017-02-24 23:11:15 849

转载 35 个 Java 代码性能优化总结

前言  代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考

2017-02-23 23:42:19 708

转载 程序员如何用Java排序

在阅读开源Java项目源代码过程中,我发现Java开发者经常使用两种开发方式排序:一种是使用Collections和Arrays类的sort方法,另一种是使用可排序的数据结构。使用sort()方法1234567// Collections.sortList list = ne

2017-02-22 23:00:21 911

转载 Java常用排序算法/程序员必须掌握的8大排序算法

本文由网络资料整理而来,如有问题,欢迎指正!分类:1)插入排序(直接插入排序、希尔排序)2)交换排序(冒泡排序、快速排序)3)选择排序(直接选择排序、堆排序)4)归并排序5)分配排序(基数排序)所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。先来看看8种排序之间的关系:

2017-02-22 22:59:37 908

转载 Java ArrayList的不同排序方法

由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一。ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在添加和移除元素的时候进行动态的扩展和缩减。你可能已经使用过 ArrayList,因此我将略过基础部分。如果你对 ArrayList 还不熟悉,你可以参考它的 API 文档,可以很容易理解在 Arr

2017-02-22 22:58:37 884

转载 Java对象排序、中文排序、SortedSet排序使用和源码讲解

在C、C++中有很多排序算法,但是通常排序算法不得不让程序员在写代码的过程中陷入对底层很多指针和位置的理解,Java不希望这样,所以排序大多可以由java帮你做掉,例如,你要对一个数组排序,就通过:Collections.sort(list)那么这个list就被排序了,排序最终调用的是Arrays.sort方法来完成的,所以数组自然是用Arrays.sort了,而SortedSet里面内部也有排序

2017-02-22 22:57:38 902

转载 Java 解惑:Comparable 和 Comparator 的区别

Java 中为我们提供了两种比较机制:Comparable 和 Comparator,他们之间有什么区别呢?今天来了解一下。Comparable 自然排序Comparable 在 java.lang 包下,是一个接口,内部只有一个方法 compareTo():123publicinterface Com

2017-02-22 22:56:21 812

转载 Java 解惑:Comparable 和 Comparator 的区别

今天博主在翻阅TreeMap的源码,发现其键必须是实现Comparable或者Comparator的接口时产生了一些兴趣,比如在TreeMap中的put方法分别对Comparable和Comparator接口分别进行处理。那么疑问就来了,Comparable和Comparator接口的区别是什么,Java中为什么会存在两个类似的接口?Comparable和Comparator接口都是用来比

2017-02-22 22:55:19 1381

转载 生产者消费者模型

一、什么是生产者消费者模型 在实际的开发中,经常会碰到如下场景:某个模块负责生产数据,这些数据由另一个模块来负责处理。产生数据的模块就形象的称为生产者,而处理数据的模块就称为消费者。只有生产者和消费者还不够,这个模型还必须要有一个缓冲区处于生产者和消费者之间,作为中介。生产者把数据放入缓冲区,而消费者从缓冲区中取出数据。 二、为什么要使用生产者消费者模型 1、解耦 假设生产

2017-02-22 22:51:55 985

转载 JVM学习(2)——技术文章里常说的堆,栈,堆栈到底是什么,从os的角度总结

俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下:堆栈是栈JVM栈和本地方法栈划分Java中的堆,栈和c/c++中的堆,栈数据结构层面的堆,栈os层面的堆,栈JVM的堆,栈和os如何对应为啥方法的调用需要栈  属于月经问题了,正好碰上有人问我这类比较基础的知识,无奈我自觉回答不是有效果,现在深入浅出的总结下:前一篇文章总结

2017-02-22 22:51:32 1529

转载 语言堆栈入门——堆和栈的区别

原文:http://student.csdn.net/link.php?url=http://www.top-e.org%2Fjiaoshi%2Fhtml%2F427.html格式和部分内容稍作修改。在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是

2017-02-22 22:51:05 3819

转载 Java ClassLoader详解

深入Java虚拟机,ClassLoader是其中重要的一个环节。看书+查资料+动手,整理出如下要点:Class loader using following four steps: a, Bootstrap ClassLoader/启动类加载器 主要负责jdkhome/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作. b, Extension C

2017-02-22 22:50:59 851

转载 JVM Class字节码之三-使用BCEL改变类属性

使用BCEL动态改变Class内容之前对Class文件中的常量池,Method的字节码指令进行了说明。JVM Class详解之一JVM Class详解之二 Method字节码指令现在我们开始实际动手,使用BCEL改变字节码指令,对Class文件进行功能扩充。先介绍下BCEL全程Apache Byte Code Engineering Library,BCEL 每项内容操

2017-02-22 22:50:52 2662

转载 JVM Class详解之一

首先看Class中包含哪些信息简单的说所有java文件中有的信息class文件都有,编译器帮我们将java文件转化成了JVM能看懂的class格式而已Class 概述Class文件是一组以8位字节为基础的二进制流,各个数据项目按照严格顺序紧凑排列在Class文件中。所有的16位,32位,64位长度的数据将被构造成2个,4个,8个字节单位来标示。ClassFile结构

2017-02-22 22:50:47 867

转载 HTML标签----图文详解

本文主要内容头标签排版标签:                              字体标记:                    超链接图片标签一、HTML的介绍1、HTML的概述:html全称为HyperText Mackeup Language,译为超文本标记语言,不是一种编程语言,是一种描述性的标记语言,用于描述超文本中内容的显示方式。

2017-02-22 22:50:31 2298

转载 Jvm原理剖析与调优之内存结构

一些不得不说的概念JVMJVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。是运行j

2017-02-22 22:50:30 848

转载 Java魔法堂:注解用法详解——@SuppressWarnings

一、前言                                    编码时我们总会发现如下变量未被使用的警告提示:  上述代码编译通过且可以运行,但每行前面的“感叹号”就严重阻碍了我们判断该行是否设置的断点了。这时我们可以在方法前添加 @SuppressWarnings("unused") 去除这些“感叹号”。 二、 @SuppressWarin

2017-02-22 22:50:21 815

转载 java注解详解

自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。那么什么是注解呢?举一个简单的例子。[html] view plain copy print?@Override

2017-02-22 22:50:21 883

转载 Java 注解详解 (annotation)

什么是java注解注解是java5的新特性。注解可以看做一种注释或者元数据(MetaData),可以把它插入到我们的java代码中,用来描述我们的java类,从而影响java类的行为。Java注解的目的使用Java注解一般来说主要有三种目的构建时指示: RetentionPolicy.SOURCE编译期指示: RetentionPolicy.CLASS运行时指示:

2017-02-22 22:50:13 1066

转载 Java反射

1. 了解 Java 中的反射1.1 什么是 Java 的反射Java 反射是可以让我们在运行时获取类的函数、属性、父类、接口等 Class 内部信息的机制。通过反射还可以让我们在运行期实例化对象,调用方法,通过调用 get/set 方法获取变量的值,即使方法或属性是私有的的也可以通过反射的形式调用,这种“看透 class”的能力被称为内省,这种能力在框架开发中尤为重要。 有些情况

2017-02-22 22:50:09 872

转载 Comparable与Comparator的区别

Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法。Comparator位于包java.util下,而Comparable位于包

2017-02-22 22:48:11 672

转载 Java中Comparable和Comparator区别小结

阅读目录一、Comparable简介二、Comparator简介三、Comparable和Comparator区别比较回到顶部一、Comparable简介  Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.so

2017-02-22 22:47:14 847

转载 虚拟化的发展历程和实现原理——图文详解

前言现在市场上最常见的虚拟化软件有VMWare workstation(VMWare)、VirtualBox(Oracle)、Hyper-V(Microsoft)、KVM(Redhat)、Xen等,这些软件统称之为VMM(Virtual Machine Monitor),使用不同的虚拟化实现。而这些虚拟化实现的方式可以分为全虚拟化、半虚拟化、硬件虚拟化等,本篇主要是理解这些虚拟化实现的原理

2017-02-21 22:03:23 4336

搜索引擎以及网上免费学术资源的检索

介绍了一下搜索引擎的工作原理和组成部分,以Google和百度为代表介绍了搜索引擎的高级检索功能,以及搜索引擎非常强大的最常用的八条高级检索命令,最后对网上免费学术资源网站进行了介绍。

2015-09-22

空空如也

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

TA关注的人

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