自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ahsxsk的学习之路

关注业务、技术、算法

  • 博客(58)
  • 资源 (2)
  • 收藏
  • 关注

转载 MySQL中的两种临时表

转自:http://mysql.taobao.org/monthly/2016/06/07/外部临时表通过CREATE TEMPORARY TABLE 创建的临时表,这种临时表称为外部临时表。这种临时表只对当前用户可见,当前会话结束的时候,该临时表会自动关闭。这种临时表的命名与非临时表可以同名(同名后非临时表将对当前会话不可见,直到临时表被删除)。内部临时表内部临时表是一种特殊轻量级的临时表,用来

2017-09-19 21:30:50 1378

原创 Redis主从同步原理-PSYNC

之前写过一篇博客(http://blog.csdn.net/sk199048/article/details/50725369)来介绍了Redis主从同步的过程,里面主要介绍从服务器使用SYNC命令复制数据的过程。Reids复制数据主要有2中场景: + 从服务器从来第一次和当前主服务器连接,即初次复制 + 从服务器断线后重新和之前连接的主服务器恢复连接,即断线后重复制   对于初次复制来说使用

2017-09-10 15:43:08 17212 3

转载 Java: synchronized详解,静态同步方法,普通同步方法,同步代码块

摘自:http://topmanopensource.iteye.com/blog/1738178 对代码进行同步控制我们可以选择同步方法,也可以选择同步块,这两种方式各有优缺点,至于具体选择什么方式,就见仁见智了,同步块不仅可以更加精确的控制对象锁,也就是控制锁的作用域,何谓锁的作用域?锁的作用域就是从锁被获取到其被释放的时间。而且可以选择要获取哪个对象的对象锁。

2017-03-11 16:30:56 3016

转载 节约内存:Instagram的Redis实践

Instagram可以说是网拍App的始祖级应用,也是当前最火热的拍照App之一,Instagram的照片数量已经达到3亿,而在Instagram里,我们需要知道每一张照片的作者是谁,下面就是Instagram团队如何使用Redis来解决这个问题并进行内存优化的。首先,这个通过图片ID反查用户UID的应用有以下几点需求:查询速度要足够快数据要能全部放到内存里,最好是一台EC

2016-09-14 12:38:14 691 1

转载 kafka+zookeeper环境配置(Mac 或者 linux环境)

转自:http://www.cnblogs.com/super-d2/p/4534323.html 一.zookeeper下载与安装1)下载adeMacBook-Pro:zookeeper_soft apple$ wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz2)解压tar z

2016-05-04 16:44:35 1271

原创 Java IO:PipedReader和PipedWriter使用详解及源码分析

使用方法  PipedReader和PipedWriter即管道输入流和输出流,可用于线程间管道通信。它们和PipedInputStream/PipedOutputStream区别是前者操作的是字符后者是字节。方法介绍  PipedReader提供的API如下://构造方法PipedReader(PipedWriter src) //使用默认的buf的大小和传入的pw构造prPipedRe

2016-04-27 14:13:21 5220 2

原创 Java IO:CharArrayReader使用及源码分析

使用方法  CharArrayReader即字符数组输入流,用于从输入流读取字符,和ByteArrayInputStream的区别就是前者以字符为单位后者是字节。方法介绍  CharArrayReader提供的API如下://构造方法CharArrayReader(char[] buf)CharArrayReader(char[] buf, int offset, int length)//关

2016-04-26 21:05:28 904

原创 Java IO:CharArrayWriter使用及源码分析

使用方法  CharArrayWriter即字符数组输出流,用于向输出流写写入字符,和ByteArrayOutputStream的区别就是前者写入的是字符后者写入的是字节。方法介绍  CharArrayWriter提供的API如下://构造方法CharArrayWriter()CharArrayWriter(int initialSize)//追加写CharArrayWriter ap

2016-04-26 16:59:25 594

原创 Java IO:BufferedInputStream使用详解及源码分析

使用方法  BufferedInputStream继承于FilterInputStream,提供缓冲输入流功能。缓冲输入流相对于普通输入流的优势是,它提供了一个缓冲数组,每次调用read方法的时候,它首先尝试从缓冲区里读取数据,若读取失败(缓冲区无可读数据),则选择从物理数据源(譬如文件)读取新数据(这里会尝试尽可能读取多的字节)放入到缓冲区中,最后再将缓冲区中的内容部分或全部返回给用户.由于从缓冲

2016-04-26 14:18:52 4110 1

原创 Java IO:BufferedOutputStream使用详解及源码分析

使用方法BufferedOutputStream继承于FilterOutputStream,提供缓冲输出流功能。缓冲输出流相对于普通输出流的优势是,它提供了一个缓冲数组,只有缓冲数组满了或者手动flush时才会向磁盘写数据,避免频繁IO。核心思想是,提供一个缓冲数组,写入时首先操作缓冲数组。方法介绍  BufferedOutputStream提供的API如下://构造函数BufferedOutpu

2016-04-25 21:22:34 3670

原创 Java IO:PipedOutputStream和PipedInputStream使用详解及源码分析

1 使用方法  PipedOutputStream和PipedInputStream是管道输出流和管道输入流,配合使用可以实现线程间通信。 使用管道实现线程间通信的主要流程如下:建立输出流out和输入流in,将out和in绑定,out中写入的数据则会同步写入的in的缓冲区(实际情况是,out中写入数据就是往in的缓冲区写数据,out中没有数据缓冲区)。1.1 方法介绍  PipedOutputSt

2016-04-22 19:45:23 6840

原创 Java IO:FileInputStream和FileOutputStream使用详解及源码分析

1 使用方法  FileInputStream即文件输入流,使用它从文件中获得字节流,FileOutputStream即问价输出流,使用它将字节流写入文件。1.1 方法介绍  FileInputStream提供的API如下:FileInputStream(File file) // 创建“File对象”对应的“文件输入流”FileInputStream(FileDescriptor

2016-04-08 13:25:43 4372

原创 Java IO:ByteArrayOutputStream使用详解及源码分析

1 使用方法  ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。ByteArrayOutputStream实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()和 toString()获取数据。1.1 方法介绍  ByteArrayO

2016-04-07 16:59:41 9306

原创 Java IO:ByteArrayInputStream使用详解及源码分析

1 使用方法  ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。ByteArrayOutputStream实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()和 toString()获取数据。1.1 方法介绍  ByteArrayI

2016-04-07 14:58:21 2273

原创 高并发、分布式交易场景下唯一ID生成方法

介绍  可以单机产生分布式全局唯一Id,核心的方法为模仿Twitter snowflake,分析介绍见[1][2]。单机产生id的好处是避免了从数据库中获取序列码产生的传输问题,以及单点问题。常见的分布式Id生成器方案见[3]。 Id的组成如下: 1 ms级时间 17位 20160329201902024 2 IDC标志位 2位 12 3 服务器标志位 3位 002 4 流水

2016-03-31 12:27:37 2139

原创 Java IO:IO框架

Java 流处理分为字节流和字符流。字节流处理的单位是byte,而字符流处理的单位是以2个字节为单位的Unicode编码字符。字符流的操作效率比字节流高,字符流按字符处理,字节流一次只能处理一个字节。下面是网上盗用的图(http://blog.csdn.net/yczz/article/details/38761237) 1 字节流 InputStream/OutputStream(创建一个输入/

2016-03-24 16:28:52 605

原创 Java字符串:String、StringBuilder、StringBuffer区别

在学习String、StringBuilder、StringBuffer这三个类的时候在github上看到如下几个问题:1. 成员变量、局部变量在什么场景下用哪个更合适2. 他们之间效率如何,为什么3. 有没有存在特殊情况4. 编译器对他们的优化  下面尝试对这几个问题进行回答  回答1:String是不可变的字符串,任何拼接、修改操作都是返回的新的String对象,原对象并没有改变;StringB

2016-03-23 18:09:26 350

原创 Java字符串:StringBuffer使用详解及源码分析

1 使用方法  StringBuffer和StringBuilder功能基本相同,他们的区别在于StringBuffer是线程安全的而StringBuilder不是线程安全的。他们的关系和HashMap-Hashtable、Vector-ArrrayList类似。public final class StringBuffer extends AbstractStringBuilder

2016-03-23 16:36:22 791

原创 Java字符串:StringBuilder使用详解及源码分析

1 使用方法  StringBuilder是可变字符串,和String的主要区别是他的字符串是可变的,例如拼接等操作不会重返回新的StringBuilder实例。public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, CharSequ

2016-03-23 11:41:11 2080

原创 Java字符串:String使用详解及源码分析

1 使用方法  String类型的字符串是不可变字符串,提供了较多操作API。public final class String implements java.io.Serializable, Comparable<String>, CharSequence {}  String可以序列化,可以使用compareTo比较字符串。1.1 方法介绍  String提供了的API主要如下:pub

2016-03-22 16:20:57 849

原创 Java集合:TreeMap使用详解及源码分析

1 使用方法  TreeMap和HashMap一样是散列表,但是他们内部实现完全不同,TreeMap基于红黑树实现,是一个有序的散列表,而HashMap使用数组加链表实现是无序的。public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, jav

2016-03-13 17:48:23 1330

转载 Java集合: ConcurrentHashMap源码分析 JDK1.8

转载文章,原博客地址为:http://blog.csdn.net/u010887744/article/details/50637030jdk1.8和jdk1.7对于ConcurrentHashMap的实现出现的重大变化,不再采用分段锁的方法,网上这方面的博客较少,这篇文章写得较好,转载扩撒。本文首写于有道云笔记,并在小组分享会分享,先整理发布,希望和大家交流探讨。云笔

2016-03-10 16:21:54 4547

原创 Java集合:Hashtable使用详解及源码分析

1 使用方法  Hashtable是和HashMap类似的散列表,存储的内容为key-value键值对,key的值是唯一的,和HashMap不同的是key和value都不能为null。Hashtable和HashMap的关系可以参考Vector和ArrayList的关系,操作和功能大部分相同,Hashtable是线程安全的但是速度较慢,建议使用HashMap,如果遇到多线程情况则使用Collecti

2016-03-09 18:30:28 686

原创 Java集合:HashMap使用详解及源码分析

1 使用方法  HashMap是散列表,存储的内容为key-value键值对,key的值是唯一的,可以为null。public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {}  HashMap继承了AbstractMap并实现了Map、Cloneable以及Seri

2016-03-08 17:50:48 608

原创 Java集合:Vector使用详解及源码分析

1 使用方法  Vector和ArrayList类似,是数组队列,可以实现容量的动态增长。Vector类继承了AbstractList抽象类并且实现了List、RandomAccess,Cloneable以及java.io.Serializable接口。 public class ArrayList extends AbstractList implements List, RandomAcces

2016-02-29 18:00:34 948

原创 LeetCode:Fraction to Recurring Decimal

1、题干Given two integers representing the numerator and denominator of a fraction, return the fraction in string format.If the fractional part is repeating, enclose the repeating part in parentheses.For

2016-02-26 20:15:02 416

原创 Java集合:LinkedList使用详解及源码分析

1 使用方法  LinkedList基于双端链表实现,可以作为栈、队列或者双端队列使用。public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable  LinkedList继承了AbstractSequ

2016-02-26 10:58:03 4201

原创 LeetCode:Increasing Triplet Subsequence

Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the array.Formally the function should:Return true if there exists i, j, k such that arr[i] < arr[j] < arr

2016-02-25 20:03:50 349

原创 Java集合:ArrayList使用详解及源码分析

1 使用方法  ArrayList是数组队列,可以实现容量的动态增长。ArrayList类继承了AbstractList抽象类并且实现了List、RandomAccess,Cloneable以及java.io.Serializable接口。 public class ArrayList extends AbstractList implements List, RandomAccess, Clon

2016-02-25 09:08:16 928

原创 Redis主从同步原理-SYNC

和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,下图为级联结构。 Redis主从复制可以根据是否是全量分为全量同步和增量同步。1 全量同步Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤

2016-02-23 18:36:10 43968 6

原创 Java集合:集合框架

Java集合源码位于Java.util包下,主要包括List、Set、Map、Iterator以及工具类Arrays和Collections。Java集合框架的顶级接口包括Collection和Map两个,其中Collection的子接口包括List、Set两个。具体结构如下: 1 Collection接口  Collection是集合的顶级接口之一,他继承了Iterable接口,并声明了集合中一

2016-02-18 20:43:22 487

原创 MySQL主从复制原理

当一台MySQL服务器无法满足现有的访问量时,一般会采用主从服务器模式,通过数据库代理做到读写分离。主服务器负责处理写入请求,从服务器服务器负责处理读取请求。大部分情况是读取量远大于写入量,一般会配置多个从服务器。参考《高性能MySQL》,本文介绍了MySQL主从复制的原理和常见的拓扑结构。1 MySQL主从复制的过程  MySQL主从负责依赖binlog,要想实现复制必须打开binlog。主从复制

2016-02-17 19:58:54 693

原创 Redis事务介绍

1 什么是Redis事务  Redis通过MULTI、EXEC、DISCARD以及WATCH命令提供事务功能。Redis的事务提供一次性、按顺序执行命令的机制,并且不会中断事务去执行其他命令。Redis事务和我们常理解的事务还是有些区别的,即事务中的部分命令执行失败不会导致事务回滚。Redis事务的核心思想是维护一个事务命令队列,将事务中的所有命令先预存到队列中,等待EXEC一起执行或者DISCAR

2016-01-29 16:16:55 1498

原创 MySQL事务介绍及原理

1 为什么要事务  事务是一组不可被分割执行的SQL语句集合,如果有必要,可以撤销。银行转账是经典的解释事务的例子。用户A给用户B转账5000元主要步骤可以概括为如下两步。   第一,账户A账户减去5000元;   第二,账户B账户增加5000元;   这两步要么成功,要么全不成功,否则都会导致数据不一致。这就可以用到事务来保证,如果是不同银行之间的转账还需要用到分布式事务。2 事务的性质

2016-01-27 18:32:30 18926 1

原创 Java并发编程:死锁及解决方法

1 什么是死锁  死锁是多个进程\线程为了完成任务申请多个不可剥夺的资源并且以不正确的方式推进导致的一直互相等待对方释放资源的状态。下面以经典的哲学家就餐问题为例,描述死锁产生的场景。2 哲学家就餐问题  五个哲学家坐在一个圆桌上,每个哲学家两侧都放着1根筷子,总共有5只筷子。哲学家需要分别或者左右手的两只筷子才能就餐,就餐完成后将筷子放回原处,其他哲学家可以获取放回的筷子。有这样一种状态,每个哲学

2016-01-26 21:44:41 1295

原创 Redis持久化方式介绍

Redis的持久化方法持久化方法有RDB文件和AOF文件两种。下面主要介绍两种持久化方法的原理缺点以及我在做交易系统异步化改造项目时用到redis的场景。1 RDB文件  RDB文件是一个经过压缩的二进制文件,通过这个文件可以还原生成RDB文件时的数据库状态。RDB文件是直接保存在硬盘中的,所以即使Redis宕机也可以通过RDB文件恢复。生成RDB文件的Redis命令有SAVE和BGSAVE两个。1

2016-01-26 19:52:08 2087

原创 Java并发编程:阻塞队列及实现生产者-消费者模式

1 什么是阻塞队列  JDK 1.5的java.util.concurrent包提供了多种阻塞队列。阻塞队列相对于PriorityQueue、LinkedList等非阻塞队列的特点是提供了,队列阻塞的操作,优化了队列为空向队列取数据或者队列满向队列加数据时的阻塞操作。以生产者-消费者模式为例,当队列为空时消费者线程会被挂起,等到队列中有数据时会自动的恢复并消费。1.1 常见的阻塞队列  Blocki

2016-01-24 14:38:33 1674

原创 Java并发编程:生产者-消费者模式

生产者消费者模型是并发编程的经典模型,生产者模型的核心思想是生产者生产的产品通过一块共享的资源与消费者交互,通过共享资源的交互实现了生产者与消费者的解耦。现在的消息队列使用的也是这种思想。   本文实现了如下描述的生产者-消费者模型:   1、生产者和消费者各有1个;   2、通信所使用的队列大小一定(200),并且队列不能溢出;   3、生产者和我消费者的消费速度不做假设,生产速度和消费速

2016-01-22 11:41:02 1905

原创 Java并发编程:线程同步机制

Java中线程同步可以通过wait、notify、notifyAll等方法实现。这几个方法在最顶级的父类Object中实现,并且被声明为final,所以子类无法重写这几个方法。在实现线程同步时,一般需要配合synchronized关键字使用,定义同步代码块或者方法。JDK 1.5以后提供了Condition来实现线程间的协作,Condition提供的await、signal、signalAll方法相

2016-01-19 18:31:17 1205

原创 Java并发编程:ThreadPoolExecutor类及方法源码分析

ThreadPoolExecutor是jdk自带线程池实现类,现有的Executors工具类实现的几种线程池核心都是调用ThreadPoolExecutor类。ThreadPoolExecutor在jdk1.7及以后做了部分修改,本文以JDK1.8为准。1 构造函数ThreadPoolExecutor类共有4个构造函数,其他三个构造函数都是调用下参数最全的一个,下面只介绍参数最全的的一个。 publ

2016-01-14 21:35:30 645

VS assistant 插件

自动匹配函数,关键字变色,定义函数、变量也会变色等

2013-07-05

基于指纹识别的访问记录系统 VB开发

vb 可以实现指纹的录入,识别,访问记录,查询等功能

2011-04-09

空空如也

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

TA关注的人

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