- 博客(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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人