- 博客(175)
- 收藏
- 关注
原创 语言对比学习-Dart
语言对比学习-DartDart介绍Dart是由Google开发的计算机编程语言,它可以被用于web、服务器、移动应用 和物联网等领域的开发。Dart诞生于2011年,号称要取代JavaScript。但是过去的几年中一直不温不火。直到Flutter的出现现在被人们重新重视。要学Flutter的话我们必须首先得会Dart。官网:https://dart.dev/在 Google 内部孵化了移动开发框架 Flutter,弯道超车进入了移动开发的领域;而在 Google 未来的操作系统 Fuchsia
2021-05-14 20:20:51
393
原创 语言对比学习-Java
语言对比学习-JavaJava介绍Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。1995年5月以Java的名称正式发布。伴随着互联网的迅猛发展,Java逐渐成为重要的网络编程语言2011年7月28日,Oracle公司发布Java SE 1.72014年3月18日,Oracle
2021-05-14 20:19:59
276
原创 语言对比学习-Kotlin
语言对比学习-KotlinKotlin介绍Kotlin是由JetBrains开发的针对JVM、Android和浏览器的静态编程语言,目前,在Apache组织的许可下已经开源。使用Kotlin,开发者可以很方便地开发移动Android应用、服务器程序和JavaScript程序。在开发Kotlin之前,JetBrains团队一直使用Java来创建他们的IDE以及使用Java进行业务逻辑开发。之所以开发Kotlin,是因为JetBrains 的工程师们在使用Java开发应用程序的过程中,发现了大量的问题。
2021-05-14 20:19:08
191
原创 自定义xlog
https://juejin.cn/post/6850418121279438855基于微信XLog的日志框架&&对于XLog的分析自定义Xlog包名https://blog.csdn.net/u011923796/article/details/102746554Android Mars XLog 自定义存储格式https://blog.csdn.net/EthanCo/article/details/104378841自定义 xlog 加密https://www.books
2021-04-01 11:58:11
151
原创 算法技巧
https://juejin.cn/post/6926801566699618312#heading-3那么对于零基础的小白来说,可能需要花10-20天左右时间来准备算法,而对于非科班来说这个周期可能会更长一点。那么,现在我准备来分享我是如何零基础刷题的。第一点,明确算法它不是很难的东西,理解了其实就那会事,或许你还会喜欢上做题,当然,对于acm大佬做的题就另当别论了,这篇文章主体与面试水平为准第二点,前端对于算法这一块的考察相对来说会偏简单一点,我在春秋招过程中遇到的笔试题都是一些常见的题目,比如搜
2021-04-01 11:53:20
103
原创 写出漂亮博客
写出漂亮博客https://juejin.cn/post/6844904105274523661#heading-8你的掘金文章本可以这么炫(博客美化工具一波带走)http://www.zyiz.net/tech/detail-107868.htmlTypora修改Markdown神器[Typora]的主题样式https://cloud.tencent.com/developer/article/1686096业余时间做了一个小程序,每天广告收益有个十几块,多的时候有过七八十。同时有在经营一个
2021-04-01 11:37:28
116
原创 统治世界的十大算法
https://blog.csdn.net/ahence/article/details/28152387软件正在统治世界。而软件的核心则是算法什么是算法?通俗而言,算法是一个定义明确的计算过程,可以一些值或一组值作为输入并产生一些值或一组值作为输出。因此算法就是将输入转为输出的一系列计算步骤简而言之,算法就是可完成特定任务的一系列步骤,它应该具备三大特征:1、有限2、指令明确3、有效以下是 Marcos Otero 推荐的十大算法:1、归并排序、快速排序及堆积排序最好的排序算法跟需求密
2021-01-20 15:31:27
267
原创 动态规划的理解
https://juejin.cn/post/6895073364759543816动态规划的定义:将原问题拆解成若干子问题,同时保存子问题的答案,使得每个子问题只求解一次,最终获得原问题的答案动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解那么我们什么
2021-01-20 10:44:27
119
原创 机器人的运动范围
机器人的运动范围,是一道很传统的搜索题目,我们可以使用广度优先搜索或者深度优先搜索来解决它地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子? /
2021-01-19 11:05:50
200
原创 微信小程序教程
微信小程序教程系列http://blog.csdn.net/michael_ouyang/article/details/54700871
2021-01-18 11:29:03
103
原创 微信小程序项目实例
目前为止最全的微信小程序项目实例 — demo锦集https://blog.csdn.net/qq_40025218/article/details/85791455
2021-01-18 11:18:21
2937
原创 题目-ThirdLibrary
Glide生命周期实现https://blog.csdn.net/weixin_44339238/article/details/105801108EventBus核心原理https://blog.csdn.net/weixin_44339238/article/details/105693317RxJava2 + Retrofit2 完全指南 之 Authenticator处理与Token静默刷新https://blog.csdn.net/weixin_44339238/article/deta
2021-01-17 22:27:02
107
原创 设计原则
要成为一名架构师,必须掌握的 10 条设计原则。一、遵循单一职责原则函数是程序员的工具中最重要的抽象形式。它们能更多地被重复使用,你需要编写的代码就越少,代码也因此变得更可靠。较小的函数遵循单一职责原则更有可能被重复使用。二、尽量减少共享状态应该尽量减少函数之间的隐式共享状态,无论它是文件作用域的变量还是对象的成员字段,这有利于明确要求把值作为参数。当能明确地显示函数需要什么才可以产生所需的结果时,代码会变得更容易理解和重用。对此的一个推论是,在一个对象中,相对于成员变量,你更应该优先选择静态的无
2021-01-17 22:09:35
162
原创 相信整个世界终究是为技术所驱动
陆奇:1.“我们一定要有一个坚定不移的深刻的理念,相信整个世界终究是为技术所驱动的。”2.“有没有其他人已经解决这个问题?然后你可以把你的时间放在更好的创新上。”3.“做什么事情一定要做最好,一定要是做业界最强的。”4.“我把自己想象是一个软件、一个代码,今天的版本一定要比昨天版本好,明天的版本肯定会比今天好。”5.“看到问题也不要去问别人,就把它 Fix。”...
2021-01-17 12:51:40
102
原创 安卓各版本变化
安卓各版本变化,兼容适配Android 5.0Material DesignART虚拟机Android 6.0应用权限管理官方指纹支持Doze电量管理运行时权限机制->需要动态申请权限Android 7.0多窗口模式支持Java 8语言平台需要使用FileProvider访问照片安装apk需要兼容Android 8.0通知,渠道->适配画中画自动填充后台限制自适应桌面图标->适配隐式广播限制开启后台Service限制Android
2021-01-15 17:25:16
220
原创 无重叠区间
给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。 /* 首先要对区间进行排序,这里先以区间的头来排序,然后在遍历区间。 1,如果后面区间的头小于当前区间的尾, 比如当前区间是[3,6],后面区间是[4,5]或者是[5,9] 说明这两个区间有重复,必须要移除一个,那么要移除哪个呢,为了防止在下一个区间和现有区间有重叠, 我们应
2021-01-15 16:16:00
253
原创 String.trim()究竟去掉了什么?
trim()方法实际上trim掉了字符串两端Unicode编码小于等于32(\u0020)的所有字符 /** * Returns a string whose value is this string, with any leading and trailing * whitespace removed. * <p> * If this {@code String} object represents an empty character
2021-01-15 15:57:12
265
原创 叶子相似的树
如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false public boolean leafSimilar(TreeNode root1, TreeNode root2) { List<Integer> leaves1 = new ArrayList(); List<Integer> leaves2 = new Arr
2021-01-15 09:56:56
95
原创 种花问题
假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false。示例 1:输入:flowerbed = [1,0,0,0,1], n = 1输出:true示例 2:输入:flowerbed = [1,0,0,0,1],
2021-01-15 09:43:11
201
原创 空间换时间举例
空间换时间举例 public String[] findRestaurant(String[] list1, String[] list2) { HashMap<String, Integer> map = new HashMap<>(); for (int i = 0; i < list1.length; i++) map.put(list1[i], i); List<String>
2021-01-15 09:25:38
578
原创 Kotlin创建二维Int数组
fun transpose(A: Array<IntArray>): Array<IntArray> { var R = A.size var C = A[0].size val ans = Array(size = C, init = { IntArray(R) }) for (i in 0 until R) { for (j in 0 until C) { ans[j][i] = A[i][j]
2021-01-04 11:14:46
4824
原创 转置矩阵
LeetCode867. 转置矩阵给定一个矩阵 A, 返回 A 的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引fun transpose(A: Array<IntArray>): Array<IntArray> { var R = A.size var C = A[0].size val ans = Array(size = C, init = { IntArray(R) }) for (
2021-01-04 11:14:12
288
原创 TreeMap
总结TreeMap存储K-V键值对,通过红黑树(R-B tree)实现;TreeMap继承了NavigableMap接口,NavigableMap接口继承了SortedMap接口,可支持一系列的导航定位以及导航操作的方法,当然只是提供了接口,需要TreeMap自己去实现;TreeMap实现了Cloneable接口,可被克隆,实现了Serializable接口,可序列化;TreeMap因为是通过红黑树实现,红黑树结构天然支持排序,默认情况下通过Key值的自然顺序进行排序TreeMap中的元素默认按照
2020-12-30 16:16:15
75
原创 Arrays+Collections
Arrayssort/DualPivotQuicksort.sortparallelSortmergeSortswapparallelPrefixbinarySearchequalshashCodefillcopyOfcopyOfRangesetAllstreamArrayListCollections内部sort的原理TimSortlist,set,map区别是否有序是否元素重复
2020-12-30 14:45:14
71
原创 面向接口编程
面向接口编程详解-Java篇https://www.cnblogs.com/iceb/p/7093884.html相信看到这篇文字的人已经不需要了解什么是接口了,我就不再过多的做介绍了,直接步入正题,接口测试如何编写。那么在这一篇里,我们用一个例子,让各位对这个重要的编程思想有个直观的印象。为充分考虑到初学者,所以这个例子非常简单,望各位高手见谅。为了摆脱新手的概念,我这里也尽量不用main方法,而采用testNG编写测试用例。定义:现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘、M
2020-12-23 09:18:51
89
原创 如何编写出高质量的代码
一般来说代码质量由以下5个方面决定:编码标准:一般每个公司都会有一套自己的编码规范,规范都会详细的要求类命名、包命名以及代码风格等代码重复:简单来说就是你需要规避大量重复代码,如果说你发现你有大量的重复代码,那就要考虑把这部分代码提取出来单独的封装成公共的方法或者组件了代码覆盖率:要清楚你的测试代码占总代码的覆盖率,这关系到代码的功能性和稳定性依赖项分析:代码依赖关系怎么样?耦合关系怎么样?是否有循环依赖?是否符合高内聚低耦合的原则?高层模块应该不能依赖低层模块,它们都依赖于抽象复杂度分析:代码一
2020-12-22 17:58:43
658
原创 代码整洁之道
《代码整洁之道》笔记一以贯之的命名原则:如fetch,get,retrieve 都可以用作获取,拿到 的意思,但是我们要根据实际的应用场景,在通一个类或者模块中尽量只使用其中一个作为方法名的前缀,如getXXX一词一意原则:如add表示增加,可以在任何地方增加,如前面,中间,后面等等。但是如果有一个方法需要表示只能在末尾附加,此时就不应该使用add方法了,而应该用append方法,这个原则给一以贯之命名原则做了限定,即只有是代表同样的操作的时候才一以贯之。使用解决方案领域名称:尽量使用专业的领域
2020-12-22 17:57:42
140
原创 编程规范一
一,命名风格1,代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。2,代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。3,类名、方法名、参数名、成员变量、局部变量都统一使UpperCamelCase 风格,必须遵从驼峰形式。4,常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。5,抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾 。6,接口的请求参数的bean,以Req结尾,接口的响
2020-12-22 17:56:56
277
1
原创 Kotlin笔记
var val区别var是一个可变变量,这是一个可以通过重新分配来更改为另一个值的变量。这种声明变量的方式和java中声明变量的方式一样。val是一个只读变量,这种声明变量的方式相当于java中的final变量。一个val创建的时候必须初始化,因为以后不能被改变在Kotlin里,系统可以区分引用是否可以null 引用,举栗来说,一个String的常规变量不能持有null:var a: String = “abc”a = null // compilation error为了允许它为null,我们
2020-12-20 21:34:27
65
原创 Kotlin-单例模式
双重校验锁式(Double Check)//Java实现public class SingletonDemo { private volatile static SingletonDemo instance; private SingletonDemo(){} public static SingletonDemo getInstance(){ if(instance==null){ synchronized (SingletonDemo
2020-12-16 17:50:07
251
原创 构建乘积数组
题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在 public int[] constructArr(int[] a) { if (a
2020-12-16 11:15:45
66
原创 数组中重复的数字
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中第一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。返回描述:如果数组中有重复的数字,函数返回true,否则返回false。如果数组中有重复的数字,把重复的数字放到参数duplication[0]中。(ps:duplication已经初始化,可以直接赋值使用。) public
2020-12-16 10:58:24
228
原创 把字符串转换成整数
题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 public int strToInt(String str) { char[] chars = str.trim().toCharArray(); if (chars.length == 0) return 0; int ans = 0; int idx = 1; int sign = 1;
2020-12-16 10:55:10
149
原创 求1+2+…+n
题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C) public int sumNums(int n) { boolean flag = n > 0 && (n += sumNums(n - 1)) > 0; return n; }...
2020-12-16 09:57:05
97
原创 第一个只出现一次的字符
题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)public char firstUniqChar(String s) { int[] count = new int[256]; char[] chars = s.toCharArray(); for(char c : chars) count[c
2020-12-15 17:23:48
50
原创 连续子数组的最大和
题目描述输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n) public int maxSubArray(int[] nums) { int res = nums[0]; for (int i = 1; i < nums.length; i++) { nums[i] += Math.max(nums[i - 1], 0); res
2020-12-15 17:10:15
104
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人