JAVA小白的博客

自学JAVA之路

21.负载均衡

负载均衡基础知识一、什么是负载均衡? 互联网早期,业务流量比较小并且业务逻辑比较简单,单台服务器便可以满足基本的需求;但随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台机器的性能问题以及单点问题凸显了出来,因此需要多台机器来进行性能的水平扩展以及避免单点故障。但是要如何将不同的用户...

2018-03-31 13:37:23

阅读数:96

评论数:1

15.WEB的水平和垂直扩展

Web 站点的水平扩展和垂直扩展当一个开发人员提升计算机系统负荷时,通常会考虑两种方式垂直扩展和水平扩展。选用哪种策略主要依赖于要解决的问题以及系统资源的限制。在这篇文章中我们将讲述这两种策略并讨论每种策越的优缺点。如果你已经有一个软件系统需要不断成长,那么你将有意或者无意中选择这两种策略中的一种...

2018-03-31 12:26:38

阅读数:147

评论数:2

7.登录系统-单点登录问题-分布式session一致性(即session如何共享)的问题

session的概念 什么是session?   服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web...

2018-03-31 11:07:48

阅读数:199

评论数:0

6.登录系统-单点登录问题-基于redis的单点登录同步登出与帐号退出的功能设计

今天项目做到了基于redis的单点登录登出设计,所以有必要记录一下。重点知识,面试。涉及到的知识点:token,UUID,userID(模仿微信的扫码登录),cookie,redis等什么是SSOSSO英文全称SingleSign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以...

2018-03-31 09:00:35

阅读数:514

评论数:0

3.Redis常见的5种不同的数据类型详解

数据类型 可以存储的值 操作 STRING 字符串、整数或者浮点数 对整个字符串或者字符串的其中一部分执行操作对整数和浮点数执行自增或者自减操作 LIST 链表 从两端压入或者弹出元素读取单个或者多个元素进行修剪,只保留一个范围内的元素 SET 无序集合 添加、获取、移除单个...

2018-03-31 08:29:20

阅读数:77

评论数:0

20.简单设计实现线程池

上代码之前,要先补充一下线程池构造的核心几个点1.   线程池里的核心线程数与最大线程数2.   线程池里真正工作的线程类worker3.   线程池里用来存取任务的队列4.   线程中的任务类task  另外一个比较简单的方法,推荐面试答这种,逻辑会比较好吧~ classThreadExcuto...

2018-03-29 16:54:49

阅读数:68

评论数:0

18.深入浅出线程池

摘要: 本文主要讲了Java当中的线程池的使用方法、注意事项及其实现源码实现原理,并辅以实例加以说明,对加深Java线程池的理解有很大的帮助。一般而言,线程池有以下几个部分:1.完成主要任务的一个或多个线程.2.用于调度管理的管理线程.3.要求执行的任务队列.     首先,讲讲什么是线程池?照笔...

2018-03-29 13:57:56

阅读数:38

评论数:0

8.利用SpringAOP进行切面编程-利用SpringAOP进行切面编程(登录验证和异常统一处理)

具体做法,就是利用SpringAOP,拦截所有的需要拦截的方法(连接点)行成一个切入点(Pointcut),然后在其前面加入通知(advice就是一些操作),比如我要登录,我的before操作就是查看是否有登录。如果有,就继续执行方法。如果没有,就抛出异常。然后统一拦截异常,进行处理。 下面的例子...

2018-03-28 09:46:48

阅读数:106

评论数:0

15.多线程编程中锁的4种状态-无锁状态 偏向锁状态 轻量级锁状态 重量级锁状态

一:java多线程互斥,和java多线程引入偏向锁和轻量级锁的原因?--->synchronized的重量级别的锁,就是在线程运行到该代码块的时候,让程序的运行级别从用户态切换到内核态,把所有的线程挂起,让cpu通过操作系统指令,去调度多线程之间,谁执行代码块,谁进入阻塞状态...

2018-03-27 18:53:06

阅读数:102

评论数:0

14.Java中CAS操作详解

在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程释放...

2018-03-27 18:21:55

阅读数:62

评论数:0

12.多线程-synchronized关键字解析

     本篇主要从另外一个博主上学习的,他对Java并发中synchronized关键字进行较为深入的探索,篇幅有点长,有些我还领悟得不是很好。但是我觉得该文章让我对同步的方法领悟到很多东西,所以整理后,加上一些自己的标注,就分享出来了。·        synchronized的三种应用方式o...

2018-03-25 13:19:53

阅读数:76

评论数:0

20.二叉树-是否为平衡二叉树

题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树平衡二叉树:就是左右子节点高度差不大于1; public class Solution {    public boolean IsBalanced_Solution(TreeNode root) {        if(root==null){...

2018-03-24 18:52:25

阅读数:25

评论数:0

35.数组-连续子数组的最大和

题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1...

2018-03-24 18:17:45

阅读数:25

评论数:0

34.数组-构建乘积数组

时间限制:1秒 空间限制:32768K 热度指数:49375本题知识点: 数组 算法知识视频讲解题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使...

2018-03-24 17:35:28

阅读数:37

评论数:0

11.多线程-volatile关键字解析

volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在了解volatile关键字时,可以先看一下上一篇博客了解一下与内存模型相关的概念和知识,然后此片文章才分析volatile关键字的实现原理,在给出了几个使...

2018-03-24 16:17:26

阅读数:65

评论数:0

10.并发线程的happens-before原则(先行发生原则)

下面就来具体介绍下happens-before原则(先行发生原则):·        程序次序规则:一个线程内,按照代码顺序,书写在前面的操作先行发生于书写在后面的操作·        锁定规则:一个unlock操作先行发生于后面对同一个锁的lock操作。(先解锁,才可以在后面继续上锁)·    ...

2018-03-24 15:42:42

阅读数:60

评论数:0

9.并发编程的三个概念(原子性、可见性和有序性)存在的问题及其解决方案

以下是本文的目录大纲:一.内存模型的相关概念二.并发编程中的三个概念三.Java内存模型一.内存模型的相关概念大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,...

2018-03-24 15:18:19

阅读数:98

评论数:0

4.线程中的一些常用方法的用法 join()、yield()、sleep()、wait()、notify()、notifyAll()

1.线程休眠sleep();:线程有优先级,但是我们可以用此方法人为的改变它们的优先级,让线程暂停,它其他线程获得分配空间。 用法:Thread.sleep(2000);//休眠两秒 2.线程让步yield();就是让出自己的分配空间给其他线程,那么问题来了,让步多久呢?如果有两条线程的话,是不是...

2018-03-24 00:34:44

阅读数:35

评论数:0

5.Java中sleep()与wait()区别

学习时正好碰到这两个方法,就查阅相关资料,并通过程序实现,进行区别一下:1、每个对象都有一个锁来控制同步访问,Synchronized关键字可以和对象的锁交互,来实现同步方法或同步块。sleep()方法正在执行的线程主动让出CPU(然后CPU就可以去执行其他任务),在sleep指定时间后CPU再回...

2018-03-24 00:26:49

阅读数:41

评论数:0

3Java线程的5种状态及切换

.Java中的线程的生命周期大体可分为5种状态。1. 新建(NEW):新建了一个线程对象。2. 可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。3. 运行(RUNN...

2018-03-24 00:01:27

阅读数:71

评论数:0

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