- 博客(126)
- 收藏
- 关注
原创 消息队列
消息队列用过哪些 MQ,和其他 mq 比较有什么优缺点,MQ 的连接是线程安全的吗,你们公司的MQ 服务架构怎样的。根据实际情况说明我们公司用activeMQ 因为业务比较简单 只有转码功能,而amq比较简单如果是分布式的建议用kafkahttp://blog.csdn.net/sunxinhere/article/details/7968886MQ 系统的数据如何保证不丢失...
2019-03-28 09:35:42 1016
原创 操作系统-linux
操作系统Linux 系统下你关注过哪些内核参数,说说你知道的。Tcp/ip io cpu memorynet.ipv4.tcp_syncookies = 1#启用syncookiesnet.ipv4.tcp_max_syn_backlog = 8192#SYN队列长度net.ipv4.tcp_synack_retries=2#SYN ACK重试次数net.i...
2019-03-28 09:32:28 743
原创 java 基础-集合篇
简述 ConcurrentLinkedQueue LinkedBlockingQueue 的用处和不同之处。LinkedBlockingQueue 是一个基于单向链表的、范围任意的(其实是有界的)、FIFO 阻塞队列。ConcurrentLinkedQueue是一个基于链接节点的无界线程安全队列,它采用先进先出的规则对节点进行排序,当我们添加一个元素的时候,它会添加到队列的尾部,当我们获取...
2019-03-28 09:29:57 562
转载 less 命令
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的...
2018-10-22 18:13:44 9097
转载 配置别名
有没有经常敲错命令?比如git status?status这个单词真心不好记。如果敲git st就表示git status那就简单多了,当然这种偷懒的办法我们是极力赞成的。我们只需要敲一行命令,告诉Git,以后st就表示status:$ git config --global alias.st status好了,现在敲git st看看效果。当然还有别的命令可以简写,很多人都...
2018-10-10 10:28:49 296
转载 程序员必知的六种隔离技术
为了将我们的应用部署到服务器上,我们需要为其配置一个运行环境。从底层到顶层有这样的运行环境及容器: 隔离硬件:虚拟机 隔离操作系统:容器虚拟化 隔离底层:Servlet容器 隔离依赖版本:虚拟环境 隔离运行环境:语言虚拟机 隔离语言:DSL 实现上这是一个请求的处理过程,一个HTTP请求会先到达你的主机。如果你的主机上运行着多个虚拟机实例...
2018-09-03 15:26:32 5760
转载 网站转化率与漏斗模型
摘要:漏斗模型适用于网站中某些关键路径的转化率的分析,以确定整个流程的设计是否合理,各步骤的优劣,是否存在优化的空间等。试着去了解用户来你的网站的真正目的,为他们提供合理的访问路径或操作流程,而不是一味地去提高转化率。前段时间刚完成了一个分析网站流程的每个步骤的流失率,并用漏斗模型进行展示的需求,这里跟大家来分享一下。分析过程可以从以下三步展开:确定需要分析的访问路径或操作流程,收集数...
2018-09-02 10:21:38 3238
转载 大型网站架构系列:20本技术书籍推荐
学习是技术人员成长的基础,本次分享20本技术方面的书籍,这些书不是每一本都是经典,但是每一本都有其特点。以下20本大部分本人都看过,因此推荐给大家。(本次推荐的20本只是一个参考,比如像Head First,Java编程思想等经典书籍是大家都知道,因此不在推荐之列)本次分享大纲大型网站架构系列 分布式系统系列 BAT技术文学系列 架构设计系列 本次分享总结一、大型网站架构系列...
2018-08-30 09:58:49 450
转载 聚集索引和非聚集索引
聚集索引 一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。 聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。 聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一...
2018-08-30 09:33:00 159
转载 NSQ研究与实践
介绍最近在研究一些消息中间件,常用的MQ如RabbitMQ,ActiveMQ,Kafka等。NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,由bitly公司开源出来的一款简单易用的消息中间件。官方和第三方还为NSQ开发了众多客户端功能库,如官方提供的基于HTTP的nsqd、Go客户端go-nsq、Python客户端pynsq、基于Node.js的JavaScript...
2018-08-24 17:44:39 1121 1
转载 NSQ基本概念
核心概念在讨论NSQ如何在实践中使用前,先理解NSQ队列的架构原理是非常值得的。它的设计很简单,可以通过几个核心概念来理解。Topic ——一个topic就是程序发布消息的一个逻辑键,当程序第一次发布消息时就会创建topic。Channels ——channel组与消费者相关,是消费者之间的负载均衡,channel在某种意义上来说是一个“队列”。每当一个发布者发送一条消息到一个topi...
2018-08-24 17:42:11 10581
转载 nsq 优秀的消息队列
本文目录 [隐藏]1 nsqd : 2 nsqlookupd: 3 nsqadmin: 4 Topic 和 Channel 5 这里提下延时消息: 6 php和go的客户端的使用 7 php-nsq 延时pub简介NSQ是Go语言编写的,开源的分布式消息队列中间件,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。NSQ 具有分布式和去中心化拓扑结构,该结构具有无单...
2018-08-24 17:39:06 8092
转载 RocketMq事务消息
分布式事务微服务倡导将复杂的系统拆分为若干个简单、职责单一、松耦合的服务,可以降低开发难度,便于敏捷开发。而对大多数中小型公司来说,实施微服务架构面临以下困难:单体应用拆分为分布式系统后,应用间的通讯和故障处理机制变得复杂 微服务化后,一个简单的功能需要调用多个服务并操作多个数据库实现,数据一致性难以保障 大量的微服务,导致其测试、维护、部署变得困难为了保障微服务架构下数据的一致性,...
2018-08-23 16:50:14 1212
转载 分布式消息中间件-Rocketmq
简述 今天要给大家分享的是分布式消息中间件。消息中间件主要是实现分布式系统中解耦、异步消息、流量销锋、日志处理等场景,后面我也会结合一些场景进行探讨。现在生产中用的最多的消息队列有Activemq,rabbitmq,kafka,rocketmq等。 不过这个题目写的有点大。为什么这样说呢,因为虽然这样写,但实际上我这边是以Jms规范和rocket...
2018-08-23 16:37:44 525
转载 Elasticsearch常用操作和核心原理
最近有朋友问到Elasticsearch的一些问题,所以我这边重新总结了一些关于搜索引擎的底层原理、分布式文档系统、ES的并发控制。一、背景知识1、搜索的分类我们想要寻找某些信息的时候,一般会直接去百度、谷歌、搜歌、360搜索等,搜索分为垂直搜索、互联网搜索、IT系统的搜索。搜索,就是在任何场景下,找寻你想要的信息,这个时候,会输入一段你要搜索的关键字,然后就期望找到这个关键字相关的有...
2018-08-22 17:48:32 1629
转载 ElasticSearch入门 第三篇 索引
这是ElasticSearch 2.4 版本系列的第三篇:ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 ElasticSearch入门 第三篇:索引 ElasticSearch入门 第四篇:使用C#添加和更新文档 ElasticSearch入门 第五篇:使用C#查询文档 ElasticSear...
2018-08-22 16:19:19 297
转载 Hbase系统架构及数据结构
HBase中的表一般有这样的特点:1 大:一个表可以有上亿行,上百万列2 面向列:面向列(族)的存储和权限控制,列(族)独立检索。3 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。下面一幅图是Hbase在Hadoop Ecosystem中的位置。二、逻辑视图HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族(row fami...
2018-08-22 15:34:50 834
转载 HBase 的表结构
HBase 的表结构HBase 是一个NoSQL数据库,用于处理海量数据,可以支持10亿行百万列的大表,下面就了解一下数据是如何存放在HBase表中的关系型数据库的表结构为了更好的理解HBase表的思路,先回顾一下关系数据库中表的处理方式例如有一个用户表user_info,有字段:id、name、tel,表名和字段需要在建表时指定create table user_info (...
2018-08-22 15:06:11 624
转载 Hystrix 使用与分析
一:为什么需要Hystrix?在大中型分布式系统中,通常系统很多依赖(HTTP,hession,Netty,Dubbo等),如下图: 在高并发访问下,这些依赖的稳定性与否对系统的影响非常大,但是依赖有很多不可控问题:如网络连接缓慢,资源繁忙,暂时不可用,服务脱机等.如下图:QPS为50的依赖 I 出现不可用,但是其他依赖仍然可用. 当依赖I 阻塞时,大多数服务器的线...
2018-08-22 10:42:54 662
转载 hystrix原理
一、hystrix 产生背景微服务是解决复杂服务的一个方案,在功能不变的情况下,对一个复杂的单体服务分解为多个可管理的分支。每个服务作为轻量的子服务,通过RPC实现服务间的关联,将服务简单化。每个服务根据自己的需要选择技术栈,互不影响,方便开发、维护。例如S划分为a,b,c。微服务的好处是有效的拆分应用,实现敏捷开发和部署。微服务一系列优势下,也给微服务的管理和稳定性带来挑战,比如一个服务依...
2018-08-21 07:07:42 8320
转载 微服务架构:什么是微服务
解析微服务架构系列文章将分几篇描述微服务的定义、特点、应用场景、企业集成架构的演进以及微服务转型思路和技术决策考虑等内容,并以IBM技术为例介绍如何实现微服务架构转型。 为什么需要微服务架构 “微服务”架构是近期软件应用领域非常热门的概念。让我们先来看看传统IT架构面临的一些问题: 使用传统的整体式架构(Monolithic Architecture)应用开发系统,如CRM、...
2018-08-19 21:56:36 405
转载 阿里巴巴业务全解析:凭什么挣那么多?
今天来聊聊备受瞩目的阿里巴巴,看看阿里巴巴的业务都有哪些,涉及哪些行业,它的盈利模式是什么,收入的来源都有哪些,未来的业务战略是什么。一、 阿里业务板块阿里巴巴是国内最大的电商平台,位列中国互联网巨头“BAT”之一。2017年财年(2016.03~2017.03)收入已达到1583亿元,同比增长57%,5年复合增速51%。从2017财年起,阿里将其业务分为四大板块:(1)核心电商...
2018-08-16 10:07:12 12375 1
转载 Redis 分布式集群概述
一,高可用高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响。 停止服务的原因可能由于网卡、路由器、机房、CPU负载过高、内存溢出、自然灾害等不可预期的原因导致,在很多时候也称单点问题。(1)解决单点问题主要有2种方式:主备方式 这种通常是一台主机、一台或多台备机,在正常情况下主机对外提供服务,并把数据同步到备机,当主机宕机后,备机立刻开始...
2018-08-12 17:52:10 235
转载 Mysql索引为啥要用B+树?
我们都知道Mysql索引用的B+树作为数据结构,但是为啥呢?王侯将相宁有种乎,树有这么多,凭啥就是你B+树,我AVL树,红黑树,Trie树等表示不服。 不服先等着,我们看看树旋转。树旋转是在二叉树中的一种子树调整操作, 每一次旋转并不影响对该二叉树进行中序遍历的结果。AVL树 AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它...
2018-08-10 17:55:11 2418
转载 classloader机制研究-- 应用场景
本篇文章实际是<Dynamic class loading int the java virtual machine>的摘译,具体来讲是摘译了其中的第三部分<Applications of class loaders>。这个章节的题目翻译成中文的话应该是: class loaders的应用案例,主要是讲class loaders的两个重要应用场景。第一、重新装载类如...
2018-08-10 10:01:01 340
转载 java虚拟机内存溢出各种场景总结
java堆溢出java堆用于存储对象实例,只要不断地创建对象,并且保证gc roots到对象之间有可达路径来避免垃圾回收机制来清楚这些对象,那么在 对象到达最大堆的容量限制后就会产生内存溢出溢出。异常:java.lang.OutOfMemoryError: java heap space要解决这个区域的异常,首先要区分是出现了内存泄露(Memory Leak)还是内存溢出(Memory...
2018-08-10 09:19:10 208
转载 Java 非阻塞 IO 和异步 IO
本文将介绍非阻塞 IO 和异步 IO,也就是大家耳熟能详的 NIO 和 AIO。很多初学者可能分不清楚异步和非阻塞的区别,只是在各种场合能听到异步非阻塞这个词。本文会先介绍并演示阻塞模式,然后引入非阻塞模式来对阻塞模式进行优化,最后再介绍 JDK7 引入的异步 IO,由于网上关于异步 IO 的介绍相对较少,所以这部分内容我会介绍得具体一些。希望看完本文,读者可以对非阻塞 IO 和异步 IO...
2018-08-10 09:09:56 147
转载 数据库常见死锁原因及处理
数据库是一个多用户使用的共享资源,当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。在实际应用中经常会遇到的与锁相关的异常情况,当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就会出现死锁,严重影响应用的正常执行。 在数据库中有两种基本的...
2018-08-09 14:46:04 2182
转载 算法经典面试题整理(java实现)
以下从Java角度解释面试常见的算法和数据结构:字符串,链表,树,图,排序,递归 vs. 迭代,动态规划,位操作,概率问题,排列组合,以及一些需要寻找规律的题目。1. 字符串和数组字符串和数组是最常见的面试题目类型,应当分配最大的时间。关于字符串,首先需要注意的是和C++不同,Java字符串不是char数组。没有IDE代码自动补全功...
2018-08-07 17:04:33 317
转载 十分钟搞定时间复杂度(算法的时间复杂度)
我们假设计算机运行一行基础代码需要执行一次运算。int aFunc(void) { printf("Hello, World!\n"); // 需要执行 1 次 return 0; // 需要执行 1 次}那么上面这个方法需要执行 2 次运算int aFunc(int n) { for(int i = 0; i<n; i++...
2018-08-07 10:43:14 22860 4
转载 快速排序 快速搞定
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速排序...
2018-08-07 10:06:40 129
转载 Linux中的IO模型
IO模型 linux系统IO分为内核准备数据和将数据从内核拷贝到用户空间两个阶段。 这张图大致描述了数据从外部磁盘向运行中程序的内存中移动的过程。用户空间、内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟储存空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限...
2018-07-26 18:10:33 248
转载 JDBC层次结构和基本构成
前言 最近在研究Mybatis框架,由于该框架基于JDBC,想要很好地理解和学习Mybatis,必须要对JDBC有较深入的了解。所以便把JDBC 这个东东翻出来,老调重弹,好好总结一番,作为自己的笔记,也是给读者一个参考~~~本篇博文是我的上篇博文 老调重弹:JDBC系列 之 <驱动加载原理全面解析>的续文,主要梳理一下JDBC的层次结构和基本构成。以下是本文的组织内容(用...
2018-07-12 16:11:52 804
转载 TCP三次握手 四次挥手全过程
复杂点说TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机)ACK(acknowledgement 确认)PSH(push传送)FIN(finish结束)RST(reset重置)URG(urgent紧急)Sequ...
2018-07-12 11:43:25 154
转载 Spring中bean的生命周期
Spring 中bean 的生命周期短暂吗?在spring中,从BeanFactory或ApplicationContext取得的实例为Singleton,也就是预设为每一个Bean的别名只能维持一个实例,而不是每次都产生一个新的对象使用Singleton模式产生单一实例,对单线程的程序说并不会有什么问题,但对于多线程的程序,就必须注意安全(Thread-safe)的议题,防止多个线程同时存取共享...
2018-07-12 09:12:36 192
转载 AQS的原理浅析
本文是《Java特种兵》的样章,本书即将由工业出版社出版AQS的全称为(AbstractQueuedSynchronizer),这个类也是在java.util.concurrent.locks下面。这个类似乎很不容易看懂,因为它仅仅是提供了一系列公共的方法,让子类来调用。那么要理解意思,就得从子类下手,反过来看才容易看懂。如下图所示:图 5-15 AQS的子类实现这么多类,我们看那一个?刚刚提到过...
2018-07-06 14:37:46 6590
转载 LockSupport原理剖析
LockSupport 用法简介LockSupport 和 CAS 是Java并发包中很多并发工具控制机制的基础,它们底层其实都是依赖Unsafe实现。LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。LockSupport 提供park()和unpark()方法实现阻塞线程和解除线程阻塞,LockSupport和每个使用它的线程都与一个许可(permit)关联。permit相当于...
2018-07-06 11:38:33 5358
转载 彻头彻尾理解 LinkedHashMap
摘要: HashMap和双向链表合二为一即是LinkedHashMap。所谓LinkedHashMap,其落脚点在HashMap,因此更准确地说,它是一个将所有Entry节点链入一个双向链表的HashMap。由于LinkedHashMap是HashMap的子类,所以LinkedHashMap自然会拥有HashMap的所有特性。比如,LinkedHashMap的元素存取过程基本与HashMap基本...
2018-07-05 11:39:59 518
转载 一张图让你看懂JAVA线程间的状态转换
线程间的状态转换: 1. 新建(new):新创建了一个线程对象。2. 可运行(runnable):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。3. 运行(running):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。4. 阻塞(block...
2018-07-04 17:15:19 147
转载 java虚拟机跟踪调试参数
1.1 跟踪垃圾回收-读懂虚拟机日志Java的一大特色就是支持自动的垃圾回收(GC),但是有时候,如果垃圾回收频繁出现,或者占用了太长的CPU时间,就不得不引起重视。此时,就需要一些跟踪参数来进一步甄别垃圾回收器的效率和效果。最简单的一个GC参数是-XX:+PrintGC,使用这个参数启动Java虚拟机后,只要遇到GC,就会打印日志。如果需要更加详细的信息,则可以使用-XX:+PrintGCDet...
2018-07-04 15:39:03 685
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人