volatile的实现原理

    Java语言提供了volatile,在某些情况下比锁更加方便。如果一个字段被声明成volatile,Java线程内存模型确保所有线程看到这个变量的值是一致的。    那volatile是如何实现可见性的呢,如果我们对volatile修饰的字段进行写操作时,CPU会做些什么事情呢。     ...

2018-05-10 21:59:54

阅读数 397

评论数 1

Java中的AQS(三)线程的阻塞和唤醒

一、线程的阻塞:        在上一篇说到,线程获取同步状态失败的线程,会构造节点并加入到同步队列的尾部,然后通过自旋的方式不断的获取同步状态,但是在自旋过程中需要判断线程是否需要阻塞,我们再一次看一下acquire方法。final boolean acquireQueued(final Nod...

2018-05-09 16:00:13

阅读数 328

评论数 0

Java中的AQS(二)同步状态的获取与释放

上一篇博客主要讲了AQS的结构。 而这片博客主要针对于同步状态的获取与释放。在此之前,先看一下AQS提供的模板方法     AQS提供的模板方法基本分为3类:独占式获取与释放同步状态,共享式获取与释放同步状态和查询同步队列中的等待线程情况。 一、独占式同步状态获取与释放 public...

2018-05-09 11:49:38

阅读数 378

评论数 0

Java中的AQS(一)AQS简介

    队列同步器AbstractQueuedSynchronizer,是用来构建锁或者其他同步组件的基础框架,它使用一个int成员表示同步状态,通过内部的FIFO队列来完成资源获取线程的排序工作。一、AQS的设计    AQS的设计是基于模板方法模式的,也就是说,使用者需要继承AQS并重写指定的...

2018-05-09 01:01:50

阅读数 1137

评论数 0

Mybatis的分页插件pagehelper的使用介绍

一点都不萌的博主来水了,哈哈。 今天给大家介绍一下分页插件pageHelper的使用 首先我用的是maven项目,单纯的是一个顾客的增删改查 下面这是pageheilper的maven依赖 com.github.pagehelper pagehelper 4...

2017-11-11 15:36:32

阅读数 334

评论数 1

从jsp页面发送ajax请求,servlet接受参数并返回json数据

博主注册了CSDN好久了,一直没写过(哈哈) 今天遇到了问题把我难住了,解决之后就赶紧来记下来 这是一个很简单的更新用户的问题 先来看看项目所需jar包 接下来就是jsp页面的东西,ajax发送id 然后在servlet接受参数,并去数据库查询结果String id = request.g...

2017-11-05 00:16:21

阅读数 17036

评论数 4

Java内存模型与单例模式

我们直接进入正题 这是双重校验锁的单例模式 private static Singleton instance; //1 public static Singleton getSingleton(){ if (instance == null){ //...

2018-07-28 14:55:27

阅读数 114

评论数 0

Java内存模型中的happens-before

一、happens-before的定义 ①如果一个操作happens-before另一个操作,那么第一个操作的执行结果将对第二个操作可见,且第一个操作的执行顺序在第二个操作之前 ②两个操作之间存在happens-before关系,并不意味着必须按照happens-before关系指定的顺序来执...

2018-07-28 12:49:43

阅读数 88

评论数 0

Java内存模型中的重排序

重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。 但是不能随时随地的重排序,我们可以看一个例子看待这个问题。 上面三种情况,只要重排序两个操作的执行顺序,那么程序的结果就会被改变。 所以 重排序需要遵守一些规则。 a、编译器和处理器不会改变存在数据依赖性关系...

2018-07-27 21:52:30

阅读数 353

评论数 0

Redis的复制

在Redis中,用户可以通过SALVEOF命令或者设置配置文件中salveof选项,让一个服务器去复制另一个服务器,被复制的服务器成为主服务器,对主服务器进行复制的服务器称为从服务器。 一、旧版复制功能的实现 Redis的复制功能分为同步和命令传播两个操作 a、同步:同步操作用于将服务器的数...

2018-07-27 16:00:57

阅读数 100

评论数 0

Redis持久化

我们知道Redis是内存数据库,他将自己的数据库状态存储在内存中,那么当服务器进程退出,服务器中的数据库状态也会消失。 为了解决这个问题,Redis通过了两种持久化功能,分别是RDB持久化和AOF持久化 一、RDB持久化 RDB持久化可以手动执行,也可以根据服务器配置选项定期执行,该功能可以...

2018-07-27 10:33:00

阅读数 41

评论数 0

Redis中的数据库

一、Redis中的数据库 在Redis中,每个客户端都有自己的目标数据库,每当客户端执行数据库写命令或者数据库读命令的时候,目标数据库就会成为这些命令的操作对象。 默认情况下,Redis有16个数据库,从0号数据库到15号数据库。 在默认情况下,Redis客户端的数据库为0号数据库,但客户端...

2018-07-26 20:31:11

阅读数 1087

评论数 0

服务注册中心

一、服务注册中心介绍 分布式服务框架部署在多台不同的机器上,例如服务提供者在集群A,服务调用者在集群B,那么B在调用A的服务的过程中,集群A的机器需要和集群B的机器进行通信。 抠张图看看  在上图中,有这么几个问题需要解决: ①集群A的服务调用者如何发现集群B的服务提供者 ②集群A的...

2018-07-25 21:34:48

阅读数 1362

评论数 0

分布式事务的一致性

今天在看书的时候,看到了分布式事务的一致性问题,就赶紧记下来。 一、分布式事务介绍 在我们平时写的代码中,我们可以用一个事务包含许多个SQL调用,如果某一个数据库操作发生异常,就可以将之前的SQL操纵全部进行回滚,只有当所以的SQL操作全部成功,才进行提交,这就保证了事务的一致性。 抠张图看...

2018-07-25 20:27:44

阅读数 554

评论数 0

Spring源码解析之配置文件的解析

此篇博客篇幅较长,请耐心阅读,可能我文笔不太好,但是请仔细看博客中的代码的注释和说明,这样能帮助你理解。有什么问题可以回复。   直接进入正题,在使用Spring时,我们经常要进行大量的配置来告诉Spring,我们需要什么样的功能。但是配置文件又是怎么被Spring解析变成Spring所需要的东...

2018-07-22 16:33:30

阅读数 220

评论数 0

IDEA下搭建taotao商城

首先看一下项目的结构图                        打开IDEA,新建一个空项目        输入项目名,点击finishOK,接下来创建父工程taotao-parent,File->New->Module选择Maven,勾上对号,选...

2018-05-28 23:17:05

阅读数 1409

评论数 7

使用NIO实现一个echo服务器

    一个简单的echo服务器,客户端向服务端发送消息,服务端进行响应,当客户端发送quit字符串时,断开客户端和服务端的连接。使用NIO实现    服务端代码public class EchoServer_NIO { private Selector selector; pri...

2018-05-26 21:00:54

阅读数 174

评论数 0

使用BIO实现一个简单的echo服务器

    一个简单的echo服务器,客户端向服务端发送消息,服务端进行响应,当客户端发送quit字符串时,断开客户端和服务端的连接。    服务端代码:public class EchoClient_BIO { private Socket socket; public stati...

2018-05-26 14:34:59

阅读数 245

评论数 0

动手实现一个简单的RPC框架

    RPC(Remote Procedure Call,远程过程调用)一般用来实现部署在不同机器上的系统之间的方法调用,是的程序能够像访问本地资源一样,通过网络传输去访问远端系统资源。RPC框架实现的架构原理都是类似的,如下图所示。                    Client Code...

2018-05-25 20:55:25

阅读数 438

评论数 0

MySql悲观锁和乐观锁的使用

    现在我有一个购买商品的需求,我们知道当我们购买商品时,后台会进行减库存和增加购买记录的操作。我们分别在无锁和乐观锁和悲观锁进行相应的代码演示来说明问题。    建表语句如下:CREATE TABLE `stock` ( `id` int(11) unsigned NOT NULL AU...

2018-05-25 13:37:13

阅读数 8376

评论数 12

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