自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 Android每天面试一题--Android的Handler机制

我们在面试的时候经常会被问到Handler机制,我们一般回答的很简单,比如答到用来发送及处理消息,处理子线程向主线程发出的消息。对于面试官而言,这或许并不是他们想要的答案。今天,我打算从源码的角度去追溯一下,Handler究竟是怎么样的一个执行机制。首先,我们知道Handler里面发送消息包含了下面的几种方式例如:sendMessage(Message msg)sendEmptyMess...

2018-11-09 16:55:27 319

原创 项目架构提炼--状态回调

在开发的工程中,我们经常会遇到,在项目的一些方法执行时,我们想知道,此时的这个方法处于什么阶段,然后将这个阶段返回给前台UI。通俗的举个例子来说,比如我们播放音频,有这个几个过程开始 -MSG_RECORD_STARTED暂停-MSG_RECORD_PAUSE重新开始-MSG_RECORD_RESUME播放完成-MSG_RECORD_FINISHED然后,我们执行播放的不同状态中,更...

2018-11-08 23:14:52 491

原创 nginx流媒体服务器搭建

流媒体服务器的种类red5 主要用来做游戏开发nginxnginx是一个高性能的反向代理的服务器反向代理服务器是什么?我们在互联网的nginx上做一个请求,它在代理请求到内网的服务器里面去。当内网的服务器有响应的时候,它就把这个响应放在公网上面去。准备工作下载nginx服务器下载RTMP协议的模块开始(阿里云服务器ubuntu14.04系统+Xshell远程连接)1...

2018-09-23 09:43:01 894

原创 ADT开发NDK配置相关环境的记录

1、准备工作 ADT、NDK文件的下载ADT下载: 链接:https://pan.baidu.com/s/13xitKNysSFSFpnDDgbRPAg 提取码:ak5lNDK下载:首先先安装好ADT文件,解压NDK。1、第一步安装成功后,添加SDK的目录 Window–>Preferences–>Android 2、添加NDK的...

2018-09-17 15:51:53 314

原创 音视频直播核心技术

主要包含的内容:音视频编解码推流 通过RTMP协议,有用到NDK RTMP协议:基于TCP,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5(流媒体服务器)等。针对Android端的RTMP推流的选择方案有两大类...

2018-09-13 15:03:17 4102

原创 FFmpeg在linux中进行编译

1、首先准备工作ndk官网下载Linux版本的ndk文件,然后解压然后配置NDK环境变量1、打开命令行输入vim ~/.bashrc //代表进入用户的环境变量文件2、在这个文件的末尾添加export NDKROOT=/home/zhangy/proj/android-ndk-r17c //这个是我存放ndk目录的位置export PATH=$NDKROOT:...

2018-09-13 09:55:04 723

转载 Android控件之相关控件

AutoCompleteTextView:自动匹配文本内容功能:在搜索引擎里面查找内容的时候,我们想要输入的信息就会出现其他与其相关的提示信息我们从上面看到一个很重要的属性...

2018-09-09 20:28:47 190

原创 数据结构与算法-之第一篇线性表

1、算法、数据结构、数据模型?算法:数学里面的运算在计算器里面特有的显示,包括一些指令来得到相应的一些结果,比如下五子棋的时候,里面对应的规则和策略就好比是算法。数据模型:而数据结构就好比是数据的模型,对于五子棋来说,外部的人,棋子,棋谱的表示。数据结构:数据之间相互存在的一种或者多种特定的关系的元素的集合。2、逻辑结构分析1、集合结构:各节点之间没有任何关系,而且里面的...

2018-09-09 11:55:03 252

原创 Android要点提炼总结之消息机制

消息机制1、作用:跨线程通信 2、场景:当子线程进行耗时操作以后需要更新UI时,通过Handler将有关的UI操作切换到主线程中执行 系统不建议在子线程访问UI的原因: 1、UI线程非安全,在多线程中并发访问可能会导致UI控件处于不可预期的状态。 2、如果加上锁的话,会导致UI控件变得复杂和低效。同时会阻塞某些进程的运行关键要素:Message(消息):需要被...

2018-09-05 18:01:01 209

原创 Android框架---单例模式

1、单例模式的定义 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例2、单例模式的特点 1、单例类只有一个实例 2、单例类必须自己穿件自己的唯一实例 3、单例类必须给其他类提供这个实例单例模式保证了全局对象的唯一性,比如系统启动读取配置文件就需要单例保证配置的唯一性前面说的是单例模式的一些基础,很简单。主要是分析一下单例模式的线...

2018-09-05 11:59:54 308

原创 Android框架---SDK中单例模式的集成管理

这种模式是我在开发SDK上使用的,主要解决的是SDK上集成了许多的第三方库。然而为了能够在策略层直接使用这些功能,而不用去管这些功能是怎么实现的。都交由自己的实现类去自己实现。从这点出发,我就使用了这种模式来构建了我的外部框架。当然,这个外部框架也是要初始化的,在Application里面初始化没错,就是BD.Ext.init(this)就完成了初始化现在我们看看BD.java类,...

2018-09-05 11:07:04 528

原创 AndroidSdk源码分析之--LayoutInflater加载生成View树的过程

LayoutInflater在Android中叫做布局管理器,很多时候我们都会用到LayoutInflater来加载指定的布局,然而,我对Android的UI加载View部分的源码进行了学习,也发现了,最终我们的布局也是通过 mLayoutInflater.inflate(layoutResID, mContentParent);进行渲染进去的PhoneWindow.java类没错...

2018-09-05 10:05:21 299

原创 Android要点提炼总结之线程和线程池

1、线程:CPU调度的最小单元。 2、特点:线程是一种受限的系统资源,也就是说线程不能无限的创建和销毁 问: 如何避免频繁的创建和销毁线程所带来的系统 答:采用线程池,线程池中缓存了一定数量的线程,进而达到效果。3、线程池假如一个服务器完成一项任务所需要的时间为:T1创建线程的时间,T2在线程中执行任务的时间,T3销毁线程的时间如果:T1+T3远大于T2,则可以采用线...

2018-09-04 15:10:02 189

原创 Android存储路径

在了解存储路径之前,先来看看Android QQ文件管理界面,了解一下QQ的数据文件路径来源,到底来源于什么地方呢? 手机QQ管理对应的存储目录 我的文件:是指放在QQ指定目录下的文件: /tencent/QQfile_recv/ (顺便说一下微信的存储路径: /tencent/microMsg/Download) 手机内存:其实是内部存储的根目录,在ES文件浏...

2018-05-18 15:57:02 847

转载 AndroidStudio生成自己的Compile依赖

此博客转载的是https://blog.csdn.net/RedWolfChao/article/details/54913560,这篇博客讲解的很详细,很感谢博主的贡献。转载一下加深自己的印象

2018-05-17 18:59:53 225

原创 Android 之 tools的作用

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activ

2018-05-17 16:42:22 868

原创 ros文件系统介绍以及创建一个catkin程序包

1.预备工作本教程中我们将会用到ros-tutorials程序包,请先安装: sudo apt-get install ros--ros-tutorials2.文件的系统工具rospack—允许获取软件包的有关信息如rospack find roscpp —-返回软件包roscpp的路径信息roscd–直接切换工作目录到某个软件包或软件包集中如roscd ros...

2018-05-17 15:55:23 756

原创 串口固话的解决方法

由于开机时 USB 口间上电的顺序是不固定的,所以导致每次开机后每个设备 的串口号总是会发生变化,从而需要手动修改,非常麻烦。可通过一下方法固 话设备对应的串口。其实每个 USB 设备都有唯一的与其它设备不同的信息。 通过指令1、查询串口号$ ls /dev/ttyUSB*2、查询串口号后,根据串口号列出串口详细信息,如:$ udevadm info /dev/tty...

2018-05-17 15:55:08 373

原创 程序下发速度与底盘实际行驶速度不匹配问题的探究

为了取得 dwa_local_planner 中最大最小速度参数,测量了底盘实际行驶的速度,结果发现实际的速度与程序下发期望达到的速度有误差。随即进行了一些列实验,对整个控制链中的各个环节逐一排查,确定问题的原因。(为了后期路径规划的需要)一、软件程序可能存在的问题 1. 实际速度转换到下发控制有误 2. 指令下发部分的代码 有误 3. 下位机向上反馈...

2018-05-17 15:54:56 503

原创 ROS Navigation Tuning Guide

基本点:一、速度和加速度动力性:机器人的速度和加速度 Ros导航中,local planner 接收测距消息(odom主题),并输出速度命令(cmd_vel主题)老控制机器人的运动 最大/最小速度和加速度是移动基站的两个基本参数,在Ros导航中,需要知道平移和旋转的速度和加速度。二、获取最大速度(匀速状态的时候,则为最大速度)1、订阅odom主题来获取当前的测距信息,输...

2018-05-17 15:54:27 3354 2

原创 Linux中开机脚本的编写

添加开机启动脚本,开机自动赋予给串口权限1、在/etc/rc.local最后添加要执行的脚本 2、startup.sh文件的内容是具体参照 https://blog.csdn.net/zhouzhenhe2008/article/details/77415965 https://askubuntu.com/questions/889632/startup-script-wit...

2018-05-17 15:53:50 303

原创 二进制、十进制,十六进制转化成十进制

首先,我们熟悉一下10进制的10进制(D,Decimal)# 0,1,2,3,4,5,6,7,8,9123 = 1*100+2*10+3 = 1*10²+2*10+19527=9*10³+5*10²+2*10+7int a=123 //十进制表示16进制(X,Hex,Hexadecimal)0,1,2,3,4,5,6,7,8,9,A,B,C,D,E...

2018-04-21 15:23:34 786

翻译 机器人局部避障的动态窗口法(dynamic window approach)

关于DWA的文章好多的都是英文的,对于英文很low的我,简直就是一个毁灭性的打击,为了工作,我不得不去看英文,百度,但是老天是眷顾我的,突然看到 https://blog.csdn.net/heyijia0327/article/details/44983551 这篇文章,我终于明白了,这个DWA到底是干嘛的了, 然后翻过头在去看英文的,彻底的去了解这个局部动态窗口的含义到底是什么。原来就...

2018-04-10 20:34:19 331

原创 Roslauch的编写

Roslaunch实在是太方便了,用的太爽了。以前启动rosnode得一个一个起,而且又要source一下,又满屏幕都是窗口,把我找的直接是蛋疼,但是roslaunch以后,将你要启动的节点配置在一个launch文件里面,这样你运行起来,所有的节点也将全部启动起来。下来进入正题1、使用launch启动脚本文件<?xml version="1.0"?><launc...

2018-04-10 20:23:38 338

原创 Ros给电机输出协议为左右轮电机输出的转速与最大转速的百分比

1、首先声明v,w分别为cmd_vel中给出的机器人实际线速度与角速度 2、输出:lp,rp分别为左右轮电机输出的转速与最大转速的百分比其他参数: wb:左右轮轴距 d:轮子直径 ratio:电机减速比 rmp:电机每分钟转的圈数 (我们的电机是3000转/min)先根据v,w算出左右轮的速度vl,vr vl=v-w*(wb/2) vr=v+w*(wb/2)之后计算lp...

2018-04-10 20:07:57 1182

原创 ubuntu和windows之间通过一根网线进行数据传输

当我们在两台不同系统的电脑上传输很大文件的时候,然而U盘却装不了的时候,我们采取了通过一根网线连接连接两台电脑。以ubuntu为主机,点击上面的wifi小标志,选择Edit Connection-add-选择Ethernet的连接方式,然后create,直接设置静态IP(即IPV4 Settings) 如图所示: 在windows上面同理,设置静态ip,与主机在同一个ip网段上。

2018-02-07 10:03:05 10178 3

原创 Ros_Android环境搭建

1、ROS是什么?首先,我们在学习ros的时候,得明白ros是什么?简单的说,ros就是一个分布式操作系统,通过节点node,主题topic,服务service等进行通信和控制。这个机制就好比 两个人聊天微信,每个人都是一个节点node,微信这个软件的聊天功能就是Topic,两个人只有都通过微信才能聊天,如果一个人用whatsup,另一个人用微信,是收不到对方信息的。 而service就好比表情包或

2018-01-10 15:59:30 1646 1

翻译 Firefly的人脸技术

现已进入刷脸的时代,例如,人脸支付、人脸识别的门禁、人流监控等等。 如何在Firefly开源板上快速搭建DEMO,并快速产品化?为了让更多产品可以用上人脸识别技术,Firefly推出了一款高性能人脸识别SDK。此SDK的人脸识别的算法,运行效率高,识别精确度高,性能优异,可以直接应用于商业产品。现在的人脸技术包含有FaceBookDFaceAI系统,以及阿里巴巴的smile to pay人脸技术

2017-11-25 10:48:28 426

原创 python3基本语法

1、查看python版本 pythin -v2、标识符1、第一个字符必须是字母表中的字模或下划线2、标识符的其他部分可以用字母、下划线、数字组成3、标识符大小写敏感3、python保留字输出所有的保留字 import keyword keyword.kwlist [‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘bre

2017-11-15 13:41:49 542

翻译 Thinker热修复

1、热修复是什么?简单来讲就是在不需要发包的情况下,修改你线上的应用bug,这样就不用因为一个小bug而再次发包了2、接入方式一种是命令行接入,一种是gradle接入下面讲解的是gradle接入 首先,基本的配置 在peoject的build中配置如下 TINKER_VERSION需要在gradle.properties中进行配置 TINKER_VERSION=1.7.7这里这样写的

2017-11-15 11:09:59 929

原创 windows上虚拟机与Winscp如何连接起来

这段时间一直在学习FireFly的固件编译,这个固件的编译环境在Linux中,所以话不多说,首先就得给电脑安装一个虚拟机。有想了解FireFly的可以在百度上搜搜,百度很强大。。 工具版本 VMware Workstation Pro12.5.7 ubuntu-12.04-desktop-amd64 winscp 工具注意一下ubuntu有两个版本,一个是desktop版本–

2017-11-14 18:02:56 5580

翻译 Android 中内存泄漏的原因和解决方案

详解请参考http://www.jianshu.com/p/abee7c186bfa 风魔龙郎所写的博客,很完善,很强大。。哈哈

2017-11-14 14:15:55 218

原创 下载android源码(git问题总结)

1、下载源码的时候,首先保证电脑是翻墙的,然后下载git工具 2、如果Git出现如下问题,443报错 3、处理的时候

2017-10-30 09:47:52 419

原创 C语言简历

C语言的起源1972年在贝尔实验室应用的范围文字处理程序以及电子表格–office系列,WPS系列编译器操作系统大型网络游戏C++是什么C++就是在C语言的基础上嫁接了一些面向对象的工具,是C的超级版C语言的特点1、层次清晰,便于按模块化方式组织程序,易于调试和维护2、结构化的缺点很明显,程序的可重用很差3、语言非常简洁,适合编程的入门语言,使用灵活方便可移植性好不同机器

2017-10-17 21:44:12 2883

翻译 Android Studio Template

这篇文章是转载hongyang的文章,里面预设了非常多的Activity模板,可以方便的添加各种效果,极大的减少了bufenbiao插件收集对于Activity的模板,在 Appaction/AndroidStudio.app/Contents/plugins/android/lib/templates/activities 每个Activity模板,对应一个文件夹,对应我们创造Activi

2017-10-14 12:38:57 481

翻译 Android要点提炼总结之Activity

1、详说一下Android的系统架构,包括层与层之间的调用,binder,jni,底层文件读写函数应用程序层 —java的应用层应用程序框架层 –应用软件架构 封装好的api运行库 –C或C++的函数库部分linux内核层 –硬件驱动,网络电源,系统安全等等android系统中,用JAVA写界面程序,调用jni中间中间库提供的接口,去操作某一个驱动点,实现read,weiter,i

2017-10-12 16:37:03 500

翻译 MVP模式的的引用

本篇文章引用的是鸿阳的博客,关于mvp模式的使用在项目当中是越来越多,它的好处在于使得View和数据访问层进行脱离,虽然代码量和类增多了,但是在后期的维护和代码的解耦上发挥了它独有的优势.下面就以登录为例:首先在项目中的model包里面创建User对象package com.example.mac.mvptest.model;/** * zhangy * Created by mac on 2

2017-10-08 12:58:50 470

原创 C语言的灵魂--指针基本用法

指针的的基本概念指针(pointer)是一个值为内存地址的变量(或数据对象) 内存地址一般使用16进制来表示。通俗的理解为,变量就是一个内存,内存肯定有内存地址,而我们的指针就是来保存这个内存地址的变量。1、基本用法数据类型*指针变量名; 例如int*ptr_num char*ptr_name; float*money_ptr; double*p_price;注意:在头文件stdio.h中

2017-10-05 14:57:22 508 1

原创 C语言基础--变量

1、变量是什么?变量是计算机中一块待定的内存空间,由一个或多个连续的字节组成。2、变量的命名通过变量名可以简单快速的查找到内存中存储的数据3、C语言的命名规则1、只能有字母、数字、下划线3中字符组成,且第一个字符必须为字母或下划线 2、变量名不能包含除下划线以外的特殊字符 3、不可以使用保留字4、基本数据类型占位符号 %d int %.1lf 表示4.5(double) %.2lf 表

2017-10-05 13:31:41 310

原创 C语言程序的基本结构--HelloWrold篇

今天是第一天学习C语言,就从最先的hello,world入手。首先,我们可以用notpad++写代码,也可以用开发工具 Code::Blocks进行编写。1、Hello World1、Code::Blocks工具 新建一个项目—Console Appaction(程序控制台)—C语言—-创建一个目录(可以用中文)–下一步即可 2、代码#include <stdio.h>//standare

2017-10-04 17:07:49 535

空空如也

空空如也

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

TA关注的人

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