- 博客(34)
- 资源 (3)
- 收藏
- 关注
原创 LeetCode第174场周赛
1337. 方阵中战斗力最弱的 k 行难度简单6收藏分享切换为英文关注反馈给你一个大小为m* n的方阵mat,方阵由若干军人和平民组成,分别用 0 和 1 表示。请你返回方阵中战斗力最弱的k行的索引,按从最弱到最强排序。如果第i行的军人数量少于第j行,或者两行军人数量相同但i小于j,那么我们认为第i行的战斗力比第j行弱。军人总是排在一行中的...
2020-02-22 21:15:21 188
原创 LeetCode第173场周赛
1332. 删除回文子序列给你一个字符串s,它仅由字母'a' 和 'b'组成。每一次删除操作都可以从 s 中删除一个回文 子序列。返回删除给定字符串中所有字符(字符串为空)的最小删除次数。「子序列」定义:如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到,那么这个字符串就是原字符串的一个子序列。「回文」定义:如果一个字符串向后和向前读是一致的,那么这个字符串就是...
2020-02-22 18:26:27 241
原创 LeetCode第172场周赛
1323. 6 和 9 组成的最大数字给你一个仅由数字 6 和 9 组成的正整数num。你最多只能翻转一位数字,将 6 变成9,或者把9 变成6 。请返回你可以得到的最大数字。示例 1:输入:num = 9996输出:9999解释:将最后一位从 6 变到 9,其结果 9999 是最大的数。1324. 竖直打印单词给你一个字符串s。...
2020-02-22 11:31:12 376
原创 轻松学会正则表达式!
对于正则表达式,相信很多人都知道,但是很多人的第一感觉就是难学,觉得完全没有规律可寻,而且全是一堆各种各样的特殊符号,完全不知所云。无论你学习哪一门编程语言,几乎都不可避免的遇到正则表达式。本文就向你详细介绍一下正则表达式的用法,旨在梳理核心知识点,让你轻松学会正则表达式的用法!一、基本概念 正则表达式(regular expression)描述了一种...
2020-02-21 21:57:36 513
原创 Android Jetpack(四)LifeCycle
Lifecycle 是2017年 Google I/O 大会推出来的,它属于 Architecture Compoment 里面的一个组件,是一个生命周期感知组件。一般用来响应Activity、Fragment等组件的生命周期变化,并将变化通知到已注册的观察者。有助于更好地组织代码,让代码逻辑符合生命周期规范,减少内存泄漏,增强稳定性。...
2020-02-17 12:56:57 195
原创 “设计模式之禅”——六大设计原则详解解读
目录一、单一职责原则二、里氏替换原则三、依赖倒转原则四、接口隔离原则五、迪米特法则六、开闭原则一、单一职责原则 单一职责原则的英文名称是:Single Responsibility Principle,简称SRP。它的内容是:应该有且只有一个引起类变化的原因。 例如下面这个类,它的设计就违反了单一职责原则: ...
2020-02-13 18:53:06 660
原创 Effective Java 总结
本专栏文章为《Effective Java》一书内容的总结提炼。该书总结了优秀Java程序员必备的78条经验总结,这些经验总结针对Java程序员每天都会遇到的编程问题提出了最有效、最实用的解决方案。每条经验总结都详细阐明了应该怎么做,不应该怎么做,以及这样做的原因。 同《Java编程思想》一样,本书也是Java编程的必读书目之一,熟练掌握书中的各条经验总结,必将大幅...
2020-02-10 18:37:10 2621
原创 Effective Java(十)
十、序列化1. 谨慎地使用Serializable接口 使一个类的实例可被序列化,只需要让它实现Serializable接口即可。因为简单,程序员普遍对序列化存在误解,以为不需要做什么工作就可以实现序列化,实际的情形却复杂的多。实现Serializable的代价有:(1)一旦一个类被发布,就大大降低了改变这个类的实现的灵活性 一个类实现了Serializa...
2020-02-10 18:20:50 298
原创 Effective Java(九)
九、并发1. 同步访问共享的可变数据 同步的语义不仅包含互斥,还包含可见性,可见性保证了进入同步方法或同步代码块的每个线程,都看到由同一个锁保护的之前所有的修改效果。 Java语言规范保证读/写一个变量是原子的,除非这个变量的类型是long或double。也即是说,读取一个非long或double类型的变量,可以保证返回的值是某个线程保存在该变量中的,即使多个...
2020-02-10 17:46:40 278
原创 Effective Java(八)
八、异常1. 只针对异常的情况才使用异常 异常机制的设计初衷是用于不正常的情形,它只能用于异常的情况,永远不应该用于正常的控制流。 设计良好的API不应该强迫它的客户端为了正常的控制流而使用异常。如果类具有“状态相关”的方法,这个类往往也应该有个单独的“状态测试”方法,指示是否可以调用这个状态相关的方法。例如,Iterator接口有一个“状态相关”的next(...
2020-02-10 17:04:33 296
原创 Effective Java(七)
七、通用程序设计1. 将局部变量的作用域最小化 同“使类和成员的可访问性最小化”一样,将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性。 Java允许在任何可以出现语句的地方声明变量,所以,最好的方法就是在第一次使用它的地方声明并初始化。 循环中提供了特殊的机会来将变量的作用域最小化,它们的作用域被限定在正好需要的...
2020-02-10 16:20:02 306
原创 Effective Java(六)
六、方法1. 检查参数的有效性 绝大多数方法和构造器对于传递给它们的参数值都会有某些限制,应该在文档中清楚地指明这些限制,并且在方法体的开头处检查参数,以强制施加这些限制。这样做可以及早地发现并处理错误。public BigInteger mod (BigInteger m) { if (m.signum() <= 0 ) { throw ...
2020-02-10 12:11:48 275
原创 Effective Java(五)
五、枚举和注解1. 用enum代替int常数 枚举类型是指由一组固定的常量组成合法值的类型,在编程语言没有引入枚举之前,表示枚举类型的常用模式是声明一组具名的int常量,每个类型成员一个常量:public static final int APPLE_FUJI = 0;public static final int APPLE_PIPPIN = 1;public s...
2020-02-10 10:37:25 196
原创 Effective Java(四)
四、泛型1. 请不要再新代码中使用原生态类型 泛型类/接口:声明中具有一个或者多个类型参数的类/接口。 每个泛型都定义一个原生态类型,即不带任何实际类型参数的泛型名称。如与List<E>相对应的原生态类型就是List。原生态类型没有泛型在安全性和表述性方面的优势,它的存在仅是为了兼容引入泛型之前的遗留代码,不应在新代码中继续使用。//使用原...
2020-02-09 19:54:22 350
原创 Effective Java(三)
三、类和接口1. 使类和成员的可访问性最小化 要区别设计良好的模块与设计不好的模块,最重要的因素在于:这个模块对于外界的其他模块而言,是否隐藏其内部数据和其他实现细节。一个模块不需要知道其他模块的内部工作情况,这个概念被称为信息隐藏或封装,是软件设计的基本原则之一。 访问控制(类、接口和成员的可访问性)的第一原则:尽可能地使每个类或者成员不被外界访问,即应使...
2020-02-09 17:33:12 410
原创 Android Jetpack(三)Data Binding
Data Binding 是谷歌官方发布的一个框架,发布于2015年的Google I/O大会,顾名思义即为数据绑定。旨在减少Android开发中的大量模板代码(比如findViewById()),提高开发效率和维护效率。 Data Binding 能够省去我们一直以来的 findViewById() 步骤,大量减少 Activity 内的代码,开发时只需要关注数...
2020-02-02 12:07:41 449
原创 Android Jetpack(二)LiveData
LiveData是2017年 Google I/O 大会和 LifeCycle 一起推出的。他们都是 Architecture Components 的组件。LiveData是一种可观察的数据持有类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件( Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 Li...
2020-02-01 21:47:33 370
原创 Android Jetpack(一)ViewModel
ViewModel是AndroidJetpack 所提供的架构组件,用于分离 UI 逻辑与 UI 数据。ViewModel是用来保存应用UI数据的类,他会在配置变更(即 Configuration Change)之后继续存在。ViewModel的生命周期会比创建它的Activity、Fragment的生命周期更长。 ...
2020-02-01 19:57:19 699
原创 Android可视化界面布局开发技巧 —— ConstraintLayout使用解析
在2016年Google I/O大会上,Google官方对于全球Android开发者强力推荐使用一种新的布局ConstraintLayout。其实ConstraintLayout是Android Studio 2.2中主要的新增功能之一,并不是什么新的内容。只不过新版的IDE增强了对于ConstraintLayout的支持。ConstraintLayout最大的特点是支持可视化的方...
2020-02-01 17:50:39 6935
cglib-full.jar
2020-02-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人