指令重排序如果说内存可见性问题已经让你抓狂了,那么下边的这个指令重排序的事儿估计就要骂娘了~这事儿还得从一段代码说起:publicclassReordering{ privatestaticboolean flag; privatestaticint num; publicstaticvoidmain(Strin……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 18浏览 0评论0个赞
使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了。先总结一下SSM整合的文件配置。其实具体的用法最好还是看官方文档。Spring:http://spring.io/docsMyBatis:http://mybatis.github.io/mybatis-3/基本的组织结构和用法就不说了,前面的博客和官方文档上都非常的全面。j……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 29浏览 0评论0个赞
本文源码分析基于Oracle JDK 1.7.0_71,请知悉。$ java –versionjava version“1.7.0_71”Java(TM) SE Runtime Environment (build 1.7.0_71-b14)Java HotSpot(TM) 64-Bit Se……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 23浏览 0评论0个赞
目前 Docker 官方维护了一个公共仓库 Docker Hub,其中已经包括了数量超过 15,000 的镜像。大部分需求都可以通过在 DockerHub 中直接下载镜像来实现。Docker Hub注册&&登录你可以在 https://cloud.docker.com 免费注册一个 Docker 账号。可以通过执行 doc……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 28浏览 0评论0个赞
对于许多开发人员来说,控制反演(IoC)都是一个模糊的概念,因为他们在现实世界中很少或没有被应用过。在最好的情况下,控制反演(IoC)可以加单的认为是等效于依赖注入(DI)。实际上,只有在翻转控制与依赖注入双方都只是反映翻转依赖管理控制的时候,才认为两者是等效的。虽然,依赖注入实际上是 IoC 的一种众所周知的形式。但是,事实上 IoC 却是一个……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 26浏览 0评论0个赞
简单解释 MapReduce 算法一个有趣的例子你想数出一摞牌中有多少张黑桃。直观方式是一张一张检查并且数出有多少张是黑桃?MapReduce 方法则是:给在座的所有玩家中分配这摞牌让每个玩家数自己手中的牌有几张是黑桃,然后把这个数目汇报给你你把所有玩家告诉你的数字加起来,得到最后的结论拆分MapReduce ……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 19浏览 0评论0个赞
内部类和静态内部类的区别内部类:1、内部类中的变量和方法不能声明为静态的。2、内部类实例化:B 是 A 的内部类,实例化 B:A.B b = new A().new B()。3、内部类可以引用外部类的静态或者非静态属性及方法。静态内部类:1、静态内部类属性和方法可以声明为静态的或者非静态的。2、实例化静态内部类:B 是 A 的……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 20浏览 0评论0个赞
Java 面向对象相关概念Java 是一种基于面向对象概念的编程语言,使用高度抽象化来解决现实世界的问题。 面向对象的方法将现实世界中的对象进行概念化,以便于在应用之间进行重用。例如:椅子、风扇、狗和电脑等。Java 里的类(Class)是一个蓝图、模板,或者称之为原型,它定义了同一类事物的相同属性和行为。实例(Instance)是……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 18浏览 0评论0个赞
1. 前言最近看到几个有趣的关于 Java 核心类 String 的问题。String 类是如何实现其不可变的特性的,设计成不可变的好处在哪里。为什么不推荐使用+号的方式去形成新的字符串,推荐使用 StringBuilder 或者 StringBuffer 呢。翻阅了网上的一些博客和 stackoverflow,结合自己……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 28浏览 0评论0个赞
流Java 所有的流类位于 java.io 包中,都分别继承字以下四种抽象流类型。Type字节流字符流输入流InputStreamReader输出流OutputStreamWriter继承自 InputStream/OutputStream 的流都是用于向程序中输入/输出数据,且数据的单位都是字……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 18浏览 0评论0个赞
1为什么需要锁?在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突。这就是著名的并发性问题。2典型的冲突类型:(1)丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失。例如:用户 A 把值从 6 改为 2,用户 B 把值从 2 改为 6,则用户 A 丢失了他的更新。(2……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 26浏览 0评论0个赞
众所周知 HashMap 是一个无序的 Map,因为每次根据 key 的 hashcode 映射到 Entry 数组上,所以遍历出来的顺序并不是写入的顺序。因此 JDK 推出一个基于 HashMap 但具有顺序的 LinkedHashMap 来解决有排序需求的场景。它的底层是继承于 HashMap 实现的,由一个双向链表所构成。Linked……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 19浏览 0评论0个赞
代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法.举个例子来说明代理的作用:假设我们……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 17浏览 0评论0个赞
下面是一段随机数程序。publicstaticvoid main(String[] args){ System.out.println(randomString(-229985452)+" "+ randomString(-147909649));}publicstaticS……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 47浏览 0评论0个赞
导读在上一篇文章中我们通过场景举例的方式,讨论了一套相对通用的互联网业务账户系统,从业务模型上应该如何定义。那么除了从业务模型上进行定义外,在具体系统实现上又该如何设计?又有哪些需要注意的地方呢?在本篇内容中小码农就和大家一起讨论下账户系统的实现细节,希望可以和大家一起交流进步。事实上账户系统的业务逻辑是比较复杂的,对数据的一致性要求……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 20浏览 0评论0个赞
如何用 Map 对象创建 Set 对象Java 中的 Map 和 Set 有不少相似之处。本文将分享一个把 Map 类转化成 Set 类的小技巧。或许你已经知道,HashSet 其实是一个披着 Set 方法外衣的 HashMap;同样,TreeSet 其实也是一个披着 Set 方法外衣的 TreeMap。Map 并不支持直接用迭代器进行……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 22浏览 0评论0个赞
(1)JVM 如何加载一个类的过程,双亲委派模型中有哪些方法?类的生命周期:加载、(验证、准备、解析)链接、初始化、使用和卸载七个阶段其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持 Ja……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 18浏览 0评论0个赞
一、JVM 基础知识1)Java 是如何实现跨平台的?注意:跨平台的是 Java 程序,而不是 JVM。JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 JVM答:我们编写的 Java 源码,编译后会生成一种 .class 文件,称为字节码文件。Java 虚拟机(JVM)就是负责将字节码文……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 39浏览 0评论0个赞
01并发队列的选择Java 的并发包提供了三个常用的并发队列实现,分别是:ArrayBlockingQueue、ConcurrentLinkedQueue 和 LinkedBlockingQueue。ArrayBlockingQueue 是**初始容量固定**的阻塞队列,我们可以用来作为数据库模块成功竞拍的……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 29浏览 0评论0个赞
为什么使用NettyNetty是业界最流行的 NIO 框架之一,它的健壮性、功能、性能、可定制性、可扩展性在同类框架中都是首屈一指的,它已经得到了成百上千的商用项目的证明。对于为什么使用Netty这个话题,我们先看一下使用原生的 NIO 有什么缺点:NIO 的类库和 API 繁杂,使用麻烦,需要熟练掌握 Selector、ServerS……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 24浏览 0评论0个赞
前言在使用 tomcat 时,经常会遇到连接数、线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。在前面的文章 详解Tomcat配置文件 server.xml 中写到过:Connector 的主要功能,是接收连接请求,创建 Request 和 Response 对象用于和请求端交换数据……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 25浏览 0评论0个赞
问题一 获得特定数量硬币问题小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入 x(x 可以为 0)个魔法币产生更多的魔法币。魔法机器 1:如果投入 x 个魔法币,魔法机器会将其变为 2x+1 个魔法币魔法机器 2:如果投入 x 个魔法币,魔法机器会将其变为 ……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 40浏览 0评论0个赞
1. synchronized 和 reentrantlock 异同相同点都实现了多线程同步和内存可见性语义都是可重入锁不同点实现机制不同 synchronized 通过 java 对象头锁标记和 Monitor 对象实现 reentrantlock 通过 CAS、ASQ(AbstractQueuedSynchroniz……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 64浏览 0评论0个赞
支付系统概述支付系统是连接消费者、商家(或平台)和金融机构的桥梁,管理支付数据,调用第三方支付平台接口,记录支付信息(对应订单号,支付金额等),金额对账等功能,根据不同公司对于支付业务的定位不同大概有几个阶段:第一阶段:支付作为一个(封闭)的、独立的应用系统,为各系统提供支付功能支持。一般来……继续阅读 » 勤劳的小蚂蚁 2周前 (02-03) 452浏览 0评论0个赞