自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (3)
  • 收藏
  • 关注

原创 github clone 代码到本地全步骤

由于最近仓库由gitLab转到github,所以可以把代码拉到家里的电脑上来了!一、首先生成SSH密钥:1.$ cd ~/.ssh 查看是否有文件存在 如果没有密钥则不会有此文件夹,有则备份删除 2.$ssh-keygen -t rsa -C [email protected] 后面的是github注册的邮箱账号 回车后会叫你输入github的用户名和密码

2016-02-29 21:12:46 35220

原创 深入了解iOS内存(WWDC 2018)笔记-内存诊断

主要记录下用于分析iOS/macOS 内存问题的笔记。主要分析命令: `vmmap`, `leaks`, `malloc_history`

2024-04-08 17:33:03 1154 1

原创 C++符号清洗、Swift符号清洗, 编译还原

C++ 由于函数重载的原因,针对每个函数符号,假如了的机制。导致堆栈适合机制阅读,因为每个函数符号都是独一无二的,但是这并非程序员易读的文字。比如我们有这个符号crash堆栈。看着很别扭, 这时我们可以使用命令可以看出-->

2024-04-03 17:00:22 414

原创 Qt打印系统库的日志 - QLoggingCategory

Qt的动态库通过源码可以可以看到含有大量的qCInfo和qCDebug等大量的日志, 但是我们正常运行Qt程序,这些动态库或插件里面的日志是不会输出到我们的控制台里面的。所以本章主要记录怎么输出这些日志出来。

2024-03-28 15:37:51 364

原创 MacOS Xcode 使用LLDB调试Qt的 QString

Xcode中显示 预览QString特别不方便, 而Qt官方的lldb脚本一直加载失败,其他第三方的脚本都 不兼容当前的 环境。所以自己研究写了当前的教程。当前方法同样适用于其他非 苹果内置类型的预览和显示。

2024-03-19 14:11:07 680

原创 Xcode调试Qt 源码

在Mac下使用Xcode 开发Qt程序,由于程序断点或者崩溃后,Qt库的堆栈并不能够正确定位到源码的cpp文件,而是显示的是汇编代码,导致不直观的显示。加载的其他三方库都是同理。所以找了攻略和研究后,写的这篇文章。

2024-03-15 17:14:35 702

原创 Sublime Text 格式化Json文件 之 Pretty Json

需要使用到插件Pretty Json。

2024-03-05 10:54:59 870

原创 跨进程通信: Unix Domain Socket 创建实例。 Windows和MacOS代码已适配兼容

具体使用到的Socket方法介绍可以查看本文中的server和client的代码可以直接 复制粘贴到 Windows 或 MacOS 的命令行程序中直接运行。由于 Windows 平台下的创建文章比较少,所以创建了这个demo。可直接在跨平台程序中使用。

2024-01-23 16:45:52 491

原创 macOS跨进程通信: Unix Domain Socket 创建实例

Socket是 网络传输的抽象概念。一般我们常用的有Tcp Socket和UDP Scoket, 和类Unix 系统(包括Mac)独有的(UDX)。Tcp Socket能够跨电脑进行通信,即使是在同一个电脑下的多进程间通信,也会通过网卡进行数据传输,如果本地网卡的环回网络被禁用, 则会导致通信失败。,使用的是Liunx 系统中万物皆文件的概念,和有名管道的操作差不多,都是在文本创建一个特有的文件,用来在两个进程间通信,两个进程分别写入和读取文件流中的数据,达到传输的目的。和Tcp Socket。

2024-01-23 14:42:11 1555

原创 macOS跨进程通信: TCP Socket 创建实例

Socket 是 网络传输的抽象概念。一般我们常用的有Tcp Socket和 Udp Scoket, 和类Unix 系统(包括Mac)独有的(UDX)。Tcp Socket能够跨电脑进行通信,即使是在同一个电脑下的多进程间通信,也会通过网卡进行数据传输,如果本地网卡的环回网络被禁用, 则会导致通信失败。,使用的是Liunx 系统中万物皆文件的概念,和有名管道的操作差不多,都是在文本创建一个特有的文件,用来在两个进程间通信,两个经常分别写入和读取文件流中的数据,达到传输的目的。和Tcp Socket。

2024-01-23 11:26:52 1458

原创 macOS跨进程通信: FIFO(有名管道) 创建实例

在类linux系统中管道分为有名管道和匿名管道。两者都能单方向的跨进程通信。匿名管道(pipe): 必须是父子进程之间,而且子进程只能由父进程fork() 出来的,才能继承父进程的管道句柄,一般mac 开发用的很少。有名管道(fifo): 可以在同一台机器,没有关系的进程间通信。其本质是本地创建一个文件,然后使用其路径作为纽带。open后再内核空间产生管道,不同进程之间分别连接管道的读和写的端口进行通信。

2024-01-03 18:04:07 634

原创 macOS进程间通信的常用技术汇总

macOS进程间通信的常用技术汇总。

2023-12-29 14:36:02 843

原创 macOS跨进程通信: XPC 创建实例

XPC是macOS里苹果官方比较推荐和安全的的进程间通信机制。集成流程简单,但是比较绕。主要需要集成XPC Server这个模块,这个模块最终会被apple的根进程launchd管理和以独立进程的方法唤起和关闭, 我们主app 进程并不需要管理这个进程的生命周期。特点:主要做权限分离和错误隔离使用,使用独立进程的方法,可以避免独立进程crash影响到主进程, 而且独立进程可以和主进程赋予不同的权限,比如是否沙盒,是否有网络权限等。命令可以查看系统使用的xpc服务。下面一张官方图,说明了对应的关系。

2023-12-29 14:08:54 947

原创 Cocoa Mac音频模块关键步骤总结

CoreAudio, AudioHardware,AudioServerPlugIn,AudioToolbox, AudioQueueRef, AudioUnit。

2023-12-13 15:54:54 561

原创 Apple AudioToolbox 之 音频编解码(AudioConverterRef)

今天记录是的是 使用AudioToolbox框架 使用AudioConverterRef工具进行本地音频文件的编码和解码。

2023-08-11 11:29:49 446

原创 macOS coreAudio 之 AudioQueue 播放本地音频文件

macOS CoreAudio 使用记录 之 使用AudioQueue配合AudioFile进行播放macOS 本地音频文件本文打仓库代码为:CoreAudio作为AppleAudioQueueAudioFileBufferAudioQueue。

2023-07-21 11:41:53 670 2

原创 OC 学习记录随笔 之AutoreleasePool

总资料全是随笔 笔记 与 学习资料。没有规律。自动释放池数据结构class AutoreleasePoolPage : private AutoreleasePoolPageData 继承与AutoreleasePoolPageData, 经过综合后的主要结构为:class AutoreleasePoolPage{ magic_t const magic; __unsafe_unretained id *next; //能够存储的 obj 的位置的 指针 p

2022-06-14 11:33:38 272

原创 音视频笔记:ffmepg 基础代码demo(音视频采集、播放、编码、解码、解封装)

本项目主要是用Qt + c++ + ffmpeg 写的音视频采集、播放、编码、解码、解封装的代码demo。每个按钮对应的文件均为相对独立的demo cpp文件。由于代码数量太大,这里就不给出具体代码,只写出具体的流程逻辑,需要代码的可以到github下载

2022-06-01 18:04:19 732 1

原创 音视频笔记:ffmpeg常用命令行

主要用于记录自己主要用于记录常用ffmpeg的命令行。

2022-06-01 16:23:49 860

原创 iOS 签名认证机制回顾与解析

关于前置基础概念: 需要参考加密、签名、证书的基础概念和流程众所周知 iOS 无论开发和发布都需要一堆的证书,那么每个证书的作用是啥呢,它是怎么生成的呢,就是本章主要了解的内容。Apple 本身就是 权威 的CA证书的认证机构。一、证书列表开发中必须包含有以下几种证书:Mac上生成CertificateSigningRequest.certSigningRequest文件上传刚刚的.certSigningRequest文件 生成 ios_development.cer\ios_distribu

2022-01-19 18:39:28 2625 3

原创 加密、签名、证书的基础概念和流程

常用加密算法类型:加密算法:对称加密 (可逆)常用算法DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;(已经不安全了,)3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,支持128、192、256、512 (首选的算法)特点指加密和解密用的是同一个秘钥。

2022-01-19 18:08:11 1953

原创 OC 学习记录随笔 之APP 启动

总资料全是随笔 笔记 与 学习资料。没有规律。APP冷启动阶段主要可以分为3个阶段dyldruntimemaindylddyld 叫做 apple的动态链接器, 可以用来装载 Mach-O文件(可执行文件和动态库等)启动的时候 dyld做的事情装载app的可执行文件, 同时递归加载所有依赖的动态库当dyld 将所有可执行文件和动态库都加载完成后,会通知runtime进行下一步的处理runtimeruntime做的事情调用map_images()进行可执行文件内容

2022-01-12 21:30:50 1618

原创 OC 学习记录随笔 之内存管理

OC 学习记录随笔 之内存管理包括 NStimer 等内存相关的部分

2022-01-01 17:46:44 1488

原创 OC 学习记录随笔 之多线程

总资料全是随笔 笔记 与 学习资料。没有规律。常见多线程方法dispatch_queue_global_t qH = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0); 并发的dispatch_queue_t que = dispatch_queue_create("jimboqueue", DISPATCH_QUEUE_CONCURRENT /*DISPATCH_QUEUE_SERIAL*/); 并发和串行自由控制线程阻塞

2021-12-22 20:35:52 1822

原创 HTTP笔记

节选自《图解HTTP》一书方法列表持久链接HTTP 协议的初始版本中, 每进行一次 HTTP 通信就要断开一次 TCP 连接以当年的通信情况来说, 因为都是些容量很小的文本传输, 所以即使这样也没有多大问题。 可随着 HTTP 的普及, 文档中包含大量图片的情况多了起来。比如, 使用浏览器浏览一个包含多张图片的 HTML页面时, 在发送请求访问 HTML页面资源的同时, 也会请求该 HTML页面里包含的其他资源。 因此, 每次的请求都会造成无谓的 TCP 连接建立和断开, 增加通信量的开销

2021-12-21 10:39:47 676

原创 OC 学习记录随笔 之 RunLoop

总资料全是随笔 笔记。没有规律RunLoop 相关类CFRunLoopRefCFRunLoopModeRefCFRunLoopSourceRefCFRunLoopTimerRefCFRunLoopObserverReftypedef struct __CFRunLoop * CFRunLoopRef;//全部结构/*struct __CFRunLoop { CFRuntimeBase _base; pthread_mutex_t _lock; /* locke

2021-12-12 21:08:33 1464

原创 OC 学习记录随笔 之 Runtime

总资料全是Runtime 随笔 笔记。没有规律

2021-11-23 22:06:08 1625

原创 OC 学习记录随笔 之 Block

全是随笔 笔记。没有规律。部分为MJ老师的课程笔记.Blockblock 本质就是一个oc对象, 它的内部存有一个isa指针struct __block_impl { void *isa; int Flags; int Reserved; void *FuncPtr;};static struct __main_block_desc_0 { size_t reserved; size_t Block_size; void (*copy)(struct __main

2021-11-20 21:24:13 1967

原创 Sublime 配置Python/C++ 编译运行环境

Python 编译配置menu 路径 Tools -> Build System -> New Build Syestem...。在打开的文件中编辑{ "env": { "PYTHONIOENCODING": "utf8" }, "working_dir": "$file_path", "shell_cmd": "C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Py

2021-11-18 10:33:05 1296

原创 OC 学习记录随笔

全是随笔 笔记。没有规律。动态特性 VS 静态特性OC: 动态类型(id)、多态绑定([obj msgSend])、 多态加载(图片2x3x替换,动态加方法和变量)OC Alloc Init Newalloc 开辟内存,绑定指针isainit return(id)self,工厂构造方法,工厂设计,给开发者初始化数据提供重写入口内存检测僵尸对象zombie object :已经被系统回收的内存,但是没有置空, 随时可能被其他申请和覆盖.内存,进程分别有虚拟页面,在去访问物理内存。只有

2021-11-05 15:06:35 1959

原创 C++ 学习记录随笔

没有规律,没有章法,看到哪里写哪里。单纯笔记编译步骤:hello.c -> 预编译 -> hello.i -> 编译 -> hello.s -> 汇编 -> hello.o -> 链接 -> 可执行文件预编译会对 预编译伪指令(一般以 # 打头,且前面只能出现空白字符)进行处理后 生成中间文件作为编译器的输入。#include (头文件的所有内容都会最终合并到某一个或几个源文件中,将所有头文件递归展开后形成的源文件叫做编译单元)#define

2021-11-01 16:45:42 376

原创 Pyside2 学习系列三:PyInstaller打包项目瘦身(超详细的Pyside2 攻略)

继上一篇文章打包后,发现包太大了,我们现在开始进行瘦身优化。本项目的所有演示代码:github可在这里下载。打包只用的工具为PyInstaller。优化1 简单查看包构成2 瘦身方法2.1 打包成单文件2.2 UPX压缩2.2.1 命令行添加地址2.2.2 将UPX路径添加到环境变量2.3 打包成单文件并UPX压缩2.4 打包成多文件后,删除无用的依赖库(未成功)3 方法对比1 简单查看包构成下图中,我们可以看到,我们只是简单的添加了两个ui文件,包大小就显示有98.5 MB。完全不可理解。进

2021-09-27 16:05:34 6664 4

原创 Pyside2 学习系列二:PyInstaller打包项目exe (超详细的Pyside2 攻略)

继上一篇文章创建了项目后,本章我们进行项目的打包工作。本项目的所有演示代码:github可在这里下载。打包只用的工具为PyInstaller。打包步骤1 准备环境1.1 安装`PyInstaller `2.初始化虚拟安装环境2.1 创建虚拟环境2.2 加载虚拟环境2.3 添加依赖库3 开始打包3.1 进入到我们工程的路径3.2 打包尝试3.3 解决ui文件报错3.3.1 方法一:手动拷贝3.3.2 方法二:修改打包命令3.3.3 方法三:修改.spec文件4 小结1 准备环境1.1 安

2021-09-24 16:19:54 8252

原创 Pyside2 学习系列一:创建包含ui文件的项目 (超详细的Pyside2 攻略)

主要是Pyside2的相关文档太少了,不全且大部分是英文的,所以当时想要学习pyside2开发gui的时候,研究的比较多,所以在这里做一个相关的总结。请注意:这是Pyside2,并不是PyQt,虽然两者的语法差不多,都是python和qt开发ui,但是两者的组成是不一样的,Pyside2是qt官方开发,PyQt是第三方公司开发的,而且两者的调用函数还是有一定区别的。因为这里需要是ui文件,所以开发的工具是Qt Creator, python 环境是3.6.7。由于Qt Creator已经默认安装了

2021-09-07 16:44:24 3887 2

原创 Qt学习笔记之--多线程

其他链接:- OC学习笔记之多线程- Python学习笔记之–多线程和多进程本文的所有代码均可在github上下载查看。Qt 使用多线程主要存在 下面几种方法继承QRunnable类 并重写 run() 方法继承QThread类 并重写 run() 方法继承QObject类作为工作类,创建临时QThread,使用moveToThread() 来将QObject整体移入子线程QtConcurrent 类直接在子线程调用 方法或 lambda表达式下面就主要针对上面4种情况进行代码

2021-04-30 15:10:47 373

原创 Python学习笔记之--多线程和多进程使用demo

OC多线程使用笔记由于实际运用中开辟线程和进程 都是在for 循环中进行的,所以不能不考虑同时 并发的线程和进程的数量。所以在下面使用都 有控制并发数的方法。由于Python 多线程GIL锁的原因,导致cpu处理环节,实际上是串行执行的,导致在CPU处理密集型的 方法中,采用多线程处理却要比单线程处理慢。所以有必要引进 多进程处理方式。threading 启动多线程多线程在CPU密集型操作中是串行的,多线程使用与I/O操作或者网络请求操作。使用Semaphore控制并发线程数量threadin

2021-04-29 16:33:06 363 3

原创 Python 读取解析 C 的Struct 二进制数据

学习笔记首先使用c++生成二进制 struct到本地文件using namespace std;const int Lim = 20;struct pla { char name[Lim]; double poplation; double g;}; pla pd; strcpy(pd.name, "this is text."); pd.poplation = 99.4444; pd.g = 33.2490905; ofstream fout("C:\\

2021-02-09 16:56:42 1173

原创 Sublime Text 3 调试Python 控制台输入& Pdb 调试

Sublime Text 3 调试Python 控制台输入& Pdb 调试首先需要安装插件 SublimeREPL为了增加效率,需要使用双屏功能 Menu -> View -> Lyout -> Columns 2 一个屏幕是源码,一个屏幕是调试的页面。控制台进行互动输入由于sublime 的控制台不能进行输入文本,所以也需要 使用 SublimeREPL运行调试的按键位于 Menu -> Tool-> SublimeREPL -> Python -

2020-09-09 16:44:35 2479

原创 关于一台电脑多个git账号的配置

具体步骤首先cd到 ~/.ssh 路劲下面查看有没有config文件存在,如果没有的话 touch 创建一个 touch config下文中有三个账号分别对应的是三个不同的git服务器,最终配置好的config文件的代码如下Host [email protected] HostName [email protected] User ren.jinbo Iden...

2019-11-22 15:43:40 311

原创 Mac/iOS手动输出 调用堆栈,并符号化

如果想在代码里面调用某个方法的时候输出调用堆栈的话,我们一般这样做。直接调用这个方法 [NSThread callStackSymbols];DEBUG 或 这 RELEASE 直接运行就可以输出下面的调用堆栈0 DSYMTest 0x0000000100000f66 -[ViewController getNowBacktra...

2019-05-14 18:27:58 2083 1

VVDocumenter-Xcode-master 代码规范注释

很多时候,为了快速开发,很多的技术文档都是能省则省,这个时候注释就变得异常重要,再配合Doxygen这种注释自动生成文档的,就完美了。但是每次都要手动输入规范化的注释,着实也麻烦,但有了VVDocumenter,只需要在要写文档的代码上面连打三个斜杠,就能自动提取参数等生成规范的Javadoc格式文档注释 作者也开源了相关代码

2016-02-24

iOS自定义cell侧滑删除、编辑等按钮

iOS自定义cell侧滑删除、编辑等按钮,用的是一个网上大神封装好的类,直接引用,就ok了,简单粗暴,适配支持iOS9.2、Xcode7.2

2016-01-09

iOS的Navigation自带返回按钮点击后弹框提示确认返回、源码

点击iOS的Navigation自带的back返回按钮后,会弹出AlertView,点击alert view的确认按钮后,才会pop到上一个界面,取消按钮点击后则不反回上一界面,Xcode7.2,iOS9.2亲测有效

2016-01-09

空空如也

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

TA关注的人

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