自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (2)
  • 收藏
  • 关注

原创 京东软件开发工程师面试总结

第一次工作面试,虽然成功了,但是有许多不足的地方,需要反思和改正。因为时间与距离的原因,两次面试都是电话面试进行的,第一次面试一个面试官,面试时间将近20分钟,第二次面试,两个面试官先后问问题,整个面试将近50分钟。面试结果是通过。面试有一段时间了,可能有一些面试问题忘记了。第一次面试:问的基本上都是Java基础的知识,简单的问了些问题,问题大致是一下几个方面的:1、 Java集合类,Ar...

2018-11-24 14:02:35 4320 7

原创 redis与memcached的区别

①Memcached出现于2003年,key支持250bytes,value支持1MB;redis出现于2009年,key和value都是支持512MB的。持久化方面,memcached过期失效,redis可以缓存回收(6种回收机制),有存储,可算为NOSQL,有优化,支持190多种命令。集群方面,memcached不支持集群,基于两次哈希,第一次哈希找到服务器节点,第二次哈希找到存储的值...

2018-11-24 11:26:30 270

原创 软件开发工程师进阶之路

服务器方面:1、web服务器nginx和apache的对比分析①nginx相对于apache的优点:轻量级,同样起web 服务,比apache 占用更少的内存及资源 ,抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能,高度模块化的设计,编写模块相对简单。apache相对于nginx 的优点:A.rewrite ...

2018-11-24 11:02:54 1418

原创 arrays.asList方法注意事项

Arrays.asList用来将数组转化为List,这个看似功能很明了的方法却暗藏玄机。请先看下面的程序:int[] datas = new int[]{1,2,3,4,5};List list = Arrays.asList(datas);System.out.println(list.size());运行结果是1。一个长度为5的数组,转化为List后,长度却成了1。再对这个程...

2018-11-21 15:49:25 236

原创 redis第一次启动错误Creating Server TCP listening socket 127.0.0.1:6379: bind: No error

windows下安装redis之后,第一次启动失败,报错显示如下:解决方法:在命令行中运行redis-cli.exe127.0.0.1:6379>shutdownnot connected>exit然后重新运行redis-server.exe redis.windows.conf,启动成功!启动成功如下效果:...

2018-11-16 15:17:38 438

原创 什么是基于注解的切面实现?(AOP)

注:学习aop时查了其他资料,然后自己整合了一下。--在程序运行时,动态的将代码切入到类的指定方法、指定位置上的编程思想就是面向切面编程    一般而言,我们管切入到指定类指定方法的代码片段为切面,而切入的哪些类、哪些方法则叫切入点。有了AOP,我们就可以把几个类共有的代码,抽取到一个切片中,等到需要时在切入对象中去,从而改变其原有的行为。    AOP就是OOP的补充而已。OOP从横向...

2018-11-10 14:26:30 1116

原创 Stack和Heap的区别

堆栈的概念:  堆栈是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。要点:堆,队列优先,先进先出(FIFO—first in first out)。栈,先进后出(FILO—First-In/Last-Out)。堆和栈的区别:一、堆栈空...

2018-11-10 14:22:49 218

原创 volatile的内存语义

理解volatile特性的一个好方法是把volatile变量的单个读/写.看成是使用同一个锁对这些单个读/写操作做出了同步。其实,volatile的读写操作与锁的获取与释放有这对应的关系,我们来慢慢细看,首先看一下volatile的特性:volatile的特性class VolatileFeaturesExample{ volatile long v1 = 0l; public ...

2018-11-07 17:29:55 266

原创 Java内存模型之顺序一致性

顺序一致性内存模型是一个理论上的参考模型,在设计的时候,处理器的内存模型和编程语言的内存模型都会以顺序一致性内存模型作为参考。数据竞争与顺序一致性当程序为正确同步时,就可能会存在数据竞争。Java内存模型规范对数据竞争的定义如下:在一个线程中写一个变量 ,在另一个线程中读同一个变量 , 而且写和读没有通过同步来排序。当代码中存在数据竞争时,程序的执行往往产生违反直觉的结果,这个我们...

2018-11-07 16:22:40 251

原创 多线程之重排序详解

重排序重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据的依赖性。数据依赖分为3中类型,如下表所示:上面3中情况,只要重排序两个操作的顺序。程序的结果就会改变。编译器和处理器是可以对操作进行重排序的,在重排序时,会遵守数据依赖性,编译器和处理器不会改变存在数...

2018-11-07 14:17:56 2077 2

原创 Java多线程之happen-before简介

在JDK5 开始,Java使用新的JSR-133内存模型,该模型使用happens-before的概念来阐述操作之间的内存可见性。在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须要存在happens-before关系。这里提到的两个操作既可以是一个线程之内,也可以是在不同的线程之间。与我们程序员密切相关的happens-before规则如下。程序顺序规则:一个...

2018-11-05 15:17:47 535

原创 并发编程模型详解

       现在的处理器使用写缓冲区临时保存向内存写入数据。写缓冲区可以保证指令流水线持续运行,他可以避免与处理器停顿下来等待向内存写入数据而产生的延迟。同时,通过一批处理的方式刷新写缓冲区,以及合并写缓冲区中对同一个内存地址的多次写,减少对内存总线的占用。虽然写缓冲区有这么多好处,但是每个处理器上的写缓冲区,仅仅对它所在的处理器可见。这个特性会对内存操作的执行顺序产生重要的影响:处理器对内存的...

2018-11-05 14:30:08 169

原创 Java内存模型的抽象结构

在Java中,所有实例域,静态域和数组元素都存储在堆内存中,堆内存在线程之间完成共享。局部变量,方法定义参数和异常处理参数不会在线程之间共享,他们不会有内存可见性问题,也不会受内存模型的影响。Java线程之间的通信有Java内存模型(JMM)控制,JMM决定一个线程对共享变量的写入何时对另外一个线程可见,从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储了该线程以...

2018-11-05 10:43:28 605

原创 CAS实现原子操作的三大问题

在Java并发包中有一些并发框架也使用了自旋CAS的方式来实现原子性,比如LinkTransferQueue类的Xfer方法。CAS虽然很高效 的解决了原子操作,但是CAS仍然存在三大问题:ABA问题,循环时间开销大,以及只能保证一个共享变量的原子操作。(1)ABA问题因为CAS需要在操作值的时候,检查值有么有发生变化,如没有发生变化则更新,但是如果原来的一个值是A,变成了B,又变成了A,...

2018-11-05 09:45:40 974 3

原创 Java内存模型之从源代码到指令序列的重排序

在执行程序时,为了提高性能,编译器和处理器常常会对指令进行重排序,重排序分3种类型。编译器优化的重排序。编译器在不改变单线程程序予以的前提下,可以重新安排语句的执行顺序。 指令级并行的重排序。现在处理器采用了指令级并行技术来将多条指令重叠执行。如果不存在数据依赖性,处理器可以改变语句对应机器指令的执行顺序。 内存系统的重排序。由于处理器使用缓存和读/写缓冲区,这使得加载和存储操作看上去可能...

2018-11-04 22:32:12 257

原创 原子操作的实现原理

原子(atomic)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为 “ 不可被终端的一个或一系列的操作”。在多处理器实现原子操作就变得有点复杂了。在了解原子操作的实现之前,我们先看一下相关的术语,处理器如何实现原子操作32位IA-32处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。首先处理器会自动保证基本的内存操作的原...

2018-11-04 22:03:35 626

原创 synchronized的实现原理

在多线程并发编程中synchronized一直是一个元老级的角色,我们先看一下利用synchronized实现同步的基础,Java中每一个对象都可以作为一个锁。 具体表现为3种形式:对于普通同步方法,锁是当前实例对象。 对于静态同步方法,锁的是当前类的Class对象 对于同步方法块,锁是Synchonized括号里配置的对象当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异常...

2018-11-04 20:45:37 141

原创 volatile的使用优化

在JDK 7 的并发包中有一个队列集合类Linked-TransferQueue,它在使用volatile变量的时候,用一种追加字节的方式来优化队列出队和入队的性能。追加字节真的能提高性能吗?这种方式看起来很神奇,但如果深入理解处理器架构就能理解其中的奥秘。让我们先看看LinkedTeansferQueue这个类,它使用一个内部类类型来定义队列的头结点和尾节点,而这个内部类相对于父类只做了...

2018-11-04 18:37:51 433

原创 Java并发机制的底层实现原理之volatile

Java代码在编译之后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转换为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令。首先看一下volatile的定义:在多线程并发编程中synchronized和volatile都扮演着重要的角色,volatile是轻量级的synchronized,它在处理器开发中保证了共享边浪的“...

2018-11-04 17:43:01 189

原创 jquery动态控制div显示隐藏

对于经常使用到的代码,在博客上备份一下,用到时,如果想不起来,直接copy过去。最近在做项目的时候,经常卡在前段这方面,所以,对于经常用到的代码,如果一直出错的话,我们直接copy,不浪费时间;$(function(){ $('#select_condition_div').click(function(){//点击a标签 if($('#select_out_big_div...

2018-11-01 19:31:53 9704

jsonview插件

jsonview插件,可在谷歌浏览器中安装,方便web开发中对json数据的查看和检查

2018-09-27

spring-boot-mybatis-mysql-demo

springboot+mybatis 实现对mysql数据的增删改查。可以直接导入项目使用启动springboot的启动类run.java,在浏览器中输入localhost:8080回车即可

2018-09-15

空空如也

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

TA关注的人

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