自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(107)
  • 资源 (6)
  • 收藏
  • 关注

转载 多线程同步-synchronized

Java线程锁

2022-06-14 20:00:46 328

转载 Android MVVM 模式介绍

目录1.MVVM模式分为Model,View,ViewModel注意点2.MVVM模式图3.Android MVVM架构4.Databinding框架Note:5.双向绑定使用到的注解1)@InverseBindingAdapter2)@InverseBindingMethod与@InverseBindingMethods3)@InverseMethod4)@Bindable6.ViewModel 的生命周期7.MVVM的优势和劣势7.1优势7..

2021-03-25 10:08:26 1532 2

转载 Android HAL 层框架分析以及代码示例

目录一 硬件抽象层概述二 开发Android硬件驱动程序三 开发Android硬件抽象层模块3.1 硬件抽象层模块文件 命名规范3.2 硬件抽象层模块结构体 以及 硬件抽象层设备结构体 定义规范3.3 编写硬件抽象层模块接口四 为Android硬件抽象层编写JNI方法供硬件服务程序调用4.1 JNI实现4.2 声明JNI注册方法4.3 添加JNI方法代码五 开发Android硬件访问服务5.1 定义硬件访问服务接口5.2 实现硬件访问服务 最后 启动硬件访

2020-08-13 14:53:15 663

转载 RK3399移植4G模块

1、通过串口打印或者adb获取模块的 pid 和 vid,顺便可以看到生成 4 个虚拟串口 /dev/ttyUSB*[ 11.734379] usb 1-1.1: new high-speed USB device number 3 using ehci-platform[ 11.828247] usb 1-1.1: New USB device found, idVendor=2c7c, idProduct=0125[ 11.828386] usb 1-1.1: New USB de

2020-07-23 15:44:16 2304 1

转载 Android编译脚本参数说明

Android系统源码编译命令Android源码下开发肯定涉及到Android.mk. Android源码是在linux系统下开发的, 其实说到底是一个大的工程, 里面涉及到庞大的编译系统, 这个额编译系统的核心是build/目录, 就好比我们在终端第一次编译时需要初始化编译环境,都是敲:source build/envsetup.shenvsetup.sh里面还帮我们动态增加了以下命令:croot 切换到源码树的根目录 m 在源码树的根目录执行 make mm

2020-07-07 11:28:18 511

原创 Linux串口

1、/dev/tty 当前控制终端Terminal2、/dev/ttyn和/dev/console (虚拟)控制台终端3、/dev/ttySn 一般为/dev/ttyS0 串行端口终端,接串口线使用的端口设备4、/dev/ttyUSBn 一般为/dev/ttyUSB0 USB转串口终端,接USB转...

2020-06-23 10:59:14 179

转载 通过Socket直接与RILD进行通信

目录一.RILJ与RILD通信二.直接与RILD连接方案1 .创建socket并连接2.向RILD发起连接3.发送数据4.拨打电话5.设置Radio状态三.编译一个可执行二进制文件一.RILJ与RILD通信上层通常要和RILD通信,是通过Socket,在RIL_JAVA层实现;沿着这样代码流程进行Framework——native: Phone——RIL_JAVA——>RIL_CPP那么可不可以直接和RILD(RIL_CPP)进行通信呢?肯定..

2020-06-12 13:28:07 827

转载 LocalSocket进程间通信

目录C 客户端C 服务端Java 客户端Java 服务端android下使用localsocket可以实现C与C,C与JAVA,JAVA与JAVA进程间通信。localsocket是linux下的一种本地套接字,用来进行进程间通信,分为非命名和命名两种类型,非命名本地套接字只能用在父子进程之间通信(其实是只有保存了未命名的套接字的文件描述符的进程可以使用),命名套接字则没有这个限制。android在linux的本地套接字上进行封装。android上使用localsocket主要是通过

2020-06-12 11:03:28 3084

转载 Android 电话系统框架介绍

目录1.简介1.1模块组成1.2系统框架图1.3代码结构图2.RILD框架设计3.RILD源码分析3.1RILD进程入口函数分析3.2启动事件循环处理eventLoop工作线程3.2.1添加事件3.2.2触发事件3.2.3处理事件3.2.4超时事件查询3.2.5可读事件查询3.2.6事件处理3.3RIL_Env定义3.4RIL_Rad...

2020-04-24 17:40:27 1049

转载 GPRS附着 与 PDP 上下文

GPRS无线数据传输终端利用网络实现与上位机的全双工数据通信。终端需附着GPRS网络,登陆Internet与连接其上的任意一台普通PC机建立数据链路并随时进行数据传输。欲完成这一过程必须实现GPRS的附着和PDP(PacketDataProtoco1,分组数据协议)上下文的激活。通过GPRS的附着登记用户信息,对用户进行移动性管理,激活过程用于激活IP协议,保证数据能以IP报的形式进行传送,使移动...

2020-04-16 10:20:15 377

转载 Linux中运行可执行文件时找不到lib文件

动态链接库( libjthread也是工程内的一个子项目)找不着,怎么回事?make install安装的时候,是把动态链接库和执行文件都放在同一个目录下的在CMP0042更新,也就是Cmake 2.8.1.2之后,如果你声明的cmake_minium_required为2.8以上,MACOSX_RPATH会默认启动,这时候编译的执行文件在查找链接库的时候会往@rpa...

2020-03-19 11:35:07 2549

转载 cmake设置编译器不生效的问题

cmake_minimum_required(VERSION 3.1)# include(cmake/internal.cmake)SET(CMAKE_C_COMPILER "/home/public/local/bin/gcc")SET(CMAKE_CXX_COMPILER "/home/public/local/bin/g++")project(***) //设置在前上...

2020-03-03 18:07:47 6015 3

转载 TCP拥塞控制原理

在学习TCP拥塞控制之前,我想向大家分享两个知识点。不知道大家有没有跟我一样的困惑,我们整天说着网络协议、TCP/IP协议了的,那么协议到底是什么呢? “协议栈”又是什么呢?协议:为进行网络中的数据交换而建立的规则、标准或约定称为网络协议,简称为协议。协议栈:网络中各层协议的总和;由于网络各层画在一起很像一个栈的结构,遂被称为协议栈。言归正传啦!在网络协议中,TCP和UDP是经常被提...

2020-01-09 17:45:39 1553

转载 全面介绍linux TCP/IP协议栈

TCP/IP的关键特征我们如何设计一个数据传输协议以便保证数据快速、有序、无误?TCP/IP正是为了这样的需求被创造的。下面的几个特征用于帮助了解什么是TCP/IP协议(栈)。由于对于TCP来讲IP是紧密相关的,我们放到一起介绍。更多的内容,大家可以参考大学教材《计算机网络》(谢希仁著)以及《TCP/IP协议》三卷(国外)。面向连接的(Connection-oriented)一个tcp ...

2020-01-09 16:21:28 315

转载 pthread和std::thread对比

std::thread是C++11接口,pthread是C++98接口且只支持Linux。示例:pthread_create(&thread, &attr, f, static_cast<void *>(&args));// 其中f是函数,args是所有参数打包成的结构体。因为pthread_create的第四个参数类型是void*,所以需要强制转型...

2019-12-17 13:12:28 6453

转载 C++版循环缓冲

CCycleBuffer.h#ifndef __test__CCycleBuffer__#define __test__CCycleBuffer__ #include <iostream>#include <assert.h>class CCycleBuffer{public: bool isFull(); bool isEmpty();...

2019-12-02 17:43:49 547

原创 glib移植过程

在ARM上移植glib库很麻烦,所依赖的包很多,本次移植涉及到的包主要有zlib,pcre,libffi,ncurses(为了libtinfo),libmount.。由于新版本引入了很多配置工具,我选用了老一点的版本,zlib-1.2.11.tar.gz,pcre-8.37.tar.gz,libffi_3.2.1.orig.tar.gz,ncurses-6.0.tar.gz,libmoun...

2019-11-08 09:57:54 1137

原创 dbus和glib简介

什么是dbusdbus就是一种进程间的通信机制,dbus主要的概念就是总线,进程注册到总线之后,就可以利用总线来进行通信了。dbus的一些基本概念dbus是三层架构的进程通信系统:接口层:由libdbus提供。总线层:由D-Bus总线守护进程提供的。总线可以分为系统总线和会话总线。包装层:包装层一系列基于特定应用程序框架的Wrapper库。对象:对象是封装后的匹配器与回调函数,...

2019-10-31 10:59:33 798

转载 pkg-config介绍

pkg-config是通过库提供的一个.pc文件获得库的各种必要信息的,包括版本信息、编译和连接需要的参数等。这些信息可以通过pkg-config提供的参数单独提取出来直接供编译器和连接器使用。pkg-config会寻找默认位置/usr/lib/pkgconfig(32位) || /usr/lib64/pkgconfig(64位)的.pc文件或者根据变量PKG_CONFIG_PATH定义的位置来寻...

2019-10-29 16:47:35 492

原创 jsoncpp交叉编译配置

$ mkdir arm_jsoncpp$ cp include/ arm_jsoncpp/ -r$ cp src/lib_json/* arm_jsoncpp/$ cd arm_jsoncpp/# 编译静态库$ arm-linux-gnueabihf-g++ -c *.cpp -I./include -fPIC$ ar cr libjsoncpp.a *.o# 编译动态库$...

2019-10-22 13:30:27 972

转载 jrtplib介绍

程序流程发送:获得接收端的 IP 地址和端口号 创建 RTP 会话 指定 RTP 数据接收端 设置 RTP 会话 默认参数 发送流媒体数据接收:获得用户指定的端口号 创建RTP会话 设置接收模式 接受RTP数据 检索RTP数据源 获取RTP数据报 删除RTP数据报1.初始化I、在使用 JRTPLIB 进行实时流媒体数据传输之前,首先应该生成 R...

2019-09-27 16:16:08 8622

转载 Muduo日志系统介绍

日志是服务器端编程中必不可少的一个功能模块,通常被用于服务器的故障诊断和追踪或性能分析。Muduo日志库分为前端和后端两个部分,前端用于生成日志消息并传送到后端,后端则负责将日志消息写入本地日志文件。日志系统的前后端之间只有一个简单的回调函数作为接口:void asyncOutput(const char *msg, int len);其中msg是一条完整的日志消息,包含时间戳、线程...

2019-09-18 15:44:36 1014

转载 线程池处理

(1)简单线程池的实现,如何保证线程池是线程安全的?首先给大家普及下线程池的知识。我写的线程池是使用POSIX写的。线程池整个项目中包括两个类:一个是Task类,用于描述执行一个任务的方法(一个函数)和执行这个任务所需要的参数(函数的参数)。另外一个类就是我们的线程池类ThreadPool类,在线程池中主要有两个队列,一个是Task类队列,用于存放要处理的任务。一个是线程池中存放线程的数组。下...

2019-09-11 19:10:59 101

原创 epoll介绍及使用

一、 介绍 Epoll 是一种高效的管理socket的模型,相对于select和poll来说具有更高的效率和易用性。传统的select以及poll的效率会因为 socket数量的线形递增而导致呈二次乃至三次方的下降,而epoll的性能不会随socket数量增加而下降。标准的linux-2.4.20内核不支持epoll,需要打patch。本文主要从linux-2.4.32和linux-2.6...

2019-09-05 19:39:57 853

转载 TCP半连接和超时响应

现网问题:server、client负载都不是很高的时候,居然可能会出现如下两个问题1、Client端在多次重发SYN包得不到响应而返回(connection time out)错误2、client端报错read timeout 或者 connection reset by peer负载不是很高的情况下,一般不会出现这种情况,所以估计是linux内核参数哪里不对,需要对整个TCP连接进行...

2019-09-04 10:41:15 1249

转载 HTTP协议

HTTP协议简介超文本传输协议(英文:HyperTextTransferProtocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组...

2019-08-21 15:39:47 149

转载 Boa移植配置

一. boa简介boa是一个嵌入式web服务器,小巧而且高效,是可以unix或linux下使用,支持cgi的、非常适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。二. boa源码源码下载可以到:http://www.boa.org/进行下载。下载后可得boa的压缩包(boa-0.94.13.tar.gz)三. boa配置和使用...

2019-08-21 13:50:43 283 3

原创 DTMF

双音多频 DTMF(Dual Tone Multi Frequency),双音多频,由高频群和低频群组成,高低频群各包含4个频率。一个高频信号和一个低频信号叠加组成一个组合信号,代表一个数字。DTMF信号有16个编码。利用DTMF信令可选择呼叫相应的对讲机。在编码时将击键或数字信息转换成双音信号并发送,解码时在收到的DTMF信号中检测击键或数字信息的存在性。一个DTMF信号由两个频率的音频信号...

2019-08-13 18:48:34 3216

转载 Reactor介绍

在处理web请求时,通常有两种体系结构,分别为:thread-based architecture(基于线程)、event-driven architecture(事件驱动)thread-basedarchitecture基于线程的体系结构通常会使用多线程来处理客户端的请求,每当接收到一个请求,便开启一个独立的线程来处理。这种方式虽然是直观的,但是仅适用于并发访问量不大的场景,因为线程需...

2019-08-12 15:29:38 549

翻译 select,poll和epoll区别

(1)select==>时间复杂度O(n)它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。(2)poll==>时间复杂度O(n)poll本质上和select没有区别,它将用...

2019-07-31 15:48:48 80

原创 tcpdump介绍

用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。下载地址:http://www.tcpdump.org/#l...

2019-07-31 09:06:47 643

转载 网卡中断与CPU的绑定问题

在Linux的网络调优方面,如果你发现网络流量上不去,那么有一个方面需要去查一下:网卡处理网络请求的中断是否被绑定到单个CPU(或者说跟处理其它中断的是同一个CPU)。先说一下背景网卡与操作系统的交互一般有两种方式,一种是中断(IRQ,网卡在收到了网络信号之后,主动发送中断到CPU,而CPU将会立即停下手边的活以便对这个中断信号进行分析), 另一种叫DMA(Direct Memory...

2019-07-29 10:27:36 548

转载 RTP协议介绍

OSI七层模型OSI 中的层 功能 TCP/IP协议族应 用层文件传输,电子邮件,文件服务,虚拟终 端TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet表示层...

2019-07-23 11:14:01 799

转载 Linux 互斥锁和条件变量,线程同步

与进程类似,线程也存在同步的问题,当多个控制线程共享相同的内存时,需要确保每个线程看到一致的数据视图,如果每个线程使用的变量都是其他线程不会读取或修改的(比如线程私有数据),就不会存在一致性问题。通常来说用户可以使用互斥量(互斥锁)或者的条件变量(条件锁)的方式来解决线程的同步问题。互斥锁 互斥锁是一个简单的锁定命令,它可以用来锁定共享资源使得其他线程无法访问。互斥锁具有以下特点...

2019-07-22 17:07:47 139

转载 Opus介绍及编译

opus是一个有损声音编码的格式,由IETF开发,没有任何专利或限制,适用于网络上的实时声音传输,标准格式为RFC 6716,其技术来源于Skype的SILK及Xiph.Org的CELT编码 主要特性如下: 6 kb /秒到510 kb / s的比特率 采样率从8 kHz(窄带)到48 kHz(全频) 帧大小从2.5毫秒到60毫秒 支持恒定比特率...

2019-07-18 17:27:45 9769 2

转载 wireshark抓包工具详细说明

wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容,...

2019-07-17 15:21:58 3174

转载 Linux中select使用

Unix中的函数select和poll用来,支持Unix中I/O复用的功能,在Unix中I/O模型可以分为以一几种:(1)阻塞I/O(2)非阻塞I/O(3)I/O复用(select和poll)(4)信号驱动I/O(SIGIO)(5)异步I/O 其中,现在比较流行的I/O模型是阻塞I/O模型.阻塞I/O是当应用程序和内核交换数据时,由于内核还没有准备好数据,那...

2019-07-16 14:54:52 476

转载 Linux中信号量介绍及使用

1.初始化条件变量pthread_cond_init#include <pthread.h>int pthread_cond_init(pthread_cond_t *cv, const pthread_condattr_t *cattr);返回值:函数成功返回0;任何其他返回值都表示错误初始化一个条件变量。当参数cattr为空指针时,函数创建的是一个缺省的条件变量。否...

2019-07-16 11:07:26 2940

转载 STL sort实现

函数声明#include <algorithm> template< class RandomIt >void sort( RandomIt first, RandomIt last ); template< class RandomIt, class Compare >void sort( RandomIt first, RandomIt l...

2019-05-31 13:35:51 333

转载 C++11的std::async

c++11中增加了线程,使得我们可以非常方便的创建线程,它的基本用法是这样的:void f(int n);std::thread t(f, n + 1);t.join();  但是线程毕竟是属于比较低层次的东西,有时候使用有些不便,比如我希望获取线程函数的返回结果的时候,我就不能直接通过thread.join()得到结果,这时就必须定义一个变量,在线程函数中去给这个变量赋值,然后jo...

2019-05-17 16:09:18 175

Music player demo

Android 开源实现一个音乐播放器,为初学者体提供帮助。 需要Android Studio 3.X版本

2018-09-06

《Visual C++网络通信编程实用案例精选》配套源码

《Visual C++网络通信编程实用案例精选》配套源码 详细介绍VC++通信编程方法,程序员学习的宝典。

2010-04-18

超级玛丽代码 VC++实现

超级玛丽源代码,在VC++中实现,学习游戏制作的好例子。内含详细的代码解析。

2010-04-18

人脸识别实例VC++实现

一个经典的人脸识别算法实例,提供人脸五官定位具体算法及两种实现流程。对学习算法有一定的帮助。

2010-04-18

Visual C++MFC编程实例

Visual C++MFC编程实例,通过详细介绍VC的功能实现各种控件的操作。

2010-04-12

空空如也

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

TA关注的人

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