java
文章平均质量分 68
小马和小金
这个作者很懒,什么都没留下…
展开
-
java设计模式
23种设计模式总结1.单例模式(Singleton Pattern)定义:Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。)通用代码:(是线程安全的)public class Singleton { priv...转载 2018-04-05 12:31:04 · 10122 阅读 · 0 评论 -
分布式锁简单入门以及三种实现方式介绍
很多小伙伴在学习Java的时候,总是感觉Java多线程在实际的业务中很少使用,以至于不会花太多的时间去学习,技术债不断累积!等到了一定程度的时候对于与Java多线程相关的东西就很难理解,今天需要探讨的东西也是一样的和Java多线程相关的!做好准备,马上开车!学过Java多线程的应该都知道什么是锁,没学过的也不用担心,Java中的锁可以简单的理解为多线程情况下访问临界资源的一种线程同步机制。...转载 2018-08-30 23:48:52 · 89 阅读 · 0 评论 -
Redis和MySQL的区别
MySQL是关系型数据库,是持久化存储的,查询检索的话,会涉及到磁盘IO操作,为了提高性能,可以使用缓存技术,而memcached就是内存数据库,数据存储在内存中(当然也可以进行持久化存储),可以用作缓存数据库。用户首先去memcached查询数据,如果未查询到(即缓存未命中),才去MySQL中查询数据,查询到的数据会更新到缓存数据库中,提供给下次可能进行的查询。提高了数据查询方面的性能。 ...原创 2018-09-01 16:46:40 · 1053 阅读 · 0 评论 -
Tomcat整体架构浅析
整体结构 1各组件解释 组件包含关系 其它组件 2组件的生命线Lifecycle 启动流程 pipeline valve机制 1名词解释 2总体分析 3接口及默认实现 pipeline Valve Value继承体系类图 自定义Valve Tomcat中的设计模式 1模板方法模式 2责任链模式 3观察者模式 ...转载 2018-09-01 17:11:56 · 116 阅读 · 0 评论 -
如何设计一个秒杀系统
什么是秒杀秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到。对于电商网站中一些稀缺或者特价商品,电商网站一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大量用户前来抢购,并且会在约定的时间点同时在秒杀页面进行抢购。秒杀系统场景特点秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问流量激增。 秒杀一般是访问请求数量远远大于库存数量,只有少部分...转载 2018-09-05 09:39:01 · 87 阅读 · 0 评论 -
理解zookeeper选举机制
zookeeper集群配置多个实例共同构成一个集群对外提供服务以达到水平扩展的目的,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服务器都是平等的。这篇主要分析leader的选择机制,zookeeper提供了三种方式:LeaderElection AuthFastLeaderElection FastLeader...原创 2018-09-05 10:49:40 · 113 阅读 · 0 评论 -
深入理解Java并发之synchronized实现原理
关联文章:深入理解Java类型信息(Class对象)与反射机制深入理解Java枚举类型(enum)深入理解Java注解类型(@Annotation)深入理解Java类加载器(ClassLoader)深入理解Java并发之synchronized实现原理Java并发编程-无锁CAS与Unsafe类及其并发包Atomic深入理解Java内存模型(JMM)及volatile关...转载 2018-10-03 16:57:16 · 98 阅读 · 0 评论 -
Java并发编程:线程池的使用
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? ...原创 2018-10-03 21:44:58 · 94 阅读 · 0 评论 -
Java NIO 详解(一)
一、基本概念描述1.1 I/O简介I/O即输入输出,是计算机与外界世界的一个借口。IO操作的实际主题是操作系统。在java编程中,一般使用流的方式来处理IO,所有的IO都被视作是单个字节的移动,通过stream对象一次移动一个字节。流IO负责把对象转换为字节,然后再转换为对象。关于Java IO相关知识请参考我的另一篇文章:Java IO 详解1.2 什么是NIONIO即New...原创 2018-10-04 10:26:25 · 92 阅读 · 0 评论 -
Java NIO 详解(二)
在我的上一篇文章JavaNIO详解(一)中介绍了关于标准输入输出NIO相关知识, 本篇将重点介绍基于网络编程NIO(异步IO)。异步IO异步 I/O 是一种没有阻塞地读写数据的方法。通常,在代码进行 read() 调用时,代码会阻塞直至有可供读取的数据。同样, write()调用将会阻塞直至数据能够写入,关于同步的IO请参考另一篇文章Java IO。另一方面,异步 I/O 调用不但不会...原创 2018-10-04 10:40:35 · 202 阅读 · 1 评论 -
Redis学习笔记--Redis数据过期策略详解
本文对Redis的过期机制简单的讲解一下 讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用到redis作为缓存,有很多数据都是临时缓存一下,可能用过之后很久都不会再用到了(比如暂存session,又或者只存放日行情股票数据)那么就会出现一下几个问题了Redis会自己回收清理不用的数据吗? 如果能,那如何配置? 如果不能,如何防止数据累加后大量占用存储空间的问题? 之前一直...原创 2018-10-04 13:21:55 · 141 阅读 · 0 评论 -
微服务架构下分布式事务解决方案——阿里GTS
1 微服务的发展微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。当前被越来越多的开发者推崇,很多互联网行业巨头、开源社区等都开始了微服务的讨论和实践。Hailo有160个不同服务构成,NetFlix有大约600个服务。国内方面,阿里巴巴、腾讯、360、京东、58同城等很多互联网公司都进行了微服务化实践。当前微服务的开发框架也非常多,...转载 2018-08-30 23:47:15 · 143 阅读 · 0 评论 -
分布式系统之CAP理论
分布式系统之CAP理论 任老师第一节主要讲了分布式系统实现时候面临的八个问题,布置的作业就是这个,查询CAP理论。 笔者初次接触分布式,所以本文主要是一个汇总。一.CAP起源 CAP原本是一个猜想,2000年PODC大会的时候大牛Brewer提出的,他认为在设计一个大规模可扩放的网络服务时候会遇到三个特性:一致性(consistency)、可用性(Availability)、...转载 2018-08-30 23:46:09 · 177 阅读 · 0 评论 -
jAVA线程池原理详解一
线程池的优点1、线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以重复使用。2、可以根据系统的承受能力,调整线程池中工作线程的数量,防止因为消耗过多内存导致服务器崩溃。线程池的创建1 public ThreadPoolExecutor(int corePoolSize,2 int maximum...转载 2018-08-03 17:27:05 · 176 阅读 · 0 评论 -
浅谈AVL树,红黑树,B树,B+树原理及应用
二叉查找树简介二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质:任意节点左子树不为空,则左子树的值均小于根节点的值. 任意节点右子树不为空,则右子树的值均大于于根节点的值. 任意节点的左右子树也分别是二叉查找树. 没有键值相等的节点.局限性及应用一个二叉查找树是由n个节点随机构成,所以,对于某些情况,二叉查找树会退化成一个有n个节点的线性链...转载 2018-08-04 11:00:26 · 87 阅读 · 0 评论 -
面试总结之谈谈你对面向对象的理解
对面向对象的理解在我理解,面向对象是向现实世界模型的自然延伸,这是一种“万物皆对象”的编程思想。在现实生活中的任何物体都可以归为一类事物,而每一个个体都是一类事物的实例。面向对象的编程是以对象为中心,以消息为驱动,所以程序=对象+消息。面向对象有三大特性,封装、继承和多态。封装就是将一类事物的属性和行为抽象成一个类,使其属性私有化,行为公开化,提高了数据的隐秘性的同时,使代码模块化。这样做使...转载 2018-08-09 10:27:52 · 302 阅读 · 0 评论 -
Java关键字transient和volatile
1. transient 词义:短暂的首先说说“序列化”,把一个对象的表示转化为字节流的过程称为串行化(也称为序列化,serialization),从字节流中把对象重建出来称为反串行化(也称为为反序列化,deserialization)。transient 为不应被串行化的数据提供了一个语言级的标记数据方法。transient是类型修饰符,只能用来修饰字段。在对象序列化的过程中,标...转载 2018-08-10 10:14:46 · 101 阅读 · 0 评论 -
Java 虚拟机面试题全面解析(干货)
JDK 是什么 JRE 是什么 Java历史版本的特性 Java Version SE 50 Java Version SE 6 Java Version SE 7 Java 8 运行时数据区域包括哪些 程序计数器线程私有 Java 虚拟机栈线程私有 本地方法栈线程私有 Java 堆线程共享 方法区线程共享 运行时常量池 Java 中对象访问是如...转载 2018-08-01 17:10:48 · 230 阅读 · 0 评论 -
单点登录系统
一、单系统登录机制1、http无状态协议 web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系 但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必...转载 2018-08-02 13:01:12 · 154 阅读 · 0 评论 -
JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)
相信和小编一样的程序猿们在日常工作或面试当中经常会遇到JVM的垃圾回收问题,有没有在夜深人静的时候详细捋一捋JVM垃圾回收机制中的知识点呢?没时间捋也没关系,因为小编接下来会给你捋一捋。一、 技术背景你要了解吧 二、 哪些内存需要回收? 2.1 引用计数算法 2.1.1 算法分析 2.1.2 优缺点 2.1.3 是不是很无趣,来段代码压压惊 2.2 可达性分析算...转载 2018-08-11 10:46:16 · 168 阅读 · 0 评论 -
进程间的五种通信方式介绍
进程间通信(IPC)介绍进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。以Linux中的C语言编程为例。一、管道管道,通常指无名管道,是 UNI...转载 2018-08-07 09:39:30 · 164 阅读 · 0 评论 -
java 性能优化:35 个小细节,让你提升 java 代码的运行效率
前言代码 优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考...转载 2018-08-03 14:39:27 · 129 阅读 · 0 评论 -
聊聊分布式事务,再说说解决方案
前言最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行 CAP 的下一阶段的开发工作,不过目前已经告一段落了。接下来还是开始我们今天的话题,说说分布式事务,或者说是我眼中的分布式事务,因为每个人可能对其的理解都不一样。分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事...转载 2018-08-30 23:42:05 · 113 阅读 · 0 评论 -
分布式面试题(含解答)
分布式事务指事务的每个操作步骤都位于不同的节点上,需要保证事务的 AICD 特性。1. 产生原因数据库分库分表;SOA 架构,比如一个电商网站将订单业务和库存业务分离出来放到不同的节点上。2. 应用场景下单:减少库存同时更新订单状态。库存和订单不在不同一个数据库,因此涉及分布式事务。支付:买家账户扣款同时卖家账户入账。买家和卖家账户信息不在同一个数据库,因此涉及分布式事...转载 2018-08-30 23:42:55 · 14658 阅读 · 0 评论 -
关于拦截器与过滤器使用场景、拦截器与过滤器的区别整理
拦截器与过滤器的区别总结: 过滤器在web.xml中配置:(1)因为一开始在过滤器中映射的url-pattern填写路径是*.action。所有的action要经过它的过滤。<url-pattern>*.action</url-pattern>(2)因为在web.xml中配置了过滤器,所以,执行过程所有程序都经过struts2过滤器(路径是:/*),首...原创 2018-10-08 15:31:33 · 4819 阅读 · 0 评论