- 博客(29)
- 收藏
- 关注
原创 MAC:python操作excel的环境配置
本人python小白,有一个事情是要分析一下excel表格中的数据,excel中数据量巨大,直接用眼睛看不太现实,因此准备写个python脚本来操作,本来以为这个事情很简单,只要写好python代码然后运行即可。没想到踩了不少的坑。现记录如下:python源码如下:#readexcel.py#!/usr/bin/env python3# coding=UTF-8import xlr...
2019-02-12 18:12:15
5904
原创 MAC查看某一so文件的cpu匹配
为排查在用户手中的Android设备存在找不到so的问题,需看一下某一so支持什么CPU格式。熟悉C层库的同学都知道,C所编译所得的静态库(.a)和动态库(.so)均为CPU相关的,不同的CPU环境需运行不同的so。在Android中,可以选用默认的so,即编译为armeabi环境的so运行于包括arm v5、arm v7,Intel x86环境。替代将全部CPU的so均打入包中,可能会降低一些性...
2019-01-22 17:52:47
3199
原创 Https原理总结及抓包Https的工作原理
Https原理:a.Https == Http + SSL(TSL),SSL是网景公司的命名,TSL为OSI组织接手名的命名b.要解决的问题:传统HTTP协议可能有三大风险: b.1 被截获并获取内容(因为是明文传输) b.2 被修改内容(无校验) b.3 被伪装(无身份识别)因此Https引入了三个方案解决上述问题...
2018-12-07 11:19:58
3824
原创 Charles抓包三个小技巧:抓取Https、重定向某域名、限流
一、抓取Https--以Android平台为例,其他平台类似:总计三步:1.PC端charles安装CA证书打开charleshelp-->SSL Proxying-->Install Charles Root Certificate,下图为安好的证书:2.Android设备安装CA证书help-->SSL Proxying-->Install ...
2018-12-06 14:24:54
8745
原创 Android工程师从初级到资深所应具备的技术栈(不断补充中)
在Android开发上也做了有些年头了,对Android开关相关的技术有了一定的积累,不敢说有多深,总是一些经验与体会,一个开发人员,在完成工作的同时,应该不断完善自身,这样才能长期保持竞争力。在技术领域,有两个特点,一为更新极快,二为多年不变。都是对的,新技术更新很快,而一些原理,底层技术却是多年不变的。技术人员在积累技术时,要多关注底层原理,而不要把主要经力放在追逐新技术上。所谓万变不离其中,...
2018-11-15 11:40:03
1143
原创 okhttp源码导入及Maven构建文件pom.xml的格式
okhttp是一个非常强大的网络框架,封装了http及https的网络协议实现,向上层提供统一的网络访问接口,熟悉一个框架最直接的办法是用起来,而想用好,少不了要熟悉了解其源码,RTFSC(Read The Fuck Source Code),okhttp的github路径为:https://github.com/square/okhttp拉取代码以后,发现是maven项目,一直在做...
2018-08-30 11:40:33
13494
原创 Android:如何跟踪第一个Activity界面绘制完成前的时间开销状况及优化方案
在Android中,以最典型的应用启动为例,从Launcher点击应用图标到第一个Activity加载完成,系统开放给开发者的接口及类包括:Application生命周期相关的方法:onCreate、启动Activity的onCreate、onStart、onResume。对于启动Activity的三个方法的执行时间,没什么疑问,如果定义的复杂,有复杂运行,则运行时间长,定义的简单,则运行的时间短...
2018-08-22 16:52:13
2462
原创 Mac下在Android Studio中导入Retrofit源码
Retrofit的火热程度就不再多说了,作为当前最主流的Android平台的网络访问框架,应用极广。要在项目中集成并使用Retrofit,也是非常简单的,只需在build.gradle中引入框架的链接即可:implementation 'com.squareup.retrofit2:retrofit:2.4.0'本文中讨论的不是Retrofit的引入及使用,而是Retrofit源码项目如何...
2018-08-21 14:30:57
1259
原创 矢量图、位图、RGB、YUV、JPEG、PNG的理解
开发的项目中缺少不了图形图像的支持,对图的使用场景也是极多的,但对其内部原理却一直处理模糊状态,抽时间做个整理吧,理一下相关的概念。一、矢量图与位图矢量图与位图均为图像的表述方式,矢量图可以理解为在我们口中描述图形的方法,比如:图A:一个半径10cm的绿色实心圆,重点包括:圆、实心、绿色、半径为10cm、圆心位置,这些信息只需要很少的字节即可记录图A,因而,矢量图所占空间较小;还有一个特点...
2018-08-15 18:36:40
14197
1
原创 Android平台视频相关的多媒体技术理解笔记
做了几年的视频相关项目,一直没有系统的对所涉技术进行整理,趁着最近有点事情,整理归纳一下。多媒体技术还是一个相当大而全的领域,我是做视频的,只谈一下视频所涉的一些技术点的理解,平台是基于Android的。 视频所涉的多媒体技术也是非常庞大的,从哪入手呢,先来看一下图吧: 上图显示了一个视频从产生到展示到用户面前所涉的各个环节,封装格式直接使用了当前主流的mp4,编解...
2018-08-10 17:38:50
381
1
原创 Java中的类文件结构之三:分析一个.class文件各方法的字节码表述语法
接上文:Java中的类文件结构之二:分析一个.class文件的文本化阅读 https://blog.csdn.net/kcstrong/article/details/81233672 在上一篇Blog中找一个示例讲述了如何分析JVM所提供的文本形态说明的.class文件,其中各方法的字节码部分(表述该方法的实现)并没有说清楚,本章中希望说清楚各逻辑,但考虑到如果不讲一...
2018-07-31 18:20:58
434
原创 Java中的类文件结构之二:分析一个.class文件的文本化阅读
这个文章是一个系列,准备写至少四篇吧,离上一篇写得已经有几个月了,一个没有出第二篇,原因就一个字:懒。其实整理文档挺耗时的,之后一直在关注老罗的Blog,老罗说他一篇Blog要花一周时间,我深以为然,随便写写肯定省时间 ,但对不起写这个事情,话不多说,进入正题吧。 还是上一篇https://blog.csdn.net/kcstrong/article/details/794602...
2018-07-27 15:45:26
718
原创 C/C++、Java由源码到机器码的过程(编译原理)
软件开发的环境需要什么?一个IDE,一个OS,一个硬件设备,没错,这个实质是软件进展的三个层集。在很久很久以前(几十年),软件就是直接开发在硬件设备上的,用纸带有无孔标识二进制位,此时的开发语言是机器码,软件直接对接硬件设备;后来很不方便,尤其不方便复用,然后,有了汇编,有了简单的编译环境,然后逐渐发展成为OS内核;时代会进步,软件要处理越来越多复杂的场景,然后有了高级语言:C等,为了更加...
2018-07-26 18:08:41
7088
2
原创 一个理想的视频播放框架的诞生
谈一个项目中的架构吧,在我们的项目中,视频播放是一个非常重要的模块,其业务形态也是多种多样的,而且业务形态变动频次也非常的高,当前版本是A方式,下一个版本就可能变为B方式,如何才能适应该情况的,我们需要一个兼具弹性、可读、可维护、易扩展、稳定的框架。 先说一下该框架之前的开发模式: 在我们的项目中的,涉及播放的包括:列表流式播放、详情页播放、小窗播放、全屏播放(分两种:横屏全屏...
2018-07-13 16:07:36
2012
原创 最快速度开启视频播放的策略(秒开策略)
前一段时间项目开发遇到一个需求,以最快的速度开启视频播放。 如何做到这一点呢,需要对项目中播放相关的逻辑做整体规划,所有与播放相关的逻辑都要以最快速度开启播放为目标而努力。 措施一:在我们的项目中,播放可能发生在列表中,也可能发生在单个专门为播放所做的页面中,要分情况对待: 在列表中的视频,往往只有视频信息,而没有播放地址,因此,需要在本地对列表播放地址做提前加载,也就是...
2018-07-12 11:33:26
5642
原创 SHA-256算法改进策略
在我之前的文章中理了一下SHA-256算法的实现过程:https://blog.csdn.net/kcstrong/article/details/80853243 为什么要对其改进呢? 先来看一下如何加密防刷:使用SHA-256可以针对源文件生成加密key,为一个256位二进制格式,表述为64位16进制的字符串格式,可以用于对网络链接中的核心参数进行加密处理,做法是:选用几个...
2018-07-12 10:53:26
2944
2
原创 你真的了解Android系统框架的四层结构吗?
先来看几个问题是否能回答:1)Android系统开发语言有两种:Java、c/c++,它们各用于开发那些层次2)JNI实质是什么,位于什么位置,NDK又是什么3)Android虚拟机是用于干什么的,什么时候介于工作4)既然Android内核主要是c/c++实现的,那么是否可以用C++来写app5)aidl又是什么,位于那一层6)各层次的如何配合工作1.首先来看一幅图吧:对于这个图,基本每一个And...
2018-07-06 19:08:17
9777
1
原创 SHA-256算法实现过程
整理一下SHA-256的实现步骤:1.定义8个32位常量 h0 := 0x6a09e667h1 := 0xbb67ae85h2 := 0x3c6ef372h3 := 0xa54ff53ah4 := 0x510e527fh5 := 0x9b05688ch6 := 0x1f83d9abh7 := 0x5be0cd19 2.再定义一个k的32位整形数组,数组大小为6...
2018-06-29 10:59:29
5167
原创 你真的了解Android的Handler机制吗?
在Android系统中,Handler机制应用较广,尤其是在App层面,基本每个App都会用到。使用的场景主要是向主线程发送事件,更新UI。但大家真的了解Handler机制吗?看一下面的几个问题是否可以回答:a.Handler是如何实现多个线程之前事件传递的?b.Handler、Message、MessageQueue、Looper相互之间的数量比是多少,都是1:1吗?c.每个变量运行的线程是那个...
2018-06-04 17:55:22
476
原创 HashMap学习笔记
1.HashMap首先是一个Map,提供Map接口所定义的能力,主要包括:a.key-value形式的数据存储集合b.通过put写入、通过get获取、通过remove删除,具备完善的增删改查功能c.提供单独的key集合及value集合获取d.Map中含有一个内部类Entry,为Map集合的条目类型2.HashMap的父类是AbstractMap,上文中所提到的基本Map功能均在...
2018-05-31 16:33:39
266
原创 Binder的学习与理解笔记之三:aidl原理及应用实例
1.Binder机制用于进程间通信,在Android的应用层开发中,所涉及的进程间通信的应用场景较少,一旦有这一类需求呢?是否要应用自身来维护Binder通信的流程?是的,如果应用层的开发者也需要对Binder机制足够了解,那进程通信的开发成本就太大了,毕竟,Binder的原理及流程还是相当复杂的。google向我们提供了应用层开发进程间通信的工具,aidl便是最普遍,也是定制灵活度最高的。其他还...
2018-05-25 15:54:59
428
原创 MAC下使用Sublime text 3查看Android源代码
1.首先,下载Sublime text 3,官网下载即可,打不开的可以下载我下载过的2.配置Sublime text 3 sublime text 3可以调为中文显示了,设置的方式为: 配置方式为找到Package Control(不同版本的地方不一样),我是在首选项下方找到的,然后调开这个页面,安装CTags插件,安装过程中可以在左下方看到一个动的=装好以后配置,配置一下快捷键Pac...
2018-05-16 17:54:42
2531
原创 Binder的学习与理解笔记之二:c++层的调用
接上一章:Binder的学习与理解笔记之一:总体印象https://blog.csdn.net/kcstrong/article/details/80321207整理一下c++层Binder的实现,所涉及类包括:ProcessState、IPCProcessThread、BpBinder1.还记得上一章提到的ProcessState承接java层BinderInternal类获得Binder对象的...
2018-05-16 11:42:22
332
转载 C++内联函数(转)
转自:https://blog.csdn.net/u011327981/article/details/50601800总结得非常好1. 内联函数在C++中我们通常定义以下函数来求两个整数的最大值:复制代码 代码如下:int max(int a, int b){ return a > b ? a : b;}为这么一个小的操作定义一个函数的好处有:① 阅读和理解函数 max 的调用,要比读一...
2018-05-15 15:16:28
585
1
原创 Binder的学习与理解笔记之一:总体印象
1.Binder是一种进程间的通信方式,由Android引入,广泛应用于Android的进程间通信(如WMS、AMS等),相对于Socket的方式,因其少了一次内存copy,所以速度更快。2.接1中所提的内存copy减少一次,是如何做到的呢?有两个进程A、B,需要进行数据传递,进程B发起Binder驱动,申请共享内存块,Binder驱动记录该共享内存块地址,进程A的数据直接copy入Binder驱...
2018-05-15 12:50:19
246
原创 MAC下载Android源码
1.运行环境: MAC os 10.12.52.创建磁盘映像 鉴于我的MAC机器磁盘空间有限,决定在外置的硬盘上下载源码,创建磁盘映像: 打开磁盘工具,工具栏选择“文件”-->“新建映像”,设置项如下所示: 我的硬盘是之间在Windows环境下使用的,格式为NTFS格式,先格式化为MAC所识别的格式,选择要操作的磁盘分区-->“抹掉”,在打开的选项中 ...
2018-05-07 17:53:03
1362
原创 先行发生关系(happens-before)
分三个层次吧:第一层次:单个对象或单个方法层次a.程序次序规则:可以理解为某一线程中的run方法执行代码,控制流书写在前的一定先行于书写在后的,当然,是广义的书写,考虑循环及判断b.管程锁定规则:可以理解为被锁的(比如synchronized锁定的)程序块中,执行时间在前的先行于执行时间在后的c.volatile规则:对一个volatile的写执行先行于时间上位于后面的对这个变量的...
2018-04-13 17:28:55
292
原创 Android反编译之一:环境的配置
1.下载dex2jar 这个较为简单,下载最新版即可,我是从这个地址下的: https://sourceforge.net/projects/dex2jar/2.下载apktool 同样,下载最新版,我是从这个地址下的: https://bitbucket.org/iBotPeaches/apktool/downloads/ apktool需要配置一下环境(以Mac系...
2018-03-21 15:57:20
643
原创 Java中的类文件结构之一:如何分析一个.class文件的二进制码内容
该文为作者原创,请转载者注明出处 以下为一个Java类--Temp4Testpackage com.demo;public class Temp4Test extends Temp3Test { private int i = 1; public float f; public static String thisstr = ""; ...
2018-03-06 19:05:36
3286
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人