JAVA
文章平均质量分 87
东东咚咚咚咚咚丶
饿了么后端工程师,一只不定期产粮的一线研发猿
展开
-
JAVA内部类的作用、方法、使用
http://blog.sina.com.cn/s/blog_76d8e54d0100u6t0.htmlhttp://blog.sina.com.cn/s/blog_56898c310100a3i3.htmlhttp://www.blogjava.net/os586/archive/2006/08/01/61121.htmlhttp://www.cnblogs.com/sa转载 2016-04-26 16:05:05 · 634 阅读 · 0 评论 -
JAVA的几个同步辅助类
Java为我们提供了一些同步辅助类,利用这些辅助类我们可以在多线程编程中,灵活地把握线程的状态。CountDownLatchCountDownLatch一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。再CountDownLatch中两个比较关键的方法:public void await() throws InterruptedExc原创 2017-02-23 15:37:13 · 893 阅读 · 0 评论 -
你真的会写单例模式吗——Java实现
来源:吃桔子的攻城狮链接: http://www.tekbroaden.com/singleton-java.html单例模式可能是代码最少的模式了,但是少不一定意味着简单,想要用好、用对单例模式,还真得费一番脑筋。本文对Java中常见的单例模式写法做了一个总结,如有错漏之处,恳请读者指正。饿汉法顾名思义,饿汉法就是在第一次引用该类的时候就创建对象实例,而不管实原创 2017-04-11 14:36:46 · 470 阅读 · 0 评论 -
2018年最新JAVA面试知识点大纲整理
跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽。切不可跟风,看到同事一个个都走了,自己也盲目的面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的轨迹),还是钱给少了,不受重视。准备不充分的面试,完全是浪费时间,更是对自己的不负责(如果title很高,当我没说)。今天给大家分享下chenssy在这次跳槽中整理的Java面试大纲,其中大部分都是面试过...原创 2018-03-26 11:11:40 · 3852 阅读 · 0 评论 -
Java并发编程:线程池的使用
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以...原创 2018-04-23 11:32:40 · 296 阅读 · 0 评论 -
事务那些事
Transaction 也就是所谓的事务了,通俗理解就是一件事情。从小,父母就教育我们,做事情要有始有终,不能半途而废。 事务也是这样,不能做一般就不做了,要么做完,要么就不做。也就是说,事务必须是一个不可分割的整体,就像我们在化学课里学到的原子,原子是构成物质的最小单位。于是,人们就归纳出事务的第一个特性:原子性(Atomicity)。我靠,一点都不神秘嘛。特别是在数据库领域,事务是一个非常重要...原创 2018-05-09 15:51:06 · 205 阅读 · 0 评论 -
Java代理那些事
原博转自:https://my.oschina.net/huangyong/blog/159788Proxy,也就是“代理”了。意思就是,你不用去做,别人代替你去处理。比如说:赚钱方面,我就是我老婆的 Proxy;带小孩方面,我老婆就是我的 Proxy;家务事方面,没有 Proxy。 它在程序开发中起到了非常重要的作用,比如传说中的 AOP(面向切面编程),就是针对代理的一种应用。此外,在设计模式...原创 2018-05-09 17:02:03 · 304 阅读 · 0 评论 -
AOP那些事
今天我要和大家分享的是 AOP(Aspect-Oriented Programming)这个东西,名字与 OOP 仅差一个字母,其实它是对 OOP 编程方式的一种补充,并非是取而代之。翻译过来就是“面向方面编程”,可我更倾向于翻译为“面向切面编程”。它听起有些的神秘,为什么呢?当你看完这篇文章的时候,就会知道,我们做的很重要的工作就是去写这个“切面” 。那么什么是“切面”呢?没错!就是用一把刀来切...原创 2018-05-09 17:33:38 · 303 阅读 · 0 评论 -
AOP那些事(续集)
在上篇中,我们从写死代码,到使用代理;从编程式 Spring AOP 到声明式 Spring AOP。一切都朝着简单实用主义的方向在发展。沿着 Spring AOP 的方向,Rod Johnson(老罗)花了不少心思,都是为了让我们使用 Spring 框架时不会感受到麻烦,但事实却并非如此。那么,后来老罗究竟对 Spring AOP 做了哪些改进呢?现在继续!9. Spring AOP:切面之前谈...原创 2018-05-09 18:22:30 · 247 阅读 · 0 评论 -
Java并发编程:线程池的使用
Java并发编程:线程池的使用 我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池来达到...原创 2018-05-07 16:34:08 · 298 阅读 · 0 评论 -
Java GC算法 垃圾收集器
概述垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,我们的内存垃圾回收主要集中于 java 堆和方法区中,在程序运行期间,这部分内存的分配和使用都是动态的....原创 2018-05-16 16:39:30 · 285 阅读 · 0 评论 -
Java类的加载机制
java类的加载机制 1、什么是类的加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。类加载器并不需要等到某个类被“...原创 2018-05-16 18:15:07 · 266 阅读 · 0 评论 -
电商网站商品详情架构
本章以京东商品详情页为例,京东商品详情页虽然仅是单个页面,但是其数据聚合源是非常多的,除了一些实时性要求比较高的如价格、库存、服务支持等通过AJAX异步加载加载之外,其他的数据都是在后端做数据聚合然后拼装网页模板的。http://item.jd.com/1217499.html 如图所示,商品页主要包括商品基本信息(基本信息、图片列表、颜色/尺码关系、扩展属性、规格参数、包装清单、售后保障等)、商...原创 2018-06-22 17:10:18 · 3305 阅读 · 0 评论 -
深入理解Java中的volatile关键字
在Java内存模型详解中我们曾经介绍过,Java语言为了解决并发编程中存在的原子性、可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized、volatile、final、concurren包等。在前一篇文章中,我们也介绍了synchronized的用法及原理。本文,来分析一下另外一个关键字——volatile。本文就围绕volatile展开,主要介绍volatil...原创 2018-10-11 11:01:49 · 659 阅读 · 0 评论 -
JAVA内存模型详解
前几天,发了一篇文章,介绍了一下JVM内存结构、Java内存模型以及Java对象模型之间的区别。有很多小伙伴反馈希望可以深入的讲解下每个知识点。Java内存模型,是这三个知识点当中最晦涩难懂的一个,而且涉及到很多背景知识和相关知识。网上有很多关于Java内存模型的文章,在《深入理解Java虚拟机》和《Java并发编程的艺术》等书中也都有关于这个知识点的介绍。但是,很多人读完之后还是搞不清楚,甚...原创 2018-11-08 20:48:12 · 307 阅读 · 0 评论 -
近五年来133个Java 面试问题及列表
Java 面试随着时间的改变而改变。在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入。 在我初入职场的时候,类似于 Vector 与 Array 的区别、HashMap 与 Hashtable 的区别是最流行的问题,只需要记住它们,就能在面试中获得更好的机会,但这种情形已经不复存在。如今,你原创 2017-02-20 11:39:42 · 2230 阅读 · 0 评论 -
JVM(JAVA虚拟机)调优及原理
本文转载自:http://blog.csdn.net/kthq/article/details/8618052堆内存设置原理JVM堆内存分为2块:Permanent Space 和 Heap Space。Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。Heap原创 2016-09-05 18:46:26 · 11587 阅读 · 0 评论 -
Java中级开发工程师知识点归纳
一、版本更新说明:2015.03.09--------文章发布2015.03.11--------添加了Java IO机制中的种类和应用场景的解释,添加了Java内存模型的相关知识点2015.03.13--------文章按技术划分,增加J2EE规范的解释2015.04.25--------增加对LRU缓存设计的描述2015.04.26--------增加对转载 2016-08-18 17:56:41 · 15958 阅读 · 2 评论 -
Spring AOP 常用的四种实现方式
Spring实现AOP的四种方式 先了解AOP的相关术语: 1.通知(Advice): 通知定义了切面是什么以及何时使用。描述了切面要完成的工作和何时需要执行这个工作。 2.连接点(Joinpoint): 程序能够应用通知的一个“时机”,这些“时机”就是连接点,例如方法被调用时、异常被抛出时等等。 3.切入点(Pointcut) 通知定义了切面要发生的“故事”和时间转载 2016-04-26 16:07:57 · 5055 阅读 · 0 评论 -
运行时异常与一般异常有何异同
Throwable是所有Java程序中错误处理的父类,有两种资类:Error和Exception。 Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。Exception:表示可恢复的例外,这是可捕捉到的。Java提供了两类主要的异常:runti转载 2016-04-26 16:10:44 · 485 阅读 · 0 评论 -
JVM调优总结-基本垃圾回收算法
可以从不同的的角度去划分垃圾回收算法:按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。 标记-清除(Mark-Sweep):此算法执行分两阶段。第一阶段从引转载 2016-04-26 16:12:28 · 422 阅读 · 0 评论 -
线程安全知识
一.什么是线程安全?如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。 线程安全问题都是由全局变量及静态变量转载 2016-04-26 16:13:48 · 530 阅读 · 0 评论 -
Collection List Set Map 区别记忆
Collection List Set Map 区别记忆这些都代表了 Java 中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否允许元素重复否Collection否是List是是Set转载 2016-04-26 16:15:00 · 454 阅读 · 0 评论 -
"=="和equals方法的区别
1、==操作符专门用来比较变量的值是否相等。比较好理解的一点是:int a=10;int b=10;则a==b将是true。但不好理解的地方是:String a=new String("foo");String b=new String("foo");则a==b将返回false。对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a转载 2016-04-26 16:15:56 · 364 阅读 · 0 评论 -
try、catch、finally、return的执行顺序
public class JVMTest {public static void main(String[] args){System.out.println("aa:" + aa());}public static int aa(){int a = 1;int b = 10;try{System.out.println("abc");return a;转载 2016-04-26 16:17:11 · 426 阅读 · 0 评论 -
JAVA中Stack和Heap的区别
1.Java中对象都是分配在heap(堆)中。从heap中分配内存所消耗的时间远远大于从stack产生存储空间所需的时间。 (1)每个应用程序运行时,都有属于自己的一段内存空间,用于存放临时变量、参数传递、函数调用时的PC值的保存。这叫stack。 (2)所有的应用可以从一个系统共用的空间中申请供自己使用的内存,这个共用的空间叫heap。 (3)stack中的对象或变量只要定义转载 2016-04-26 16:18:11 · 605 阅读 · 0 评论 -
Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。 1.与运算符与运算符用符号“&”表示,其使用规律如下:两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。public class转载 2016-04-26 17:57:17 · 638 阅读 · 0 评论 -
【数据结构】之二叉树的java实现
二叉树的定义:二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。 二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的、分别称作这个根的左子树和右子树的二叉树组成。 这个定义转载 2016-04-28 13:43:23 · 575 阅读 · 0 评论 -
SpringMVC @RequestParam 中文乱码问题解决
客户端用GET方式请求SpringMVC时,如果用采用如下方式则中文没有出现乱码:http://127.0.0.1:8080/SpringMVCHibernate4/rest/user/getUserById0/100-张三@RequestMapping(value="/getUserById0/{id}-{name}",method=RequestMethod.GET)@Respon原创 2016-06-15 13:04:43 · 14349 阅读 · 3 评论 -
Mysql主从Java端实现
继昨天的Mysql主从的概述及基本的配置。今天趁着不是很忙的时候整理一下主从JAVA端的代码实现。下面开始贴代码:Spring MVC 的datasorce配置,这里我们使用的阿里的druid(德鲁伊)数据库连接池,先配置两个数据库链接池。分别连接主、从两个库。然后使用spring 的一个主要特性AOP切面编程来根据方法的前缀命名来选择是使用主数据库还是使用从数据库。(我选择切的是contro原创 2016-08-04 10:46:16 · 4816 阅读 · 2 评论 -
阿里云OSS 分块上传的代码整理
废话不多说,把代码贴出来。package com.changba.erp.utils;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import jav原创 2016-08-01 10:34:20 · 9810 阅读 · 17 评论 -
前后端分离。前端POST请求参数过长,导致400错误解决办法及分析
这两天做好的功能要上线了。但是测试的时候忽然发现当POST提交数据量多大时,会导致后端报400错误。最开始以为瓶颈存在于tomcat,因为tomcat默认能接受的POST请求大小为2M,所以手动修改tomcat server.xml 文件,将接受POST大小修改为不限制。 经测试,发现依旧不起作用。 今天上网查询了相关资料,解决了这个问题。资料比较零散,在这里整理一下,为同样遇到该问题的伙伴们提供原创 2016-08-01 17:19:19 · 27189 阅读 · 0 评论 -
Spring MVC之@RequestBody, @ResponseBody 详解
引言:接上一篇文章讲述处理@RequestMapping的方法参数绑定之后,详细介绍下@RequestBody、@ResponseBody的具体用法和使用时机;简介:@RequestBody作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的转载 2016-08-02 11:01:44 · 447 阅读 · 0 评论 -
JVM调优总结
目录数据类型堆与栈Java对象的大小引用类型按照基本回收策略分按分区对待的方式分按系统线程分如何区分垃圾如何处理碎片如何解决同时存在的对象创建和对象回收问题为什么要分代如何分代什么情况下触发垃圾回收分代垃圾回收流程示意选择合适的垃圾收集算法小结回收器选择辅助信息常见配置汇总调优总结垃圾回收的瓶颈增量收集的演进Garbage Firest(G1)展望JVM调优工具如何调优线程监控内存泄漏检查垃圾...原创 2018-11-23 16:52:07 · 707 阅读 · 0 评论