自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 结构体初始化与赋值

结构体是常用的自定义构造类型,是一种很常见的数据打包方法。

2022-07-06 00:16:37 4816

原创 获取环境变量

char *getenv(const char *name) 搜索 name 所指向的环境字符串,并返回相关的值给字符串。参数name-- 包含被请求变量名称的 C 字符串。返回值该函数返回一个以 null 结尾的字符串,该字符串为被请求环境变量的值。如果该环境变量不存在,则返回 NULL。char * s1 = getenv("PATH");string path;if (s1 != nullptr) { path = string(s1);} else { .

2022-04-25 00:52:12 497

原创 Lambda表达式

1. 概述C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda 的语法形式如下:[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}可以看到,Lambda 主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable 或 exception 声明、-> 返回值类型、{函数体}.2. Lambda 语法分析2.1 [函数对象参数]标识一个 Lam

2022-04-11 10:16:32 242

原创 常用指令

SET PASSWORD FOR 'root'@'localhost' = 'xxxxxx';

2021-06-01 15:09:41 153

转载 关于BottomNavigationView的使用姿势都在这里了

一,基本用法 1,首先需要添加依赖: implementation 'com.google.android.material:material:1.1.0' 2,布局文件中引入: <com.google.android.material.bottomnavigation...

2021-04-02 10:58:10 11533 2

转载 nginx 搭建 rtmp

3.搭建nginx服务器参考博客开发环境Ubuntu 16.04 servernginx-1.8.1nginx-rtmp-modulenginx的服务器的搭建下载nginxmkdir ~/codecd ~/codewget http://nginx.org/download/nginx-1.18.0.tar.gz解压tar -zxf nginx-1.18.0.tar.gz -C ~/code/下载nginx-rtmp-modulegit clon

2021-03-30 14:55:07 870

转载 EGL简单梳理

1. 了解下什么是EGL?EGL是什么?EGL是渲染API(如OpenGL, OpenGL ES, OpenVG)和本地窗口系统之间的接口。它处理图形上下文管理,表面/缓冲区创建,绑定和渲染同步,并使用其他Khronos API实现高性能,加速,混合模式2D和3D渲染OpenGL / OpenGL ES渲染客户端API OpenVG渲染客户端API原生平台窗口系统。这个稍微了解下就OK,你只要知道他是一个用来给OpenGl ES提供绘制界面的接口就可以了。EGL的作用:与设备的原生窗口系统通信。

2021-03-22 14:01:02 1298

转载 20分钟让你了解OpenGL ——OpenGL全流程详细解读

| 导语 对于开发者来说,学习OpenGL或者其他图形API都不是一件容易的事情。即使是一些对OpenGL有一些经验的开发者,往往也未必对OpenGL有完整、全面的理解。市面上的OpenGL文章往往零碎不成体系,而教材又十分庞大、晦涩难懂还穿插着各种API的介绍。因此笔者希望通过多年的图形开发经验,结合对OpenGL的理解,对OpenGL整体的知识做一个梳理,剔除掉特别复杂又较少使用的部分。遗留下来常见和易于理解的部分,同时也尽量在介绍的时候兼顾易懂性和严谨性。希望对即将或正在学习OpenGL的开发者,提供

2021-03-18 15:01:06 863

转载 std::promise介绍及使用

一、std::promise介绍std::promise 是C++11并发编程中常用的一个类,常配合std::future使用。其作用是在一个线程t1中保存一个类型typename T的值,可供相绑定的std::future对象在另一线程t2中获取。二、代码示例:下面我们通过几个简单小例子逐渐深入了解std::promise的使用方法。示例1:#include <iostream>#include <future>#include <chrono>.

2021-03-11 15:17:29 409

转载 Rxjava关于Disposable你应该知道的事

关于disposableDisposable类dispose():主动解除订阅 isDisposed():查询是否解除订阅 true 代表 已经解除订阅rxjava虽然好用,但是总所周知,容易遭层内存泄漏。也就说在订阅了事件后没有及时取阅,导致在activity或者fragment销毁后仍然占用着内存,无法释放。而disposable便是这个订阅事件,可以用来取消订阅。但是在什么时候取消订阅呢?我知道有两种方式:使用CompositeDisposable 看源码,CompositeDisp

2021-03-03 15:36:19 2135 1

转载 Android中的Thread, Looper和Handler机制(附带HandlerThread与AsyncTask)

转载自:Android 中的 Thread, Looper 和 Handler 机制 · 笔试面试知识整理 (hit-alibaba.github.io)Thread,Looper和Handler的关系与Windows系统一样,Android也是消息驱动型的系统。引用一下消息驱动机制的四要素:接收消息的“消息队列” 阻塞式地从消息队列中接收消息并进行处理的“线程” 可发送的“消息的格式” “消息发送函数”与之对应,Android中的实现对应了接收消息的“消息队列” ——【Messag

2021-03-02 14:20:31 1336

转载 jni_generator.py

转载自:jni_generator.py - 知乎 (zhihu.com)一、什么是jni_generator.pyJNI定义了Java和C/C++之间的通信规范,当中存在不少机械式定义,像C/C++中原生函数名的一部分是Java中package名称。一旦相互调用的函数多了,依旧用手工去处理,不但浪费时间还容易出错,于是java提供一个叫javah的实用程序帮助开发者把*.java声明的JNI方法转化成C/C++头文件*.h。javah只是实现了机械式定义中部分提取,一些厂家不满足那点处理,甚至

2021-03-02 10:01:33 511

原创 Ubuntu 无法进行SSH连接,开启22端口

1、 查看Ubuntu虚拟机IP地址;ifconfig2、 利用XShell等工具进行远程连接;ssh ip地址发现连接失败;3、 进入Ubuntu 查看22 端口的情况,发现22端口并未开启;netstat -ntlp|grep 224、 打开SSH服务,开启22端口,执行以下命令sudo apt-get install openssh-serversudo apt-get install ufwsudo ufw enable...

2021-02-24 16:21:39 2415

转载 mediasoup v3 API

mediasoupThe top-level exported module.const mediasoup = require("mediasoup");// Or using destructuring assignment.const { types, version, observer, createWorker, getSupportedRtpCapabilities, parseScalabilityMode} = require("mediasoup"

2021-02-22 15:22:19 703

转载 如何创建一个自签名的SSL证书(X509)

引言使用HTTP(超文本传输)协议访问互联网上的数据是没有经过加密的。也就是说,任何人都可以通过适当的工具拦截或者监听到在网络上传输的数据流。但是有时候,我们需要在网络上传输一些安全性或者私秘性的数据,譬如:包含信用卡及商品信息的电子订单。这个时候,如果仍然使用HTTP协议,势必会面临非常大的风险!相信没有人能接受自己的信用卡号在互联网上裸奔。HTTPS(超文本传输安全)协议无疑可以有效的解决这一问题。所谓HTTPS,其实就是HTTP和SSL/TLS的组合,用以提供加密通讯及对网络服务器的身份鉴定。

2021-02-20 10:16:41 1446

翻译 CMake Tutorial

CMake TutorialContents CMake Tutorial Introduction A Basic Starting Point (Step 1) Adding a Version Number and Configured Header File Specify the C++ Standard Build and Test Adding a Library (Step

2021-02-03 14:54:33 376

转载 Android进阶必备:入门RxJava,看这一篇就够了

作者:架构师成长日记链接:https://zhuanlan.zhihu.com/p/336858042来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。RxJava是一个基于事件流的实现异步操作的框架(库),其作用是实现异步操作,类似于Android中的AsyncTask,那么为什么RxJava可以在众多异步操作的库中脱颖而出深受广大开发者喜爱呢?原因在于其逻辑简单、使用方便、条理清晰的特点,本文将由浅至深、由易到难一步一步带你理解和使用RxJava。本文目录如.

2021-01-26 10:54:27 391 2

转载 Lambda 表达式有何用处?如何使用?

作者:Mingqi链接:https://www.zhihu.com/question/20125256/answer/324121308来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。什么是Lambda?我们知道,对于一个Java变量,我们可以赋给其一个“值”。如果你想把“一块代码”赋给一个Java变量,应该怎么做呢?比如,我想把右边那块代码,赋给一个叫做aBlockOfCode的Java变量:在Java 8之前,这个是做不到的。但是Jav.

2021-01-26 10:30:29 179

转载 OkHttp使用详解

今天学习了一下OkHttp,在这里做个总结,希望可以帮助到有需要的人,好了,废话不多说,进入正题。一、OkHttp介绍OkHttp是一个优秀的网络请求框架,可能一说到网络请求框架,可能很多人都会想到volley,volley是一个Google提供的网络请求框架,我的博客里也有一篇专门介绍volley的博客,博客地址在此Android网络请求 ------ Volley的使用 那么既然Google提供了网络请求的框架,我们为什么还要使用OkHttp呢,原来是volley是要依靠HttpCient.

2021-01-22 15:04:08 10897

转载 Android Camera2 之 CameraCaptureSession 详解

转载自:https://blog.csdn.net/afei__/article/details/86108482一、简介CameraCaptureSession是一个事务,用来向相机设备发送获取图像的请求。主要有setRepeatingRequest()和capture()方法。setRepeatingRequest()是重复请求获取图像数据,常用于预览或连拍,capture()是获取一次,常用于单张拍照。CameraCaptureSession类是一个抽象类,其直接的实现...

2021-01-20 14:40:11 2480 3

转载 Android的Surface、View、SurfaceView、Window概念整理

转载自:http://www.360doc.com/content/19/0927/10/8335678_863480139.shtml最近了解了一下Android中几个关于视图的概念:Surface、View、SurfaceView与Window,在此进行一下总结整理BufferQueue在此之前,我们先介绍一下BufferQueue。BufferQueue类是 Android 中所有图形处理操作的核心。它的作用很简单:将生成图形数据缓冲区的一方(生产方)连接到接受数据以进行显示或进一步处理

2021-01-19 14:48:48 2785

原创 TextureView与MediaPlayer播放视频

什么是TextureViewTextureView是在4.0(API level 14)引入的,与SurfaceView相比,它不会创建新的窗口来显示内容。它是将内容流直接投放到View中,并且可以和其它普通View一样进行移动,旋转,缩放,动画等变化。TextureView必须在硬件加速的窗口中使用。现在的移动设备基本都有GPU进行硬件加速渲染。SurfaceTexture在这篇文章中,我们已经知道了Surface是内存中一段绘图缓冲区那么SurfaceTexture是什么呢?Surfac

2021-01-14 15:15:07 1009

原创 TextureView

TextureView 可以用来显示内容流。例如,这样的内容流可以是一个视频或OpenGL场景。内容流可以来自应用程序的流程,也可以来自远程流程。TextureView 只能用于硬件加速窗口。当在软件中渲染时,TextureView 将一无所获。与 SurfaceView 不同的是,TextureView 并不创建一个单独的窗口,而是作为一个常规的视图。这个关键的不同使得 TextureView 可以被移动,转换,动画化,等等。例如,你可以通过调用 myView.setAlpha(0.5) 使 Te

2020-12-28 18:56:27 644

转载 android中LayoutParams设置参数的理解

转载自:https://www.cnblogs.com/hubing/p/5104110.html有这样的一个应用场景:有一个linearLayout控件在其中布局一个textView控件首先,创建线性布局对象LinearLayout layout = new LinearLayout(this);//为本Activity创建一个线性布局对象//并且设置它的属性 android:layout_width 与 android:layout_height 都为 FILL_PARENT//布局方

2020-12-24 19:53:23 2075 1

转载 Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系

转载自:http://blog.csdn.net/pathuang68/article/details/7351317一、SurfaceSurface就是“表面”的意思。在SDK的文档中,对Surface的描述是这样的:“Handle onto a raw buffer that is being managed by the screen compositor”,翻译成中文就是“由屏幕显示内容合成器(screen compositor)所管理的原生缓冲器的句柄”,这句话包括下面两个意思:1..

2020-12-24 16:00:35 285 1

转载 Android ViewGroup 中 addView 方法使用详解

转载自:https://blog.csdn.net/qdjdeveloper/article/details/82794727在日常开发中 我们会涉及到很多架构 例如 MVC MVP MVVM 等等,如果我们的项目本身就是用 MVP 或 MVVM 架构, 那么 Activity 和 Fragment 中的代码冗余可能会相对小一些 但是如果项目的设计架构本身就是 MVC 这样我们还可以用其他的一些方法来分解我们 Activity 和 Fragment 中的代码冗余,对,就像标题中说的,利用 ViewGr.

2020-12-23 16:24:52 2080

转载 JNI编程—JNI基础

什么是JNI,怎么使用JNI——Java Native Interface,它是Java平台的一个特性(并不是Android系统特有的)。其实主要是定义了一些JNI函数,让开发者可以通过调用这些函数实现Java代码调用C/C++的代码,C/C++的代码也可以调用Java的代码,这样就可以发挥各个语言的特点了。那么怎么使用JNI呢,一般情况下我们首先是将写好的C/C++代码编译成对应平台的动态库(windows一般是dll文件,linux一般是so文件等),这里我们是针对Android平台,所以只讨论so

2020-12-22 12:17:09 1751

转载 关于:File.separator

转载自:https://blog.csdn.net/qq_36537546/article/details/88421680其实File.separator 的作用相当于 ' \ '在 windows 中文件文件分隔符 用 ' \ ' 或者' /' 都可以但是在 Linux 中,是不识别 ' \ '的,而File.separator 是系统默认的文件分隔符号,在 UNIX 系统上,此字段的值为' /'在Microsoft Windows 系统上,它为 ' \ '屏蔽了...

2020-12-21 19:38:38 159

转载 ijkplayer编译so库真没那么难

转载自:https://blog.csdn.net/coder_pig/article/details/79134625ijkplayer编译so库真没那么难引言:公司现在的电台项目是我第二个接触音频播放项目,Android音视频播放很多还是使用的MediaPlayer(大中厂除外),但是如果你用过MediaPlayer的话,很多开发者都会吐槽有多坑,连谷歌官方都推荐使用ExoPlayer…遇到过最坑的就是播放在线音视频的时候,网络不好会一直加载,然后点多了还容易ANR…以前就一直想把音

2020-12-21 10:03:44 807

原创 为什么谷歌不提供免费的TURN服务器?

没有免费的午餐,或者免费TURN服务器。现在是2017年,WebRTC已经伴随我们5年多了。你可能会认为,现在人们对WebRTC已经有了足够的了解,这样我们就不会有任何问题了。但事实并非如此。有一个问题总是不时的出现,为什么谷歌(或者其他公司)不提供免费的TURN服务器?除了因为当发生出错时你没有办法控制它们导致你应该使用免费STUN或TURN服务器这个事实以外,让我们首先了解一下这两种服务器——更准确来说是协议,有什么区别,因为STUN和TURN通常部署在一起。STUN是怎么工作的下面

2020-12-18 16:58:04 8423 3

转载 Android SDK Manager详解

转载自:https://blog.csdn.net/u011026779/article/details/53178602做Android开发时,免不了使用Android SDK Manager,安装需要的sdk版本、buildTools版本等等。下图展示了2016.11.16号Android SDK Manager所有的package。很多Android开发的新人在使用的时候可能会疑惑了:这些package到都是什么功能呢,都要安装吗?本篇文章将为你把这些疑惑解开(如果你只想知道需要安装哪些packa

2020-12-18 15:15:22 3666

转载 Android Studio提交库至Bintray jCenter从入门到放弃

平常在工作中我们常常会引用到第三方开源库,比如butterknife, Gilde, RxJava等等。其中最简单方便快捷的方式就是在gradle中用compile引用,例如compile 'io.reactivex:rxjava:1.1.3'有没有想过自己也写一个开源库提供一个引用给别人用?本文介绍如何自己创建一个库给别人用。首先你要得有库创建库很简单,网上有大把的事例教程,为了节约篇幅本文只做简单介绍。在AndroidStudio中先创建一个普通工程,再创建好的工程上右键选择-&g

2020-12-18 15:05:36 490

转载 认识*.so里的JNI_OnLoad()函数

转载自:https://blog.csdn.net/GaoMatrix/article/details/6681374?locationNum=1&fps=1当Android的VM(Virtual Machine)执行到C组件(即*so档)里的System.loadLibrary()函数时,首先会去执行C组件里的JNI_OnLoad()函数。它的用途有二:1.告诉VM此C组件使用那一个JNI版本。如果你的*.so档没有提供JNI_OnLoad()函数,VM会默认该*.so档是使用最老的JN.

2020-12-18 10:42:55 1312

转载 关于Android的.so文件你所需要知道的

之前有个项目要求接入高德地图SDK,而高德就是有.so文件的,在测试兼容性的时候被坑了不少,好了开始今天的话题吧。早期的Android系统几乎只支持ARMv5的CPU架构,你知道现在它支持多少种吗?7种!Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI。应用程序二进制接口(Application Bin

2020-12-17 14:54:29 887

原创 Android Studio与Gradle版本对应关系

在更新 Android Studio 时,您可能会收到一并将 Gradle 更新为最新可用版本的提示。您可以选择接受该更新,也可以根据项目的构建要求手动指定版本。下表列出了各个 Android Gradle 插件版本所需的 Gradle 版本。为了获得最佳性能,您应使用 Gradle 和插件这两者的最新版本。插件版本 所需的 Gradle 版本 1.0.0 - 1.1.3 2.2.1 - 2.3 1.2.0 - 1.3.1 2.2.1 - 2.9 1.5.0 2.

2020-12-17 10:35:56 11034 1

原创 #!/usr/bin/env bash

#!/usr/bin/env bash #lends you some flexibility on different systems#!/usr/bin/bash #gives you explicit control on a given system of what executable is calledenv 命令用于显示系统中已存在的环境变量,以及在定义的环境中执行指令通过/usr/bin/env 运行程序,用户不需要去寻找程序在系统中的位置(因为在不同的系统,命令或程.

2020-12-15 18:33:17 1381 1

原创 SurfaceView与MediaPlayer播放视频

SurfaceSurface与SurfaceView这篇文章对Surface和SurfaceView做了很详细的解释。简单的说Surface对应了一块屏幕缓冲区,每个window对应一个Surface,任何View都要画在Surface的Canvas上。传统的view共享一块屏幕缓冲区,所有的绘制必须在UI线程中进行。Surface可以理解为: Surface类似一个句柄,可以得到Canvas、原始缓冲区以及其他方面的内容。Canvas用于画图原始缓冲区用于保存当前窗口的像素数据Surf

2020-12-15 16:23:40 2026

原创 Ubuntu新建用户

添加新用户useradd -r -m -s /bin/bash 用户名配置新用户密码passwd 用户名切换用户su 用户名

2020-12-05 15:51:13 92

原创 Ubuntu常用软件安装

VLCsudo apt-get install vlc安装VLC,刚装好的Ubuntu18.04,无法使用自带FireFox播放BiliBili视频,在安装VLC后便可观看搜狗输入法sudo apt-get install fcitx打开 系统设置——区域和语言——管理已安装的语言——在“语言”tab下——点击“添加或删除语言”弹出“已安装语言”窗口,勾选中文(简体),点击应用回到“语言支持”窗口,在键盘输入法系统中,选择“fcitx”点击“应用到整个系统”,关闭窗口,重启电脑,到官网下载d

2020-12-04 23:57:27 283

原创 MediaPlayer播放音频

Android提供了常见的音频、视频的编码、解码机制。借助于多媒体类MediaPlayer的支持,开发人员可以很方便在在应用中播放音频、视频。本篇博客主要讲解在Android平台下如何播放一个音频文件。本篇博客主要内容如下:MediaPlayer MediaPlayer的音频源 使用MediaPlayer播放音乐 MediaPlayer使用技巧 Demo--一个简单的MP3播放器MediaPlayer上面提到过,Android下对于音频、视频的支持均需要使用到MediaPlayer,它

2020-12-03 16:16:06 951

空空如也

空空如也

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

TA关注的人

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