自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

转载 【前端教程】干货 | 已配置4000+页面,携程前端组件化探索之“乐高”运营系统

作者简介孙罡,携程市场部活动平台前端工程师,主要负责市场“乐高”平台搭建,组件开发,以及各种定制活动的开发工作。一、前言市场部活动组主要负责各种运营活动的相关开发,分为常规运营活动和定制运营活动。常规运营活动因为组件(模块)具有复用性,并且配置化需求非常多,因此我们建设了一个可视化页面搭建平台——乐高(legao)活动平台。乐高平台将活动页面拆分为各种组件模块,运营人员通过自主的配置就能快速...

2020-04-16 11:43:37 1031 1

转载 【后端教程】fasthttp中运用哪些go优化技巧?

fasthttp刚出道的时候号称比net/http快十倍,更少的内存分配。并同时在github上给出一些go开发上的小技巧。本文主要通过源码来窥探下fasthttp里是如何使用这些技巧的。减少[]byte的分配,尽量去复用它们两种方式进行复用:sync.Poolslice = slice[:0]。所有的类型的Reset方法,均使用此方式。例如类型URI、Args、ByteBuffer、...

2020-04-16 11:41:26 812

转载 【Java 教程】JVM - 关于垃圾收集的常见问题

引用Java有哪四种引用?分别介绍一下?在JDK 1.2 之后,对引用的概念进行了扩充,把引用分为强引用、软引用、弱引用、虚引用。强引用:一般的引用,只要强引用还存在,垃圾收集器就不会回收这个对象;软引用SoftReference:描述一些还有用但不是必须的对象。在系统将要发生OOM之前,会把这些对象列进回收范围之中进行第二次回收,如果第二次回收后还是没有足够的内存,才会抛OOM异常;...

2020-04-16 11:32:22 357

转载 再有人问你为什么MySQL用B+树做索引,就把这篇文章发给她

作者 l 安静的boy来源 l Hollis(ID:hollischuang)索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完整。本文就来从头到尾介绍下数据库的索引。索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。 索引最形象的比喻就是图书的目录了。注意这里的大量,数据...

2020-04-16 11:31:09 267

转载 【Linux 教程】Linux select 一网打尽

1原型int select (int __nfds, fd_set *__restrict __readfds,如你所知,select是IO多种复用的一种实现,它将需要监控的fd分为读,写,异常三类,使用fd_set表示,当其返回时要么是超时,要么是有至少一种读,写或异常事件发生。2相关数据结构FD_SETFD_SET是select最重要的数据结构了,其在内核中的定义如下:typ...

2020-04-16 11:28:46 188

转载 【后端技术】吸取教训:一段网上找的代码突然爆了,项目出现大BUG

本人是做游戏服务器开发的,碰到一个需求,给符某些要求的玩家的发送道具奖励,奖励的数量根据离线的天数计算。这个需求实现起来很简单,只需要在玩家上线的时候计算上次离线时间和当前时间间隔的天数,然后根据策划的算法,计算出道具种类与数量,发一封邮件给玩家就可以了。计算两个时间间隔天数的函数没有现成的,自己又懒得写,就上谷歌搜了下,选了第一条结果,代码如下[](javascript:void(0); ...

2020-04-16 11:27:57 133

转载 【后端教程】甲小蛙战记:PHP2Java 排雷指南

大家好,我是来自马蜂窝旅游网旅游平台研发的甲小蛙。从前是一名 PHP 工程师,现在可能是一名 PHJ 工程师,以后…前阵子,我从大道消息听说公司商品订单技术栈要推 Java。我是一个喜欢走在时代前列线上的人,凡是要做到领先。我对 Java 也是仰慕已久,于是花了两天时间学习 Java,并调研各种框架和解决方案,决心要把商品和订单的主要功能用 Java 重构掉。在经历了 798 难后现在这些东...

2020-04-14 22:33:17 402

转载 【后端教程】PHP代码加密实践

在我们开发的项目中,有一部分可能是用于商业用途,会部署在客户提供的机器环境中。因为PHP本身是解释型语言,所以未进行处理的代码,就会有泄露或被修改的风险。那么我们可能会想到最简单有效的方法就是进行加密混淆,然后配合一系列的校验,来保护我们的代码。那么本篇文章中,我们就采用了开源的PHP加密扩展 screw-plus 进行相关实践分析。目前市场上有多种加密方案,但基本都是收费的。我们本次实践采用了...

2020-04-14 22:29:26 995

转载 【后端教程】SRE重案调查组 第六集 | 剖析Java的非常规线程死锁问题

导读本文将分享eBay SRE部门遇到的某个非常规Java应用程序死锁问题。SRE侦探们将从最表象的问题入手,逐步分析,并重现代码,提出该类问题的解决方案,最后总结Java常规及非常规死锁问题的分析及定位,希望能对同业人员有所启发。在多线程并发环境下,为了保证某些共享资源的状态一致性,通常我们会对这些资源的访问进行加锁,只有获得锁的线程可以使用该资源,不能获得锁的线程要排队等待或者放弃访问。对...

2020-04-14 22:26:32 165

转载 【后端教程】Go实现简单TCP扫描器

Go在网络应用编程方面堪称完美。它自带的标准库也很优秀,在开发过程中可以给予我们很多帮助。在本文中,我们将会用Go写一个简单的TCP扫描器。整个程序的代码在50行以内。在我们开始动手之前,先介绍一些理论知识。不得不说,TCP是比我们介绍的要复杂的多,但是我们只介绍一点基础知识。TCP的握手有三个过程。首先,客户端发送一个 syn 的包,表示建立回话的开始。如果客户端收到超时,说明端口可能在防火...

2020-04-14 22:25:19 320

转载 【后端教程】Kafka 为什么使用消费者组?

1. 消费者组的特点这是 kafka 集群的典型部署模式。消费组保证了:一个分区只可以被消费组中的一个消费者所消费一个消费组中的一个消费者可以消费多个分区,例如 C1 消费了 P0, P3。一个消费组中的不同消费者消费的分区一定不会重复,例如:C1 -> P0、P3所有消费者一起消费所有的分区,例如 C1 和 C2 共同完成了对 P0、P1、P2、P3 的消费。在不同...

2020-04-14 22:23:36 237

转载 【Java 教程】一文聊透 Dubbo 优雅停机

1 前言一年之前,我曾经写过一篇《研究优雅停机时的一点思考》,主要介绍了 kill -9,kill -15 两个 Linux 指令的含义,并且针对性的聊到了 Spring Boot 应用如何正确的优雅停机,算是本文的前置文章,如果你对上述概念不甚了解,建议先去浏览一遍,再回头来看这篇文章。这篇文章将会以 Dubbo 为例,既聊架构设计,也聊源码,聊聊服务治理框架要真正实现优雅停机,需要注意哪些细...

2020-04-14 22:21:10 388

转载 【Java 教程】拼不过 GO?阿里如何重塑云上的 Java

音乐无国界,但是音乐人有国界。云原生亦如此。虽没有限定的编程语言,但应用所使用的编程语言已经决定了应用部署运行的行为。ElasticHeap**Java 常因为耗资源而受诟病,其中最显著一点就是 Heap 对内存的占用,即便没有请求在处理也没有对象分配,进程仍然会保留完整的堆内存空间,保障 GC 进行分配内存和操作内存的快速敏捷。**AJDK ZenGC/ElasticHeap 双十一全面支...

2020-04-14 22:17:37 286

转载 【Java 教程】JVM垃圾回收与一次线上内存泄露问题分析和解决过程

前言内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。Java是由C++发展来的,抛弃了C++中一些繁琐容易出错的东西,程序员忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,而Java的GC(Garbage Collection)是自动检测不用的对象,达到自动回收,既然是自动...

2020-04-14 22:12:57 350

转载 【后端教程】Go实现简单负载均衡

负载均衡在Web体系架构中一直是扮演着非常关键的角色。它可以实现在一组后端服务之间进行负载分配,从而增加服务的可扩展性。由于配置了多个后端服务,因此可以提高服务的可用性。在发生故障的时,负载均衡器可以帮我们把请求转发到正常运行的节点上。在使用过像 Nginx 之类的专业的负载均衡之后,为了加深对负载均衡的原理理解,本次我们使用 Golang 也来实现一个简单的负载均衡。1工作原理均衡器可以...

2020-04-14 22:12:03 438

转载 【后端教程】如何正确发布PHP代码

几乎每一个 PHP 程序员都发布过代码,可能是通过 ftp 或者 rsync 同步的,也可能是通过 svn 或者 git 更新的。一个活跃的项目可能每天都要发布若干次代码,但是现实却是很少有人注意其中的细节,实际上这里面有好多坑,很可能你就在坑中却浑然不知。一个正确实现的发布系统至少应该支持原子发布。如果说每一个版本都表示一个独立的状态的话,那么在发布期间,任何一次请求只能在单一状态下被执行。如...

2020-04-14 22:10:54 439

转载 【后端教程】Redis 基本类型及其数据结构

正文以前在使用Redis的时候,只是简单地使用它提供的基本数据类型和接口,并没有深入研究它底层的数据结构。最近打算重新学习梳理一下Redis方面的知识,所以打算从介绍Redis的基本类型及其数据结构入手。redisObjectRedis的key是顶层模型,它的value是扁平化的。Redis中,所有的value都是一个object,它的结构如下:`typedef struct redi...

2020-04-13 11:05:51 173

转载 MySQL 自增ID的几个小问题

下面这几个小问题都是基于 InnoDB 存储引擎的。ID最大的记录删除后,新插入的记录ID是什么例如当前表中有ID为1,2,3三条记录,把3删除,新插入记录的ID从哪儿开始?答案: 从4开始。实验创建表 tb0,ID自增:create table tb0(id int unsigned auto_increment primary key);插入3条记录:insert into...

2020-04-13 11:04:23 359

转载 【Linux 教程】如何进行I/O评估、监控、定位和优化?

生产中经常遇到一些IO延时长导致的系统吞吐量下降、响应时间慢等问题,例如交换机故障、网线老化导致的丢包重传;存储阵列条带宽度不足、缓存不足、QoS限制、RAID级别设置不当等引起的IO延时。本文由社区专家杨建旭根据社区活动整理,包括其分享的相关知识点分享和大家关心的典型问题,供大家参考。01 评估IO能力的前提评估一个系统IO能力的前提是需要搞清楚这个系统的IO模型是怎么样的。那么IO模型是...

2020-04-13 11:03:20 317

转载 【后端教程】96秒100亿!如何抗住双11高并发流量?

来源:uee.me/c9UsN今年双 11 全民购物狂欢节进入第十一个年头,1 分 36 秒,交易额冲到 100 亿 !比 2018 年快了近 30 秒,比 2017 年快了近 1 分半!这个速度再次刷新天猫双 11 成交总额破 100 亿的纪录。那么如何抗住双 11 高并发流量?接下来让我们一起来聊聊高可用的“大杀器”限流降级技术。服务等级协议我们常说的 N 个 9,就是对 SLA 的一...

2020-04-13 10:59:06 198

转载 为什么MySQL的索引不采用kafka的索引机制

第一眼看到这个问题,皮皮也是很迷惑的,谁没事会问这种问题。然而,事实上这居然是一道真实的面试题。本来皮皮以为“皮友”只是皮着调侃一下的,既然是道面试题,那就要稍微地分析分析、说道说道了。[图片上传失败…(image-4f5e16-1586746471195)]首先,从时间上来说,这是不同时期的两个典型产品,MySQL要早于Kafka。首先我们来说一说MySQL的历史。MySQL可以追溯到1...

2020-04-13 10:54:59 285

转载 【Linux 教程】网络检测神器 ss 命令,你可能根本就不会用!

今天我们来介绍一下 Linux ss 命令。ss 是 Socket Statistics 的缩写,用来统计 socket 连接的相关信息,它跟 netstat 差不多,但有着比 netstat 更强大的统计功能,能够显示更多更详细的连接信息。刚开始接触 ss 命令可能会比较困难,我们可通过 ss -h 或者 ss -help ...

2020-04-13 10:50:15 296

转载 我是如何将业务代码写优雅的

0x00 前言我是一名来自蚂蚁金服-保险事业群的前端工程师,在一线大厂的业务部门写代码,非常辛苦但也非常充实。业务代码不同于框架代码、个人项目或者开源项目,它的特点在于逻辑复杂、前后依赖多、可复用性差、迭代周期短,今天辛辛苦苦写的代码,上线运行一周可能就下线了。能熟练书写框架代码、构建底层基础设施的工程师不一定能写好业务代码。有人说,业务代码无非就是按部就班,优不优雅?who care?。但实...

2020-04-13 09:28:00 209

转载 统一Elasticsearch、MySQL、Hive的SQL查询引擎,我们把它开源了!

作者 | 刘思源编辑 | Natalie随着业务的不断增多,为满足不同场景下对计算时延和吞吐的需求,各式各样的数据源大显身手。然而,由于不同数据源的发展历程不同,迭代速度不一,无法向用户提供统一的数据处理范式。且数据源所处介质天然隔离,交叉关联分析阻碍重重,导致数据人员要为此承担高额的学习和分析成本。那么面对这些问题,360 是如何构建高效统一的 SQL 查询引擎呢?以下内容来自 ArchS...

2020-04-13 09:25:45 1175

转载 Three.js - 走进3D的奇妙世界

文章来源:宜信技术学院 & 宜信支付结算团队技术分享第6期-支付结算部支付研发团队前端研发高级工程师-刘琳《Three.js - 走进3D的奇妙世界》分享者:宜信支付结算部支付研发团队前端研发高级工程师-刘琳随着人们对用户体验越来越重视,Web开发已经不满足于2D效果的实现,而把目标放到了更加炫酷的3D效果上。Three.js是用于实现web端3D效果的JS库,它的出现让3D应用...

2020-04-13 09:23:32 350

转载 【后端教程】京东API网关实践之路!

背景京东作为电商平台,近几年用户、业务持续增长,访问量持续上升,随着这些业务的发展,API网关应运而生。API网关,就是为了解放客户端与服务端而存在的。对于客户端,使开放给客户端的接口标准统一,以降低客户端的接入成本;对于服务端,使服务端无需关注接口暴露在公网面临的问题而着眼于业务的实现,来提升开发效率。在刚刚过去的全民狂欢购物节,API网关如何做才能高效的处理近千万的并发请求是本文的重点。...

2020-04-13 09:19:44 866

转载 【后端教程】简历写高并发?那限流你必须要会!

开涛大神在博客中说过:在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。本文结合作者的一些经验介绍限流的相关概念、算法和常规的实现方式。缓存缓存比较好理解,在大型高并发系统中,如果没有缓存数据库将分分钟被爆,系统也会瞬间瘫痪。使用缓存不单单能够提升系统访问速度、提高并发访问量,也是保护数据库、保护系统的有效方式。大型网站一般主要是“读”,缓存的使用很容易被想到。在大型“写”系统中,...

2020-04-12 10:26:34 451

转载 深入理解 PHP7 unset 真的会释放内存吗?

01关于unset的一些说法有人说:unset() 并不真正释放内存;unset() 函数只能在变量值占用内存空间超过 256 字节时才会释放内存空间;只有当指向该变量的所有变量(如引用变量)都被销毁后,才会释放内存;unset() 只是在释放大变量(大量字符串, 大数组)的时候才会真正 free 内存。02首先认知 unset 真的是函数吗?验证方法之一$...

2020-04-12 10:25:07 523

转载 Java编码技巧之高效代码50例

导读:世界上只有两种物质:高效率和低效率;世界上只有两种人:高效率的人和低效率的人。——萧伯纳同理,世界上只有两种代码:高效代码和低效代码;世界上只有两种人:编写高效代码的人和编写低效代码的人。如何编写高效代码,是每个研发团队都面临的一个重大问题。本文作者根据实际经验,查阅了大量资料,总结了**“Java高效代码50例”,让每一个Java程序员都能编写出"高效代码"**。1.常量&变...

2020-04-12 10:18:54 270

转载 【Java 教程】再也不用担心被虐啦,高频率JVM面试题,都在这里!

JVM(Java虚拟机)简单来说就是运行Java代码的解释器,作为螺丝钉程序员JVM其实了解下就差不多啦,不懂JVM内部细节照样能写出优质的代码!但是一到造火箭、飞机的场景(面试)不懂JVM的你,会被面试官虐的体无完肤,本期内容列举常见的JVM面试题:说一JVM的内存结构是什么样子的?什么时候对象可以被收回?常见的垃圾回收器算法有哪些,各有什么优劣?什么时候对象会进入老年代...

2020-04-12 10:14:03 233

转载 【前端教程】React Hooks: 没有魔法,只是数组

原文链接: https://medium.com/@ryardley/react-hooks-not-magic-just-arrays-cd4f1857236e我是 React 新特性 Hooks 的粉丝。但是,在你使用 React Hooks的过程中,有一些看上去 很奇怪的限制 。在本文里,对于那些还在为了理解这些限制而苦苦挣扎的同志,我尝试通过一些列图表的方式,来解释为什么会存在这些限制。...

2020-04-12 10:12:50 632

转载 【后端教程】如何扩展一个OpenResty模块

因为 Lua 本身并没有继承之类的语法,所以我们不能通过 OOP 的套路来扩展模块,不过实际上对于 Lua 来说,扩展一个模块有更简单的方法,下面我们以 lua-resty-string 模块中的 aes 加解密功能为例子来说明一下。在 aes 加解密的过程中,有一个「填充」的过程,相关技术细节可以参考我以前写的「聊聊AES」,当然,不懂也没关系,你只要知道目前的 resty.aes 不支持配置...

2020-04-12 10:09:21 366

转载 Java: 对象不再使用时赋值为null的作用和原理

前言许多Java开发者都曾听说过“不使用的对象应手动赋值为null“这句话,而且好多开发者一直信奉着这句话;问其原因,大都是回答“有利于GC更早回收内存,减少内存占用”,但再往深入问就回答不出来了。鉴于网上有太多关于此问题的误导,本文将通过实例,深入JVM剖析“对象不再使用时赋值为null”这一操作存在的意义,供君参考。本文尽量不使用专业术语,但仍需要你对JVM有一些概念。示例代码我们来看...

2020-04-12 10:06:13 518

转载 一台java服务器可以跑多少个线程?

一台java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值。打出jstack文件,通过IBM Thread and Monitor Dump Analyzer for Java工具查看如下:共计1661个线程,和监控数据得出的吻合。但这个数量应该是大了,我们都知道线程多了,就会有线程切换,带来性能开销。当时就想到一台java服务器到底可以跑多少个线程呢?跟什么...

2020-04-12 10:04:48 287

转载 【后端教程】从零开始入门 K8s | 手把手带你理解 etcd

**导读:**etcd 是用于共享配置和服务发现的分布式、一致性的 KV 存储系统。本文从 etcd 项目发展所经历的几个重要时刻开始,为大家介绍了 etcd 的总体架构及其设计中的基本原理。希望能够帮助大家更好的理解和使用 etcd。etcd 项目的发展历程etcd 诞生于 CoreOS 公司,它最初是用于解决集群管理系统中 OS 升级的分布式并发控制以及配置文件的存储与分发等问题。基于此...

2020-04-12 10:00:31 163

转载 Web性能领域常见的专业术语

测量与排查网页的性能瓶颈,是一名专业Web性能优化者的基本功。本章将详细介绍Web性能领域的一些专业术语,通过这些术语也可以侧面了解是哪些因素在影响加载性能。背景衡量网页的性能是一个比较琐碎的事情,因为没有某一个指标或数字可以直接告诉我们网页的性能怎样,因为加载网页不是一瞬间的事,准确地说,它是一个过程,不存在某个单独的 “时间点” 可以完全体现出网页的性能,因为在网页加载的过程中,有很多个比...

2020-04-12 09:38:06 267

转载 【后端教程】你的项目应该如何正确分层?

1.背景说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻...

2020-04-11 11:25:48 1405

转载 MySQL8 的 Hash join 算法

以前 MySQL 的 join 算法只有 nested loop 这一种,在 MySQL8 中推出了一种新的算法 hash join,比 nested loop 更加高效。下面我就看看它是怎么工作的。用这个SQL作为例子:hash join 工作过程分为2个阶段:build 构建阶段probe 探测阶段1. 构建阶段从参与join的2个表中选一个,选择占空间小的那个表,不是行数...

2020-04-11 11:23:57 317

转载 鹰眼Android平台崩溃监控实践

在移动应用开发及应用发布阶段经常碰到应用崩溃的情况。对于开发阶段出现的崩溃,开发者可以从后台日志中获取崩溃堆栈进行分析;而线上出现的崩溃,开发者看不到后台日志,难以获取崩溃堆栈。这就需要一款可以监控线上应用崩溃情况的工具,当应用出现崩溃时及时收集堆栈信息进行分析,然后上报给服务端,开发者就可以在控制台实时了解应用的崩溃情况。为了满足监控移动端线上崩溃的需求,我们打造了鹰眼监控系统。鹰眼支持iOS、...

2020-04-11 11:22:52 911

转载 【后端教程】微服务 2.0 技术栈选型手册

一、前言二、选型准侧三、微服务基础架构核心关注点四、服务框架选型五、运行时支撑服务选型六、服务监控选型七、服务容错选型八、后台服务选型九、服务安全选型十、服务部署平台选型十一、写在最后一、前言2014年可以认为是微服务1.0的元年,当年有几个标志性事件一是Martin Fowler在其博客上发表了“Microservices”一文,正式提出微服务架构风格;二是Ne...

2020-04-11 11:21:26 263

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除