kotlin

Go 语言成为最受欢迎的语言

泪湿孤枕 提交于 2020-08-14 03:52:12
<关注阿里巴巴云原生公众号,回复 Go 即可下载清晰知识图谱> 对 Go 语言感兴趣但又不知从何学起的同学,可以参考一下 Go 语言系列文章: 为什么你要选择 Go? Go 面向失败编程 带着服务器编程金刚经走进 2020 年 敢问路在何方? 近日 HackerEarth 发布了 2020 年开发者调查报告,有来自 76 个国家和地区的 16,000 多位开发者参与其中。 HackerEarth 联合创始人兼首席执行官 Sachin Gupta 在报告中提到:「今天技术开发者人才的短缺达到了自 2008 年以来的最高值,招聘者想要得到开发者们的青睐变得难上加难。」 这个观点似乎和我们的普遍想法不同,在中国的互联网上总是有「开发岗位」已经饱和的声音,或经常听到某公司的一个开发岗位有几十人争夺的新闻,那么 Sachin Gupta 究竟为什么会得到这样的观点呢?让我们一起来看下这份报告。 以下是报告的详细解读: 报告调查重点: Go 是今年最受欢迎的编程语言。无论是学生(29%)还是专业人士(32%),都将 Go 语言列在 「最想学习的语言」 第一位。受访的学生最想学习的语言还有 JavaScript 和 Kotlin,而专业人士将 Python 和 Kotlin 作为接下来的选择。 开发者技能篇 1. 到了 2020 年,数据科学仍占统治地位 数据科学无止境!从学生开发人员(63%

Java中你必须知道的基础知识点

两盒软妹~` 提交于 2020-08-14 03:25:53
本篇博客主要记录Java中面向对象的概念知识和一些基础Java类的使用。属于自己平时学习过程中知识点的“拼凑”,方便自己回顾总结。 1. 什么是面向对象 面向对象是一种优秀的软件设计思想,是相对于 面向过程、面向切面 等设计思想的一种软件设计理念。它的核心思想是运用更加贴近人类思维的方式去设计软件,将软件中的各个组件抽象成相应的类,再将这些类组装成我们所需的软件系统。这里举个例子,假如用面向对象的方式设计一个电脑,我们会设计CPU类、硬盘类、显示器类、内存类等等,然后将这些类组合在一起设计成Computer类。 面向过程的思想在解决问题时会将问题分解成一个个小的函数,然后按照某种顺序去执行这些方法,当这些方法执行完毕,问题也就解决了。 2. 三大基本特征和五项基本原则 面向对象的三个基本特征是: 封装、继承和多态 。正是基于这些特征,面向对象的开发语言才能拥有更好的可重用性、扩展性和维护性。 封装:将对象的实现细节隐藏起来,然后通过一些公共的方法向外部提供该对象的功能; 继承:继承是软件复用的一种重要手段,子类继承父类之后将直接获得父类的属性和方法; 多态:对象可以赋给父类对象和接口,但是运行时依然表现出子类或实现类的特征。 面向对象的 五大原则 如下: 单一职责原则(SRP):一个类专注于实现一个功能; 开闭原则(OCP):对象或实体应该对扩展开放,对修改封闭; 里氏替换原则

救火必备!问题排查与系统优化手册

点点圈 提交于 2020-08-14 01:36:27
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 阿里妹导读:软件工程领域存在一个共识:维护代码所花费的时间要远多于写代码。而整个代码维护过程中,最惊心动魄与扣人心弦的部分,莫过于问题排查(Trouble-shooting)了。特别是那些需要 7x24 小时不间断维护在线业务的一线服务端程序员们,大大小小的问题排查线上救火早已成为家常便饭,一不小心可能就吃成了自助餐 —— 竖着进躺着出,吃不了也兜不住。本文分享作者在服务端问题排查方面的一些经验,包括常见问题、排查流程、排查工具,结合实际项目中发生过的惨痛案例进行现身说法。 一 问题排查 1 常见问题 Know Your Enemy:知己知彼,百战不殆。 日常遇到的大部分问题,大致可以归到如下几类: 逻辑缺陷:e.g. NPE、死循环、边界情况未覆盖。 性能瓶颈:e.g. 接口 RT 陡增、吞吐率上不去。 内存异常:e.g. GC 卡顿、频繁 FGC、内存泄露、OOM 并发/分布式:e.g. 存在竞争条件、时钟不同步。 数据问题:e.g. 出现脏数据、序列化失败。 安全问题:e.g. DDoS 攻击、数据泄露。 环境故障:e.g. 宿主机宕机、网络不通、丢包。 操作失误:e.g. 配置推错、删库跑路(危险动作,请勿尝试..)。 上述分类可能不太完备和严谨,想传达的点是

Android 开发技术周报 Issue#283

£可爱£侵袭症+ 提交于 2020-08-13 18:44:57
新闻 Android 11特性调整:安装外部来源应用需要重启APP Google Messages beta版迎来一个新的搜索框 Android开发者生态永远比不上iOS?“联盟与公约”们正改变这一点 谷歌新款Android TV串流设备外形曝光:代号Sabrina Android 11 Beta引入诸多改进:3种图标形状 Pixel Launcher应用推荐 Android更新改进了“就寝时间”功能体验 Android 11电源键菜单将引入针对智能家居设备的快捷操作 教程 Android Studio 4.0+ 中新的 UI 层次结构调试工具 开源库 ParcelableHelper A simple AOP tool that helps Android developers quickly implement Parcelable interfaces toolargetool A tool to help you debug TransactionTooLargeExceptions on Android 7 SimpleMarkdown SimpleMarkdown is an Android app for editing Markdown! Android-Architecture-Components The template project that uses

Android apk快速定位、灰色按钮克星--DroidSword

≡放荡痞女 提交于 2020-08-13 12:14:38
本文博客地址: https://blog.csdn.net/QQ1084283172/article/details/80994434 在进行Android应用程序的逆向分析时,经常需要对Android应用程序的按钮事件、Activity界面等类的代码进行定位分析,传统的代码定位方法就是进行按钮或者Activity界面等显示的 字符串信息 进行全局的搜索,然后找他们的id或者类进行代码的定位,比较繁琐,这里介绍一个基于Xposed Hook实现的Android apk快速定位,灰色按钮克星工具DroidSword,当然了亦可以使用我前面的博客中提到的《 Xposed框架Hook Android应用的所有类方法打印Log日志 》和《 查找和定位Android应用的按钮点击事件的代码位置基于Xposed Hook实现 》进行Android应用程序的需要分析的代码的定位。 DroidSword工具的功能介绍: 1.快速定位Activity,以及点击View的信息 2.点击悬浮窗口获取Fragment 3.灰色按钮克星 4.文字修改神器 DroidSword工具的github地址: https://github.com/githubwing/DroidSword DroidSword工具作者的学习博客: http://androidwing.net

Kotlin Class「T」

倖福魔咒の 提交于 2020-08-13 11:45:12
fun <T> gotoMainPage( context: Activity, postId: String, mainActivity: Class<T> ) { val intent = Intent(context, ADSplashActivity::class.java) intent.putExtra("postId", postId) intent.putExtra("mainActivity", mainActivity) context.startActivity(intent) // 修复 Android 9.0 下 Activity 跳转动画导致的启动页闪屏的问题 context.overridePendingTransition(0, 0) context.finish() } var activity=MainActivity1::class.java; AnguoAds.gotoMainPage(this, "132", activity) 来源: oschina 链接: https://my.oschina.net/u/4414726/blog/4334566

终于明白 Java 为什么要加 final 关键字了!

北慕城南 提交于 2020-08-13 09:34:24
在开发过程中,由于习惯的原因,我们可能对某种编程语言的一些特性习以为常,特别是只用一种语言作为日常开发的情况。但是当你使用超过一种语言进行开发的时候就会发现,虽然都是高级语言,但是它们之间很多特性都是不太相同的。 现象描述 在 Java 8 之前,匿名内部类在使用外部成员的时候,会报错并提示 “Cannot refer to a non-final variable arg inside an inner class defined in a different method”: 但是在 Java 8 之后,类似场景却没有再提示了: 难道是此类变量可以随便改动了吗?当然不是,当你试图修改这些变量的时候,仍然会提示错误: 可以看到,当试图修改基本数据类型的变量时,编译器的警告变成了 “Varible ‘num’ is accessed from within inner class, need to be final or effectively final”,很遗憾,仍然不能修改。相比之下,Kotlin 是没有这个限制的: 原因分析 从表面上当然看不出什么原因,看看编译器做了什么工作吧!运行 javac 命令后生成了几个 .class 文件: 不难推断,这个 TestInnerClass$1.class 就是匿名内部类编译后的文件,看看它反编译后是什么内容: class

Android 近期关注的文章和内容

时光怂恿深爱的人放手 提交于 2020-08-13 01:49:32
App 启动流程分析 https://zhuanlan.zhihu.com/p/59801160 Android Application启动流程 https://www.jianshu.com/p/14d54a76b16f Kotlin基础语法 https://www.runoob.com/kotlin Kotlin优势讲解 https://www.cnblogs.com/qcloud1001/p/9207619.html Flutter相关问题 https://www.jianshu.com/p/e43c72e62112 Handler同步屏障 https://blog.csdn.net/u010347226/article/details/106768022/ Handler消息类型 https://www.jianshu.com/p/f9018ac8dfad Handler汇总 https://blog.csdn.net/wuqiqi1992/article/details/107706258 Handler图解 https://blog.csdn.net/zxloveooo/article/details/104920967 来源: oschina 链接: https://my.oschina.net/u/4259850/blog/4463615

Python 为什么用 # 号作注释符?

时光总嘲笑我的痴心妄想 提交于 2020-08-12 20:11:35
关于编程语言中的注释,其重要性基本上已为大家所共识。 然而关于注释的规范,这个话题就像我们之前聊过的缩进、终止符和命名方式一样,众口难调。 注释符通常可分为两种,即行注释与块注释(inline/block),它们在不同的编程语言中的符号可谓让人眼花缭乱。 比如行注释符,它至少有以下的 17 种之多(出自 维基百科 ): 其中两个最大的阵营分别是“//”与“#”号: // 注释符:ActionScript, C (C99), C++, C#, D, F#, Go, Java, JavaScript, Kotlin, Object Pascal (Delphi), Objective-C, PHP, Rust, Scala, SASS, Swift, Xojo # 注释符:Bourne shell and other UNIX shells, Cobra, Perl, Python, Ruby, Seed7, Windows PowerShell, PHP, R, Make, Maple, Elixir, Nim 那么,**Python 为什么用“#”号作注释符,而不是“//”呢? ** 这个问题恐怕没办法从解析的效率、符号的辨识度和输入的便利性等方面回答,因为它们基本上没有区别。 我没有找到官方的解释,但是从这些注释符的阵营中,已经不难得出一个较为合理的解释: // 注释符基本上被

学习响应式编程 Reactor (2)

瘦欲@ 提交于 2020-08-12 05:01:38
Reactor Reactor 是用于 Java 的异步非阻塞响应式编程框架,同时具备背压控制的能力。它与 Java 8 函数式 Api 直接集成,比如 分为CompletableFuture、Stream、以及 Duration 。它提供了异步 Api 响应流 Flux (用于 [0 - N] 个元素)和 Mono (用于 [0或1] 个元素),并完全遵守和实现了响应式规范。 引入 reactor reactor 自 3.0.4 版本之后,采用了 BOM (Bill Of Materials)的方式,使用 BOM 可以管理一组良好集成的 maven artifacts,而无需担心不同版本组件之间的相互依赖问题,在 maven 项目中在 dependencyManagement 中 加入 reactor 的 bom 定义即可。 <dependencyManagement> <dependencies> <dependency> <groupId>io.projectreactor</groupId> <artifactId>reactor-bom</artifactId> <version>Dysprosium-SR8</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> <