自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

helloarst的博客

心之所愿,无所不成!

  • 博客(26)
  • 资源 (1)
  • 收藏
  • 关注

转载 NGINX+TOMCAT集群后SESSION的处理

 单节点低负荷的情况下,我们通常把一个WEB应用打成WAR包放WEB应用服务器,如TOMCAT下运行就行了(如图1)。但随着用户量的增加,系统负载日益增长,这时我们通常就会采用多台WEB应用服务器组成集群来分担负荷(tomcat1, tomcat2上同时部署了应用application1; tomcat3上单独部署了应用application3),这时某一用户对同一应用的访问就有可能分配到从不同的...

2018-10-14 22:16:01 289

原创 实现单向队列(Java)、

1、实现单向队列 package app;public class MyQueue { private Object[] queArray; //队列总大小 private int maxSize; //前端 private int front; //后端 private int rear; //队列中元素的实际数目 private int nItems; pu...

2018-10-13 16:54:32 433

转载 构成死锁的必要条件是什么?如何检测死锁,解除死锁?

死锁概念: 所谓死锁,是指两个或者两个以上线程在执行过程中,因争夺资源而产生互相等待的现象,若无外力作用,他们都将无法推进下去,此时,称系统处于死锁。产生死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序...

2018-10-09 20:11:18 635

翻译 面试-谈谈你对java面向对象的认识

这个问题相信有不少人都在面试中被问到过,如果没有好好准备一下,回答的可能就会条理不清晰,思维混乱,然后,.....就尴尬了...当面试官问到这个问题时:首先,要引申出类:类是面向对象中的一个很重要的概念,因为类是很对个具有相同属性和行为特征的对象所抽象出来的,对象是类的一个实例。然后,围绕类的三个特征来说:封装、继承和多态。 1、封装:面向对象语言的精髓把一些属性和方法封装...

2018-10-09 20:05:08 1825

原创 线程八锁

题目:判断一下以下程序打印的是 "one" or "two"?1.两个普通同步方法,两个线程 。--》打印:one  twopackage com.tongtong.app8;/** * * 1.两个普通同步方法,两个线程. */public class TestThread8Monitor { public static void main(String[] a...

2018-10-08 16:23:34 296

原创 JUC-Callable&ThreadPool

引入:创建执行线程的方式有四种:1.继承Thread类2.实现Runnable接口3.实现Callable接口4.线程池前两种用的最多,今天就来演示一下后两种方法创建线程,即实现Callable接口和使用线程池。1、实现Callable接口:Callable是JUC中的一个接口,相较于实现Runnable接口的方式,其方法可以有返回值,并且可以抛出异常。另外,使用C...

2018-10-08 15:03:57 239

原创 JUC-原子类(AtomicInteger)

引入:我们都知道i++在java中不是原子操作,因为i++的操作实际上分为三个步骤“读-改-写”,int i =10;i = i++;实际上是分为下面几步:int temp = i;i = i + 1;i = temp; 反编译后可以看到每条指令都会产生一个get和put,它们之间还有一些其他的指令。因此在获取和放置之间,另一个任务可能会修改这个域,所以这些操作不...

2018-10-08 13:12:28 169

原创 JUC-CountDownLatch

CountDownLatch:闭锁它被用来同步一个或多个任务,强制它们等待由其他任务执行的一组操作完成。 你可以向CountDownLatch对象设置一个初始计数值,任何在这个对象上调用wait()的方法都将阻塞,直至这个计数值到达0,其它任务在结束其工作时,可以在该对象上调用CountDown()来减小这个计数值。package com.tongtong.app3;import...

2018-10-08 10:24:02 157

转载 java中的锁

  面试过程中,也被问过几次关于Java中锁的问题,面试官一般是这么问:你了解Java中的锁吗?有几种?都有什么区别?讲一讲。    大致可以分为这几点:锁是什么,有什么用,有哪几种锁,锁的区别。 一:锁是什么,有什么用?  锁主要用来实现资源共享的同步。只有获取到了锁才能访问该同步代码,否则等待其他线程使用结束释放锁。 二:有哪几种锁?  这里主要针对:synchro...

2018-10-07 11:51:28 153

转载 Java七大设计原则

1.开闭原则(Open Close Principle)定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。    开放-封闭原则的意思就是说,你设计的时候,时刻要考虑,尽量让这个类是足够好,写好了就不要去修改了,如果新需求来,我们增加一些类就完事了,原来的代码能不动则不动。这个原则有两个特性,一个是说“对于扩展是开放的”,另一个是说“对于更改是封闭的”。面对需求,对程序的改动是...

2018-10-06 21:12:52 1028

原创 排序(Java)

1、快速排序:思路:1、先找一个基准值,一般找数组的第一个值;2、然后从数组的最右边开始遍历,如果找到比基准值小的数a,就把该数赋给基准值;3、从基准值的下一个数开始从左向右遍历,找到比基准值大的数b,然后把该值赋给第二步中的那个比基准值大的值a,并把基准值赋给比基准值大的那个值b;4、以b为分界,数组两边分别进行上述过程。 package com.tongtong.sort;...

2018-10-06 20:32:10 134

原创 二叉排序(查找)树的实现

二叉树排序树又称二叉查找数。它或者是一棵空数,或者是具有下列性质的二叉树:①如果左子树不为空,那么左子树上所有节点的值均小于它的根节点的值;②如果右子树不为空,那么右子树上所有节点的值均大于其根节点的值;③左右子树也分别为二叉排序树实现方法:package com.tongtong.tree;import java.util.LinkedList;import java...

2018-10-06 19:21:49 317

原创 队列的实现(java)

队列遵循先进先出(FIFO)原则,队列可以用数组或链表实现,实现过程如下:数组实现:package com.tongtong;import java.util.LinkedList;/** * 数组实现队列(实现了多线程安全) */public class MyQueue2<E> { private LinkedList<E> list =...

2018-10-06 17:32:24 169

原创 数据结构(java)

栈的实现(java):栈是大家比较熟悉的一种数据结构了,关于它的一些具体内容就不多说了,我们要记住的就是LIFO(后进先出)特性。因为栈是一种表,所以任何实现表的方法都能实现栈,这里我们选择两种方式来实现栈,即数组和链表。Java代码实现栈数组实现package com.tongtong;import java.util.Arrays;/** * 数组方式实现栈 ...

2018-10-06 15:29:28 196

原创 Runnable和Callable创建线程的区别

我们知道实现Runnable和实现Callable均可创建线程,那么他们有什么区别呢?Runnable和Callable的区别Runnable接口public interface Runnable { void run();} Callable接口public interface Callable<V> { V call() throws ...

2018-10-03 22:23:00 729

翻译 线程池源码解析

最近研究了一下java线程池的源码,打算把我能理解的都总结一下,如有错误,欢迎指出!在解析线程池源码之前,先来回顾一下有关线程池的一些概念和执行流程,方便后续对源码的理解。回顾线程池:public ThreadPoolExecutor(int corePoolSize, //核心线程的数量 int maximumPoolSiz...

2018-10-03 21:08:37 243

翻译 session和cookie区别总结

Cookie是由W3C组织提出,最早由netscape社区发展的一种机制网页之间的交互是通过HTTP协议传输数据的,而Http协议是无状态的协议。无状态的协议是什么意思呢?一旦数据提交完后,浏览器和服务器的连接就会关闭,再次交互的时候需要重新建立新的连接。 服务器无法确认用户的信息,于是乎,W3C就提出了:给每一个用户都发一个通行证,无论谁访问的时候都需要携带通行证,这样服务器就可以从通行证...

2018-09-27 15:47:18 596

原创 Java中ArrayList和LinkedList区别

ArrayList和LinkedList的大致区别如下:1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 1 ...

2018-09-27 11:37:45 115

原创 例说MySQL事务的4种隔离级别

引言:SQL标准定义了4中隔离级别,包括一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级别支持更高的并发处理,并拥有更低的系统开销。事务的基本要素:  1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割...

2018-09-26 16:10:14 172

原创 JVM基础知识

JVM运行时数据区是什么?是干什么的?如果你有兴趣了解,请看本章内容。下面这张图给我们展示出了JVM运行时数据区的结构,我把它分为两个部分:数据+指令,我们先来看看各个子模块的作用 程序计数器:指向当前线程正在执行的字节码指令的地址(行号)。它是线程私有的,独享的(为什么?)那么为什么要有程序计数器?原因:因为java的最小执行单位是线程,而线程执行指令最终还是要落在操作系统...

2018-09-23 21:09:51 2273

原创 javap指令集

栈和局部变量操作 将常量压入栈的指令 aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_0 将int类型常量0压入栈 iconst_1 将int类型常量1压入栈 iconst_2 将int类型常量2压入栈 iconst_3 将int类型常量3压入栈 iconst_4 将int类型常...

2018-09-23 10:52:51 144

原创 SpringBoot启动配置原理解析

今天来简单的说一下关于SpringBoot的启动流程,在整个启动配置中,有几个比较重要的事件回调机制需要特别注意,先列出:ApplicationContextInitializer SpringApplicationRunListener ApplicationRunner CommandLineRunner下面的代码是SpringBoot的启动类@SpringBootAppli...

2018-09-22 22:18:55 372

原创 docker安装后启动失败解决方法

执行systemctl start docker时出现了以下错误:[root@localhost ~]# systemctl start dockerJob for docker.service failed because the control process exited with error code. See "systemctl status docker.service" ...

2018-09-22 01:46:12 3313

原创 MyBatis源码解析(一)一MyBatis的初始化过程(续)

这篇文章是接着上一篇文章进行叙述的,上一篇的文章可以进入此链接查看:https://blog.csdn.net/tebtebtebteb/article/details/82774599上次说到了创建好了XMLMapperBuilder后,便可进入解析<mapper>的过程,也对代码进行了大概的分析,下面接着进行解析: public void parse() { ...

2018-09-20 22:41:31 159

原创 MyBatis源码解析(一)一MyBatis的初始化过程

目录1.准备工作为了更好的演示MyBatis的初始化过程,先创建一个简单的java工程目录,如下所示: 1.1 创建实体类Productpackage com.tongtong.pojo;import lombok.Getter;import lombok.Setter;import lombok.ToString;@ToStringpublic clas...

2018-09-19 20:57:50 190

原创 Redis源码学习(一)-手写Jedis客户端

最近在学习Redis的源码,Redis源码相对来说比较简单,后续将奉上源码的分析过程。这里,先分享一个手写的Jedis客户端代码,实现方法较为简单,很容易看明白。此外,RESP(REdis Serialization Protocol)是Redis客户端和服务端通信的一个协议,此代码也是基于RESP协议进行的,因此在学习这段代码之前最好先去看一下RESP的相关内容。 献上代码:p...

2018-09-09 16:13:38 561

ajax课堂笔记

ajax课堂笔记,详细记录了课堂上老师讲解到的ajax知识点

2018-07-24

空空如也

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

TA关注的人

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