09 2018 档案

摘要:瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型,瀑布式开发是一种老旧的计算机软件开发方法。瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。 瀑布式的 阅读全文
posted @ 2018-09-30 17:15 kaleidoscopic 阅读(449) 评论(0) 推荐(0) 编辑
摘要:深入学习 Redis(1):Redis 内存模型 深入学习 Redis(2):持久化 深入学习 Redis(3):主从复制 深入学习 Redis(4):哨兵 深入学习 Redis(1):Redis 内存模型 深入学习 Redis(2):持久化 深入学习 Redis(3):主从复制 深入学习 Redi 阅读全文
posted @ 2018-09-29 11:45 kaleidoscopic 阅读(298) 评论(0) 推荐(0) 编辑
摘要:做容器的研究和容器化几年了,从最初对于容器的初步认识,到积攒了大量的容器迁移经验,并和客户解释了容器技术之后,发现原来对于容器的理解有大量的误解,而且容器并非虚拟机的替代,而是有十分具体的应用场景的。 第一部分:容器的理解误区 误区一:容器启动速度快,秒级启动 这是很多人布道容器的时候经常说的一句话 阅读全文
posted @ 2018-09-29 11:13 kaleidoscopic 阅读(867) 评论(1) 推荐(0) 编辑
摘要:介绍 架构的本质是管理复杂性,抽象、分层、分治和演化思维是我们工程师/架构师应对和管理复杂性的四种最基本武器。 最近团队来了一些新人,有些有一定工作经验,是以高级工程师/架构师身份进来的,但我发现他们大部分人思维偏应用和细节,抽象能力弱。所以作为团队技术培训的一部分,我整理了这篇文章,希望对他们树立 阅读全文
posted @ 2018-09-29 11:02 kaleidoscopic 阅读(715) 评论(0) 推荐(0) 编辑
摘要:本文由淘宝开放平台技术产品负责人@放翁_文初 撰写,它讲述了一个个冷冰冰产品背后的活生生的人了,也在讲述着一个码农的六年心路历程,“技术耐得住寂寞,低谷积累高峰冲刺,主动改变一切。” 10月13日,关于淘宝开放平台技术部分的分享看到有些同学留言说有这样的机会和环境是幸运的,的确在阿里这些年赶上了公司 阅读全文
posted @ 2018-09-29 10:32 kaleidoscopic 阅读(1155) 评论(4) 推荐(0) 编辑
摘要:在上篇《架构师画像》的文章中提到了自己在系统设计上犯过的一些错,觉得还挺有意义的,这篇文章就来回顾下自己近八年来所做的一些系统设计,看看犯的一些比较大的血淋淋的错误(很多都是推倒重来),这八年来主要做了三个基础技术产品,三个横跨三年的大的技术项目(其中有两个还在进行中),发现大的错误基本集中在前面几 阅读全文
posted @ 2018-09-29 10:01 kaleidoscopic 阅读(2296) 评论(1) 推荐(1) 编辑
摘要:Get请求 curl命令模拟Get请求: 1、使用curl命令: 2、使用wget命令: curl命令模拟Get请求携带参数(linux): 上述命令在linux系统,get请求携带的参数只到version=1,”&”符号在linux系统中为后台运行的操作符,此处需要使用反斜杠”\”转义,即: 或者 阅读全文
posted @ 2018-09-28 17:25 kaleidoscopic 阅读(144981) 评论(1) 推荐(11) 编辑
摘要:加密技术通常分为两大类:"对称式"和"非对称式"。 对称性加密算法:对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。 非对称算法:非对称式加密就是加密和解密所使用的不是同一个密钥, 阅读全文
posted @ 2018-09-28 09:59 kaleidoscopic 阅读(3689) 评论(0) 推荐(1) 编辑
摘要:前言 平时的工作中经常碰到很多疑难问题的处理,在解决问题的同时,有一些工具起到了相当大的作用,在此书写下来,一是作为笔记,可以让自己后续忘记了可快速翻阅,二是分享,希望看到此文的同学们可以拿出自己日常觉得帮助很大的工具,大家一起进步。 闲话不多说,开搞。 Linux命令类 tail 最常用的tail 阅读全文
posted @ 2018-09-27 20:41 kaleidoscopic 阅读(233) 评论(0) 推荐(0) 编辑
摘要:大部分的应用程序我们在部署的时候都会适当的添加监控,对于运行载体容器则更应该如此。kubernetes提供了 liveness probes来检查我们的应用程序。它是由节点上的kubelet定期执行的。 首先说一下Pod的整个生命阶段: Pending:表示集群系统正在创建Pod,但是Pod中的co 阅读全文
posted @ 2018-09-27 17:15 kaleidoscopic 阅读(5526) 评论(0) 推荐(0) 编辑
摘要:Kubernetes 部署失败的 10 个最普遍原因(Part 1) Kubernetes 部署失败的 10 个最普遍原因(Part 2) 阅读全文
posted @ 2018-09-27 15:57 kaleidoscopic 阅读(311) 评论(0) 推荐(0) 编辑
摘要:Kubernetes是Google开源的容器集群管理系统。它构建于docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-PaaS平台。本文旨在梳理Kubernetes的架构、概念及基本工作流,并且通过运行一个简单的示例应用来 阅读全文
posted @ 2018-09-27 15:25 kaleidoscopic 阅读(515) 评论(0) 推荐(0) 编辑
摘要:原理分析之一:从JDBC到Mybatis 原理分析之二:框架整体设计 原理分析之三:初始化(配置文件读取和解析) 原理分析之四:一次SQL查询的源码分析 原理分析之一:从JDBC到Mybatis 原理分析之二:框架整体设计 原理分析之三:初始化(配置文件读取和解析) 原理分析之四:一次SQL查询的源 阅读全文
posted @ 2018-09-26 20:47 kaleidoscopic 阅读(275) 评论(0) 推荐(0) 编辑
摘要:MyBatis最关键的组成部分是SqlSessionFactory,我们可以从中获取SqlSession,并执行映射的SQL语句。SqlSessionFactory对象可以通过基于XML的配置信息或者Java API 创建。 我们将探索各种MaBatis配置元素,如dataSource,enviro 阅读全文
posted @ 2018-09-26 20:37 kaleidoscopic 阅读(761) 评论(0) 推荐(0) 编辑
摘要:对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题。本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池。 本文首先会讲述MyBatis的数据源的分类,然后会介绍数据源是如何加载和使用的。紧接着将分类介绍UNPOOLED、POO 阅读全文
posted @ 2018-09-26 16:06 kaleidoscopic 阅读(1383) 评论(0) 推荐(0) 编辑
摘要:MyBatis作为Java语言的数据库框架,对数据库的事务管理是其非常重要的一个方面。 本文将讲述MyBatis的事务管理的实现机制,首先介绍MyBatis的事务Transaction的接口设计以及其不同实现JdbcTransaction 和 ManagedTransaction;接着,从MyBat 阅读全文
posted @ 2018-09-26 15:33 kaleidoscopic 阅读(35162) 评论(0) 推荐(4) 编辑
摘要:MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis的实现。 一、MyBatis的框架设计 1.接口层 和数据库交互的方式 阅读全文
posted @ 2018-09-26 15:00 kaleidoscopic 阅读(893) 评论(0) 推荐(0) 编辑
摘要:1.什么是 MyBatis ? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(P 阅读全文
posted @ 2018-09-25 20:46 kaleidoscopic 阅读(392) 评论(0) 推荐(0) 编辑
摘要:TCP报文结构 源端口和目的端口:各占2个字节,分别写入源端口号和目的端口号。 序号:占4个字节。序号使用mod运算。TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。故该字段也叫做“报文段序号”。 确认序号:占4个字节,是期望收到对方下一个报文段的第一个数据字节的序号 阅读全文
posted @ 2018-09-25 18:18 kaleidoscopic 阅读(41101) 评论(2) 推荐(3) 编辑
摘要:一、OSI参考模型 今天我们先学习一下以太网最基本也是重要的知识——OSI参考模型。 1、OSI的来源 OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。 ISO为了更好的使网络应用更 阅读全文
posted @ 2018-09-25 17:21 kaleidoscopic 阅读(498) 评论(0) 推荐(2) 编辑
摘要:为了避免混淆,书名的颜色分类,红色是种草, 黑色是拔草(至少不适合本文的预设读者) 1. 国内一线的书 说到大型互联网站的建设,我们在世界上也是一流的,比国外那些咨询师写的更深味其中艰辛。 《高可用架构(第一卷)》 厚厚的一本,新浪微博TimYang牵头的高可用架构社区,几十个一线实战案例的结集分享 阅读全文
posted @ 2018-09-25 16:49 kaleidoscopic 阅读(14768) 评论(0) 推荐(1) 编辑
该文被密码保护。
posted @ 2018-09-25 15:51 kaleidoscopic 阅读(5) 评论(0) 推荐(0) 编辑
摘要:曾经在和朋友的闲聊中,聊到了关于个人发展的问题。后来讨论出一个 PPC 理论,该理论粗略地把涉及个人发展的方向分成了三个维度,包括: 曾经在和朋友的闲聊中,聊到了关于个人发展的问题。后来讨论出一个 PPC 理论,该理论粗略地把涉及个人发展的方向分成了三个维度,包括: 专业 Profession 展现 阅读全文
posted @ 2018-09-25 15:44 kaleidoscopic 阅读(757) 评论(0) 推荐(0) 编辑
摘要:1 引言 在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及 阅读全文
posted @ 2018-09-25 14:33 kaleidoscopic 阅读(488) 评论(0) 推荐(0) 编辑
摘要:1. 性能篇 1.1 建议的性能参数 1. 取消偏向锁: -XX:-UseBiasedLocking JDK1.6开始默认打开的偏向锁,会尝试把锁赋给第一个访问它的线程,取消同步块上的synchronized原语。如果始终只有一条线程在访问它,就成功略过同步操作以获得性能提升。 但一旦有第二条线程访 阅读全文
posted @ 2018-09-25 11:38 kaleidoscopic 阅读(2422) 评论(0) 推荐(0) 编辑
摘要:本文实例讲述了MySQL常用存储引擎功能与用法。 MySQL存储引擎主要有两大类: 1. 事务安全表:InnoDB、BDB。 2. 非事务安全表:MyISAM、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等。 MyS 阅读全文
posted @ 2018-09-21 19:19 kaleidoscopic 阅读(741) 评论(0) 推荐(0) 编辑
摘要:MVC 设计概述 在早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1: 出现的弊端: JSP 和 Java Bean 之间严重耦合,Java 代码和 HTML 代码也耦合在了一起 要求开发者不仅要掌握 阅读全文
posted @ 2018-09-20 17:50 kaleidoscopic 阅读(451) 评论(0) 推荐(0) 编辑
摘要:阅读目录 Spring MVC概述 Spring MVC框架的特点 Spring MVC工作原理 Spring MVC概述 Spring的web框架围绕DispatcherServlet设计,DispatcherServlet的作用是将请求分发到不同的处理器。 Spring的web框架包括可配置的处 阅读全文
posted @ 2018-09-20 16:15 kaleidoscopic 阅读(308) 评论(0) 推荐(0) 编辑
摘要:Spring Bean是Spring应用中最最重要的部分了。所以来看看Spring容器在初始化一个bean的时候会做那些事情,顺序是怎样的,在容器关闭的时候,又会做哪些事情。 鉴于Spring源码是用gradle构建的,运行beanLifeCycle模块下的junit test即可在控制台看到如下输 阅读全文
posted @ 2018-09-20 11:37 kaleidoscopic 阅读(317) 评论(0) 推荐(0) 编辑
摘要:背景 知乎作为知名中文知识内容平台,每日处理的访问量巨大 ,如何更好的承载这样巨大的访问量,同时提供稳定低时延的服务保证,是知乎技术平台同学需要面对的一大挑战。 知乎存储平台团队基于开源 Redis 组件打造的 Redis 平台管理系统,经过不断的研发迭代,目前已经形成了一整套完整自动化运维服务体系 阅读全文
posted @ 2018-09-19 20:17 kaleidoscopic 阅读(1289) 评论(0) 推荐(0) 编辑
摘要:SimpleAsyncTaskExecutor 异步执行用户任务的SimpleAsyncTaskExecutor。每次执行客户提交给它的任务时,它会启动新的线程,并允许开发者控制并发线程的上限(concurrencyLimit),从而起到一定的资源节流作用。默认时,concurrencyLimit取 阅读全文
posted @ 2018-09-19 16:26 kaleidoscopic 阅读(7912) 评论(1) 推荐(1) 编辑
摘要:在说到消息中间件的时候,我们通常都会谈到一个特性:消息的顺序消费问题。这个问题看起来很简单:Producer发送消息1, 2, 3。。。 Consumer按1, 2, 3。。。顺序消费。 但实际情况却是:无论RocketMQ,还是Kafka,缺省都不保证消息的严格有序消费! 这个特性看起来很简单,但 阅读全文
posted @ 2018-09-18 20:15 kaleidoscopic 阅读(1460) 评论(0) 推荐(0) 编辑
摘要:前言 微服务架构是互联网很热门的话题,是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。虽然微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路,例如 Dubbo 和 Spr 阅读全文
posted @ 2018-09-18 16:51 kaleidoscopic 阅读(620) 评论(0) 推荐(0) 编辑
摘要:Druid是什么? Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。 Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规 阅读全文
posted @ 2018-09-18 16:36 kaleidoscopic 阅读(9450) 评论(1) 推荐(5) 编辑
摘要:EJB定义: 被称为java企业bean,服务器端组件,核心应用是部署分布式应用程序。用它部署的系统不限定平台。实际上EJB是一种产品,描述了应用组件要解决的标准。 标准: 可扩展 (Scalable) 分布式 (Distributed) 事务处理(Transactional) 数据存储(Persi 阅读全文
posted @ 2018-09-18 15:27 kaleidoscopic 阅读(1139) 评论(0) 推荐(1) 编辑
摘要:1:产品介绍 WebLogic是美国bea公司出品的一个application server确切的说是一个基于j2ee架构的中间件。BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise 阅读全文
posted @ 2018-09-18 14:18 kaleidoscopic 阅读(29754) 评论(0) 推荐(3) 编辑
摘要:门面设计模式 门面设计模式在 Tomcat 中有多处使用,在 Request 和 Response 对象封装中、Standard Wrapper 到 ServletConfig 封装中、ApplicationContext 到 ServletContext 封装中等都用到了这种设计模式。 门面设计模 阅读全文
posted @ 2018-09-18 10:58 kaleidoscopic 阅读(445) 评论(0) 推荐(0) 编辑
摘要:Jetty基本架构 Jetty目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器。它有一个基本数据模型,这个数据模型就是 Handler(处理器),所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 就是帮你 阅读全文
posted @ 2018-09-17 16:47 kaleidoscopic 阅读(4967) 评论(0) 推荐(2) 编辑
摘要:网关一词较早出现在网络设备里面,比如两个相互独立的局域网段之间通过路由器或者桥接设备进行通信, 这中间的路由或者桥接设备我们称之为网关。 相应的 API 网关将各系统对外暴露的服务聚合起来,所有要调用这些服务的系统都需要通过 API 网关进行访问,基于这种方式网关可以对 API 进行统一管控,例如: 阅读全文
posted @ 2018-09-14 17:40 kaleidoscopic 阅读(20077) 评论(3) 推荐(1) 编辑
摘要:在参与实际项目中,当 MySQL 表的数据量达到百万级时,普通的 SQL 查询效率呈直线下降,而且如果 where 中的查询条件较多时,其查询速度无法容忍。想想可知,假如我们查询淘宝的一个订单详情,如果查询时间高达几十秒,这么高的查询延时,任何用户都会抓狂。因此如何提高 SQL 语句查询效率,显得十 阅读全文
posted @ 2018-09-14 16:27 kaleidoscopic 阅读(435) 评论(0) 推荐(0) 编辑
摘要:一、秒杀一般会带来2个问题: 1、高并发 比较火热的秒杀在线人数都是10w起的,如此之高的在线人数对于网站架构从前到后都是一种考验。 2、超卖 任何商品都会有数量上限,如何避免成功下订单买到商品的人数不超过商品数量的上限,这是每个抢购活动都要面临的难题。 二、如何解决? 1.架构层面: 秒杀架构设计 阅读全文
posted @ 2018-09-14 16:12 kaleidoscopic 阅读(2219) 评论(0) 推荐(0) 编辑
摘要:使用Redis的 SETNX 命令可以实现分布式锁,下文介绍其实现方法。 SETNX命令简介 命令格式 将 key 的值设为 value,当且仅当 key 不存在。 若给定的 key 已经存在,则 SETNX 不做任何动作。 SETNX 是SET if Not eXists的简写。 返回值 返回整数 阅读全文
posted @ 2018-09-14 15:01 kaleidoscopic 阅读(741) 评论(0) 推荐(0) 编辑
摘要:3 Key Software Principles You Must Understand Principle - Don't Repeat Yourself Principle - Keep it Simple Stupid Principle - You "Ain't Gonna Need It 阅读全文
posted @ 2018-09-14 14:56 kaleidoscopic 阅读(163) 评论(0) 推荐(0) 编辑
摘要:1.Counting(计数) 很多情况大家都会设想纯使用内存的方案会很有很高成本,但实际情况往往会有一些不一样: COST,对于有一定吞吐需求的应用来说,肯定会单独申请DB、Cache资源,很多担心DB写入性能的同学还会主动将DB更新记入异步队列,而这三块的资源的利用率一般都不会太高。资源算下来,你 阅读全文
posted @ 2018-09-14 14:50 kaleidoscopic 阅读(198) 评论(0) 推荐(0) 编辑
摘要:Java进阶(一)Annotation(注解) Java进阶(二)当我们说线程安全时,到底在说什么 Java进阶(三)多线程开发关键技术 Java进阶(四)线程间通信方式对比 Java进阶(五)NIO和Reactor模式进阶 Java进阶(六)从ConcurrentHashMap的演进看Java多线 阅读全文
posted @ 2018-09-14 11:32 kaleidoscopic 阅读(214) 评论(0) 推荐(0) 编辑
摘要:深入浅出Zookeeper(一) Zookeeper架构及FastLeaderElection机制 深入浅出Zookeeper(二) 基于Zookeeper的分布式锁与领导选举 从Paxos到Zookeeper:分布式一致性原理与实践 深入浅出Zookeeper(一) Zookeeper架构及Fas 阅读全文
posted @ 2018-09-14 11:30 kaleidoscopic 阅读(239) 评论(0) 推荐(0) 编辑
摘要:识别领域事件 DDD战术篇:领域模型的应用 DDD战略篇:架构设计的响应力 DDD实战篇:分层架构的代码结构 识别领域事件 DDD战术篇:领域模型的应用 DDD战略篇:架构设计的响应力 DDD实战篇:分层架构的代码结构 阅读全文
posted @ 2018-09-14 10:58 kaleidoscopic 阅读(206) 评论(0) 推荐(0) 编辑
摘要:引言 单例模式比较常见的实现方法有懒汉模式,DCL模式公有静态成员等,从Java 1.5版本起,单元素枚举实现单例模式成为最佳的方法。 Java枚举 基本用法 枚举的用法比较多,本文主要旨在介绍利用枚举实现单例模式的原理,所以这里也主要介绍一些相关的基础内容。 首先,枚举类似类,一个枚举可以拥有成员 阅读全文
posted @ 2018-09-12 19:30 kaleidoscopic 阅读(5071) 评论(1) 推荐(3) 编辑
摘要:1 哨兵的作用 哨兵是redis集群架构中非常重要的一个组件,主要功能如下: 2 哨兵的核心知识 3 sdown和odown 4 quorum和majority 5 为什么哨兵至少3个节点 哨兵集群必须部署2个以上节点。如果哨兵集群仅仅部署了个2个哨兵实例,那么它的majority就是2(2的maj 阅读全文
posted @ 2018-09-12 18:30 kaleidoscopic 阅读(10011) 评论(0) 推荐(2) 编辑
摘要:导言 redis-cluster是近年来redis架构不断改进中的相对较好的redis高可用方案。本文涉及到近年来redis多实例架构的演变过程,包括普通主从架构(Master、slave可进行写读分离)、哨兵模式下的主从架构、redis-cluster高可用架构(redis官方默认cluster下 阅读全文
posted @ 2018-09-12 17:43 kaleidoscopic 阅读(4126) 评论(0) 推荐(1) 编辑
摘要:尽管我们已经知道了主从复制能尽可能的确保数据不会因master node的节点挂掉而丢失,然而现实生活中,我们总不可能一直在看着master node的状态,在一旁等着它挂掉然后把它“提起来”。这时候,需要有个东西来替我们监督并且随时调整redis集群状况,这个东西就叫做哨兵(sential)。 哨 阅读全文
posted @ 2018-09-12 16:35 kaleidoscopic 阅读(2476) 评论(0) 推荐(0) 编辑
摘要:一、Redis Cluster主要特性和设计 集群目标 1)高性能和线性扩展,最大可以支撑到1000个节点;Cluster架构中无Proxy层,Master与slave之间使用异步replication,且不存在操作的merge。(即操作不能跨多个nodes,不存在merge层) 2)一定程度上保证 阅读全文
posted @ 2018-09-12 15:42 kaleidoscopic 阅读(2976) 评论(1) 推荐(0) 编辑
摘要:Redis回顾 Redis支持的数据结构 字符串(String) 哈希(Hash) 列表(List) 集合(Set) 有序集合(Sorted Set)位数组 支持针对score作范围查询 HyperLogLog 做基数统计的算法 Redis支持的操作 基本操作发布/订阅 Set get add pu 阅读全文
posted @ 2018-09-11 21:02 kaleidoscopic 阅读(13984) 评论(1) 推荐(2) 编辑
摘要:为什么集群? 通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取。Redis是一个很好的Cache工具。大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿,在这种情况下,如何正确架构Redis呢? 首先,无论我们是使用自己的物理主机,还是使用云服务主机,内存 阅读全文
posted @ 2018-09-11 21:01 kaleidoscopic 阅读(363) 评论(0) 推荐(0) 编辑
摘要:一、正面解读 Spring主要是基于IOC反转Beans管理Bean类,主要依存于SSH框架(Struts+Spring+Hibernate)这个MVC框架,所以定位很明确, SpringMVC是基于Spring的一个MVC框架,用以替代初期的SSH框架;(spring Framework本身没有W 阅读全文
posted @ 2018-09-11 20:35 kaleidoscopic 阅读(616) 评论(0) 推荐(0) 编辑
摘要:本文向您讲解J2EE中一些技术概念,包括JavaBeans、EJB、POJO等,这三种技术的每个技术在应用时都涉及两个部分:容器部分和应用部分,本文试图从一种轻易理解的角度对这些概念向初学者进行解释,以便把握学习J2EE学习方向。 本文向您讲解J2EE中一些技术概念,包括JavaBeans、EJB、 阅读全文
posted @ 2018-09-11 20:18 kaleidoscopic 阅读(757) 评论(0) 推荐(0) 编辑
摘要:本文将深入讲解 Spring 简单而强大的事务管理功能,包括编程式事务和声明式事务。通过对本教程的学习,您将能够理解 Spring 事务管理的本质,并灵活运用之。 Spring 事务属性分析 事务管理对于企业应用而言至关重要。它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏 阅读全文
posted @ 2018-09-11 18:28 kaleidoscopic 阅读(3576) 评论(0) 推荐(0) 编辑
摘要:本来JVM的工作原理浅到可以泛泛而谈,但如果真的想把JVM工作机制弄清楚,实在是很难,涉及到的知识领域太多。所以,本文通过简单的mian方法执行,浅谈JVM工作原理,看看JVM里面都发生了什么。 先上代码: 再看看JVM内部结构: 上图是对《The Java® Virtual Machine Spe 阅读全文
posted @ 2018-09-11 17:57 kaleidoscopic 阅读(3345) 评论(0) 推荐(3) 编辑
摘要:前言 在上一篇关于Serlvet框架和Servlet生命周期的学习中,我们已经知道了在多线程的情况下 Servlet是线程不安全的。Servlet体系是建立在java多线程的基础之上的,它的生命周期是由Tomcat 来维护的。当客户端第一次请求Servlet的时候,tomcat会根据web.xml配 阅读全文
posted @ 2018-09-11 17:17 kaleidoscopic 阅读(4531) 评论(0) 推荐(1) 编辑
摘要:定义接口 使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,当中接口体由常量定义和方法定义两部分组成。定义接口的基本格式例如以下: 修饰符:可选,用于指定接口的訪问权限,可选值为public。假设省略则使用默认的訪问权限。接口名:必选參数,用于指定接口的名称, 阅读全文
posted @ 2018-09-11 17:01 kaleidoscopic 阅读(8785) 评论(0) 推荐(0) 编辑
摘要:前言 不知道你是否遇到过这样的情况,去小卖铺买东西,付了钱,但是店主因为处理了一些其他事,居然忘记你付了钱,又叫你重新付。又或者在网上购物明明已经扣款,但是却告诉我没有发生交易。这一系列情况都是因为没有事务导致的。这说明了事务在生活中的一些重要性。有了事务,你去小卖铺买东西,那就是一手交钱一手交货。 阅读全文
posted @ 2018-09-11 15:30 kaleidoscopic 阅读(752) 评论(0) 推荐(0) 编辑
摘要:问题的起源 在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性? 在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性? 具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要么同时成功;要么同时失败。A、B、C 可能是 阅读全文
posted @ 2018-09-11 14:44 kaleidoscopic 阅读(16875) 评论(0) 推荐(1) 编辑
摘要:当 Linux 最初开发时,在内核中并不能真正支持线程。但是它的确可以通过 clone() 系统调用将进程作为可调度的实体。这个调用创建了调用进程(calling process)的一个拷贝,这个拷贝与调用进程共享相同的地址空间。LinuxThreads 项目使用这个调用来完全在用户空间模拟对线程的 阅读全文
posted @ 2018-09-11 11:17 kaleidoscopic 阅读(1013) 评论(0) 推荐(0) 编辑
摘要:分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问题: 消息的顺序问题 消息的重复问题 RocketMQ作为阿里开源的一款高性能、高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ 有哪些关键特性?其实现 阅读全文
posted @ 2018-09-10 17:54 kaleidoscopic 阅读(276) 评论(0) 推荐(0) 编辑
摘要:消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。 当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify、MetaQ、Rock 阅读全文
posted @ 2018-09-07 18:23 kaleidoscopic 阅读(357) 评论(0) 推荐(0) 编辑
摘要:背景 不同于单一架构应用(Monolith), 分布式环境下, 进行事务操作将变得困难, 因为分布式环境通常会有多个数据源, 只用本地数据库事务难以保证多个数据源数据的一致性. 这种情况下, 可以使用两阶段或者三阶段提交协议来完成分布式事务.但是使用这种方式一般来说性能较差, 因为事务管理器需要在多 阅读全文
posted @ 2018-09-07 17:46 kaleidoscopic 阅读(874) 评论(0) 推荐(0) 编辑
摘要:为什么使用服务发现? 想象一下,如果你在写代码调用一个有REST API或Thrift API的服务,你的代码需要知道一个服务实例的网络地址(IP地址和端口)。运行在物理硬件上的传统应用中,服务实例的网络地址是相对静态的,你的代码可以从一个很少更新的配置文件中读取网络地址。 在一个现代的,基于云的微 阅读全文
posted @ 2018-09-07 17:13 kaleidoscopic 阅读(13561) 评论(0) 推荐(0) 编辑
摘要:概述 将单体应用改造为微服务实际上是应用现代化的过程,这是开发者们在过去十年来一直在做的事情,所以已经有一些可以复用的经验。 全部重写是绝对不能用的策略,除非你要集中精力从头构建一个基于微服务的应用。虽然听起来很有吸引力,但是风险很大,很有可能会失败。就像MartinFowler所说的:『The o 阅读全文
posted @ 2018-09-07 16:59 kaleidoscopic 阅读(1470) 评论(0) 推荐(0) 编辑
摘要:Introduction to Microservices Building Microservices: Using an API Gateway Building Microservices: Inter-Process Communication in a Microservices Arch 阅读全文
posted @ 2018-09-07 16:40 kaleidoscopic 阅读(196) 评论(0) 推荐(0) 编辑
摘要:HSF(High-speed Service Framework),高速服务框架,是阿里系主要采用的服务框架,其目的是作为桥梁联通不同的业务系统,解耦系统之间的实现依赖。其高速体现在底层的非阻塞I/O以及优秀的序列化机制上,实现了同步和异步调用方式,并且有一套软负载体系,实现分布式应用。 HSF源码 阅读全文
posted @ 2018-09-07 16:27 kaleidoscopic 阅读(832) 评论(0) 推荐(0) 编辑
摘要:原文出处: JavaDoop Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Sprin 阅读全文
posted @ 2018-09-06 19:55 kaleidoscopic 阅读(572) 评论(1) 推荐(1) 编辑
摘要:Spring解密 - XML解析 与 Bean注册 Spring解密 - 默认标签的解析 Spring解密 - 自定义标签与解析 Spring解密 - Bean的加载流程 Spring解密 - XML解析 与 Bean注册 Spring解密 - 默认标签的解析 Spring解密 - 自定义标签与解析 阅读全文
posted @ 2018-09-06 19:44 kaleidoscopic 阅读(284) 评论(0) 推荐(0) 编辑
摘要:CAP和BASE理论 对于本地事务处理或者是集中式的事务处理系统,很显然我们可以采用已经被实践证明很成熟的ACID模型来保证数据的严格一致性。而随着分布式事务的出现,传统的单机事务模型已经无法胜任。尤其是对于一个高访问量、高并发的互联网分布式系统来说,如果我们期望实现一套严格满足ACID特性的分布式 阅读全文
posted @ 2018-09-06 15:57 kaleidoscopic 阅读(227) 评论(0) 推荐(0) 编辑
摘要:1. 概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Jav 阅读全文
posted @ 2018-09-06 15:22 kaleidoscopic 阅读(235) 评论(0) 推荐(0) 编辑
摘要:并发不一定要依赖多线程(如PHP中很常见的多进程并发),但是在Java里面谈论并发,大多数都与线程脱不开关系。 线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址、文件I/O等),又可以独立调度(线程是CPU调度的基本单位)。 阅读全文
posted @ 2018-09-06 14:25 kaleidoscopic 阅读(11559) 评论(0) 推荐(1) 编辑
摘要:I/O复用模型 I/O复用原理:让应用程序可以同时对多个I/O端口进行监控以判断其上的操作是否可以进行,达到时间复用的目的。在书上看到一个例子来解释I/O的原理,我觉得很形象,如果用监控来自10根不同地方的水管(I/O端口)是否有水流到达(即是否可读),那么需要10个人(即10个线程或10处代码)来 阅读全文
posted @ 2018-09-06 11:10 kaleidoscopic 阅读(1300) 评论(0) 推荐(0) 编辑
摘要:无锁编程真的是不涉及锁么?无锁编程实现的本质是什么?需要操作系统或者编译器的支持么?本文尝试解答这些问题。 1 锁引发的问题 使用锁时要特别防止出现死锁或活锁。死锁的情况很简单,就是申请者在申请过程中由于顺序原因(多个锁没有按固定顺序申请)进入堵塞状态了,指定顺序即可规避。我们只看一个活锁的例子: 阅读全文
posted @ 2018-09-04 20:34 kaleidoscopic 阅读(1331) 评论(0) 推荐(0) 编辑
摘要:Lock-free programming is a challenge, not just because of the complexity of the task itself, but because of how difficult it can be to penetrate the s 阅读全文
posted @ 2018-09-04 20:21 kaleidoscopic 阅读(316) 评论(0) 推荐(0) 编辑
摘要:一、拉链法 上篇博文我们举的例子,HashMap,HashSet其实都是采用的拉链法来解决哈希冲突的,就是在每个位桶实现的时候,我们采用链表(jdk1.8之后采用链表+红黑树)的数据结构来去存取发生哈希冲突的输入域的关键字(也就是被哈希函数映射到同一个位桶上的关键字)。首先来看使用拉链法解决哈希冲突 阅读全文
posted @ 2018-09-04 20:05 kaleidoscopic 阅读(20385) 评论(0) 推荐(1) 编辑
摘要:多线程编程中,当代码需要同步时我们会用到锁。Java为我们提供了内置锁(synchronized)和显式锁(ReentrantLock)两种同步方式。显式锁是JDK1.5引入的,这两种锁有什么异同呢?是仅仅增加了一种选择还是另有其因?本文为您一探究竟。 JDK1.5中,synchronized是性能 阅读全文
posted @ 2018-09-04 16:32 kaleidoscopic 阅读(1866) 评论(1) 推荐(0) 编辑
摘要:Apache HTTP Server 与 Tomcat 的三种连接方式JK,http_proxy,ajp_proxy。下面逐个介绍一下(本篇介绍的示例都是基于前面介绍的已经搭建好的Tomcat集群,都是本机,端口分别为18080和28080): JK: JK是最常见的方式,JK 本身有两个版本分别是 阅读全文
posted @ 2018-09-03 17:47 kaleidoscopic 阅读(821) 评论(0) 推荐(0) 编辑
摘要:一、定义 1. Apache Apache HTTP服务器是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上。其属于应用服务器。Apache支持支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。 (Apche可以支持PH 阅读全文
posted @ 2018-09-03 17:18 kaleidoscopic 阅读(1128) 评论(0) 推荐(0) 编辑
摘要:Tomcat 的优化不像其它软件那样,简简单单的修改几个参数就可以了,它的优化主要有三方面,分为系统优化,Tomcat 本身的优化,Java 虚拟机(JVM)调优。系统优化就不在介绍了,接下来就详细的介绍一下 Tomcat 本身与 JVM 优化,以 Tomcat 7 为例。 一、Tomcat 本身优 阅读全文
posted @ 2018-09-03 16:40 kaleidoscopic 阅读(561) 评论(0) 推荐(0) 编辑
摘要:超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。 为了解决HT 阅读全文
posted @ 2018-09-03 16:02 kaleidoscopic 阅读(274) 评论(0) 推荐(0) 编辑
摘要:保证RESTful API的安全性,主要包括三大方面: a) 对客户端做身份认证 b) 对敏感的数据做加密,并且防止篡改 c) 身份认证之后的授权 1、对客户端做身份认证,有几种常见的做法: 1)在请求中加签名参数,为每个接入方分配一个密钥,并且规定一种签名的计算方法。要求接入方的请求中必须加上签名 阅读全文
posted @ 2018-09-03 15:50 kaleidoscopic 阅读(945) 评论(0) 推荐(0) 编辑
摘要:When studying both the Java NIO and IO API's, a question quickly pops into mind: When studying both the Java NIO and IO API's, a question quickly pops 阅读全文
posted @ 2018-09-03 15:02 kaleidoscopic 阅读(174) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示