- 博客(30)
- 收藏
- 关注
原创 Android的事件分发——附带学习过程与感想
Android的事件分发ps:本博客是笔者自己根据官方开发文档一步一步自己学习记录下来的过程,可能会有点错误,不过我感觉大部分应该是正确的,中途思维有点跳跃,最后因为实践的时候遇到一点小问题,导致我当时都在怀疑自己,所以又多看了几遍文档的函数介绍。事件分发说到事件分发机制我第一反应会想到Dom的事件流,早期的IE和网景的事件流是相反的。(IE的事件流是我们常常听说的事件冒泡,从下至上;网...
2019-10-13 14:56:03
321
原创 Android中更新UI的三种方式
Android中更新UI的三种方式:1.在工作线程中更新UI2.使用AsyncTask3.使用Handler本博客的界面用的同一个xml在<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" a...
2019-04-07 14:57:40
8595
原创 Kotlin展开运算符
Kotlin展开运算符当你需要传递一个数组参数时,在Kotlin中需要你解包数组,以便每个数组元素在函数中能作为单独的参数来调用。我们使用*号来展开这个数组。fun main() { val list: Array<String> = arrayOf("two","three","four") val list2 = listOf("one",*list); ...
2018-11-28 12:25:04
3049
1
原创 打乱一个1~100的数组(睡眠算法)
题目题目的大意就是:打乱一个1~100的数组(每个数打乱的概率要相同)一、等待取票面试完静下来想了想,能不能有其他好的解法,然后第一种想法竟然是类似“睡眠排序”。我的思路:去动物园排队,100个人,去盒子里取号,根据号码顺序入场。如何设置这个盒子:获取????的规则,随机生成。public class Main { public static void main(String[] a...
2019-10-31 09:45:40
1283
原创 Android如何加载大图,防止OOM
Android加载大图,防止OOM为什么我们的移动设备加载大图需要处理在网络上有着许许多多的图片,有高清的,有高糊的,在pc端我们可以为所欲为,但在移动端,不可能让我们这样啊,手机的内存没有那么的大,我们的图片都是加载到内存堆中,一个app分配的内存堆是有限的,我们还要存储其他对象使用,还有一个重要因素就是虽然wifi已经普及,但还有大多数上了年纪的人对流量的概念不清楚,用你的app几分钟不仅...
2019-10-27 02:29:49
1024
原创 Android打包流程
Android打包流程图为典型的Android应用模块的编译流程Android编译流程的步骤:打包资源文件Resource Files,生成R.java文件(AAPT:Android Asset Packaging Tool)处理AIDL文件,生成java代码(AIDL:Android Interface Definition Language,实现进程间的通信)编译代码文件(Sou...
2019-10-08 12:51:07
344
原创 Android系统架构(五层)
Android系统的五层架构最开始的Android系统框架分为5层(内核层、硬件抽象层、系统运行库层、应用程序框架层、应用程序层)后来维基百科上搜索到的Android系统框架图为上图,少了一个硬件抽象层HAL(GPS、Wi-Fi、Camera….)从下往上看1.Linux内核层Android的底层是基于Linux操作系统的,Linux系统的驱动开发的可扩展能力较强,这让android的...
2019-10-07 21:34:18
4933
原创 设计模式——建造者模式(java版,吃货请进)
建造者模式建造者模式:使用多个简单的对象一步一步的构成一个复杂的对象。其实生活中比比皆是建造者模式,学习也一样,需要你一步一步来。我们什么时候使用建造者模式呢?需要他的时候吧!1.我们有多个部件,需要去组装的时候,而且是要按先后顺序去的(得到的结果不是同时的);2.产品结构较为复杂,组装顺序或者使用的部件不同,会产生不同的结果的;3.初始化的对象需要的参数多时,而且很多参数具有默认值;...
2019-10-04 19:20:34
290
原创 设计模式——工厂设计模式(c++版,简单理解)
工厂设计模式它属于创建型模式,他提供了一种创建对象的最佳方式,他创建对象时不会对客户端暴露创建的逻辑,并且通过一个共同的接口来指向新创建的对象。简单工厂模式举个????:你和同学去金拱门,看着小姐姐头上的菜单,你看上了个儿童套餐A,你基友看上了儿童套餐B。你点餐的时候只用给小姐姐说要个儿童套餐A,等会你就会得到一个汉堡,一杯可乐,一份大薯和你看上的玩具。而且你和你基友领餐的时候都在同一个领餐区,你...
2019-10-01 15:59:00
269
原创 算法——归并排序
算法——归并排序归并排序的思想是:先切分到最小再排序(归并)。 快排的思想是:切分一次后立刻排序(交换)。时间复杂度为O(n*logn),他是稳定的排序#include <iostream>#include <vector>using namespace std;template <typename T>inline void merge(ve...
2019-09-28 21:25:08
170
原创 算法——快速排序
算法——快速排序思路:选择一个基点,小的放基点左边,大的放基点右边。快排不是稳定的排序。平均时间复杂度为O(n*logn),最坏的时候为(n^2)#include <iostream>#include <vector>#include <algorithm>using namespace std;template <typename T&...
2019-09-19 21:40:07
163
原创 算法——希尔排序
算法——希尔排序原理:按步长进行直接插入排序。适用于短小、基本有序的序列进行排序。是不稳定的排序。时间复杂度 小于o(n^2)#include <iostream>#include <vector>#include <algorithm>using namespace std;template <typename T>void sh...
2019-09-19 20:40:08
185
原创 STL——set
set<T> 容器内部元素的组织方式和 map<K,T> 相同,都是平衡二叉树。set的底层数据结构是红黑树,红黑树是一种平衡性很好的二分查找树,用红黑树实现只需要为不同类型重载operator<就行。(set必须支持比较运算)set集合,顾名思义没有重复的元素。初始化template < class T, /...
2019-09-06 15:45:19
178
原创 STL序列容器——list
list 容器具有一些 vector 和 deque 容器所不具备的优势,它可以在常规时间内,在序列已知的任何位置插入或删除元素。这是我们使用 list,而不使用 vector 或 deque 容器的主要原因。list底层的数据结构为双向链表,支持快速增删。(可以在list已知的任何位置插入或删除元素)list 的缺点是无法通过位置来直接访问序列中的元素,也就是说,不能索引元素。为了访问 ...
2019-09-04 22:16:28
208
原创 STL——priority_queue
优先队列是容器适配器的一种类型,特别设计为它的第一个元素总是它包含的元素中最大的元素,根据一些严格的弱顺序标准。优先级最高的元素总是第一个被处理。ps:priority_queue的底层实现是堆(heaps)。默认的priority_queue是使用大顶堆(max-heap)实现的。初始化template <class T, class Container = ...
2019-09-03 21:22:30
225
原创 STL——queue
只能访问 queue<T> 容器适配器的第一个和最后一个元素。只能在容器的末尾添加新元素,只能从头部移除元素。初始化template <class T, class Container = deque<T> > class queue;queue<int> que;queue<int> my_que...
2019-09-03 16:04:53
233
原创 STL——map
mapmap 容器是关联容器的一种。在关联容器中,对象的位置取决于和它关联的键的值。键可以是基本类型,也可以是类类型。关键词起到索引的作用,值则是索引相关联的数据。map是以红黑树为底层机制完成的,插入删除等操作都在O(logn)时间内完成。map<K,T> 类模板定义在 map 文件头中,它定义了一个保存 T 类型对象的 map,每个 T 类型的对象都有一个关联的 K 类型...
2019-08-31 21:09:20
230
原创 算法——直接插入排序
算法——直接插入排序原理:每一趟将一个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置上,直到所有待排序记录全部插入为止。#include <iostream>#include <vector>using namespace std;void InsertSort(vector<int>& k){ int n = k.siz...
2019-08-31 01:57:26
217
原创 算法——选择排序
算法——选择排序原理:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。#include <iostream>#include <vector>using namespace std;vo...
2019-08-31 01:00:19
170
原创 一道汽车加油问题—”流浪地球“
今天阿里客户端校招,一道卡了挺久的选择题。题目大概意思:(原题是”流浪地球“)A,B两地相聚800km,一辆车能跑200km,中途没有补给站,但车之间能随时补给!最少需要多少辆车?选项:30,35,40,45,50,55普通思路:每走100公里,留一半的车,油补给另一半,全部加满,走到600的时候剩一辆就行,倒推下来是64但没有这个选项。正确思路:1辆车能让3...
2019-08-31 00:07:36
253
原创 c++11模拟java中的split函数——字符串分割
#include <iostream>#include <vector>#include <string>using namespace std;vector<string> split(const string& s,const string& c){ vector<string> v; string::...
2019-08-30 14:29:09
374
原创 STL容器适配器——stack
初始化stack<int> s;stack<typename T, typename Container=deque<T>> //第一个参数是存储对象的类型,第二个参数是底层容器的类型。stack<T> 的底层容器默认是 deque<T> 容器ps:创建堆栈时,不能在初始化列表中用对象来初始化,可以用另一个容器来初...
2019-08-28 10:46:32
208
原创 STL序列容器——vector
二、vector vector<T> 容器是包含 T 类型元素的序列容器,和 array<T,N> 容器相似,不同的是 vector<T> 容器的大小可以自动增长,从而可以包含任意数量的元素;因此类型参数 T 不再需要模板参数 N。只要元素个数超出 vector 当前容量,就会自动分配更多的空间。只能在容器尾部高效地删除或添加元素。引入头文件...
2019-08-22 21:15:53
223
原创 STL序列容器——array
一、arrayarray<T,N> ,T:数据类型,N:固定的元素个数。array与数组操作一样,都不能增加元素或者删除元素。引入头文件#include <array>using namespace std;创建数组容器array<double,13> arr1; // 13个元素,初始值为随机值array<doub...
2019-08-20 19:01:46
258
原创 C++ STL—String
string 类的 string::npos 可同时定义字符串的最大长度,通常设置为无符号 int 的最大值。string 类包含了 6 个构造函数。string 类支持 cin 方式和 getline() 方式两种输入方式。简单示例如下:string stuff;cin >> stuff;getline(cin, stuff);上述三行代码,第一行是声明 string ...
2019-08-18 17:53:10
238
原创 最长回文字符串——Manacher(马拉车)算法
给定一个字符串,求出其最长回文子串。例如:s=“babad”,最长回文字符串:“bab”。(“aba” 也是一个有效答案)根据Manacher算法得出来的答案为"aba"。思路:1.进行新的字符串进行装载babad 装载后 $#b#a#b#a#d#为什么需要装载?为了消除奇回文与偶回文,让偶数回文数能有中心点标记位置2.定义一个辅助数组int p[](记录的数字为最长回文字符串的长...
2019-05-10 21:13:42
314
原创 Android UI线程与工作进程
当一个Android程序启动时,系统会为该程序创建一个进程,然后创建一个线程运行在这个进程中,称为主线程。主线程是程序和UI控件交互的进程,所以也被称为UI线程。单线程模型:Android中在单条线程中进行事件分发及UI交互的机制两条规则:1.不要在UI线程中进行耗时操作(会引起未响应等待)2.不要在UI线程外操作界面控件(界面控件是非线程安全的)我们创建个ThreadDemo文件来看...
2019-04-07 01:28:33
748
原创 Android 之 Kotlin 篇 —— HelloWord篇(一)
Android Studio中安装了Kotlin插件后,我们就可以新建一个HelloWordKt的项目,勾选上Include Kotlin support后,我们就能新建一个Kotlin项目了。新建完后,打开app\src\main\java\…\MainActivity.kt就能看到新建的kt文件了。我们来对比一下.java文件和.kt文件的区别这两份代码实现的功能是一样的,只是使用的...
2018-12-01 19:27:28
604
原创 算法 —— 冒泡排序
算法 —— 冒泡排序算法中加入一个布尔变量,来标识该轮有没有进行数据的交换,若在某一趟排序中未发现数据位置的交换,则说明待排序的无序区中所有的项均已满足排序后的结果。那么就没有必要再次排序下去了。 public static void bubbleSort(int[] a) { boolean temp; for(int i = a.length - 1; i &gt; 0; i...
2018-11-28 11:10:52
184
原创 Android Studio中配置Genymotion模拟器
Android Studio Android Studio下载地址: https://developer.android.google.cn/studio/index.html 百度网盘:https://pan.baidu.com/s/1HLUaP7hhLSNpPeIJ26dJYA安装步骤:除了安装地址(放在自己想放的地方),一路next就好。 Genymotion模拟器(史上最...
2018-09-12 11:44:30
571
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅