自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(147)
  • 资源 (9)
  • 收藏
  • 关注

原创 【2】Swift Dynamic Island开发

(但是此时可能你的灵动岛没任何反应,锁屏的实时界面没任何内容,这个是正常的,因为还没有增加启动灵动岛的代码呢,)文件的Target Membership 勾选上我们的 App 项目,这样做 App 代码中就可以引用到 Widget 中的内容。(Live Activities)是 iPhone 为了便于用户在退出APP时,仍然能随时关注进行中的活动、高频操作的组件。否则调用 API 的时候会直接报错(最新版本的 Xcode 才能找到这个选项)。结构中,想要实现功能,在对应的View中修改即可。

2024-08-04 18:05:09 1348

原创 swift 纯代码模式 运行第一个DemoAPP

swift 纯代码模式 运行第一个DemoAPP

2024-08-04 17:15:41 206

原创 【iOS】编译二进制文件说明

这个区域提供了各个段(Segment)和节(Section)在可执行文件中的位置和大小。这个区域完整的描述可执行文件中的全部内容。Address + Size + 1 = 下一个section的起始地址。使用Xcode进行编译 ,会生成二进制相关文件,可以更详细看产物的布局。上一部分是对Segment进行了一级划分,分出了Section。展示需要链接的Framework,(下图中的11-17行)的地址是一致的,以此类推,可以获取上面各个节的信息。展示编译后的.o文件,(下图中的3-10行)

2024-06-15 23:39:28 740

原创 【iOS】如何断点看系统方法在哪一个库

Apple底层开源网站:https://opensource.apple.com/按照MacOS->objc4-906 -> 跳转到。上,就可以看到源码了~

2024-06-15 18:32:56 281

原创 深拷贝和浅拷贝

深拷贝 不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经过深拷贝后的指针指向两个不同地址的指针。方法: 如果是非可扩展类对象,则是浅拷贝,如果是可扩展类对象,则是深拷贝。浅拷贝 只是对指针的拷贝,拷贝前后两个指针指向的是同一个内存空间,方法:无论是可扩展类对象函数不可扩展类对象,都是深拷贝。

2024-03-13 23:10:26 407

原创 ARC 的 retainCount 是怎么存储的

的retainCount是存吃在64张哈希表中的,根据哈希算法去查找所在的位置,无需便利。

2024-03-13 23:09:55 391

原创 什么情况使用weak关键字,相比assign有什么不同?

使用 weak 的情形在 ARC中,有可能出现循环引用的问题,这时候解决方案就是让其中一端使用weak来解决,比如delegate代理属性。自身已经对它进行了一次强引用了,没必要再强引用一次,这时候也会使用weak。与assign的区别assign可以用于非OC对象,而weak必须用于OC对象。weak表明该属性定义了一种“非拥有关系”,为这种属性设置新值时,设置方法既不保留新值,也不释放旧值,当属性所指的对象销毁时,属性值会自动清空(nil); 而assign当设置方法只会针对“纯量类型”

2024-03-12 22:34:50 512

原创 iOS应用内的沙盒目录

iOS系统的沙盒机制规定每个应用都只能访问当前沙盒目录下面的文件,在开发中常常需要数据存储的功能,比如存取文件,归档解档等,因此有必要熟悉沙盒目录及其作用。

2024-03-12 21:46:52 388

原创 【工具】Charles 模拟器抓包

这样就可以抓包模拟器上app接口数据了。

2024-03-11 22:56:42 1116

原创 [iOS]高版本MacOS运行低版本Xcode

本地解压Xcode,将外层目录名变更为Xcode_14.3.1,将文件拷贝到。在MacOS Sonoma 系统上安装 Xcode14.3.1。先在Xcode下载一个Xcode14.3.1的压缩包。运行 Xcode 14.3.1。变更xcode-select。

2024-03-11 22:49:39 2548 1

原创 git hooks

当我们在执行git管理仓库代码时,想规范下每个用户的commit内容?想检查下提交的代码规范?想检查下PR是否通过,那么这个时候就需要用到git hooks,git hooks可以在我们进行git操作的关键时机插入我们想要执行的“脚本文件”。git的hooks按照环境分客户端侧(client-side)和服务端侧(server-side)。客户端侧的hook主要用于提交git commit和合并merge命令,而服务端侧的hook主要用于接收push等操作。

2024-01-12 18:29:27 613

原创 Clang-tidy 插件开发

在目录下,执行所属类别 check名字,例如例如,我希望在​objc分类中添加一个能够检测所有超过二级的指针声明,名为custom-check,那么我就在此目录下执行 ./add_new_check.py objc custom-check,就可以看到在objc目录下,自动生成了CustomCheck.h/cpp两个文件并填充了check的默认模板,我们只需要修改这两个文件,然后重复上文所述的编译过程,就可以用到自己的check啦。

2023-11-26 16:44:09 278

原创 华为云云耀云服务器L实例评测| 搭建属于自己的第一个中秋快乐网页

在这里,你也可以一目了然的看到服务器信息,包括公网IP和私网IP,也可在右上角可以简单粗暴的进行开机、关机,远程登陆等操作。在选择服务器系统方面,也有多方面选择,一个是根据应用场景一键部署的小白应用镜像,另一个是专门为极客玩家准备的纯系统镜像,具有极大的选择性和包容性。因为HTTP服务的话,默认为80端口,服务器默认是把所有端口都关闭起来的,我们有需要,需要去服务器的控制面板按照需求开发端口,允许外部操作,,输入我们刚重置后的密码,然后点击“连接”,这样就可以连接到我们的服务器了。怎么样,是不是很简单。

2023-09-16 18:47:49 629

原创 【iOS】Safari开发者工具

当我们向查看模拟器上一个完整的网络请求时,往往需要vConsole,但是不方便调试,那么,Safari的开发者功能就会完美帮助我们解决这个问题。2 打开"开发"->选择模拟器,选择模拟器上的网络请求->可以详细查看请求详情了。3 从应用程序中选中想要查看的请求,这样就可以随心所欲的查看想要的信息了。Safari->首选项->高级->开启“在菜单栏中显示‘开发’菜单”1 在模拟器上访问网络请求。

2023-07-01 16:40:27 1661

原创 为什么要选择云原生数据库

相比于传统数据库,云原生数据库(Cloud-Native Database Systems)提供了更好的访问性和可伸缩性。其是一种通过云平台构建、部署和分发的数据库服务。

2022-06-22 16:48:46 2996 1

原创 XCTF_Web

XCTF_WEB

2022-06-01 18:56:39 293

原创 【log4cpp_学习】3_log4cpp的类介绍

log4cpp

2022-04-21 10:28:46 1298

原创 【log4cpp_学习】2_log4cpp配置文件的使用

log4cpp配置文件

2022-04-15 23:37:47 1647

原创 【log4cpp_学习】1_log4cpp的安装

log4cpp

2022-04-15 20:03:39 850

原创 【微信.dat文件解码png】

【微信.dat文件解码png】

2022-04-13 20:36:12 671

原创 make: warning: Clock skew detected. You build may be incomplete

make: warning: Clock skew detected. You build may be incomplete解决方案:使用date命令可以看到当前系统时间和实际时间有差距,故报的这个错,那么需要更改为最新的时间datedate -s 12/16/2021

2021-12-16 20:47:18 213

原创 14_Nginx_proxy_pass的使用

proxy_pass1. 栗子假设下面四种情况分别用http://192.168.1.1/proxy/tianyiyi.html进行访问1. 第一种location /proxy/{ proxy_pass http://127.0.0.1/;}这个将会代理到URL: http://127.0.0.1/tianyiyi.html第二种(相对于第一种,proxy_pass最后少一个/)location /proxy/{ proxy_pass http://127.0.0.1;}这个将

2021-11-22 10:31:53 1843

原创 13_Nginx_HTTP处理的十一个阶段

1. HTTP请求11个处理阶段介绍Nginx将一个HTTP请求分成多个阶段,以模块为单位进行处理,其将HTTP请求的处理过程分成了11个阶段,每个阶段可以包含任意多个HTTP的模块,并以流水线的方式处理请求,其HTTP阶段如下:typedef enum { NGX_HTTP_POST_READ_PHASE = 0, NGX_HTTP_SERVER_REWRITE_PHASE, NGX_HTTP_FIND_CONFIG_PHASE,

2021-11-17 10:09:29 518

原创 Centos7_升级gcc

源码升级1. 下载gcc源码下载你需要的gcc源码,这里我们安装的是gcc-8.3.0.tar.gz。方式一:打开https://mirror.sergal.org/gnu/gcc/ ,到这个地址去找就可以了。下载自己需要的源码方式二:wget https://mirror.sergal.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz2. 在虚拟机中解压tar -xzvf gcc-4.9.0.tar.gz 然后 cd gcc-4.9.03. 下载gcc需

2021-11-08 11:07:36 834

原创 C++_regex错误_terminate called after throwing an instance of ‘std::regex_error‘

报错在使用C++中的regex(正则表达式)时,发现编译能过,但是在运行到这块代码的时候,报下列错误,。terminate called after throwing an instance of 'std::regex_error' what(): regex_errorAborted解决方案:1. 确定gcc版本gcc版本在4.9+才支持正则表达式。2. 确定添加了头文件#include <regex>测试代码#include <iostream>

2021-11-05 18:02:44 3734

原创 13_构造函数和析构函数的调用时机

1. 拷贝构造函数的调用时机用类的一个对象去初始化另一个对象时当函数的形参是类的对象时(也就是值传递时),如果是引用传递则不会调用当函数的返回值是类的对象或者引用时。

2021-09-06 19:46:59 261

原创 右值引用

右值和左值、左值:在C++11中可以取地址的,有名字的就是左值,反之,不能取地址的、没有名字的就是右值(将亡值或纯右值)右值引用和左值引用左值引用就是对一个左值进行引用的类型。右值引用就是对一个右值进行引用的类型,事实上,由于右值通常不具有名字,我们也只能通过引用的方式找到他的存在。我们可以将一个右值引用绑定到表达式,自勉之常量或者返回右值的表达式,但是不能将右值引用绑定到左值上。右值引用指向将要被销毁的对象变量是左值,因此我们不能把右值引用直接绑定到变量上我们可以销毁一个移后源对象,也可以

2021-09-06 16:32:10 262

转载 一个C++源文件从文本到可执行文件经历的过程

一个C++源文件从文本到可执行文件经历的过程0. 步骤预处理、编译、汇编、链接1. 预处理首先是源代码文件helloworld.cpp和相关头文件预处理成一个.i文件,预处理的过程主要是处理那些源代码文件中只能以“#”开始的预处理命令。g++ -E helloworld.cpp -o helloworld.i1.1. 预处理主要规则如下:将#define删除,并将宏定义展开处理一些条件预编译指令,如#ifndef,#ifdef,#elif,#endif等,将不必要的代码过滤掉。处理#i

2021-08-31 15:05:50 297

原创 HTTPS

HTTPS1. http和https2. https的加密方式3. 对称加密和非对称加密的区别4. 为什么需要CA证书。5. 什么是CA6. DDOS攻击1. http和httpshttp是超文本传输协议,信息是明文传输,https是具有安全性的ssl加密传输协议,http和https使用的是完全不同的连接方式,用的端口也不一样,http是80,https是443,http的连接很简单,是无状态的,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全,htt

2021-08-29 01:01:27 158

转载 C++四种类型转换

C++四种类型转换1. 隐式类型转换2. 显式类型转换2.1 static_cast2.2. dynamic_cast2.3. const_cast2.4. reinterpret_castC++的四种强制类型转换,分别为static_cast、dynamic_cast、const_cast、reinterpret_castC++风格的强制类型转换的好处是,能够更清晰的表明他们要干什么。1. 隐式类型转换大多数表达式中,比int类型小的整型数值首先提升为较大的整数类型在条件中,非布尔值转换为布

2021-08-28 19:46:24 194

原创 Linux下各种特殊进程

Linux下各种特殊进程1. 孤儿进程1.1. 产生原因1.2. demo实现2. 僵尸进程2.1. 产生原因2.2. demo2.3. 子进程如何查看2.3.1 使用top查看僵尸进程2.3.2. 从ps中查看僵尸进程2.4. 如何避免僵尸进程3. 守护进程3.1 什么是守护进程3.2. 创建守护进程步骤3.3. demo1. 孤儿进程1.1. 产生原因父进程结束,子进程还再运行,成为孤儿进程。孤儿进程会被init所领养,init进程会变为孤儿进程的父进程,为了能够释放子进程所占用的资源使用p

2021-08-28 16:46:39 486

转载 IPC_共享内存

IPC_共享内存1. 共享内存的定义2. 共享内存的使用3. 面试题:3.1. 超过共享内存大小限制怎么办。3.2 同一个进程多次进行shmat会出现什么问题4. 共享内存demo5. 总结1. 共享内存的定义共享内存就是允许多个不相关的进程访问同一个逻辑内存,共享内存是在两个正在运行的进程之间共享和传递数据的一种非常邮箱的方式,不同进程之间共享的内存通常安排为同一物理内存,进程可以将同一段内存连接到他们自己的地址空间中,所有进程都可以访问共享内存中的地址。而如果某个进程向共享内存中写入数据,所做的改动

2021-08-28 12:17:20 807

原创 12_智能指针

智能指针0. 普通指针存在的问题0.1 悬垂指针当有多个指针指向同一个基础对象时,如果某个指针delete了该基础对象,对这个指针来说它是明确了它所指的对象被释放掉了,所以她不会再对所指对象进行操作,但是对于剩下的其他指针来说并不清楚所指对象已被删除。1. 为什么会有智能指针C++程序员需要自己善后自己动态开辟的内存,一旦忘记释放,内存就泄露。智能指针可以帮助程序员自动释放自己开辟的内存智能指针将基本类型指针封装为类对象指针,并在析构函数里编写delete语句删除指针指向的内存空间。2. 智

2021-08-23 16:41:30 154

原创 11_哈希表

哈希表1. 冲突解决方案2. 哈希表的查找时间复杂度1. 冲突解决方案线性探查:该元素的哈希值对应的桶不能存放元素时,循序往后一一查找,直到找到一个空桶为止,在查找时也一样。二次探查:该元素的哈希值不能存放元素时,就往后寻找1^2, 2^2个位置双散列函数法:当第一个散列函数发生冲突时,使用第二个散列函数进行哈希,作为步长开链法:在每一个桶中维护一个链表,由元素哈希值寻找到这个桶,然后将元素插入到对应的链表中,‘建立公共溢出区,当发生冲突时,将所有冲突的数据放在公共溢出区。2. 哈希表的查

2021-08-23 11:38:47 80

原创 10_树的问题

二叉查找树1. 特征左子树上所有节点的值均小于或等于他的根节点的值右子树上所有节点的值均大于或等于他的根节点的值左右子树也分别为二叉排序树二叉平衡树(AVL树)1. 介绍AVL树是带有平衡条件的二叉查找树,一般是用平衡因子差值判断是否平衡并通过旋转来实现平衡,左右子树树高不超过1,和红黑树相比,AVL数是严格的平衡二叉树,2. 局限性由于维护这种高度平衡(即所有节点的左右子树高度差绝对值不超过1),不管是执行插入还是删除操作,只要不满足平衡条件,就必须通过旋转来保持平衡,而旋转是非常

2021-08-23 11:25:26 100

转载 09_memcpy的实现

memcpy的实现简单版本/** * @description: * @param {void*} src 原串指针 * @param {void*} dest 目的串指针 * @param {int} len 长度 * @return {*} */void* memcpy(void* src, void* dest, int len){ // 不在函数内申请空间,所以需要进行判断 if(dest == NULL || src == NULL ) {

2021-08-19 10:52:33 68

转载 数据库死锁产生原因及场景

数据库死锁产生原因及场景(1) 什么是数据库死锁(2) 死锁产生的必要条件(3) 如何预防死锁参考链接(1) 什么是数据库死锁两个或者两个以上的事务同时对一批资源占用锁,并形成循环,就会造成事务死锁,(2) 死锁产生的必要条件互斥条件:一个资源每次只能被一个进程/线程使用循环等待:若干个进程/线程之间形成一种头尾相接的循环等待资源关系请求与保持:一个进程因请求资源而阻塞,对已获得的资源保持不放。不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺(3) 如何预防死锁按同一顺序

2021-08-11 16:02:50 2131

转载 Redis_跳跃表

Redis_跳跃表(1) 跳跃表原理(2) 跳表的增删改查时间复杂度(1) 跳跃表原理跳表其实就是一种可以进行二分查找的有序链表,在原有的有序链表的基础上增加多级索引,通过索引来实现快速查找(2) 跳表的增删改查时间复杂度查找元素的时间复杂度:O(logn)删除元素的时间复杂度:O(logn)参考链接:https://blog.csdn.net/weixin_45846560/article/details/117371296...

2021-08-11 15:38:00 95

转载 Nginx问题汇总

Nginx问题汇总(1) 什么是Nginx(2) 为什么用Nginx(3) Nginx的性能为什么这么高(4)Nginx如何处理高并发请求(5) 什么是反向代理和正向代理(6) 什么是负载均衡(7) Nginx限流算法(8) 说明三种限流算法(9) 漏桶流算法和令牌桶算法(9.1) 漏桶流算法(9.2) 令牌桶算法(10) Nginx的负载均衡算法怎么实现的,策略有哪些(11) Nginx的惊群问题(11.1) 惊群问题的产生(11.2) 如何解决惊群问题(11.3) 原理参考链接:(1) 什么是Ngi

2021-08-10 18:21:48 444

转载 MySQL中的锁

(1) 乐观锁每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加锁,但是在更新数据的时候需要判断该数据是否被人修改过,NOTE:比较适合读取操作比较频繁的场景,如果出现大量的写入操作,数据发生冲突的可能性会增大,(2) 悲观锁每次获取数据的时候,都会担心数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用过程中数据不会被别人修改,使用完成后进行数据解锁NOTE:比较适合写入操作比较频繁的场景,如果出现大量的读取操作,每次去都会进行加锁,这样会增

2021-08-10 14:57:19 78

log4cpp-1.1.3.tar.gz源码和测试代码

log4cpp-1.1.3.tar.gz源码和测试代码

2022-04-15

粒子群优化算法 旅行商 python代码

PSO 旅行商

2022-03-28

gcc-8.3.0安装包及依赖包.rar

gcc升级源码文件及相关依赖

2021-11-08

C++面经整理发布版.pdf

C++面经整理发布版.pdf

2021-08-03

WB桌面壁纸高清.jpg

WB桌面壁纸高清

2021-03-24

Windows driver 10(WDK10)

Windows driver 10(WDK10),WDK10驱动开发包,适用于vs2015开发mini-filter driver

2020-12-14

osquery_windows环境编译的工具

cmake-3.19.1-win64-x64.msi、 Git-2.29.2.2-64-bit .exe、 python-3.8.1-amd64.exe、 strawberry-perl-5.30.2.1-64bit.msi、vs_buildtools__714742803.1589532331.exe、vs_community__714742803.1589532331.exe、 osquery-git-2020-12-04.rar、 wix311.exe

2020-12-04

osquery-4.5.1.msi

osquery4.5.1.msi.Windowsd安装版本, 下载后,可直接安装,运行osqueryi。即可使用功能。

2020-12-03

nginx1.19.6.rar

nginx1.19.6.rar

2009-06-12

空空如也

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

TA关注的人

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