自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

psiitoy的专栏

温暖的大狗

转载 [转]MySQL的优化(二) —— SQL语句优化

一、EXPLAIN做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划。下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据 type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别 key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式 key_len列,索引长度 rows列,扫描行数。该值是个预估值 extra列,详细说明。注意常见的不太友好的值有:Using file

2020-06-21 20:23:34 59

转载 [转]云原生概述

1. 什么是云原生1.1 CNCF组织在讲云原生之前,我们先了解一下CNCF,即云原生计算基金会,2015年由谷歌牵头成立,基金会成员目前已有一百多企业与机构,包括亚马逊、微软。思科等巨头。cncf目前CNCF所托管的应用已达14个,下图为其公布的Cloud Native Landscape,给出了云原生生态的参考体系。Cloud Native Landscape1.2 云原生CNCF给出了云原生应用的三大特征:容器化封装:以容器为基础,提高整体开发水平,形成代.

2020-06-12 23:43:16 35

转载 每月改掉一个坏习惯,遇见更好的自己

每月改掉一个坏习惯,遇见更好的自己by 用时间酿酒-1-有人说,人生不过是无数习惯的总和。查尔斯·杜希格在《习惯的力量》中写道:「人每天的活动中,有超过40%是习惯的产物,而不是自己主动的决定。虽然每个习惯的影响相对来说比较小,但是随着时间的推移,这些习惯综合起来却对我们的人生有着巨大的影响。」甚至可以说,一个人习惯的优劣

2017-09-20 10:11:34 719

转载 谈技术资料的阅读方法

作为一名程序员,有几种获取知识的渠道,比如本文将要讨论的技术书籍、开源代码、学术论文。这些可能都不是什么秘密,但每个人都有不同的方式和习惯,也就对应有不同的效果和效率。本文就分享下自己这些年来的一些经验,不一定适用每个人,但也许每个人能有些小的触动和收获。1.技术书籍可能程序员都很少读书,因为这个时代就是这样的特点,读书的人在减少。大家更多地从工作日常获得知识,对于程序员来说比

2017-09-19 14:34:34 565

原创 [总结]jvm总结

jvm总结,涉及到JVM结构,垃圾回收,类加载机制等。一、JVM简介1.1 结构概括下面分别给出中-英文的结构图如上图所示,首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀), 然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。在整个程序执行过程中, JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这

2017-09-19 10:38:49 1273 1

转载 每天一个linux命令目录

开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令。学习的主要参考资料为:  1.《鸟哥的linux私房菜》  2.http://codingstandards.iteye.com/blog/786653  3.linux命令五分钟系列   4.其他互联网资料,google,baidu等搜索引擎一. 文件目录操作命令:     1.

2017-09-06 17:39:19 566 1

转载 日志结构的合并树 The Log-Structured Merge-Tree

近年来,随着互联网数据的日益增长,管理分布式数据需求的日益增加,Bigtable[1]等一系列NoSQL数据库开始涌现。Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据,其在提供Tablet服务时使用内存中的memtable和GFS[2]中的SSTable来相互配合着来存储数据更新,其中存储和更新的方法与日志结构的合并树[3](Log-Structured Merge

2017-09-04 18:21:40 522 1

转载 NoSql中的B-tree、B+tree和LSM-tree

首先来回答一个问题:为什么在磁盘中要使用b+树来进行文件存储呢?原因还是因为树的高度低得缘故,磁盘本身是一个顺序读写快,随机读写慢的系统,那么如果想高效的从磁盘中找到数据,势必需要满足一个最重要的条件:减少寻道次数。我们以平衡树为例进行对比,就会发现问题所在了:先上个图 这是个平衡树,可以看到基本上一个元素下只有两个子叶节点  抽象的来看,树

2017-09-01 16:42:52 360 1

转载 zookeeper核心原理(选举)

1、前述上篇文章《hadoop系列:zookeeper(1)——zookeeper单点和集群安装》(http://www.lai18.com/content/599370.html)我们介绍了zookeeper的两种安装方式,相信您的测试机或者VM上面已经有了一个可用的zookeeper环境了。本文是zookeeper讲解的第二篇文章,我们主要介绍zk中的重要基本原理。为后文给大家讲解zk的j

2017-09-01 15:23:57 378 1

原创 [总结]数据结构之jcf(java集合框架)

本文比较全面的集中整理,总结了java集合框架jcf(Java Collection Framework)。一、前言1.1 数据结构分类数据元素相互之间的关系称为结构。有四类基本结构:集合、线性结构、树形结构、图状结构。1) 集合结构: * 一组对象,无其他特点。 2) 线性结构: * 元素之间存在一对一关系常见类型有: 数组,链表,队列,栈。 它们之间在操作上有所区别.例如:链表可在

2017-09-01 13:47:00 750 2

转载 ActorLite:一个轻量级Actor模型实现(下)

ActorLite:一个轻量级Actor模型实现(下)2009-05-16 17:52 by 老赵, 22867 visits在上一篇文章中,我们实现了一个简单的Actor模型。如果要构建一个Actor,便只是简单地继承Actor类型并实现其Receive方法即可。在上次文章的末尾,我们使用C#演示了该Actor模型的使用。不过现在我们将尝试一下F#。C#使用Actor模型的缺

2017-08-25 10:25:19 289

转载 ActorLite:一个轻量级Actor模型实现(中)

ActorLite:一个轻量级Actor模型实现(中)2009-05-14 09:29 by 老赵, 25714 visits从上一篇文章的反响来看,似乎大家对于这一话题并没有太大兴趣。而这篇文章将会为大家带来一个简单但完整的Actor模型实现。此外,在下一篇文章中……可能会出现一些让您觉得有趣的东西。:)任务分配逻辑如上文所述,这次要实现的是一个非常简单的Actor模型,

2017-08-25 10:24:22 299

转载 ActorLite:一个轻量级Actor模型实现(上)

Actor模型Actor模型为并行而生,具Wikipedia中的描述,它原本是为大量独立的微型处理器所构建的高性能网络而设计的模型。而目前,单台机器也有了多个独立的计算单元,这就是为什么在并行程序愈演愈烈的今天,Actor模型又重新回到了人们的视线之中了。Actor模型的理念非常简单:天下万物皆为Actor,Actor之间通过发送消息进行通信。Actor模型的执行方式有两个特点:每

2017-08-25 10:21:55 394

转载 Spark为何使用Netty通信框架替代Akka

转自:http://www.aboutyun.com/thread-21115-1-1.html问题导读:1. spark 如何在1.6.0之后使用Netty替代了Akka?2. Spark Network Common怎么实现?3. BlockTransfer 与 Shuffle 之间的联系?4. Akka 实现原理是什么?解决方案:一

2017-08-24 15:48:54 9168

转载 防雪崩利器:熔断器 Hystrix 的原理与使用

前言分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况, 这种现象被称为服务雪崩效应. 为了应对服务雪崩, 一种常见的做法是手动服务降级. 而Hystrix的出现,给我们提供了另一种选择.服务雪崩效应的定义服务雪崩效应是一种因 服务提供者 的不可用导致 服务调用者 的不可用,并将不可用 逐渐放大 的过程.如果所示:上图中, A为服务提供者, B

2017-08-10 17:27:53 271

转载 Elasticsearch源码分析十四--搜索类型

简介query_then_fetchquery_and_fetchdfs_query_and_fetchdfs_query_then_fetchcountscan简介Elasticsearch允许通过指定搜索类型来选择查询在内部如何处理。不同的搜索类型适合不同的情况;可以只在乎性能,但有时查询的关联性可能是最重要的因素。使用search_type请求参数指定搜索类型,其各种取值介绍

2017-07-05 18:07:48 279

转载 如何在IDE中运行elasticsearch

现在插播一篇,之前还一直没有源码跑过Elasticsearch,如果想调试Elasticsearch,或是对它做一些修改,那么就需要在IDE中将之在本地跑起来,不像直接下载的包,对于源码的运行还需要一些额外的注意。本人是不习惯用Eclipse的,一直使用的是Intelli IDEA,对于使用Eclipse的同学,大家是可以类比的。那我们就直接从源码的main函数开始来运行,main的位置其

2017-06-20 16:46:21 800

转载 elasticsearch源码分析之java客户端

本文所说的java客户端主要只是讲解一下用于插数据的client的原理,我们都知道往ES发数据有三种protocol分别是node、http和transport;其实对于其他client而言最终都是使用的http;而java是可以使用node和transport的,node方式一般很少用,所以我们只探究transport client,那么我们且来看看吧。发送端例子对于java c

2017-06-20 14:43:08 467

转载 Elasticsearch之client源码简要分析

问题让我们带着问题去学习,效率会更高1  es集群只配置一个节点,client是否能够自动发现集群中的所有节点?是如何发现的?2  es client如何做到负载均衡?3  一个es node挂掉之后,es client如何摘掉该节点?4  es client node检测分为两种模式(SimpleNodeSampler和SniffNodesSampler)

2017-06-16 17:37:01 480

转载 elasticsearch源码分析之使用Guice进行依赖注入与模块化系统

elasticsearch使用google开源的依赖注入框架guice,这个项目号称比spring快100倍,具体性能没有测试过,不过由于其代码比较简洁,比spring快很有可能,是不是快那么多就不知道了。先介绍下guice的基本使用方法。elasticsearch是直接把guice的源码放到自己的包内(es把很多开源项目的代码都直接集成到自己项目中,省得依赖一堆的jar包,也使es的jar包

2017-06-15 21:35:40 1981

转载 elasticsearch源码分析之启动过程

最近开始广泛的使用elasticsearch,也开始写一些java代码了,为了提高java代码能力,也为了更加深入一点了解elasticsearch的内部运作机制,所以开始看一些elasticsearch的源码了。对于这种广受追捧的开源项目,细细品读一定会受益匪浅,所以我会尽可能地细分成很多部分,下面我们从启动过程开始!首先从main开始,从start脚本可以看出,从org.elastic

2017-06-15 21:28:02 494

原创 [分享]浅谈分布式数据库

文章集中整理总结mysql分库分表开源产品,分布式数据库的设计,以及实际应用案例等相关内容,部分附上本文作者实际应用过程中的理解。本文感谢sjdbc,mycat,姜承尧,林涛等文章提供的精彩介绍。先抛出两个问题1 基本概念1 谈数据库分片需要首先确定以下概念2 分片1 水平拆分垂直拆分都是什么2 为什么分表3 为什么分库4 分布式事务5 小结6 如何自己实现分库分表7 SO不需

2017-06-14 10:50:36 31421 4

原创 [案例]如何异构一个数十亿级别的数据库

本文记录工作中一次异构数十亿级别数据库的过程,数据源为mysql,目标介质为elasticsearch。1 我们能利用的资源1 源库是别人库存的数据分为ABC三种类型的库存模型需要将三种类型的模型整合成一中通用库存模型方便我方商家做业务2 D为库存占用订单详情也要异构一份非重点3 ABCD均做了分库分表A16个库4096张表B1512C1256D810244 数据总量在数十亿级别5 不影

2017-06-14 10:43:18 2320

原创 [分享]浅谈电商库存模型

本文讨论内容不包含秒杀,仅仅是最普遍的库存模型而已,重点讨论如何避免超卖,少卖。目录 1) 基本概念 2) 分布式事务简述 3) 库存模型1、 基本概念1.1 超卖实际库存已经为0,但是依旧卖出去了。可能导致商家无货可发。1.2 少卖明明有货,但是库存被锁定,导致商家货卖不出去。2、 分布式事务简述2.1 消息事务+最终一致性 所谓的消息事务就是基于消息中间件的两阶段提交,本质上是对消

2017-06-14 10:27:52 6245 1

原创 [集群搭建]记录使用docker搭建elasticsearch集群

记录使用docker搭建elasticsearch2.4.5集群1、 环境介绍本文运行环境 ubuntu16.04 + docker17.05 + 官网上下载的elasticsearch2.4.5,另外docker环境为openjdk:8-jre-alpine。(使用alpine的原因就是没有太多不必要的组件和命令,docker内部也不需要太多组件)1.1 ubuntu$ cat /proc/ver

2017-06-14 10:23:49 9134 4

原创 [总结]HEXO的使用

本文将总结性的介绍如何建立自己的github.io博客,后续会持续补充,进阶。感谢baixin提供的参考文章。技术选型为github+hexo+idea,首先最简单的阐述下这个东西都干嘛的1、 技术选型1.1 github免费空间挂载网站。(这个好理解,提供username.github.io直接可以访问)发布网站。(将hexo生成的网站推送到username.github.io上)版本控制。

2017-06-14 10:18:50 317

原创 [总结]git总结

文章简要记录部分常用git命令。本文感谢廖雪峰提供的详细git教程。1 自报家门2 查看版本信息3 查看提交日志4 查看操作日志5 回滚版本6 撤销更改7 关联远程仓库8 把本地库的所有内容推送到远程库上9 创建分支10 合并分支11 暂存分支12 多人协作13 创建标签14 配置别名15 不小心提交错了不想纳入版本管理的文件gitignore不起作用16 运用shh

2017-06-14 10:15:56 305

原创 Mysql 客户端连不上服务器,以及mongoVue连不上mongo问题解决

1.mysql处理/etc/mysql/my.cnf 的bind-address 从127.0.0.1 改成 0.0.0.0/etc/init.d/mysql restart 重启服务2.mongo处理/etc/mongodb.conf bindip 改成 0.0.0.0sudo service mongodb restart

2016-02-19 09:13:06 1041

原创 3矿5基地流程记录

1.o9d 220左右矿下狗池。(宿主出的同时第9个农民造) 1宿主探路口 1宿主探对点 农民出去探路近点2.补3农民 8+3 =11 人口,11农民开分矿(藏或者堵路口尽量不要被干扰)3.出去探路的农民看到p位置马上开三矿(千万不能死,p单兵营速科技也可3矿5基地)4.6狗后补1农到14人口 马上气矿,气矿和3基地几乎同时下。5.6狗冲p一波,对方2bc或者卡位比较好坚决不冲,单

2016-01-07 16:29:58 877

转载 Linux IO 多路复用是什么意思,一直没弄明白?

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:罗志宇链接:http://www.zhihu.com/question/32163005/answer/55772739来源:知乎这个还是很好说清楚的。假设你是一个机场的空管, 你需要管理到你机场的所有的航线, 包括进港,出港, 有些航班需要放到停机坪等待,有些航班需要去登机口接乘客。

2015-12-31 17:07:11 1151

转载 Java初学者都必须理解的六大问题

Java初学者都必须理解的六大问题2012-03-01 13:17 两颗番茄 两颗番茄的博客 字号:T | T这些都是初学Java经常出现的常见问题,虽然很多大家都是懂得,但是很多人通常都是概念不清。好了,下面就让我们来深入这些基础的问题。AD:【线下活动】三大新锐HTML 5企业汇聚51CTO—大话移动前端技术问题一:我声明

2015-11-05 17:27:02 398

转载 java自带线程池和队列详细讲解

Java线程池使用说明一简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。二:线程池线程池的作用:线程池作用就是

2015-11-05 17:20:29 351

转载 浅析Java抽象类和接口的比较

abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。 abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract class和interface的选择显得比较随意。其实,两者之间还是

2015-11-05 15:07:05 349

转载 TCP/IP、Http、Socket的区别

网络由下往上分为  物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。  通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层,  三者从本质上来说没有可比性,  socket则是对TCP/IP协议的封装和应用(程序员层面上)。  也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,

2015-10-29 16:53:13 315

转载 Java中Runnable和Thread的区别

在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。AD:【线下活动】三大新锐HTML 5企业汇聚51CTO—大话移动前端技术在java中

2015-10-27 17:26:58 256

转载 jmap命令(Java Memory Map)

jmap命令(Java Memory Map)2012-03-02 13:52 fenglibing fenglibing的博客 字号:T | Tjmap命令:打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。AD:【线下活动】三大新锐HTML 5企业汇聚51CTO—大话移动前端技术

2015-10-22 14:15:22 310

转载 Actor 并发模型 & "不要通过共享内存来通信,而应该通过通信来共享内存"

Actor 并发模型 & "不要通过共享内存来通信,而应该通过通信来共享内存"Actors编程模型  Actors模型首先是由Carl Hewitt在1973定义, 由Erlang OTP (Open Telecom Platform) 推广,其消息传递更加符合面向对象的原始意图。隔离计算实体"Share nothing"

2015-10-13 17:22:40 1407

转载 Mybatis中配置Mapper的方法

Mybatis中配置Mapper的方法        在这篇文章中我主要想讲一下Mybatis配置文件中mappers元素的配置。关于基础部分的内容可以参考http://haohaoxuexi.iteye.com/blog/1333271。       我们知道在Mybatis中定义Mapper信息有两种方式,一种是利用xml写一个对应的包含Mapper信息的配置文件;另一种就是定

2015-10-10 16:23:27 296

转载 基于MyBatis3.0.6的基本操作介绍

每 一 个 MyBatis 的 应 用 程 序 都 以 一 个 SqlSessionFactory 对 象 的 实 例 为 核 心 。SqlSessionFactory本身是由SqlSessionFactoryBuilder创建的,一般而言,在一个应用中,一个数据库只会对应一个SqlSessionFactory,所以一般我们都把SqlSessionFactory定义成单例模式,或通过Spring等

2015-10-10 15:52:53 390

转载 Java模式(适配器模式)

今天看了下Java中的适配器模式,以下就来小做下总结和谈谈感想,以便日后使用。 首先,先来先讲讲适配器。适配就是由“源”到“目标”的适配,而当中链接两者的关系就是适配器。它负责把“源”过度到“目标”。举个简单的例子,比如有一个“源”是一个对象人,他拥有2种技能分别是说日语和说英语,而某个岗位(目标)需要你同时回说日语、英语、和法语,好了,现在我们的任务就是要将人这个“源”适配的这个

2015-10-10 14:14:54 271

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