开发者

[GIT实践]git实践系列之-- refs/for/branch和refs/head/branch

◇◆丶佛笑我妖孽 提交于 2021-02-19 01:47:43
本文作者:francisk84 git的诞生历史 -- 摘选自《Pro git》 Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。 到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。 他们对新的系统制订了若干目标: 1. 速度 2. 简单的设计 3. 对非线性开发模式的强力支持(允许成千上万个并行开发的分支) 4. 完全分布式 5. 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量) git push时的refs/for/[branch_name]和refs/head/[branch_name] 谈到git push时的refs/for/[branch_name]指令,其实它是 Gerrit 工具的一种机制。简单的说,Gerrit为了保证每次代码提交都强制开启代码评审

深入探究Android应用启动起点

痞子三分冷 提交于 2020-12-29 22:29:04
本文作者:yanxin1563 原创 liuwenlong 背景 开发者文档中提到,Android应用有三种启动状态,每种状态都会影响应用向用户显示所需的时间:冷启动、温启动或热启动。三种启动状态中,冷启动耗时最久,系统和App有较多初始化的工作。如果启动时间过长,可能会导致用户在应用商店打低分,甚至完全弃用app,所以冷启动速度是各个app非常重要的性能指标之一。 在冷启动速度优化的工作中,打点是非常重要的一环,统计点位该如何选,以及为什么要这么选,有很多细节值得探究,本文主要深入探究Android端app层如何选择进程创建的起点。 三个时机简述 本文中涉及的3个App层进程创建时间的起点:Application <init>,Process.getStartElapsedRealTime,/proc/self/stats starttime。 简单介绍下3个进程创建时间起点: Application <init>:Application构造方法; Process.getStartElapsedRealTime:Framework中记录的进程创建的起点,此接口有版本限制,Android N以下版本无法使用; /proc/self/stats starttime:内核中记录的进程创建的起点。 3个进程创建时间起点时序如下:/proc/self/stats starttime 早于

那些年薪百万的程序员“咸鱼翻身”没有透露的秘密

百般思念 提交于 2020-12-12 19:41:07
  首先,世界上没有最好的程序语言,只有最适合个人程序语言。程序语言本来就只是工具、只是手段,从来都不是重点,重点是:你的目的是什么?你要解决的问题是什么?   假设你今天想要写一个网页留言板(这边只讨论后端,不包含前端),那你就不应该用C来写,因为比起C,php会更适合,很多phper要说了“php是世界上最好的语言”    你可能会问:那nodejs,rails,asp.net…就不适合吗?   如果你只是单纯想写个网页留言板,其实上面这些都很适合,挑一个你最喜欢的语言就好   但如果你要解决的问题不一样,就应该重新思考。例如说,我想要很短的时间的写个网页留言板,你就应该用rails,因为rails开发真的超级快,随便打几个command,你的网页就神奇的出现了!   “我想要很潮的网页留言板!”那你可以考虑Go,Swift,Nodejs等等   再举个例子,加入你今天想要研究电脑较底层的运作,那么你应该要学C,或是学汇编语言因为比起其他高阶语言,这两种绝对会让你更了解底层到底在做什么,其实以上这些只是想提醒你:不要为了学语言而学语言。   程序语言只是一个好的解决方案,重点在于最终的目的!重点在于你想要通过程序,达成什么样的目标,当然如果你真的只是纯粹喜欢写程序,就当我没说。    为什么要当程序员?   我的理由很简单:为中华之崛起而写代码!我觉得做程序开发让我很有成就感

前端性能优化实践 之 百度App个人主页优化

柔情痞子 提交于 2020-04-28 06:51:03
本文作者:yanxin1563 原创:前端工程师 panming 前言 性能是每个前端工程师都应该关注的话题,通用的优化手段已有许多文章和实践,就不再赘述,本篇以百度App个人主页为例,聊聊针对业务特点进行的一些性能优化实践。 适用于 :传统意义的优化手段能用的都用了:打包拆包,缩减体积和 HTTP 请求数、CDN和按需加载等,但性能方面仍不太理想。 定义指标,建设报表 优秀方案的制定首先需要准确的数据做支撑。 一般来说,前端性能指标包括 DOM ready 、 First Contentful Paint 、 白屏、首屏、 用户可操作时间 、 onload时间等, 在实际中需要结合业务本身的特点进行定义,一般通用的指标定义并不能体现用户在当前业务下的真实体验。 个人主页是在百度App客户端内的web页面,有 hybrid版(使用file协议直接加载本地HTML和JS、CSS)和web版(打开一个web URL)两种不同的打开方式。 首先,我们了解一下个人主页页面的结构: 头部区域展示当前作者的个人信息,tab区域则是作者创作产生的内容。页面中所有数据均为异步获取。 打开个人主页需要经历的过程可简化成以下几个: 其中耗时可划分为端耗时、网络和server耗时、前端渲染耗时三大部分: 根据以上过程,我们制定了定义指标的原则: 主页页面展现的用户数据,是页面内JS 请求数据后的异步渲染

在互联网时代,你是消费者还是创造者?

爱⌒轻易说出口 提交于 2020-04-15 17:45:04
【推荐阅读】微服务还能火多久?>>>   我们所处的互联网时代要求人人都是产品经理,人人都是程序员,程序开发是一项重要的技能,因为它能让程序员把数字世界作为一个整体来探索和体验。由于任何领域都与电脑运算程序或多或少有关系,互联网对人类生活和各行业的发展渗透程度如此之高,不会写代码的人将会处于劣势。   学习程序设计最有可能帮助创业者改变既有的职业和生活方式,科技对所有行业都有影响,从健康护理、军事、教育、市场行销、企业管理、金融以及其他任何行业,都被科技改变了。这意味着懂信息科学(Computer Science)但是不做相关工作的人依然会受益。    在互联网时代中,你是消费者还是创造者?   MIT的Mitchel Resnick曾在TED演讲中强调:   给现在的年轻一代粘贴“互联网+”的标签是一种误导,大多数年轻人目前主要是科技的消费者,而不是创造者。他们虽被称为“互联网新生代”,但是对科技并不熟悉,他们是经验丰富的使用者但并不是创造者,就像学生会阅读不会写作一样。所以需要教学生程序设计,让他们学会充分使用互联网时代的科技。    软件正吃掉全世界   如果你不会写代码或者不懂信息科学,那有可能真的是一个重大损失。道格拉斯·洛西科夫(Douglas Rushkoff)在《程序的设计或被设计》(Program or Be Programmed)一书中争辩道

专业货车导航能力落地中交兴路,百度地图助力物流行业降本增效

╄→гoц情女王★ 提交于 2020-04-14 00:24:56
【今日推荐】:为什么一到面试就懵逼!>>> 本文作者:用户_123456789 “关于导航,货车司机核心关注三点:一是省成本,走最省钱的路线;二是安全,避免违章事故等情况;第三是产品稳定和便捷性,能帮自己找好路近路,还能和别人交流分享怎么走。”谈起货车导航,中交兴路相关产品负责人曾这样介绍。作为全球最大商用车车联网运营商,中交兴路自身数据积累及技术优势结合百度地图提供的货车导航能力,可以更好地解决司机行车痛点。司机获得了最经济省钱的行车路线,并能将经验分享给同行,提升全行业的运营效率。据了解,目前物流行业总体复工率已经超过九成,专业版货车导航上线会进一步帮助全国卡友多赚钱,少花钱。 近日百度地图与中交兴路旗下车旺大卡APP(以下简称“车旺大卡”)达成合作,百度地图的全国实时路网数据和货车导航能力,结合中交兴路车联网超618万辆重卡数据及车辆位置、历史行车轨迹数据, 共同为全国3000万货车司机提供更加专业的导航。3月12日该功能正式登陆车旺大卡,并于3月18日全量上线。 “ 双引擎”加持,让货车司机不绕路、走好路、更省钱 据了解,车旺大卡是专注公路货运物流场景、为中小微物流企业和个体司机提供生产、生活基础服务的手机APP,目前累计下载量超800万,用户覆盖全国超600万卡车司机。与百度地图合作后,车旺大卡具备了“经验路线”和“百度地图推荐”双引擎。其中, “百度地图推荐

入门级科普:五分钟让你的应用拥有高精度定位功能

旧时模样 提交于 2020-04-13 22:37:08
【今日推荐】:为什么一到面试就懵逼!>>> 本文作者:用户_123456789 什么是智能定位服务 定位能力即帮助用户解决“我在哪”的问题,依托百度位置大数据及多种混合定位方式,百度地图开放平台为智能穿戴、用车出行、快递物流、生活服务、社交通讯、在线旅游等百万行业开发者提供了智能定位服务,帮助开发者实现用户的精准定位、地理围栏监管提醒、位置大数据分析等功能。 百度地图提供哪些类型的定位服务 目前百度地图Android定位SDK对非商业目的使用的开发者不收取任何费用。考虑到不同行业开发者的实际情况,百度地图贴心的开放了不同类型的定位服务能力满足不同需求的开发者。 1.Andriod定位SDK/iOS定位SDK服务:适用于Android或 iOS端应用; 2.智能硬件定位API:适用于智能硬件设备,从服务端获取用户位置信息; 3.JS API:适用于网页版应用; 4.IP定位API:适用于通过IP获取用户当前位置信息。 同时,开发者可根据自身服务的场景选择不同的定位模式、不同的坐标系等。例如对定位精度要求较高且无功耗要求的场景可选择高精度定位模式;对功耗要求较高的使用场景可使用低功耗模式定位;强依赖于GPS模块的定位模式,例如驾车、骑行、室外运动记录等可选择设备模式定位。 百度地图智能定位服务有哪些优势 百度地图的定位成功率高达99.6%,网络定位速度达到0.2秒

【智能小程序开发者抗疫联盟】全面扩招,开发者最高可获得奖励150万元

微笑、不失礼 提交于 2020-04-13 21:52:40
【今日推荐】:为什么一到面试就懵逼!>>> 本文作者:HelloDeveloper 疫情当前,举国驰援,一场与病毒的斗争已全面展开。在这场全民战疫中,新型肺炎疫情时刻牵动着全国人民的心,平均每天10亿人次通过百度搜索浏览疫情相关信息和知识。同时,百度与京东、顺丰、KEEP等40余家企业联合组成了 【智能小程序开发者抗疫联盟】 ,通过百度APP共同为全国人民提供抗击疫情及相关服务的智能小程序,为用户居家生活提供便利,减少疫情期间出门次数。 为了更好地帮助各级政府应对疫情,同时更全面地解决全国用户搜索行为背后的多种服务需求,现【智能小程序开发者抗疫联盟】全面扩招,欢迎更多其他合作伙伴加入,与我们一起并肩作战。 百度将从3亿元疫情及公共卫生安全攻坚专项基金中设立专门的开发者资金池,为服务商和开发者提供现金、技术和传播资源支持 。 众人拾柴火焰高,让我们携手打赢这场疫情防控阻击战,共同抗疫! 原文链接地址: https://developer.baidu.com/topic/show/290650 来源: oschina 链接: https://my.oschina.net/u/4299156/blog/3233563

百度云智峰会Workshop技术干货第1弹 ——文本目标检测实验介绍

北城以北 提交于 2020-04-13 21:48:28
【今日推荐】:为什么一到面试就懵逼!>>> 本文作者:HelloDeveloper 8 月29日下午,在热烈的气氛中,2019百度云智峰会在北京顺利举办。活动现场,百度开发者中心联手百度云智学院,为开发者及学生们,提供了展示自己的舞台,输出百度沉淀的优质技术。百度开发者中心(developer.baidu.com)专注于为开发者打造一个有温度的技术交流社区,一直伴随着中国开发者的成长,通过分享知识、交流。自成立以来,坚持为广大开发者提供优质服务。百度云智学院(abcxueyuan.baidu.com)作为百度对外知识赋能的平台,依托百度ABC战略,整合内外部优质教育培训资源,定义满足产业需求的人才标准和培训体系,以“AI引领未来,茁壮科技人才”为使命,致力于为ABC时代的人才培养、技术分享等问题提供全新的解决思路。 为了帮助大家更好地理解Workshop中亮相的6大技术,我们特将技术内容进行梳理总结,出品6篇技术干货文章,在近期于百度开发者中心公众号(ID:baidudev)上逐一分享给大家,请大家持续关注。以下是第一期内容《文本目标检测实验介绍》。 BML平台简介 BML是一款企业级的机器学习平台,提供一站式人工智能建模与推理预测服务。面向用户提供机器学习和深度学习服务能力,实现从数据集管理、数据预处理、数据源、模型训练,到模型管理、预测服务、服务监控等全AI工作周期的管理

百度App iOS工程化实践: EasyBox破冰之旅

半腔热情 提交于 2020-04-13 17:32:36
【今日推荐】:为什么一到面试就懵逼!>>> 本文作者:yanxin1563 本文作者: Yunpeng-基础技术 前言 百度App从单一的搜索工具发展到今天以搜索和Feed流为双引擎的综合性内容消费服务平台,其复杂程度已然不可同日而语矣。 作为一个日活过亿的超级App,业务规模庞大,相关技术人员超过千人,客户端支持主流的移动技术,涉及近百业务方,技术形态复杂,各种组件近三百个,代码百万量级,由此带来的工程化问题是技术团队的一个极大挑战。 项目的膨胀导致了很多不起眼的小问题被无限放大,组件管理不规范、编译时间长、工程文件合并冲突、Xcode默认非彻底编译隔离等等问题,导致开发人员在开发环境上耗费了大量时间。目前业界较流行的工具对于大规模工程的支持力度相对较弱,实践起来总是有些掣肘,难以达到理想状态。 EasyBox的诞生,就是致力于为超级App量身打造一套现代、高效、优雅的研发工具链。 这篇文章的主要目的是 站在工具链的角度 上,分享一下我们在实践工程化过程中一些经验。 概述 EasyBox主体由工程组装器(Installer)、多仓库管理工具(MGit)、二进制管理工具(LFS)三部分构成,分别负责工作区的构建(组件依赖分析、工程的生成与组合)、源码仓库的管理以及二进制的管理。EasyBox架构图: 由多仓库管理工具克隆所需仓库源码,由二进制管理工具下载二进制包