自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 关于秒杀系统的一些设计思路

上级限流针对于浏览器端,可以使用JS进行请求过滤,比如5秒钟之类只能点一次抢购按钮,5秒钟只能允许请求一次后端服务。这样其实就可以过滤掉大部分普通用户。但是防不住直接抓包循环调用。这种情况可以最简单的处理:在Web层通过限制一个UID在5秒之类的请求服务层的次数(可利用Redis实现)。具体实现:进入方法时,判断是否包含某个UID,不存在就是第一次请求,那么可以设置一个过期时间和次数;存在...

2019-03-06 22:43:27 402 1

原创 Java 运行时数据区域

Java运行时内存区域### 程序计数器程序计数器是当前线程所执行的字节码的行号指示器。为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器。所以程序计数器是线程私有的内存。虚拟机栈虚拟机栈是由栈帧组成的,每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机中入栈到出...

2019-02-19 10:19:10 309

原创 进程间通信的方式?线程间通信的方式?

进程间通信的方式管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。有名管道 (named pipe) :有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。信号量(semophore ) :信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访...

2019-01-10 20:39:05 447

原创 端到端TTS:结合代码分析Tacotron模型结构

本文结合keithito实现的Tacotron代码进行分析。参考资料Tacotron: Towards End-to-End Speech Synthesis端到端的TTS深度学习模型tacotron(中文语音合成)TACOTRON:端到端的语音合成Tacotron算法的系统组成Tacotron的骨干部分是一个带attention的seq2seq模型。下图描绘了该模型架构,它包含一个e...

2019-01-02 17:14:17 4092 1

转载 Java泛型之PECS原则

文章目录上下界通配符的副作用上界<? extends T>不能往里存,只能往外取上下界通配符的副作用边界让Java不同泛型之间的转换更容易了。但不要忘记,这样的转换也有一定的副作用。那就是容器的部分功能可能失效。还是以刚才的Plate为例。我们可以对盘子做两件事,往盘子里set()新东西,以及从盘子里get()东西。class Plate<T>{ priva...

2018-12-25 20:06:50 667

原创 HashMap的原理和动态扩容

文章目录HashMap的底层实现HashMap 和 Hashtable 的区别HashMap 的长度必须是2的幂HashMap的底层实现JDK1.8之前JDK1.8 之前 HashMap 底层是数组和链表结合在一起使用也就是链表散列。HashMap 通过 key 的 hashCode 经过扰动函数处理过后得到 hash 值,然后通过 (n - 1) & hash 判断当前元素存放的位...

2018-12-07 08:48:59 2859

原创 单例模式的5种实现方式

文章目录饿汉模式懒汉模式双重锁懒汉模式静态内部类模式枚举模式饿汉模式public class Singleton { //私有静态变量 private static Singleton instance = new Singleton(); //私有构造方法 private Singleton() { } //公有静态函数 public static Singleton2...

2018-11-28 16:45:52 222

原创 Spring IoC容器源码分析

这篇文章是阅读《SpringIoC容器源码分析》后的个人笔记。Spring 是渐进式的工具,并不具有很强的侵入性,它的模块也划分得很合理,即使你的应用不是 web 应用,或者之前完全没有使用到 Spring,而你就想用 Spring 的依赖注入这个功能,其实完全是可以的,它的引入不会对其他的组件产生冲突。启动过程分析ClassPathXmlApplicationContext 的构造方法中的...

2018-11-28 11:01:57 365

转载 简要分析ZooKeeper基本原理

文章目录一、ZooKeeper 基本概念1、ZooKeeper 是什么?2、ZooKeeper设计目标3、ZooKeeper主要特点二、ZooKeeper 基本原理1、ZooKeeper 系统架构2、Zookeeper 角色3、ZooKeeper 写数据流程4、ZooKeeper 组件三、ZooKeeper 应用场景总结1、统一命名服务2、配置管理3、集群管理4、分布式通知与协调5、分布式锁6、分...

2018-11-27 14:52:18 519

原创 Redis内存淘汰机制(包括LRU原理和实现)

背景Redis采用的过期策略是定期删除+惰性删除,但由于定期删除的随机性和惰性删除的被动型,仍然可能出现大量过期key堆积在内存里,导致redis的内存快耗尽。为了避免这种情况,redis的内存数据集大小上升到一定大小的时候,就会开启内存淘汰功能。Redis提供了下面几种内存淘汰策略供用户选择:noeviction:当内存使用达到阈值的时候,所有引起申请内存的命令会报错。allkeys...

2018-11-23 15:12:58 1848

转载 ElasticSearch和关系型数据库MySQL

转载自:瓦力老师の手记https://www.imooc.com/article/22083背景我们开发一般的企业级Web应用,其实从本质上来说,都是对数据的增删查改进行各个维度的包装。所以说,不管你的程序如何开发,基本上,都离不开数据本身。那么,在开发企业级应用的过程中,很多同学一定遇到过这样的困惑,当完成了应用程序的基本增删查改功能之后,用户会经常吐槽当下的查询功能并不能满足自己的查询需...

2018-11-22 15:09:39 392

原创 ArrayList部分源码分析(初始化、add、remove及动态扩容)

文章目录简介ArrayList的源码分析初始化addremoveSystem.arraycopy()和Arrays.copyOf()方法简介ArrayList的底层是数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加ArrayList实例的容量。这可以减少递增式再分配的数量。public class ...

2018-11-20 16:39:24 515

转载 Spring IoC容器和SpringMVC IoC容器的关系

要想很好理解这两个容器的关系,需要先熟悉Spring是怎样在web容器中启动起来的。Spring的启动过程其实就是其IoC容器的启动过程。Spring的启动过程:首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的Spring IoC容器提供宿主环境;其次,在web.xml中会提供有Context...

2018-11-19 11:43:14 1594 1

原创 SpringMVC原理

SpringMVC概述SpringMVC是一个基于MVC的Web框架。Spring Web MVC和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来:框架性质的C层要完成的主要工作:封装Web请求为一个数据对象、调用业务层来处理数据对象、 返回处理数据结果及相应的视图给用户。Spring C层框架的核心是DispatcherServ...

2018-11-19 10:50:14 194

原创 基于Spring JDBC手写ORM框架

ORM对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。基本框架结构配置文件db.propertiesBeanColumnInfo:封装表中一个字段的信息Configuration:...

2018-11-19 10:04:12 1469 1

转载 TransactionalEventListener实现事务监控

问题背景在项目中,往往需要执行数据库操作后,发送消息或事件来异步调用其他组件执行相应的操作,例如:用户注册后发送激活码;配置修改后发送更新事件等。但是,数据库的操作如果还未完成,此时异步调用的方法查询数据库发现没有数据,这就会出现问题。为了解决上述问题,Spring为我们提供了两种方式:(1) @TransactionalEventListener注解(2) 事务同步管理器Trans...

2018-11-19 08:58:35 23222 3

转载 Spring事务处理机制

文章目录事务Spring事务管理Spring事务管理器Spring事务属性事务的传播行为事务的隔离级别只读事务超时回滚规则Spring事务状态编程式事务编程式和声明式事务的区别声明式事务事务事务:处于同一个事务中的操作是一个工作单元,要么全部执行成功,要么全部执行失败。在企业级应用程序开发中,事务管理必不可少的技术,用来确保数据的完整性和一致性。事务有四个特性:ACID原子性(Atom...

2018-11-18 22:02:31 793

转载 Spring的声明式事务底层原理

文章目录声明式事务的概述声明式事务的初探声明式事务的源码分析声明式事务的概述Spring 的声明式事务管理在底层是建立在 AOP 的基础之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事...

2018-11-17 19:54:16 8530 1

转载 AOP设计原理

文章目录AOP概述AOP的术语Spring AOPSpring AOP的工作实质AOP概述AOP(Aspect-Oriented Programming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,...

2018-11-17 16:26:28 268

原创 FactoryBean与BeanFactory的区别

简介BeanFactoryBeanFactory是接口,提供了IoC容器最基本的形式,给具体的IoC容器的实现提供了规范。FactoryBeanFactoryBean也是接口,为IoC容器中Bean的实现提供了更加灵活的方式,FactoryBean在IoC容器的基础上给Bean的实现加上了一个简单工厂模式和装饰模式。区别BeanFactory与FactoryBean的作用是...

2018-11-17 15:56:32 372

转载 Spring IoC容器的初始化

文章目录Resource定位通过返回的resource对象,进行BeanDefinition的载入将BeanDefiniton注册到容器中关于Spirng IoC容器的初始化过程在《Spirng技术内幕:深入解析Spring架构与设计原理》一书中有明确的指出,IoC容器的初始化过程可以分为三步:Resource定位(Bean的定义文件定位)将Resource定位好的资源载入到BeanDef...

2018-11-17 13:23:42 195

转载 Spring IoC容器设计原理及高级特性

文章目录Spring IoC容器概述IoC容器系列的设计与实现:BeanFactory和ApplicationContextBeanFactoryBeanFactory容器的设计原理ApplicationContextApplicationContext容器的设计原理IoC容器的初始化过程IoC容器的依赖注入依赖注入发生的时间依赖注入的流程图依赖注入的源码分析容器其他相关特性的设计与实现Appli...

2018-11-16 11:58:08 4733 2

转载 Spring中常用的设计模式:模板模式

文章目录定义实例分析定义在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。实例分析Spring中 Callback模式和Template模式合用随处可见。下面以常用的HibernateTemplate为例进行简要简述。由于java的JDBC的开...

2018-11-15 23:12:45 842

转载 Spring中常用的设计模式:原型模式

文章目录定义模式分析模式优缺点分析原型模式的实际应用案例定义原型模式:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。模式分析在原型模式结构中定义了一个抽象原型类,所有的Java类都继承自java.lang.Object,而Object类提供一个clone()方法,可以将一个Java对象复制一份。因此在Java中可以直接使用Object提供的clone()方法来实现对...

2018-11-15 22:58:26 4153

转载 Spring中常用的设计模式:策略模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述策略(Strategy)模式的:    策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。Spring 中在实例化对象的时候用到策略模式, 在SimpleInstantiationStrategy 有使用。采用实现部...

2018-11-15 22:23:45 1370

原创 Spring中常用的设计模式:委派模式

Spring MVC框架中的DispatcherServlet其实就用了委派模式,也有人称为是代理模式和策略模式的组合。代理模式使用代理对象来执行目标对象的方法并在代理对象中增强目标对象方法。策略模式策略模式是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。代理模式注重的是过程,委派者注重的是结...

2018-11-15 22:11:16 1674

转载 Spring中常用的设计模式:单例模式

在Spring中,Bean可以被定义为两种模式:prototype(原型)和singleton(单例)。singleton(单例)只有一个共享的实例存在,所有对这个Bean的请求都会返回这个唯一的实例。prototype(原型)对这个Bean的每次请求都会创建一个新的bean实例,类似于new。Spring依赖注入Bean实例默认是单例的。Spring的依赖注入(包括lazy-in...

2018-11-15 21:32:28 422

转载 Spring中常用的设计模式:工厂模式

文章目录工厂模式实例1. 先实现简单工厂2. 工厂类(修改)3. 增加配置文件4. 测试类5. 总结工厂模式Beanfactory是一个类工厂,但和传统的类工厂不同。传统的类工厂仅负责构造一个或几个类的实例;而BeanFactory是类的通用工厂,不仅提供了创建Bean的功能,还提供了Bean实例缓存、生命周期管理、Bean实例代理等服务,最重要的是还管理着Bean和Bean之间的依赖关系。在...

2018-11-15 21:21:58 977 1

原创 Spring中常用的设计模式:代理模式

文章目录代理模式静态代理动态代理Spring AOP的代理模式代理模式本质:控制对象访问代理模式具有可扩展性:中介隔离作用。开闭原则,增加功能。静态代理静态代理是由我们自己创建或特定工具自动生成源代码,在对其编译。在程序员运行之前,代理类.class文件就已经被创建了。缺点:我们得为每一个服务都得创建代理类,工作量太大,不易管理。同时接口一旦发生改变,代理类也得相应修改。...

2018-11-15 20:10:44 209

原创 数据库SQL实战:MySql练习(下)

文章目录31. 获取select * from employees对应的执行计划32. 将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分33. 创建一个actor表,包含如下列信息35. 对于表actor批量插入如下数据,如果数据已经存在,请忽略,不使用replace操作36. 对于如下表actor,其对应的数据为:37. 针对如下...

2018-11-08 19:48:47 606

原创 数据库SQL实战:MySql练习(上)

文章目录1. 查找最晚入职员工的所有信息2. 查找入职员工时间排名倒数第三的员工所有信息3. 查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_no4. 查找所有已经分配部门的员工的last_name和first_name5. 查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工...

2018-11-07 16:02:23 1771

转载 图:深度优先遍历和广度优先遍历(Java实现)

深度优先遍历深度优先遍历,从初始访问结点出发,我们知道初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接结点。总结起来可以这样说:每次都在访问完当前结点后首先访问当前结点的第一个邻接结点。这样的访问策略是优先往纵向挖掘深入,而不是对一个结点的所有邻接结点进行横向访问。具体算法表述如下:访问初始结点v...

2018-10-31 09:57:06 570

原创 Java Queue接口中add&offer,peek&element,remove&poll方法的区别

Queue接口中add&offer,peek&element,remove&poll方法的区别如下表所示。方法作用结果add添加一个元索如果队列已满,则抛出一个IIIegaISlabEepeplian异常offer添加一个元素并返回true如果队列已满,则返回falsepeek返回队列头部的元素如果队列为空,则返回null...

2018-10-30 15:37:20 448

转载 Linux那些事儿

文章目录一、常用操作以及概念快捷键求助1. --help2. man3. info4. doc关机1. who2. sync3. shutdownPATHsudo软件包管理工具Linux DistritionsVIM 三个模式GNU二、磁盘磁盘接口1. IDE2. SATA3. SCSI4. SAS磁盘的文件名三、分区分区表1. MBR2. GPT开机检测程序1. BIOS2. UEFI四、文件系...

2018-10-30 15:17:58 1124

原创 java 八大排序算法(代码实现、性能比较)

文章目录交换排序冒泡排序快速排序选择排序直接选择排序堆排序插入排序直接插入排序希尔排序归并排序基数排序八大排序算法总结常用的排序算法主要包括:插入排序  直接插入排序  希尔排序交换排序  冒泡排序  快速排序选择排序  简单选择排序  堆排序归并排序基数排序交换排序冒泡排序冒泡排序是最简单的一种排序算法。思想在要排序的一组数中,对当前还未排好序的范围内的全...

2018-10-29 19:27:26 296

转载 Java 线程通信的常用方式

等待通知机制等待通知模式是 Java 中比较经典的线程通信方式。两个线程通过对同一对象调用等待 wait() 和通知 notify() 方法来进行通讯。如两个线程交替打印奇偶数:public class TwoThreadWaitNotify { private int start = 1; private boolean flag = false; pu...

2018-10-29 11:11:33 198

原创 《算法图解》——学习笔记

第一章 二分查找使用二分查找时,必须保证列表有序,每次都排除一半的数字。仅知道算法需要多长时间才能运行完毕还不够,还需知道运行时间如何随列表增长而增加。这正是大O表示法的用武之地。大O表示法指出了算法有多快。并非以秒为单位的速度。大O表示法让你能够比较操作数,它指出了算法运行时间的增速。大O表示法指出了最糟情况下的运行时间。O(n)时间意味着查看列表中的每个元素一次。第二章 选择排序...

2018-10-27 21:37:44 490

原创 计算机操作系统——学习笔记(下)

第六章 文件管理基于文件系统的概念,可以把数据组成分为数据项、记录和文件三级。文件类型按用途分类:①系统文件:由系统软件构成。②用户文件:用户的文件。③库文件:标准子例程及常用的例程。按文件中数据的形式分类: ①源文件:由源程序和数据构成的。②目标文件:源程序经过编译,尚未链接的目标代码“.obj” ③可执行文件:目标代码经过链接后的文件“.exe”。按存取控制属性分类:①只执...

2018-10-26 16:43:37 9702

原创 计算机操作系统——学习笔记(上)

第一章 操作系统引论操作系统OS是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。1. 目标有效性、方便性、可扩充性、开放性。2. 作用作为用户与计算机硬件系统之间的接口作为计算机系统资源的管理者实现了对计算机资源的抽象3.发展过程①人工操作方式:用户独占全机,CPU等待人工操作。②脱机输入输出方式:事先将装有用户程序和数据的纸带装入纸带输入机,在外围机的控制下,把...

2018-10-24 21:58:49 45381 11

原创 java synchronized(静态同步方法、非静态同步方法及同步块)

同步方法  同步方法所拥有的锁就是该方法所属的类的对象锁,换句话说,也就是this对象,而且锁的作用域也是整个方法,这可能导致其锁的作用域可能太大,也有可能引起死锁,同时因为可能包含了不需要进行同步的代码块在内,也会降低程序的运行效率。同步方法的锁  同步方法分为静态同步方法与非静态同步方法。非静态同步方法  所有的非静态同步方法用的都是同一把锁——实例对象本身,也就是说如果一个实例...

2018-10-19 19:51:51 3971

空空如也

空空如也

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

TA关注的人

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