- 博客(495)
- 资源 (52)
- 问答 (1)
- 收藏
- 关注
原创 iOS Secure Enclave
Secure Enclave 是一个绝对的安全环境,所以存放的当然也是最高机密的数据。那什么数据属于最高机密的数据呢?一般是用户的生物特征信息,比如指纹信息 TouchID、面部信息 FaceID 等。
2021-12-22 17:19:16 5111
原创 常用的加密算法
一、对称加密算法对称加密算法就是传统的用一个密码进行加密和解密。常用的对称加密算法算法密钥长度工作模式填充模式DES56/64ECB/CBC/PCBC/CTR/…NoPadding/PKCS5Padding/…AES128/192/256ECB/CBC/PCBC/CTR/…NoPadding/PKCS5Padding/PKCS7Padding/…IDEA128ECBPKCS5Padding/PKCS7Padding/…密钥长度直接决定加密强度
2021-12-01 11:02:33 7552
原创 国密算法介绍
一、前言加密是通过“加密算法”将明文加密成密文,可以通过“密钥”和“解密算法”将密文还原成明文。密码学中应用最为广泛的三类算法:对称算法(分组密码算法):AES/DES/SM4非对称算法(公钥密码算法):RSA/SM2摘要算法(杂凑算法):MD5/SHA-I/SM3二、国密算法的意义随着金融安全上升到国家安全高度,近年来国家有关机关和监管机构站在国家安全和长远战略的高度提出了推动国密算法应用实施、加强行业安全可控的要求。摆脱对国外技术和产品的过度依赖,建设行业网络安全环境,增强我国行业信息
2021-12-01 11:01:34 14377
原创 鸿蒙网络请求(下):工具类封装和使用
通过上一篇鸿蒙网络请求的教程,了解了网络请求的基本用法,这一篇文章主要是对上一篇鸿蒙网络请求代码的进一步封装,把网络请求封装成一个工具类。1. 网络请求工具类 RequestUtilpackage com.example.hmrequest.util;import ohos.hiviewdfx.HiLog;import ohos.hiviewdfx.HiLogLabel;import ohos.utils.zson.ZSONObject;import java.io.*;import ja
2021-08-05 15:50:29 1979
原创 鸿蒙网络请求(上):网络请求的使用
最近在学习鸿蒙开发,在鸿蒙网络请求这块遇到了困难。鸿蒙官网虽然提供了网络请求的API和代码事例,但是描述的过于简单,基本上就是贴代码,所以对于一个初学者来说,仍然看的是一头雾水。Github上也有很多第三方封装的鸿蒙网络请求框架,但是既然是学习就要从最基础的开始,而且那些网络请求框架大致看了下,感觉比较复杂,不太好下手。小编也是花了大概一周的时间,自己慢慢摸索,才入门了鸿蒙的网络请求。下面将小编的一些学习成果分享给大家,帮助大家少走弯路。一、需要添加网络请求权限在进行鸿蒙网络请求开发时,先要进行网络请求
2021-08-03 17:37:50 5401 1
原创 视频剪辑 图文教程
一米剪辑图文教程一、提取视频功能说明:提取视频是根据抖音视频链接地址提取无水印视频,能无痕提取抖音视频,并保存到自己的相册。图文教程:1、打开抖音app,找到自己想要下载的视频。点击分享按钮,找到 “复制链接” 按钮,然后点击按钮复制抖音链接。2、 点击 “提取视频” ,然后在文本框中输入刚刚在抖音复制的抖音链接,再点击 “提取视频” 按钮。3、等待视频解析完之后,直接点击 “导出到相册”,无水印视频就下载到相册了。...
2021-07-19 11:29:03 14166
原创 Android JNI开发一: JNI基础知识
JNI基础知识Android系统底层的框架大多采用的是C或者C++语言实现的,但是Android上层的框架是采用Java实现的,所以我们平常进行Android也是采用Java语言开发。虽然Android底层采用C或者C++实现,但是我们在进行Android开发的时候,却不能直接调用C或者C++,而是需要采用JNI来调用C或者C++,下面小编就为大家介绍什么是JNI?以及怎么使用JNI来实现调用C或者C++语言。一、JNI 介绍1.1 简介JNI 即 Java Native Interface,通俗的
2021-07-16 10:32:22 1920
原创 Android JNI开发四: 鸿蒙JNI开发
一、JNI1.1 创建工程用 DevEco Studio 创建一个新的工程,我的 DevEco Studio 版本为2.1。创建工程第一步的时候,需要选择模版,请选择 Native C++ 这个模版。这个模版为我们提供了JNI开发的环境,我们在这个模版里可以更容易的使用JNI 去调用C语言代码。(1) 创建工程第一步:选择 Native C++ 模版,如下图所示:(2) 创建工程第二步:填写项目名称、项目存放目录,如下图所示:建议填写project name和小编的一样,因为后面的一些配置和包
2021-07-14 11:48:22 1839
原创 Android JNI开发三: SO库的使用
本篇主要介绍如何在普通的安卓工程中使用编译好的SO库文件。首先,新建一个普通的安卓项目工程,我的工程名叫SOTest。项目工程建好后,就将SO库引入到工程中。2.1 将SO库引入工程中在不同的CPU架构下,会被编译成不同的SO库,所以我们需要将整个的lib文件拷贝至我们的项目工程中。SO库需要拷贝到app目录下,路径一定要正确,否则有可能出现因为路径不对而加载不到SO库。2.2 配置SO库的路径在build.gradle文件中添加so库的路径配置和依赖配置,如下图所示:配置代码:
2021-07-09 16:58:24 5059 5
原创 Android JNI开发二: 如何生成SO库
1.tail假定日志文件为catalina.logtail -f catalina.log 该命令用来的查看动态的日志信息tail -fn 200 catalina.log 查看最后200行日志,且动态显示tail -f catalina.log | grep '过滤字符串' 显示存在需要过滤的字符串的行的动态的日志信息2.grepgrep '过滤字符串' catalina.log 从日志文件中过滤出字符串grep -r '过滤字符串' ./...
2021-07-09 16:50:45 3112 2
原创 WKWebView生成PDF
在使用 WKWebView 将网页内容保存为 PDF 文件时,您可以设置打印页面的大小和可打印区域,以确保生成的 PDF 文件符合您的需求。在 WKWebView 中,您可以使用 UIPrintPageRenderer 类的 paperRect 和 printableRect 属性来设置页面的大小和可打印区域。
2024-04-08 21:21:47 625
原创 WKWebView的使用
在iOS中,WKWebView是WebKit框架提供的一个用于展示网页内容的控件,相比UIWebView有更好的性能和功能。
2024-04-08 21:21:09 566
原创 TypeScript快速入门
ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。要了解什么是ArkTS,我们首先要了解下ArkTS、TypeScript和JavaScript之间的关系:JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。
2024-04-05 17:15:53 1222
原创 Swift 代码注释的使用
在 iOS 开发中,代码注释是一种很好的实践,可以帮助他人更容易理解你的代码。通常可以在代码中使用注释来解释代码的功能、目的、实现细节等。通过添加适当的注释,可以提高代码的可读性和可维护性,帮助团队成员更好地理解和使用代码。
2024-04-05 08:15:00 302
原创 2.Swift基础控件:图标文字按钮
*枚举 设置 图片的位置*//**type :image 的位置Space :图片文字之间的间距*/break;break;break;break;
2024-04-04 21:38:42 658
原创 1.Swift基础控件:TableView列表
在 iOS 开发中,UITableView 是一个常用的界面组件,用于显示列表型数据。UITableView 可以展示大量数据,并支持滚动、分组、选择等功能,是开发 iOS 应用中常见的组件之一。分组显示:UITableView 可以按照分组的方式显示数据,每个分组可以有一个 header 和一个 footer。可定制的单元格:UITableView 中的每个单元格可以自定义样式,包括文本、图像、按钮等。滚动和重用机制:UITableView 支持滚动功能,并且具有重用机制,可以重复使用单元格,提高性能。
2024-04-04 21:36:29 1144
原创 ElementUI+sortablejs实现列表拖拽功能
SortableJS 是一个用于实现拖放排序功能的 JavaScript 库,可以帮助开发者轻松地实现拖拽元素重新排序的功能。以下是 SortableJS 的基本用法。
2024-03-20 08:00:00 454
原创 iOS Bonjour介绍
Bonjour 是苹果提供的一种零配置网络服务发现技术,可以帮助设备在局域网内自动发现和连接到其他设备。使用 Bonjour 技术可以让开发者更容易地实现设备间的网络通信,无需手动配置 IP 地址或端口号。在 iOS 应用程序中,您可以使用 Bonjour 框架来实现局域网内设备搜索和服务发现。
2024-03-19 08:00:00 553
原创 iOS通过wifi连接硬件设备
app连接硬件,通过socket通信,通过socket设置ssid和密码,在各式各样的硬件上植入软ap,再利用手机连接软ap配置路由的ssid和密码, 然后智能硬件就可以自行连接了路由器了,也就实现了上网的功能.硬件中的软ap连接路由器后,通过我们自己的服务器处理,手机通过4G网络也能够控制智能硬件了。假设您的应用需要连接到家庭智能灯泡,用户可以通过应用控制灯泡的亮度和颜色。:智能设备成功连接到 Wi-Fi 网络后,用户的设备也会自动断开与智能设备创建的热点的连接,切换到指定的 Wi-Fi 网络上。
2024-03-19 08:00:00 1521
原创 Vue列表渲染
在Vue.js中,列表渲染是一种常见的操作,用于动态地渲染数组或对象中的数据到页面上。Vue提供了v-for指令来实现列表渲染,让我们可以轻松地遍历数据并生成对应的DOM元素。
2024-03-18 09:00:00 514
原创 Vue生命周期
在开发过程中,可以根据不同的需求在这些生命周期钩子函数中添加自定义逻辑,实现更灵活的控制和交互。Vue生命周期的理解对于开发Vue.js应用程序非常重要,可以帮助我们更好地管理组件和数据的生命周期。在Vue.js中,组件实例有一个完整的生命周期,包括创建、挂载、更新和销毁等阶段。Vue生命周期钩子函数允许我们在组件不同阶段添加自定义逻辑。这些生命周期函数可以帮助我们更好地理解组件的生命周期流程,并在需要时执行相应的操作。在Vue.js中,生命周期函数是一系列钩子函数,用于在组件不同阶段执行特定逻辑。
2024-03-17 12:28:52 675
原创 Vue动态绑定Class与Style
这样可以根据数据的变化来动态改变元素的样式,实现更灵活的样式控制。通过数组语法,可以根据多个条件的组合来决定元素应该添加哪些类,实现更复杂的样式控制。通过数组语法,可以根据多个条件的组合来决定元素应该具有哪些样式,实现更灵活的样式控制。这样,我们可以根据多个条件的组合来动态控制元素的样式,使页面更具交互性和灵活性。数组语法,可以实现更复杂的样式控制,根据多个条件的组合来动态改变元素的样式,满足不同的需求。通过数组语法,可以根据多个条件的组合来动态控制元素的样式,实现更灵活的样式控制。
2024-03-17 12:22:11 4987
原创 iOS高级理论:CocoaAsyncSocket 介绍与使用
CocoaAsyncSocket为Mac和iOS提供了易于使用和功能强大的异步套接字库,主要包含两个类:GCDAsyncSocket:用GCD搭建的基于TCP/IP协议的socket网络库GCDAsyncUdpSocket:用GCD搭建的基于UDP/IP协议的socket网络库.本文主要介绍 GCDAsyncSocket的使用,他是一个TCP库,建在Grand Central Dispatch上面的。TCP是面向连接的,面向流的,提供高可靠性服务。
2024-02-29 22:49:36 1853
原创 iOS高级理论:UDP的介绍和使用
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。
2024-02-29 22:48:33 1379
原创 iOS高级理论:内存管理
在 iOS 应用开发中,内存管理是非常重要的一个方面,合理管理内存可以避免内存泄漏和内存过度消耗,提高应用的性能和稳定性。iOS 中的内存管理主要是通过引用计数(reference counting)和自动释放池(autorelease pool)来实现的。
2024-02-28 09:30:00 1272
原创 iOS高级理论:RunLoop
在 iOS 开发中,Runloop(运行循环)是一个重要的概念,它负责处理事件和消息,保证程序在不间断地处理事件的同时保持活动状态。Runloop 是一个事件处理的机制,负责管理事件源和定时器,确保应用程序在不同状态下能够正常运行。RunLoop 实际上是一个对象,这个对象在循环中用来处理程序运行过程中出现的各种事件(比如说触摸事件、UI刷新事件、定时器事件、Selector事件),从而保持程序的持续运行。RunLoop 在没有事件处理的时候,会使线程进入睡眠模式,从而节省 CPU 资源,提高程序性能。
2024-02-28 09:00:00 1087
原创 iOS高级理论:KVO与KVC
总的来说,KVC 和 KVO 是 Objective-C 中的两个强大特性,可以帮助我们简化代码、实现数据观察和实现灵活的数据访问。KVC 是一种通过键(Key)来访问对象的属性值的机制,可以绕过访问器方法(getter 和 setter)直接访问对象的属性。在一个简单的用户信息展示页面上,我们可以使用 KVC 实现数据绑定,将用户对象的属性与界面上的标签进行关联。在一个多页面的应用中,当某个对象的属性值发生变化时,我们可以使用 KVO 来实现数据的同步更新。方法,可以实现自定义的数据转换逻辑。
2024-02-27 14:00:00 2104
原创 iOS高级理论:面对对象
OC中是这么做的,如果想让一个方法不被外界访问的话,只需要在.m文件中实现这个方法,不要在头文件中进行定义,说白了就是:该方法有实现,没定义,这样外界在导入头文件的时候,是没有这个方法的,但是这个方法我们可以在自己的.m文件中进行使用。但是这里要注意的是:OC中的方法是没有修饰符的概念的,这个和Java有很大的区别,一般都是公开访问的,即public的,但是我们怎么做到让OC中的一个方法不能被外界访问呢?继承是类中的一个重要的特性,他的出现使得我们没必要别写重复的代码,可重用性很高。
2024-02-27 09:49:33 867
原创 iOS高级理论:分类和扩展
在 iOS 开发中,分类(Category)和扩展(Extension)是两种常用的机制,用于对现有类进行扩展和增强。它们可以为现有类添加新的方法、属性或协议,而无需修改原始类的源代码。
2024-02-27 09:48:50 1880
原创 iOS高级理论:Runtime应用
创建一个UIViewController的分类,重写自定义的ViewDidAppear方法,并在其+load方法中实现ViewDidAppear方法的交换。(2) 开发中常需要在不改变某个类的前提下为其添加一个新的属性,尤其是为系统的类添加新的属性,这个时候就可以利用Runtime的关联对象(Associated Objects)来为分类添加新的属性了。通过使用 Runtime 遍历类的属性,我们可以实现一个通用的归档和解档方法,而无需手动编写大量的归档代码。方法则对归档的数据进行解档,恢复对象的状态。
2024-02-26 09:37:52 938
原创 iOS高级理论:Runtime介绍和使用
iOS Runtime 是 Objective-C 的运行时系统,它是一个动态的库,提供了一系列 C 函数和数据结构,用于实现 Objective-C 的动态特性。在 iOS 开发中,Runtime 提供了许多强大的功能,例如动态添加类和方法、消息转发、关联对象等。
2024-02-26 09:37:07 980
原创 iOS高级理论: Block介绍和使用
在 iOS 开发中,Block 是一种闭包(Closure)的概念,可以将一段代码块作为一个对象进行传递和存储,类似于函数指针。Block 可以捕获其定义时所在范围内的变量,并在需要的时候执行这段代码块。Block 的使用可以方便地实现回调、异步操作、事件处理等功能。
2024-02-25 17:36:37 2738
原创 iOS高级理论:常用的架构模式
在 iOS 开发中,常用的架构模式有以下几种:MVC(Model-View-Controller)模式:是 iOS 开发中最常见的架构模式。在 MVC 模式中,Model 负责数据处理和业务逻辑,View 负责界面展示,Controller 负责协调 Model 和 View 之间的交互。虽然 MVC 模式简单易懂,但在复杂项目中可能导致 Controller 过于臃肿,难以维护。
2024-02-24 17:30:22 1943
原创 iOS高级理论:多线程专题 - (2) GCD信号量的应
这样做的目的是保证在请求结果没有返回之前,一直让线程等待在那里,这样一个线程的任务一直在等待,就不会算作完成,notify的内容也就不会执行了,直到每个请求的结果都返回了,线程任务才能够结束,这时候notify也才能够执行。对计算机了解的都会知道信号量的作用,当我们多个线程要访问同一个资源的时候,往往会设置一个信号量,当信号量大于0的时候,新的线程可以去操作这个资源,操作时信号量-1,操作完后信号量+1,当信号量等于0的时候,必须等待,所以通过控制信号量,我们可以控制能够同时进行的并发数。
2024-02-24 10:51:35 1224
原创 iOS面试:4.多线程GCD
进程是指在系统中正在运行的一个应用程序。对于电脑而已,你打开一个软件,就相当于开启了一个进程。对于手机而已,你打开了一个APP,就相当于开启了一个进程。线程是进程的基本执行单位。一个进程中至少会有一条线程,当然也可能会有多条线程。比如你使用QQ音乐听歌,系统会创建一条线程去播放音乐。使用QQ音乐下载歌曲,系统会创建一条线程去下载歌曲。这两个操作是可以同时进行的,也就说一个进程中可以同时运行多条线程。
2024-02-23 17:27:50 2240
原创 iOS面试:3.Object-C相关
需要注意的是,Objective-C 的编译过程中还涉及到 Objective-C 运行时库的支持,因为 Objective-C 是一种动态语言,它需要在运行时进行方法调度、消息传递等操作,这些都依赖于 Objective-C 运行时库的支持。在 Objective-C 中,可以将一个 B 类型的对象赋值给 A 类型,因为 Objective-C 是一种动态类型的语言,它使用的是指针来引用对象,而不是直接操作对象本身。在动态类型语言中,变量的类型是在运行时确定的,而不是在编译时确定的。
2024-02-23 17:27:03 1083
原创 iOS面试:2.操作系统
虚拟内存是计算机系统中的一种技术,它允许操作系统将部分硬盘空间用作临时的内存扩展,以满足程序运行时的内存需求。虚拟内存的主要作用是扩展计算机的内存空间,使得系统能够同时运行更多的程序或处理更大的数据集,从而提高系统的性能和稳定性。内存扩展虚拟内存允许操作系统将硬盘空间用作临时的内存扩展,当物理内存不足时,系统可以将部分不常用的内存数据暂时存储到硬盘上,从而释放物理内存供其他程序使用。多任务处理虚拟内存使得系统能够同时运行多个程序,每个程序都可以独立地占用一定的虚拟内存空间,而不会相互干扰。
2024-02-21 20:44:36 864
原创 iOS面试:1.计算机网络
HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超文本数据(如 HTML 文档、图片、视频等)的应用层协议,是互联网上应用最为广泛的协议之一。HTTP协议建立在TCP协议之上,通过在客户端和服务器之间传输数据来实现通信。无连接性:HTTP 是一种无连接的协议,即每个请求和响应之间是相互独立的,服务器在处理完一个请求后会关闭连接。这种无连接性可以减少服务器的负担,但也会增加建立和关闭连接的开销。无状态性。
2024-02-21 20:43:53 1323
substrate.h
2017-05-23
自定义DatePicker
2016-01-18
iOS 广告轮播
2015-09-22
实现上图标下文字,左图标右文字,右文字左图标设置的按钮
2022-11-29
iOS列表自动刷新(结合websocket实现,简单实用)
2022-11-23
MJRefresh无感刷新
2022-07-11
MJRefresh自定义动画
2022-07-11
iOS OSS如何批量上传多张高质量图片???求大神指导
2017-09-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人