自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RSSI定位算法

定位终端接收到iBeacon基站发来的信号强度,然后根据无线信号强度的渐变模型得出基站与被定位终端的直线距离,然后再根据高度补偿法,得出基站与终端的平面距离,当终端接收到三个以上不同基站的信号,即能得出与三个以上不同基站的水平距离,且这些基站的坐标坐标已知,就可以对这个终端进行定位。

2024-08-19 10:24:34 788

原创 蓝牙设备中的UUID

蓝牙设备的ID,通过此ID可以进行连接蓝牙设备,连接成功之后可以获取serviceUUID,serviceUUID可以有多个,每个serviceUUID可以看作是服务,每个serviceUUID中可以定义多个characteristics uuid(特征值)。特定的:{0000xxxx-0000-1000-8000-00805F9B34FB}Service UUID已经有了很多特定的,也可以自己定义。Device UUID也可以被称作为DeviceID。

2024-05-29 15:52:12 1440

原创 HarmonyOS:Preferences每次启动都会清除

在第一次启动应用时,手动存储了一些测试数据,并利用Preferences将相关信息持久化地存储到设备中。第二次在该设备上运行同一应用时会判断是否存在该文件。但调试时发现:每次重新启动应用后相关文件都被删除了,数据都为空。

2024-04-28 14:31:58 300

原创 HarmonyOS开发 - hilog日志系统

harmony OS提供了系统日志打印 hilog开发者可以通过使用这些接口实现日志相关功能,输出日志时可以指定日志类型、所属业务领域、日志TAG标识、日志级别等。

2024-04-22 13:43:44 443

原创 HarmonyOS-静态库(SDK)的创建和使用

在HarmonyOS中,静态库(通常以.har为文件扩展名)是一种用于代码和资源共享的机制。它允许开发者创建可重用的组件、接口和资源,以便在多个应用中共享和复用。

2024-04-19 10:26:24 1194

原创 Swift 中的 async/await

async-await 是在 WWDC 2021 期间的 Swift 5.5 中的结构化并发变化的一部分。Swift 中的并发性意味着允许多段代码同时运行。这是一个非常简化的描述,但它应该让你知道 Swift 中的并发性对你的应用程序的性能是多么重要。有了新的 async 方法和 await 语句,我们可以定义方法来进行异步工作。使用 async-await 方法调用的结构化并发使得执行顺序的推理更加容易。方法是线性执行的,不用像闭包那样来回走动。// 1. 调用这个方法// 3. 异步方法内容返回。

2024-04-10 10:39:34 1545

原创 蓝牙HID协议

The Human Interface Device (HID) ,即人机交互设备。定义了蓝牙在人机接口设备中的协议、特征和使用规程。典型的应用包括蓝牙鼠标、蓝牙键盘、蓝牙游戏手柄等。该协议改编自USB HID Protocol。host和device是USB中的角色概念H OST相当于PC主机,device相当于鼠标、键盘这些USB外设ble hid中,可以看做蓝牙设备就是device,手机就是host。

2024-04-07 11:23:02 1531

原创 SDK does not contain ‘libarclite‘ at the path ‘‘try increasing the minimum deployment target

升级Xcode 15后有的SDK会报出以下错误在真机运行会提示 libarclite_iphone.a 缺少从错误信息看是缺少指定文件。

2024-03-21 16:19:41 1893

原创 面试题 -- 算法问题

顺序存储方式把逻辑上相邻的节点存储在物理位置撒花姑娘相邻的存储单元里,节点间的逻辑关系由存储单元的邻接关系来体现。3、索引存储方式:索引存储方式是采用附加的索引表的方式来存储节点信息的一种存储方式。2、链接存储方式:链接存储方式比较灵活,不要求逻辑上相邻的节点在物理位置上相邻,节点间的逻辑关系由附加的引用字段来表示。稠密索引:这种方式中每个节点在索引表中都有一个索引项,其中索引项的地址知识节点所在的存储位置。4、散列存储方式:散列存储方式是根据节点的关键字直接计算出该节点的存储地址的一种存储方式。

2024-03-06 14:27:25 945

原创 面试题 -- 内存管理

在编译期,ARC用的是更底层的C接口实现的retain/release/autorelease,这样做性能更好,也是为什么不能再ARC下手动retain/release/autorelease,同时对同一上下文的同一对象的成对retain/release操作进行优化(即忽略掉不必要的操作);全局变量和静态变量是放在一起的,初始化的全局变量和静态变量存放在一块区域,未初始化的全局变量和静态变量在相邻的另一块区域,程序结束后由系统释放。堆的操作方式与数据结构中的堆不同,操作方式类似于链表。

2024-03-06 14:16:38 636

原创 面试题 -- UI控件

Auto Layout的本质是用一些约束条件对元素进行约束,从而让他们显示在我们想让他们显示的地方。指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。

2024-03-06 13:57:33 490

原创 swift 长按桌面图标弹出快捷选项

UIApplicationShortcutItem:可以看作是3D Touch点击后,弹出菜单每行对应的模型,一行对应一个。主屏交互:就是在手机的桌面页,用力的按压(当然别太用力。按碎了屏幕)应用图标,生成的几个快捷操作按钮的。3D Touch通过屏幕下方的压力感应器来感知不同的压力触控,从而提供预览、操作或关联菜单等功能。动态添加时就是我们可以通过生成shortcutItem对象数组,添加给。在工程的info.plist文件中添加相关的属性。主屏交互的按钮有指定的模型类,,快捷按钮的唯一标示符。

2024-03-01 16:18:24 1305

原创 swift -- 系统语音识别(转文字)

系统语音识别API,支持iOS10级以上的版本,需要麦克风权限和语音识别权限。

2024-02-26 10:52:58 762

原创 HarmonyOS学习--三方库

ohos/lottie是基于lottie-web开发,集成在三方库社区内的开源版本,是HarmonyOS系统中复杂动画的一种解决方案。安装完成后在根目录下的oh-package.json5中,可以找到lottie。以lottie示例使用三方库。

2024-02-21 14:13:40 1898

原创 Harmony学习 -- 网络管理

官网地址​​HTTP数据请求​​:通过HTTP发起一个数据请求。​​WebSocket连接​​:使用WebSocket建立服务器与客户端的双向连接。​​Socket连接​​:通过Socket进行数据传输。应用通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。

2024-02-05 10:51:44 1070

原创 HarmonyOS常用基础组件

TabContent的tabBar属性除了支持string类型,还支持使用@Builder装饰器修饰的函数。@Entry@ComponentColumn() {})build() {.tabBar(this.TabBuilder('首页', 0, $r('app.media.home_selected'), $r('app.media.home_normal')))

2024-02-04 15:33:32 1864

原创 前端开发-按钮

就是直接在wxml文件中设置,如上述代码,直接设置style,当宽度设置合适,按钮会自动并入一排(并列)图片样式可以在wxss文件的class=btn-img中进行设置。这里的按钮宽度在wxss文件中设置不了,这里有一个方法可以设置。其实和HTML很像,wxss文件如下。重点是type=“primary”其实就是按钮颜色为绿色。按钮有一些系统的样式。

2024-02-02 10:29:20 362

原创 ECC算法学习(二)Security加密函数

Secure Enclave 与主处理器隔离,以提供额外的安全层,即使在应用处理器内核受到威胁时也能确保敏感用户数据的安全。虽然 Secure Enclave 不包括存储,但它有一种机制可以将信息安全地存储在附加存储上,该存储与应用处理器和操作系统使用的 NAND 闪存分开。函数直接在 Secure Enclave 上生成,并将参数字典中的 kSecAttrTokenID 密钥设置为 kSecAttrTokenIDSecureEnclave。

2024-02-02 10:13:42 511

原创 iOS 后台任务总结

并且,即使你的 APP 已经挂掉啦,下载任务还是会继续,等到下载完成啦,系统会唤起你的 APP 进程,并通知你,但如果是用户主动杀掉的你的进程,那么系统会自动取消下载任务。,你需要在这个回调里检查是否有新内容可用,如果有,就开启后台下载,推荐使用 NSURLSession 来建立,下载完成后,你必须调用这个方法出入 的 completionHandler 并传入一个 整型值 来表示 你的处理是否正常,UI是否已经更新,让系统来决定更新 snapshot等;但我看介绍,跟前面讲解的 后台下载文件没啥区别啊!

2024-01-31 16:50:17 1200

原创 iOS推送通知

推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能。是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的。一般说来,当要显示消息或下载数据的时候,通知是由远程服务器(程序的提供者)发送,然后通过苹果的推送通知服务(Apple Push Notification Service,简称APNS)推送到设备的程序上。直接由应用程序(程序中写入对应代码)给用户发出通知本地通知需要用到一个重要的类:本地通知的实现步骤:(1)创建本地通知。

2024-01-25 14:20:15 1939

原创 Xcode查看APP文件目录

点击window -> Devices and Simulatores。

2024-01-22 15:07:06 1055

原创 Swift 分类继承

在SDK中有打印日志的公共方法,需要将打印的内容透传给外部APP调用,使APP可以自由拦截日志打印,从而可以根据APP的需要使用日志调试工具。

2024-01-19 11:01:28 532

原创 MySQL数据库进阶

重要的是注意到,访问控制的目的不仅仅是防止用户的恶意企图。数据梦魇更为常见的是无意识错误的结果,如错打MySQL语句,在不合适的数据库中操作或其他一些用户错误。MySQL在这个问题发生时报告错误,但由于多数MySQL服务器是作为系统进程或服务自动启动的,这些消息可能看不到。:(transaction processing)可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行。事务处理是一种机制,用来管理必须成批执行的MySQL操作,以保证数据库不包含不完整的操作结果。

2024-01-17 09:39:26 901

原创 MySQL视图、存储、游标、触发器

存储过程的代码位于BEGIN和END语句内,它们是一系列SELECT语句,用来检索值,然后保存到相应的变量(通过指定INTO关键字)游标(cursor)是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。就是当我们在Navicat中建立自己的连接并打开后你会发现,它自带了几个数据库,而且数据库中含有很多表,那些就是系统表,而且当你在那些自带的数据库中建表的时候,我们的系统也会将那些表认为是系统表。利用视图,可一次性编写基础的SQL,然后根据需要多次使用。

2024-01-16 15:36:41 1146

原创 MySQL插入、更新和删除

在你使用CREATE TABLE语句时,该引擎具体创建表,而在你使用SELECT语句或进行其他数据库处理时,该引擎在内部处理你的请求。它使用的是列的位置,因此SELECT中的第一列(不管其列名)将用来填充表列中指定的第一个列,第二列将用来填充表列中指定的第二个列,如此等等。如果要防止意外覆盖已有的表,SQL要求首先手工删除该表(请参阅后面的小节),然后再重建它,而不是简单地用创建表语句覆盖它。不允许NULL值的列不接受该列没有值的行,换句话说,在插入或更新行时,该列必须有值。但是,不一定要求列名匹配。

2024-01-12 16:29:05 1511

原创 数据库SELECT语句

这样,MySQL可以快速有效地决定哪些词匹配(哪些行包含它们),哪些词不匹配,它们匹配的频率,等等。当SQL看到上述WHERE子句时,它理解为由供应商1002制造的任何价格为10美元(含)以上的产品,或者由供应商1003制造的任何产品,而不管其价格如何。这是一个重要的区别,WHERE排除的行不包括在分组中。在使用OUTER JOIN语法时,必须使用RIGHT或LEFT关键字指定包括其所有行的表(RIGHT指出的是OUTER JOIN右边的表,而LEFT指出的是OUTER JOIN左边的表)。

2024-01-12 14:00:06 1671

原创 Mac创建本地数据库并连接

错误的原因是由于从mysql5.7版本之后,验证方式默认从原来的mysql_native_password改成了caching_sha2_password,你如果下载安装的是最新的版本,那就会有这个问题。如果是安装包安装的5.7及以前版本则不存在此问题。可以在本地“系统偏好设置”最下方,查看自己的MySql服务是否正常。包含两个脚本 create.sql 和 populate.sql.在客户端运行脚本可以创建出样例表。可以选择默认配置安装数据库。如果提示连接失败,可以尝试。

2024-01-10 14:15:52 1253

原创 iOS手机查看蓝牙底层日志

packketlogger将开始跟踪此配置文件安装的iOS设备上的所有蓝牙活动。在这个iOS设备屏幕的左上角,将显示一个脉冲图标(见下图)。这意味着跟踪正在进行中。,下载安装 Additional Tools ,点击Hardware,点击packetLogger应用。连接设备,点击File-》New iOS Trace,打开一个新窗口。在浏览器中点击Profile,下载文件。在App Store下载Xcode。在设置中找到描述文件,点击安装。在手机浏览器打开链接。

2024-01-04 11:11:44 1630

原创 CLLocationManager代理不执行问题

后是无法定位的,任何代理函数都不会被调用,而且表面上还会有提示是否定位的MessageBox,一切看起来都正常,就是代理不会执行。似乎定位的返回(调用代理)只能有主线程来调用,并且这个对象还必须是在主线程创建的。在iOS中 CLLocationManager 定位功能可以初始化多个,当位置变化,或其他代理执行时,多个类中的代理方法都会执行。如果是子线程中创建CLLocationManager,那么。

2023-12-28 11:37:51 553 1

原创 iOS 应用在前台时显示通知

在iOS应用中,当应用在前台运行时,是不会默认弹出通知的。这是iOS的设计决定,以避免用户在使用应用的过程中被打扰。然而,如果你希望在应用在前台的时候也能收到通知,你可以在你的应用代码中进行一些修改。

2023-12-19 14:43:41 1608

原创 iOS 定位问题解决方法整理

文章目录一、Assertion failure in -[CLLocationManager setAllowsBackgroundLocationUpdates:]一、Assertion failure in -[CLLocationManager setAllowsBackgroundLocationUpdates:]后台定位权限没有开启错误描述:错误原因:定位管理中设置了后台定位开启allowsBackgroundLocationUpdates,而在background Mode中没有勾选

2023-12-12 10:04:25 556

原创 Swift下如何使用#if条件编译

OC中可以使用宏定义,再使用条件编译。

2023-11-28 13:52:20 903

原创 Mac收集的几个终端命令

转UTF-8编码格式打tag 包 命令:压缩加密文件显示隐藏文件取消Mac电脑安全模式

2023-11-01 13:43:30 439

原创 蓝牙服务:优化体验,提高连接效率

在现有的蓝牙技术中,连接的稳定性是非常关键的,因为如果连接不稳定,可能会导致音频或数据传输出现问题。要提高蓝牙服务的连接效率,我们需要通过优化蓝牙连接的过程来达到这个目的。其次,我们应该优化配对的过程,使得用户只需要在第一次连接时配对,之后的连接就不需要再进行配对。最后,我们需要增加连接尝试的次数,这也是提高连接效率的重要方法。这个缓存机制可以帮助我们存储已经配对的设备信息,当用户再一次连接这些设备时,我们就可以直接调用缓存中的信息,而不需要进行重新配对。

2023-11-01 13:33:15 482

原创 Git(SourceTree)变基操作使用

变基就是rebase操作。

2023-10-27 17:51:45 1318

原创 iBeacon设备信号距离测算

所获得的iBeacon在CoreLocation里以CLBeacon表示,其中有RSSI值(接收信号强度),可以用来计算发射端和接收端间距离。利用CoreLocation.framework很容易扫描获得周边蓝牙设备,苹果开源代码AirLocate有具体实现,由于所处环境不同,每台发射源(蓝牙设备)对应参数值都不一样。按道理,公式里的每项参数都应该做实验(校准)获得。传入RSSI值,返回距离(单位:米)。其中,A参数赋了59,n赋了2.0。当你不知道周围[蓝牙]设备准确位置时,只能给A和n赋经验值。

2023-10-25 11:20:11 351

原创 Python -- I/O编程

整个流程无锁,由一个线程执行,produce和consumer协作完成任务,所以称为“协程”,而非线程的抢占式多任务。写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符’w’或者’wb’表示写文本文件或写二进制文件。如果是posix,说明系统是Linux、Unix或Mac OS X,如果是nt,就是Windows系统。协程,又称微线程,纤程。标示符’r’表示读,这样,我们就成功地打开了一个文件。Python内置了读写文件的函数,用法和C是兼容的。把yield from替换为await。

2023-10-20 17:06:54 245

原创 Python 错误、调试和测试

允许你指定记录信息的级别,有debug,info,warning,error等几个级别.:使用except时需要注意的是,它不但捕获该类型的错误,还把其子类也“一网打尽”。来运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即。错误有很多种类,如果发生了不同类型的错误,应该由不同的except语句块处理.启动Python的调试器pdb,让程序以单步方式运行,可以随时查看运行状态。,和assert比,logging不会抛出错误,而且可以输出到文件.语句块,至此,执行完毕。

2023-10-19 18:15:48 119

原创 Python面向对象编程

当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。当子类和父类都存在相同的run()方法时,我们说,子类的run()覆盖了父类的run(),在代码运行的时候,总是会调用子类的run()。这样,就是:多态。

2023-10-18 18:10:27 300

原创 Python语法

在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。if x >= 0:return xelse:return -x参数检查调用函数时,如果参数个数不对,Python解释器会自动检查出来,并抛出TypeError在Python中,一个.py文件就称之为一个模块(Module)。为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

2023-10-17 17:23:44 428

libarclite运行.a文件

libarclite运行.a文件

2024-03-21

iOS蓝牙功能介绍-蓝牙Demo

蓝牙调试连接Demo

2023-09-19

接口请求调试工具(Postman)

Mac接口请求工具Postman

2023-06-27

SVN和GIT在MAC客户端

包含:Cornerstone v2.7.13 SourceTree客户端

2023-05-17

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

TA关注的人

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