自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

转载 MYSQL中delete删除多表数据与删除关联数据

在mysql中删除数据方法有很多种,最常用的是使用delete来删除记录,下面我来介绍delete删除单条记 录与删除多表关联数据的一些简单实例。1、delete from t1 where 条件2、delete t1 from t1 where 条件3、delete t1 from t1,t2 where 条件4、delete t1,t2 from t1,t2 where 条件前3者是可行的,第4

2015-09-04 13:32:02 6842 2

转载 MYSQL MVCC实现及其机制

多版本并发控制(Multiversion Concurrency Control)MVCC最大的好处:读不加锁,读写不冲突  大部分的MySQL的存储 引擎,比如InnoDB,Falcon,以及PBXT并不是简简单单的使用行锁机制。它们都使用了行锁结合一种提高并发的技术,被称为MVCC(多版本并 发控制)。MVCC并不单单应用在MySQL中,其他的数据库如Oracle,PostgreSQL,以及其他

2015-09-03 17:45:34 622

转载 数据库锁机制

数据库就是通过锁机制来解决并发问题的。主要就是两种锁,共享锁和排他锁(也叫独占锁)。在执行select语句的时候需要给操作对象(表或者一些记录)加上共享锁,但加锁之前需要检查是否有排他锁,如果没有,则可以加共享锁(一个对象上可以加n个共享锁),否则不行。共享锁通常在执行完select语句之后被释放,当然也有可能是在事务结束(包括正常结束和异常结束)的时候被释放,主要取决与数据库所设置的事务隔离级别

2015-09-03 16:57:02 560

转载 Java并发编程之闭锁CountDownLatch和栅栏(CyclicBarrier)

栅栏类似闭锁,但是它们是有区别的.1.闭锁用来等待事件,而栅栏用于等待其他线程.什么意思呢?就是说闭锁用来等待的事件就是countDown事件,只有该countDown事件执行后所有之前在等待的线程才有可能继续执行;而栅栏没有类似countDown事件控制线程的执行,只有线程的await方法能控制等待的线程执行.2.CyclicBarrier强调的是n个线程,大家相互等待,只要有一个没完成,所有人都

2015-08-31 16:20:23 978

原创 java --threadgroup线程组与UncaughtExceptionHandler

threadgroup线程组1.线程组表示一个线程的结合.此外线程组也可以包含其他线程组.线程组构成一棵树,在树中,除了初始线程组外,每个线程组都有一个父线程组。 2.每个线程产生时,都会被归入某个线程组(Java中每个线程都是属于某个线程组),视线程是在那个线程组中产生而定.如果没有指定,则归入产生该子线程的线程的线程组中.(如在main中初始化一个线程,未指定线程组,则线程所属线程组为main

2015-08-31 15:07:05 862

原创 MethodHandle与反射Method区别,invokedynamic指令

MethodHandle与反射Method区别MethodHandle的使用方法和效果上与Reflection都有众多相似之处。不过,它们也有以下这些区别:Reflection和MethodHandle机制本质上都是在模拟方法调用,但是Reflection是在模拟Java代码层次的方法调用,而MethodHandle是在模拟字节码层次的方法调用。在MethodHandles.Lookup上的三个方

2015-08-27 15:50:14 6546

转载 Java 泛型数组

Java 不支持泛型数组。也就是说,[java] view plaincopyList[] ls = new ArrayList[10];  是不支持的,而[java] view plaincopyList[] ls = new ArrayList[10]  却可以。是我一直不清楚为什么不能够声明泛型的数组,指

2015-08-24 16:59:32 356

原创 leetcode算法思路总结

算leetcode法思路总结1.Minimum Window Substring问题 Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n). For example, S = “ADOBE

2015-08-05 17:28:47 1245

原创 median of two sorted arrays

题目:求两个已排序数组合并之后形成的排序数组的中位数。思路一:利用归并排序的思想分别从两个数组中取数据,直到取到第(m+n)/2数据为止(m、n分别为两个数组A、B的长度)。思路二:将原问题转变成一个寻找两个已排序数组中前k小数的问题。在此的k等于(m+n)/2。首先假设数组A和B的元素个数都大于k/2,我们比较A[k/2-1]和B[k/2-1]两个元素,这两个元素分别表示A的第k/2小的元素和B

2015-08-05 11:03:00 351

原创 TCP超时重传机制

TCP可靠性中最重要的一个机制是处理数据超时和重传。TCP协议要求在发送端每发送一个报文段,就启动一个定时器并等待确认信息;接收端成功接收新数据后返回确认信息。若在定时器超时前数据未能被确认,TCP就认为报文段中的数据已丢失或损坏,需要对报文段中的数据重新组织和重传。尽管超时重传的概念十分简单,但是在实现中,TCP处理超时重传的机制与其他可靠性协议相比是相当复杂的。RTO 影响超时重传机制协议效率

2015-08-04 19:40:54 1974

原创 Java线程调度器ScheduledThreadPoolExecutor 分析

自jdk1.5开始,Java开始提供ScheduledThreadPoolExecutor类来支持周期性任务的调度,在这之前,这些工作需要依靠Timer/TimerTask或者其它第三方工具来完成。但Timer有着不少缺陷,如Timer是单线程模式,调度多个周期性任务时,如果某个任务耗时较久就会影响其它任务的调度;如果某个任务出现异常而没有被catch则可能导致唯一的线程死掉而所有任务都不会再被调度

2015-08-04 10:47:47 810

转载 java线程池原理

原文地址: http://www.cnblogs.com/xiaoQLu/archive/2013/05/13/2870588.html下面开始今天的正文,线程池的核心类为ThreadPoolExecutor类,线程池基本是围绕它展开的,网上有大堆的学习资料,想快速入门,还是看JDK API,里面有详细的类说明,这里主要介绍其流程以及分析固定线程池(Executors.newFixedThreadP

2015-08-03 22:04:12 270

原创 java 伪共享(false sharing)解决思路

怎么样避免伪共享呢?一个典型的例子就是lmax disruptor中的缓存行填充技术。假设cache line的大小是64字节,一个cache line能容纳8个long型变量,disruptor中的做法是在long变量的前面和后面分别填充7个long变量,这样就可以避免我们需要的变量和其他变量在同一个cache line,解决伪共享问题。(当变量类型不是long的时候,我们要在此变量前后填充一些变

2015-08-02 16:03:38 659

原创 reentrantlock与synchronized

关于互斥锁:所谓互斥锁, 指的是一次最多只能有一个线程持有的锁. 在jdk1.5之前, 我们通常使用synchronized机制控制多个线程对共享资源的访问. 而现在, Lock提供了比synchronized机制更广泛的锁定操作, Lock和synchronized机制的主要区别:synchronized机制提供了对与每个对象相关的隐式监视器锁的访问, 并强制所有锁获取和释放均要出现在一个块结构中

2015-08-02 14:45:49 471

原创 tcp粘包、 拆包 与解决方法

**我们在前面曾经说过,发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体,或说是一个流(stream),一条消息有多少字节对应用程序是不可见的,因此TCP协议是面向流的协议,这也是容易出现粘包问题的原因。而UDP是面向消息的协议,每个UDP段都是一条消息,应用程序必须以

2015-08-02 10:21:45 2002

转载 linux awk命令详解

简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。 awk其名称得自于它的创始人 Alfred Aho 、P

2015-07-30 10:59:24 279

转载 Java并发编程:并发容器之CopyOnWriteArrayList(转载)

原文链接:   http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器

2015-07-21 16:47:33 486

转载 Java并发编程:volatile关键字解析

Java并发编程:volatile关键字解析原文链接:http://www.cnblogs.com/dolphin0520/p/3920373.html    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然

2015-07-21 14:35:57 349

转载 探索 ConcurrentHashMap 高并发性的实现机制(转载)

探索 ConcurrentHashMap 高并发性的实现机制ConcurrentHashMap 是 Java concurrent 包的重要成员。本文将结合 Java 内存模型,来分析 ConcurrentHashMap 的 JDK 源代码。通过本文,读者将了解到 ConcurrentHashMap 高并发性的具体实现机制。这对于我们在实际应用中更加高效的使用它是很有帮助的。简介Concurrent

2015-07-17 14:52:20 403

转载 JVM --并发垃圾回收器CMS

1.总体介绍:CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动JVM参数加上-XX:+UseConcMarkSweepGC ,这个参数表示对于老年代的回收采用CMS。CMS采用的基础算法是:标记—清除。 2.CMS过程:初始标记(STW initial mark)并发标记(C

2015-07-14 15:14:26 1636

转载 Java GC、新生代、老年代

Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。 堆的内存模型

2015-07-11 20:49:47 539

原创 tcp的状态变迁图

tcp的状态变迁图状态转换图中状态的描述:CLOSED:无连接是活动的或正在进行LISTEN:服务器在等待进入呼叫SYN_RECV:一个连接请求已经接受,等待确认SYN_SENT:已发出请求SYN。ESTABLISHED:正常数据传输状态FIN_WAIT1:主动关闭,等待应答ACKFIN_WAIT2:已接受关闭应答ACKITMED_WAIT:等待所有分组死掉CLOSING:两边同时

2015-06-30 15:50:05 675

原创 springMVC doDispatch方法

protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { HttpServletRequest processedRequest = request; HandlerExecutionChain mappedHandler = null;

2015-06-29 15:18:14 2237

原创 compute和compute by

使用compute和compute by Compute是用于生成合计,并将其作为附加的汇总列出现在结果集的最后,当与by一起使用时,Compute子句在结果集内生成控件中断和分类汇总(按照by后面的字段分组,每一组都进行汇总,并出现在每组结果集的后面)。select 后面的字段列表中的字段可以作为子语句中where条件语句中的参数。例子如下: select id,name,salary,de

2015-06-29 08:59:21 1236

转载 Group by与having理解

注意:select 后的字段,必须要么包含在group by中,要么包含在having 后的聚合函数里。1.GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面(重要)例如,有如下数据库表:A B 1 abc 1 bcd1 as

2015-06-28 21:44:40 666

转载 剖析Windows消息处理机制

转载:原文连接http://www.cppblog.com/deane/archive/2010/01/07/105099.html1.窗口Windows程序是由一系列的窗口构成的,每个窗口都有自己的窗口过程,窗口过程就是一个拥有有固定 Signature 的 C函数,具体格式如下: LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg

2015-06-26 16:08:02 292

转载 深度优先搜索和广度优先搜索的比较与分析

一、深度优先搜索和广度优先搜索的深入讨论1.深度优先搜索的特点是:(1)无论问题的内容和性质以及求解要求如何不同,它们的程序结构都是相同的,即都是深度优先算法(一)和深度优先算法(二)中描述的算法结构,不相同的仅仅是存储结点数据结构和产生规则以及输出要求。(2)深度优先搜索法有递归以及非递归两种设计方法。一般的,当搜索深度较小、问题递归方式比较明显时,用递归方法设计好,它可以使得程序结构更简捷易懂。

2015-06-21 22:35:10 1029

转载 IO中同步、异步与阻塞、非阻塞的区别

一、同步与异步 概念解释 A. 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用。 但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。 最常见的例子就是 SendMessage。 该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。 当对方处理完毕以后,该函

2015-06-11 21:23:42 461

原创 windows内核情景分析之进入与退出系统空间过程

windows内核情景分析之进入与退出系统空间过程以下为看书和结合自己的理解所写,如有错误,请指正!在windows操作系统中,要想进入系统空间,有三种方式——自陷,中断,异常,通过这三种方式进入系统空间后(通过中断向量表找到中断例程),都会经过一个预处理函数,这个预处理函数用来保留上下文,拷贝参数等,同时也都会调用HalBeginSystemInterrupt函数:BOOLEANHalBegin

2015-06-05 22:52:10 1141

原创 windows内核情景分析之—— KeRaiseIrql函数与KeLowerIrql()函数

windows内核情景分析之—— KeRaiseIrql函数与KeLowerIrql()函数1.KeRaiseIrql函数这个 KeRaiseIrql() 只是简单地调用 hal 模块的 KfRaiseIrql() 函数,返回原来的 IRQL 写入 KeRaiseIrql() 的第 2 个参数里,将它写回 C 代码如下:VOID KeRaiseIrql(KIRQL NewIrql, PKIRQL O

2015-06-05 22:50:13 2493

转载 windows内核情景分析之——APC的执行

windows内核情景分析之——APC的执行以下为此书中的部分章节截图

2015-06-05 22:49:20 482

原创 windows内核情景分析---系统调用

windows内核情景分析—系统调用1.用户空间中的进程如何进行系统调用用户空间与系统空间所在的内存区间不一样,同样,对于这两种区间,CPU的运行状态也不一样。在用户空间中,CPU处于”用户态”;在系统空间中,CPU处于”系统态”。CPU从系统态进入用户态是容易的,因为可以执行一些系统态特有的特权指令,从而进入用户态。而相反,用户态进入系统态则不容易,因为用户态是无法执行特权指令的。所以,一般有三种

2015-06-04 21:50:45 930

原创 windows内核原理分析之DPC函数的执行(3)

windows内核原理分析之DPC函数的执行(3)windows内核什么时候会扫描DPC请求队列,执行这些DPC函数呢?答案是,每当CPU的运行级别从DISPATCH_LEVEL或以上降低到DISPATCH_LEVEL以下时,如果有扫描DPC请求队列的要求存在,内核就会扫描DPC请求队列并执行DPC函数(如果队列非空的话)。为此,我们不妨从宏操作KeLowerIrql()开始往下看。#define

2015-06-04 15:13:53 2131

转载 windows内核原理分析之DPC函数的执行(2)

windows内核原理分析之DPC函数的执行(2)需要执行DPC函数时,就通过KeInsertQueueDpc()提出DPC请求,就是把具体的KDPC结构挂入PRCB中的DPC请求队列,这常常是由中断服务程序完成的。BOOLEAN NTAPI KeInsertQueueDpc(IN PKDPC Dpc, IN PVOID SystemArgument1, I

2015-06-04 15:08:42 1649

转载 windows内核原理分析之DPC函数的执行(1)

windows内核原理分析之DPC函数的执行(1)当发生中断时,有些操作本来应该在中断服务程序中完成,但是实际上却是在退出中断服务程序之后在一个DPC函数中完成的。DPC是”Deferred Procedure Call”的缩写,意为推迟了的过程(函数)调用。这是因为,逻辑上应该放在中断服务程序中完成的操作并非都是那么紧迫,其中有一部分可能相对而言不那么紧迫,而又比较费时间,实际上可以放在开中断的条

2015-06-04 15:01:09 2262

转载 TCP慢启动与拥塞控制笔记

TCP慢启动与拥塞控制笔记流量控制传输数据的时候,如果发送方传输的数据量超过了接收方的处理能力,那么接收方会出现丢包。为了避免出现此类问题,流量控制要求数据传输双方在每次交互时声明各自的接收窗口「rwnd」大小,用来表示自己最大能保存多少数据,这主要是针对接收方而言的,通俗点儿说就是让发送方知道接收方能吃几碗饭,如果窗口衰减到零,那么就说明吃饱了,必须消化消化,如果硬撑的话说不定会大小便失禁,那就是

2015-06-01 14:29:26 827

转载 socket的listen()的backlog参数和未完成队列、已完成队列的关系

TCP:socket的listen()的backlog参数和未完成队列、已完成队列的关系listen函数是网络编程一个基本的函数,而且它的backlog参数却是和TCP协议息息相关的。我们来看一下一个backlog参数到底有多少秘密。一、 为了理解backlog参数,我们必须首先认识listen函数。#include<sys/socket.h>int listen(int sockfd, in

2015-05-31 19:35:49 1997

原创 Valid Parentheses问题

Valid Parentheses问题Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.The brackets must close in the correct order, “()” and “()[]{}”

2015-05-29 19:53:26 340

原创 Letter Combinations of a Phone Number

Letter Combinations of a Phone Number Given a digit string, return all possible letter combinations that the number could represent. A mapping of digit to letters (just like on the telephone bu

2015-05-18 22:17:18 282

原创 Longest Common Prefix字符串最长公共前缀问题

Longest Common Prefix字符串最长公共前缀问题 Write a function to find the longest common prefix string amongst an array of strings. java代码public static String longestCommonPrefix(String[] strs) { if(strs.le

2015-05-18 22:12:33 464

空空如也

空空如也

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

TA关注的人

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