- 博客(223)
- 收藏
- 关注
转载 CSS 技巧一则 -- 不定宽溢出文本适配滚动
在日常布局当中,肯定经常会遇到文本内容超过容器的情况。非常常见的一种解决方案是超出省略。但是,有的时候,由于场景的限制,可能会出现在一些无法使用超出打点省略的方法的场景,譬如在导航栏中:这种情况下,在容器定宽但是文本又溢出且不能换行的情况下,我们就需要寻求另外的解决方案。hover 时弹出框提示一种可行的方案是在 hover 的时候,弹出一个文本框展示全文,最简单的就是在文本标签下添加 title 属性,填充我们需要的内容:<nav> <p title="溢出文本1 溢
2020-08-04 16:22:03
674
转载 Javascript中的8种常见数据结构(建议收藏)
1.Stack(栈)堆栈遵循LIFO(后进先出)的原则。如果你把书堆叠起来,上面的书会比下面的书先拿。或者当你在网上浏览时,后退按钮会引导你到最近浏览的页面。Stack具有以下常见方法:push:输入一个新元素pop:删除顶部元素,返回删除的元素peek:返回顶部元素length:返回堆栈中元素的数量Javascript中的数组具有Stack的属性,但是我们使用 function Stack() 从头开始构建Stackfunction Stack() { this.count = 0
2020-08-04 16:17:59
10140
转载 为何COUNT很慢却不写SLOW LOG
MySQL对COUNT(*)一直在优化。问题描述某日,群友反馈问题对大表COUNT(*)很慢,但却不会记录到slow log中,这是为什么呢?我自己根据他提供的信息,复现了这个问题:# MySQL版本是8.0.20[root@yejr.run]>\s...Server version: 8.0.20 MySQL Community Server - GPL...# 确认 long_query_time[root@yejr.run]>select @@glo
2020-08-03 17:04:22
509
转载 面试官:知道时间轮算法吗?在Netty和Kafka中如何应用的?
大家好,我是yes。最近看 Kafka 看到了时间轮算法,记得以前看 Netty 也看到过这玩意,没太过关注。今天就来看看时间轮到底是什么东西。为什么要用时间轮算法来实现延迟操作?延时操作 Java 不是提供了 Timer 么?还有 DelayQueue 配合线程池或者 ScheduledThreadPool 不香吗?我们先来简单看看 Timer、DelayQueue 和 ScheduledThreadPool 的相关实现,看看它们是如何实现延时任务的,源码之下无秘密。再来剖析下为何 Netty
2020-08-03 16:54:57
517
1
转载 字节跳动表格存储中的事务
1. 背景分布式表格存储系统在业界拥有广泛的应用场景。Google 先后发布了 Bigtable 和 Spanner 两代分布式表格存储系统,承接了其公司内部和外部云服务中的所有表格存储需求,其中 Bigtable 的开源实现 HBase 在国内外公司中都得到了广泛的使用。在字节跳动,随着头条全网搜索项目等业务的启动和发展,业务需要一个全局有序、容量巨大同时性能高效的表格存储系统以存储整个互联网中所有链接和网页,并保证互联网上发生的所有变更都被能实时的更新到表格存储系统中。我们团队最初使用 HBase
2020-08-03 16:52:35
354
转载 App引导页的秘密
想象一下,你被丢进一份新工作,却没有解释你的主要工作任务或如何完成它们。你可能不会很成功,也不会呆很久,对吧?拥有一个有效的入职流程是让新员工成功的关键。此外,每次引入一个新流程时,都需要再次进行培训,以便让每个人都采用它。用户界面也是如此,特别是当界面打算重复使用时。在本文中,我们将重点关注移动应用程序的引导页设计。**我们将引导页定义为让用户熟悉新界面,或引导使用不属于常规应用界面的特殊流程和UI元素。**这不仅包括教用户如何与界面交互,还包括完成任何必要的设置。此外,引导并不局限于首次使用的用户—
2020-08-03 16:49:59
587
转载 如何实现一行命令自动生成 Flutter 插件
为何要做代码生成工具一开始技术架构的搭建自底向上的。当我做出 Flutter 与 Native 之间的高性能通道后,自然而然地去想要提升易用性,降低开发者的使用门槛。当你从使用者角度去审视自己的产品时,就会自顶向下去设计一些 Feature 去满足目标用户的诉求。最终我决定开发一款命令行工具。它可以解析 Native 代码中的 API,生成对应的 Dart 代码,再进而支持生成 Flutter Plugin/Package 工程。生成的 Flutter 工程会通过 pub 依赖 DartNative:
2020-08-03 16:45:23
433
转载 JS纯前端实现audio音频剪裁剪切复制播放与上传
背景是这样的,用户上传音频文件,可能只需要几十秒就够了,但是常规的音乐都要3~5分钟,80%的流量都是不需要的,要是就这么传上去,其实是流量的浪费,如果可以在前端就进行剪裁,也就是只取前面一段时间的音频,岂不是可以给公司省很多流量费用,前端的业务价值就体现了。关键如何实现呢?下面,就以“截取用户上传音频前3秒内容”的需求示意下如何借助Web Audio API实现音频的部分复制与播放功能。一、不哔哔,直接正题实现步骤如下。1. File对象转ArrayBuffer在Web网页中,用户选择的文件是
2020-08-03 13:54:25
2861
转载 浅析Spring三级缓存解决循环依赖
今天主要分享的是Spring如何解决循环依赖的?这个也是一个Spring的高频面试题。下面我们就从源码的角度去剖析下这个问题。一、简介二、Spring的Bean创建过程三、Spring如何解决循环依赖四、小结来吧!一、简介在我们实际开发过程中,如果我们new出来的对象循环引用,那么就会死循环,直到OOM,然后挂掉。假如在线上发生,那么后果不堪设想。我们都知道,我们自己new出来的对象压根就不在IOC容器中,IOC都不带我们玩。在IOC容器中的Bean都是经过IOC容器的加载进去的。具体可以移
2020-07-31 16:59:56
1018
转载 C端产品经理转型B端?劝你三三三思!
现在的互联网行业,就像是35岁的互联网人一样,开始逐渐进入下半场。C端流量红利开始消退,很多企业开始了转型,将目光投向B端服务。阿里、腾讯也开始加码企业级服务的投资。产业互联网的兴起,不同产业的企业间互联,好像也给了广大焦虑的互联网产品人一个可选的新方向:从C端产品转型做B端产品。从C端转型到B端,同样还是做产品,你可能会觉得只是职责上的差异。但B端和C端又是如此的不同,考虑着转型到B端的你,从思维到方法,都需三思!一、C端和B端的定义先了解一下什么是C端产品和B端产品:C端:Consumer(
2020-07-31 16:50:29
1551
转载 如何写好代码?
写了多年的代码,始终觉得如何写出干净优雅的代码并不是一件容易的事情。按10000小时刻意训练的定理,假设每天8小时,一个月20天,一年12个月,大概也需要5年左右的时间成为大师。其实我们每天的工作中真正用于写代码的时间不可能有8个小时,并且很多时候是在完成任务,在业务压力很大的时候,可能想要达到的目标是如何尽快的使得功能work起来,代码是否干净优雅非常可能没有能放在第一优先级上,而是怎么快怎么来。在这样的情况下是非常容易欠下技术债的,时间长了,这样的代码基本上无法维护,只能推倒重来,这个成本是非常高的。
2020-07-31 16:22:33
161
转载 “kill -9”一时爽,秋后算账泪两行
原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。任何不保留此声明的转载都是抄袭。kill是杀死的意思,带有主动的意味。鉴于master、slave这样的名词,需要在计算机软件中进行整改,kill这样明显带有负面信息的单词,按理说也需要被干掉。不过,如果把命令名字改了,效果也许会更好。因为在Linux上,kill根本就不是杀死的意思。它只是想要给进程发送一个信号而已。使用kill -l可以看到长长的信号列表。对Java程序员来说,用的最多的就是kill -9,我也不知.
2020-07-31 16:13:41
201
转载 揭秘!文字识别在高德地图数据生产中的演进
一 背景作为一个DAU过亿的国民级软件,高德地图每天为用户提供海量的查询、定位和导航服务。地图数据的丰富性和准确性决定了用户体验。传统的地图数据的采集和制作过程,是在数据采集设备实地采集的基础上,再对采集资料进行人工编辑和上线。这样的模式下,数据更新慢、加工成本高。为解决这一问题,高德地图采用图像识别技术从采集资料中直接识别地图数据的各项要素,实现用机器代替人工进行数据的自动化生产。通过对现实世界高频的数据采集,运用图像算法能力,在海量的采集图片库中自动检测识别出各项地图要素的内容和位置,构建出实时更新
2020-07-30 15:35:26
302
转载 Kafka 和 RocketMQ 底层存储之那些你不知道的事
大家好,我是yes。我们都知道 RocketMQ 和 Kafka 消息都是存在磁盘中的,那为什么消息存磁盘读写还可以这么快?有没有做了什么优化?都是存磁盘它们两者的实现之间有什么区别么?各自有什么优缺点?今天我们就来一探究竟。存储介质-磁盘一般而言消息中间件的消息都存储在本地文件中,因为从效率来看直接放本地文件是最快的,并且稳定性最高。毕竟要是放类似数据库等第三方存储中的话,就多一个依赖少一份安全,并且还有网络的开销。那对于将消息存入磁盘文件来说一个流程的瓶颈就是磁盘的写入和读取。我们知道磁盘相对
2020-07-30 14:49:37
179
转载 应该选择RabbitMQ还是Kafka?
作者:王欢 译原文:https://medium.com/better-programming/rabbitmq-vs-kafka-1ef22a041793作为一个有丰富经验的微服务系统架构师,经常有人问我,应该选择 RabbitMQ 还是 Kafka?。基于某些原因, 许多开发者会把这两种技术当做等价的来看待。的确,在一些案例场景下选择 RabbitMQ 还是 Kafka 没什么差别,但是这两种技术在底层实现方面是有许多差异的。不同的场景需要不同的解决方案,选错一个方案能够严重的影响你对软件的设计
2020-07-30 14:46:27
562
转载 小图标,大学问
图标虽小,里面的门道可一点都不少。甚至可以说,图标的演化是 Web 技术演化的一个缩影。本文将带你回顾一下图标简史,了解一下图标技术的来龙去脉。古代:一个图标一张图史前时代的图标,正如我们的直觉一样,就是一张图片。那时候的网络很慢,一分钟只够下载一个页面,因此内容为王,美观是次要的,“没什么用”的图标还没有被人们视为页面上的必备元素。图标个数少、使用频率低,自然就没人在上面花心思了。近代:CSS Sprites(雪碧图)随着网上内容迅速丰富,内容的比拼已经没有更多花样可玩了,于是网站的竞争转向了“
2020-07-30 14:35:36
218
转载 iOS大解密:玄之又玄的KVO
导读:大多数 iOS 开发人员对 KVO 的认识只局限于 isa 指针交换这一层,而 KVO 的实现细节却鲜为人知。如果自己也仿照 KVO 基础原理来实现一套类 KVO 操作且独立运行时会发现一切正常,然而一旦你的实现和系统的 KVO 实现同时作用在同一个实例上那么各种各样诡异的 bug 和 crash 就会层出不穷。这究竟是为什么呢?此类问题到底该如何解决呢?接下来我们将尝试从汇编层面来入手以层层揭开 KVO 的神秘面纱…1. 缘起 AspectsSDMagicHook 开源之后很多小伙伴在.
2020-07-30 14:14:09
493
转载 合成生物第一股,凯赛生物IPO凭的是什么?
虎嗅投研全新栏目上线啦!Pro新股速递:覆盖每周重点IPO,助你一文了解新公司基本面。2020年8月3日(下周一),被誉为合成生物第一股的上海凯赛生物技术股份有限公司(下称“凯赛生物”)将于科创板IPO。招股书显示,凯赛生物此次拟公开发行股票数量不低于41,668,198股,预计募集资金约46.99亿元。照此估算,凯赛生物此次股票发行价格约112元/股。以凯赛生物完成发行后的4.17亿股估算,公司上市后市值预计约470亿元。2019年,公司的总营收为19.16亿元,同比增长9.44%,主营业务为生物原
2020-07-29 16:03:56
366
转载 腾讯对搜狗的收购,至少有下面三层含义
昨天(2020年7月27日),腾讯已经向搜狗发出了私有化收购邀约。如果不出意外,搜狗应该会很快被腾讯收购整合。本怪盗团当然不掌握什么内部信息,也不清楚腾讯管理层具体的想法。不过在我看来,这次收购至少应该包含了如下三层含义。首先, 从宏观层面讲,自从2019年以来,腾讯有一个清晰的变化趋势,那就是从“非正式帝国”转变为“正式帝国”。这一点,怪盗团此前的文章当中有过分析。在历史上,外界一般认为:阿里巴巴喜欢收购并表,腾讯则喜欢战略投资和联营。然而,上述刻板印象也是很晚才形成的——在2016年以前,阿里也不太喜
2020-07-29 16:01:57
692
转载 帖子中心,1亿数据,架构如何设计?
帖子中心,是互联网业务中,一类典型的“1对多”业务,即:一个用户能发布多个帖子,一个帖子只有一个发布者。随着数据量的逐步增大,并发量的逐步增大,帖子中心这种“1对多”业务,架构应该如何设计,有哪些因素需要考虑,是本文将要系统性讨论的问题。什么是x对x?所谓的“1对1”,“1对多”,“多对多”,来自数据库设计中的“实体-关系”ER模型,用来描述实体之间的映射关系。什么是“1对1”业务?用户中心,一个用户只有一个登录名,一个登录名只对应一个用户,这是典型的1对1业务。什么是“1对多”业务?帖子中心
2020-07-29 15:58:01
237
转载 一文探讨 RPC 框架中的服务线程隔离
Kirito 推荐语:最近秋招开始了,很多学生开始准备起了秋招,有很多人想知道进一些有名的互联网公司实习有什么要求,正好最近跟一位阿里春招的实习小伙子聊了一些 RPC 相关的知识点,于是我把这篇他的思考转发过来,给大家参考下,我觉得有这样的实力,进大厂实习应该是没有问题的。以下是原文:自从春招实习之后,眼界真的就一下子开阔起来了,也感觉到了以前的自己好菜啊(虽然现在也是,笑~)。果然学习之路不能停!微服务如今应当是一个优秀的程序员必须学习的一种架构思想,而RPC框架作为微服务的核心,不说读一遍源码吧,起
2020-07-29 15:22:40
223
转载 大规格文件的上传优化
整体思路第一步是结合项目背景,调研比较优化的解决方案。文件上传失败是老生常谈的问题,常用方案是将一个大文件切片成多个小文件,并行请求接口进行上传,所有请求得到响应后,在服务器端合并所有的分片文件。当分片上传失败,可以在重新上传时进行判断,只上传上次失败的部分,减少用户的等待时间,缓解服务器压力。这就是分片上传文件。大文件上传那么如何实现大文件分片上传呢?流程图如下:大文件上传流程图分为以下步骤实现:1. 文件 MD5 加密—MD5 是文件的唯一标识,可以利用文件的 MD5 查询文件的上传状
2020-07-29 15:18:33
184
转载 “不温不火”的软件质量
“ 关于软件测试和软件质量,每个人都有自己的理解和看法,今天我在这里讲讲我的一点点认识。”01—质量和测试题目中我用了“不温不火的软件质量”,为啥不是“不温不火的软件测试”。我认为这两个概念和事物存在很大的差异。首先讲测试,是软件开发生命周期中的一个小小的环节,我们把目光聚焦到测试这个环节,只关注进入测试这个阶段的输入和产出,就会遇到测试轮次很多、开发周期变长、上线质量不满意等等问题。测试这个点承受了很多时候本不该它承受的期望和压力。软件质量,需要我们去关注周期中的所有环节,需求阶段要有相对高
2020-07-29 15:14:01
172
转载 Kafka和RocketMQ底层存储之那些你不知道的事
大家好,我是yes。我们都知道 RocketMQ 和 Kafka 消息都是存在磁盘中的,那为什么消息存磁盘读写还可以这么快?有没有做了什么优化?都是存磁盘它们两者的实现之间有什么区别么?各自有什么优缺点?今天我们就来一探究竟。存储介质-磁盘一般而言消息中间件的消息都存储在本地文件中,因为从效率来看直接放本地文件是最快的,并且稳定性最高。毕竟要是放类似数据库等第三方存储中的话,就多一个依赖少一份安全,并且还有网络的开销。那对于将消息存入磁盘文件来说一个流程的瓶颈就是磁盘的写入和读取。我们知道磁盘相对
2020-07-29 15:08:28
386
转载 Java生鲜电商平台-高并发核心技术订单与库存实战
一、 问题一件商品只有100个库存,现在有1000或者更多的用户来购买,每个用户计划同时购买1个到几个不等商品。如何保证库存在高并发的场景下是安全的?(1)不多发(2)不少发二、 下单的步骤(1)下单(2)下单同时预占库存(3)支付(4)支付成功真正减扣库存(5)取消订单(6)回退预占库存三、 什么时候进行预占库存?**(1)方案一:**加入购物车的时候去预占库存**(2)方案二:**下单的时候去预占库存**(3)方案三:**支付的时候去预占库存四、 分析(1)方案一:加
2020-07-28 15:44:28
275
转载 十年以上程序员才懂的一些 coding 心得
软件开发里所有的东西都已经发明出来了!人们总是在做重复的事情,假装在发明新的东西。如果有个东西让你觉得很酷很新,那它肯定是从 Smalltalk,HAKMEM,Ivan Sutherland,Douglas Engelbart,早期的 IBM 或者 Bell 实验室其中之一抄来的。别相信编译器,别相信工具,别相信文档,别相信你自己。我们已经不需要更多的编程语言了!但是… 你还是会立马跑去发明一个新的语言。恩…我猜,你那个超酷的新语言肯定还是用的 IEEE-754 浮点数,以及定宽整数吧。维护代码比写代
2020-07-28 15:25:58
182
转载 如何低成本的完成一个副业项目
斜杠青年的时代,尝试更多项目,会给自己带来更多机会,也给自己带来更多人生体验,但是我们如何有效的完成一个副业项目?完成一个副业项目很难,这不是什么秘密。我经历过一些副业项目,也顺利完成了一些项目。在这篇文章中,我将重点介绍一些行之有效的行动和措施。在繁忙的日程安排下,如何开展并完成副业项目?关键点在于优化应对被打断。与其指望有几个小时的深度工作,不如实事求是地适应它,以更好的方式来利用时间,通过有技巧地快速切换状态,来降低打断的成本。一个失败的副业故事也许你有类似的经历,在项目之初:积极性高优
2020-07-28 15:24:21
292
转载 你只修改了2行代码,为什么需要两天时间?
“你只修改了2行代码,为什么需要两天?”这是程序员最常碰到的质问,表面看这是一个非常合理的问题,但它做了一些不合适的假设:代码行数 = 努力代码行数 = 价值每一行代码价值都相同所幸上面这些断言都不是真的。一个简单的修复,为什么需要花两天时间?下面列举了一些常见原因。因为如何重现问题的描述很模糊。程序员可能需要花几个小时才能重现 bug。有些开发人员会立即联系报告 bug 的用户,要求提供更多的信息再进行分析。有些程序员会试着用提供的信息做尽可能多的事情。我知道有些开发者不喜欢修复 bug,所
2020-07-28 15:23:01
246
转载 Spotify 技术升级的三步走策略
技术升级易烂尾根据我们的经验,大规模的技术升级或迁移往往在开始的时候迅速推进,但随着时间的推移往往会陷入泥沼,最终导致大部分系统即使成功迁移,也还是会留下一些老版本的尾巴。就好比无人看管时花园里的杂草便会发芽长大,也是技术基础架构碎片化的原因之一。大约一年半前,我们开始在spotify正视这个问题。在这篇文章中,我们将分享我们的思路和方法,以及下一步将怎么做。多吃萝卜少挨揍在深入探讨之前,我们应该承认,一家公司的工程文化会对人们如何看待以及如何处理这个问题起到很大的作用。在Spotify,我们的工程
2020-07-28 15:20:57
308
转载 一些项目管理的思考
一些项目管理的思考|0x00 关于周会和周报说起周会,可能大多数的团队,都在以流水账的形式汇报自己的工作:A做了什么、B做了什么……以此类推。如果有特殊的情况,则简单说一下,具体的方案也要等到会后讨论了。周报也是类似,我们越来越强调周报要“简单”、“简短”,背后也是不希望再以流水账的形式说自己做了什么,久而久之,不仅写的人疲惫,看的人也没什么兴趣在周报上面了,只会复制粘贴一下重点,然后继续发团队周报。这其实是一个不太好的趋势,那就是团队的工作越来越业务化了,每个人都在从事自己的事情,自然就谈不上团队中
2020-07-28 14:59:13
178
转载 如何把按钮设计做到最好?看完这一篇就够了!
按钮交互的设计由来为了设计合适的交互方式,我们需要回顾实体按钮的发展历史,作为UI组件之一的按钮来源于实体按钮,现在广泛用于互联网产品中。按钮非常神奇,只需手指触摸,就可以打开一个APP、启动汽车或者一个系统,即使用户不懂背后的原理。在《Power Button》这本书里,Rachel Plotnick研究了今天按钮操作的文化起源,描述了按钮成为互联网产品的命令方式,可以实现毫不费力控制。“你只需按快门,其余的我们来做。”—柯达相机用抓人眼球的口号来吸引潜在的顾客。这正是迄今为止,按钮吸引用户的
2020-07-27 13:17:42
437
转载 JVM系列之:String.intern和stringTable
简介StringTable是什么?它和String.intern有什么关系呢?在字符串对象的创建过程中,StringTable有起到了什么作用呢?一切的答案都在本文中,快来看看吧。intern简介intern是String类中的一个native方法,所以它底层是用c++来实现的。感兴趣的同学可以去查看下JVM的源码了解更多的内容。这里我们主要谈一下intern的作用。intern返回的是这个String所代表的对象,怎么理解呢?String class维护了一个私有的String pool,
2020-07-26 17:17:06
174
转载 为什么要分库分表?
为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?面试官心理分析其实这块肯定是扯到高并发了,因为分库分表一定是为了支撑高并发、数据量大两个问题的。而且现在说实话,尤其是互联网类的公司面试,基本上都会来这么一下,分库分表如此普遍的技术问题,不问实在是不行,而如果你不知道那也实在是说不过去!面试题剖析为什么要分库分表?(设计高并发系统的时候,数据库层面该如何设计?)说白了,
2020-07-26 17:09:34
178
转载 手写死锁及死锁排查
1、概念死锁是指两个或多个以上的进程在执行过程中,因争夺资源而造成一种互相等待的现象,若无外力干涉那他们都将无法推进下去,如果资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。产生死锁的原因系统资源不足进程运行推进的顺序不对资源分配不当死锁产生的四个必要条件互斥解决方法:把互斥的共享资源封装成可同时访问占有且等待解决方法:进程请求资源时,要求它不占有任何其它资源,也就是它必须一次性申请到所有的资源,这种方式会导致资源效率低。非抢占式.
2020-07-26 17:06:41
217
转载 React和Vue语法并列比较:状态管理
来源:https://medium.com/js-dojo/作者:Oahehc (Andrew)这是有关React和Vue语法比较的第三篇文章。在本文中,将比较两种生态系统中最著名的状态管理库(Redux和Vuex)的语法。第一篇文章:React.js和Vue.js的语法并列比较第二篇文章:Next.js和Nuxt.js的语法比较,Vue和React的两大SSR解决方案议程创建StoreAction异步ActionReducer | MutationCombine-Reducers
2020-07-26 17:00:50
332
转载 停止犯下这 5 个 JavaScript 风格错误
有多少次,你打开一个旧的项目,发现混乱的代码,当你添加一些新的东西时,很容易崩溃?我们都有过这样的经历。为了减少难以读懂的javascript的数量,我提供了以下示例。这些都是我过去所犯过的错误。对具有多个返回值的函数使用数组解构假设我们有一个返回多个值的函数。一种可能的实现是使用数组解构,如下所示:const func = () => { const a = 1; const b = 2; const c = 3; const d = 4; return [a,b,c,d
2020-07-26 16:54:51
208
转载 从业务流程角度:分析TMS系统各个功能模块
新零售的兴起及“最后一公里”概念的提出,使物流这个传统行业获得空前巨大的市场前景,也受到越来越多企业的关注。现代物流体量大又十分注重高效性,为了满足以上需求需要借助一些管理系统,常用的管理系统有TMS、OSS、PMS、CWS等,其中TMS(Transportation Management System)即运输管理系统,能高效、合理分配资源并处理管控运输任务,是现代物流运输企业使用的核心系统。通常来讲运输业务流程分三个阶段完成:第一阶段,货主提出运输需求,建立任务订单并推送给运营商;第二阶段,运营商
2020-07-26 16:51:07
4561
转载 编码一时爽,重写火葬场?这些公司都重写了软件,结局却不同
作者 | Herb Caudill译者 | 无名生存,还是死亡,这是一个问题。重写,还是不重写,这是导致生存或死亡的另一个问题。这是一个很老套的问题:你应该重写应用程序吗?又或者这是“任何一家软件公司都会犯的一个战略性错误”?或许,对于一个已经很成熟的代码库来说,这并不是一个二选一的问题。大约 20 年前,Joel Spolsky 在他的文章“Things You Should Never Do”中对网景公司重写 Netscape 代码库的行为进行了一番痛斥。他认为,永远不要重写功能性应用程序,因
2020-07-26 15:11:09
424
转载 滴滴开源的分布式id生成系统
ID Generator id生成器 分布式id生成系统,简单易用、高性能、高可用的id生成系统简介Tinyid是用Java开发的一款分布式id生成系统,基于数据库号段算法实现,关于这个算法可以参考美团leaf或者tinyid原理介绍。Tinyid扩展了leaf-segment算法,支持了多db(master),同时提供了java-client(sdk)使id生成本地化,获得了更好的性能与可用性。Tinyid在滴滴客服部门使用,均通过tinyid-client方式接入,每天生成亿级别的id。tinyi
2020-07-25 15:48:17
668
转载 RecyclerView的曝光统计
本文提供了一种Android列表曝光统计的功能实现。使开发者无需关心数据收集过程,只需简单的设置即可在适当的曝光时机通知开发者所需的曝光数据。产品需求中我们经常会有统计recyclerView的每个item的曝光需求:recyclerView上下滚动每个item从不可见进入到屏幕可见范围(这里包含item的可见范围,还有item的曝光时长)在tab切换,或者页面切换的时候会引起recyclerView从不可见到可见的变化(当前屏幕上可见的item都算一次曝光)数据变化引起的曝光为了达到产品需求
2020-07-25 14:32:56
1328
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人