王学明

不积跬步,无以至千里;不积小流,无以成江海.
私信 关注
手艺人王学明
码龄11年

岁月本长,而忙者自促,天地本宽,而鄙者自隘

  • 336,898
    被访问量
  • 185
    原创文章
  • 13,880
    作者排名
  • 420
    粉丝数量
  • 于 2010-05-05 加入CSDN
获得成就
  • 博客专家认证
  • 获得445次点赞
  • 内容获得189次评论
  • 获得408次收藏
荣誉勋章
兴趣领域
  • #Android
    #Java
TA的专栏
  • 运维
  • [android]
    64篇
  • python
    1篇
  • [kotlin]
    27篇
  • [JavaScript]
    10篇
  • [java]
    37篇
  • 我是如何通过PMP的
    19篇
  • 研发团队管理及制度建设
    10篇
  • [线程异步]
    14篇
  • 产品设计
    1篇
  • [闲谈感悟]
    14篇
  • [工作记录]
    24篇
  • [架构及模式]
    12篇
  • 工具
    4篇
  • 组件化
    8篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

绞尽脑汁,给代码取个好名字

好名字胜却注释万千我的名字会告诉你一切不要误导写能体现作者意图的名字看的懂,还读的出来能力体现在名字里接口和实现类的命名有两套规则:明确才是王道类名、对象名方法名insert能不能 改用add?如果你无法命名,那就想想你能不能用专业领域的名称创造语境我的名字会告诉你一切范例一int n; //个人统计n是一个无意义的。它没有任何个数的概念。通过注释,你或许能得到一点信息。但是,如果要通过注释来解释这个变量。那这个变量的名字就是有问题的。我们应该指明 计量的对象和单位的名称:int perso.
原创
169阅读
1评论
0点赞
发布博客于 2 月前

我这样开总结会,希望对你有帮助

在经历了狂风暴雨般的加班后,项目总算结束了。想持续高效地开好项目总结会,不容易啊。温故而知新,不要再一次糟心你首先要具备两个条件一:明确的目标管理总结是什么?是对过程的回顾;对结果的检视;推进持续改进进而提升目标结果的达成率。二:可度量的数据,能进行定量分析用数据说话,团队工作成果可量化;避免推诿;弄清楚现实与期望的差距。总结会议五步骤步骤一:目标结果检视这里有个前提:在项目过程中,你得收集数据。最起码,你得做计划。这个环节就是用数据说话。PM主持会议,陈述项目的完成情况.
原创
134阅读
0评论
1点赞
发布博客于 6 月前

每日站会开了吗?有效吗?

所谓晨会,就是团队每天举行的会议,其基本形式,就是团队成员轮流讲述。主要目的是同步信息、了解项目进度、识别问题\风险,并根据情况做有效的调整。每日站会的价值站会总围绕三个问题展开问题1:昨天你做了什么?问题2:今天你准备做什么?问题3:遇到了哪些问题、困难,是否需要他人协助?序列价值问题1将团队成员各自负责的项目进展信息同步给大家,信息对称、工作透明问题2检视项目计划和实际执行是否有偏差,以便及时调整问题3在第一时间充分暴露问题、风险,以便快速解决问.
原创
1484阅读
0评论
2点赞
发布博客于 6 月前

小白搭建ngrok完全手册

搭建ngrok完全手册用途你要准备这些功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入用途ngrok 将本地服务映射到公网。本地开发了一个服务,希望能给开发的同事使用,但又不想部署在服务器。开发微信公众号,必须要有个公网的
原创
313阅读
0评论
0点赞
发布博客于 8 月前
记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背
发布Blink于 2 年前

《网易裁员》这是一次失败的危机公关

《网易裁员,让保安把身患绝症的我赶出公司。我在网易亲身经历的噩梦!》作者称,自己是入职网易游戏5年的一名员工,在职期间,勤恳工作,一直以是一个网易人而自豪;直到生病之后,网易采用“逼迫、诱骗、监视、陷害、威胁,甚至被保安赶出公司”等各种手段逼迫其离职,以避免进行N+1的离职赔偿。后续网易又给出了《网易回应暴力裁员:对不起,我们做错了》这是网易的公关危机,而公关部门的应对是一个灾难这个...
原创
2949阅读
0评论
1点赞
发布博客于 2 年前

静夜思:“小微科技公司”如何建立自己的竞争优势

朋友问我了这样一个问题:小型科技公司如何建立自己的竞争优势我脑袋懵了一下,这可怎么建立啊?朋友说:《天道》里有句话,就是拼在不是人干活的地方干不是人干的活,就是拼的不是人一语点醒梦中人~《天道》里的这话,又虚,又理论。拼在不是人干活的地方:借力,借趋势,选对方向,坐上电梯;借自动化,AI;建立自生长生态干不是人干的活:将心力投入到 非堆积劳力 能解决的地方这个问题,换个...
原创
1544阅读
4评论
1点赞
发布博客于 2 年前

吓得我赶紧学个Python压压惊

近几年,AI、大数据发生了巨大的变化。Python逐渐进入了大家的视野中。偶然发现居然学化工的人都在学Python。浙江省信息技术课程改革方案已经出台,Python 确定进入浙江省信息技术高考,从 2018 年起浙江省信息技术教材编程语言将会从 VB 更换为 Python。Python发展了将近三十年,已然成为编程语言的“网红”。Python是目前IT就业市场最受欢迎,最热门的技...
原创
461阅读
0评论
0点赞
发布博客于 2 年前

都掌握了吗?Kotlin技能小成

前些文章描述了 Kotlin教程,包括一些基本语法。很多时候,还需要加以练习。本文将开发过程中,遇到的点,整理成线,继而到面希望 把下面的问题掌握之后,掌握Kotlin在Android中的开发能力1️⃣实现findViewById有几种方式?方法一:可以更低成本从java转kotlin@BindView(R2.id.acco_refresh_layout)lateinit va...
原创
3054阅读
0评论
2点赞
发布博客于 2 年前

产品价值在哪里?做一个形神兼备的产品

在创业公司的时候,做过一台智能跑步机。作为技术合伙人,参与了不少的产品设计头脑风暴。这种状态断断续续持续了一年之久。长期处于一种焦虑又不想停止努力的状态,想把产品做好,但又不知道从哪里开始。当时,做的是一款大数据、多体感的物联网跑步机。对应的产品功能是采集多感应器数据,提升运动安全系数;结合用户身体数据、用户需求给出 动态生成 更科学的运动 程式’利用多媒体App、3D...
原创
497阅读
1评论
4点赞
发布博客于 2 年前
唐僧团队要裁员,你会裁谁?
发布Blink于 2 年前
唐僧团队要裁员,你会裁谁?
发布Blink于 2 年前
唐僧团队要裁员,你会裁谁?
发布Blink于 2 年前

唐僧团队要裁员,你会裁谁?

提问:西游记取经团为了节约成本,唐太宗需要在这个团队里裁掉一名队员,该裁掉哪一位呢,为什么?为了完成西天取经任务,组成取经团队,成员有唐僧、孙悟空、猪八戒、沙和尚、白龙马。高层领导: 观音项目经理: 唐僧技术核心: 孙悟空普通团员: 猪八戒、沙和尚司机: 白龙马这是个很有意思的项目团队项目经理:唐僧得道高僧。唐僧作为项目经理,有很坚韧的品性和极高的原则性,不达目的不罢...
原创
67437阅读
160评论
230点赞
发布博客于 2 年前

kotlin-let,run,with,apply,also作用域函数详解

前言五个作用域,会比较长。这篇文章,类似于字典。查查。用用。主要需要了解的点① 有什么区别?② 如何选择?作用域函数是什么意思呢通过编译器的手段增加一些操作符,使代码变得更简洁所以,你不用它也完全可以实现相同的功能。它提供了一个临时作用域,让对象执行代码块的 代码看起来更简洁感受一下 作用域函数 带来的代码整洁data class Person(var name: S...
原创
458阅读
0评论
2点赞
发布博客于 2 年前

kotlin - let,run,with,apply,also作用域函数的区别

两个主要区别上下文对象用this 还是 it返回值上下文对象用this 还是 itthis和it是作用域函数获取对象引用的 短名称, 两者都提供相同的功能使用this的情况范围函数: run,with,apply 使用this在大多数情况下,this访问接收器对象的成员时可以省略,从而使代码更短比如这个例子就是省略了thisdata class Person(v...
原创
447阅读
0评论
2点赞
发布博客于 2 年前

Kotlin-反射看这篇就够了

前言获取静态已知Kotlin类的引用使用::classval c = MyClass::class若要获得 Java 类引用, 需在 KClass 实例上使用 .java 属性val c = MyClass::classc.java通过已有的对象获取类的引用也是用::class获取val widget: Widget = ……assert(widget is Go...
原创
1214阅读
0评论
2点赞
发布博客于 2 年前

Kotlin进阶-注解(与java有点变化)

前言有些定义总是需要注解去实现的。本文需要带着几个问题① 怎么定义Kotlin的注解② 注解类的属性有几种,什么用途③ 可以在哪些地方用注解④ 与java注解怎么交互⑤ 文中小思:为什么kotlin与java交互,要用到KClass,然后转换成java的class注解声明简介要定义一个注解类,需要将 annotation 修饰符放在类的前面annotation class...
原创
259阅读
0评论
1点赞
发布博客于 2 年前

Kotlin-多变的类型_检测与转换

前言本文需要找几个问题。① 什么时候会产生类型安全问题?② 智能转换在什么时候是支持的③ 如何规避类型安全问题什么是类型安全经过类型擦除后,依旧可以通过检测,确保当前的变量类型是确定的某个类型类型检测:is会用到两个操作符is!is类型转换:asval myType as Date智能转换在许多情况下,不需要在 Kotlin 中使用显式转换操作符,因为编译...
原创
217阅读
0评论
1点赞
发布博客于 2 年前

Kotlin-this略有不同

前言在Kotlin中的this相对java略有不同,主要是多了label的使用。我们来看一下作用域在默认情况下this指向 最内层的包含它的作用域引用其他作用域中的 this需要用到label标签,指向label所在的作用域来看个范例class A { // 隐式标签 @A inner class B { // 隐式标签 @B fun Int.foo()...
原创
352阅读
0评论
0点赞
发布博客于 2 年前

Kotlin-讲解 实验性API

前言在编码过程中,编辑未开发完成的API,倘若需要使用它,Kotlin提供了实验性API进行提示,在使用后,会提示warnings或编译报错。声明自定义的API怎么进行定义声明呢?看个范例// library code@Experimental@Retention(AnnotationRetention.BINARY)@Target(AnnotationTarget.CLASS...
原创
504阅读
0评论
0点赞
发布博客于 2 年前

5招鲜-Kotlin这样处理NPE

前言相传NPE值十亿美金。哇~那是好多????Kotlin为何这么?????号称解决了NPE呢?① NPE从哪里来② Kotlin从哪几个方面解决了NPE③ Kotlin到底解决了什么?④ 在什么时候,Kotlin的NPE解决方案是失灵的?NPE的来源有四个来源显式调用 throw NullPointerException()使用了 !! 操作符这是Kotlin提供的用户可强制抛...
原创
318阅读
0评论
2点赞
发布博客于 2 年前
踏破Kotlin,从入门到精通 - 王学明 - CSDN博客
发布Blink于 2 年前

Kotlin-集合

前言集合是一个大头,经常会碰到。所以,我做了一个集锦。看起来会比较长,所以,我做了一些取舍。尽量缩短,又可以了解清楚。这部分的内容,大部分语言都会涉及。有些地方就不放开详述。文章定位你可以大体了解有哪些。大致怎么用。用到的时候,完全可以查一下就知道了。目录如下set、list以及map创建迭代器序列化处理过滤集合的加减分组取集合的一部分取单个元素排序聚合操作...
原创
276阅读
0评论
0点赞
发布博客于 2 年前

Kotlin入门-似曾相识的泛型

前言在Kotlin中,总的来说,可以理解泛型为:①向上解决类型不通用②向下解决类型限定如果看着累,建议先看小结,寥寥几字,大致了解下。本节的目录结构是这样的泛型说明型变类型投影泛型函数泛型约束类型擦除泛型说明Kotlin的泛型,功能与 Java 一样看一个范例fun main(args: Array<String>) { val age =...
原创
161阅读
0评论
1点赞
发布博客于 2 年前

Kotlin入门-解决8个问题,就解决了 委托

前言目录如下简介所谓委托类委托属性委托标准委托把属性储存在映射中Not Null局部委托属性属性委托要求小结简介Kotlin 直接支持委托模式,更加优雅,简洁;Kotlin 通过关键字 by 实现委托所谓委托就是在原来调用的对象上,包了一层通过 包裹层调用 原来的对象是 实现继承的一个很好的替代方法类委托这有3个部分interface...
原创
213阅读
0评论
1点赞
发布博客于 2 年前

Kotlin入门-嗯,我有别名,什么名称都变短

自kotlin 1.1起,类型别名(Type alias)为现有类型提供替代名称,如果类型名称太长,可引入较短别名替代原类型名!为集合类型(collection type)提供别名://缩短较长泛型类型(generic type)是很有吸引力的typealias NodeSet = Set<Network.Node>typealias FileTable<K>...
原创
203阅读
0评论
1点赞
发布博客于 2 年前

Kotlin入门-带着问题,理解 对象表达式和对象声明

前言作用Kotlin的对象表达式,再一次简化了,对某个类做轻微改动时,且不需要去声明一个新的子类。对象表达式通过匿名内部类与java一样,或继承、或实现、或通过构造函数传值给其参数。匿名对象只在本地和私有作用域中声明范例一window.addMouseListener(object : MouseAdapter() { override fun mouseClicke...
原创
142阅读
0评论
2点赞
发布博客于 2 年前

Kotlin入门-被简化的 枚举类(与java的差异)

前言基本上Java是一样的。下面的几个点java也都提供它实现一个类型安全的枚举。总体上说,Kotlin的枚举跟Java的枚举是基本相同的。差异主要在代码量上。初始化无参数的枚举类型enum class Color{ RED,BLACK,BLUE,GREEN,WHITE}我们再来看下java的实现。public enum Color { RED,BLACK,...
原创
176阅读
0评论
1点赞
发布博客于 2 年前

Kotlin入门-没有分号是个有趣的事情

前言第一眼看Kotlin的示例代码,突然发现没有分号。这个事情就值得商榷了看两个范例范例一fun sum(a: Int, b: Int): Int { // Int 参数,返回值 Int return a + b}范例二fun sum(a: Int, b: Int): Int { // Int 参数,返回值 Int return a + b}...
原创
515阅读
0评论
1点赞
发布博客于 2 年前

Kotlin入门-数据类与密封类 的解脱,由繁至简

前言今天是十一的大好日子,可惜好多网站不让用了。在Kotlin中,数据类大大减少了实体类的代码量;这篇文章的目录如下数据类简述密封类小结数据类这简直就是完美解决了java中,一个数据类动不动就是一堆代码的窘境。在Kotlin中,只要一行就可以解决问题。简直便利极了。在java中,为了解决getter & setter这种实现,特意引入了lombok。或者...
原创
144阅读
0评论
1点赞
发布博客于 2 年前

Kotlin入门-程序员的福利,扩展篇

目录定义扩展函数扩展函数是静态解析的可空接收者扩展属性伴生对象的扩展扩展的作用域扩展声明为成员定义Kotlin 能够扩展一个类的新功能而无需继承该类或者使用像装饰者这样的设计模式。比如说为第三方库中无法修改的类编写 新function,新function就如同该类原来就存在的函数一般使用。也可以为第三方类扩展一些新的属性扩展函数可以在已有类中添加新的方法,不...
原创
125阅读
0评论
1点赞
发布博客于 2 年前

Kotlin入门-必会,接口

前言Kotlin的继承基本上跟java的类似。Kotlin强化了接口实现接口的逻辑。可以更清晰的呈现 每个接口类的描述。定义使用 interface 定义范例interface MyInterface { fun bar() // 未实现 fun foo() { //已实现 // 可选的方法体 println("foo") }...
原创
150阅读
0评论
1点赞
发布博客于 2 年前

Kotlin入门-必会,属性篇

前言本文从以下几个方面进行阐述定义getter和settervarvalgetter和setter方法的权限注意幕后字段什么时候没有field字段?幕后属性定义对于 JVM 平台幕后字段与幕后属性的区别编译期常量延迟初始化属性与变量解决办法适用范围注意检测一个 lateinit var 是否已初始化(自 1.2 起)覆盖属性委托...
原创
1175阅读
0评论
1点赞
发布博客于 2 年前

Kotlin入门-父子身份更分明,继承篇

前言前文讲到,Kotlin中万物皆对象,连基础数值类型都不放过。本文从以下几个方面讲继承根是Any类构造函数重写方法重写属性中场小结派生类初始化顺序调用超类实现super覆盖规则根是Any类首先,Any 不是 java.lang.Object。在Kotlin中,Any是所有类的超类如果没有显式声明超类型声明的类,其默认的超类是AnyAny 默认提供了三个函数...
原创
208阅读
0评论
1点赞
发布博客于 2 年前

Kotlin入门-被拆分了实例化,类与构造函数篇

前言Kotlin简化了结构体的编码工作量。因此,引入了主\次构造函数。主构造函数:减少了编码的工作量。次构造函数:提供了多态的特性,同样的,也提供了java中可以定义多个结构体本文从以下几个方面来看包与导入构造函数 //敲黑板,这块莫名的感觉有趣主构造函数次构造函数创建类的实例包与导入这部分基本与java一样要注意 导入部分。支持导入包的别名import o...
原创
183阅读
0评论
1点赞
发布博客于 2 年前

Kotlin入门-label升级循环控制的自由跳动

Kotlin简化了 条件判断,同样也简化了 循环判断。本节有5个部分For循环while与do…while循环返回和跳转break和continue标签for循环支持几种类型iterator迭代器(java也有)for (item: Int in ints) { // ……}索引遍历。类似for(int i = 0; i < sum; i ++...
原创
122阅读
0评论
1点赞
发布博客于 2 年前

Kotlin入门-更灵活的条件控制

Kotlin的条件控制更加灵活有以下几个方面if…elsex…ywhenif…else先看一个范例val max = if (a > b) { print("Choose a") a} else { print("Choose b") b}直接赋值给变量➕var的定义,给人一种javascript的感觉。其实大体跟java是一样的...
原创
112阅读
0评论
1点赞
发布博客于 2 年前

Kotlin入门-万物皆对象,基础类型

Kotlin说:万物皆对象。可以说,Kotlin全面的接管了所有类型。一统天下。基本类型有5种数字整数浮点数字符布尔值数组字符串本文,我们将一个个讲解数字数字包括 整数和浮点型整数类型大小限制Byte8位Short16位Int32位所有不超过Int最大值的整数型初始化变量都被推断为IntLong64位...
原创
268阅读
0评论
1点赞
发布博客于 2 年前

Kotlin入门-与java的差异【入门级】

基本类型KotlinJava基本类型万物皆对象,基本类型也是对象基本类型不是对象
原创
116阅读
0评论
1点赞
发布博客于 2 年前

Kotlin教程,从入门到精通

前言Kotlin现在已经更新至1.3.后续,也将以1.3版本进行讲解。围绕 What(是什么)、How(怎么用)、Difference(与java的区别)、Intent(意图是什么)四个方面来阐述。产物:Kotlin整理后的Xmind(更新在github上)目录结构[基础篇]基本类型...
原创
728阅读
0评论
4点赞
发布博客于 2 年前

动态代理模式

前言本文将带着几个问题来看到底“动态代理”动态在哪里?InvocationHandler为什么没有任何实现?对于传入的newProxyInstance()的接口类型,是否有限制?如何确认某个类 是不是代理类?动态代理的实现编写你要代理的interfacepublic interface Animal { void say(); void jump();}...
原创
143阅读
0评论
1点赞
发布博客于 2 年前

组件化攻略-Activity/Fragment分发

前言App开发的场景:很多时候,是多人协作开发,组合使用。在组件化的情境下,我们需要特别注意解耦和动态似乎搞研发的,哪里都是解耦、聚合、动态。说来说去真的就是这些。所谓解耦每个模块在开发阶段,只受到所在模块影响,单一模块的更快,不会影响到其他模块。所谓动态模块的加载是随意的。不受布局,外部因素影响。像一块积木。分发的理念很多时候,业务开发的功能组合,是Activity和Frag...
原创
398阅读
0评论
1点赞
发布博客于 2 年前

组件化策略-Gradle优化

前言何为组件化?即解耦与聚合。主要 是代码优化,却不限于代码。程序员需要 理解整个工序流程,对优化的主体进行拓展。Think Outside Of The Box这是对效率的思考,对组织形式的思考。拓展探索现阶段效率的瓶颈。本文从Gradle的角度去考虑这个问题。Gradle基础每个build.gradle是个project对象,Gradle管理着project对象的生命周期...
原创
248阅读
0评论
1点赞
发布博客于 2 年前

组件化攻略 - 代码物理隔离

当不了解Project Code时,当新加入一个团队时,当接盘一个新功能时。你需要各司其职的天然屏障,物理隔离。Git提供了这样的机会。利用git submodule进行代码的文件隔离submodule子模块系统git管理,适合project的团队开发代码管理;对标的还有SVN。这是接触了好多年的代码管理。其优势文件系统级的物理隔离可以自由组合想要的submodule能...
原创
267阅读
0评论
1点赞
发布博客于 2 年前

从RxBus开始改变,源码要这么看,才算没白看

这篇文章,打算 换个编写的方式去编写。旨在改变写法,提升质量。目录结构如下源码简介(大致讲述环境)这些问题怎么实现?(带着问题去看源码)流程图级目录结构(讲函数的用途)函数解析(讲如何实现)小结(讲最简洁的 核心思想&个人理解)带着问题继续前行源码简介RxBus版本: v2.0.1源码地址: github链接简介:RxBus与EventBus功能上差不多,...
原创
400阅读
0评论
2点赞
发布博客于 2 年前

每秒100W请求,12306秒杀业务,架构如何优化?

如《同样是高并发,QQ/微博/12306的架构难度一样吗?》一文所述,同样是高并发场景,三类业务的架构挑战不一样:QQ类业务,用户主要读写自己的数据,访问基本带有uid属性,数据访问锁冲突较小微博类业务,用户的feed主页由别人发布的消息构成,数据读写有一定锁冲突12306类业务,并发量很高,几乎所有的读写锁冲突都集中在少量数据上,难度最大那么对于秒杀类业务,系统上和业务上分别能如何优...
转载
308阅读
1评论
1点赞
发布博客于 2 年前

组件化攻略-解耦Fragment

我的App里头,主要是2种形式的Activity:单Activity单Activity+多Fragment的结构。这里主要是单Activity+多Fragment结构的解耦。所谓Fragment解耦,最起码要达到build.gradle配置的module,移除就移除,不会对App的编译产生影响。若是有声明 import 去除module的类。自然就会报错。这是耦合。情景:App ...
原创
282阅读
0评论
1点赞
发布博客于 2 年前

这样才是写工具类

什么是工具类?这种 低级的问题还问的出来。最近我发现 好多东西都是一看就懂。然而,自己不知道什么时候就能写出 shi 一样的代码。这是因为编码时的构思,没有明确下来,构思不清晰,就相当于地基不稳。接下来,我们以 TimeUtil为例讲解我的思考。TimeUtils编码时的考量偶然的一次CodeReview,发现TimeUtils竟然不知道什么时候,变乱了。我知道 我该重构了。可是...
原创
2349阅读
1评论
3点赞
发布博客于 2 年前

[利其器]优雅如斯的反射工具: JOOR

JDK的反射api代码又长又难用。JOOR的目标 便是 简化 JDK反射API。JOOR是java.lang.reflect包的一个简单包装器。先看一个范例这是我用反射实现的一个全局配置部分代码Class parentClass = object.getClass(); WinConfig annotation = (WinConfig) parentClass.getAnnot...
原创
325阅读
0评论
1点赞
发布博客于 2 年前

组件化攻略-数据存储

本章节讲存储,大概会是这样的目录结构:存储方式常用存储组件:GreenDao、Realm。组件化存储存储方式Android的存储大概有SharePreference、File I/O、Sqlite、ContentProvider、网络。SharePreferences轻量级数据存储。存储简单数据类型,以Key/Value的形式进行储存。原理:对XML进行修改。适用:1...
原创
150阅读
0评论
1点赞
发布博客于 2 年前

组件化攻略-R2.java的今生前世和静态变量

ButterKnife已经成为众多开发者的选择。简直不要太好用。其优势1、强大的Resource绑定和Method事件处理功能,简化代码,提升开发效率2、方便的处理Adapter里的ViewHolder绑定问题3、运行时不会影响APP效率,使用配置方便4、代码清晰,可读性强截止 2019年9月6日。ButterKnife Version 10.1.0 (2019-02-13),已...
原创
206阅读
0评论
0点赞
发布博客于 2 年前

组件化攻略-资源合并与冲突

组件化、模块化就是理清关系、解耦、组合的过程。资源合并先来回顾下,模块化架构的图。组件化中,Network、Image等功能模块 与 BaseLib是一样的,都是Library Module,所以,都将会被编译成aar文件。先学一个命令./gradlew module_name:dependencies这是gradle命令,可以查看module的依赖树。你会发现preRelea...
原创
807阅读
0评论
1点赞
发布博客于 2 年前

android Manifest.permission normal权限合集

名称版本sdk权限值权限描述ACCESS_LOCATION_EXTRA_COMMANDSAdded in API level 1android.permission.ACCESS_LOCATION_EXTRA_COMMANDSAllows an application to access extra location provider commands.ACCE...
原创
698阅读
0评论
1点赞
发布博客于 2 年前

组件化攻略-权限管理

在开发过程中,我们时常会声明很多权限。都是熟悉的。我们哪个module需要这个权限,就在哪个modue的AndroidManifest中声明。权限可以到处声明,最终的AndroidManifest会合并这个重复声明的权限,所以,相同的权限只会被声明一次。简述权限声明Android权限定义的位置:frameworks/base/core/res/AndroidManifest.xml附...
原创
236阅读
0评论
1点赞
发布博客于 2 年前

移动端的架构演化

是什么决定了物种的生存方式和形态?环境从08年HTC T-Mobile G1开始,我国算是掀开了Android智能机的时代,13年12月4日我国正式向三大运营商发放4G牌照。4G时代的到来,给移动端带来了蓬勃发展。第一阶段:业务探索阶段。这个阶段的产品逻辑一般有几个特点,产品逻辑,展示,交互简介,业务复杂度低,以商品的搜索、展示、购买等核心流程为主。发布模式以 需求收集、评审...
原创
349阅读
0评论
0点赞
发布博客于 2 年前

毁掉一家公司最好的方式,就是跟员工讨价还价

内容来源: 2019年8月22日,在环球人力资源智库主办的中国人力资源变革管理峰会上,陈申老师进行了以“引爆人才生产力,赋能时代的绩效管理”为主题的精彩分享。讲者简介: 陈申,GHR特约讲师,16年专注企业人才布局和组织架构设计,擅长为企业提供互联网战略转型,绩效驱动,文化塑造和人才发展战略方向的咨询和培训服务。这是一个什么时代?怎么形容今天这个时代,宝洁公司首席运营官罗伯特•麦克唐纳(R...
转载
272阅读
0评论
1点赞
发布博客于 2 年前

记一次 泛型编程

泛型编程(Generic Programming)最初提出时的动机很简单直接:发明一种语言机制,能够帮助实现一个通用的标准容器库。泛型编程要解决什么问题算法的泛型类型的泛型数据结构的泛型比如如果我要在一个hashtable中查找一个key,返回什么呢?一定不是返回“索引下标”。因为在hashtable这样的数据结构中,数据存放位置不是顺序的,而且会因为容量不够的问题,被重新has...
原创
59阅读
0评论
1点赞
发布博客于 2 年前

[Think more, Code less]无招胜有招 - 忘记规范,代码更规范

系统越大,维护成本越高,这几乎是放之四海而皆准的真理。其中一个原因:代码质量参差不齐。持续优化代码、提高代码质量,是提供系统生命力的一个有效手段之一。Think more, code less(思考越多,编码越少)本文总结了General:通用Equal:平衡Short\Small:简短Simple:简单GESSS原则书面的表述: 短小精悍,平衡通用李连杰演的神教教主,...
原创
274阅读
0评论
1点赞
发布博客于 2 年前

[利其器]Android Lombok减少代码量

最近发现后端开发中,用到了一款第三方插件Lombok。利器啊。真可以减少代码量。Setup在每个build.gradle都加上这么两句dependencies { ... //Lombok //加上下面两行 compileOnly 'org.projectlombok:lombok:1.18.8' annotationProcessor 'org.proj...
原创
98阅读
0评论
0点赞
发布博客于 2 年前

特别注意Android Q中的非SDK受限变化

在Android P中,Google限制了非SDK接口。在Android Q中,Google再次更新了限制的非SDK接口。而且,单独将这一块拎出来,着重描述了一篇。可见重要程度增强。浅灰和深灰列表的命名发生变化在 Android 9(API 级别 28)中,灰名单分为以下两个列表:包含非 SDK 接口(无论目标 API 级别是什么,您都可以使用这些接口)的浅灰列表。包含非 SDK 接...
原创
3925阅读
0评论
1点赞
发布博客于 2 年前

Android 10.0 行为变更(二)针对 Android 10.0 的应用

注意:除了此页面所列的变更以外,Android Q 还引入了大量变更和限制以增强用户隐私保护。有关详情,请参阅隐私权页面。非 SDK 接口的受限情况出现变化官方明确指出:目标是在限制使用非 SDK 接口之前确保有可用的公开替代方案。反射或JNI必须要有替代方案!如果您不打算以 Android Q 为目标平台,那么其中一些变更可能不会立即对您产生影响。虽然您目前可以使用灰名单中的一些非 S...
原创
4596阅读
0评论
0点赞
发布博客于 2 年前

Android 10.0 行为变更(一)针对所有 API 级别的应用

非 SDK 接口限制官方明确指出:目标是在限制使用非 SDK 接口之前确保有可用的公开替代方案。反射或JNI必须要有替代方案!如果您不打算以 Android Q 为目标平台,那么其中一些变更可能不会立即对您产生影响。虽然您目前可以使用灰名单中的一些非 SDK 接口(取决于您应用的目标 API 级别),但如果您使用任何非 SDK 方法或字段,则应用无法运行的风险终归较高。要了解详情,请参阅非...
原创
5250阅读
1评论
1点赞
发布博客于 2 年前

谈业务技术的技术含量

前言很多人都觉得前端业务研发程序员层次低,难度小,复杂逻辑都是后端的。业务技术的技术难度提现在哪里?往往,业务所面临的复杂性来自不断变化的需求。或许经历过,有多角色,多业务场景,多逻辑验证,多阶段确认的需求,你才会有所体会。场景这里最核心的是 货物的上下架流程。这里涉及到的有人员类型:配送员、入库员、分拣员、上架员,还有小队长、中队长、大队长。条码类型:运单、运单包、货架号。...
原创
178阅读
0评论
1点赞
发布博客于 2 年前

RFC2818 如何进行加固HTTP

协议地址本协议描述了如何使用TLS来对Internet上的HTTP进行安全加固。2.1. Connection Initiation(链接初始化)HTTP client同时也作为TLS client(后续统一称为client)。在建立链接的时候,由client初始化TCP链接,并发出TLS ClientHello报文来开始TLS协商。当TLS协商完成后,client可以初始化首个HTTP请求...
翻译
263阅读
0评论
1点赞
发布博客于 2 年前

Android 9.0 行为变更(二)针对 Android 9.0 的应用

前台服务在Android 9 或 更高 API,使用前台服务的应用必须请求 FOREGROUND_SERVICE 权限。 这是普通权限,因此,系统会自动为请求权限的应用授予此权限。否则会引发 SecurityException。隐私权变更如果您的应用以 Android 9 为目标平台,您应牢记以下行为变更。 对设备序列信息和 DNS 信息进行的这些更新可增强用户隐私保护。构建序列号弃用在...
原创
270阅读
0评论
1点赞
发布博客于 2 年前

Android 9.0 行为变更(一)针对所有 API 级别的应用

电源管理Android 9引入了一些新功能来改进设备电源管理。从两个维度进行优化:应用使用频率及优先级、改进省电模式。电源管理功能可以分为两个类别:应用待机群组基于应用最近使用时间和使用频率,帮助系统排定应用请求资源的优先级。省电模式改进更主动地将应用置于应用待机模式所有APP都受到 后台执行限制灭屏时,位置服务可能被停用后台应用无法访问网络注:这些变化适用于所有应...
原创
1792阅读
0评论
1点赞
发布博客于 2 年前

Android 8.0 行为变更(二)针对 Android 8.0 的应用

- 针对 Android 8.0 或更高平台版本进行编译,或将 targetSdkVersion 设为 Android 8.0 或更高版本的应用开发者- 必须修改其应用以正确支持这些行为提醒窗口使用 SYSTEM_ALERT_WINDOW 权限的应用无法再使用以下窗口类型来在其他应用和系统窗口上方显示提醒窗口:TYPE_PHONETYPE_PRIORITY_PHONETYPE_SY...
原创
234阅读
0评论
1点赞
发布博客于 2 年前

Android 8.0 行为变更(一)针对所有 API 级别的应用

后台执行限制Android 8.0 为提高电池续航时间而引入的变更之一是,当您的应用进入已缓存状态时,如果没有活动的组件,系统将解除应用具有的所有唤醒锁。此外,为提高设备性能,系统会限制未在前台运行的应用的某些行为。具体而言:后台 Service 限制:处于空闲状态时,应用可以使用的后台 Service 存在限制。 这些限制不适用于前台 Service,因为前台 Service 更容易...
原创
194阅读
0评论
1点赞
发布博客于 2 年前

Android O不受后台执行限制的隐式广播

作为Android 8.0(API级别26)后台执行限制的一部分,针对API 26或更高的App无法再在AndroidManifest中隐式注册BroadcastReceiver。但是,目前有几个Broadcast 免于这些限制。无论应用程序所针对的API级别如何,应用程序都可以继续为以下广播注册监听器。注意:即使这些隐式广播仍然在后台工作,您应该避免为它们注册Listener。ACT...
翻译
366阅读
0评论
1点赞
发布博客于 2 年前

关于HTML CSS的布局的初步理解

HTML有着清晰的层级结构。<div class="section_05"> <div class="content"> <div class="titlebar"> <h2 class="subtitle">风控严格</h2> <small>strict risk ma...
原创
125阅读
0评论
1点赞
发布博客于 2 年前

[这个你必须要知道]CSS3 选择器

选择器例子例子描述CSS.class.intro选择 class=“intro” 的所有元素。1#id#firstname选择 id=“firstname” 的所有元素。1** 选择所有元素。2elementp选择所有 元素。element,elementdiv,p 选择所有 元素和所有 元素。1element...
转载
49阅读
0评论
1点赞
发布博客于 2 年前

[悖论]MVC、MVP、MVVM有优劣之别吗

偶然间,看到一个说法:AJAX是针对MVC的,不符合MVVM的浪潮。引发了一个思考:MVC、MVP、MVVM有优劣之别吗?过往面试也曾有人问我这个问题。本文的目的,不是介绍MVC、MVP、MVVM是什么了。MVP较MVC出现的晚,的确也是因为某些缺陷出现了这样的方案,MVVM又因为MVP的某些缺陷出现。究竟孰优孰劣?笔者的观点:这本身就是个错误的思考点,一个埋雷的坑。若MVC<M...
原创
71阅读
0评论
1点赞
发布博客于 2 年前

需求评审会出现这几个信号,你的企业可能存在工作累,产出低

出现以下几个信号:你就需要注意了。会议出现激烈争辩,产品经理疲于应付,但又无力招架产品 逻辑思维不清晰,无法理解与会人员的疑问,疲于解释,又答非所问与会人员 一人一套说法,互找漏洞,缺乏观点的收拢会议争论大,讨论激烈,会后不做整理,风平浪静,开发时各执一词会议时间过长,约定的时间经常延迟,动不动就是三四个小时人人都是产品经理,产品需求经常受到质疑,众人均希望改需求集体因为某个设计...
原创
137阅读
0评论
1点赞
发布博客于 2 年前

浅谈Strict Mode

简介StrictMode是ES5新增的功能,允许你讲程序、函数在Strict模式下运行。Strict Mode在JavaScript代码运行时自动实行更严格解析和错误处理的方法,当然会抛出更多的异常。怎么用?在整个script中用"use strict"; function doSomething() { // this runs in strict mode...
原创
156阅读
0评论
0点赞
发布博客于 2 年前

PMP项目管理13个计划

1、变更管理计划所属过程:制定项目管理计划含义:定义管理项目变更的过程,用来明确如何对变更进行监控。为管理变更控制过程提供指导,记录变更控制委员会的情况。内容:当项目需要变更的时候,如何进行变更。2、配置管理计划所属过程:制定项目管理计划含义:定义配置项,定义需要正式变更控制的内容,并为这些配置项和内容规定变更控制过程,用来明确如何开展配置管理。内容:如何管理配置。配置管...
原创
4289阅读
0评论
1点赞
发布博客于 2 年前

JavaScript学习-underscore

XMind下载链接CollectionsArraysFunctionsObjectsChaining
原创
64阅读
0评论
1点赞
发布博客于 2 年前

JavaScript学习-错误处理

XMind下载链接
原创
88阅读
0评论
0点赞
发布博客于 2 年前

JavaScript学习-jQuery

XMind下载链接概述选择器操作DOM事件动画AJAX扩展
原创
45阅读
0评论
1点赞
发布博客于 2 年前

JavaScript学习-浏览器

XMind下载链接浏览器对象及概况操作DOM操作表单操作文件AJAXPromiseCanvas
原创
111阅读
0评论
0点赞
发布博客于 2 年前

你以为的不是一定就是你以为的

我在上家公司,产品总监要求在某个过程中,加个 提示框。他说加个提示框对你来说就几分钟的事情。我心一想,这种东西能难得倒我嘛,几分钟的事情,小菜一碟嘛。我欢乐的应下了。然后,不幸就来了,我发现那个流程,本来就有 不少的逻辑判断。这个提示框,打断了我的流程。而且还需要额外请求,本来多个request 一个链式调用解决了。这一改,我得拆成两个链。if else 一加,代码加了几十行。尼玛...
原创
293阅读
0评论
1点赞
发布博客于 2 年前

JavaScript学习-面向对象编程

XMind下载链接概要说明创建对象原型继承class继承
原创
74阅读
0评论
2点赞
发布博客于 2 年前

JavaScript学习-标准对象

先上XMind链接地址:Git链接整体说明Date正则匹配 RegExpJSON
原创
55阅读
0评论
1点赞
发布博客于 2 年前

阿里云&华为云&七牛云 对象存储横向简单对比

结论我会选择七牛云,定制化,适合初期发展,boss不批钱,你只有先做起来。后面用户坐上来了。钱不是问题。阿里云500GB 136这是套餐价。阿里云的国外服务器多又好。七牛云500GB 133.02 100GB低频存储。50GB加速。100G外网流出 200W get 100W put/delete 注。请求数计费非常低,可以忽略。主要是存储空间计费。胜在定制化更强。费用最低。胜在定制...
原创
5540阅读
0评论
3点赞
发布博客于 2 年前

JavaScript学习-函数

目录结构函数定义和调用变量作用域与解构赋值方法高阶函数闭包箭头函数generator函数定义和调用变量作用域与解构赋值方法高阶函数闭包箭头函数generator...
原创
56阅读
0评论
1点赞
发布博客于 2 年前

JavaScript学习-快速入门

Git链接基本语法数据类型和变量字符串数组对象条件判断循环Map和Setiterable
原创
227阅读
0评论
2点赞
发布博客于 2 年前

补充部分-流程详解图

这部分是我从网络上淘来的自己没怎么用上。我们的知识点要整合起来看要做什么-范围管理什么时候完成-进度管理打算花多少钱-成本做的好不好-质量管理谁来做-- 资源管理我们对外有相关方要沟通–相关方管理资源之间有沟通–沟通管理风险是全局的。什么时候都有东西不够了。要从外面买–采购管理...
原创
318阅读
0评论
2点赞
发布博客于 2 年前

第十三章-项目相关方管理附录

git地址:https://github.com/wangxueming/PMP_XMIND[第十三章-项目相关方管理附录XMind下载地址]
原创
225阅读
0评论
1点赞
发布博客于 2 年前

项目管理计划组件

git地址:https://github.com/wangxueming/PMP_XMIND[项目管理计划组件XMind下载地址]
原创
420阅读
0评论
1点赞
发布博客于 2 年前

PMP的8个会议

git地址:https://github.com/wangxueming/PMP_XMIND[PMP的8个会议XMind下载地址]
原创
660阅读
0评论
1点赞
发布博客于 2 年前

第十三章-项目相关方管理

git地址:https://github.com/wangxueming/PMP_XMIND[第十三章-项目相关方管理XMind下载地址]
原创
334阅读
0评论
1点赞
发布博客于 2 年前

第十二章-项目采购管理

git地址:https://github.com/wangxueming/PMP_XMIND[第十二章-项目采购管理XMind下载地址]
原创
224阅读
0评论
1点赞
发布博客于 2 年前

第十一章-项目风险管理

git地址:https://github.com/wangxueming/PMP_XMIND[第十一章-项目风险管理XMind下载地址]
原创
270阅读
0评论
0点赞
发布博客于 2 年前

第十章-项目沟通管理

git地址:https://github.com/wangxueming/PMP_XMIND[第十章-项目沟通管理XMind下载地址]
原创
200阅读
0评论
1点赞
发布博客于 2 年前

第九章-项目资源管理

git地址:https://github.com/wangxueming/PMP_XMIND[[第九章-项目资源管理XMind下载地址]]
原创
384阅读
0评论
1点赞
发布博客于 2 年前

第八章-项目质量管理

git地址:https://github.com/wangxueming/PMP_XMIND[第八章-项目质量管理XMind下载地址]
原创
125阅读
0评论
1点赞
发布博客于 2 年前

第七章-项目成本管理

git地址:https://github.com/wangxueming/PMP_XMIND[第七章-项目成本管理XMind下载地址]
原创
98阅读
0评论
0点赞
发布博客于 2 年前

第六章-项目进度管理

git地址:https://github.com/wangxueming/PMP_XMIND第六章-项目进度管理XMind下载地址
原创
487阅读
0评论
1点赞
发布博客于 2 年前

第五章-项目范围管理

git地址:https://github.com/wangxueming/PMP_XMIND第五章-项目范围管理XMind下载地址
原创
95阅读
0评论
0点赞
发布博客于 2 年前

第四章-项目整合管理(重点)

git地址:https://github.com/wangxueming/PMP_XMIND第四章-项目整合管理XMind下载地址
原创
195阅读
0评论
2点赞
发布博客于 2 年前