自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Deft_MKJing的博客

一切正在发生的早已命中注定,包括这句话

  • 博客(186)
  • 收藏
  • 关注

原创 iOS 二进制第三方库思路之Carthage编译静态库

用Carthage编译你喜欢的静态库前言Carthage的基本用法已经在上一篇文章详细介绍了,本文主要针对一个问题的解决方案,那就是如何用Carthage编译第三方库为静态库。和pod package一样,封装了xcodebuild进行编译,省去了繁琐的参数设置,提供更便捷方法使用,Carthage作为后起之秀,维护力度和pod package相比,不是一个量级的,端午花了一天学习了下官方的文档,可以确定Carthage将会是第三方库打包成动态库或者静态库的首选。由于项目都还是...

2020-06-28 00:04:18 1431 2

原创 iOS 轻量级包管理工具Carthage了解下

Why Carthage?我们已经熟知Cocoapods了,对于工程来说,帮我们自动创建Xcode WorkSpace和所有的依赖,对于依赖库来说,用来做本地local pod或者远程pod都非常好用,我们只要编写好对应的podspec文件,Cococapods会帮我们生成所有的依赖配置集成到项目。可以认为他是一体机,入侵性的帮我们管理好了Xcode项目文件。对于不需要手动管理的同学,这已经是一个长期好用的工具了,那为什么还要有Carthage呢?1、去中心化管理工具没有集中的podspec仓库管理过

2020-06-27 15:55:42 1011

原创 聊聊NSInvocation和NSMethodSignature

前言咱们这里不会通过源码介绍Runtime,已经有很多文章介绍了,而且太晦涩,读起来不舒服,也不会介绍Runtime的一些基本原理,这个作为iOS开发最熟悉了,只是通过一些我们平时用到的操作,来宏观的介绍NSInvocation和NSMethodSignature,随便聊聊,做一些简单的记录,还记得刚接触这个的时候咱们脑海里面的问号吗?什么是方法,什么是选择器,什么是方法签名,什么是IMP,什么是消息?下面简单的回顾下Selector选择器是方法的名称。你肯定对以下选择器非常熟悉:alloc,ini

2020-05-19 18:51:57 921

原创 通俗易懂的图解JavaScript中的Event Loop以及JavaScript中的await和async执行顺序

前言作为一个iOS开发,虽然也用JavaScript,但是从没有对一些最基本的原理有比较透彻的理解,比如这里的await和async,之前一直以为async就是iOS的dispatch_async,直到我偶然在网上看到几篇相关的文章,对打印出来的结果,让我感觉之前都理解错了,这里整合了几个大佬的文章,根据我个人的理解,方便我以后理解,就有了如下总结,我个人认为应该是理解正确了,而且非常通俗易懂,...

2020-03-29 12:21:33 825

原创 Python Web框架Django从入门到放弃

Python除了学习基础知识之外,最常用的三大块就是数据挖掘分析,人工智能,Web开发,今天就介绍下Python全栈工程师必备的知识点之一Web开发简介Web整体框架Web框架: 别人已经设定好的一个Web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子。其它基于Python的Web框架,如Tornado、Flask、Django都是在这个范围内进行增删裁剪的。例如T...

2019-11-06 18:59:18 1051

原创 Django 部署准备之一SQLite迁移到MySQL

前言Django开发的时候为了方面,内置了sqlite数据库,可以直接用,不用过多关心,直接ORM操作即可。MysqlSqlite特点为服务端设计轻量级,可嵌入手机应用高并发能不能占用内存比SQLite小适用性服务器手机,桌面应用等我们Django业务基本开发完了,部署之前,我们最好把SQLite迁移到Mysql,现在本地Mac电脑...

2019-11-04 11:36:16 913

原创 class-dump导出iOS系统私有库以及简单的私有API调用

前言This is a command-line utility for examining the Objective-C runtim information stored in Mach-O files. It generates declarations for the classes, categories and protocols. This is the same inform...

2019-10-31 21:04:55 1686

原创 Django内置模块之contenttypes框架

前言废话不多说,直接打开你Django项目的settings.py文件,6大内置App之contenttypes框架INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', # 跟踪Django中所有安装的model 'd...

2019-10-30 17:45:52 551

原创 Python偏函数functools.partial的理解

前言什么是偏函数?这名字是谁取的,我保证不打死他。。。。。。Python两个关键的知识点,一个装饰器,我们上一篇已经有介绍了,下一个就是偏函数,俗称partial function,不过把他叫做辅助函数,就好理解多了。借助python的help函数查看下:可以看到partial函数接收三个参数:第一个参数是函数,可以是你自定义的,也可以是内置的可变参数*args 需要被固定的位置参...

2019-10-29 11:11:50 1151

原创 通俗的理解Python装饰器所有用法(Decorator)

在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(function closures),是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。作者:聪明叉链接:<a href='https://www.jianshu.com/p/ee82b941772a'>https://www.jianshu.com/p/ee82b941772a</a>来源:简书著作权归作者所有。商业转载请联系作者获得授权,非

2019-10-28 17:49:33 1024

原创 iOS私有API检测扫描思路以及工具开发(Python3 + Django)

风险点1、class-dump有些文件会报错,需要查看下2、mach-o文件中的依赖除了系统,是不是还需要dump第三方其他的库进行扫描@xpath3、私有api在公开的Framework及私有的PrivateFramework都有。4、9.2.5的iOS系统对应的Xcode 8是有docset的,后面的Xcode都有新的文件格式了,下面有介绍,需要自己分析,但是数据结构有点乱,可能我我还...

2019-07-10 11:55:35 6148 5

原创 Django或者Flask创建Python虚拟环境启动第一个Hello World

前言刚开始开发Web的时候,没太在意隔离虚拟环境,用了系统的那一套,Python2.7版本是系统自带的,虽说明年就结束了,但是现在开发都会有一套3.x以上的环境,即使你开发不注意,你部署的时候总归是要隔离出来的。1.方便隔离,不同环境编写测试2.方便迁移,pip freeze 到出包文件依赖,随后提交管理和迁移都很方便virtualenv前提是你有两套PythonmikejingdeM...

2019-06-30 21:43:17 2206 1

原创 CSS中position属性(relative,absolute,fixed)和display中的inline-block

前言平时很少写CSS,用的多也就是Bootstrap来堆样式,写起来快一点,但是有时候需要自己写,很久没写容易忘记,这里记录下这两个常用属性position和display这里贴一条CSDN设置图片宽度的方式,太坑了,先拖出来拿到src,然后如下<img src="https://img-blog.csdn.net/20170120190855355?watermark/2/text/...

2019-06-26 16:05:57 3172

原创 Django中CSRF防御全过程解析以及中间件作用机制

前言XSS和CSRF攻击的基础原理这里就不介绍了,之前写了一篇文章单独介绍的很详细了,传送门,这里我们直接以Django为分析对象,分析中间件csrf生成原理以及防范Token如何运作的。CSRF中间件官方文档介绍的也是表面,本文通过源码层面直接分析流程官方文档针对CSRF的介绍以及参数配置 传送门Settings文件Setting.py中有茫茫多的配置选项。传送门Django全流程...

2019-05-21 18:49:23 2351 4

原创 以Django为例谈谈XSS和CSRF攻击

前言在Web安全领域,XSS和CSRF两个是最常见的攻击方式,由于最近在研究Django框架,阅读源码的同时分析下这两个攻击的攻击方式和防御方式XSSXSS,即 Cross Site Script,中译是跨站脚本攻击;在别人的站点嵌入脚本,而这个脚本原来不是属于这个站点的,所以叫跨站脚本,其原本缩写是 CSS,但为了和层叠样式表(Cascading Style Sheet)有所区分,因而在安...

2019-05-19 21:56:06 922 1

原创 iOS编译器LLVM + Clang架构分析以及三种混淆方案实践分析

Xcode Command + R编译原理全过程介绍前言之前由于启动优化相关的需求,分析了Xcode编译的全过程,针对优化点做了记录和学习。最近被人问到详述下LLVM架构原理。当时只是略知一二,看过而已,没理解的那么深入,这次根据LLVM + Clang的整个编译流程简单做个记录,而且顺便在每个不同阶段做代码混淆做一下Demo介绍。这里需要安装很多很多东西,个人认为Mac电脑都会安装个Ho...

2018-12-12 23:12:12 10181 8

原创 Objective-C之Autorelease Pool底层实现原理记录(双向链表)以及在Runloop中是如何参与进去的

最近需要重新整理知识点备用,把一些重要的原理都搞了一遍NSDictionary和NSArray底层原理HTTPS层引出OSI全部模型数据协议流转全过程Xcode Command + R全过程以及启动优化前言int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicatio...

2018-10-06 00:16:00 2267

原创 iOS应用安全之HTTP/HTTPS详解(AFNetworking配套策略)

目录HTTP缺点HTTPS底层原理(SSL握手详解普通RSA身份验证的隐患证书和SSL握手底层原理iOS原生方式校验HTTPS使用AFNetworking来支持HTTPS(组合策略源码分析)HTTPS网站访问输入后整个OSI模型流转过程前言这是早期的理解传送门,现在理解更深入点,还是记录下来HTTPS一般开启之后默认网络请求框架是会给我们做最基本的校验...

2018-09-27 22:45:50 3072 2

原创 NSDictionary和NSMutableArray底层原理(哈希表和环形缓冲区)

前言1.NSDictionary底层是哈希表,下面会介绍具体是用拉链法还是开放定址法线性探测来解决冲突?由于Apple给的查询复杂度可以快至O(1),那么为什么是O(1),底层是如何通过空间换取时间的?2.NSArray是线性连续内存,这个很好理解。但是NSMutableArray是可以插入和删除的,那么如何做到高效?就比如插入,如何做到尽可能少的移动或者不移动插入元素后其他元素的内存?实...

2018-09-17 12:43:42 8691

原创 阿里云Centos 7部署DJango2.0应用(uwsgi3 +Nginx)

目录前言上传以及服务器环境部分uwsgi部分nginx部分静态文件阿里云端口权限开启前言先概括下访问流程:首先客户端发起请求,这里会有TCP的握手,三次握手结束之时,客户端会带上http数据给服务器(请求行,请求头,请求体),服务器会接收到http协议,Nginx会接收到数据,然后根据里面的配置进行判断是否需要转发,如果是static,直接拿资源返回,如果需要在...

2018-09-02 17:22:30 857

原创 基于Python3的Django应用编写备忘录

目录创建正常项目简单流程梳理(mysql服务)安装创建项目(模型映射表)创建应用(默认方式)Django后台管理系统服务器管理操作向admin注册模型模型Model详细介绍1.创建项目(mysql服务)2.修改默认sqlite3为mysql3.修改后在创建的项目中创建App4.编写好Model5.生成迁移6.查看Mysql数据7.类的...

2018-08-16 17:36:39 2310

原创 iOS开发之Weex嵌入已有应用(三)

前言

2018-06-11 17:46:41 2547

原创 iOS开发之纯Weex+Vuejs开发原生App整体结构和调试步骤(二)

前言上一篇文章是根据Weex官方的介绍,启动了Weex的Hello World的介绍以及一些插件的安装环境部署和Debug之前花了2周时间看了下Vue的语法和用法以及一些实战介绍,毕竟是iOS开发,还是有必要把新学的东西写下来,而且会写的非常详细,能保证从我git仓库弄下来的基础结构能跑起来并且能热更新调试这个是整体的结构,基本上搭完这个结构,你就可以开发一个简单App来玩了。OK下面就开始介绍如...

2018-06-08 14:41:42 7191

原创 iOS开发之Weex爬坑之路环境部署和Devtools Debug(一)

前言不多说,直接开始Weex,算是记录这段时间对新技术的学习积累。期间看了很多Vue.js和Node.js的基础,顺便捋了以下CSS的flex-box布局等等前端的知识,太多了太杂了,还是用笔记记录下。直接从官方介绍,开始介绍启动环境,搭建第一个Demo,按照官方的来同为跨平台解决方案,咱们先看下和RN的对比,由于国内淘宝搞的轻量级,所以我们还是先爬爬Weex坑类型React NativeWeex...

2018-05-21 20:56:47 2993 1

原创 一文看懂@dynamic 与 @synthesize 关键词

关键词的场景,之前@dynamic只在NSManagedObject的子类中遇到过,因为NSManagedObject的子类是由CoreData直接生成的,其中对应参数(@property)的setter和getter方法也是由CoreData直接生成,并且不展现给你 getter && setter首先介绍一下什么是setter和getter方法:由名字也大致能猜出 getter方法是当你的程

2017-10-12 15:55:57 15421

原创 iOS获取手机唯一标识符来判断不同终端登录(IDFA和UUID分析)

11.13更新广告标示符,适用于对外:例如广告推广,换量等跨应用的用户追踪等。是iOS 6中另外一个新的方法,提供了一个方法advertisingIdentifier,通过调用该方法会返回一个NSUUID实例,最后可以获得一个UUID,由系统存储着的。不过即使这是由系统存储的,但是有几种情况下,会重新生成广告标示符。如果用户完全重置系统((设置程序 -> 通用 -> 还原 -> 还原位置与隐私) ,

2017-06-08 11:31:26 15134 3

原创 通俗易懂图解MVVM和RAC双向绑定介绍(附Demo)

前言一个前辈的MVVM介绍 其实MVVM就是MVC的进化版本,相对于臃肿的Controller,代码越来越多之后,有一部分人就用了新的设计模式,其实看久了也没什么,通俗点讲,其实就是把之前Controller里面的代码逻辑全部移植到了ViewModel里面,相对于以前而言,控制器也被归属于View一类,那么他和View一样都会有自己的ViewModel去处理逻辑,而且ViewModel必然拥...

2017-03-07 18:01:28 16127 11

原创 iOS卡片式立体轮播仿英雄联盟选择皮肤效果展示

个人感觉CollectionView过于强大,基本什么界面都能用他来完成需求,只是如果自定义Layout的时候可能性能开销大。如果是普通的需求,他和tableView并没有多大的区别,同样都是通过datasource和delegate两个代理来进行用户交互稍微回顾下CollectionView的构成1.Cells2.Supplementary Views 追加视图 (secti

2016-08-16 11:14:49 9419 5

原创 KMM(Kotlin Multiplatform Mobile)Welcome to Kotlin/Native World

Kotlin/Native是一种将Kotlin源码编译成不需要任何VM支持的目标平台二进制数据的技术,编译后的产物可以直接运行在目标平台上,设计Kotlin/Native的目的是支持在非JVM环境下进行编程,如在嵌入式平台和iOS环境下,如此一来,Kotlin就可以运行在非JVM平台环境下

2022-04-11 18:58:46 4509

原创 KMM(Kotlin Multiplatform Mobile)环境搭建

操作系统操作系统版本:最高支持 Monterey ,最低支持 Big Sur验证:左上角 ---> 关于本机 ---> macOS Monterey ## iOS 环境1. Xcode支持 13.2.1 ,可直接通过 Apple Store 更新验证$ xcodebuild -versionXcode 13.2.1Build version 13C1002. Cocoapods// 安装命令sudo gem install cocoapods -v 1.10.1 -

2022-04-10 23:54:59 3040 1

原创 Swift 5.1 温故而知新笔记系列之第七天

1.函数式编程函数式编程(Funtional Programming,简称FP)是一种编程范式,也就是如何编写程序的方法论主要思想:把计算过程尽量分解成一系列可复用函数的调用主要特征:函数是“第一等公民”函数与其他数据类型一样的地位,可以赋值给其他变量,也可以作为函数参数、函数返回值示例一传统写法//[(num + 3) * 5 - 1] % 10 / 2func add(_ v1: Int, _ v2: Int) -> Int{ v1 + v2 }func sub(_ v1:

2021-05-06 01:18:42 344

原创 Swift 5.1 温故而知新笔记系列之第六天

1.Swift调用OCSwift项目创建OC对象如下NS_ASSUME_NONNULL_BEGINint sum(int a, int b);@interface Person : NSObject@property (nonatomic, assign) NSInteger age;@property (nonatomic, copy) NSString *name;- (instancetype)initWithAge:(NSInteger)age name:(NSString *

2021-05-05 11:49:06 365 1

原创 Swift 5.1 温故而知新笔记系列之第五天

String案例一var str1 = "0123456789"print(MemoryLayout.stride(ofValue: str1))// 16可以看到上面最普通的字符串赋值就是16个字节Xcode自带的已经很好的提示了str1变量的地址 0x84b + 0x100001a3d = 0x100002288,因为上面打印出占用16个字节,直接输出x/2xg 0x100002288 可以很明显的看到0x100002288: 0x3736353433323130 0xea0000000

2021-05-03 22:38:35 279

原创 Swift 5.1 温故而知新笔记系列之第四天

1.协议协议可以用来定义方法,属性,下标的声明,协议可以被枚举,结构体,类遵守。协议中定义属性时必须用var关键字实现协议时的属性权限要不小于协议中定义的属性权限协议定义get、set,用var存储属性或者get、set计算属性去实现协议定义get,用任何属性都可以实现为了保证通用,协议中必须用static定义类型方法,类型属性,类型下标(class就只能用哪于类,因此用static更通用)只有将协议的实例方法标记为mutating才允许结构体,枚举的具体实现修改自身内存,类的方法实现

2021-02-28 22:30:59 349

原创 Swift 5.1 温故而知新笔记系列之第三天

属性有等号=肯定是存储属性没有等号如果是get``set就是计算属性,willSet或者didSet就是存储属性,属性观察器 ,而且不能和计算属性的get,set一起出现,就矛盾了存储属性类比成成员变量存储在实例的内存中结构体、类可以定义存储属性枚举不可以定义存储属性,因为枚举的内存结构是用来存储case的关联值或者原始值的,底层看来就不能存储属性内存在创建类或者结构体实例时,必须为所有的存储属性设置一个合适的初始值延迟存储属性class Car { init() {

2021-02-27 22:10:54 291

原创 Swift 5.1 温故而知新笔记系列之第二天

1.结构体在 Swift 标准库中,绝大多数的公开类型都是结构体,而枚举和类只占很小一部分比如Bool、Int、Double、String、Array、Dictionary等都是结构体struct Point { var x: Int = 0 var y: Int = 0 var origin: Bool = false}var point = Point(x: 10, y:10, origin:false)print(MemoryLayout<Point>.size) //

2021-02-21 01:25:03 277

原创 Swift 5.1 温故而知新笔记系列之第一天

1.编译流程操作swiftc -dump-ast main.swift // 生成语法树swiftc -emit-sil main.swift // 生成最简洁的SIL代码swiftc -emit-ir main.swift -o main.ll // 生成LLVM IR代码swiftc -emit-assembly main.swift -o main.s // 生成汇编代码Contents/Developer/Toolchains/XcodeDefailt.xctoolchain/

2021-02-18 20:58:19 337

原创 iOS组件化系列之RubyMine如何调试Cocoapods插件

前言Cocoapods大家应该非常熟悉了,但是一般很少有人去看源码,那就更少人去写插件了,如果要全局掌控工程架构,那必须熟悉这些插件的使用,而且还有个问题,即使你写插件,但是网上根本找不到资料告诉你如何调试插件源码,本文根据找到的极少数的资料,做了一丢丢笔记。Cocoapods-Plugins开发首先介绍下关于插件的开发,这一点官方资料根本少的可怜,或者是压根没有How to use CocoaPods plugins,仅有这个文章可以看看。RVM环境安装首先,由于Mac自带的Ruby环境,你如果

2020-08-02 13:22:22 1864 1

原创 Python subprocess模块(处理shell)和re模块(文本提取)

Python 处理Linux命令Python写脚本就需要处理Linux命令,那么根据可用程度,分别介绍下各种库如何使用os 模块In [40]: import os In [41]: r = os.system('echo "Hello World"') ...

2019-11-05 15:57:23 436

原创 iOS App签名原理和HTTPS证书原理

前言先来看看苹果的签名机制是为了做什么。在 iOS 出来之前,在主流操作系统(Mac/Windows/Linux)上开发和运行软件是不需要签名的,软件随便从哪里下载都能运行,导致平台对第三方软件难以控制,盗版流行。苹果希望解决这样的问题,在 iOS 平台对第三方 APP 有绝对的控制权,一定要保证每一个安装到 iOS 上的 APP 都是经过苹果官方允许的,怎样保证呢?就是通过签名机制。非对称加...

2019-07-11 15:38:11 1281

空空如也

空空如也

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

TA关注的人

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