7 it小奋

尚未进行身份认证

暂无相关简介

等级
TA的排名 3w+

TheadLocal 原理及实践

目录ThreadLocal实现原理使用场景使用实例ThreadLocal 线程本地存储,为变量在每个线程中都创建一个副本(在Thread中存储以ThreadLocal为key的值),每个线程可以访问自己内部的副本变量。实现原理 ThreadLocal内部用ThreadLocalMap来存储变量值,实际上线程本地变量存储在Thread类...

2019-05-14 08:53:24

Spring Cloud2.X ——宏观视图

随着对微服务的的实践经验的增加,慢慢的对微服务有了一个宏观上的理解,简单整理一下;下面画了一张图,比较清晰的描绘了微服务组件的协作关系,以及微服务架构下面临的挑战;服务注册 微服务架构下,服务的统一注册是前提,只有将所有服务集中注册起来按服务名称进行归类,提供统一的服务视图,才能更好的进行服务的治理操作.作为服务注册中心来说本身应该是一个分布式系统,满足CA...

2019-05-12 14:18:57

记一次高并发、大流量场景下的缓存、限流优化

目录场景描述:历史优化措施可行性分析硬件设备流量分析峰值预估【单个服务】缓存预估峰值流量处理可行性方案源端转发分布式缓存本地缓存可行性实践案例1问题分析基于Guava的本地缓存基于Guava的令牌桶限流算法参数配置场景描述:平台接入了大量的图片,稳定情况下大概1200张/秒;现有架构下内部系统需要先将这部分数据落地并生...

2019-05-12 14:10:53

记一次JVM线程池配置不合理导致的JVM挂掉问题排查

原则一——尽一切可能保护有限的资源。问题描述现场反馈,服务启动起来有一段时间就自己挂掉了,大概几十秒到几分钟,技支反馈日志突然就中断了,看不到任何错误的迹象;原因预估我确信,经验不同的人排查问题的思路差异是非常大的,庆幸的是这些可以借鉴,我们应该总结自己的经验,借鉴旁人的经验; 我当时就想怎么会没日志呢!是不是他们找错地方了!我得亲自看看! 日志里面一定能找到我...

2019-05-12 13:13:34

RPC及序列化总结

前言 首先应该能够清晰的分辨RPC、序列化、数据压缩之间的关系及区别,本节不讨论具体技术细节,旨在理解概念和建议的序列化协议选择。RPC是一种抽象的一般跨网络的通信框架,主要目的是屏蔽网络调用的复杂性,基于RPC框架我们可以更容易的在分布式环境中进行网络调用。 数据压缩指通过技术手段在存储、计算、时间之前平衡,常见的通过编码技术对数据进行压缩以减少在网络中传输的字节量,同时不...

2019-04-13 15:12:31

Spring Boot自定义Starter之FastDFS自动配置

https://github.com/poai/spring-starter-fastdfs.git最近Spring Boot用的较多,使用过程中发现一些问题Spring data 下的子项目 redis、elasticsearch、rabbitmq等都提供了深度封装的API 由于习惯了原生API的简洁性因此大部分场景下并不倾向于去使用这些模块封装的API 对于Reids\Elasti...

2019-03-30 17:44:13

架构设计-数据接入服务

标签: 门面模式、观察者模式、责任链模式、模式组合设计原则 流程清晰、责任明确、易于扩展、兼顾性能。场景描述: 需要提供一个服务开发若干接口可以是REST或者WEBSERVICE实现,协议数据包含两大类数据内容结构化数据和图片数据。整个服务需要完成结构化数据的输入、图片数据的存储、数据校验、数据处理。要求如下:数据校验部分涉及的数据字典都存储...

2019-03-30 13:02:19

人月神话-人月

人月神话 读前,完全不知道应该从这章中会得到点什么. 缺乏合理的进度安排是造成项目滞后的最主要原因;对技术缺乏有效的研究,”一切都将良好运行”的美好假设; 采用的估算技术隐含的假设人和月可以互换,错误的将进度和工作量相互混淆。不止人月,人和人互换的代价也是惨重的。 由于对自己的估算缺乏信心,软件经理通常不会有耐心持续的估算这项工作。说到痛点了。 对...

2019-03-30 11:19:51

人月神话-焦油坑

焦油坑 开发一个可运行的系统和开发一个良好运行的系统差距是巨大的。对于软件开发中的问题都应该先试图去了解问题,影响软件开发进度和质量的往往是各种看似容易处理的小问题的综合结果。 我理解的这章主要是引导一下开发经理关注编程的各种因素,重视这些因素对软件开发的影响同时应尽可能的用经验去避免这些问题。同时了解软件开发人员的困境,做为开发经理或这开发的管理决策人员应...

2019-03-24 10:48:41

Spring Boot +Mybatis多数据源配置

Spring Boot项目在整合Mybatis过程中全部使用了注解配置,由于业务系统涉及多个数据源,查阅后整理输出供需要的伙伴参考。难点由于全部使用@Mapper注解在接口中定义了DAO层逻辑,且在使用过程中直接使用@Autowired注入了该接口的代理对象,因此在有多个数据源的场景下在什么位置安全的切换数据源是需要考虑的问题。分析Mybatis中Session是和SqlSessi...

2019-03-10 16:30:37

QUARTZ基于SPARK LAUNCHER 驱动SPARK离线作业

场景:不同业务下输出了若干Spark的离线任务,原有的方式我们是基于Linux的CRON任务来驱动,不好进行监管、日志不好收集、服务不集中、难于管理、不好配置、资源调度不灵活。SparkLauncher 提供了编程方式提交Spark应用的方式提交Spark应用程序,可以结合Springboot、Quartz等技术来管理Spark任务的提交行为。SparkLauncher APIhttp:/...

2018-12-21 16:19:48

HashMap总结

HashMap         数组+链表实现 --> transient Entry<K,V>[] table,每个Entry有一个next指针基本概念         size,k-v的数量,map集合元素的个数         initialCapacity,初始容量,默认值为16,是一个折中值,不是太小也不是太大         capacity,容量...

2018-08-12 14:25:47

JVM常用工具,内存结构,垃圾收集,锁学习笔记(一)

JVM(JDK1.7)查看JVM进程&参数JPS         列出在主机上执行的虚拟机,语法jps [ options ] [ hostid ]                 jps-m -->输出传递给JVM主方法的参数    jps -v -->输出传递给JVM的参数    通常以-X -D -XX等开始的标识符JINFO         查看JVM进程的配置信息(包...

2018-06-19 08:32:29

Springboot 整合druid数据源

为什么要用druid还没好好考虑,先用一下试试,这次用了Spring Boot环境,比较间接的整理一下一种配置的流程,总的来说我可以通过一个网站监控一下我的数据源的情况,这是其它数据源暂时都不能提供的优势,也是性能排查的利器。 创建durid数据源配置文件,这里使用application.properties进行配置, application.properties数据源属性如下...

2018-06-16 09:58:13

高性能分布式计数器中的并发设计和思考

高性能分布式计数器中的并发设计场景介绍对实时数据流以不同纬度进行计数并将结果保存到Oracle表中.要求达到以下目标:实时性有要求,单并非是严格要求,根据数据量的大小可适当延迟严格要求数据一致性,即在数据正确的情况下计数的结果应该和总记录数是一致的服务是可扩展的,尽量避免受限于单一资源的限制尽可能的考虑容错服务设计整体架构实时数据流接入后由Spark...

2018-06-16 09:36:25

Java并发编程实战笔记(一)

并发编程         追求极致性能的同时,处理好与有限资源的关系.         最大化的利用现有资源,以一种安全可靠、稳定、满足业务吞吐量和并发的技术手段保证服务的可用性.线程安全线程安全的定义         当多个线程访问某个类的时候,不管运行环境采用何种调度方式或者这些线程如何交替执行,并且在主掉代码中不需要任何额外的同步或协同,这个类都表现出正确的行为,那么就称这个类是线程安全的。...

2018-06-09 15:29:35

记一次从CPU使用率高到接口性能的排查过程

    两年前曾写过一个库代码,写这个库代码的时候也是咨询了各路大神们,也是由于自己技能储备不足,导致当时完成的也是小心翼翼,也是如期上线.    两年时间过去了,最近在排查该项目现场性能问题的时候猜测意是否由于当时的类库实现的不合理引起的。首先看下直接表现出来的问题。CPU用户进程CPU使用率低,系统进程使用CPU异常的高,这是非常反常的,何况64个cpu核心都在系统进程中频繁调度。...

2018-06-09 14:31:21

关于Phoenix的一些学习引导

1.什么是Phoenix?    首先你得了解Hbase、使用过Hbase并对Hbase现有的Api操作方式感到困惑和不满,那么继续看下去才更有意义。Phoenix 是Hbase上的高层组件,是一个独立的开源项目,其基于Hbase的扫描操作和协处理器实现了一套底层基于Hbase表结构的标准SQL层,简化了Hbase的使用方式,为熟悉SQL的开发人员降低了学习门槛.2.Phoenix 和Hbase在...

2018-05-19 09:32:36

Protocol Buffers 学习

概述  一个语言中立,平台无关的、可扩展的用来进行数据结构和序列化的协议栈,相比xml它更小、更快、更简单,一次完成数据结构定义可以使用工具生成多种语言代码,实现轻松的从各种数据流中写入和读取结构化数据.下述定一个消息体,两个必须的字段name,和id,一个可选字段email.message Person {  required string name = 1;  required int32 i...

2018-05-05 16:23:36

Spark1.5.2写kafka数据到Elasticsearch入坑总结

概述:总结一下Spark1.5.2+Kafka 0.8+中使用Direct Approach(直接获取的方式)消费Kafka数据开发过程中遇到的各种问题和经验.整合Spring    Spark开发中引入Spring可以方便的管理配置信息,数据源等,借助于Scala的单例特性可以创建一个独立的加载Spring IOC容器的工具类,剩下的事情就好办了,在配置文件中完成就可以了,并没有尝试去使用注解,...

2018-04-19 19:53:02

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。