自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (5)
  • 收藏
  • 关注

转载 从头到尾彻底解析Hash表算法

说明:本文分为三部分内容,    第一部分为一道百度面试题Top K算法的详解;第二部分为关于Hash表算法的详细阐述;第三部分为打造一个最快的Hash表算法。------------------------------------ 第一部分:Top K 算法详解问题描述百度面试题:    搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度

2015-04-30 14:56:24 413

转载 大数据量的算法

第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法, 比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大 的几个)及相

2015-04-30 14:55:00 763

转载 探索并发编程(七)------分布式环境中并发问题

在分布式环境中,处理并发问题就没办法通过操作系统和JVM的工具来解决,那么在分布式环境中,可以采取一下策略和方式来处理:避免并发时间戳串行化数据库行锁统一触发途径避免并发 在分布式环境中,如果存在并发问题,那么很难通过技术去解决,或者解决的代价很大,所以我们首先要想想是不是可以通过某些策略和业务设计来避免并发。比如通过合理的时间调度,避开共享资源的存取冲突。另外,在并行任务设计上可

2015-04-30 14:48:16 333

转载 探索并发编程(六)------Java多线程性能优化

大家使用多线程无非是为了提高性能,但如果多线程使用不当,不但性能提升不明显,而且会使得资源消耗更大。下面列举一下可能会造成多线程性能问题的点:死锁过多串行化过多锁竞争切换上下文内存同步下面分别解析以上性能隐患死锁 关于死锁,我们在学习操作系统的时候就知道它产生的原因和危害,这里就不从原理上去累述了,可以从下面的代码和图示重温一下死锁产生的原因:public cl

2015-04-30 14:45:21 400

转载 探索并发编程(五)------Java多线程开发技巧

很多开发者谈到Java多线程开发,仅仅停留在new Thread(...).start()或直接使用Executor框架这个层面,对于线程的管理和控制却不够深入,通过读《Java并发编程实践》了解到了很多不为我知但又非常重要的细节,今日整理如下。不应用线程池的缺点 有些开发者图省事,遇到需要多线程处理的地方,直接new Thread(...).start(),对于一般场景是没问题的,但如果

2015-04-30 14:41:52 328

转载 探索并发编程(四)------Java并发工具

基于线程安全的一些原则来编程当然可以避免并发问题,但不是所有人都能写出高质量的线程安全的代码,并且如果代码里到处都是线程安全的控制也极大地影响了代码可读性和可维护性。因此,Java平台为了解决这个问题,提供了很多线程安全的类和并发工具,通过这些类和工具就能更简便地写线程安全的代码。归纳一下有以下几种:同步容器类并发容器类生产者和消费者模式 阻塞和可中断方法Synchronizer这些类

2015-04-30 14:38:41 336

转载 探索并发编程(三)------Java存储模型和共享对象

很多程序员对一个共享变量初始化要注意可见性和安全发布(安全地构建一个对象,并其他线程能正确访问)等问题不是很理解,认为Java是一个屏蔽内存细节的平台,连对象回收都不需要关心,因此谈到可见性和安全发布大多不知所云。其实关键在于对Java存储模型,可见性和安全发布的问题是起源于Java的存储结构。Java存储模型原理 有很多书和文章都讲解过Java存储模型,其中一个图很清晰地说明了其存储结构

2015-04-30 14:36:00 304

转载 探索并发编程(二)------写线程安全的Java代码

在写Java程序的时候,何时需要进行并发控制,关键在于判断这段程序或这个类是否是线程安全的。当多个线程访问一个类时,如果不用考虑这些线程在运行时环境下的调度和交替执行,并且不需要额外的同步,这个类的行为仍然是正确的,那么称这个类是线程安全的。我们设计类就是要在有潜在并发问题存在情况下,设计线程安全的类。线程安全的类可以通过以下手段来满足:不跨线程共享变量使状态变量为不可变的在任何访问状

2015-04-30 14:35:54 271

转载 探索并发编程(一)------操作系统篇

在多线程、多处理器甚至是分布式环境的编程时代,并发是一个不可回避的问题,很多程序员一碰到并发二字头皮就发麻,也包括我。既然并发问题摆在面前一个到无法回避的坎,倒不如拥抱它,把它搞清楚,决心花一定的时间从操作系统底层原理到Java的基础编程再到分布式环境等几个方面深入探索并发问题。先就从原理开始吧。并发产生的原因 虽然从直观效果上,处理器是并行处理多项任务,但本质上一个处理器在某个时间点只能

2015-04-30 14:34:25 329

转载 构建高并发高可用的电商平台架构实践

一、 设计理念  1.     空间换时间1)     多级缓存,静态化客户端页面缓存(http header中包含Expires/Cache of Control,last modified(304,server不返回body,客户端可以继续用cache,减少流量),ETag)反向代理缓存应用端的缓存(memcache)内存数据库Buffer、ca

2015-04-30 14:27:28 637

转载 Java并发性和多线程介绍

在过去单CPU时代,单任务在一个时间点只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个CPU,并交由操作系统来完成多任务间对CPU的运行切换,以使得每个任务都有机会获得一定的时间片运行。随着多任务对软件开发者带来的新挑战,程序不在能假设独占所有的CPU时间、所有的内存和其他计算机资源。一个好的程

2015-04-30 14:21:58 361

转载 Java创建线程安全的方法

首先来看一个问题:下面这个方法是线程安全的吗?如何才能让这个方法变成线程安全的?1public class MyCount {2  privatestatic int counter = 0;3 4  publicstatic

2015-04-30 14:20:00 400

转载 localStorage接口的使用心得

现在在移动端上的需求趋势是越来越多,因此在PC端上不是那么好派上场的功能接口,在移动端上是可以尽情地发挥了。这里分享一下localStorage接口的使用心得。一、localStorage兼容性两大平台的系统版本:Android from 2.0 on,Safari from 3.x on(限于设备条件不足,没有新身验证,从以下数据也可以放心使用)。对于大部分移动端用户

2015-04-30 14:14:33 1447

转载 Web前端的缓存机制(那些以代价换来的效率)

对于Web前端而言,cache可以说是无处不在,通常是2个环节之间,就会引入一个cache做为提升整体效率的角色。例如A和B两者之间的数据交换,为了提升整体的效率,引入角色C,而C被用于当做热点数据的存储,或者是某种中间处理的机制。也就是我们常常说的“空间换时间”,牺牲一部分代价,来换取整体效率的提升。那么我们一起来看看前端当中,有那些比较关键的缓存?它们又是怎样协调工作的

2015-04-30 14:13:13 5313

转载 mysql的表分区技术

一、概述当 MySQL的总记录数超过了100万后,会出现性能的大幅度下降吗?答案是肯定的,但是,性能下降>的比率不一而同,要看系统的架构、应用程序、还有>包括索引、服务器硬件等多种因素而定。当有网友问我这个问题的时候,我最常见的回答>就是:分表,可以根据id区间或者时间先后顺序等多种规则来分表。分表很容易,然而由此所带来的应用程序甚至是架构方面的改动工作却不>容小觑,还包括将来的扩展性等。

2015-04-30 14:08:04 284

转载 单点登录SSO的实现原理

单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞

2015-04-30 14:06:27 337

翻译 MongoDB, Cassandra, 和 HBase -- 三种NoSQL数据库比较

英语原文:http://www.infoworld.com/article/2848722/nosql/mongodb-cassandra-hbase-three-nosql-databases-to-watch.htmlHadoop获得了许多大数据应用的信誉,但实际情况是,NoSQL数据库是一直处于更加广泛部署和更广泛的发展中的技术。尽管选择Hadoop作为应用存储,相对来说更直

2015-04-30 14:05:20 1295

转载 Nginx的TCP负载均衡介绍

Nginx Plus的商业授权版开始具有TCP负载均衡的功能。从Nginx 1.7.7版本开始加入的,现在变成了一个商业收费版本,想要试用,需要在官网申请。也就是说,Nginx除了以前常用的HTTP负载均衡外,Nginx增加基于TCP协议实现的负载均衡方法。HTTP负载均衡,也就是我们通常所有“七层负载均衡”,工作在第七层“应用层”。而TCP负载均衡,就是我们通常所说的“四层负载均衡”,工作在“网

2015-04-30 14:02:47 607

转载 陈焕生:深入理解Oracle 的并行执行

摘要:Oracle并行执行是一种分而治之的方法。执行一个sql 时,分配多个并行进程同时执行数据扫描,连接以及聚合等操作,使用更多的资源,得到更快的sql 响应时间。并行执行是充分利用硬件资源,处理大量数据时的核心技术。Oracle并行执行是一种分而治之的方法。执行一个sql 时,分配多个并行进程同时执行数据扫描,连接以及聚合等操作,使用更多的资源,得到更快的sql 响应时间。并行执行

2015-04-30 13:59:04 1224

转载 徐汉彬:高并发Web服务的演变——节约系统内存和CPU

摘要:现在的Web系统面对的并发连接数在近几年呈现指数增长,高并发成为了一种常态,给Web系统带来不小的挑战。一味地通过增加机器来解决并发量的增长,成本是非常高昂的。结合技术优化方案,才是更有效的解决方法。【导读】 徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设。  一、越来越

2015-04-30 13:57:33 455

转载 大型网站系统架构的演化

前言    一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统架构是随业务扩展而完善出来的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如淘宝,要解

2015-04-30 13:39:00 320

转载 静行:FastJSON实现详解

摘要:“快”作为程序员追逐的终极目标之一,而FastJSON则很好的证明了这一特性。本期《问底》,静行将带大家见证它序列化和反序列化的实现过程,一起领略它的“快”感。还记得电影《功夫》中火云邪神的一句话:天下功夫,无坚不破,唯快不破。在程序员的世界中,“快”一直是大家苦苦修炼,竞相追逐的终极目标之一,甚至到了“不择手段”、“锱铢必较”的地步。一直使用json游离于各种编程语言和系统

2015-04-30 13:38:07 727

转载 李平:大型网站的灵魂——性能

摘要:大型网站打造并不是件容易的事情,即使是从小开始慢慢迭代。从本期《问底》开始,我们将为大家带来李平的大型网站打造系列,从理论和实践两个方面进行讲解。在前一篇随笔 大型网站系统架构的演化中,介绍了大型网站的演化过程,期间穿插了一些技术和手段,我们可以从中看出一个大型网站的轮廓,但想要掌握设计开发维护大型网站的技术,需要我们一步一步去研究实践。所以我打算写一个系列,从理论到实践讲述大型

2015-04-30 13:34:18 811

转载 徐汉彬:大规模网站架构的缓存机制和几何分形学

摘要:缓存机制简单总结可以说是空间换时间,被用于提升系统交互的效率。而有趣的是,这种缓存机制令人惊奇并且优美的遵循着“几何分形”的规律,也就是几何分形学中的“自相似性”。【导读】徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设。在过去的工作中,徐汉彬从事各类缓存建设和优化,遇到问题无数,从各

2015-04-30 13:32:30 486

转载 徐汉彬:亿级Web系统搭建——单机到分布式集群

摘要:随着数据暴增,单服务器开始疲于应对海量用户的访问。自本期《问底》,徐汉彬将带大家开启异地跨集群分布式系统打造,本次关注的重点则是架构从单机到分布式集群的转变。【导读】徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设。  大规模流量的网站架构,从来都是慢慢“成长”而来。而这个

2015-04-30 11:17:16 510

转载 Yao Yu:谈Twitter的百TB级Redis缓存实践

摘要:在Twitter工作的数年时间,Yao见证了缓存服务的扩展之路——从1个项目到上百项目的使用。为了支撑如此庞大的缓存体系,Twitter使用了成千上万台服务器,多个集群,以及过百TB内存。【编者按】文章内容是HighScalability创始人Todd Hoff基于Twitter工程师Yao Yu “Scaling Redis at Twitter”演讲的总结。在演讲中,Yao从

2015-04-30 11:14:27 708

转载 徐汉彬:Web系统大规模并发——电商秒杀与抢购

摘要:电商的秒杀和抢购,从技术的角度来说,会对Web系统产生巨大的考验。本期《问底》,徐汉彬将带大家关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因。【导读】徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设。  电商的秒杀和抢购,对我们来

2015-04-30 11:11:57 452

转载 26个提升java性能需要注意的地方

最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了。下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。1. 尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面

2014-05-23 14:23:25 433

转载 三种东西永远不要放到数据库里

改进你的系统的最好的方法是先避免做“蠢事”。 我并不是说你或你开发的东西“蠢”,只是有些决定很容易被人们忽略掉其暗含的牵连, 认识不到这样做对系统维护尤其是系统升级带来多大的麻烦。作为一个顾问,像这样的事情我到处都能见到,我还从来没有见过做出这样的决定的人有过好的结果的。图片,文件,二进制数据既然数据库支持BLOB类型的数据,把文件塞进BLOB字段里一定没有错了!?错,不是这样的! 别

2014-05-23 14:21:33 322

转载 一个合格的程序员应该读过哪些书

编者按:2008年8月4日,StackOverflow 网友 Bert F 发帖提问:哪本最具影响力的书,是每个程序员都应该读的?“如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本, 你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西。”很多程序员响应,他们在推荐时也写下自己的评语。 以前就有国内网友介绍这个程序员书单,不过都是推荐数

2014-05-23 14:19:53 401

转载 写sql语句的经验之谈

做管理系统的,无论是bs结构的还是cs结构的,都不可避免的涉及到数据库表结构的设计,sql语句的编写等。因此在开发系统的时候,表结构设计是否合理,sql语句是否标准,写出的sql性能是否优化往往会成为公司衡量程序员技术水平的标准。我们程序员不是dba,不需要时刻关注sql运行时间,想方设法优化表结构,存储空间,优化表读取速度等等,但是在开发系统时,时刻保持优良的写sql语句的作风是很有

2014-05-22 10:34:32 460

转载 用java调用oracle存储过程总结

1、什么是存储过程。存储过程是数据库服务器端的一段程序,它有两种类型。一种类似于SELECT查询,用于检索数据,检索到的数据能够以数据集的形式返回给客户。另一种类似于INSERT或DELETE查询,它不返回数据,只是执行一个动作。有的服务器允许同一个存储过程既可以返回数据又可以执行动作。2、什么时候需要用存储过程   如果服务器定义了存储过程,应当根据需要决定是否要用存储过程。存储过程

2014-05-22 09:56:47 446

转载 Oracle存储过程基本语法

存储过程   1  CREATE OR REPLACE PROCEDURE 存储过程名   2  IS   3  BEGIN   4  NULL;   5  END; 行1:   CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它;

2014-05-22 09:51:48 377

原创 写sql语句的经验之谈

做管理系统的,无论是bs结构的还是cs结构的,都不可避免的涉及到数据库表结构的设计,sql语句的编写等。因此在开发系统的时候,表结构设计是否合理,sql语句是否标准,写出的sql性能是否优化往往会成为公司衡量程序员技术水平的标准。 我们程序员不是dba,不需要时刻关注sql运行时间,想方设法优化表结构,存储空间,优化表读取速度等等,但是在开发系统时,时刻保持优良的写sql语句的作风是很有必...

2012-11-26 00:18:52 71

原创 基于jms使用ActiveMQ实现异步日志功能.消息持久到oracle 10g 数据库

import java.io.Serializable;import org.apache.commons.lang.builder.EqualsBuilder;import org.apache.commons.lang.builder.HashCodeBuilder;import org.apache.commons.lang.builder.ReflectionToStringB...

2012-11-22 00:19:18 95

原创 实战Queue

Queue实现的是点到点模型,在下面的例子中,启动2个消费者共同监听一个Queue,然后循环给这个Queue中发送多个消息,我们依然采用ActiveMQ。import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.JMSException;import javax.jms.Mes...

2012-11-22 00:17:06 96

原创 实战Topic

与Queue不同的是,Topic实现的是发布/订阅模型,在下面的例子中,启动2个消费者共同监听一个Topic,然后循环给这个Topic中发送多个消息。import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.JMSException;import javax.jms.Messa...

2012-11-22 00:16:42 135

原创 MessageListener

消息的消费者接收消息可以采用两种方式: 1、consumer.receive() 或 consumer.receive(int timeout); 2、注册一个MessageListener。 采用第一种方式,消息的接收者会一直等待下去,直到有消息到达,或者超时。后一种方式会注册一个监听器,当有消息到达的时候,会回调它的onMessage()方法。下面举例说明:M...

2012-11-21 15:58:55 438

原创 一个JMS例子

前一讲简单的介绍了一下JMS的基本概念, 这一讲结合一个例子让大家深入理解前一讲的基本概念. 首先需要做的是选择一个JMS提供者, 如果在JavaEE环境中可以不用考虑这些. 我们选择ActiveMQ, 官方地址: http://activemq.apache.org/. 网上有很多介绍ActiveMQ的文档。后面我会加一篇介绍ActiveMQ的文章。按照上一讲的这个简图, Co...

2012-11-21 15:56:42 84

原创 JMS基础

1. JMS基本概念 JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口简化企业应用的开发。它支持两种消息通信模型:点到点(point-to-point)(P2P)模型和发布/订阅(Pub/Sub)模型。P2P 模型规定了一个消息只能有一个接收者;Pub/Sub 模型允许一个消息可以有多个接收者。 对于点到点模型,消...

2012-11-21 15:48:11 69

ORACLE SQL 高级编程

ORACLE SQL 高级编程,是学习ORACLE SQL编程的最佳书籍,值得下载

2013-06-16

Oracle数据库精讲与疑难解析

好东西,了解的人都知道,就不用多说什么,大于20个字符其实挺烦的

2008-11-21

空空如也

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

TA关注的人

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