自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

深度理解是快乐的源泉

点滴记录,终生成长

  • 博客(216)
  • 资源 (1)
  • 收藏
  • 关注

原创 C#调用C++ 的代码时, C#如何获取到C++的回调

在C#中调用C++代码并获取C++回调的方式通常涉及使用委托(delegate)或者接口(interface)来实现跨语言的回调机制。请注意,确保你的C++代码编译成一个动态链接库(DLL),以便C#能够正确地调用它。首先,在C++代码中,你需要将回调函数暴露为C样式的函数指针。函数在C++中执行某些操作,并在完成后调用已注册的回调函数。函数用于将C#中的回调函数注册到C++代码中。

2024-01-07 16:09:05 430

原创 干货:ANR日志分析全面解析 (转)

这是一篇写得不错的文章,记录一下。

2023-04-25 18:21:36 150

原创 Android 代码变成修改文件

Android 程序修改文件读写权限

2022-09-09 14:31:28 919

转载 关于 Android GC 的记录

版权声明:本文由陈昱全原创文章,转载请注明出处:文章原文链接:专栏 - 云+社区 - 腾讯云想写一篇关于Android GC的想法来源于追查一个魅族手机图片滑动卡顿问题,由于不断的GC导致的丢帧卡顿的问题让我们想了很多方案去解决,所以就打算详细的看看内存分配和GC的原理,为什么会不断的GC, GC ALLOC和GC COCURRENT有什么区别,能不能想办法扩大堆内存减少GC的频次等等。1. JVM内存回收机制1.1. 回收算法标记回收算法(Mark and Sweep GC) .

2022-01-14 14:00:00 424

转载 Android Studio Profiler 工具分析应用的内存和 CPU 使用

Android Studio Profile 内存 CPU 性能 优化

2021-12-07 20:12:07 3405

转载 Android Service基本用法、AIDL、Binder连接池详解

原文连接文章不好贴,所以没有全文拷贝过来,简单总结最看重:文章清晰的描述了Service跨进程和非跨进程处理的差异。 同一进程内的Service通信可以写的非常简单,快进程一般用AIDL来辅助实现。另外,有空可以看看使用Messenger实现跨进程通信。原文如下:原文连接本文介绍Service与Activity之间的通信,文章包含以下内容:一、Service基本用法 二、通过AIDL实现Service与Activity跨进程通信 三、Binder连接池 四、使用Me..

2021-01-22 17:47:07 442

转载 安卓Dialog的使用+如何自定义Dialog

什么叫dialog简单来说就是一句话:弹出一个窗口,提示用户自己去选择,去提示,去分类的一些内容。安卓自带的Diaalog有三种:- AlertDialog—-普通的提示对话框- ProgressDialog–进度条对话- DatePickerDialog/TimePickerDialog–日期对话框/时间对话框所有的对话框,都是直接或间接继承自Dialog类,而AlterDialog直接继承自Dialog,其他的几个类均继承自AlterDialog。系统自带的dialog基本上用A

2020-09-16 16:44:42 4594

原创 Linux 文件操作:同一进程、线程打开同一个文件

在看Android 源码的时候能看到Binder驱动打开的文件路径统一都是:"/dev/binder"然后看到每一个 ProcessStated初始化的时候会调用:mDriverFD(open_driver(driver)), 有点疑惑同一个Linux文件被不同的进程、相同进程同时打开(均以读写方式)会有什么效果。写了点测试代码:#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>.

2020-07-14 14:55:35 2363

原创 Java集合 List、Set、Map UML类图关系

对Java中的集合类数据结构种类繁多,且他们之间的关系错综复杂, 于是对着JDK的源码,用UML图描述一下Java中各种List、Set和Map之间的关系。对于类图的表示,下面这这个图展示了UML中、接口、继承、组合、聚合、依赖、关联之间的关系。下面是List、Set和Map的UML类图关系可以简单的总结一下:ArrayList, LinkedList和Vector都是List的子类, 他们都是有序的,这个有序指的是按照写入和读出顺序一致,这个需要和排序区分开来。ArrayList和

2020-05-25 14:48:32 2178

转载 Java的引用和C/C++指针的关系

先给出简答的结论:Java的引用实际上是指针,本质上和C/C++的指针是一样的东西,只是在使用方法上有不一样的限制,所以起了一个不一样的名字,防止和指针混淆。当明白了这个个时候,再回头看Object类equal函数清晰明了,看 System.arraycopy 就很清楚了,其实就是把他们当指针使用。作为一名程序员,我们应该对新知识和新技术刨根问底,而不应泛泛而谈。我未曾接触到Java的时候,我想听得最多的东西还是关于Java中不存在指针的问题。此时,我会不断地想:如果Java不存..

2020-05-22 14:51:50 861

原创 Java学习由点及面--由Java对象占用多少空间联想到的

无意中看到一个Java问题,一个对象占用多少空间,于是好奇的网上搜索了一下。结果发现在这一个简单的问题后面,竟然引申出好多新的问题, 仅凭脑力一下子根本记不住这么多相关联的知识点,于是把它们相关联的点由脑图一个个串起来。这个图至少有2个作用1、学习方法:通过一个知识点,把相关的点带出来,于是整理出自己对这个知识点所在知识架构体系的认知和理解,帮组自己总结梳理,在以后的需要的时候,一张图基本就可以帮助自己进行Review了。2、面试:以前还要找面试题目来考查来公司面试人的水平,其实如果自己知识成体

2020-05-11 13:43:29 174

原创 OAuth2.0 协议摘要理解,附亚马逊 AVS 服务认证流程图

这个文章主要用来给自己对OAuth2.0提个醒,之前在工作中一直用到的是Authorization Code模式,对整体的流程有一定的理解,但是看网上的文章发现有的看不明白,原来是对这个协议的细节不是很了解,所以记录下协议中定义的几个角色以及这些角色在实际开发中对应的实体,能很好的帮助理解业务流程。作用OAuth 2.0授权框架允许第三方应用程序通过如下任意一种方式获取有限制的访问:第...

2020-04-26 19:03:23 1145

原创 Java 中的强、软、弱、虚引用生命周期对比

这个是一个概念的摘要,在帮助初学者能快速理解四者之间的差异方面还是比较有帮助引用类型 示例代码 生命周期 应用场景 强引用 Object o = new Object(); 只要还有强引用指向一个对象,垃圾收集器就不会回收这个对象。 在不用对象时将引用置为null,帮助GC回收对象 最常应用场景 软引用 Browser prev = ne...

2020-04-25 19:27:43 271

转载 理解Cookie和Session机制,看懂这一篇就能理解原理了

之前对Cookie、Session都是一知半解,直到看了这篇文章,对他们的原理才有了清晰的认识,或者说原来他们的实现这么简单。总结一下就是:由于HTTP连接的无状态特性,为了解决这个问题,发明了Cookie这个能保存状态的东西,Cookie在浏览器和服务器之间反复传递来维护连接状态,为了保证的Cookie在浏览器端的安全,对浏览器是有强制要求的。Session也是为了解决HTTP连接无状...

2020-04-23 19:50:58 4983 1

原创 HTTPS-TLS 认证的简略过程

先上图这几天对HTTPS稍微深入了解一下,简单总结一下,上面的流程不是协议实现流程,只是概要的理解流程,方便对HTTPS的理解,具体问题的定位的时候可以大概明白在哪里出了问题,详细还要看协议。HTTPS是综合了对称加密和非对称加密的通信协议。为什么搞这么复杂呢,是因为非对称加密具有良好的保密性,但是速度也超级慢,而对称加密,安全性低,但速度超级快,两者之间的速度差距近百倍。所以,...

2020-03-30 19:00:52 976

原创 对称加密和非对称加密的基本定义和差别

对称加密对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥,作为私钥。具体算法有:DES,3DES,TDEA,Blowfish,RC5,IDEA。常见的有:DES,AES,3DES等等。优点:算法公开、计算量小、加密速度快、加密效率高。缺点:秘钥的管理和分发非常困难,不够安全。在数据传送前,发送方和接收方必须商定好秘钥,然后双方都必须要保存好秘...

2020-03-25 18:31:09 2170 1

原创 Android GPS定位问题

在分析之前,我们肯定得先看看android官方提供的定位SDK。默认Android GPS定位实例有几个步骤:第一步:获取LocationManager:mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);第二步:选择Location Provider:Android系统...

2018-08-04 11:41:20 2789 1

转载 下载、编译、运行android 7.1系统详解(ubuntu 16.0.4)

Android 7的系统版本新增的很多的新功能,比如说任务处理功能,允许用户双击“最近”按钮去快速切换到自己上一次使用的应用程序中。同时,“最近”菜单中还有一个“清除全部”按钮。再比如说新增了省流量功能,在接近用户计费周期末,或是流量包本身较小的情况下,减少应用消耗的数据流量。在启用这一模式时,系统将拦截后台的数据使用,并在可能的情况下减少前台运行应用使用的数据量,例如限制你看视频,下调画质,以及

2018-01-12 16:45:05 633

转载 Android进阶——构建UI布局的多种方式总结

引言作为Android App,给人第一印象的就是用户界面(UI),简洁友好的UI,自然会给用户优秀的体验,自然很容易就得到用户的认可和赞许,这样App才变得真正的有价值。所以作为开发App的第一步,UI尤为重要,构建UI有很多种方式:xml静态布局、java动态代码、HTML构建(借助WebView)和第三方开源框架等。一、构成UI的基本元素——View和ViewGroup概

2018-01-09 17:16:43 698

转载 Android app native代码性能分析

转自:http://my.oschina.net/wolfcs/blog/474566?fromerr=JIQYsieJ目录[-]1. 下载android-ndk-profiler2. 修改项目jni目录下的Android.mk文件,加载android-ndk-profiler3. 设置NDK_MODULE_PATH环境变量4. ucontext_t类型

2017-10-18 09:59:51 915

转载 Android:MediaSession框架介绍

音乐播放器项目会贯穿安卓的四大组件。在项目中,大家一定会在服务中使用MediaPlayer去播放音乐,但是界面如何控制服务进行音乐的更换、改变播放进度,大家往往会使用发送广播的方式去通知服务,同时,服务可以发送广播通知界面播放进度的变化。      这时候问题来了:     1.你喜欢在广播接受者中完成解析数据变为指令的代码吗?      2.你觉得用广播高效吗?

2017-09-30 17:54:49 3721

转载 C++ 虚函数

首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。--- 意味着虚函数是需要被实现的。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 --- 为了实现 C++的多态定义一个函数为纯虚函数,才代表函数没有被实现。--virtual void funtion1()=0定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数

2017-09-29 10:20:49 627

转载 Android新特性介绍,ConstraintLayout完全解析

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53122387本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。今天给大家带来2017年的第一篇文章,这里先祝大家新年好。本篇文章的主题是ConstraintLayout。其实ConstraintLay

2017-09-13 10:22:39 226

转载 从零开始学习Gradle之三---多项目构建

随着信息化的快速发展,IT项目变得越来越复杂,通常都是由多个子系统共同协作完成。对于这种多系统、多项目的情况,很多构建工具都已经提供了不错的支持,像maven、ant。Gradle除了借鉴了ant或者maven的继承的方式定义子项目,也提供了一种更为方便的集中配置的方式,大大减少了构建带来的复杂度。除此之外,Gradle还提供了清晰的Project树模型来映射多项目的组织结构。下面,让我们了解一下

2017-09-09 16:39:42 399

转载 用Gradle 构建你的android程序

http://www.cnblogs.com/youxilua/archive/2013/05/20/3087935.html前言android gradle 的插件终于把混淆代码的task集成进去了,加上最近,android studio 用的是gradle 来构建项目, 下定决心把android gralde 构建项目的用户指南全部看完, 让不会用gradle 的人也用

2017-09-09 16:26:07 218

转载 Android APP架构心得

http://www.jianshu.com/p/2d5c1d855c31前言从JavaEE转到Android开发也2年多了,开发的项目也有4,5个了(公司项目),其中有3个项目前期都是自己独立开发,从一开始的毫无架构到现在对如何架构也有一点心得,所以在此分享出来,大家一起交流什么是架构在我看来,软件架构绝对不只是框架的堆砌,看我看来,架构是为了方便软件维护、扩展、安全性、切入

2017-09-05 14:09:12 418

转载 轻松理解 Android Binder,只需要读这一篇

http://www.jianshu.com/p/bdef9e3178c9在 Android 系统中,Binder 起着非常重要的作用,它是整个系统 IPC 的基石。网上已经有很多文章讲述 Binder 的原理,有的讲的比较浅显,没有触及到关键,有的讲的太过于深入底层,难以理解,本文会比较全面,以一个比较轻松的方式,从面到点,大处着眼,小处着手的形式去讲述 Binder 在

2017-08-31 20:42:07 328

原创 Linux 获取时间的方法

时间的头文件 #include关于时间的类型:time_t   long型,表示从1970年1月1日到现在经过的秒数。structtm {          int tm_sec;      /* 秒 – 取值区间为[0,59] */          int tm_min;      /* 分 - 取值区间为[0,59] */          int tm_

2017-08-31 20:02:34 2512

转载 Android Service完全解析,关于服务你所需知道的一切(下)

Android 远程 Service 的实现

2017-08-29 18:06:00 240

转载 Android Service完全解析,关于服务你所需知道的一切(上)

不少Android初学者都可能会有这样的疑惑,Service和Thread到底有什么关系呢?什么时候应该用Service,什么时候又应该用Thread?答案可能会有点让你吃惊,因为Service和Thread之间没有任何关系!之所以有不少人会把它们联系起来,主要就是因为Service的后台概念。Thread我们大家都知道,是用于开启一个子线程,在这里去执行一些耗时操作就不会阻塞

2017-08-29 17:11:39 339

转载 Android OTA升级原理和流程分析(三)---Android系统的三种启动模式

转载自:http://blog.chinaunix.net/uid-22028566-id-3533851.html        以下的篇幅开始分析我们在上两个篇幅中生成的update.zip包在具体更新中所经过的过程,并根据源码分析每一部分的工作原理。一、       系统更新update.zip包的两种方式    1.  通过上一个文档,我们知道了怎样制作

2017-08-29 11:33:58 758

转载 OTA和Recovery系统升级流程介绍

本文介绍了Android原生OTA和Recovery升级过程步骤.进入升级- 1.1 正常启动和进入Recovery的区别下面给出了升级流程的简单示意图。  上图中的上下两个部分,上面一部分是正常的启动模式,下面一部分为Recovery模式。正常的启动模式是从boot.img启动系统(Main System),而recovery模式则是从reovery.img启动系

2017-08-29 10:03:06 3641

转载 Android性能优化之Systrace工具介绍

http://blog.csdn.net/fanfanxiaozu/article/details/44495265上面这个是翻译的另外一篇http://www.ithtw.com/1009.html本文是Android性能优化工具系列的第一篇,这个系列主要介绍Android性能优化过程中会使用到的一些工具,以及如何用这些工具来发现问题和解决问题

2017-08-17 17:38:09 2432

转载 Sensor框架Framework层解读

Sensor整体架构  整体架构说明黄色部分表示硬件,它要挂在I2C总线上红色部分表示驱动,驱动注册到Kernel的Input Subsystem上,然后通过Event Device把Sensor数据传到HAL层,准确说是HAL从Event读绿色部分表示动态库,它封装了整个Sensor的IPC机制,如SensorManager是客户端,SensorService是服务端,而

2017-08-17 11:42:19 742

转载 对象序列化

什么是序列化程序中存储和传递信息,需要有个合适的数据结构,最简单的是定义几个变量,变量多了之后再分门别类,便成了聚合若干变量的对象。代码在函数调用时可以直接传递对象,但更多的场合例如与文件交互、与网络交互、组件之间交互等等,就无法直接使用未经处理的对象。因此Java引入了序列化的概念,用于把一个对象转换为字节序列,然后再对这个字节序列做存储和传递操作。与之对应的是反序列化,反序列化是把一个字节

2017-08-16 14:31:06 266

转载 Android四大基本组件介绍与生命周期

Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。一:了解四大基本组件Activity :应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。在Int

2017-08-14 09:54:16 281

转载 Ubuntu中Samba的安装配置和使用

Samba服务在Ubuntu服务器版本中默认并没有安装。1. Samba软件包的安装使用源安装,在终端中输入如下命令:#sudo apt-get install samba#sudo apt-get install smbclient2. Samba服务器的启动、关闭和重启启动Samba服务器只需执行如下命令:#sudo /etc/i

2017-08-11 18:12:09 381

转载 Android系统默认Home(Launcher)的启动过程小结

http://blog.csdn.net/happy08god/article/details/24265167      Android系统开机,各个应用是如何加载并被显示到桌面上的呢?带着这份好奇,阅读了在Android应用程序安装过程源代码分析 一文中,我们看到应用程序的apk归档文件中的配置文件AndroidManifest.xml 会被解析,解析得到的applic

2017-08-11 15:47:02 3388

转载 SystemUI启动流程及主体布局介绍

http://www.jianshu.com/p/0ab1279465fa本文将基于Android 6.0代码,分析systemUI的启动加载流程,对systemUI几处关键的视图的布局及功能进行介绍。一. SystemUI主体框架启动流程android设备上电,引导程序引导进入boot(通常是uboot),加载initramfs、kernel镜像,启动kernel后,

2017-08-11 13:48:53 379

转载 java中synchronized关键字的用法

在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法。因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识。java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁。线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁。获得内置锁的唯一途径就是进入这个锁的保护

2017-07-14 10:30:40 299

aapt Android Asset Packaging Tool

aapt即Android Asset Packaging Tool,我们可以在SDK的platform-tools目录下找到该工具。aapt可以查看、 创建、 更新ZIP格式的文档附件(zip, jar, apk)。 也可将资源文件编译成二进制文件,尽管你可能没有直接使用过aapt工具,但是build scripts和IDE插件会使用这个工具打包apk文件构成一个Android 应用程序。

2016-05-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除