自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

掘客DIGGKR

生活是一座大山,每天挖掘才能有所收获。掘客是一种生活态度!

转载 大厂面试必问:volatile关键字详解

volatile关键字是面试中必问的一个知识点,今天我们来剖析下。volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。1、内存模型的相关概念大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很

2020-08-12 17:34:30 4

转载 校长发奖状了,要排排队领取哦,Java Lock简述

在小时候,校长发东西时,要我们一个一个排好队绝对不敢抢,不然后果很严重。这个多人排队领取东西的场景和编程中的多线程访问共享资源的场景很像。今天我们结合Java Lock来讲解下。在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。这时候有朋友就会问了,既然都可以通过synchronized来实现同步访问了,那么为什么还需要

2020-08-09 14:31:55 13

转载 老师发糖了,要排排队领取哦,Java synchronized关键字

在小时候,老师发东西时,要我们一个一个排好队不准抢,不然打屁屁。这个多人排队领取东西的场景和编程中的多线程访问共享资源的场景很像。今天我们结合Java synchronized关键字来讲解下。1、什么时候会出现线程安全问题?在单线程中不会出现线程安全问题,而在多线程编程中,有可能会出现同时访问同一个资源的情况,这种资源可以是各种类型的的资源:一个变量、一个对象、一个文件、一个数据库表等,而当多个线程同时访问同一个资源的时候,就会存在一个问题:由于每个线程执行的过程是不可控的,所以很可能导致最终的结果

2020-08-08 14:19:33 28

转载 Java Thread类简述

今天我们来看下java.lang.Thread这个类。在学习Thread类之前,先看下线程相关知识:线程的几种状态、上下文切换,然后介绍Thread类中的方法的具体使用。1、线程的状态线程从创建到最终的消亡,要经历若干个状态。一般来说,线程包括以下这几个状态:创建(new)、就绪(runnable)、运行(running)、阻塞(blocked)、time waiting、waiting、消亡(dead)。当需要新起一个线程来执行某个子任务时,就创建了一个线程。但是线程创建之后,不会立即进入就绪状态

2020-08-07 23:19:45

转载 漫画图解进程与线程,形象生动

初学程序的时候,很多人搞不清进程和线程的关系,今天整理了下网友们的答案,希望对大家有所帮助。先看漫画:1、计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2、假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。3、进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。4、一个车间里,可以有很多工人。他们协同完成一个任务

2020-08-06 22:30:15 23

转载 看连环画,Java垃圾回收机制

今天我们看一下的Java的垃圾回收机制。上图是oracle官网给出的GC描述,热心网友进行了翻译,图文并茂,简单易懂。翻译内容如下:什么是自动垃圾回收?自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被任何指针给指向,因此占用的内存也可以被回收掉。在用 C 之类的编程语言时,程序员需要自己手动分配和释放内存。而 Java 不一样,它有垃圾回收器,释放内存

2020-08-05 13:42:03 24

原创 面试加分项:Java引用还有分类?强引用、弱引用、软引用、虚引用

众所周知,Java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,Java采用了软引用等方法。在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再把它捡回来使用就不可能了。

2020-08-04 23:22:23 36

原创 简述JVM内存区域划分

我们在Java编程时少不了程序优化,而程序优化的前提是知道JVM的内存是如何划分的,那么我们今天来大体了解下。在看JVM内存区域划分之前,先来看一下Java程序具体执行的过程:如上图所示,首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。在整个程序执行过程中,JVM会用一块空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Are

2020-08-03 22:53:42 23

原创 我异常了,快来捕获我,Java异常简述

在我们日常编程中,异常处理是必不可少的,异常处理是否得当关系到程序的健壮性和后续维护成本。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,今天我们来讲解一下。...

2020-08-02 23:06:34 18

原创 我有心上人了,Java内部类

在我们日常Java编程中,内部类用到的相对比较少,但是也有必要了解下。1、内部类简述在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。内部类一般来说分为四种:成员内部类、局部内部类、匿名内部类和静态内部类。(1)成员内部类...

2020-08-01 19:09:31 29

原创 Java重写equals方法时为什么要重写hashCode方法

在我们平时编写Java代码时,重写equals方法时一定要重写hashCode方法,这是为什么呢?在讨论这个问题前,我们先看下Object类中hashCode方法和equals方法。hashCode方法:翻译如下:equals方法:翻译如下:1、hashCode方法的作用在Java中也一样,hashCode方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括HashSet、HashMap以及HashTable。为什么这么说呢?考虑一种情况,当向集合中插入对象时,如何

2020-07-31 11:37:29 13

原创 面试中常被问到的Hash表

Hash表在面试中经常被问到,今天我们来了解下。Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于Hash表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键字关联起来,从而能够很快速地进行查找。1、Hash表的设计思想对于一般的线性表,比如链表,如果要存储联系人信息:张三 13980593357李四 158286623

2020-07-30 17:48:59 35

原创 Java小白对equals和==,傻傻分不清楚

Java的初学者经常会用到equals和==,两者傻傻分不清楚,今天我们来讲解一下。先看个例子:String str1 = new String("hello world");String str2 = new String("hello world"); System.out.println(str1==str2);System.out.println(str1.equals(str2));输入结果是:falsetrue一.关系操作符“==”到底比较的是什么?下面这

2020-07-28 17:32:00 14

原创 常见易错的Java Static面试题,你不一定都能答对

1、public class Test extends Base{ static{ System.out.println("test static"); } public Test(){ System.out.println("test constructor"); } public static void main(String[] args) { new Test(); }}class Base

2020-07-28 16:38:05 18 1

原创 我们高中class里有一个static女神

static关键字在Java编程中经常用到,今天我们来讲解一下。在《Java编程思想》P86页有这样一段话:“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用,简而言之,一句话来描述就是:方便在没有创建对象的情况下来进行调用(方法/变量)。显然,被

2020-07-27 22:01:01 14

原创 我有一个final GirlFriend,之后就不再换了,final GirlFriend会越来越有钱的。Java final讲解

final关键字在Java编程中我们并不陌生,但是你真正理解吗?今天我们来讲解一下final关键字。一、final的用法Java中final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。1、修饰类 当用final修饰一个类时,表明这个类不能派生出子类。也就是说,如果一个类你想让他被继承,就可以用final来修饰。 final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。在使用final修饰类的时候,要注意谨慎选

2020-07-26 14:36:15 20

原创 常见易错的Java String面试题

下面说明一些String相关的面试题,加深理解,助你面试成功一臂之力。1、下面这段代码的输出结果是什么?String a = "hello1024";String b = "hello" + 1024;System.out.println((a == b));输出结果为:true。因为:“hello”+1024在编译期间就已经被优化成"hello1024",因此在运行期间,变量a和变量b指向的是同一个对象。我们反编译下代码可以看到,“hello”+1024在编译期间就已经被优化成"hello1

2020-07-24 10:41:59 20

原创 探秘Java面试中问的最多的:String、StringBuffer、StringBuilder

String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方。今天我们就来讲解一下。本文测试中JDK版本是:1.71、先看下String类String源码如下:public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */

2020-07-23 22:10:04 38

原创 Java实现多线程的方式,啊四种

小伙伴们基本上都知道Java实现多线程有两种方式:1、继承Thread类,重写run()方法;2、实现Runnable接口,实现run()方法实际上还有两种方式:3、实现Callable接口,实现call()方法;4、通过线程池创建线程接下来一个一个说明:1、继承Thread类,重写run()方法...

2020-07-22 17:46:53 39

原创 大话西游之猿类单例,饿汉式、懒汉式

单例模式是比较常见的一种设计模式,目的是保证一个类只能有一个实例,而且实例化之后并向整个系统提供这个实例,避免实例的频繁创建和释放,节约内存,提高效率。应用场景许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。1、比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置信息由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理;2、单例模式提供整个应用生命周期的上下文Context;3、计算机中

2020-07-21 19:25:31 30

原创 面向对象的六原则一法则,而现实中只需要一个原则:老婆,我错了

1、 单一职责原则:一个类只做它该做的事情单一职责原则想表达的就是”高内聚”,写代码最终极的原则只有六个字”高内聚、低耦合”,就如同葵花宝典或辟邪剑谱的中心思想就八个字”欲练此功必先自宫”。所谓的高内聚就是一个代码模块只完成一项功能,在面向对象中,如果只让一个类完成它该做的事,而不涉及与它无关的领域就是践行了高内聚的原则,这个类就只有单一职责。我们都知道一句话叫”因为专注,所以专业”,一个对象如果承担太多的职责,那么注定它什么都做不好。这个世界上任何好的东西都有两个特征,一个是功能单一,好的相机绝对不

2020-07-20 20:07:25 25

原创 我的对象Girl会分身,浅克隆、深克隆

在这个神奇的星球上,有这样一个群体,比较呆萌,天天沉浸在代码的世界。这个代码的世界里他们天天面向对象Coding,而且这个对象还会克隆,进行分身。1、什么时候会用到Clone呢?一般是想对一个对象进行处理,又想保留原有的数据进行接下来的操作,这时候就需要克隆了。好比来了一件事,复制一个分身,分身去处理;自身还是继续干自己的事,分身和自身的行为和状态互不干扰影响。2、既然Clone这么有用,那如何实现Clone呢?Java提供了一个Cloneable接口,这只是一个标示接口,没有定义方法。定义一个女

2020-07-19 14:46:14 17

原创 南极的冰疙瘩如何通过细管运到北极呢?序列化、反序列化

1、引出序列化、反序列化假如有这样一个场景:南极到北极有一根细管,南极的一块大冰块如何运到北极呢?显然南极大冰块需要先化成水,通过细管流到北极,到北极之后再收集起来冻成大冰块。这是一个虚拟的场景,但是和现实生活中的网络数据传输有些相似。比如现实中一台客户端要发送信息,一个Person对象,需要先变成数据流(这个和刚才的水流相似),再通过网络链路(细管)到达服务器端,服务器端接收到后将数据流转换成Person对象。这样一个过程就实现了消息的传输,其中涉及到了两次数据的转换,称之为:序列化和反序列化。

2020-07-16 20:23:07 35

原创 一道简单面试题引出的Java数据类型连环问

题目如下:public static void main(String[] args) { Integer i1 = 100; Integer i2 = 100; Integer i3 = 150; Integer i4 = 150; System.out.println(i1 == i2); System.out.println(i3 == i4);}你想好答案了吗?答案是:truefalse为什么不都是true呢?这就需要我们看看Integer i1 = 10

2020-07-15 13:16:35 79

原创 蚂蚁、小鸟、大象 引发的面向对象问题

(1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。抽象就是找出一些事物的相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些事物的相似和共性之处,并且会忽略与当前主题和目标无关的那些方面,将注意力集中在与当前目标有关的方面。例如,看到一只蚂蚁和大象,你能够想象出它们的相同之处,那就是抽象。抽象包括行为抽象和状态抽象两个方面。例如,定义一个Person类,如下: class Person{ Str

2020-07-14 10:54:27 42

转载 RMI简单实例

分布式对象技术主要是在分布式异构环境下建立应用系统框架和对象构件。在应用系统框架的支撑下,开发者可以将软件功能封装为更易管理和使用的对象,这些对象可以跨越不同的软、硬件平台进行互操作。目前,分布式互操作标准主要有Microsoft的COM/DCOM标准、Sun公司的Java RMI标准和OMG组织的CORBA标准。    Java RMI简介    远程方法

2014-05-12 16:26:26 638

转载 正则表达式匹配居民身份证

大陆的居民身份证号码有两种:18位和15位,15位的身份证号码是老一代身份证号码。18位和15位的区别在于两个部分:第一,18位号码的年份以4位计而15位号码的年份为2位,如1987年在18位号码中为‘1987’而在15位号码中为‘87’,这里1987只是作为一个例子可能1987年及以后根本不存在15位号码;第二处不同在于18位号码的最后一位为数字校验码,15位号码没有数字校验位。

2014-02-11 13:28:44 1630

转载 JS加载顺序

探索 Javascript  加载执行问题    楼主做前端开发一年多了,对前端的见解还是多多少少有一点的,今天特拿出来跟大家分享分享。 做前端开发少不了各种利器。比如我习惯用的还是Google浏览器和重型武器Fiddller。 一: 原始情况首先大家看看如下的代码: 1 "C#" AutoEventWireup="true" CodeBehind="Def

2012-07-06 16:09:05 1048 1

原创 java模拟---遍历链表

public class TestList { private static final int len = 10; public static void main(String[] args) { Student[] array = new Student[len]; Student stu = new Student(); stu.setName("name " + 0);

2012-06-06 17:39:17 624

原创 位运算实现整数加减乘除

1. 位运算实现整数加下面代码为网友所写. public int AddWithoutArithmetic(int num1,int num2) { if(num2==0) return num1;//没有进位的时候完成运算 int sum,carry; sum=num1^num2;//完成第一

2012-03-12 15:27:39 511

转载 区别:String类与string变量、堆与栈

关于Java栈与堆的思考 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编

2012-03-08 15:50:00 723 2

转载 对话周鸿袆:从程序员创业谈起

离开雅虎中国后的周鸿袆现在的身份是IDG公司的投资合伙人,手中拿着五亿美金用来做风投的他自然对创业有着说不完的话题。由于周鸿袆出身程序员,也一直是本刊的忠实读者,他希望一方面站在投资商的角度,同时以一种过来人的身份来探讨“程序员创业”这个话题。 一个周五的傍晚,在北京光华路的一个酒吧中,本刊约到周鸿袆进行这次对话。从昌平远道赶来的周鸿袆由于塞车而晚到了半个小时。由于开会讲了一天的话,他的声

2012-03-08 15:08:21 3101

转载 程序员应该懂的道理

A. 一农户在杀鸡前的晚上喂鸡,不经意地说:快吃吧,这是你最后一顿!   第二日,见鸡已躺倒并留遗书:爷已吃老鼠药,你们别想吃爷了,爷他妈也不是好惹的。  当对手知道了你的决定之后,就能做出对自己最有利的决定。——纳什均衡理论  所以保密、信息安全很重要  B. 鱼说:我时时刻刻睁开眼睛,就是为了能让你永远在我眼中!   水说:我时时刻刻流淌不息,就是为了能永远把你拥抱!!   锅说:

2012-03-08 13:30:09 957

转载 三句话影响人的一生

一个男人在外工作20年,终于要回家了,老板问他:你是要20年的工资还是要3句忠告?男人说我明天上路,明早给您答案好吗?老板说可以。当晚男人未眠…早晨,他对老板说:我要3个忠告。于是老板给他3句话。一、不要试图寻找不可能的捷径,世上没有便宜的事,只有脚踏实地才是最好的方法…无论做何事。二、不要对明知不是好事的事过分好奇,有可能你会因此而丧命。三、不要在冲动时做任何决定,否则这个决定就有可能成为你一辈

2012-03-08 13:24:50 519

转载 我是这样得到想要的薪水

事情到了今天,基本确定以美好结局。        感谢博为曾经给我美好的愿景与希望(虽然如今都成幻觉斑驳的回忆);感谢博为给我若干第一次的经历或经验;感谢博为证明我已达到挑工作而不是找工作的阶段。从某种意义上来说,没有博为的工作经验,我不会有像今天这样的自信,我要为此特别感谢博为的梁总和谭姐,衷心谢谢!我的人生因而跨越一个职业阶段,想来完全像是一场偶然。        是是非非随流水(此处

2012-03-07 17:07:38 3954

转载 35岁之前成功的12条黄金法则

第一章:一个目标 一艘没有航行目标的船,任何方向的风都是逆风 1、你为什么是穷人,第一点就是你没有立下成为富人的目标 2、你的人生核心目标是什么? 杰出人士与平庸之辈的根本差别并不是天赋、机遇,而在于有无目标。 3、起跑领先一步,人生领先一大步:成功从选定目标开始 4、贾金斯式的人永远不会成功 为什么大多数人没有成功?真正能完成自己计划的人只有5%,大多数人不是将自己的

2012-03-06 17:37:09 975

转载 IT高薪者所具备的人格魅力

来没有想过自己会加入这一行, 从开始自己喜欢的专业通讯,到后来喜欢的管理,想过是专业高手,幻想过管理专家,却从来没有想过进入这一行,但真的在我刚刚离开校园的时候发生了。短短几天,对这个行业有了一个感性认识,其实最让自己伤感的不是自己没有干这一行的经验,而是代理的人,要找的人都是薪水100万,现在才发觉IT一行,有钱人真多!  想想大家都在讨论一个月3000还是4000的时候,别人都是100万,

2012-03-06 17:08:53 425

转载 成功人士的人生理念

1、不要听信身边人的话,大一不谈恋爱,好的女孩子就被别人都挑走了。想想,刚上大一就耐不住寂寞,受不住诱惑,而去谈恋爱的女孩子,值得自己去追吗?大学里,可以有一场爱情,可是,不要固执地认为,刚上大一,就必须要谈恋爱。2、一个年轻人,如果三年的时间里,没有任何想法,他这一生,就基本这个样子,没有多大改变了。3、成功者就是胆识加魄力,曾经在火车上听人谈起过温州人的成功,说了这么三个字,“胆子大”

2012-03-06 15:48:56 1640

转载 程序员总结-如何干好一个技术牛人

1、分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈!  2、一定要确定自己的发展方向,并为此目的制定可行的计划。不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,

2012-03-06 14:59:03 692

原创 Oracle 中"=" 和 "<>" 的用法

在 oracle 中 相等是 =, 不相等是  != 和  1. 1用于只取结构不取数据的场合,例如:create table table_temp tablespace tbs_temp asselect * from table_ori where 11 建成一个与table_ori 结构相同的表table_temp,但是不要table_ori 里的数据。

2012-03-03 12:09:20 9676

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