自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王学明

不积跬步,无以至千里;不积小流,无以成江海.

  • 博客(212)
  • 收藏
  • 关注

原创 Kotlin教程,从入门到精通

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

2019-09-26 11:08:11 1691 1

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

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

2019-09-11 17:04:33 654

原创 这样才是写工具类

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

2019-09-09 16:45:33 3662 1

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

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

2019-08-19 15:37:34 671

原创 三分钟学会git命令

用了git将近一年,总结一下能确保没问题的一些场景。特意简化了一些操作。减少了一些指令。最近9个月git管理没有碰到问题场景一:ssh配置参考github文章 github关于ssh生成添加 一般来说,公司内部的github也是有相关的文章的。 需要注意一下几点 ssh生成指令:ssh-keygen -t rsa -C "[email protected]" -b 4

2018-07-15 17:04:56 631

原创 仔细想了下模块划分,其实也不简单-量化

场景:兄弟们,我们今天开几个,我们要开个会,聊一聊研发的依赖问题。聊一聊,沟通。开会就要花时间,时间成本。一个App就是一堆git仓库+一堆逻辑的组合,就构成了完整的业务逻辑。衡量模块划分的标准其实就是**“沟通量”**。换个词语:职责划分、代码边界。常用的划分是功能划分通过引入各种仓库,给我们的研发带来了边界api 'jp.wasabeef:glide-transformations:4.0.1'api "com.github.bumptech.glide:glide:${glide_v.

2021-04-02 17:22:44 361

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

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

2020-12-24 00:27:04 1102 1

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

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

2020-08-17 23:46:50 851

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

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

2020-08-16 23:50:37 2076

原创 小白搭建ngrok完全手册

搭建ngrok完全手册用途你要准备这些功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入用途ngrok 将本地服务映射到公网。本地开发了一个服务,希望能给开发的同事使用,但又不想部署在服务器。开发微信公众号,必须要有个公网的

2020-06-09 12:03:54 538

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

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

2019-11-26 16:28:19 4679

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

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

2019-11-20 16:27:27 2208 4

原创 吓得我赶紧学个Python压压惊

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

2019-11-08 16:16:31 646

原创 都掌握了吗?Kotlin技能小成

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

2019-10-24 16:41:52 4880

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

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

2019-10-17 11:08:04 798 1

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

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

2019-10-15 13:21:51 72565 151

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

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

2019-10-12 16:29:35 818

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

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

2019-10-12 16:17:14 955

原创 Kotlin-反射看这篇就够了

前言获取静态已知Kotlin类的引用使用::classval c = MyClass::class若要获得 Java 类引用, 需在 KClass 实例上使用 .java 属性val c = MyClass::classc.java通过已有的对象获取类的引用也是用::class获取val widget: Widget = ……assert(widget is Go...

2019-10-12 16:00:28 6239

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

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

2019-10-12 15:45:55 737

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

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

2019-10-10 17:06:38 643

原创 Kotlin-this略有不同

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

2019-10-10 16:44:42 1688

原创 Kotlin-讲解 实验性API

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

2019-10-10 16:34:32 1009

原创 5招鲜-Kotlin这样处理NPE

前言相传NPE值十亿美金。哇~那是好多????Kotlin为何这么?????号称解决了NPE呢?① NPE从哪里来② Kotlin从哪几个方面解决了NPE③ Kotlin到底解决了什么?④ 在什么时候,Kotlin的NPE解决方案是失灵的?NPE的来源有四个来源显式调用 throw NullPointerException()使用了 !! 操作符这是Kotlin提供的用户可强制抛...

2019-10-10 11:57:02 613

原创 Kotlin-集合

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

2019-10-09 16:46:54 754

原创 Kotlin入门-似曾相识的泛型

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

2019-10-09 09:49:22 309

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

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

2019-10-08 16:32:39 867

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

自kotlin 1.1起,类型别名(Type alias)为现有类型提供替代名称,如果类型名称太长,可引入较短别名替代原类型名!为集合类型(collection type)提供别名://缩短较长泛型类型(generic type)是很有吸引力的typealias NodeSet = Set<Network.Node>typealias FileTable<K>...

2019-10-08 15:34:44 358

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

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

2019-10-08 15:18:55 313

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

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

2019-10-08 11:16:41 699

原创 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}...

2019-10-01 22:39:23 1380 2

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

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

2019-10-01 22:08:20 321

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

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

2019-09-30 23:57:36 287

原创 Kotlin入门-必会,接口

前言Kotlin的继承基本上跟java的类似。Kotlin强化了接口实现接口的逻辑。可以更清晰的呈现 每个接口类的描述。定义使用 interface 定义范例interface MyInterface { fun bar() // 未实现 fun foo() { //已实现 // 可选的方法体 println("foo") }...

2019-09-27 15:17:05 310

原创 Kotlin入门-必会,属性篇

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

2019-09-27 15:02:33 1398

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

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

2019-09-27 12:21:09 760 1

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

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

2019-09-27 10:29:59 544

原创 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 ++...

2019-09-26 16:03:12 415

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

Kotlin的条件控制更加灵活有以下几个方面if…elsex…ywhenif…else先看一个范例val max = if (a > b) { print("Choose a") a} else { print("Choose b") b}直接赋值给变量➕var的定义,给人一种javascript的感觉。其实大体跟java是一样的...

2019-09-26 14:41:24 238

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

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

2019-09-26 14:05:22 755

空空如也

空空如也

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

TA关注的人

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