自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(212)
  • 资源 (3)
  • 收藏
  • 关注

原创 Java内存模型

在并发编程中,内存的可见性基本上决定了,你的代码是否存在线程竞争,是否存在静态条件。Java 内存分为两大类:       共享变量:实例域(全局变量),静态域(全局静态变量),数组元素;这些元素处于堆内存中,属于线程间共享部分,存在线程安全问题。      局部变量:方法内部的局部变量,方法参数,异常处理器参数。不在线程间共享,所以不存在线程静态条件,所以时线程安全的。     ...

2018-08-06 18:32:55 192

原创 webrtc 博客推荐

http://www.cnblogs.com/lingyunhu/p/rtc23.html

2018-06-28 19:45:57 220

转载 Android ffmpeg编译

首先,被这部分烦的不行的可以去github里clone一些别人的成品轻松拿到适合Android的编译结果    说下自己的环境    win10 x64    VMware® Workstation 12 Pro    ubuntu 14.04 LTS    android-ndk-r10b    ffmpeg3.0.2Step1android-ndk-

2017-06-28 11:28:55 342

原创 Java 线程锁总结

Java 线程同步: 1、volatile关键字: 被修饰的变量变成原子操作,遵循happend-before原则。 2、synchronize关键字: 修饰实例方法:主要是对类的对象进行锁控制。 修饰静态方法:主要是对Class对象进行锁控制 同步代码块: synchronize(object){

2017-06-08 17:27:03 459

原创 Android 中Activity、Window、ViewRoot、DecorView之间的联系

Activity、Window、ViewRoot、DecorView

2017-05-04 11:53:07 978

原创 android Surface概述

Surface的主要作用是存储View树的绘制数据,主要由屏幕组合器管理(screen compositor),每个Window都有一个Surface。 android中Surface分为两种:   一、Java层surface   二、Native层Surface Java层产生Surface的主要有两个地方:ViewRoot和SurfaceView Native层主

2016-10-26 17:41:49 1580

原创 Java 加载class和创建对象的三种形式

Java加载class主要分为以下三种类型:一、Class cls=Class.forName(“包名.类名”)Object obj=cls.newInstance();创建对象二、ClassLoader clsLoader=new MyClassLoader()Class cls=clsLoader.load("包名.类名")Object obj=cls.newInsta

2016-10-25 16:52:59 6523

原创 WindowManagerService、PhoneWindowManager、WindowManagerImpl关系

WindowManagerService:高层级窗口管理服务,主要委托PhoneWindowManager来处理Phone UI。WindowManagerImpl:低层次,负责与系统窗口管理服务进行操作通信,与Context进行关联。WindowManagerGlobal:低层次,负责与系统窗口管理服务进行操作通信,不与Context进行关联。ViewRootImpl创建时-

2016-09-18 17:03:04 2009

原创 android 界面是如何显示到屏幕上的

android 系统提供了一系列的绘图渲染api,这些api支持2D绘图和3D绘图;那么理解这些api是如何工作的,还是十分重要的。应用开发者最常用的就是Canvas和OpenGL,Canvas侧重于2D,而OpenGL则是全能。Canvas的绘图操作最终会通过OpenGLRender进行转换,转换为OpenGL支持的动作,并由GPU渲染;也就是说Canvas也是通过OpenGL库工作的。

2016-09-13 17:25:29 1580

原创 android Looper、Handler和MessageQueue关系

android 消息框架可以用来线程间消息的传递,android中最广泛的应用场景就是子线程向UI线程发送更新UI的消息。 Looper:用来进行消息循环,不停的从MessageQueue中取消息。 Handler:向MessageQueue发送消息,并处理Looper传递来的消息。 Message:消息载体。 MessageQueue:消息队列的持

2016-09-01 16:35:34 634

原创 android 仪表盘控件

android 仪表盘控件,支持多分辨率,手绘UI,无需添加图片资源,支持刻度设置。源码下载

2016-08-19 14:00:12 2705

原创 android进阶需要看的书

android中的比较重要的东西(学习是循序渐进的,一口吃不了胖子)View树的绘制,触摸事件的分发。framework层中的java服务框架(ActivityManagerService,WindowMangerService,PackageManger等)。Binder 的java层框架,Binder的native框架。书单(比较好的学习方式是学习android源码,但

2016-08-09 15:31:57 6480 4

原创 android (八)Binder浅谈

在这里写下对binder的理解,说到Binder间进程通信,Linux那么多进程间通信工具为何引入了Binder。大概原因有两点:1、为了提高通信的效率。2、为了方便开发者,让进程间通信和RPC(远程通信)一样简单方便。 Binder无处不在,日常开发中无形中一直在用Binder进行通信,例如Activity的创建,窗口的显示等等。 具体的应用比如说:ActivityThread中的ApplicationThread就是继承了IBinder,这里的IBinder是java层

2016-07-20 17:50:18 1665

原创 android(五)、 ViewRoot触摸事件流程

android 触摸事件最后到底传给了谁这个问题的答案不能空口说,我们要从源码里去找下答案。那首先就要说下Activity中setContentView()是如何显示到界面上的。Activity的attach()大致干了三件事:1、创建Window对象(PhoneWindow)2、为window对象设置回调方法3、为window对象设置WindowManger管理者,W

2016-07-15 15:30:57 1093

原创 android(二)、 应用启动过程

自android 的framework框架启动后,运行一个应用的环境已经准备好了。比较重要的部分如下:ActivityManagerService-主要负责管理Activity,Service,BroadcastReceiver。WindowMangerService-负责窗口管理,窗口的创建,添加显示,删除。ActivityThread-应用程序主线程代理,负责与外部进行通信;内

2016-07-12 15:07:22 564

原创 android 应用性能优化

android性能优化,写代码码时要遵循两个准则:不做没有用的工作。不创建没有用的内存。最好不要创建不必须的对象:比如你要对一个字符串进行拼接或者截取的话,就不要用String了,最好使用StringBuffer。多用静态方法如果你并不需要访问一个对象的属性,那么就把方法做出static,这样会提高15-20%的访问速度。对于常量值多用stati

2016-06-30 16:51:56 467

原创 android(七)、 ContextImpl创建

android Context意为上下文,是应用程序所在环境的一个信息描述,一个全局工具,可以创建服务,访问资源文件等。Context本身是一个抽象类,他的实现类有很多个包括ContextImpl和ContextThemeWrapper。通常大家会用Context来启动Service,发送广播,启动Activity和进行资源访问,这些功能都是通过ContextImpl实现的。本以为Ac

2016-06-28 15:30:48 772

原创 android (六)、Service工作原理

android操作系统支持后台操作,android应用程序和系统中大多都可以看到服务的影子。android的服务分为两大部分:android应用服务和android系统服务。android应用服务分为本地服务和远程服务,android系统服务分为java服务和本地服务,java服务又分为核心平台服务和硬件服务。

2016-06-23 20:26:13 1970

原创 android炫酷导航源码

此项目为一个图层导航工程,图层构成有精灵对象,碰撞监测点,及位置示意图。操作方式采用游戏式风格,支持碰撞监测点的定义添加,图层图层可拖动。工程地址:https://github.com/jiabailong/android-spriteLayer希望大家多提提意见。          ...

2016-06-01 11:49:40 1634

原创 android(四)、Activity启动过程图

基于

2016-04-22 14:13:51 579

原创 android (三)、Activity工作原理

由Launcher启动一个新的应用程序时,launcher会调用startActivity来启动Activity。假设进程应经fork,ActivityThread已经创建过,Launcher通过Binder向ActivityManagerService发送了创建Activity信息。ActivityThread接收到信息后调用 handleLaunchActivity(ActivityClien

2016-03-24 16:39:33 2972

原创 android (一)、SystemServer与系统服务启动

首先启动从linux启动Zygote ,然后由ZygoteInit启动SystemServer;SystemServer中的ServerThread启动android的所有服务,并且启动了SystemUi。然后由Launcher启动应用,当启动Activity时会由ActivityMangerService辗转到Zygote,然后启动一个新的进程Process(ActivityThread启动

2015-01-09 17:20:49 1680

原创 android(八)、触摸事件分发

 本文章基于android 4.2.1,从view拿到事件信息开始,首先对事件做一些检测及预处理;如果事件有问题的话则抛弃信息,否则的话开始对事件进行分析。首先判断mListenerInfo是否为空,是否设置了onTouch事件;如果设置了事件则执行onTouch事件,当onTouch方法消耗了事件则消息传递结束;否则将事件交给OnTouchEvent方法处理,onTouchEvent中主...

2013-11-06 16:20:13 1220

原创 2021-07-19

GL_BLEND模式用来混合 目标色和源色之间的alpha值https://learnopengl-cn.readthedocs.io/zh/latest/04%20Advanced%20OpenGL/03%20Blending/SRC源色即是要被添加的新数据DST 数据 是要被当作画板的数据

2021-07-19 14:32:04 165

原创 javah生成头文件

javah -classpath . -jni com.xueersi.matrix.native_cap.Native_Capture

2021-01-06 16:24:03 214

原创 生成java方法签名

2021-01-06 11:43:57 420

原创 Android,腾讯微视非线形编辑-了解

一时兴起,想看看手机端的非线形编辑系统-的设计思路一、分析录制完的视频和时间轴的关系1、下载android腾讯微视,录制了一个视频大概10s多一点钟,录制完后就进入了编辑界面,未加入任何效果,保存文件。2、使用ffprobe 分析下视频信息 gop大小是25,视频的fps 大小是25,算下来也就是1s一个I帧,10s的话,我看了微视时间轴大概显示了10帧多一点,也就是1个gop 是一个编辑单元,选择特效时可以插入到gop内部。未完待续...

2020-10-28 19:24:18 988 3

原创 ThreadLocal理解

ThreadLocal 线程副本变量管理器Thread 创建后每个Thread中都有一个ThreadLocalMap实例key为threadlocal对象弱引用包装,value为存储的值get和set的的时候 会通过Thread的currentThread 得到当前线程,然后得到当前线程的map,set和get 都是操作当前线程的map。因为key是弱引用包装所以gc时key被回收,但是value因为被线程强引用所以存在内存泄漏的可能性...

2020-08-09 17:44:44 139

原创 draw arrow

public double getAngle(int Ax,int Ay,int Bx,int By,int Cx,int Cy){ double lengthAB = Math.sqrt( Math.pow(Ax - Bx, 2) + Math.pow(Ay - By, 2)), lengthAC = Math.sqrt( Math.pow(Ax - Cx, 2) + Ma..

2020-07-23 18:24:26 511

原创 get point from line

static void lineFromPoints(Point P, Point Q,int x){ int a = Q.x - P.x; int b = P.y - Q.y; int c = a*(P.x) + b*(P.y); if(b < 0) { Log.d("jia","-The line passing through points P and Q is: " + a + "x " + b + ".

2020-07-23 18:21:19 163

原创 获取当前正在运行的activity

adb shell "dumpsys activity activities | grep mResumedActivity"

2020-05-07 17:55:01 424

转载 FFmpeg编译遇到make: *** [install-libavdevice-static] Error 127问题

/bin/sh: ranlib/usr/local/lib/libavdevice.a: No such file or directorymake: *** [install-libavdevice-static] Error 127在编译FFmpeg的时候遇到这个问题,编译步骤我是网上找的别人的文档:https://juejin.im/post/5b48ba59e51d4518e31...

2020-04-03 14:49:05 1751

转载 Clang编译Android平台能用的FFmpeg可执行程序

创作参考了很多前辈们的博文。没有这些前辈们,估计现在我还在ffmpeg的坑里面打转。。首先要感谢这位前辈的博文:https://www.cnblogs.com/tplusy/p/11012149.html。本文的思路就是源自于Ta。虽然Ta是在Windows上进行处理的,但是却给我了启发。好了,下面开始正题。事前工作准备一台运行Ubuntu的电脑/虚拟机。我这边使用的是vmware虚拟...

2020-04-02 11:35:52 1611

转载 ubantu-16+ndk-r14b 编译 ffmpeg-4.0.2+lame_mp3-3.99.5

1、环境和软件版本ubantu-16.4.1ndk-r14bffmpeg-4.0.2lame_mp3-3.99.52、废话 因为我也是新手,对linux不熟悉,对编译不熟悉,最喜欢的动作就是拿来主义,研究不深,所以不敢保证本文所有的操作都是一步到位没有问题,再者,即使跑不通,也可以给大家提供个思路。 根据我上一篇博客(https://my.oschina.n...

2020-03-31 19:22:38 332

原创 ubuntu查看本机架构和支持的兼容架构

这里说一下architecture的问题,一个编译好的软件是与操作系统类型,cpu架构都有关的。这个architecture就是cpu的体系结构。该命令用于显示本机的architecture,我在不同的机器上得到的结果有:arm64或amd64sudo dpkg --print-architecture该命令用于显示本机支持的外部的architecturesudo dpkg --...

2020-03-31 16:28:03 2244

转载 三维重建:几种坐标系的简介

定点坐标(对象坐标系)→MModelView→眼坐标系→MProjection→裁剪坐标系→ w分离→标准化设备坐标系→视口转换→窗口坐标系从坐标的角度来看,过程如下:在实际当中,不存在单独的model,view transformation,而是将这两次变换组合成一个模式变换model-view transform来进行。实际上,OpenGL只定义了...

2020-02-19 18:38:18 3106

原创 AVFrame结构体简述

AVFrame结构体功能描述AVFrame是ffmpeg用来存储无压缩的音视频原始数据的结构体使用事项1、 AVFrame的创建必须使用av_frame_alloc()函数来创建结构体,并未结构体初始化内存,但是仅仅是初始化本身。2、 AVFrame是一个典型的创建一次,然后可以不停的复用的结构体。每次服用结束后需要调用av_frame_unref()来释放对其它结构的引用,保证下次可以...

2019-12-17 16:21:09 678

原创 AVFormatContext理解

AVFormatContext是一个API全局都可以用到的句柄AVInputFormat *iformat;输入用到的format,只用来Demuxing , 用 avformat_open_input()来赋值AVOutputFormat *oformat;输出用到 format,只在Muxing时使用, 必须在avformat_write_header()调用前创建,可以用avfor...

2019-11-26 18:20:23 1369

原创 ffmpeg time_base的理解

ffmpeg time_baseAVStreamAVCodecContextAVStreamAVStream中的time_base 是frame中时间戳的单位.解码时: 由libavformat来设置改值编码时: 需要使用者在调用 avformat_write_header()前设置, 在avformat_write_header()内部, 封装器在写入实际的文件时可能会根据封装的格式重...

2019-11-11 18:09:49 401

原创 ffmpeg+lamemp3交叉编译

ubuntu 16.04+ndk-r15c+lame3.100编译环境的配套性很重要,ndk最好不要用最新的,不然的话会出现好多奇怪的问题,刚开始使用时是r17c,一直提示stdio.h 无法找到,lame not found 换到r15c就可以...

2019-08-16 11:25:03 735

第一人称3D模型

此代码是一个自己做的3D加载模型,是一个以第一人称为主角的室内漫游模型,为一些手机游戏感兴趣的开发者尤其是3D游戏的爱好者参考。

2011-12-27

炸弹人手机游戏源码

这是个人写的手机游戏源码,适合从事手机游戏开发的人员参考或是手机游戏开发者爱好者阅读。

2011-11-20

电脑硬件知识详解

了解更多的操作系统和硬件知识会帮你更好的使用您的电脑使您

2011-11-20

空空如也

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

TA关注的人

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