SWBlog
SWBlog copied to clipboard
machine learning practitioner, android and python
# 关于android 悬浮窗和自启动的设置, 以及获取系统的信息 标签(空格分隔):Android --- ## 悬浮窗 对于是否有开悬浮窗,程序是可以检测到的。 权限声明: `` ### 权限检查: 对于android6.0 以上的机型来说,google将悬浮窗权限和其他危险权限单独列出,因此可以检测, 方法: ``` fun checkFloatWindowPermission(): Boolean { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { val result = Settings.canDrawOverlays(BaseContext.application)...
上篇回顾:kotlin和android architecture Component,Room的完成与测试。 接上篇,如果看到模拟的数据插入,那么可以继续往下看 ### lifecycle 该架构提供了一种管理activity和fragmeng生命周期的方法,并且让接下来介绍的livedata可以在有效生命周期内收到观察,更新UI。首先来看: 因为还是测试版的原因,目前可以继承lifecycleActivity和lifecyclefragment来实现。 ``` class StoryListFragment : LifecycleFragment() {} ``` 说一下类的继承结构: lifecycleActivity(LifecycleFragment)实现LifecycleRegistryOwner接口。只有一个方法: ``` //源码 public interface LifecycleRegistryOwner extends LifecycleOwner { @Override LifecycleRegistry getLifecycle(); } ```...
# 从谷歌官方例子看constraintlayout 标签(空格分隔): googlesamples 知乎 --- 研究官方文档,是通往业界大拿的途径-----不知道是谁。 这是一个新的系列,打算看一些 github 上谷歌官方的小例子,好处不必多说。 最近的项目中,所有的布局已经换成了 `constraintlayout`,这是谷歌推荐的布局。 因此打算从 `constraintlayoutexamples` 入手。 一点小技巧:视图编辑器用来辅助,布局还是得手写代码。其中 `tools` 开头的属性是负责在视图编辑器辅助展示我们的布局,手写布局可以忽略。 基本知识不做过多介绍,说一些我的收获。 1. 关于 view 的居中: 用的最多的是约定上下左右即可,通过 margin 设置偏移量。 若是要求图中的 `button2` 相对 `button1`...
# react-native + mobx 入门到放弃 标签(空格分隔): react mobx Android --- 作为一个刚开始看react-native的小白,找到的源码我都看不太懂,还有涉及redux的知识。后面同事介绍mobx,因此记录一下学习过程。 ## redux 和 mobx 过多的内容这里不做叙述,请看下面链接(可以知道是什么和为什么,很短) [如何理解 Facebook 的 flux 应用架构?](https://www.zhihu.com/question/33864532/answer/57667838) [理解 React,但不理解 Redux,该如何通俗易懂的理解 Redux?](https://www.zhihu.com/question/41312576/answer/90782136) [MobX vs Redux: Comparing the...
### 有关权限管理 Anroid6.0以下, 权限申明后即可获取(国产定制系统除外) 在manifest文件里声明权限: ``` //电话相关权限 ``` 6.0以上不仅要声明,还需运行时获取。 步骤大概如下:  已打电话权限为例说明(一般情况): ``` private void checkAndRquestCallPermission() { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { Log.d(TAG, "checkCallPermission: " + "没有打电话权限"); ActivityCompat.requestPermissions(this, new...
### as控制台输出中文乱码问题 在当前模块的buide.gradle文件加入: ``` tasks.withType(org.gradle.api.tasks.compile.JavaCompile) { options.encoding = "UTF-8" } ``` ### context的区别 ``` Application mApp = (Application) getApplication(); Log.e(TAG, "getApp: "+mApp); Context mContext = getApplicationContext(); Log.e(TAG, "onAppContext: "+mContext); Context...
笔者自16年毕业至如今,开发 `ios` 三个月,`Android` 七个月。自觉学习的知识严重不足,但偶尔记点开发的心得。因此打算整理一下这些笔记,月为单位,特此记录。 2016.7 -- 2016.9 `ios`开发时期三个月,暂且不表。 ###2017.10 开始熟悉项目源码,几个学习的关键点:`handle`, `gradle`, 匿名内部类和泛型, `adapter`, `Layoutinflater.inflate` 其中项目用到的Kvo绑定是借鉴ios的一套框架,可以使用 `databinding` 加以替换。 反射机制, `AppBarLayout` [关于Android Drawable的微技巧阅读](http://blog.csdn.net/sinyu890807/article/details/50727753) 几个要点: 1. `drawable`文件夹存放图片文件,`.png`, `.jpg`. `.9.png`, `selector`的`xml`文件,而`mipmap`只用来存放应用程序的图标。 2. 根据经验,公司的设计不可能每个尺度的图都能给到。图片最佳的放置文件夹是`drawable-xxhdip`。 ```...
最长递增子序列: 动态规划和LCS(最长公共子序列) 子序列和子串的区别:子序列不连续,字串连续。 这个题两种解法 1. 动态规划 2. 复制数组并排序,求两数组的最长公共子序列。 下面分别做简单介绍: ## 动态规划 O(n^2)时间复杂度。想求的array[0, i]的最大递增子序列。则计算array[0, i- 1]中以**各元素为最后元素的最长递增序列**。与array[i]比较, 因为不连续。 ``` def longest_increasing_subsequence_one(array): temp_array = [1] * len(array) for index, _ in enumerate(array): for...
找到无序数组中的第k大元素, kth_Largest_element_in_an_array。 常见的解决方案有两种,快速排序思想和堆排序思想,简单记录一下过程,顺便复习快速排序和堆排序过程。 ## 快速排序思想 快速排序的理论基础是随机取一个数,大的放左边,小的放右边,完成一趟排序。 分别对左右两边递归做相同的分割,最后还剩一个数,自然有序,完成快速排序。 那么找第k大的元素,即完成一次排序后,随机找出的这个数的前面有 k -1个数,那么就是第k大个元素。 下标: k - 1 = index. 否则再根据下标关系判断在k在左边还是右边,继续如上操作。 快速排序完成一次排序的函数如下: ``` # 最后一个数为支点,从小到大排序 def partition_two(array, lo, hi): i = lo j =...
为什么这里仅仅是后序遍历?因此后序遍历稍微要麻烦一点,默认对其他五种遍历已经了解(递归和非递归的前序, 中序遍历,还有层次遍历。 这里有两种情况, 1. 层次遍历是树的广度优先搜索,借助队列实现。如果要分层输出,那么多加一个变量记录当前层的节点个数。 2. 其余三种的非递归遍历都是借助栈实现。 ### 递归后序遍历 ``` def post_order_traversal_tree(root): if root is None: return post_order_traversal_tree(root.left_child) post_order_traversal_tree(root.right_child) print(root.data, end=" ") ``` 下面着重分析一下后序的非递归遍历 ### 非递归遍历(一) 思路:对于任一节点将其入栈。若左右节点都已访问过,则访问该节点并出栈。否则将右子树入栈,左子树入栈, 保证左子树在右子树之前访问。 ``` def...