- 博客(49)
- 资源 (1)
- 收藏
- 关注
原创 Win32 Socket 使用
Win32 进行网络编程需要使用到 ws2_32.lib 库,它是 Windows Sockets 2 (Winsock2) 的库文件,其主要头文件为winsock2.h。如果使用 Windows.h 头文件则默认包含 winsock.h,他会和 winsock2.h 冲突。可以通过在包含 Windows.h 之前定义宏 WIN32_LEAN_AND_MEAN 来排除一些不常用的 Windows 头文件,这里面就会排除掉 winsock.h
2023-12-23 21:20:56
1472
原创 Win32 多线程使用
Event:用于线程之间的信号通知。一个线程可以通过将事件状态设置为 signaled 来通知其他等待该事件的线程Mutex:用于实现临界区的互斥访问。只允许一个线程访问被互斥量保护的资源,其他线程必须等待。Semaphore:用于控制对一组资源的访问。信号量维护一个计数器,多个线程可以同时访问被信号量保护的资源,但是计数器的值决定了能够同时访问资源的线程数量。
2023-12-23 15:33:17
426
原创 YUV颜色空间与RGB的转换
所以可以对 色度 采用更小的采样率来压缩数据,对亮度采用正常的采样率即可。最大值为 0.701;使 R 为 0 ,其余值为 1,则有最小值 - 0.701,即。值最大为 128,当 R = 0,G = 255,B = 255 时,YUV、Y’UV、YCbCr、YPbPr 都属于YUV颜色模型,其中。对 R、G、B进行归一化,使 R 为 1,其余值为 0 ,则有。,其中 Cb 表示蓝色分量,Cr表示红色分量。在计算机音视频领域中,YUV 一般为。当 R = 255 时,
2023-11-26 19:30:51
1812
原创 RGB颜色空间与BMP格式图片
BMP 全称 Bitmap-File,是微软出的图像文件格式,它没有进行任何压缩,所以可以直观看出每个像素在文件中如何存储。如下是一段命令行程序,作用是截取当前屏幕,并将其保存为BMP文件。
2023-11-12 17:51:09
922
原创 MNIST手写数字识别
MNIST是一个手写体数字的图片数据集,该数据集由美国国家标准与技术研究所(National Institute of Standards and Technology (NIST))发起整理,其包含 60,000 张训练图像和 10,000 张测试图像,每张图片的尺寸为 28 x 28。
2023-09-30 19:36:37
241
原创 梯度下降法
使损失值最小,所以可以从当前的参数取值,一步步的按照损失函数下坡的方向下降,直到走到最低点。第一要保证 loss 是下降的,第二要使得下降的趋势尽可能的快。微积分的基础知识告诉我们:沿着梯度的反方向,是函数值下降最快的方向,所以只需要对损失函数求导,并且沿着。逐步移动,则会找到最佳的。对于一个二元一次函数。,我们只需要知道两个。为任意值,则根据输入。我们称这种求解方法为。我们最终的目的是求得。
2023-09-24 21:52:45
222
原创 复数基本概念
复数是为了解决无法对负数开根号的问题,其为实数的延伸:abi其中 a 、b 为实数,i 为虚数单位,且i2−1。实数 a 称为虚数的实部,b 称为虚数的虚部,实数可以被认为是虚部为零的复数。实部为零且虚部不为零的复数也被称作纯虚数;而实部不为零且虚部也不为零的复数也被称作非纯虚数。
2023-08-27 11:09:36
364
原创 微积分基本概念
微分可以近似地描述当函数自变量的取值作足够小的改变时,函数的值是怎样改变的。微分和导数的区别在于:导数是曲线在那个点的切线斜率,而微分是那个切线的一元线性方程。微分的几何意义:是用局部切线段近似代替曲线段,即非线性函数局部线性化。
2023-08-26 18:47:23
513
原创 导数基本概念
fx−fax−ax−afx−fa表示 f(x) 函数从 x 到 a 的平均变化率,如果使 x 趋近于 a,则表示函数在 a 点的变化率。若有以下极限limx→afx−fax−ax→alimx−afx−faf′af^{'}(a)f′a,也可记作,或者dfdxadxdfa。
2023-08-26 16:33:47
249
原创 Input子系统(一)启动篇
InputThread 会创建 InputThreadImpl ,InputThreadImpl 继承自 libutils 中的 Thread,其会一直运行threadLoop 函数,直到该函数返回 false 则会停止循环。start主线会启动两条线程 InputReader(读取事件)、InputDispatcher(分发事件),并且这两条线程会一直循环执行,不会终止。从流程图可以看出,启动过程的有两条主线:create、start,下面分别针对这两条主线进行源码分析。
2023-03-08 22:42:57
532
原创 Makefile使用
通常情况下,目标会被识别文件,导致会触发一些隐式编译规则。有时为了避免这种情况,需要标识目标为伪目标,即不对应相应的文件,并且不会被识别为顶层目标。中查找 字符串是否存在,如果找到,返回 字符串, 否则返回空字符串。变量定义不能定义在语法规则中的命令中,需要定义在规则之前。,也就是“foo bar”,并为其加下。中的 替换为,返回替换过的字符串。函数调用很像变量的使用,也是以。中的空格,并返回去除后字符串。的目标的依赖文件置成。如上示例,指明了目标从。,并使用C的编译命令。
2023-01-19 14:42:58
169
原创 Android中的SELinux
SELinux (Security Enhanced Linux)是由美国NSA(国安局)和 SCC 开发的 Linux 的一个扩张强制访问控制安全模块,目的是最大限度减少系统中服务进程可访问的资源。Google 在 Android 4.4 上正式添加以 SELinux 为基础的系统安全机制,命名为SEAndroid。SEAndroid 在架构和机制上与 SELinux 完全一样,基于移动设备的特点,SEAndroid 的只是所以移植 SELinux 的一个子集。
2023-01-16 22:21:23
2080
原创 【C标准头文件】<string.h>
从两个字符串的第一个字符开始比较,如果这两个字符相等,那么这两个字符串都会进行下一对字符比较,直到两个字符不相等,然后进行比较大小。如果第一个字符小于第二个字符,就会返回一个小于 0 的整数,等于则返回 0 ,大于则返回一个大于 0 的整数。搜寻的是字符,依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回剩余字符串。搜寻的是字符串,在字符串 str1 中查找第一次出现字符串 str2(不包含空结束字符)的位置开始的字符串。
2023-01-15 22:35:32
131
原创 Binder(二)应用层使用 - AIDL
在使用跨进程通信时(IPC),需要编写大量代码,且很多代码都是模板式的,所以Android定义了AIDL(Android Interface Definition Language)文件来简化 IPC 操作。
2023-01-15 17:08:42
210
原创 Binder(一)基础概念
Binder通信采用C/S架构(Client-Server),从组件视角来说,包含Client、Server、ServiceManager以及binder驱动,其中ServiceManager用于管理系统中的各种服务。无论是注册服务和获取服务的过程都需要ServiceManager,它是Android进程间通信机制Binder的守护进程。
2023-01-15 11:22:50
259
原创 JNI使用入门
JNI 全称 Java Native Interface,Java 本地化接口。即 Java 可以通过 JNI 调用 C/C++ 代码。JNI:JNI是一套编程接口,用来实现Java代码与本地的C/C++代码进行交互;NDK: NDK是Google开发的一套开发和编译工具集,可以生成动态链接库,主要用于Android的JNI开发;扩展:JNI扩展了JVM能力,驱动开发,例如开发一个wifi驱动,可以将手机设置为无限路由;
2023-01-14 21:00:27
1965
原创 OpenGLES(五)EGL环境
EGL是 OpenGLES 和 原生系统窗口 之间的桥梁。在第一篇文章中使用的 View 为,其本质也是,只不过是系统已经提供了封装好的方式。
2023-01-14 20:55:58
911
原创 Android Studio常用快捷键
ctrl+Y 删除行ctrl+D 复制行ctrl+shift+down/up 上下移动选中的代码alt+鼠标左键+拖动 列选择Ctrl+/和Ctrl+Shift+/ 可以注释代码shift+F6 重命名字段或方法名
2016-11-15 10:29:00
203
转载 Java设计模式--观察者模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述观察者(Observer)模式的:观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。
2016-05-26 20:35:55
339
原创 JAVA常用集合类
在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结构和操作(算法)统称为Java集合框架(JavaCollectionFramework)。Java常用集合框架大概可以分为三类List,Set,Map,这里我们将一一介绍他们各自的特点以及他们之间的比较。
2016-04-27 13:28:45
958
原创 JAVA多线程--基本特性
进程:进程是正在运行的程序的实例,它拥有自己独立的地址空间,程序内容和数据。通俗的来讲进程就是一个应用程序。线程:表示程序的执行流程,是CPU调度执行的基本单位,在JAVA 中线程拥有自己的程序计数器,虚拟机栈。同一进程中的线程公用相同的地址空间,同时共享进程锁拥有的内存和其他资源,一个进程可以拥有多个线程。
2016-04-18 15:59:34
383
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人