- 博客(62)
- 资源 (10)
- 问答 (1)
- 收藏
- 关注
原创 智能座舱进阶-FrameWork-PMS/WMS/AMS
系统中的一个系统服务,控制着窗口的显示和操作,它是WindowManager的实现类,处理窗口的实现、更新、删除等操作。就是在view的添加后, view的更新走到RootViewImpl的类中的view操作方法, 大家可以看https://blog.youkuaiyun.com/lansus/article/details/144744203?会通过Binder通信的方式发送id和content内容, WMS服务接收到后,就会将其添加到对应的层级SurfaceView上。每个activity只有一个主线程。
2025-01-07 11:22:12
663
原创 智能座舱进阶-FrameWork-系统启动流程
Zygote 进程都是通过fock 自身来创建子进程的,这样Zygote 进程以及它的子进程都可以进入app_main.cpp的main函数,因此main函数中为了区分当前运行在哪个进程,会在注释1处判断参数arg中是否包含了“–zygote”,如果包含了则说明main函数是运行在Zygote进程中的并在注释2处将zygote设置为ture。.等等,源码太长我就不放了。从目录上大致可以猜测,这两个init.rc使用场景不一样,一个是刷机用到的,也就是进入recorvery模式,一个是正常启动用到的;
2025-01-06 15:04:28
1050
原创 智能座舱进阶-应用框架层-Window&Activity渲染、View渲染&事件传递
今天这里我们聊四个话题:1. Activity的界面渲染过程;2. 子view的添加刷新过程3. WindowManager的添加渲染过程 【比如添加一个子window】4. view的渲染流程5. view的事件传递过程话题1:Activity的界面渲染过程。
2024-12-26 14:52:36
574
原创 智能座舱进阶-应用框架层-Handler分析
首先明确, handler是为了解决单进程内的线程之间的通信问题的。我也需要理解Android系统中进程和线程的概念, APP启动后,会有三四个线程启动起来,其中,有一条mainUITread的线程,专门用来处理UI事件,以及显示组件的生命周期,多个Activity的线程都是同一个。此外还要知晓,单进程内的多线程是共享内存、信号量、运行指令。如下图:除了私有栈区,不能相互共享, 代码的方法指令、数据都可以在进程内任意线程执行。这里大家先记住这点, 在后面的问题3的解释中会用到。
2024-12-20 17:31:19
1140
原创 智能座舱进阶-应用框架层-Jetpack主要组件
大家还是不要把ViewBinding和DataBinding这两个不要混淆了.ViewBindling 这是一个负责绑定View到代码,减少 findViewId降低空引用资源ID错误。使用起来也较为简单, 流程是:Android{第二就是需要在使用的Activity、fragment、view里面去初始化一下,inflate“) {第三步就可以直接引用使用了注意: viewBinding 目前能够支持所有Xml的控件进行自动绑定, 包含Activity、Fragment以及其他View等。
2024-12-19 11:58:35
1258
原创 智能座舱进阶-应用框架层-RecyclerView进阶
官方定义:RecyclerView 可以让您轻松高效地显示大量数据。您提供数据并定义每个列表项的外观,而 RecyclerView 库会根据需要动态创建元素。顾名思义,RecyclerView 会回收这些单个的元素。当列表项滚动出屏幕时,RecyclerView 不会销毁其视图。相反,RecyclerView 会对屏幕上滚动的新列表项重用该视图。RecyclerView 可提升性能和应用的响应速度,并降低功耗。具体如何使用,可以直接参考上面的Android官网链接, 我只赘述后面的不分原理部分。
2024-12-17 16:12:57
714
原创 自动化搭建(Jenkins_Docker)1
目前为了搭建Android自动化构建, 包含自动打包、代码审查工具以及自动化测试的串联。如下图:Java安装Jenkins安装和配置Gerrit 和 repo安装。
2023-09-15 09:57:25
129
原创 jcenter 代理换成阿里云
//jcenter() maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
2020-07-20 21:26:29
1665
原创 机器学习5:k-近邻算法
K-近邻算法(kNN)工作原理它的工作原理是,存在一个样本数据集合,也称作训练有样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类对应的关系.输入没有标签的新数据后,将新数据的每个特征与样本集中的数据对应的特征进行比较,然后算法提取样本集中也正最相似数据(最近邻)d的分类标签,一般来说,我们只选择样本数据集中前k个最相似的数据,通常k不大于20.最后选择k个相似数据中出现最多次数的分类,作为新数据的分类.数学函数式一般根据数据的坐标通过欧氏距离公式,计算两点的距离来对比两点
2020-06-10 15:18:24
323
原创 Android进阶(jni部分三)ABI
ABI ,不同的Android设备有不同的CPU,而不同的CPU有不同的指令集。CPU与指令集的每种组合都有专属二进制。ABI包含信息:可使用的 CPU 指令集(和扩展指令集)。运行时内存存储和加载的字节顺序。Android 始终是 little-endian。在应用和系统之间传递数据的规范(包括对齐限制),以及系统调用函数时如何使用堆栈和寄- 存- 器。可执行二进制文件(例如程序和共享...
2020-04-25 09:56:45
823
原创 Android进阶(jni部分二)ndk-build&CMake
概览本部分简要介绍了 NDK 的工作原理。Android NDK 是一组使您能将 C 或 C++(“原生代码”)嵌入到 Android 应用中的工具。能够在 Android 应用中使用原生代码对于想执行以下一项或多项操作的开发者特别有用:在平台之间移植其应用。重复使用现有库,或者提供其自己的库供重复使用。在某些情况下提高性能,特别是像游戏这种计算密集型应用。主要组件在编译应用时,您...
2020-04-18 17:01:44
541
原创 Android进阶(jni部分一)
前言现在准备花一点时间在Android的技术更新上,往下层走。首先是从应用层走到jni层。开始慢慢的学习没并且做好记录。也许个人的技术不好,但是希望记录能够帮助同行。Android程序执行流程Android 系统启动过程Android系统基于linux内核,所以启动时候最先通过Bootloader来加载linux内核,然后初始化Linux内核,最后去调用初始化的init进程。Android...
2020-04-11 13:53:09
169
原创 下一代智能漫谈系列二 机器智慧基础 : 人类能够自我量化
上一篇我谈到了我希望人工智能领域能产生新的方向-机器智慧,下面这篇主要讲到机器智慧需要的基础条件。有一段时间我一直在思考数学存在的意义,可能这对于大部分聪明人来说,这是 个愚蠢的问题。我一直疑惑几乎所有的工程领域都需要建立在数学之上,比如说计算机领域、统计领域、金融领域,甚至是现在哲学领域。...
2019-11-19 16:44:04
244
原创 不要”人工"的”智能“--机器智慧
前言人工智能现在如火如荼,但在我看来,还只是处于一个非常初始的阶段,仅仅能够完成对数据的处理和预测,说白了,还只是一个不会思考的“木头人:,你教他什么,他就会蹦跶什么,不会思考。我觉得真正的智能,不应该是”人工“,它需要具有最大的特点是 自我进化和修复,这种智慧大脑才能引领真正的独立机器人革命。下面我个人的一些思考,如有不妥,还望探讨。机器智慧在未来,围绕机器人产生大量新的职业,但与此同时,...
2019-09-03 16:10:11
365
原创 Android微信支付的预支付获取优化版
第一句,微信支付sdk非常的狗血,那么大的公司,sdk竟然没什么人维护,支付宝甩他几十条街。神奇的sdk接入操作,必须要自己写一个特定wxapi命名包在代码根目录,对不起,我是强迫症患者,看了就接受不了。下面主要吐槽的是,每次优惠代码或者重构项目的的时候,官网的例子工程,还是eclipse 工程,13年的货。这也就算了,支付流程第一步,统一下单的网络请求例子给的是httpclient 请求。谷歌...
2019-07-05 13:43:10
389
原创 qq分享回调不成功解决
首先第一句,腾讯公司的技术是狗屎中的狗屎,包括用到的微信sdk和qqsdk,封装sdk的人技术看透了。、qq分享,官方给的代码,大部分还要加activtiy回调,这样写: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.o...
2019-06-17 14:36:50
2070
原创 深度学习之路(四)matplotlib使用
matplotlib 介绍matplotlob,是python里辅助制作图表的代码库,属于做机器学习的基础几个库之一。Matplotlib是一个Python 2D绘图库,可以生成各种硬拷贝格式和跨平台的交互式环境的出版物质量数据。Matplotlib可用于Python脚本,Python和IPython shell,Jupyter笔记本,Web应用程序服务器和四个图形用户界面工具包。Matpl...
2019-05-27 11:10:44
1457
原创 深度学习之路3:python环境和Jupter notebook使用:Pandas的使用小结
什么是PandasPandas是一个在Python中提供更好的数据结构和很多数据分析工具类的集合库,其有点包括:一个快速、高效的DataFrame对象,用于数据操作和综合索引;用于在内存数据结构和不同格式之间读写数据的工具:CSV和文本文件、MicrosoftExcel、SQL数据库和快速HDF 5格式;-智能数据对齐和丢失数据的综合处理:在计算中获得基于标签的自动对齐,并轻松地将凌乱...
2019-05-24 17:58:37
1195
原创 深度学习之路2:python环境和Jupter notebook使用numpy的使用小结
Numpy简介Numpy 顾名思义,我们可以拆解成number python来解读,就是python里用来处理数字的一个库,下面我们可以引述,numpy官方网站的一段话来介绍 :NumPy is the fundamental package for scientific computing in Python. It is a Python library that provides a m...
2019-05-23 18:13:05
1918
原创 深度学习之路1:python环境和Jupter notebook使用
我开始学习人工智能,希望写下自己的想学习笔记,帮助跟我一样的朋友。python 环境的搭建当前python的开发版本已经是pyhon3.7了。我直接安装的Anaconda库,里面自带的python3.7,可以点击链接下载。下载安装后,注意最好切换了路径到其他盘,因为这个开源包比较大。我说直接安装pycharm的miniconda版本的,所以全部打包下载下来了。但是请注意,通过pycharm...
2019-05-21 16:26:18
1680
原创 hexo 个人博客SEO优化(一)
书不记,熟读可记;义不精,细思可精;惟有志不立,直是无著力处。——朱熹前言我最近在搭建hexo 个人博客,优点是独立属于自己的,但是缺点也很明显,在主流的搜索引擎几乎无法搜索关于自己的帖子,所以需要自己SEO优化,下面是我的相关操作,希望能够给大家带来帮助。本地文章优化添加sitemapsitemap 顾名思义,Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取...
2019-04-28 17:05:07
4832
原创 Retrofit:kotlin中如何解析java的boolean类型
现在kotlin 已经慢慢替代java了,我在用kotlin编写项目中遇到一个问题,即在使用Rxjava+Retrofit2库网络请求的时候出现一个问题。因为后台的数据类型肯定是java类型,所以boolean是java类型,但是因为我们前端是在kotlin中使用retrofit,所以我们会使用如下写法。接口写法 @FormUrlEncoded @POST("phone/sysa...
2019-04-03 15:41:38
1265
2
原创 阿里云服务器搭建--MySQL安装
个人最近在阿里云买了一个服务器,现在白自己成功摸索的东西记录如下:安装 mysql个人的服务器环境是centos 7.3 安装步骤如下(在线安装):更新仓库: rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm输入后结果如下:Retrieving http://dev.mysql.c...
2018-12-06 00:15:48
265
原创 gradle自动化构建2 :安装和使用gradle
上篇我们了解了自动化构建,说白了,就是通过一段命令行来将手动编译,构建转化未代码自动构建,只用等待结果就行了。下面我们来进行安装和初步使用gradle 。 Gradle 安装我们可以从官方网站下载gradle最新版本,下载网址为 https://gradle.org/install/,我推荐下载包含工具和帮助文档的版本。下载下来以后根据不同的电脑系统需要配置环境变量,下面我简...
2018-08-31 11:12:49
776
原创 《实战gradle》 自动化构建一 了解自动化构建
最近在看Benjamin Muschko 的《实战 Gradle》,虽然这本书并不是基于现在的android|Studio的角度来写的。但是描述的自动化构建原理非常的透彻,所以我在阅读的同时把它记录下来,希望能帮到需要这部分内容的朋友们. 项目自动化自动化的好处 在项目没有自动化的时候,虽然IDE给我们做了很多的事情,但是代码的集成完全是一个灾难,而且测试过程慢的...
2018-08-30 11:04:21
370
原创 机器学习2-支持向量机(Support Vector Machine)
在机器学习中,支持向量机(SVM,还支持矢量网络)是与相关的学习算法有关的监督学习模型,可以分析数据,识别模式,用于分类和回归分析。 介绍 在机器学习中,支持向量机(SVM,还支持矢量网络)是与相关的学习算法有关的监督学习模型,可以分析数据,识别模式,用于分类和回归分析。给定一组训练样本,每个标记为属于两类,一个SVM训练算法建立了一个模型,分配新的实例为一类或其他类,使其成为非概...
2018-06-20 14:49:59
873
原创 机器学习算法1-朴素贝叶斯(Naive Bayes
本人是一名Android Developer, 对人工智能比较感兴趣,所以决定自学进入这一领域,一边学一边通过写日志的方式巩固自己的知识,也许写的不是很好,但是希望能够给志同道合的人们一些帮助。 朴素贝叶斯 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法 。最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Nai...
2018-06-12 12:30:44
479
原创 android 时间范围选择器PickTimeDialog
个人提供了自己封装的第三方时间选择器,能够自定义时间格式,以及设置时间范围。基础使用 PickTimeDialog pickDilog= new PickTimeDialog(this).setMaxTime(Calendar.getInstance()).setOnPickTimeDialogListener(this).create().cantlable().setOnKeyListe
2017-05-25 09:48:36
11730
原创 log4j使用教程
log4j 全称为log for java ,专门用于java语言记录日志的工具,类似于java的loger技术,前后有两个版本,log4j和log4j2. 日志信息的不同可以分为调试日志,运行日志以及异常日志等.log4j的下载地址http://logging.apache.org/。日志级别为了方便对日志信息的输出显示,对于日志内容进行了分级管理级别从高到低是6个级别,atal(致命的),e
2017-02-10 16:05:58
553
原创 koltin学习教程 androidstudio 使用koltin 语言编程
新的语言类型不断的更新换代,老的语言设计也不再适合快速的开发,ios在去年的开发者大会推出了swift语言,而android 也有了它的swift替代版—Koltin Language。Kotlin是由JetBrains开发,基于JVM的一门新的编程语言。开发过Android的童鞋应该都知道Android Studio,它就是基于Intellij IDEA开发的,而Intellij IDEA正是由J
2016-12-08 13:09:33
3107
原创 多少人忽略的细节--web.xml解析
webxml解析命名空间webxml 关键元素web.xml解析web应的初始信息的配置,大部分的mvc框架的都组要配置:过滤器、会话时间、欢迎页、错误页、控制器等。文件中也包含一系列的元素,每一个标签元素代表不同的功能;命名空间web xml 的命名空间遵循的是sun公司定义的Schema <?xml version="1.0" encoding="UTF-8" ?> <web-
2016-11-07 13:42:51
1356
原创 android 工程找不到org.apach以及处理
android 6.0地提出使项目在gradle20以后再也找不到org. apach,官方是这样描述的: Android 6.0 release removes support for the Apache HTTP client. If your app is using this client and targets Android 2.3 (API level 9) or higher,
2016-06-22 16:17:43
542
原创 android 6.0 动态权限处理
最近在做项目的时候使用到了高德地图,出现了在android 6.0之后的版本里定位无效,看到了好久才发现原来是并未申请到权限。查看了一下谷歌官网的android 6.0的一些改动。第二条就是动态权限。This release introduces a new permissions model, where users can now directly manage app permissions
2016-06-22 15:15:06
447
原创 ListView 加载数据 Holder 数据项重复 , 乱序
最近写项目犯了了一个很微小的错误。却导致了一个很大的问题,自定义的listview加载数据一直都在乱序和重复,代码如下: public View getView(int position, View convertView, ViewGroup parent) { if ((convertView == null)) { convertView= Layo
2016-03-24 10:03:51
549
原创 解决android 单击事件和移动事件的冲突
最近点项目中,做到一个悬浮框,类似360的,但是碰到一个问题。单击和移动出现了冲突,两个点击事件出现了重合,即,移动的时候也会响应单击的事件,研究了一会后,可以通过取得按下的时间和手指地抬起时间计算张贴代码,希望帮到更多的人 view.setOnTouchListener(new OnTouchListener() { long downTime;
2016-03-21 11:10:21
2772
2
原创 Effective java 学习笔记(一)
最近忙里偷闲,看了一下《Effective Java》下面是一些干货。1 考虑静态工厂方法代替构造器 2 有多个构造器参数时。应该选用构建器- 3 用私有构造器或者枚举类型来强化Singleon属性 4 避免创造不必要的对象 例如同 String s=“wang” 代替String s=new String(“wang”) 5 消除过期的对象引用
2016-03-21 11:04:49
333
转载 高德地图使用(一)--定位
现在的app中经常会用到对地图的调用,包括定位以及导航等,这里我们公司所做的项目里,我同ios部讨论了一段时间,还是选择高德地图吧,高德相对百度而言地图内容更加丰富,接口更加有好一点,精确度更高一定。高德地图的api配置也不多说了,官方文档很详细,具体到eclipse和AS都有,现在需要的去讲的是如何在自己的代码中去实现API所给的哪些功能,先前在网上也找了很多资料,但基本上都是那么不尽人意,最后还
2015-12-03 15:51:49
10273
转载 每一个有理想的程序员都应该读的一本书 -《rework》
37signals是一家很特别的公司,他们有很独特的理念。虽然他们的团队只有16人,但他们的几个产品每年都会带来相当可观的利润。他们反对风险投资,反对扩大规模,反对堆砌功能。如果让我用一个词形容他们的话,那就是maverick(特立独行的人),在某种程度上他们与乔布斯有相似之处。除了他们的产品外,他们还有一些副产品: 一个很著名的博客:Signal vs Noise,全世界都为之疯狂的web框架Ru
2015-11-05 15:16:23
353
原创 Linux 进阶 文件和文件系统的压缩和打包
文件压缩原理 常见的几种;1)、对于电脑的存储,1bites=8b,所以有八个空间去填写0或者1来完成对1bytes的记录,而当记录为1的时候,只需要占有一个空格,其他的都是空的,所以工程师可以通过一定技术就将其他的空的空间全部排除来,实现压缩 2) 讲重复的数据进行统计计算,例如。有100个一,只需要记录有100个1这样的记录,而不需要真的占用100个1这样的空间 Linux的常用
2015-10-28 13:15:45
492
android 动态库文件so导入问题
2015-10-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人