strip

测开入门篇《环境管理、编码规范、项目结构》

一曲冷凌霜 提交于 2021-01-07 18:50:37
# 目录 * 一、前提准备 * 二、虚拟环境 * 1.virtualenv的安装和应用 * 2.pipenv的安装和使用 * 3.导出虚拟环境为requirements.txt文件 * 4.pipenv的相关使用命令 * 5.需要在虚拟环境中起项目 * 三、Python代码规范 * 四、工程结构化 `测试平台是做什么的?` 测试开发研发的测试平台**是给点点点的人用的**,可以帮助我们做自动化测试、用例管理、报表生成等,提高测试工作效率。 例如用市面上的postman做的一些测试,不符合公司项目的实际。但是自动化测试平台可以根据公司实际项目需求做定制化开发。 ## 一、前提准备 Python环境:python3.7是python3里面目前最稳定的一个版本,3以上的版本都没有问题。 电脑:Windows10家庭版 ## 二、虚拟环境 Python虚拟环境的主要目的是:为了给不同的工程创建互相独立的运行环境。在虚拟环境下,每一个包,而与其它的工程无关。 不同的虚拟环境中同一个包可以有不同的版本。并且,虚拟环境的数量没有限制,我们可以轻松地用virtualenv或pipenv等工具来创建多个虚拟环境。 ![图片来自网络](https://upload-images.jianshu.io/upload_images/25205170-16d89bb0999f06b5.image

面试官必问的技术问题之一!今年Android面试必问的这些技术面,面试心得体会

筅森魡賤 提交于 2021-01-07 18:48:41
关于Android的近况 大家都知道,今年移动开发不那么火热了,完全没有了前两年Android开发那种火热的势头,如此同时,AI热火朝天,很多言论都说Android不行了。其实不光是Android,iOS也有类似的言论。 那么到底如何看待这一现象呢? 我的答案是:Android还行,只是回归平淡了,没有了前些年的火热。 项目实战 启动速度 流畅度 抖音在APK包大小资源优化的实践 优酷响应式布局技术全解析 网络优化 手机淘宝双十一性能优化项目揭秘 高德APP全链路源码依赖分析 彻底干掉OOM的实战经验分享 微信Android终端内存优化实践 理论 在Android应用优化方面,我们主要从以下6个方面进行优化: 启动速度与执行效率优化 布局检测与优化 内存优化 耗电优化 网络传输与数据存储优化 APK大小优化 一、启动速度与执行效率优化 冷启动和热启动解析 本节主要介绍启动方式、特点、应用启动的流程、测量应用启动的时间、什么才是应用的启动时间、降低应用启动时的耗时、优化应用启动时的体验。 APP启动黑白屏解决办法 解决方法1,把启动白屏的背景换成一张图片;解决方法2,把启动白屏背景变透明。 APP卡顿问题分析及解决方案 16ms原则; 卡顿处理; Triple Buffer,既然丢帧的情况不可避免,Android 团队从未放弃对这块的优化处理,于是便出现了Triple Buffer

Android工程师所必经的三个阶段,你到哪个阶段了?

孤者浪人 提交于 2021-01-06 16:47:55
前言 最近一直在思考,作为一名软件开发工程师,到底应该如何实现自我成长,是否有捷径而言?其实断断续续有过很多思考,也有和各种年龄段的同学们做过不少交流,结合自身的经历,有一些感悟和思考。本文可能可以适用到其他端,不过由于自己是一名 Android 开发工程师,所以就姑且从一名普通的 Android 开发工程师的角度来进行表述吧。 整篇文章可能读下来会比较啰嗦和白话,但句句真言,字字真心,欢迎大家一起交流。整文也只代表个人观点,同学们都可以发表自己的观点即可。 我认为每一名软件开发工程师都需要必经三个阶段: 不知道自己不知道啥 知道自己不知道啥 不知道自己知道啥 看起来很绕,但实际真实如此。 不知道自己不知道啥 对于大多数刚刚接触到 Android 开发的学生来说,软件开发是一片浩瀚的海洋,这是一片全新的领域,有着自己的生态圈。所以初入开发行业的学生们,完全不知道自己还有哪些是需要学习的,所以这些同学通常会陷入一个非常迷茫的阶段,尤其是在校学生。 自己当初也是如此,天真的以为计算机专业就是开发游戏,倒腾电脑的专业,所以自己就成了计算机学院的一员。上大学后,才发现和自己想象的完全不一样,依然要学习好多的数学专业课和语言专业课,只是这个语言不再局限于英语了,而是一些从未听过的 C/C++、C#、Java、Python。 在学校的时候完全不知道自己应该学习什么

难怪都去搞Python,这也太壕了!

最后都变了- 提交于 2021-01-05 22:18:13
不久前,清华大学经管学院发布了《中国经济的数字化转型:人才与就业》的报告,根据报告显示,当前我国大数据领域人才缺口高达150万,到2025年将达到200万。 数据来源:2019年中国AI&大数据人才大数据人才就业报告 这份报告 对国家而言 ,是提前规划、提前布局的参考, 对企业而言 ,是切入下一赛道的征兆, 而对于普通人而言, 则是一个机会,一个能够获得快速晋升,甚至实现财富自由的机会。 细数现在国内的互联网产品,淘宝电商老大地位不可动摇;腾讯则牢牢占据社交、游戏大部分份额;抖音、快手引领短视频风潮…… 这些公司除了占据行业先发优势之外,完备的数据也是它们成功的重要原因,甚至有人笑称, 比你更了解你自己的不是你妈,而是这些公司。 如果把数据比作企业发展的“石油“,那么掌握 如何将其提炼为可使用的情报 就是发挥其潜力的关键。 “我知道客流量在最近一个月减少了30%,所以该怎么办呢?” “模型预计本月销售额增长30%,我只要维持现状就能稳定增长吗?” “我有过去一年几万条的销售记录,这些记录能发挥什么作用呢?” 这些数据说明了什么,到底我要怎么做,通过这些数据得到结论是企业最迫切的事情。 会“分析“的人很多,但能从繁杂的数据中得到具体结论的 商业数据分析人才 却是凤毛麟角。 现在用人市场上每一个商业数据分析的人才都能引起各大公司争夺,甚至有公司开出了令人瞠目结舌的“ 天价 “。

重磅开源!腾讯内部强势推出的“插件化实战学习手册”已出炉,看完还不会算我输!

夙愿已清 提交于 2021-01-05 16:43:25
前言 简介 对于App而言,所谓的插件化,个人的理解就是把一个完整的App拆分成宿主和插件两大部分,我们在宿主app运行时可以动态的载入或者替换插件的部分,插件不仅是对宿主功能的扩展而且还能减小宿主的负担,所谓的宿主就是运行的app,插件即宿主运行时加载的apk文件,这样宿主和插件结合的方案技术就是插件化。 为什么要插件化? 解耦,独立各大模块的业务成为插件,互不干扰,即用即插,方便开发与维护。当业务庞大、繁琐之后,是否存在牵一发而动全身的感觉,是否存在逻辑过于复杂、耦合度较高、难以掌控整个项目。 加快编译。每次修改后无需重新编辑整个工程项目,可以单独编译某个插件工程,对于庞大的项目而言,速度就是至上的武功。 动态更新。无需重新下载与安装app,可以单独下载某个插件apk,直接加载,从动态更新、包体积和流量上感觉是个不错的选择。 模块定制。需要什么模块下载什么模块,无需让app变得庞大,所需所得。 难点在哪 大家其实都知道,Android 应用本身是基于魔改的 Java 虚拟机的,动态加载代码简直不要太简单,只需要使用 DexClassLoader 加载 Apk,然后反射里面的代码就可以了。 但是光能反射代码是没有意义的,插件化真正的魅力在于,可以动态加载执行 Android 组件(即 Activity、Service、BroadcastReceiver

简单实用,Python中常用的十个简短小技巧

☆樱花仙子☆ 提交于 2021-01-05 16:43:10
#### 一行累加求和 一行代码求和100以内的整数,利用sum和range函数轻松实现,需要注意的是range(1,101)返回的是1-100之间的整数,不包括101,遵循左闭右开的原则。 ![image.png](https://upload-images.jianshu.io/upload_images/25205170-0cbc99ff00bb06d2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) >本期推送整理了初学者可能会用到的Python资料,含有书籍/视频/在线文档和编辑器/源 代码,关于`Python`的安装qun:850973621 #### 列表去重 一行代码,先利用集合的属性(无序不重复),将列表转换成集合,再利用list函数将集合转换成列表,完成列表去重。 ![image.png](https://upload-images.jianshu.io/upload_images/25205170-b018cfeffa851f75.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) #### 列表推导式 列表推导能非常简洁的构造一个新列表,只用一条简洁的表达式即可对得到的元素进行转换变形。 [表达式 for 变量 in 列表] 或者

GitHub标星8k,字节跳动高工熬夜半月整理的“组件化实战学习手册”,全是精髓!

China☆狼群 提交于 2021-01-04 14:59:33
##前言 什么是组件化? 最初的目的是代码重用,功能相对单一或者独立。在整个系统的代码层次上位于最底层,被其他代码所依赖,所以说组件化是纵向分层。 为什么要使用组件化? 当我们的项目越做越大的时候,有时间就很难去维护,有时候让我们去改点东西,根本实现不了,与其让我们修修改改,还不如自己重新去写代码。 其实无论是大项目也好,或者是中小型项目也好,如果去使用组件化进行开发,那会使你很难割舍,因为它能在你开发中带来很多的便利,包括一些功能解耦和和一些功能的复用. 组件化的好处 组件,既可以作为library,又可以单独作为application,便于单独编译单独测试,大大的提高了编译和开发效率; (业务)组件,可有自己独立的版本,业务线互不干扰,可单独编译、测试、打包、部署 各业务线共有的公共模块开发为组件,作为依赖库供各业务线调用,减少重复代码编写,减少冗余,便于维护 通过gradle配置文件,可对第三方库的引入进行统一管理,避免版本冲突,减少冗余库 通过gradle配置文件,可对各组件实现library与application间便捷切换,实现项目的按需加载 如何学习组件化? 网上有很多关于学习组件化开发的文章,组件化原理很简单,但是真正实施起来还是挺困难的,没有相应的 实战+源码 参考就做好踩坑的准备吧。 最近小编有幸在字节跳动高工手里扒到这份“组件化实战学习手册”

CSS盒模型

帅比萌擦擦* 提交于 2020-12-31 00:03:10
盒子模型: 盒子模型,又称框模型 (Box Model) 盒子模型主要的属性:width、height、padding、border、margin; width:内容的宽度 height:内容的高度(不是盒子的宽度、高度) padding:内边距 border:边框 margin:外边距 例: <style type="text/css"> div{ width: 200px; height: 200px; border: 1px solid red; padding: 50px; </style> 标准盒模型与IE盒模型: 标准盒模型 : 【标准盒子模型的范围包括margin,border,padding,content,并且content部分不包含其他部分;】 IE盒模型 : 【IE盒子模型的范围包括margin,border,padding,content,和标准盒子模型不同的是:IE盒子模型的 content 部分包含 border 和 pading;】 标准盒子模和IE盒模型的区别: 标准盒子模型中,width 和 height 指的是内容区域的宽度和高度。增加内边距、边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸。 IE盒子模型中,width 和 height 指的是内容区域+border+padding的宽度和高度。 盒子模型面试题 1

你必须知道的CSS盒模型

帅比萌擦擦* 提交于 2020-12-30 17:54:11
盒子模型是html+css中最核心的基础知识,理解了这个重要的概念才能更好的排版,进行页面布局。下面是自己积累和总结的关于css盒子模型的知识^_^,希望对初学者有用。 一、css盒子模型概念 CSS css盒子模型 又称框模型 (Box Model) ,包含了元素内容(content)、内边距(padding)、边框(border)、外边距(margin)几个要素。如图: 图中最内部的框是元素的实际内容,也就是元素框,紧挨着元素框外部的是内边距padding,其次是边框(border),然后最外层是外边距(margin),整个构成了框模型。通常我们设置的背景显示区域,就是内容、内边距、边框这一块范围。而外边距margin是透明的,不会遮挡周边的其他元素。 那么,元素框的总宽度 = 元素(element)的width + padding的左边距和右边距的值 + margin的左边距和右边距的值 + border的左右宽度; 元素框的总高度 = 元素(element)的height + padding的上下边距的值 + margin的上下边距的值 + border的上下宽度。 二、css 外边距合并(叠加) 两个上下方向相邻的元素框垂直相遇时,外边距会合并,合并后的外边距的高度等于两个发生合并的外边距中较高的那个边距值,如图: 比较容易理解

python第一天

妖精的绣舞 提交于 2020-12-30 00:53:05
一、python xx.py 二、字符串可以与数字相乘 str = " abc " msg = str*3 print (msg) # 结果:abcabcabc 三、换行用三个单引号 ''' 第一行 第二行 第三行 ''' 四、输入 name = input( " 请输入用户名: " ) print (name) 五、单判断使用 if():   ... else:   ... 多判断 if(): ... elif(): ... elif(): ... 六、占位符输出 name = input( " 请输入姓名: " ) age = input( " 请输入年龄: " ) msg = " 我叫%s,年龄%d,完成进度50%%" % (name , int(age)) print (msg) ''' 结果: 请输入姓名:张三 请输入年龄:20 我叫张三,年龄20,完成进度50% ''' 七、注释 # 被注释内容 ''' 被注释内容 ''' """ 被注释内容 """ 八、运算符 #int与boll转换,非0都是true,0为false # 指数 a = 3**2 print (a) # 结果:9 九、字符串 str = ' i am boy ' print (str.title()) # 按特殊字符分割,首字母大写 结果:I Am Boy str = ' baRon ' print