IO模式和IO多路复用

阅读目录1 基础知识回顾2 I/O模式3 事件驱动编程模型4 select/poll/epoll的区别及其Python示例  网络编程里常听到阻塞IO、非阻塞IO、同步IO、异步IO等概念,总听别人装13不如自己下来钻研一下。不过,搞清楚这些概念之前,还得先回顾一些基础的概念。回到顶部1 基础知识...

2018-04-08 14:26:34

阅读数 83

评论数 0

使用Spring实现读写分离( MySQL实现主从复制)

http://blog.csdn.net/jack85986370/article/details/51559232

2018-03-16 10:47:44

阅读数 86

评论数 0

Redis cluster 3.2.11 集群搭建

安装环境与版本redis 采用 redis-3.2.11 版本。两台虚拟机都是 CentOS ,一台 CentOS6.5 (IP:192.168.231.129)CentOS6.5(IP:192.168.231.130)安装过程1、下载并解压cd /usr/localtar -zxvf redis...

2018-03-11 13:37:25

阅读数 958

评论数 0

hadoop运行原理之shuffle

hadoop的核心思想是MapReduce,但shuffle又是MapReduce的核心。shuffle的主要工作是从Map结束到Reduce开始之间的过程。首先看下这张图,就能了解shuffle所处的位置。图中的partitions、copy phase、sort phase所代表的就是shuf...

2018-01-21 19:52:47

阅读数 109

评论数 0

CAS操作ABA问题发生的场景

最开始看一些资料,提到了CAS操作存在问题,就是在CAS之前A变成B又变回A,CAS还是能够设置成功的,开始十分的费解,怎么可能呢,A变回了A就应该能够CAS成功啊,为什么会不成功呢? 于是去查了一些资料,其中提到了两种情况:  第一种,A最开始的内存地址是X,然后失效了,有分配了B,...

2017-09-18 00:28:18

阅读数 349

评论数 0

concurrent包的实现

由于java的CAS同时具有 volatile 读和volatile写的内存语义,因此Java线程之间的通信现在有了下面四种方式:   A线程写volatile变量,随后B线程读这个volatile变量。A线程写volatile变量,随后B线程用CAS更新这个volatile变量。A线...

2017-09-17 23:58:03

阅读数 407

评论数 0

线程安全的实现方法

1 互斥同步(阻塞同步) 悲观锁:synchronized和reentrantLock 2 非阻塞同步 基于冲突检测的乐观并发策略,通俗的说,就是先进行操作,如果没有其他线程争用共享数据,那操作就成功了;如果有争用,产生了冲突,那就再采取其他的补偿措施(最常见的补偿就是不断去尝试,直到成功为...

2017-09-15 17:34:01

阅读数 266

评论数 0

this引用逃逸

并发编程实践中,this引用逃逸("this"escape)是指对象还没有构造完成,它的this引用就被发布出去了。这是危及到线程安全的,因为其他线程有可能通过这个逸出的引用访问到“初始化了一半”的对象(partially-constructed object)。这样就会出现某...

2017-09-15 16:33:33

阅读数 1727

评论数 2

volatile内存语义

1 可见性 不管是volatile读还是volatile写,都会重新访问主内存取最新的值 2 有序性(防止重排序) volatile写前  storestore屏障  首先先把前面的普通写操作执行到主内存,在执行volatile写操作执行到内存(保证前面普通写操作和volatile写操作不重...

2017-09-13 20:54:19

阅读数 139

评论数 0

Spring事务传播性与隔离级别

事务是逻辑处理原子性的保证手段,通过使用事务控制,可以极大的避免出现逻辑处理失败导致的脏数据等问题。 事务最重要的两个特性,是事务的传播级别和数据隔离级别。传播级别定义的是事务的控制范围,事务隔离级别定义的是事务在数据库读写方面的控制范围。 以下是事务的7种传播级别: 1...

2017-07-11 10:43:31

阅读数 226

评论数 0

Mysql(2)事务

一、AICD 1、原子性 2、一致性 3、隔离性 4、持久性 二、隔离级别 1、read uncommint(未提交读) 事务的修改,即使未提交,对于其他的事务也是可见的,称为脏读,这就会导致很多问题。这个隔离级别性能不会比其他隔离级别好太多,但是却缺乏其他隔离级别的很多好处,实际中很少应用。...

2017-06-06 23:24:01

阅读数 144

评论数 0

Mysql(1)并发控制

1、读写锁 读锁是共享锁,相互不阻塞的。 写锁是排他锁,一个写锁会阻塞其他的写锁和读锁。 2、锁粒度 所谓的锁策略,就是在锁的开销和数据的安全性之间寻求平衡,这种平衡当然也会影响到性能。大多数商用数据库系统没有提供更多的选择,一般都是在表上施加行级锁,并加以各种复杂的方式来实现,以便在锁比...

2017-06-06 11:04:33

阅读数 294

评论数 0

状态模式

定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态转换的条件表达过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的问题判断逻辑简化。 理解:1、分成2个角色,State状态角色,StateCont...

2017-04-19 11:11:08

阅读数 367

评论数 0

设计模式四原则

设计模式四原则

2017-04-18 15:21:24

阅读数 178

评论数 0

happens-before规则和as-if-serial语义

JSR-133使用happens-before的概念来阐述操作之间的内存可见性。在JMM中,如果一个操作执行的结果需要对另一个操作可见, 那么这2个操作之间必须要存在happens-before关系。这里提到的2个操作既可以是一个线程之内,也可以是不同线程之间。 与程序员密切相关的happens-...

2017-03-22 11:19:18

阅读数 2845

评论数 0

内存屏障

原文地址  作者:Martin Thompson  译者:一粟   校对:无叶,方腾飞 本文我将和大家讨论并发编程中最基础的一项技术:内存屏障或内存栅栏,也就是让一个CPU处理单元中的内存状态对其它处理单元可见的一项技术。 CPU使用了很多优化技术来实现一个目标:CPU执行单元的速度要...

2017-03-21 14:07:50

阅读数 384

评论数 0

Java指令重排序

在执行程序时候,为了提高性能,编译器和处理器常常会对指令做重排序。重排序分3中类型。 1、编译器优化的重排序。编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。 2、指令级并行的重排序。现代处理器采用了指令级并行技术来将多条指令重叠执行。如果不存在数据的依赖性,处理器可以改变语...

2017-03-15 11:25:36

阅读数 374

评论数 0

并发编程的挑战

1、如何减少上下文的切换 (1)无所并发编程。多线程竞争时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,如将数据的id按照hash算法取模分段,不同的线程处理不同段的数据。 (2)CAS算法。compare and set 算法。java的atomic包使用cas算法来...

2017-01-21 23:32:12

阅读数 378

评论数 0

Java过滤器与SpringMVC拦截器之间的关系与区别

今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊,而且看的比较粗浅,没有一个全局而又细致的认识,由于已至深夜,时间原因,我就把一些网友的观点重点摘录下来,大家仔细看后也一定会有一个比较新的认识(在此非常感...

2017-01-17 09:32:11

阅读数 318

评论数 0

优化sql

1、  优化group by语句 默认情况下,mysql对所有group bycol1,col2…的字段进行排序。这与在查询中指定order by col1,col2…类似。因此,如果显式包括一个包含相同的列的order by 子句,则对mysql的实际执行性能没有什么影响。 如果查询包括gr...

2017-01-10 16:00:41

阅读数 224

评论数 0

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