12 Tom哥的小屋

尚未进行身份认证

我要认证

互联网发烧友

等级
TA的排名 1w+

函数式编程是如何提升代码的扩展性

软件的发展大致经历三个阶段 第一阶段(20世纪40年代中期到50年代中期),主要是科学与工程计算,处理对象为数值数据,以个体方式使用机器(或汇编)语言编制程序 第二阶段(20世纪50年代中期到60年代后期),从高级程序设计语言出现到软件工程提出以前。这个阶段研究对象增加了并发程序,并着重研究高级程序设计语言、编译程序、操作系统以及各种支撑软件和应用软件 第三阶段(20世纪60年代后期软件工程提出以来),由于大型软件的开发耗时耗力,任务重,需要采用合作的方式才能完成,所以引入软.

2020-08-31 23:22:15

深入剖析优惠券核心架构设计

很多网站都有优惠券业务,但是剖析优惠券架构的技术文章却很少,优惠券看似简单,但内部涉及用户、商品、平台、店铺等综合维度下各种营销玩法,复杂度一下会提高很多。所以写了这篇文章来看看优惠券是如何技术架构的。IT 界有句名言,”talk is cheap, show me the code“。废话不都说,开始进入正题我们先简单了解下优惠券都包含哪些重要信息,做了个优惠券信息的思维导图优惠券创建完成后,接下来就是透出、使用。透出涉及的位置很多,比如活动会场、开机屏,但流量最大...

2020-08-02 10:49:58

淘宝订单自动确认收货的N种实现,秒杀面试官

在这个电子商务流行年代,24小时随时随地网购已经成为我们习以为常的生活习惯。看到不错的商品,我们会立即下单,完全不受时间、空间的限制,剁手,然后在家坐等收快递,那种感觉。。。。细心的你是否发现,我们好像很少去主动点击‘’确认收货”,毕竟拿到了货,我总要先体验几天,谁知道它会不会坏,但时间一拖就忘了操作确认收货。而担保交易,如果买家不确认收货,交易订单无法完结,那商家是收不到货款的。有什么解决办法?上面示图是淘宝APP的订单详情页,左上方的自动确认时间起到了关键作...

2020-08-02 10:40:21

单台 MySQL 支撑不了这么多的并发请求,我们该怎么办?

关系型数据库的事务特性可以帮我们解决很多难题,比如数据的一致性问题,所以常规业务持久化存储都会mysql 来兜底。但mysql 的性能是有限的。当业务规模发展到上百万用户,访问量达到上万QPS时,单台mysql实例很难应付。有哪些解决方案?1、首先我们会想到给数据库找一个搭档,也就是缓存目前市面上经典组合是mysql+redis。Redis 作为 MySQL 的前置缓存,可以替 MySQL 挡住绝大部分查询请求,很大程度上缓解了 MySQL 并发请求的压力。Redis 是一...

2020-07-30 23:33:04

如何打造一个高效的研发团队

互联网公司的成功很大一部分归结为人才储备,如何打造有活力、持续创新的研发团队,相信很多管理者都比较关心。下面我们从业务支撑、技术架构、团队建设这几个方面做简单剖析业务支撑快速发展已经成为互联网公司的一种常态,那么在这么快的节奏下,如何快速支撑业务?尤其是在资源紧缺的情况下,既要做业务,也要做系统优化升级。确实很难做取舍。我的观点是看公司的规模,如果是创业早期,活下来才是第一要素,我们会将业务分为日常项目和重点项目。所谓重点项目就是能影响市场抢占度,甚至影响公司生死的项...

2020-07-30 23:29:47

如何第一时间发现线上故障

现在的研发工作越来越难做了,996、007,有事没事就要来公司加个班已经成为家常便饭,好像非工作时间不来公司露个脸现个身,就显得不求上进。身体累,心更累,就怕哪一天,一不小心倒在工作岗位,这还不算够惨,哪天运气不佳,再来个客户投诉,给万恶的资本家找到由头,给你年终考核定个不及格,没有年终奖,卧槽,真是一年白干,欲哭无泪。有没有什么策略,可以规避这种问题。线上问题大部分都是客户投诉上来的,根据问题的严重程度,影响着投诉面大小。如果有套监控系统(数据核对平台)就好了,可以第一时间发现问...

2020-07-30 23:28:02

如何设计一个高并发网关

前言Gateway 是一个服务器,也可以说是进入系统的唯一节点。这跟面向对象设计模式中的 Facade 模式很像。Gateway 封装内部系统的架构,并且提供 API 给各个客户端。主要模块:授权、监控、负载均衡、缓存、熔断、降级、限流、请求分片和管理、静态响应处理,等等。核心设计 请求路由 对于调用端来说,也是一件非常方便的事情。因为调用端不需要知道自己需要用到的其它服务的地址,全部统一地交给 Gateway 来处理。 服务注册 为了能够代理后面的服务,并...

2020-07-30 23:22:25

电商交易系统核心技术

前言电商诞生已经有20多个年头了,从早期很多人的质疑、骗子、不接受、甚至肄业排斥、打压,到现在彻底融入我们生活的方方面面,并号称中国的“新四大发明”,“认知教育”使命已经完成。人们足不出户,网上下个单,就可以在家坐等收包裹,确实是一种享受。今天就跟大家聊聊电商技术里面最重要的交易部分核心模块 购物车 下单 付款 库...

2020-02-16 10:06:56

Dubbo框架常见问题

在分布式架构时代,dubbo 作为RPC框架,以其高性能、易扩展、配置简单、易上手被越来越多的公司所青睐,在国内互联网公司中口碑一直很好。因为其高频使用,很多面试官会考察dubbo相关知识,框架原理很多人都能说出个一二来,但实用性不强。本文就日常工作中dubbo常见的错误及解决方案做了梳理。感兴趣的同学可以加收藏。????1、服务注册不上怎么办?•检查暴露服务的 Spring 配置有没...

2020-01-26 11:39:33

如何解决分布式事务

事务有四个特性:原子性、一致性、隔离性、持久性。这四个属性通常称为 ACID随着分布式架构理念提出,软件系统架构开始迈入一个新时代。一个臃肿的应用会拆分出若干个微服务中心,按业务域维度划分系统边界,大家各司其职,在自己负责的领域深耕细作,可谓好处多多。但同时也增加了系统复杂度,每个子业务系统都涉及数据库操作,如何解决分布式事务是一个绕不开的话题。什么是分布式事务,一句话概括:分布式事务...

2020-01-23 15:06:36

阿里主流开源框架大汇总

Fastjsonfastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器。快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson);强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum);零依赖(没有依赖其它任何类库除了JDK)。地址:https://github.com/alibab...

2020-01-18 22:02:21

欢迎关注我的微信公众号 “微观技术“,感谢大家支持!

如题:

2016-08-17 19:09:20

APNS开源包的内存泄露问题

APNS(全称:Apple Push Notification Service),主要是用于往苹果设备推送push消息通知!基本流程:今天要聊的问题集中在第4个环节,我们自己的服务器往苹果的消息中心推送通知。现状:历史原因,push的代码散落在各个应用中,随着新消息通道不断接入,开发、维护成本较高,开始考虑构建push中心,封装dubbo接口对外提供服务,对外屏蔽各种差异,将所有的push业务逐步

2015-09-29 21:35:39

MAT使用教程

MAT 全称 Eclipse Memory Analysis Tools 是一个分析 Java堆数据的专业工具,可以计算出内存中对象的实例数量、占用空间大小、引用关系等,看看是谁阻止了垃圾收集器的回收工作,从而定位内存泄漏的原因。什么时候会用到MAT?a) OutOfMemoryError的时候,触发full gc,但空间却回收不了,引发内存泄露b)java服务器系统异常,比如load飙高,io异

2015-09-27 00:36:16

jvm调优

jvm性能调优的目地:1)控制jvm的堆栈大小。比如当你的程序年轻代对象在某个时间段产生的比较多的时候,就需要控制年轻代的堆大小。同时还要控制总的JVM大小避免内存溢出2)控制GC的行为。GC是一个后台处理,但是它也是会消耗系统性能的,因此要根据运行程序的特点来更改GC行为。3)控制jvm线程的内存分配。如果是多线程程序,产生线程和线程运行所消耗的内存也是可以控制的。堆大小设置-Xms   初始堆

2014-05-24 17:04:50

Tomcat性能优化

压力测试web压力测试的实现原理都是通过发送大量的重复的页面请求来模拟多用户对被测系统的并发访问,以此达到产生压力的目地。产生压力的手段都是通过录制或编写压力脚本,这些脚本以多进程或多线程的方式在客户端运行,这样通过人为制造各种类型的压力,我们可以观察被测系统在各种压力情况下的反映,从而定位系统瓶颈,作为系统调优的基础。目前已经市场上的性能测试工具不下一百种,从单一的开放源码的免费小工具如 Apa

2014-05-22 23:25:30

大型系统架构演化

互联网系统一般会有几个特色标签:用户基数大、高并发高访问量、海量数据存储、业务更新频繁。看似复杂的系统也不是一蹴而就,任何事情都会经历一个由小到大的发展过程。今天我们就来看看一个系统是如何随着业务的扩张而不断演化的。1. 早期的系统由于业务简单,应用服务器和数据库都是在一台服务器。

2014-04-25 23:22:58

本地缓存的使用

缓存提升性能的效果是显而易见,

2014-04-06 21:30:25

装饰者模式&代理模式

一、装饰者模式装饰者模式,在保持原有功能不变的情况下将一个类重新装饰,使其具有更强大的功能,用一句成语形容“锦上添花”。类结构:Component:抽象组件,定义了一组抽象的接口,指定了被装饰的组件都有哪些功能。ComponentImpl:抽象组件实现类,完成了基本的功能实现Decorator:装饰器角色,持有Component的实例引用,有点递归的感觉。伪代码:Component c=new C

2014-04-01 09:17:38

适配器模式&观察者模式

一、适配器模式适配器模式就是一个类的接口不能被客户端接受,需要转换为另一种接口,从而使两个不匹配的接口能在一起工作。类结构:Adaptee:源接口,需要适配的接口Target:目标接口,暴露出去的接口Adapter:适配器,将源接口适配成目标接口举个现实例子:Adaptee就是相机中的内存卡片,Target就是电脑,而Adapter则是USB读卡器。适用场景:比如查物流信息,由于物流公司的系统都是

2014-04-01 09:17:30

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享宗师
    分享宗师
    成功上传21个资源即可获取
  • 蓝花
    蓝花
    子板块内专家分月排名榜第三