乱码三千 – 分享实用IT技术

乱码三千 – 码出一个新世界


  • 首页

  • 归档

  • 搜索

Android系统的启动过程大致介绍

发表于 2019-12-05

安卓手机从开机到桌面显示的这个过程,即为Android系统启动过程,那么在这个过程中, Android系统内部都做了哪些操作呢?

首先咱们来看一张Android系统架构图:

Android系统的启动是由下往上进行的

从系统核心库Init.c的main函数开始执行—>Android Runtime—>执行init1函数初始化native也就是Libraries层—>执行init2函数初始化Framework层—>最后是Application层

具体流程图如下:

具体时序图如下:

当然 还有详细的思维导图供大家参考

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

2019主流能用的前端混合开发框架都有哪些

发表于 2019-12-04

目前可用框架

  • MUI
  • ReactNative
  • Weex
  • Cordova
  • Ionic
  • Flutter

1.MUI

mui是最接近原生App体验的前端框架。

体积极小:100k的js文件,60k的css文件。

原生编写,不依赖任何三方框架

极强:xcode和Android studio里所有原生控件都具备

高性能:精练的代码、适时的5+原生动画调用,达到原生应用的体验

多端发布:编写一套代码,iOS、Android、浏览器、微信App、百度直达号、流应用全覆盖

2 . ReactNative

Facebook出品

文档全

社区成熟

组件丰富

劣势

需要维护两套代码,即 iOS,Android 各一套。并且开发调试 iOS 只能使用 Mac 设备

对开发设备有要求,调试不方便

3.Weex

iOS, android, H5 共用一套代码,

基于vue

但是

社区极度不成熟

文档不全

组件有限

资料少

4.Cordova

前身是PhoneGap,后被Adobe公司收购, 目前已经捐赠给Apache开源

优势

集成方便

文档全

组件丰富

劣势

流畅度欠缺

5.ionic

优势

基于Angular语法,简单易学

开发效率高(如果熟悉Angular的话)

劣势

受限于Angular

流畅度一般

可定制性差

6.Flutter

google出品

性能强

组件丰富

跨平台

但是

开发门槛稍高 需要学习Dart语言

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Source Insight 4.0 安装与破解(附下载地址)

发表于 2019-12-04

Source Insight4.0简介

Source Insight 4.0是一款功能强大的程序编辑器和代码浏览器,只要你拥有相应的程序语言包就能够进行程序分析, 比如说目前最好的开源语言java

作为一个android开发人员, 如果你想在windows平台上阅读程序源码, 那么Source Insight是你的布尔首选

Source Insight4.0 下载地址

如果您已经安装了sourceinsight4.0,只是需要破解,则直接下载以下资源:

链接: https://pan.baidu.com/s/1dFWD4YX 密码: icjm

解压密码: biu 因可能被检测版权问题,故必须加密打包分享。

如果需要全部重新安装,请下载 完全安装包+破解exe+lisence 压缩包:

链接: https://pan.baidu.com/s/1eSZtsbw 密码: 3kjj

解压密码: biu 因可能被检测版权问题,故必须加密打包分享。

备用破解版下载:

https://545c.com/f/21042697-503735264-7eb2bc
(访问密码:312306)

Source Insight4.0破解方法

第一步 安装Source Insight4.0

第二步 替换Source Insight.exe文件

第三步 加载lic注册文件

第四步 点击“Next”破解成功!

附录二:

如果安装或者安装后提示有问题,请进行完全卸载后,再重装一遍即可。

完全卸载方式:

1、清除注册表信息:

  • “win ”+ R 或者 “开始” -> “运行”,输入“regedit”,回车;
  • 在弹出的注册表管理器中,选择“编辑”-> “查找”->“source insight”,或按照下述路径展开:HKEY_CURRENT_USER -> software -> Source Dynamics -> Source Insight;
  • 将该项下面的source insight 需要清除的对应版本项目选中,右键“删除“。

2、删除全局配置信息:

  • 在 ./user/document/source insight 3.0/4.0 下的所有文件及该文件夹
  • 注意此处的路径可能不同 也可能是:“库”->“用户”(也可能是你的名字) -> 文档 -> source insight3.0/4.0
  • 或者 你上次安装的时候所指定的其他位置

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Java面试题之面向对象的设计原则 一次性记忆

发表于 2019-11-28

六大原则

  • 单一职责原则——SRP
  • 开闭原则——OCP
  • 里式替换原则——LSP
  • 依赖倒置原则——DIP
  • 接口隔离原则——ISP
  • 迪米特原则——LOD

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Android面试题之Handler内存泄漏处理 一次性记忆

发表于 2019-11-28

为什么会内存泄漏

内部类持有外部类对象引用,导致外部类无法被回收

如何解决内存泄露

  • 使用静态内部类
  • Activity销毁时handler.removeCallback()
  • 使用弱引用

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Android面试题之Service 一次性记忆

发表于 2019-11-27

服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。

这两个方法都 可以启动Service,但是它们的使用场合有所不同。

  • 使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服 务仍然运行。

  • 使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的 特点。

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

java五大排序算法之冒泡排序

发表于 2019-11-27

一.冒泡排序介绍

冒泡排序是我们得最多的排序方式之一,原因是简单易实现,且原理易懂。顾名思义,冒泡排序,它的排序过程就像水中的气泡一样,一个一个上浮到水面。
img

二.冒泡排序原理分析

img

三.冒泡排序代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* @Author {LearnAndGet}
* @Time 2019年1月8日
* @Discription:
*/
package com.sort;

import java.util.Arrays;

public class MaopaoSort {

static int[] array = {3,2,4,1,5,0};

public static void maopaoSort(int[] a)
{
//外层循环,是需要进行比较的轮数,一共进行5次即可
for(int i=0;i<a.length-1;i++)
{
//内存循环,是每一轮中进行的两两比较
for(int j=0;j<a.length-1;j++)
{
if(a[j] > a[j+1])
{
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
System.out.println("第"+(i+1)+"轮排序后的数组为: "+Arrays.toString(a));
}
}

public static void main(String[] args) {
maopaoSort(array);
}
}

输出结果

1
2
3
4
5
第1轮排序后的数组为: [2, 3, 1, 4, 0, 5]
第2轮排序后的数组为: [2, 1, 3, 0, 4, 5]
第3轮排序后的数组为: [1, 2, 0, 3, 4, 5]
第4轮排序后的数组为: [1, 0, 2, 3, 4, 5]
第5轮排序后的数组为: [0, 1, 2, 3, 4, 5]

四.冒泡排序的优化

1 .观察上述代码和运行结果,我们可以发现,当第一轮结束后,最后一个数字一定是数组中最大的元素,那么我们在进行第二趟的两两比较时,实际上是没有必要再对第5个和第6个进行比较的。那么我们可以修改代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void maopaoSort(int[] a) 
{
//外层循环,是需要进行比较的轮数,一共进行5次即可
for(int i=0;i<a.length-1;i++)
{
//内存循环,是每一轮中进行的两两比较
//并且每一轮结束后,下一次的两两比较中可以少比较一次
for(int j=0;j<a.length-i-1;j++)
{
if(a[j] > a[j+1])
{
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
System.out.println("第"+(i+1)+"轮排序后的数组为: "+Arrays.toString(a));
}
}

继续运行后,可以发现运行结果是一样的。

2 .当我们用数组:{1,2,0,3,5,4}来测试上述冒泡排序时,运行结果如下:

1
2
3
4
5
第1轮排序后的数组为: [1, 0, 2, 3, 4, 5]
第2轮排序后的数组为: [0, 1, 2, 3, 4, 5]
第3轮排序后的数组为: [0, 1, 2, 3, 4, 5]
第4轮排序后的数组为: [0, 1, 2, 3, 4, 5]
第5轮排序后的数组为: [0, 1, 2, 3, 4, 5]

可以看到,在第2轮排序完成后,其实我们就已经的到了排好序的数组,但是我们的程序并不知道,仍然进行了后续的无用工作。那么,我们如何来让程序知道已经完成好排序了呢?

这里可以想到,当某一轮的两两比较中,如果都没有发生数组元素的互换,那么其实排序工作已经完成了,所以我们可以考虑在程序中加入一个flag,默认为false,含义是该轮比较中是否发生了元素互换,当程序中执行到元素互换时,将该flag置为true,当该轮比较结束时,若flag为flase,则说明该轮比较未发生元素互换,那么排序完成,若flag为true,说明本轮比较仍然有元素互换,需要继续进行下轮排序。代码实现如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
* @Author {LearnAndGet}
* @Time 2019年1月8日
* @Discription:
*/
package com.sort;

import java.util.Arrays;

public class MaopaoSort {

static int[] array = {1,2,0,3,5,4};

public static void maopaoSort(int[] a)
{
//外层循环,是需要进行比较的轮数,一共进行5次即可
for(int i=0;i<a.length-1;i++)
{
boolean flag = false;
//内存循环,是每一轮中进行的两两比较
for(int j=0;j<a.length-i-1;j++)
{
if(a[j] > a[j+1])
{
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
flag = true;
}
}
System.out.println("第"+(i+1)+"轮排序后的数组为: "+Arrays.toString(a));
if(flag == false)
{
System.out.println("本轮中的两两比较未发生元素互换,排序已经完成啦");
return;
}
}
}

public static void main(String[] args) {
maopaoSort(array);
}
}

运行结果:

1
2
3
4
第1轮排序后的数组为: [1, 0, 2, 3, 4, 5]
第2轮排序后的数组为: [0, 1, 2, 3, 4, 5]
第3轮排序后的数组为: [0, 1, 2, 3, 4, 5]
本轮中的两两比较未发生元素互换,排序已经完成啦

五.冒泡排序的时间复杂度

冒泡排序是一种用时间换空间的排序方法,最坏情况是把顺序的排列变成逆序,或者把逆序的数列变成顺序。在这种情况下,每一次比较都需要进行交换运算。举个例子来说,一个数列 5 4 3 2 1 进行冒泡升序排列

第一轮的两两比较,需要比较4次;得到 4 3 2 1 5
第二轮的两两比较,需要比较3次;得到 3 2 1 4 5
第三轮的两两比较,需要比较2次;得到 2 1 3 4 5
第四轮的两两比较,需要比较1次;得到 1 2 3 4 5

所以总的比较次数为 4 + 3 + 2 + 1 = 10次
对于n位的数列则有比较次数为 (n-1) + (n-2) + … + 1 = n * (n - 1) / 2,这就得到了最大的比较次数。
而O(N^2)表示的是复杂度的数量级。举个例子来说,如果n = 10000,那么 n(n-1)/2 = (n^2 - n) / 2 = (100000000 - 10000) / 2,相对10^8来说,10000小的可以忽略不计了,所以总计算次数约为0.5 * N^2。用O(N^2)就表示了其数量级(忽略前面系数0.5)。

综上所述,冒泡排序的时间复杂度为:O(n²)

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Android面试题之事件分发机制 一次性记忆

发表于 2019-11-26

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Android面试题之Activity的四种启动模式 一次性记忆

发表于 2019-11-26

每当我们换工作面试之前,总是会不由自主的刷起面试题,大部分题我们反反复复不知道刷了多少遍,但是今天记住了,等下一次面试的时候又刷着相同的面试题,我就想问在座的各位,Activity的生命周期,你们到底刷过多少遍 [哭笑] 作为一名程序员 把时间浪费在重复性劳动上是极其不能忍受的 因此 为了让自己省去不必要的脑力开销 我给自己总结了一份面试相关的记忆技巧,在这里分享给大家 记忆不是目的 把知识变成自己的才最关键

哪四种启动模式

  • standard:默认启动模式,每开启一个activity就在任务栈中创建一个新的实例
  • singleTop:任务栈顶部有就复用,没有就重新创建,
  • singleTask:任务栈中有就将实例上方所有的实例全部销毁使其显示在最顶端,没有就重新创建一个新的实例 在搜索界面比较常用 按下主页其余网页全部被关闭
  • singleInstance:重新为新创建activity(实例)开启一个单独的任务栈,且该任务栈中有且仅有一个实例 该模式特点如下图:

如果快速记忆

其实只要将它们的英文名称单词反过来就好理解了

  • singleTop—>Top single 顶部只有一个 不允许存在两个相同的Activity
  • singleTask—>Task single 任务栈中只有它这一个Activity 那么一旦调用它 任务栈除它以外的所有Activity都会被销毁
  • singleInstance—>Instance single 实例被孤立了 进了小黑屋被单独的一个任务栈给关着
  • standard—>正常模式 这个应该好记忆

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Android面试题之四大组件 一次性记忆

发表于 2019-11-26

每当我们换工作面试之前,总是会不由自主的刷起面试题,大部分题我们反反复复不知道刷了多少遍,但是今天记住了,等下一次面试的时候又刷着相同的面试题,我就想问在座的各位,Activity的生命周期,你们到底刷过多少遍 [哭笑] 作为一名程序员 把时间浪费在重复性劳动上是极其不能忍受的 因此 为了让自己省去不必要的脑力开销 我给自己总结了一份面试相关的记忆技巧,在这里分享给大家 记忆不是目的 把知识变成自己的才最关键

四大组件是什么?

Activity【活动】:用于页面展示和交互。
Service【服务】:后台运行服务,不提供界面呈现。
BroadcastReceiver【广播接收器】:用来接收广播。
Content Provider【内容提供商】:支持在多个应用中存储和读取数据,相当于数据库。

如何一次性记忆四大组件

如果让你去设计一款操作系统,你会怎么设计?

针对具有交互性的操作系统而言,需要具备以下几种基础功能 :

  • 首先 程序的界面的展示是必不可少的 这是其一 (Activity)
  • 其二 程序中也许不止一个界面 多个界面之间需要进行通信和数据传递 (BroadcastReceiver)
  • 第三 多个程序之间需要进行通信和数据传递 (Content Provider)
  • 第四 程序界面未显示的时也能随时响应用户操作 可后台运行 (Service)

*当你理解了设计者的用意后 确实能很好的理解四大组件的含义, 但是并不意味着你能很好的记忆住他们 在面试过程中你必须要有较快的反应速度 *

在这里我抛出几种右脑记忆思路:

  • 取四大组件英文首字母得到 ABCS 当对方问你四大组件都有哪些时 你能立马联想到英文字母ABC
  • 这四大组件能让你联想到什么画面?

到这里 有些人可能会说了 四大组件这么好记 还用得着这么费劲记忆?

我想说的是 如果你在工作中经常使用这些知识 那么它们对你来讲是非常熟悉的 但是针对初学者或者很长时间没有使用的开发者而言 一套合理的记忆技巧是非常有帮助的 我想若干年后 你也许忘了四大组件都有哪些了 但是你依然记得文本所说的ABC 这个时候 回忆起来 也只是一念之间的事儿

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

1…48495051

乱码三千

android程序员一枚,擅长java,kotlin,python,金融投资,欢迎交流~

505 日志
145 标签
RSS
© 2026 乱码三千
本站总访问量次
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4
0%