- 博客(162)
- 资源 (4)
- 收藏
- 关注
转载 浅析IO模型
也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,最后介绍了两种和高性能IO设计相关的设计模式(Reactor和Pr...
2018-03-23 14:50:53 462
转载 微博CacheService架构浅析
http://www.infoq.com/cn/articles/weibo-cacheservice-architecture/微博作为国内最大的社交媒体网站之一,每天承载着亿万用户的服务请求,这些请求的背后,需要消耗着巨大的计算、内存、网络、I/O等资源。而且因为微博的产品特性,节假日、热门事件等可能带来突发数倍甚至十几倍的访问峰值,这些都对于支撑微博的底层基础架构提出了比较严苛的要求,需要满...
2018-03-23 14:48:35 1664
转载 ActiveMQ与虚拟通道
郑重提示,本文转载自http://shift-alt-ctrl.iteye.com/blog/2065436 ActiveMQ提供了虚拟通道的特性(Virtual Destination),它允许一个逻辑通道(logical destination)映射成一个或者多个物理通道(physical destination);它可以非常灵活的解决"消息整合"方面的问题,它可以实现: 1...
2018-03-23 14:43:18 359
转载 RabbitMQ基础概念详细介绍
你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题。消息服务擅长于解决多系统、异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC)。本文将要介绍的RabbitMQ就是当前最主流的消息中间件之一。RabbitMQ简介AMQP,即Ad...
2018-03-23 14:41:17 311
转载 数据库建立索引的原则
使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的 值进行排序的一种结构,例如 employee 表的姓(lname)列。如果要按姓查找 特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。 索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集 合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。 索引提供指向存储...
2018-03-23 14:37:34 652 1
原创 Mac mongodb
mongodb启动 bin/mongod ----- waiting for connections on port 27017 表示等待连接即可以通过客户端(Robomongo)或程序连接了mongo shell bin/mongo localhost:~ javahongxi$ cd soft/mongodb-2.4.6/localhost:mongodb-2.4...
2018-03-23 14:33:37 320
原创 Mac OS终端提示符前缀”bogon”
像往常一样新打开一个终端,却发现一个很有意思的现象,以前的提示符的组成为:[机器名]:~[用户名]以前:YangGavin’s MacBook Pro:~ yanggavin$现在:bogon:~ yanggavin$最麻烦的是我本地用IDEA调试web应用,控制台会提示下面错误:Error: Exception thrown by the agent : java.net.MalformedUR...
2018-03-23 14:23:31 1765
转载 分布式事务综述(XA, TCC)
https://mp.weixin.qq.com/s?__biz=MzUzMzU5Mjc1Nw==&mid=2247483681&idx=1&sn=05845495c5ef33683addd98fffc72106&chksm=faa0eefbcdd767edbf46cea6f223b426e276dd4d9b19cce64f59387590818f5e4eb96c7...
2018-03-23 14:05:16 8317
原创 分布式事务简单处理
解决分布式事务最简单的方案就是向前或向后,即补充或回滚。业务逻辑有如下三步:调用A服务冻结金额调用B服务增加额度记录数据库进行到第2步失败 -> 写task,回滚第1步(通知A服务方去回滚)进行到第3步失败 -> 写task,从A/B服务处同步数据至数据库还有一种方案就是写task,转化为本地事务,由task去执行上述三步,失败则重试task,当然,A/B服务都有幂等性处理。这种方案的...
2018-03-09 18:10:34 478
转载 支付宝分布式事务服务DTS
分布式事务服务 DTS二如何玩转 DTS,基本上使用 DTS 对发起方的配置要求会多一点。添加 DTS 的依赖NOTE: 发起方和参与方都需要添加依赖。如果使用 SOFA Lite,只需按照样例工程里的方式添加依赖:<dependency> <groupId>com.alipay.sofa</groupId> <artifactId>...
2018-03-09 18:09:03 1142
转载 Spring之@Configuration配置解析
1.简单的示例:@Configuration2 @EnableConfigurationProperties({DemoProperties.class})3 public class DemoConfiguration {4 5 @Bean6 public Book getBook(){7 return new Book();8 }9...
2018-03-09 18:08:12 1088
转载 使用Jenkins配置SpringBoot的自由成长之路
一、相关阅读1、使用Jenkins配置Git+Maven的自动化构建http://blog.csdn.net/xlgen157387/article/details/503533172、Jenkins部署Maven多环境项目(dev、beta、prod)的参数设置3、使用Generic Webhook Trigger插件实现Jenkins+WebHooks(码云)持续集成4、使用Generic W...
2018-03-09 18:03:23 5949 4
转载 简单理解token机制
什么是tokentoken的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。简单token的组成;uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进...
2018-03-09 18:02:09 8049 1
转载 【转】Tomcat中Connector常用配置(备忘)
本文转载自http://deep.hongxi.orgTomcat中server.xml有些配置信息是需要我们了解的,最起码知道如何进行简单的调试. <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 默认情况下配置信息是...
2018-03-09 17:50:36 1636
原创 Spring对循环依赖的处理
https://github.com/javahongxi3.2.1 什么是循环依赖 循环依赖就是循环引用,就是两个或多个Bean相互之间的持有对方,比如CircleA引用CircleB,CircleB引用CircleC,CircleC引用CircleA,则它们最终反映为一个环。此处不是循环调用,循环调用是方法之间的环调用。如图3-5所示: 图3-5 循环引用 ...
2018-03-09 17:50:33 1586 1
转载 JVM宕机分析
一、能够引起JVM崩溃的常见原因有: 线程阻塞 CPU 使用率过高 JVM Crash 堆内存不足 类装载 Java虚拟机自身的Bug JDK与服务器(CPU、内存、操作系统)的兼容性 内存溢出 二、日志文件 hs_err_pid.log,致命错误出现的时候,JVM生成了hs_err_pid.log这样的文件,其中包含了虚拟机...
2018-03-09 17:50:30 3049
原创 Servlet3.1规范翻译 - 注解和可插拔性
https://github.com/javahongxi本文转载自kaitao.hongxi.org注解和可插拔性本章讨论Servlet 3.0规范定义的注解和使web应用内使用的框架和库能够可插拔的增强。8.1 注解和可插拔性在web应用中,使用注解的类仅当它们位于WEB-INF/classes目录中,或它们被打包到位于应用的WEB-INF/lib中的jar文件中时它们的注...
2018-03-09 17:50:27 261
原创 Servlet3.1规范翻译 - 应用生命周期事件
https://github.com/javahongxi本文转载自kaitao.hongxi.org应用生命周期事件11.1 介绍应用事件设施给Web应用开发人员更好地控制ServletContext、HttpSession和ServletRequest的生命周期,可以更好地代码分解,并在管理Web应用使用的资源上提高了效率。 11.2 事件监听器应用事件监听器是实现...
2018-03-09 17:50:23 180
原创 tomcat源码分析-http请求在Container中的执行路线
在CoyoteAdapter的service方法中,主要干了2件事: 1. org.apache.coyote.Request -> org.apache.catalina.connector.Request extends HttpServletRequest org.apache.coyote.Response -> org.apache.cata...
2018-03-09 17:50:20 275
原创 servlet3.1规范翻译 - 会话(session)
https://github.com/javahongxi 查看servlet-api.jar就可以知道Servlet规范大概包含哪些内容,下面翻译下规范中的“会话”,即HttpSession。 第7章 会话 超文本传输协议(HTTP)被设计为一种无状态协议。为构建有效的Web应用,必须把来自特定客户端的请求相互关联起来。随时间的推移,演变出了许多...
2018-03-09 17:50:17 175
原创 Servlet3.1规范翻译 - Servlet接口
https://github.com/javahongxiServlet接口是Java Servlet API的核心抽象。所有Servlet类必须直接或间接的实现该接口,或者更通常做法是通过继承一个实现了该接口的类从而复用许多共性功能。目前有GenericServlet和HttpServlet这两个类实现了Servlet接口。大多数情况下,开发者只需要继承HttpServlet去实现自己的Se...
2018-03-09 17:50:14 270
原创 Servlet3.1规范翻译 - Web应用
https://github.com/javahongxi本文转载自kaitao.hongxi.orgWeb应用一个Web应用是由许多servlet、HTML页面、类和其他资源组成的集合,这些资源组成了一个运行在Web服务器上的完整应用程序。Web应用程序能够捆绑和运行在来自不同提供商的不同容器上。10.1 Web服务器中的Web应用程序在Web服务器中Web应用程序的根目...
2018-03-09 17:50:11 212
原创 Servlet3.1规范翻译 - Servlet Context
https://github.com/javahongxi本文转载自kaitao.hongxi.org4.1 ServletContext接口介绍ServletContext(Servlet上下文)接口定义了servlet运行在的Web应用的视图。容器供应商负责提供Servlet容器的ServletContext接口的实现。Servlet可以使用ServletContext对象记录事件...
2018-03-09 17:50:08 249
原创 Spring component-scan类扫描加载过程
https://github.com/javahongxi 有朋友最近问到了spring加载类的过程,尤其是基于annotation注解的加载过程,有些时候如果由于某些系统部署的问题,加载不到,很是不解!就针对这个问题,我这篇博客说说spring启动过程,用源码来说明,这部分内容也会在书中出现,只是表达方式会稍微有些区别,我将使用spring 3.0的版本来说明(虽然版本有所区别,...
2018-03-09 17:50:05 3265 1
原创 Spring 框架的设计理念与设计模式分析
https://github.com/javahongxi Spring作为现在最优秀的框架之一,已被广泛的使用并有很多文章分析它。本文将从另外一个视角试图剖析出Spring框架的作者设计Spring框架的骨骼架构的设计理念,有那几个核心组件?为什么需要这些组件?它们又是如何结合在一起构成Spring的骨骼架构?Spring的AOP特性又是如何利用这些基础的骨骼架构来工作的?Spring...
2018-03-09 17:50:02 267
原创 ssh key的生成和使用
一、检查是否已经存在ssh key 通常sshkey会默认生成在用户家目录下,所以查看家目录下是否存在.ssh 文件夹,以及是否存在相关目录就行。(~/.ssh/id_rsa) 二、生成key 在控制台输入: ssh-keygen -t rsa Note: -t 的意思是选择kye的type。分别有 RSA 和 DSA 两种。具体请自行百度...
2018-03-09 17:49:59 2008
原创 shell脚本入门
建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行)。 如同其他语言一样,通过我们使用任意...
2018-03-09 17:49:56 179
原创 Spring之FactoryBean
首先要分辨BeanFactory 与 FactoryBean的区别, 两个名字很像,所以容易搞混。BeanFactory: 以Factory结尾,表示它是一个工厂类,是用于管理Bean的一个工厂。FactoryBean: 以Bean结尾,表示它是一个Bean,不同于普通Bean的是,它是实现了FactoryBean<T>接口的Bean,根据该Bean的Id从BeanFacto...
2018-03-09 17:49:53 147
原创 Java8:Lambda表达式增强版Comparator和排序
1、概述在这篇教程里,我们将要去了解下已经发布的JDK8中的Lambda表达式——特别是怎样使用它来编写Comparator和对集合(Collection)进行排序。首先,让我们先定义一个简单的实体类:public class Human { private String name; private int age; public Human() {...
2018-03-09 17:49:50 6950 1
转载 【转】ActiveMQ中Producer特性详解
http://shift-alt-ctrl.iteye.com/blog/2034440 (deep.hongxi.org) 前言 从本文中你可以得到如下几个问题的解答: 1) 设定消息的时间戳有什么作用 2) 消息的timeToLive与过期原理 3) Producer同步、异步发送消息,以及调优 4) 消息priority与顺...
2018-03-09 17:49:44 304
转载 【转】ActiveMQ中Consumer特性详解与优化
http://shift-alt-ctrl.iteye.com/blog/2035321 (deep.hongxi.org) 前言 从本文中你可以了解到如下内容: 1) consumer端消息消费的模型,session的运作机制 2) 如果提升broker和consumer端消息消费的速率 3) selector,group,exclusive...
2018-03-09 17:49:37 488
原创 简述Zookeeper作注册中心
Zookeeper的数据模型很简单,有一系列被称为ZNode的数据节点组成,与传统的磁盘文件系统不同的是,zk将全量数据存储在内存中,可谓是高性能,而且支持集群,可谓高可用,另外支持事件监听。这些特点决定了zk特别适合作为注册中心(数据发布/订阅)。不过要注意网络闪断引发的节点摘除问题。 Zookeeper注册中心 (+) (#) ...
2018-03-09 17:49:34 289
原创 tomcat源码分析-Connector初始化与启动
一个应用应用服务器的性能很大程度上取决于网络通信模块的实现,因而Connector模块对于tomcat来说是重中之重。从tomcat5开始,默认的连接器实现为Coyote实现(orag.apache.tomcat:tomcat-coyote:7.0.57),本文基于coyote实现会回答如下两个问题: 一个http请求是怎么被tomcat监听到的,会有那些处理; ajp协...
2018-03-09 17:49:31 633
原创 栈和局部变量
Java栈概述 记得当初我学习java时,常常听见身边的朋友说:“你要记住,当new一个对象时,对象的引用存放在栈里,而对象是存放在堆里的”。当时,听到这句教导时,脑海里立即出现栈的模型——里面存的仅仅是个引用。最近,看了下《深入JVM》,才发现,原来栈并不是我想象的那么简单,它和我想象中的那个栈的结构差别非常大。 每当...
2018-03-09 17:49:25 1227
原创 排查Java线上服务故障的方法和实例分析
前言 作为在线系统负责人或者是一个技术专家,你可能刚刚接手一个项目就需要处理紧急故障,或者被要求帮忙处理一些紧急的故障,这个时候的情景是: (1)你可能对这个业务仅仅是听说过,而不怎么真正了解; (2)你可能没有这个故障的详细信息,比如可能仅仅是有使用方反馈服务中断了10分钟; (3)你对代码细节还没有仔细研究过。 这个时候该怎么解决问题呢?根据以前的经验,工程师们常...
2018-03-09 17:49:22 282
原创 Java 理论与实践: 正确使用 Volatile 变量
Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。 Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 sy...
2018-03-09 17:49:19 138
原创 高并发系统之HTTP缓存
[京东技术]本文转载自kaitao.hongxi.org, 转载务必声明。 简介最近遇到很多人来咨询我关于浏览器缓存的一些问题,而这些问题都是类似的,因此总结本文来解答以后遇到类似问题的朋友。 因本文主要以浏览器缓存场景介绍,所以非浏览器场景下的一些用法本文不会介绍,而且本文以chrome为测试浏览器。 浏览器缓存是指当我们使用浏览器访问一些网站页面或者http服...
2018-03-09 17:49:16 290
原创 如何创建线程
在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程。当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够融会贯通使用的,需要在实践中不断积累。由于并发肯定涉及到多线程,因此在进入并发编程主题之前,我们先来了解一下进程和线程的由来,这对后面对并发编程的理解将会有很大的帮助。 下面是本...
2018-03-09 17:49:13 749
原创 Redis 的几种数据结构&amp;五种数据类型对象
先看几种数据结构通过分析底层的数据结构,学习如何根据场景选型和设计 1,简单动态字符串 redis使用的字符串SDS有别于C语言中的字符串 a, 结构 free字段为已分配但未使用的空间 len为已使用的空间(不计入'\0') buf为char数组 b, 与C字符串区别 redis的字符环结构可以理解为将...
2018-03-09 17:49:10 878
原创 链表反转
链表的反转是常见的面试题目。本文总结了2种方法。1 定义单链表node的数据结构定义如下:class ListNode { int val; ListNode next; ListNode(int x) { val = x; next = null; }}2 方法1:就地反转法2.1 思路把当前链表的...
2018-03-09 17:49:04 182
Java生态研究(Spring Boot + Redis + Dubbo + RocketMQ)
2018-09-02
javahongxi的技术博客
2017-11-05
研究各种Java技术(Springboot+Redis+Dubbo+Rocketmq) 京东技术 www.toutiao.im
2017-09-12
京东核心技术详解 www.toutiao.im
2017-01-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人