安卓高级工程师,目前任职于Wifi万能钥匙
能力说明:
精通JVM运行机制,包括类生命、内存模型、垃圾回收及JVM常见参数;能够熟练使用Runnable接口创建线程和使用ExecutorService并发执行任务、识别潜在的死锁线程问题;能够使用Synchronized关键字和atomic包控制线程的执行顺序,使用并行Fork/Join框架;能过开发使用原始版本函数式接口的代码。
暂时未有相关云产品技术能力~
阿里云技能认证
详细说明1.布局优化解决方案: 1.减少布局层级嵌套,多使用RelativeLayout替代LinearLayout 2.避免设置不必要的背景 3.使用自定义View实现复杂布局,减少invalidate次数 2.
开始重新学习一下自定义View的相关知识,借鉴了一些网上的文章,目前在跟这位博主学习,大家可以关注一下 作者:红橙Darren 链接:https://www.
详细开发过程可以参考(10.Eclipse下Ndk开发(ffmpeg播放视频 播放音频)) 这里只贴出重构后的代码,注释写的很详细 #include "com_example_ndk_ffmpeg_FFmpegUtils.
你的浏览器不支持播放视频,扔了吧 属性解析: 屏幕快照 2018-03-06 上午11.07.47.png 当前,video 元素支持三种视频格式: 格式 IE Firefox Opera Chrome Safari Ogg No 3.
大多数基础内容来自W3CSchool HTML5 元素同样拥有方法、属性和事件 其中的方法用于播放、暂停以及加载等。其中的属性(比如时长、音量等)可以被读取或设置。
Your browser does not support the audio element. 属性解析 屏幕快照 2018-03-06 下午2.
#div1 {width:198px; height:66px;padding:10px;border:1px solid #aaaaaa;} function allowDrop(ev) { /*默认地,无法将数据/元素放置到其他元素中。
Title function drawRect() { var a = document.
什么是SVG? SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG 用于定义用于网络的基于矢量的图形 SVG 使用 XML 格式定义图形 SVG 图像在放大或改变尺寸的情况下其图形质量不会有损失 SVG 是万维网联盟...
计数: 开始 Worker 停止 Worker var w; function startWorker() { //检测用户的浏览器是否支持它 if(typeof(Worker)...
(创建于2017/11/18) JNI(Java Native Interface) Java调用C/C++,C/C++调用Java的一套API 1.编写native方法 public class JniUtils { public stati...
(创建于2017/11/18) c/c++调用Java包括几个分类,调用Java静态和非静态属性,静态和非静态方法四种 提示: 生成一个类中所有属性成员签名的方法如下: 1.
(创建于2017/12/24) #include #include using namespace std; /* 引用: 1.单纯给变量去别名,没有任何意义,作为函数参数传递过程中不产生副本, 2.
(创建于2017/12/24) 构造函数的调用 #define _CRT_SECURE_NO_WARNINGS #include "iostream" //包含c++的头文件 using namespace std; class Me { publ...
(创建于2017/12/24) 如果一个类中属性有另一个类或者有const类型,如何初始化 #define _CRT_SECURE_NO_WARNINGS #include "iostream" //包含c++的头文件 using namespa...
(创建于2017/12/24) 友元函数 友元函数提供了一种外部访问类私有属性的方法,如下,如果modifyA方法不添加friend,则编译失败 #define _CRT_SECURE_NO_WARNINGS #include "iostream"...
(创建于2017/12/25) 1.继承的形式 #include //继承 //代码的重用性 using namespace std; //人类 class Human{ public: void say(){ cout...
(创建于2017/12/30) 1.按类型抛出异常 void main(){ try{ int age = 300; if (age > 200){ throw 9.
(创建于2017/12/31) C++类型转换 static_cast 普遍情况 const_cast 去常量 dynamic_cast 子类类型转为父类类型 reinterpret_cast 函数指针转型,不具备移植性 1.
(创建于2018/1/1) #include #include using namespace std; //操作文本文件 void writereadtext() { //写入文本到一个文件中并创建这个文件,然后读取写入的内容显示到控制台 char* fname = "D://renzhenming.
(创建于2018/1/2) #ifndef _ITERATOR_DEBUG_LEVEL #define _ITERATOR_DEBUG_LEVEL 0 #else #undef _ITERATOR_DEBUG_LEVEL #define _ITERAT...
(创建于2017/12/2) 1.编写native方法 package com.example.ndk_file_encrpty; public class Cryptor { static{ System.
(创建于2017/12/6) 1.工具类PatchUtils package com.ren.ndk_file_patch; public class PatchUtils { static{ System.
(创建于2017/12/17) 1.服务器生成差分包 服务器生成通常是在web项目中进行的,和客户端开发类似,先生成动态库,然后调用,我们创建一个web项目如下目录结构 6825421.
(创建于2017/12/28) 已实现 注意几点: 1.main下cpp文件夹放置c文件和相关头文件 2.main下JniLibs文件夹放置第三方so文件 3.
(创建于2017/12/26) 1.搜索fmod,并下载代码 5199906.png 2.拿到Android相关的代码后,打开目录结构 5291234.
(创建于2017/12/30) 1.编写native package org.fmod.example; public class EffectUtils { //音效的类型 public static final int ...
(创建于2018/1/4) ffmpeg完整的编译过程 1.ls 显示所有目录文件 2.mkdir root 创建文件夹root //将Android文件夹下的所有强制删除 rm -rf android 3.
(创建于2018/1/7) ffmpeg库简介: 4113515.png 解码流程图: 4062671.png 解码过程涉及到的函数 4191421.
(创建于2017/12/21) 1.引用是变量的别名 #include "iostream" //包含c++的头文件 using namespace std; int main() { int a = 10; int &b = a; ...
(创建于2017/12/20) 1.命名空间 namespace :C++引入的用于解决多个模块间命名冲突问题的一个机制,他是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。
(创建于2018/1/26) 遇到的问题 遇到一个很棘手的问题,在Eclipse上引入两个头文件报错 #include #include 右键->Porperties->C/C++General->Paths and Symbols中可以看到 987671.
目前测试存在两个问题 1.最初是继承Frame来实现界面显示,后来发现,界面中部分控件存在时而显示时而不显示的问题,查找资料之后,将Frame修为JFrame,并且修改setVisible的时机,界面显示的问题解决,不显示的原因,有一种说法就是注释中提到的 2.
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路链接起来,在网络操作系统,网络管理软件及网络通信协议的协调下,实现资源贡献和信息传递的计算机系统 网络编程就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换 网...
1.网络编程 1.1计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。 按照计算机网络的定义,通过一定的物理设备将处于不同位置的计算机连接起来组成的网络,这个网络中包含的设备有:计算机、路由器、交换机等等。
本项目最终的目的是在pthread线程中,调用Java一个工具类得到多个uuid,然后调用类中另一个方法弹出toast,实现在c中获取安卓上下文对象Context 编译native方法,生成头文件的一系列过程不再赘述,直接上代码,都在注释中 PosixUtils: package com.
(创建于2018/1/31) 文件操作 1.显示列表 ls -l 以列表的形式显示 ls -la 以列表的形式显示所有,包括隐藏文件 ls -l ja* 通配符查找,查找的如果是文件夹结果是以列表形式显示文件夹下第一层的所有文件和文件夹 ls -l...
往一个viewgroup中添加fragment的两种方式如下: FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.
(创建于2018/1/31) 1.传递参数 Press ENTER or type command to continue #!/bin/bash ...
(创建于2018/1/31) 条件语句 shell中的条件语句必须以fi结尾,否则会报错syntax error: unexpected end of file if else then 这里的test命令意思就是test后的条件如果成立,则它就是0(...
(来自W3CSchool) 在客户端存储数据 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前,这些都是由 cookie 完成的。
命令如下 gdb调试 编译加上-g参数 gcc test1.c -g -o test1 进入调试 gdb test1 开始调试 start 显示代码 list-简写l list 函数名称(查看函数内容) list 行数(查看某行代码) 执行...
(创建于2018/2/1) 1.简单的一个函数 1 #!/bin/bash 2 3...
(创建于2018/2/5) 这个脚本是可以正常编译的,但是不排除,复制到Linux上后出现问题的情况,注意Linux编程的严谨性,多余的空格会导致问题的出现 执行脚本开始编译之前,需要在ffmpeg目录下执行命令,目的是进行一系列的准备工作,例如检查gcc的版本, 生成config.
(创建于 2018/2/7 上午7:43:55) MakeFile 构建工作,只需通过make一句命令就可以构建一个可执行程序,Maven ANT Gradle都是构建工具 在很多C/C++开源项目中,configure文件用来检查系统配置生成配...
(创建于2018/2/11 上午8:12:32) Makefile文件 //递归展开式,可以引用还没有定义的变量,展开是引用时展开 1 str1=$(str2) ...
在以往的工作中,创建线程通常我们关注的都是Thread或者Runnable为主,其实忽略了另外一个比较有用的创建线程的方式,就是Callable接口,下边是Callable配合线程池实现异步任务 import java.
执行异步任务的时候,如果只是new Thread,存在一下弊端 a. 每次new Thread新建对象性能差。 b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。
gdb调试 如果没有安装gdb,使用如下命令进行安装 apt install gdb (或者apt-get install gdb) 这两个命令有何却别,网上有一段解释 在开始对比 apt 与 apt-get 命令的区别之前,我们先来看看这两个命令的背景,以及它们要试图达到的目的。
两个线程间通信,实现交替打印 public class Thread1 { public static void main(String[] args) { final Printer printer = new Printe...