自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

白夜行悟空

日光之下,并无新事。

  • 博客(115)
  • 资源 (2)
  • 收藏
  • 关注

原创 Vue异步查询工具axios

1.axios入门异步查询数据,自然是通过ajax查询,大家首先想起的肯定是jQuery。但jQuery与MVVM的思想不吻合,而且ajax只是jQuery的一小部分。因此不可能为了发起ajax请求而去引用这么大的一个库。Vue官方推荐的ajax请求框架叫做:axiosaxios的Get请求语法:axios.get("/item/category/list?pid=0") // 请求路径和请求参数拼接 .then(function(resp){ // 成功回调函数 }

2020-06-30 09:16:39 3750

原创 解决项目跨域问题

1 跨域问题1.1 什么是跨域跨域是指跨域名的访问,以下情况都属于跨域:跨域原因说明示例域名不同www.jd.com 与 www.taobao.com域名相同,端口不同www.jd.com:8080 与 www.jd.com:8081二级域名不同item.jd.com 与 miaosha.jd.com如果域名和端口都相同,但是请求路径不同,不属于跨域,如:www.jd.com/itemwww.jd.com/goods而从manage.leyou.com

2020-06-29 14:16:49 1634

原创 使用域名访问本地项目和nginx反向代理

1.使用域名访问本地项目1.1.统一环境我们现在访问页面使用的是:http://localhost:9001有没有什么问题?实际开发中,会有不同的环境:开发环境:自己的电脑测试环境:提供给测试人员使用的环境预发布环境:数据是和生成环境的数据一致,运行最新的项目代码进去测试生产环境:项目最终发布上线的环境如果不同环境使用不同的ip去访问,可能会出现一些问题。为了保证所有环境的一致,我们会在各种环境下都使用域名来访问。我们将使用以下域名:主域名是:www.leyou.com,管理系

2020-06-29 11:46:37 2362

原创 MyBatis框架使用

1 框架概述1.1 什么是框架可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系。因此构件库的大规模重用也需要框架。1.2 为什么使用框架因为软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框

2020-06-11 17:10:25 248

原创 JMeter在Mac下的安装

1、选择版本安装JMeter之前先要保证你的系统安装了java。截止2018年10月,JMeter的最新版本是5.0,JMeter 5.0需要Java 8、Java 9。2、安装JMeter进入JMeter的下载地址页面,如下图,有两个版本可供下载:Binaries:二进制版,即已经编译好、可直接执行;Source:源代码版,需要自己编译;我们下载apache-jmeter-5....

2019-01-16 16:40:51 875

原创 【负载测试】Mac下进行Web并发测试-ApacheBench

一、简介1、apache 测试工具 负载测试ApacheBench 是一个指令列程式,可创建并发访问线程,模拟多个用户同时对某一地址进行访问。用来测试Web服务器的负载压力。Liunx和Mac自带ApacheBench,终端中可直接进行命令控制。2、命令及其参数选项(1)Usage:ab [options] [http[s]

2019-01-16 15:42:53 1413

转载 三、并发与高并发之java内存模型

一、理解Java内存区域与Java内存模型1、Java内存区域Java虚拟机在运行程序时会把其自动管理的内存划分为以上几个区域,每个区域都有的用途以及创建销毁的时机,其中蓝色部分代表的是所有线程共享的数据区域,而绿色部分代表的是每个线程的私有数据区域。方法区(Method Area):方法区属于线程共享的内存区域,又称Non-Heap(非堆),主要用于存储已被虚拟机加载的类信息、常量...

2019-01-15 18:23:33 377

转载 二、并发与高并发之CPU多级缓存-乱序执行优化

处理器为提高运算速度而做出违背代码原有顺序的优化例如:计算a*b的值单核时候,执行会是:多核时候,在CPU乱序执行优化的时候可能变成单核处理器时代处理器能够保证处理器做出的优化不会影响结果,但是多核时代就会造成乱序,使最终结果错误。...

2019-01-15 17:48:50 629

转载 一、并发与高并发之CPU缓存一致性协议MESI

一、CPU高速缓存(Cache Memory)1、CPU为何要有高速缓存CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU。这就造成了高性能的内存和硬盘价格及其昂贵。然而CPU的高度运算需要高速的数据。为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题。在CPU访问存储设备时,无论是存取数据抑...

2019-01-15 17:47:06 372

转载 HTTP协议

一、HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统...

2019-01-14 14:44:51 202

转载 OSI七层模型与TCP/IP五层模型

一、OSI参考模型1、OSI的来源OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。ISO为了更好的使网络应用更为普及,推出了OSI参考模型。其含义就是推荐所有公司使用这个规范来控制网络。这样所有公司都有相同的规范,就能互联了。2、OSI七层模型的划分OSI定义了网络互连的...

2019-01-14 12:01:19 192

转载 四十一、并发编程之Java的Executor框架实现原理

一、Java的Executor框架二、Executor接口 public interface Executor { void execute(Runnable command); } Executor接口是Executor框架中最基础的部分,定义了一个用于执行Runnable的execute方法,它没有实现类只有另一个重要的子接口ExecutorSe...

2019-01-11 19:03:03 207

原创 四十、并发编程之线程池

一、线程池概述1、什么是线程池Java中开辟出了一种管理线程的概念,这个概念叫做线程池,线程池的好处,就是可以方便的管理线程,也可以减少内存的消耗。2、线程池的优势降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系...

2019-01-11 19:02:42 180

转载 三十九、并发编程之ConcurrentHashMap源码解析

一、ConcurrentHashMap实现原理众所周知,哈希表是中非常高效,复杂度为O(1)的数据结构,在Java开发中,我们最常见到最频繁使用的就是HashMap和HashTable,但是在线程竞争激烈的并发场景中使用都不够合理。1.HashMapHashMap是线程不安全的,在并发环境下,可能会形成环状链表(扩容时可能造成),导致get操作时,cpu空转,所以,在并发环境中使用HashM...

2019-01-10 15:33:39 231

转载 三十八、并发编程之阻塞队列LinkedBlockingQueue原理简析

一、LinkedBlockingQueue简介基于链表的阻塞队列,同ArrayListBlockingQueue类似,其内部也维持着一个数据缓冲队列(该队列由一个链表构成),当生产者往队列中放入一个数据时,队列会从生产者手中获取数据,并缓存在队列内部,而生产者立即返回;只有当队列缓冲区达到最大值缓存容量时(LinkedBlockingQueue可以通过构造函数指定该值),才会阻塞生产者队列,直到...

2019-01-09 19:07:01 405 1

转载 三十六、并发编程之阻塞队列BlockingQueue原理与使用

一、前言在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。二、认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所...

2019-01-09 19:06:37 250

转载 三十七、并发编程之有界阻塞队列 ArrayBlockingQueue 原理探究

一、 ArrayBlockingQueue简介基于数组的阻塞队列实现,在ArrayBlockingQueue内部,维护了一个定长数组,以便缓存队列中的数据对象,这是一个常用的阻塞队列,除了一个定长数组外,ArrayBlockingQueue内部还保存着两个整形变量,分别标识着队列的头部和尾部在数组中的位置。ArrayBlockingQueue在生产者放入数据和消费者获取数据,都是共用同一个锁对...

2019-01-09 19:06:16 238

转载 三十五、并发编程之并发容器ConcurrentLinkedQueue原理与使用

一、简介一个基于链接节点的无界线程安全队列。此队列按照 FIFO(先进先出)原则对元素进行排序。队列的头部 是队列中时间最长的元素。队列的尾部 是队列中时间最短的元素。新的元素插入到队列的尾部,队列获取操作从队列头部获得元素。当多个线程共享访问一个公共 collection 时,ConcurrentLinkedQueue 是一个恰当的选择。此队列不允许使用 null 元素。二、方法摘要o...

2019-01-09 16:57:11 537

转载 三十四、并发编程之并发容器CopyOnWriteArrayList原理与使用

一、简介CopyOnWriteArrayList是Java并发包中提供的一个并发容器,它是个线程安全且读操作无锁的ArrayList,写操作则通过创建底层数组的新副本来实现,是一种读写分离的并发策略,我们也可以称这种容器为"写时复制器",Java并发包中类似的容器还有CopyOnWriteSet。本文会对CopyOnWriteArrayList的实现原理及源码进行分析。二、实现原理我们都知道...

2019-01-08 19:09:06 206

转载 三十三、并发编程之同步容器与并发容器

一、同步容器1、容器框架在Java的集合容器框架中,主要有四大类别:List、Set、Queue、Map。List、Set、Queue接口分别继承了Collection接口,Map本身是一个接口。注意Collection和Map是一个顶层接口,而List、Set、Queue则继承了Collection接口,分别代表数组、集合和队列这三大类容器。像ArrayList、LinkedList都是实...

2019-01-08 18:38:24 208

转载 三十二、并发编程之Fork/Join框架

一、 什么是Fork/Join框架Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+。。+1...

2019-01-08 14:37:31 143

转载 三十一、并发编程之FutureTask详解

聊聊多线程你真的了解并发吗多线程和并发多线程和多进程线程一定快吗学习并发的四个阶段学习目标适合人群荐书熟练掌握API,能够完成并发编程熟读API源码,掌握其原理理解Java虚拟机的内存模型操作系统对并发的支持学习并发的四个阶段为什么要学习并发编程1.发挥多处理的强大能力2.建模的简单性3.异步事件的简化处理4.响应更加灵敏的用户界面1.找工作,面试2.了解并...

2019-01-08 11:20:16 1175

转载 二十九、并发编程之并发工具类Semaphore详解

一、简介Semaphore是一个计数信号量,常用于限制可以访问某些资源(物理或逻辑的)线程数目。Semaphore有两种模式,公平模式和非公平模式。公平模式就是调用acquire的顺序就是获取许可证的顺序,遵循FIFO;而非公平模式是抢占式的,也就是有可能一个新的获取线程恰好在一个许可证释放时得到了这个许可证,而前面还有等待的线程。二、三、原理1、构造方法Semaphore有两个构造方...

2019-01-03 18:47:45 297

转载 二十八、并发编程之并发工具类CyclicBarrier详解

一、概述CyclicBarrier是一个同步工具类,它允许一组线程互相等待,直到到达某个公共屏障点。与CountDownLatch不同的是该barrier在释放等待线程后可以重用,所以称它为循环(Cyclic)的屏障(Barrier)。CyclicBarrier支持一个可选的Runnable命令,在一组线程中的最后一个线程到达之后(但在释放所有线程之前),该命令只在每个屏障点运行一次。若在继续...

2019-01-03 18:47:24 207

转载 23种设计模式(3)-原型模式

一、定义通过复制现有的对象实例来创建新的对象实例。二、实现实现Cloneable接口Cloneable接口的作用是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在java虚拟机中,只有实现了这个接口的类才可以被拷贝,否则在运行时会抛出CloneNotSupportedException异常。重写Object类中的clone方法Java中,所有类的父类都是O...

2019-01-03 11:49:23 103

转载 23种设计模式(2)-工厂模式

一、定义工厂模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。二、工厂模式根据抽象程度的不同分为三种简单工厂模式(也叫静态工厂模式)实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的...

2019-01-03 11:10:36 102

转载 23种设计模式(1)-单例模式

一、定义单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。二、特点1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例三、单例模式的要点1.私有的构造方法2.指向自己实例的私有静态引用3.以自己实例为返回值的静态的公有的...

2019-01-03 10:56:47 104

转载 二十七、并发编程之并发工具类CountDownLatch详解

谁谁

2018-12-28 18:45:29 563

转载 使用了框架iframe的页面如何跳出框架

一句话,javascript中使用window.top.location="url"即可。1.小知识:“window.location.href”、"location.href"是本页面跳转.“parent.location.href” 是上一层页面跳转.“top.location.href” 是最外层的页面跳转.2.举例说明:如果A,B,C,D都是html,D是C的iframe,...

2018-12-27 11:47:09 435

转载 SpringMVC实现账号只能在一处登陆

一、问题引导在Web开发中,实现一个账号只能在一处登陆有两种形式:1.当某个账号在某处登陆后,如果再在其他处登陆,将前一个账号挤掉;2.当某个账号登陆后,此账号在其他设备登陆提示已经登陆,无法登陆。正常的应用逻辑第一种应用较为广泛,因此此篇文章讨论一下第一种逻辑在spring mvc开发中一种较为简单的实现方式。然而在没有长连接如WebSocket或者异步请求轮询的情况下,我们之前登陆...

2018-12-27 11:42:45 470

转载 二十五、并发编程之join应用与实现原理剖析

1、join有什么用呢?当一个线程正在进行中的时候,如果我们想调用另外一个线程的话,这时我们可以使用join。2、join方法的底层原理,简单来说就是,join方法能把所调用join方法的线程进入休眠状态(wait()),等执行完joinThread线程之后,会自动调用notifyAll方法叫醒所有处于wait状态的线程。看过AQS的朋友,应该很容易理解join方法。但是有一点是,能用j...

2018-12-20 15:32:17 149

原创 二十四、并发编程之简易数据连接池

public class MyDataSource { private LinkedList<Connection> pool = new LinkedList(); //链表放连接池用 private static final int INIT_CONNECTIONS = 10;//初始化连接数 private static final String DRIVER_CLASS...

2018-12-20 15:00:59 119

转载 二十三、并发编程之深入解析Condition源码

一、Condition简介1、Object的wait和notify/notifyAll方法与Condition区别任何一个java对象都继承于Object类,在线程间实现通信的往往会应用到Object的几个方法,比如wait(),wait(long timeout),wait(long timeout, int nanos)与notify(),notifyAll()几个方法实现等待/通知机制。...

2018-12-19 19:34:59 438

原创 二十二、并发编程之使用Condition实现一个先入先出的有界队列

//先入先出队列public class MyQueue<E> { private Object[] obj;//数组(队列) private int addIndex;//添加角标 private int removeIndex;//移除脚标 private int queueSize;//队列长度 private Lock lock = new ReentrantLoc...

2018-12-19 14:02:46 322

原创 二十一、使用Condition重写waitnotify生产者消费者模型案例

//生产者public class PushTarget implements Runnable{ private Tmail tmail;//销售平台 public PushTarget(Tmail tmail) { this.tmail = tmail; } @Override public void run() { while(true) {//无限循环 tmail...

2018-12-19 12:03:41 261

原创 二十、并发编程之Condition的使用

三个线程按顺序循环执行使用线程之间的通信wait、notify写代码public class Demo { private int signal; public synchronized void a() { while(signal != 0 ) {//signal等于0打印a try { wait();//等待 } catch (InterruptedExc...

2018-12-19 12:01:59 179

原创 十九、并发编程之通过生产者消费者模型理解等待唤醒机制

生产者//生产者public class PushTarget implements Runnable{ private Tmail tmail;//销售平台 public PushTarget(Tmail tmail) { this.tmail = tmail; } @Override public void run() { while(true) {//无限循环 ...

2018-12-18 16:55:44 178

转载 十八、并发编程之线程之间的通信之wait、notify

一、线程的几种状态线程有四种状态:1.产生(New):线程对象已经产生,但尚未被启动,所以无法执行。如通过new产生了一个线程对象后没对它调用start()函数之前。2.可执行(Runnable):每个支持多线程的系统都有一个排程器,排程器会从线程池中选择一个线程并启动它。当一个线程处于可执行状态时,表示它可能正处于线程池中等待排排程器启动它;也可能它已正在执行。如执行了一个线程对象的...

2018-12-18 13:51:03 103

转载 十七、并发编程之读写锁ReentrantReadWriteLock的锁降级

锁降级锁降级是指写锁降级为读锁。在写锁没有释放的时候,获取到读锁,再释放写锁锁升级(ReentrantReadWriteLock是不支持的。)把读锁升级为写锁在读锁没有释放的时候,获取到写锁,再释放读锁oracle官网的对于锁降级的示例代码: class CachedData { Object data; volatile boolean cacheVal...

2018-12-17 18:54:48 322

转载 十六、并发编程之读写锁认识与原理

一、读写锁认识排他锁(写):在同一时刻只有一个线程可以进入共享锁(读):在同一时刻可以有多个线程同时进入package com.roocon.thread.ta4;import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.Lock;import java.util.concurr...

2018-12-17 18:03:35 383

JavaEE开发的颠覆者Spring Boot 实战 完整版

本书简介 1 推荐使用@configuration @bean 的Java配置来替代xml。 2 习惯优于配置的原则。快速搭建项目 3 在第一部分,介绍了快速Spring4.x各个知识点:基础配置、常用配置、高级配置等。 4 在第二部分,介绍了Spring MVC 的各个知识点。 5 在第三部分,才是核心的介绍Spring boot。

2018-09-09

深入Java虚拟机第二版

本书作者曾因本书荣获专业技术杂志《Java Report》评选的优秀作者奖,细心的读者可以从网上找到许多对本书第1版的赞誉。作者以易于理解的方式深入揭示了Java虚拟机的内部工作原理,深入理解这些内容,将对读者更快速地编写更高效的程序大有裨益! 本书共分20章,第1-4章解释了Java虚拟机的体系结构,包括Java栈、堆、方法区、执行引擎等;第5-20章深入描述了Java技术的内部细节,包括垃圾收集、Java安全模型、Java的连接模型和动态扩展机制、class文件、运算及流程控制等等,其中第6章和附录A-C安全可以作为class文件和指令集的参考手册。本书还附带光盘,光盘中包含用以辅助说明正文内容的交互式例示applet及示例源代码。

2018-09-09

空空如也

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

TA关注的人

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