自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (8)
  • 收藏
  • 关注

转载 X-UA-Compatible 解决兼容问题

X-UA-Compatible是自从IE8新加的一个设置,对于IE8以下的浏览器是不识别的。 通过在meta中设置X-UA-Compatible的值,可以指定网页的兼容性模式设置。在网页中指定的模式优先权高于服务器中(通过HTTP Header)所指定的模式。 兼容性模式设置优先级:     meta tag > http header1、Edge 模式告诉 IE 以最高级模式渲...

2019-01-28 15:19:21 4866

转载 高性能、支持集群的单据号生成工具

企业应用中为单据分配单据号是经常会遇到的问题。这次要给大家介绍的Rumba Sequence可以用来生成单据号,它最大的优点是具有极高的性能(达到单机每秒生成几十万个单据号以上)。同时它又是为集群的应用服务器架构环境设计,也就是说支持在同一个集群中的多个服务器同时分配单据号,由此可以达到更高的性能。Why传统分配单据号会采用如下算法:首先查询单据表找到最大的单据号,然后在此基础上流水,得到...

2018-08-14 19:08:08 461

转载 HashMap实现原理分析

HashMap实现原理分析  Attachments:2 添加者:廖志, 最后更新者: 廖志 于 九月 26, 20171. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离...

2018-08-14 19:07:59 232

转载 并行计算执行器——ParallelExecutor

今天要给大家介绍一个新的来自Rumba Commons Mini的工具——ParallelExecutor,正如其名字所表达的,它提供并行计算执行器的功能。让我们通过一个简单的例子来了解ParallelExecutor的工作原理。假设某家全国性的大型连锁经营企业,旗下有分布于全国的连锁门店100,000家,现在需要我们统计今年所有门店总销售额。问题在于一方面由于某种原因我们必须直接从原始销售数...

2018-08-13 16:45:14 998

转载 掌握这些搜索技巧,你将成为一名高效的程序员!

对于缺乏编程知识的人来说,完全有可能编写一个网页或小程序。如果在用Google搜索相关示例时幸运的话,可以搜到现成的代码。即使是经验丰富的程序员,通常也会为了节省时间和精力而在网上搜索解决方案。如果不借助搜索技术、网络及集体智慧,现代化高效编程是难以想象的。因此,搜索技巧对高效程序员变得愈发重要。现在,我们不需要了解和记住如何解决众多的编程问题,可以采用搜索技术。我们正变得更加高效、高生产...

2018-08-13 16:45:02 205

转载 API设计的七大误区

对于现在的绝大多数人来说,网站和移动应用已经跟空气和食物一样成为生活的必需品。然而在网站和移动系统不断演化的过程中,前后端分离是系统架构演化的一个重要分水岭。随着系统逻辑和展示层分离的过程中,API 是一个实现这种分布式应用架构的重要机制,从早期单纯的 WebService 到 RESTful,API 的设计方法、技术和理念发生了巨大的变化。然而 API 的设计实在是陷阱重重,一不小心就会落入...

2018-08-13 16:44:50 170

转载 MySQL字符串类型字段值大小写问题

太长不看版MySQL数据库默认情况下,字符串字段的所有相关运算是大小写“不敏感”的。这一点与其它流行的数据库都不相同。 本文介绍了三种方法解决这个问题。 其中一种在查询时指定大小写敏感,但可能存在性能风险。 另外两种则是在表结构定义时定义。MySQL数据库备受争议的特性先看一句SQL语句:SELECT * FROM fruit WHERE name = 'Apple'这是...

2018-08-13 16:44:40 2600

转载 Java反射机制与动态代理的原理是什么?

典型回答反射机制是Java语言提供的一种基础功能,赋予程序在运行时自省(introspect,官方用语)的能力。通过反射我们可以直接操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或构造对象,甚至可以运行时修改类定义。动态代理是一种方便运行时动态构建代理、动态处理代理方法调用的机制,很多场景都是利用类似机制做到的。比如用来包装RPC调用、面向切面的编程(AOP)。...

2018-08-13 16:44:30 3329

转载 AtomicInteger底层实现原理是什么?

典型回答AtomicInteger是对int类型的一个封装,提供原子性的访问和更新操作,其原子性操作的实现是基于CAS(compare-and-swap)技术。所谓CAS,表现为一组指令,当利用CAS执行试图进行一些更新操作时。会首先比较当前数值,如果数值未变,代表没有其它线程进行并发修改,则成功更新。如果数值改变,则可能出现不同的选择,要么进行重试,要么就返回是否成功。也就是所谓的“乐观...

2018-08-13 16:44:21 9004

转载 Java并发类库提供的线程池有哪几种?

既然创建或销毁线程存在一定的开销,所以利用线程池技术来提高系统资源利用效率,并简化线程管理,已经是非常成熟的选择。典型回答通常开发者都是利用Executors提供的通用线程池创建方法,去创建不同配置的线程池,主要区别在于不同的ExecutorService类型或者不同的初始参数。Executors目前提供了5种不同的线程池创建配置:newCachedThreadPool(),它是一种用...

2018-08-13 16:44:08 2582

转载 类加载过程是怎样的?

典型回答一般来说,我们把Java的类加载过程分为三个主要步骤:加载、链接、初始化,具体行为在Java虚拟机规范里有非常详细的定义。加载阶段(Loading):它是Java将字节码数据从不同的数据源读取到JVM中,并映射为JVM认可的数据结构(Class对象)。这里的数据源可能是各种各样的形态,如jar文件、class文件,甚至是网络数据源等。如果输入数据不是ClassFile的结构,则会抛...

2018-08-13 16:43:58 11378

转载 ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别?

典型回答有时候我们把并发包下面的所有容器都习惯叫作并发容器,但是严格来讲,只有以“Concurrent”为前缀的容器才是真正的并发容器。ConcurrentLinkedQueue基于lock-free,在常见的多线程访问场景,一般可以提供较高吞吐量。 而LinkedBlockingQueue内部则是基于锁,并提供了BlockingQueue的等待性方法。不知道你有没有注意到,java....

2018-08-13 16:43:47 2869

转载 CountDownLatch和CyclicBarrier有什么区别?

CountDownLatch有时被称为“闭锁”,其作用相当于一扇门:在CountDownLatch达到结束状态之前,这扇门一直是关闭的,并且没有任何线程能通过,当到达结束状态时,这扇门会打开并允许所有的线程通过。当CountDownLatch到达结束状态后,将不会再改变状态,因此这扇门将永远保持打开状态。CountDownLatch可以用来确保某些活动直到其它活动都完成后才继续执行。Cycli...

2018-08-13 16:43:37 3036

转载 Java并发包提供了哪些并发工具类?

典型回答我们通常所说的并发包也就是java.util.concurrent及其子包,集中了Java并发的各种基础工具类,具体主要包括几个方面:提供了比synchronized更加高级的各种同步结构,包括CountDownLatch、CyclicBarrier、Semaphore等,可以实现更加丰富的多线程操作。比如利用Semaphore作为资源控制器,限制同时进行工作的线程数量。 各种线...

2018-08-02 15:26:50 1634

转载 什么情况下Java程序会产生死锁?

典型回答死锁是一种特定的程序状态,在实体之间,由于循环依赖导致彼此一直处于等待之中,没有任何个体可以继续前进。死锁不仅仅会发生在线程之间,存在资源独占的进程之间同样也可能出现死锁。通常来说,我们大多是聚焦在多线程场景中的死锁,指两个或多个线程之间,由于互相持有对方需要的锁,而永久处于阻塞的状态。就像下图中所示:定位死锁最常见的方式就是利用jstack等工具获取线程栈,然后定位互相之...

2018-08-02 15:26:10 3152

转载 一个线程两次调用start()方法会出现什么情况?

典型回答Java的线程是不允许启动两次的,第二次调用必然会抛出IllegalThreadStateException,这是一种运行时异常,多次调用start被认为是编程错误。关于线程生命周期的不同状态,在Java 5以后,线程状态被明确定义在其公共内部枚举类型java.lang.Thread.State中,分别是:NEW(新建),表示线程被创建出来还没真正启动的状态,可以认为它是个Ja...

2018-08-02 15:25:15 3417

转载 synchronized底层如何实现?

典型回答如果你使用反编译工具查看synchronized代码块,会发现是由一对儿monitorentry/monitorexit指令实现的,Monitor对象是同步的基本实现单元。在Java 6之前,Monitor的实现完全是依靠操作系统内部的互斥锁,因为需要进行用户态到内核态的切换,所以同步操作是一个无差别的重量级操作。现代的(Oracle)JDK中,JVM对此进行了大刀阔斧地改进,...

2018-08-02 15:24:05 1160

转载 synchronized和ReentrantLock有什么区别?

典型回答synchronized是Java内建的同步机制,它提供了互斥的语义和可见性。当一个线程已经获取当前锁时,其他试图获取的线程只能等待或者阻塞在那里。在Java 5以前,synchronized是仅有的同步手段。在代码中,synchronized可以用来修饰方法,也可以使用在特定的代码块上,本质上synchronized方法等同于把方法全部语句用synchronized块包起来。Re...

2018-08-02 15:23:40 989

转载 HashMap深度解析

HashMap是最被广泛使用的Map接口的实现,了解它的内部实现机制将有利于我们更好的使用这个强有力的工具。首先,我们来一起看看HashMap内部的结构。它可以看作是数组(Node[] table)和链表结合组成的复合结构。数组被分为一个个桶(Bin),通过哈希值决定了键值对在这个数组的寻址。落在同一个桶内的键值对,则以链表形式存储,参考下图。需要注意的是,如果链表大小超过阈值(TREEIFY...

2018-08-02 15:22:53 270

转载 如何保证集合是线程安全的?

典型回答Java提供了不同层面的线程安全支持。在传统集合框架内部,除了Hashtable等同步容器,还提供了所谓的同步包装器(Synchronized Wrapper),可以调用Collections工具类提供的包装方法,来获取一个同步的包装容器,例如Collections.synchronizedMap()。但是它们都是利用非常粗粒度的同步方式,在高并发情况下的性能比较低下。另外,更加普...

2018-08-02 15:22:46 2471

转载 单例的几种实现

作为GoF 23种设计模式之一的单例模式,在程序之中有大量的使用。所谓单例模式,简单说就是确保类在程序中只会被创建一个实例。看起来似乎很简单,那么下面这个样例符合基本需求吗?public class Singleton { private static Singleton instance = new Singleton(); public static Singleton getI...

2018-08-02 15:22:34 140

转载 Java有几种文件拷贝方式?哪一种最高效?

典型回答Java有多种比较典型的文件拷贝实现方法。方法1:利用java.io类库。直接为源文件创建一个FileInputStream负责读取,然后再为目标文件创建一个FileOutputStream负责写入:public static void copyFileByStream(File source, File target) throws IOException { try ...

2018-08-02 15:22:09 3024

转载 Java提供了哪些IO方式?

首先,传统的java.io包基于流模型实现,提供了我们最熟知的一些IO功能,比如File抽象、输入输出流等,交互方式是同步、阻塞的方式。也就是说,在读取输入流或者写入输出流时,在读、写动作完成之前,线程会一直阻塞在那里,它们之间的调用是可靠的线形顺序。java.io包的好处是代码比较简单、直观,缺点则是IO效率和扩展存在局限性,容易成为应用性能的瓶颈。很多时候,人们也把java.net下面...

2018-08-02 15:20:53 404

转载 Hashtable、HashMap和TreeMap有什么区别?

典型的回答Hashtable、HashMap、TreeMap都是最常见的Map接口的实现,是以键值对的形式存储和操作数据的容器类型。Hashtable是早期Java类库提供的一个哈希表实现,本身是线程安全的,不支持null键和值。由于线程安全导致的性能开销,所以已经很少被推荐使用。HashMap是应用更加广泛的哈希表实现,行为上大致与Hashtable一致,主要区别在于HashMap不...

2018-08-01 22:18:00 989

转载 Vector、ArraysList和LinkedList有什么区别?

典型的回答这三者都是集合框架中List的实现,也就是所谓的有序集合,它们在功能上比较近似。Vector是Java早期提供的线程安全的动态数组,如果不需要线程安全,不建议选择。Vector内部是使用对象数组来保存数据,可以根据需要自动增加容量。当数据已满时,会创建新的数组,并拷贝原有数组数据。ArrayList是应用更加广泛的动态数组实现,它不是线程安全的,所以性能要好很多。与Vecto...

2018-08-01 16:06:49 1174

转载 int和Integer有什么区别?

典型的回答int是我们常说的整型数字,是Java的8个原始数据类型之一。Java语言虽然号称一切都是对象,但原始数据类型是例外。Integer是int对应的包装类,它有一个int类型的字段存储数据,并且提供了基本操作,比如数学运算、int和字符串之间转换等。在Java 5中,引入了自动装箱和自动拆箱功能(boxing/unboxing),Java可以根据上下文,自动进行转换,极大地简化了相...

2018-08-01 15:20:44 412

转载 String、StringBuffer与StringBuilder有什么区别?

典型的回答 String是Java语言非常基础和重要类,提供了构造和管理字符串的各种基本逻辑。它是典型的不可变类,被声明成final class,所有属性也都是final的。由于它的不可变性,类似拼接、裁剪字符串等动作,都会产生新的String对象。由于字符串操作的普遍性,所以相关操作的效率往往对应用性能有明显影响。 StringBuffer是为了解决上面提到拼接产生太多中...

2018-08-01 15:06:11 1174

转载 finalize真的那么不堪?

是的,真的那么不堪! 业界实践一再证明java.lang.Object中的finalize不是个好的办法,在Java 9中,甚至明确将它标记为deprecated!如果没有特别的原因,不要实现finalize方法,也不要指望利用它来进行资源回收。为什么呢?简单说,你无法保证finalize什么时候执行,执行的是否符合预期。相反使用不当会影响性能,导致程序死锁、挂起等。 fi...

2018-08-01 14:34:41 799

转载 final的几种用法

“谈谈final、finally、finalize有什么不同?”这是个非常经典的问题。finally是Java保证重点代码一定要被执行的一种机制。finalize是基础类java.lang.Object的一个方法,它的设计目的是保证对象在被垃圾收集前完成特定资源的回收。今天我们重点谈谈final,多年的面试经验告诉我,很多人其实失分就是在final上,而非另外两者。final可以用来修饰类、方...

2018-08-01 14:28:18 403

转载 可以在finally代码块中处理返回值么?

先来看一段代码:public boolean doSomething() { try { // do something } finally { // ... return true; }}这段代码的finally代码块中出现return语句。首先Java并不会阻止你写出这样的代码,但这样是合理么?其实之所以写出这样的代码,是因为程序员不确定在...

2018-08-01 14:17:53 467

转载 异常处理的两个基本原则

先来看一段代码:try { // do something Thread.sleep(1000L);} catch (Exception e) { // ignore it}代码虽短,但已经违反了异常处理的两个基本原则。第一,尽量不要捕获类似Exception这样的通用异常,而是应该捕获特定异常。在这段代码中Thread.sleep()会抛出的Interrupted...

2018-08-01 14:00:55 1201

转载 try-with-resources和multiple catch

从Java 7开始提供了两个有用的特性:try-with-resources和multiple catch。先来看看try-with-resources。当处理某些资源的时候,通常都会在finally里面做一些资源回收的工作。比如:FileInputStream fis = new FileInputStream(file);try { // do something} fina...

2018-08-01 13:48:40 1619 1

转载 Error、Exception与RuntimeException的区别

先搞清楚它们三者的关系。Error与Exception都继承自Throwable,而RuntimeException则继承自Exception。在Java中只有Throwable类型的实例才可以被抛出(throw)或捕获(catch)。Error和Exception体现了Java平台设计者对不同异常情况的分类。Exception是程序正常运行中可以预料的意外情况,可能并且应该被捕获,进行相...

2018-08-01 13:37:41 7607

翻译 list 交集 并集 差集方法讲解

交集   交集的方法:retainAll  取两个集合中包含相同的对象或者元素   例 有两个newCoures和oldCourses可以使用retainAll方法oldCourses.retainAll(newCoures)   如果有相同的元素oldCourses中进保留相同的元素   如果不存在相同的元素oldCourse会变为空   retainAll命令返回的是一个boolean的值,如...

2018-07-12 16:56:58 726

转载 Java程序员必备的Intellij插件

0.IDEA系列主题一款漂亮的主题既可以装逼,也可以赏心悦目,让你一整天的心情就像小时候过年买了新衣服一样欢快,还等什么。下载地址 http://www.riaway.com/1 . .ignore    生成各种ignore文件,一键创建git ignore文件的模板,免得自己去写    2 lombok 支持lombok的各种注解,从此不用写getter setter这些 可以把注解还原为原本...

2018-05-29 20:38:58 560

转载 java Queue中 remove/poll, add/offer, element/peek区别

offer add区别:一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。  poll,remove区别:remove() 和 poll() 方法都是从队列中删除第一个元素。remove() 的行为与 Colle...

2018-05-28 14:39:14 796

转载 深入剖析Java中的装箱和拆箱

自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。回到顶部一.什么是装箱?什么是拆箱?我们知道 Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料。在Java SE5之前,如...

2018-05-28 13:52:11 111

转载 web.xml 配置中classpath: 与classpath*:的区别

web.xml 配置中classpath: 与classpath*:的区别 引用一篇很不错的文章:http://blog.csdn.net/wxwzy738/article/details/16983935首先 classpath是指 WEB-INF文件夹下的classes目录classpath 和 classpath* 区别:classpath:只会到你指

2018-02-08 22:47:04 111

转载 JAVA读取外部资源的方法

在java代码中经常有读取外部资源的要求:如配置文件等等,通常会把配置文件放在classpath下或者在web项目中放在web-inf下.1.从当前的工作目录中读取:[java] view plain copytry {              BufferedReader in = new BufferedReader(new Input

2018-02-08 11:01:28 1086

转载 classpath 和 classpath*

1、src不是classpath, WEB-INF/classes和lib才是classpath,WEB-INF/ 是资源目录, 客户端不能直接访问。2、WEB-INF/classes目录存放src目录java文件编译之后的class文件,xml、properties等资源配置文件,这是一个定位资源的入口。3、引用classpath路径下的文件,只需在文件名前加classpath:

2018-02-08 10:59:24 516

黑马程序员_WebService_webservice从入门到上手企业开发视频

WebService是一个新概念,它的系统架构、实现技术是现有应用的面向Internet的一个延伸。Web是为了程序到用户的交互,而Web Service是为程序到程序的交互作准备,Web Service已成为IT产业近几年来探索的热点课题之一。主要讲解内容如下: Web Service是什么? Web service的优势和前景 Web Service和Web服务器的区别? 在什么情况下你应该使用Web service? webservice快速入门 Web Service企业开发实例

2015-11-06

WebService从入门到上手企业开发(下)

黑马程序员_WebService从入门到上手企业开发(下) 上传的代码给百度云链接,此链接永不失效

2015-11-06

WebService从入门到上手企业开发(上)

黑马程序员_WebService从入门到上手企业开发(上) 视频含有 webservice的基本概念,实现天气查询,通讯原理等功能 上传的代码给百度云链接,此链接永不失效

2015-11-06

极客学院安卓Android全套最新视频教程【17G全套视频+独家源码】

极客学院安卓Android全套最新视频教程【17G全套视频+独家源码】 里面含有源码和视频,绝对可靠,上传的是百度云链接,不会失效

2015-11-06

1300余套ASP源码

1300套Asp源码 ,需要的可以看看。我分享的是百度云链接

2015-07-28

AJAX视频教程-冯威和源程序代码 ppt

AJAX视频教程-冯威和源程序代码 ppt 里面既有视频 也有源代码,需要的可以下载看看,绝不骗人,我分享的是百度云链接,不会失效

2015-07-28

疯狂 Android 讲义 作者:李刚

此视频是 根据 李刚写的一本书《疯狂 Android 讲义 》所讲的视频,需要的可以下载看看,我分享的是 百度云链接。

2015-07-28

李兴华安卓视频全套

李兴华安卓视频全套教程,详细地解释了安卓的用法

2014-12-16

空空如也

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

TA关注的人

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