- 博客(72)
- 收藏
- 关注
原创 消息队列
应用场景:业务解耦保证核心流程能够正确梳理,其他非核心流程只要有通知即可最终一致性“最终一致性”而生的消息队列,如Notify(阿里)、QMQ(去哪儿),设计初衷就是为了交易系统中的高可靠通知所有跨VM的一致性问题,从技术的角度讲通用的解决方案是:强一致性,分布式事务,但落地太难且成本太高,后文会具体提到。最终一致性,主要是用“记录”和“补偿
2016-07-11 14:09:35
680
转载 Java8系列之重新认识HashMap
摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java为数据结构中的映射定义了一个接口j
2016-06-28 14:07:39
2667
2
原创 NBA Finals
1:3落后的时候,泰伦卢对全队说过的一句话: 人生最重要的两个时刻,第一个就是你出生的时刻,第二个就是你终于知道你为什么而出生的时刻。 你终于知道你为什么而出生的时刻,这个时刻,会在哪里
2016-06-20 14:36:38
558
转载 ZooKeeper示例 分布式锁
场景描述在分布式应用, 往往存在多个进程提供同一服务. 这些进程有可能在相同的机器上, 也有可能分布在不同的机器上. 如果这些进程共享了一些资源, 可能就需要分布式锁来锁定对这些资源的访问.本文将介绍如何利用zookeeper实现分布式锁.思路进程需要访问共享数据时, 就在"/locks"节点下创建一个sequence类型的子节点, 称为thisPath. 当thisP
2016-05-20 16:31:44
431
转载 命令模式应用场景
Command模式通常可应用到以下场景: 1 Multi-level undo(多级undo操作) 如果系统需要实现多级回退操作,这时如果所有用户的操作都以command对象的形式实现,系统可以简 单地用stack来保存最近执行的命令,如果用户需要执行undo操作,系统只需简单地popup一个最近的 command对象然后执行它的undo()方法
2016-05-06 16:06:32
10138
1
转载 性能优化模式
摘要性能优化涉及面很广。一般而言,性能优化指降低响应时间和提高系统吞吐量两个方面,但在流量高峰时候,性能问题往往会表现为服务可用性下降,所以性能优化也可以包括提高服务可用性。在某些情况下,降低响应时间、提高系统吞吐量和提高服务可用性三者相互矛盾,不可兼得。例如:增加缓存可以降低平均响应时间,但是处理线程数量会因为缓存过大而有所限制,从而降低系统吞吐量;为了提高服务可用性,对异常请求重复调用
2016-05-05 15:23:53
1159
转载 mysql死锁分析
http://blog.jobbole.com/99208/ 线上某服务时不时报出如下异常(大约一天二十多次):“Deadlock found when trying to get lock;”。Oh, My God! 是死锁问题。尽管报错不多,对性能目前看来也无太大影响,但还是需要解决,保不齐哪天成为性能瓶颈。为了更系统的分析问题,本文将从死锁
2016-04-05 16:32:48
346
转载 测试java中类所占内存大小
public class Test { public static void main(String a[]) throws Exception { System.out.println("Total memory: " +Runtime.getRuntime().totalMemory()); System.out.println("Free memory: " +Runti
2016-03-24 10:52:40
587
原创 elasticsearch搜索 方案 浅析
1.结构定义private Integer id;//名称private String title;//副标题private String subtitle;//介绍private String intro;//分类private String category;
2016-01-15 15:40:23
1307
原创 git常用命令
项目初始化:$ git init$ git add *.c$ git add LICENSE$ git commit -m 'initial project version'对已经存在的项目构建git:$ git clone https://github.com/libgit2/libgit2$ git diff:staged区与work
2015-12-07 19:04:30
276
原创 mysql常用指令
统计数据库对应各表的大小:use information_schema; SELECT TABLE_NAME, (DATA_LENGTH/1024/1024) as DataM , (INDEX_LENGTH/1024/1024) as IndexM, ((DATA_LENGTH+INDEX_LENGTH)/1024/1024)
2015-12-04 17:55:57
301
转载 redis cache集群方案
本文目标是设计高可用,易伸缩的RedisCache集群方案,需求: 故障转移:某个Redis实例故障应当可以把负责的key转移到其他实例。故障实例保存的数据可能丢失,这是符合Cache应用场景需求的。动态水平伸缩:应当可以在运行时动态增加Redis实例,以达到容量水平扩容。水平扩容可能造成部分Cache Key丢失。1. 总体架构 每一个Redis实
2015-12-03 10:32:54
1072
原创 Median of Two Sorted Arrays
There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).延伸为求第K小的数if (aMid
2015-12-01 20:24:15
338
转载 Nginx入门教程
比较不错的nginx入门教程,供大家学习This guide gives a basic introduction to nginx and describes some simple tasks that can be done with it. It is supposed that nginx is already installed on the reader’s ma
2015-12-01 17:10:12
324
转载 数据库设计涉及到的范式
国内绝大多数院校用的王珊的《数据库系统概论》这本教材,某些方面并没有给出很详细很明确的解释,与实际应用联系不那么紧密,你有这样的疑问也是挺正常的。我教《数据库原理》这门课有几年了,有很多学生提出了和你一样的问题,试着给你解释一下吧。(基本来自于我上课的内容,某些地方为了不过于啰嗦,放弃了一定的严谨,主要是在“关系”和“表”上)首先要明白”范式(NF)”是什么意思。按照教材中的定义,范式是“
2015-09-11 15:25:04
428
转载 mysql大表设计
提问:如何设计或优化千万级别的大表?此外无其他信息,个人觉得这个话题有点范,就只好简单说下该如何做,对于一个存储设计,必须考虑业务特点,收集的信息如下:1.数据的容量:1-3年内会大概多少条数据,每条数据大概多少字节; 2.数据项:是否有大字段,那些字段的值是否经常被更新; 3.数据查询SQL条件:哪些数据项的列名称经常出现在WHERE、GROUP BY、ORDER BY子句中等;
2015-07-17 18:21:15
714
原创 linux下jvm调优实例
1.top -Hp pid 捕捉到最耗CPU线程为938,对应的线程栈在做GC操作:2.stat -gcutil pid 1000 10 命令以1000ms打印一次GC统计信息,发现已发生频繁Full GC 情况,基本断定发生内存泄露3.jmap -dump:format=b,file=xx.bin pid dump 进程对应的内存镜像,在本地用MAT分析:
2015-07-13 11:02:51
1533
原创 mysql导入 导出本地
mysql -hdx-mobile-mysql-finance01 -P5002 -ufinancedb --database financedb -e "select * from fp_consume_record_detail_20150601" > consume_detail_20150601.sql -pmysql -h192.168.2.229 -uq3boy --dat
2015-07-09 15:54:05
494
原创 Test实例
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Random;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;
2015-05-13 13:15:50
328
原创 Case study--Spring mvc下得controller默认scope是singleton
案例还原:在高并发调用接口传输局是,controller中的instance会莫名变成null值,导致存储到数据库中异常。问题排查:因为在controller中定义了实例变量,如:@Controllerpublic class controlller{private Instance instance;@ResponseBody@Request
2015-05-12 21:10:34
748
转载 SimpleDateFormat 的线程安全问题
转子:http://blog.csdn.net/zq602316498/article/details/40263083SimpleDateFormat 的线程安全问题SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。但是 Sim
2015-05-12 20:41:49
482
原创 转换表的引擎
1.ALTER TABLE mytable ENGINE = InnoDB;2.导出导入3.创建与查询(CREATE和SELECT)
2015-05-10 19:21:34
234
原创 mysql 批量插入问题
场景:需要实时对mysql一张表中插入大量数据优化方案:1.数据库连接池2.针对http请求,进行多线程访问,和写入3.批量插入要点:a.对于mysql 数据库配置数据库url:jdbc:mysql://ip:3306/table_name?useUnicode=true&characterEncoding=UTF8&connectTimeout=100
2015-05-04 21:27:59
419
转载 Java内存管理机制
JAVA 内存管理总结1. java是如何管理内存的 Java的内存管理就是对象的分配和释放问题。(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字new 为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。释放 :对象的释放是由垃圾回收机制决定和执行的,这样做确实简化了程序员的工作。但同时,它也加重了JVM的工作。因为,
2015-03-30 11:25:18
266
原创 面试时遇到的很有意思的题
这段时间出去面试,遇到了很多有意思的题。话不多说,开始上题1: int i = 10; while(true){ if(--i > 0) System.out.print(i); }程序是结果是什么?是987654321吗?运行出来0987654321后运行一段时间会出现2^32-1之后继续
2015-03-26 10:50:53
396
转载 旅程
《旅程》玛丽·奥利弗(Mary Oliver)发表于:2012年04月03日 10:13转发4 玛丽·奥利弗(Mary Oliver, 1935-),当今美国女诗人,以书写自然著称。1935年9月10日生于俄亥俄州枫树岭,13岁开始写诗,1952年枫树岭高中毕业。1953年前往纽约,并与诗人诺玛米利认识并与诗人的姐姐成为好朋友。
2015-02-26 13:37:37
563
转载 ConcurrentHashMap之实现细节
ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。在这之前我对ConcurrentHashMap只有一些肤浅的理解,仅知道它采用了多个锁,大概也足够了。但是在经过一次惨痛的面试经历之后,我觉得必须深入研究它的实现。面试中被问到读是否要加锁,因为读写会发生冲突,我说必须要加锁,我和面试官也因此发生了冲突,结果可想而知。还是闲话少说,通过仔细阅读源代码
2015-02-09 17:33:13
280
原创 基准集合测试包(list,set,map)
个人总结:查看类源码时首先要看这个类的主要方法有哪些,如看arraylist时其主要方法是:construc method,插入,删除,查找,遍历,获取,判断是否存在,以及排序问题。所以要重点看这几个函数的实现原理。分析性能在各个功能环境下的不同表现,加以实际应用。截取自:《分布式java应用 基础与实践》
2015-02-05 10:15:31
552
转载 Java泛型编程
java泛型应用是java核心基础之一,从java 5开始引进泛型。如果你曾经使用过java Collection,那你已经算是接触过泛型了。在java Collection里使用泛型是一件很简单的事情,可泛型还具有很多你意想不到的作用。在深入了解泛型之前,首先来了解一下泛型的一些基本概念与原理。一、java 泛型引入 java泛型的应用可以提高的代码的复用性,同时泛型提供了
2015-01-28 16:32:21
334
原创 effective java-generic
As a quick review,Set is a parameterized type representing a set that can contain objects ofany type, Set is a wildcard type representing a set that can contain onlyobjects of some unknown t
2015-01-28 16:23:48
345
转载 JavaNIO
输入/输出:概念性描述I/O 简介I/O ? 或者输入/输出 ? 指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口。它对于任何计算机系统都非常关键,因而所有 I/O 的主体实际上是内置在操作系统中的。单独的程序一般是让系统为它们完成大部分的工作。在 Java 编程中,直到最近一直使用 流 的方式完成 I/O。所有 I/O 都被视为单个的字节的移动,通过一个称
2015-01-23 16:17:45
331
转载 TCP正常建立和关闭的状态变化
TCP正常建立和关闭的状态变化 TCP连接的建立可以简单的称为三次握手,而连接的中止则可以叫做 四次握手。 建立连接 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收
2015-01-22 14:45:28
274
转载 JDK里的设计模式
accepted+250You can find an overview of a lot of design patterns in Wikipedia. It also mentions which patterns are mentioned by GoF. I'll sum them up here and try to assign as much a
2015-01-22 10:33:29
296
转载 java代理模式
GOF上Proxy分类:远程代理(Remote Proxy)为一个对象在不同的地址空间提供局部代表。虚代理(Virtual Proxy)根据需要创建开销很大的对象。(考虑打开文档必须很迅速,因此我们在打开文档时应避免一次性创建所有开销很大的对象)保护代理(Protection Proxy)控制对原始对象的访问。保护代理用于对象应该有不同的访问权限的时候。智能索引(Smart Ref
2015-01-11 23:33:41
275
转载 Linux文件权限设置详解
一个用户、一个组我们来看一看 Linux 权限和所有权模型。我们已经看到每个文件属于一个用户和一个组。这正是 Linux 中权限模型的核心。您可以在 ls -l 清单中查看用户和组:$ ls -l /bin/bash-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /bin/bash在这个特殊的示例中
2015-01-07 14:15:11
410
转载 HashMap和Hashtable的区别
HashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题。HashMap的工作原理、ArrayList与Vector的比较以及这个问题是有关Java 集合框架的最经典的问题。Hashtable是个过时的集合类,存在于Java API中很久了。在Java 4中被重写了,实现了Map接口,所以自此以后也成了Java
2015-01-05 11:07:35
430
1
转载 解析SpringMVC源码中使用到的“适配器”模式
前言 关于SpringMVC初始化ContextLoader中的XMLWebApplicationContext,以及DispatcherServlet初始化等等,这样的原理 已经有N多的前辈和牛人总结过了, 我就不在这里重复轮子了。~ 废话 Spring源码还是层次十分分明的,只要了解原理,相信看起来也不会很困难, 但是它的精髓还有其中使用到的设计模式, “架
2015-01-01 12:45:37
519
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人