自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(314)
  • 资源 (15)
  • 收藏
  • 关注

原创 ios音频焦点

两个或者两个以上的app可以同时向同一输出流播放音频。系统会将所有音频流混合在一起,但这样会给用户带来很大的困扰。为了避免所有音乐app同时播放,ios引入了“音频焦点”的概念。在ios中,音频焦点是操作系统为了管理音频硬件而引入的概念,是指app对音频硬件在时间维度上的使用控制(不是使用权限,使用权限需要app单独申请)。app可以独占使用,也可以共享使用音频焦点,即独占或者共享音频硬件。

2023-05-22 10:28:33 835

原创 ios小窗开发入门

【代码】ios小窗开发入门。

2023-03-25 13:28:34 393

原创 ios内存管理

ios内存管理方案TaggedPointer我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;全新的 KaTeX数学公式 语法;增加了支持甘特图的mermaid语法1 功能;增加了 多屏幕编辑 Mar

2021-08-30 00:06:10 217

原创 block原理探索

1 block的常用写法分类在讲解block原理之前,先介绍绝大部分block的使用类型。1.1 不访问外部变量的带参的block1.2 不访问外部变量的不带参的block1.3 访问外部的全局变量的block1.4 访问外部的局部变量的block#1.5 访问外部的静态局部变量2 从C++代码中窥探block的实现2.1 block本质上是一个OC对象在窥探block的实现之前,请先看下图的demo的运行结果,从代码及其运行结果可以看出block就是一个OC对象,通过调用该对象的

2021-08-16 10:43:37 308

原创 当你调用OC方法时,系统是怎么找到这个方法的具体实现的?

我们知道,当执行一个OC方法时,比如执行Person类的类方法classMethod或者Person类的实例方法instanceMethod,最终都是会被转成一个名为objc_msgSend()的函数调用。所以说,OC方法的调用本质上就是一个C函数的调用。那该函数里面的执行流程是怎么样的呢?[Person classMethod]; //调用Person类的classMethod类方法[person instanceMethod]; //Person类的实例的instanceMethod实例方法.

2021-08-16 10:25:54 119

原创 RAC框架基础API的使用总结与源码浅析

基础概念:RACSubject & RACSignal 的区别    在RAC框架中,核心就是信号(由RACSignal类表示)。从下图可以看出,几乎所有的操作都是围绕着信号的创建、发送、订阅和销毁进行的。RACSignal    RacSignal是所有信号类的基础类,换句话说,所有信号基本都是继承自RacSignal,但RACSignal的实例并不支持发送信号,只是信号传递的媒介。这么说有些抽象,请看下面的两个demo。RACSignal demo1    下面的代码是RACSig

2021-08-16 10:23:02 322

原创 ios性能优化总结

  本文内容分为两大部分:1 ios常用性能分析工具; 2 性能优化常见套路。所以如果对第1部分不感兴趣,可以直接看第2部分。ios中性能优化常用的instrument工具  现代管理学之父彼得德鲁克曾经说过:“如果你不能衡量,那么你就不能有效增长”。类似的,如果对当前程序的代码执行耗时、特定列表的滑动fps数据都不了解,就不能高效地对代码进行优化,所以在讲解具体的性能优化策略前,先来介绍几个笔者常用的性能测试工具。。time profile  time profile是一款用于测量特定的一段时间

2021-08-16 10:01:46 709

原创 MJRefresh源码阅读笔记

读源码之前需要掌握的基础概念UIView的生命周期先看如下的demo代码@interface GreenView : UIView@end@implementation GreenView- (instancetype)init //2{ self = [super init]; if (self) { } return self;}- (instancetype)initWithFrame:(CGRect)frame //3{ self =

2020-08-17 09:58:23 316

原创 VC的shouldAutorotate和supportedInterfaceOrientations方法的学习demo

ios屏幕旋转:当全屏模式(此时是横屏模式)时,把app退后台然后再进入app时,横屏模式变成竟然变成了竖屏模式的解决方法。步骤1:先看下图苹果文档的discussion部分。但这句话应该这样读:①This method returns the total set of interface orientations supported by the app.意思是该方法返回的是app所支持的界面旋转方向集合。②对于When determining whether to rotate a particu

2020-06-19 21:41:19 2073

原创 ios基础学习笔记

资源位置的问题资源分文件(比如图片)和文件夹图片资源拖拽一张普通图片到xcode的工程的Assets.xcassets中。拖拽3张相同内容的1x 、2x、 3x普通图片到xcode的工程的Assets.xcassets中。拖拽一张普通图片到xcode的工程的代码所属的文件夹里面。在代码里面分别读取Assets.xcassets里面和xcode的工程的代码所属的文件夹里面的图片。代...

2020-02-26 15:19:24 291

原创 创建一个ios组件供其他ios工程使用

有3种方式方式1:创建一个ios组件给本地其他工程使用(引入该组件的代码或者修改该组件的代码)创建一个存储源码的文件夹,然后在该文件夹下添加一些OC文件(本例以创建Person.h和Person.m文件为例),然后创建一个podspec文件(本例创建的是weiboaa.podspec文件。你可以通过执行touch weiboaa.podspec来创建weiboaa.podspec文件,也可以...

2020-02-23 21:25:01 268

原创 IOS版的MMKV框架解析,看这一篇就够了?

IOS版的MMKV框架解析,看这一篇就够了?MMKV了解MMKV前需要了解的基础知识ProtocolBuffer(下文检查PB)demo:基础知识二进制串Tag - Length - Value 的数据存储方式在MMKV中,使用的是Length-Value的方式进行存储!!!!PB相对于json的优点:PB相对于json的缺点:CRC(Cyclic Redundancy Check,循环冗余校验)...

2019-12-28 22:08:31 2383

原创 xcode添加符号断点

1 切到断点列表栏目,点击左下角的 + 号,选择symbolic breakPoint。2 输入要断点的方法名,然后点击 "add action"按钮。3 此时可以看到你新加的断点方法。4 运行项目,此时xcode会停在你的断点方法中。...

2019-12-08 22:33:09 2026

原创 ios: 计算某种字体类型的某种大小的字符串的所占用屏幕的宽高

计算某种字体类型的某种大小的字符串的所占用屏幕的宽高有2种方式方式1,通过NSString的sizeWithAttributes方法方式2,通过NSMutableAttributedString有2种方式方式1,通过NSString的sizeWithAttributes方法UIFont *strFontStyleAndSizeFont = [UIFont fontWithName:@"Pin...

2019-10-26 17:41:41 386

原创 Runtime06类里面的方法缓存原理

每一个类、每一个元类都有一个cache_t对象,cache_t对象是一个结构体,里面有3个成员变量:①存储了你之前调用过的某个类对象或者实例对象的方法(你调用过的类方法会存储在元类的cache_t对象里面,而你调用过的实例方法会存储在类的cache_t对象里面)的哈希表(下图的struct bucket_t *_buckets),该哈希表只是通过一个数组实现的,解决哈希冲突的方法是线性探测法,而...

2019-09-15 20:38:51 275

原创 Runtime05Block原理

例子1main.m文件的代码如下:#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { int age = 1; void (^myBlock)(int, int) = ^(int a, int b) { ...

2019-09-14 21:27:57 331

原创 Runtime04Category和关联对象

先看一个demodemo的目录结构如下具体代码如下main.m :#import <Foundation/Foundation.h>#import "Person.h"#import "Person+Test.h"int main(int argc, const char * argv[]) { @autoreleasepool { Perso...

2019-09-13 09:41:22 117

原创 Runtime03load()和initialize()的加载顺序

demo项目的目录结构上代码:main.m (啥都没写):#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { return 0;}Person类:@interface Person : NSObject@end//---------分割线,分隔一个类的.h文...

2019-09-12 20:58:06 178

原创 Runtime02KVO和Category原理

界面效果就是一个空白界面:上代码:Person类:@interface Person : NSObject@property (assign, nonatomic) int age;@property (assign, nonatomic) int height;@end//---------分割线,分隔一个类的.h文件和.m文件-------#import "Person.h"...

2019-09-07 17:23:23 123

原创 Runtime01对象的本质

查看NSObject的对象在内存的内容,有两种方法方法一:第1步第2步第3步方法二,用lldb命令来实现打印对象:p(等价于print)表示打印、po表示打印对象。读取内存:memory read/数量+格式+字节数 内存地址x/数量+格式+字节数 内存地址//举例:x/3xw 0x10010 ,其中,第一个x表示读内存,3表示输出的内容的个数,第二个x表示16进...

2019-09-01 20:44:41 129

原创 ios事件-触摸事件3(UIButton 和 pointInSide()、hitTest()、touchesBegan()、touchesMoved()、touchesEnded()的关系)

ios事件-触摸事件3(UIButton 和 pointInSide()、hitTest()、touchesBegan()、touchesMoved()、touchesEnded()、touchesCancelled()的关系)先看效果图本文中,凡是看到xxx(),即表示xxx是一个函数或者方法!!!事件分为事件传递和事件响应,其中,事件响应又称事件处理。具体代码ButtonVC的代码...

2019-08-31 15:14:57 976

原创 ios事件-触摸事件2(手势 和 pointInSide()、hitTest()、touchesBegan()、touchesMoved()、touchesEnded()的关系)

ios事件-触摸事件2(手势 和 pointInSide()、hitTest()、touchesBegan()、touchesMoved()、touchesEnded()、touchesCancelled()的关系)先看效果图本文中,凡是看到xxx(),即表示xxx是一个函数或者方法!!!事件分为事件传递和事件响应,其中,事件响应又称事件处理。具体代码FindViewViewContr...

2019-08-31 12:43:07 2019

原创 ios事件-触摸事件1(寻找点击的view)

先看效果图本文中,凡是看到xxx(),即表示xxx是一个函数或者方法!!!事件分为事件传递和事件响应,其中,事件响应又称事件处理。具体代码FindViewViewController的代码如下:@interface FindViewViewController : UIViewController@end//--------分隔符,分隔.h文件和.m文件-------------@...

2019-08-30 14:06:53 540

原创 ios滑动事件的打印栈

ios滑动事件重写UIViewController的- (void)touchesBegan:withEvent:方法、- (void)touchesMoved:withEvent:方法和- (void)touchestouchesEnded:withEvent:方法开始触摸屏幕滑动屏幕手指离开屏幕设置一个UIButton的监听方法按钮的监听事件重写UIViewController的- (voi...

2019-08-23 22:07:02 154 1

原创 coreData操作数据库的步骤

1.创建一个Data Model 文件2.创建一个Entity,名为MyFirstEntity3.为了防止崩溃,需要做如下操作:4.创建Data Model文件包含的Entity5.在你的ViewController里面操作数据库,ViewController的代码如下://// ViewController.m// TestCoreData//#im...

2019-07-14 13:04:03 514

原创 CALayer(假设有个实例A)的convertPoint: fromLayer:方法的fromLayer的参数只能填该Layer的父Layer,因为这样才能保证该方法的返回值的位置是基于实例A计算的

验证例子1.界面开发截图2.ViewController的代码#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UILabel *layerView;@property (nonatomic, strong) CALayer *blueLayer;...

2019-07-11 18:25:48 283

原创 xcode10.2.1 把.h 和.m文件加入工程里面的某个文件夹【可确保xcode界面看到的目录组织方式和真实文件系统看到的一致】的步骤图解

步骤1 创建一个新的class文件(同时包含.h 和.m文件)2 选择Cocoa Touch Class,并点击next3 输入类名并点击next4 直接点击create5 选中刚才创建的文件(上图中的Test.h和Test.m文件),按鼠标右键,选择New Group from Selection6 输入文件夹(在xcode中叫Group)的名字7 选中Test.h文件,按鼠标右键8 xcode...

2019-07-06 18:17:21 1211

原创 小程序get和post包含中文数据(解决乱码问题)的Json字符串

1 小程序以GET方式获取服务端的JSON字符串服务端返回的JSON字符串{ "resourceType": "Patient", "id": "2", "meta": { "profile": [ "http://example.com/StructureDefinition/mypatient" ] }, "extension": [ ...

2019-05-28 22:32:37 6975 1

原创 虚引用、软引用和弱引用的使用示例

import java.lang.ref.PhantomReference;import java.lang.ref.ReferenceQueue;import java.lang.ref.SoftReference;import java.lang.ref.WeakReference;public class Test { public static void main(St...

2019-05-12 12:11:54 563

原创 unix网络编程卷2,书的代码的运行环境安装

步骤代码下载:把代码解压并复制到/usr/bin目录下(一定要把代码放到该目录下)cp -R /你解压的代码的目录/unpv22e /root/bin编译unpv22e/lib目录下的文件步骤如下:1.切换到cd /root/bin/unpv22e2.输入以下命令并敲 回车键./configure 结果如图13.修改第2步自动生成的config.h文件 vi confi...

2019-04-27 18:44:58 532

原创 linux:有效用户id、实际用户id、设置用户id

有效用户id、实际用户id、设置用户id概念更改用户ID以下内容均来自https://www.cnblogs.com/stemon/p/5287631.html的内容实例分析一:概念实际用户id(RUID,进程特有的概念): 在开机时,你输入的账号的对应id就是实际用户uid,说白了就是登录号,站在用户的角度上看。有效用户id(EUID,进程特有的概念): 一般和RUID相同,站在操作系统的...

2019-04-13 22:29:34 12456

原创 Ubantu下的Eclipse开发C的环境问题

创建C的Helloworld1.在eclipse的左边的项目列表栏的空白处,按鼠标右键 -> New -> Project…,即可看到下图界面,选中C Project选项。2.点击next,看到如下界面,然后输入项目名,选择Empty Project,选择Linux GCC选项,然后点击finish,项目创建完毕。3.选中你刚才创建的工程,按鼠标右键 -> New -&...

2019-03-28 14:21:42 177

原创 二叉树的遍历:前中后序(递归、非递归、不借助辅助空间)、按层遍历,可直接运行!

二叉树的遍历:前中后序(递归、非递归、不借助辅助空间)、按层遍历import java.util.LinkedList;import java.util.Queue;import java.util.Stack;public class T1 { public static class Node { public int value; Node ...

2018-08-24 17:04:15 365

原创 Object、String、HashMap的hashCode()和equals()浅谈

Object、String、HashMap的hashCode()和equals()浅谈测试代码public static void main(String[] args) { Object obj1 = new Object(); Object obj2 = obj1; System.out.println("-----------O...

2018-03-22 12:13:28 682

原创 Ubantu12.045 的Desktop amd64版本下编译Android 2.3.3源码(不用repo下载)

1 下载并配置JAVA环境1.1去oracle下载jdk-6u45-linux-x64.bin,csdn也有该资源:jdk-6u45-linux-x64.bin1.2 把jdk-6u45-linux-x64.bin文件复制到/usr/java/目录下(路径可以自己决定)1.3 在命令窗口进入/usr/java/路径下,输入:chmod a+x ./jdk-6u4...

2018-03-04 15:37:19 212

转载 HashMap实现原理及源码分析

HashMap实现原理及源码分析

2018-02-10 13:21:29 144

原创 Future 模式

java多线程设计模式全部源码:java多线程设计模式源码类图时序图Main.javapublic class Main { public static void main(String[] args) { Host host = new Host(); //data1、data2、data3都是FutureDat

2018-01-28 11:32:31 169

原创 Thread-Per-Message模式

java多线程设计模式全部源码:java多线程设计模式源码模式图类图时序图Main.javapublic class Main { public static void main(String[] args) { Host host = new Host(); host.request(10, 'A');

2018-01-27 20:37:15 277

原创 Read-Write Lock模式

java多线程设计模式全部源码:java多线程设计模式源码模式图一般类图下面例子的类图项目架构图Main.javapublic class Main { public static void main(String[] args) { Data data = new Data(10); new

2018-01-27 18:30:10 276

原创 java并发编程: Exchanger

模式图时序图Main.java/** * * Main2.java用到的java文件如下: * ProThread.java * ConThread.java * @author csx * */public class Main2 { public static void main(String[] args) { //Ex

2018-01-27 15:49:34 189

9.1 (13B143).zip

存放在~/Library/Developer/Xcode/iOS DeviceSupport/目录下的越狱真机的版本为9.1必须要用的该资源。下载该资源并解压到~/Library/Developer/Xcode/iOS DeviceSupport/目录下,然后重启你xcode,并创建一个工程,然后点击run到你的越狱手机就行了。参考解决方案https://www.jianshu.com/p/43838834e4ee

2020-01-15

runtime.pptx

学习过程中的oc对象转为c++结构体后的结构体之间的关系图

2019-09-07

Android没编译过的2.3.3源码

想免费共享资源都不行,请见量!在学《Android系统源代码情景分析》,repo下载Android源码慢烂,所以分享给大家。

2018-03-04

java多线程设计模式源码

图解 java多线程设计模式 源码(自己写的)

2018-01-17

win32-py3.2.exe,python3.2对应的扩展包

no module named win32com.client错误解决,其实就是缺乏对应的python扩展包 请在http://sourceforge.net/projects/pywin32/files/ 下载相应python版本的win32扩展。安装后问题即解决

2017-02-23

android 二维码 创建和扫描的helloworld入门

2016-03-17

javamail.jar.zip

javamail jar zip 工具jar包

2015-05-05

2 javaweb文件上传 基于apache的开源库

2 javaweb文件上传 基于apache的开源库 javaweb 开源库 fileUpload

2015-05-04

AppManager.zip

AppManager.zip 的功能: ----软件的获取 ----软件的卸载 ----软件的启动 ----软件的分享

2015-04-29

进程管理.zip

android 的进程管理 --只包括获取进程和杀死进程

2015-04-28

注册与登录模板__dao没有实现.zip

注册与登录模板__dao没有实现.zip dao层可以根据自己的需要实现数据库的传输

2015-04-27

注册与登录_基于xml格式的存储.zip

这是基于 注册和登录_基于xml格式的存储.zip java、dom4j、CommentUtils

2015-04-27

httpcomponents-client-4.4.1-bin.zip

httpcomponents-client-4.4.1-bin.zip

2015-04-23

afinal_0.5_bin.jar

afinal_0.5_bin.jar 包

2015-03-23

XUtils jar包

目前xUtils主要有四大模块: DbUtils模块: android中的orm框架,一行代码就可以进行增删改查; 支持事务,默认关闭; 可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名); 支持绑定外键,保存实体时外键关联实体自动保存或更新; 自动加载外键关联实体,支持延时加载; 支持链式表达查询,更直观的查询语义,参考下面的介绍或sample中的例子。 ViewUtils模块: android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定; 新的事件绑定方式,使用混淆工具混淆后仍可正常工作; 目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。 HttpUtils模块: 支持同步,异步方式的请求; 支持大文件上传,上传大文件不会oom; 支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求; 下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件; 返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。 BitmapUtils模块: 加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象; 支持加载网络图片和本地图片; 内存管理使用lru算法,更好的管理bitmap内存; 可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等... 使用xUtils快速开发框架需要有以下权限: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 混淆时注意事项: 添加Android默认混淆配置${sdk.dir}/tools/proguard/proguard-android.txt 不要混淆xUtils中的注解类型,添加混淆配置:-keep class * extends java.lang.annotation.Annotation { *; } 对使用DbUtils模块持久化的实体类不要混淆,或者注解所有表和列名称@Table(name="xxx"),@Id(column="xxx"),@Column(column="xxx"),@Foreign(column="xxx",foreign="xxx");

2015-03-15

空空如也

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

TA关注的人

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