- 博客(40)
- 资源 (1)
- 收藏
- 关注
原创 Java 中的静态内部类
静态内部类是static 修饰的内部类,这种内部类的特点是:1、静态内部类不能直接访问外部类的非静态成员,但可以通过new 外部类().成员 的方式访问2、如果外部类的静态成员与内部类的成员名称相同,可通过 类名.静态成员 访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员3、创建静态内部类的对象时,不需要外部类的对象,可以直...
2019-06-05 21:40:50
803
原创 java 中的内部类
内部类就是定义在另外一个类里面的类,如下代码中class Inner 就是 class HelloWorld 的内部类//外部类HelloWorldpublic class HelloWorld { // 内部类Inner,类Inner在类HelloWorld的内部 public class Inner { // 内部...
2019-06-05 21:25:45
250
转载 Jasperreports+jaspersoft studio学习教程(二)- 使用Parameters属性传入Map数据源填充报表
2.1.1 在Studio中新建一个报表模板(DemoReport2),删除不需要的Band,Column Header,ColumnFooter,Summary,Background,在outline界面中选中要删除Band右键-> delete,即可删除。2.1.2 在outline面板中找到Parameters,右键 -> Create Parameter,新建一个...
2019-05-16 21:00:34
823
转载 Jasperreports+jaspersoft studio学习教程(一)- JasperReports简单示例
1.1 导言最近项目中运用JasperReport技术开发报表模块。项目快结束了,所以腾出手来,简单记录一下。与大家相互学习,共同提高。JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。JasperReport是...
2019-05-12 18:16:01
649
转载 Git开发--git merge request 步骤
转载网址:https://blog.youkuaiyun.com/weixin_38208401/article/details/80342122 https://blog.youkuaiyun.com/intheair100/article/details/60875422如今很多项目都采取merge request方式来进行codereview,所有掌握merge reque...
2019-04-25 12:22:29
1945
转载 Xcode 控制台 调试命令
原文地址:http://blog.youkuaiyun.com/likendsl/article/details/7576549XCode4.0以后,编译器换成了LLVM 编译器 2.0与以前相比,更加强大:1.LLVM 编译器是下一带开源的编译技术.完全支持C, Objective-C, 和 C++.2.LLVM 速度比 GCC快两倍,建立的程序也会运行的更快. 因为它更好的利用现代的芯片的结...
2019-04-10 20:54:18
1523
原创 iOS 2019 最新面试题集锦
一、 js 与 原生OC交互方式: 1.JS发起一个假请求,然后用UIwebView的代理方法拦截这起请求,再做相应的处理 2.在iOS 7 之后Apple添加了一个新的库JavaScriptCore,用来做js交互。 首先导入JavaScriptCore 库,然后在OC 中获取上下文对象。在定义好JS需要调用的方法。JSContext对象conte...
2019-03-31 12:03:03
8312
原创 iOS 进程间通信8种方式
1、URL scheme 这个是iOS APP通信最常用到的通信方式,APP1通过openURL的方法跳转到APP2,并且在URL中带上想要的参数,有点类似HTTP的get请求那样进行参数传递。这种方式是使用最多的最常见的,使用方法也很简单只需要源APP1在info.plist中配置LSApplicationQueriesSchemes,指定目标App2的scheme;然后再目标Ap...
2019-03-26 22:18:46
4737
原创 离屏渲染
离屏渲染是指GPU在当前屏幕缓冲区意外的开辟了一个 缓冲区进行渲染操作性能损耗原因:1、创建了新的缓冲区2、上下文的频繁切换产生原因:shouldRasterize 光栅化、遮罩masks、shadows阴影、edgeAntialiasing抗锯齿、不透明、复杂形状、设置圆角、渐变等...
2019-03-21 22:41:24
552
原创 UIView的绘制原理 和 异步绘制的实现
UIView 绘制原理 1、当我们调用【UIView setNeedsDisplay】这个方法时,其实并没有立即进行绘制工作,系统会立即调用CALayer的同名方法,并且在当前layer上打上一个标记,然后会在当前runloop将要结束的时候调用CALayer display 这个方法,然后进入视图的真正绘制过程 2、在【CALayer display】这个方法的...
2019-03-21 22:32:41
1320
原创 iOS 构建缓存时选 NSCache 而非NSDictionary
当系统资源将要耗尽时,NSCache可以自动删减缓存。如果采用普通的字典,那么就要自己编写挂钩,在系统通知时手动删减缓存,NSCache会先行删减 时间最久为被使用的对象NSCache 并不会拷贝键,而是会保留它。此行为用NSDictionary也可以实现,但是需要编写比较复杂的代码。NSCache对象不拷贝键的原因在于,很多时候键都是不支持拷贝操作的对象来充当的。因此NSCache对象不会自...
2019-03-21 22:22:06
393
原创 iOS 响应者链
事件的分发和传递当iOS 程序中发生触摸事件后,系统会将事件加入到UIApplication管理的一个任务队列中 UIApplication将处于任务队列最前端的事件向下分发。即UIWindow UIWindow将事件向下分发,即UIView UIView 首先看自己是否能处理事件,触摸点是否在自己身上。如果能,那么继续寻找子视图 遍历子控件,重复以上两步 如果没有找到,那么自己就是...
2019-03-20 21:21:47
134
原创 TCP 和 UDP
一、TCP 是传输控制协议 transport control protocol ,基于字节流传输,有连接,可以提供可靠地通信传输 TCP充分实现了数据传输时的各种控制功能,可以进行丢包的重发,还可以对次序乱掉的分包进行顺序控制。TCP 作为一种面向连接的传输协议,只有在确认通信端存在时才会发送数据,从而避免数据流量的浪费。TCP 通过检验和、序列号、确认应答 和重发控制等机制...
2019-03-20 15:03:32
163
原创 音频波动动效
效果 如下:.h#import <UIKit/UIKit.h>@interface PAAudioAnimationView : UIView- (void)startAnimation;- (void)stopAnimation;- (void)setSoundsValue:(CGFloat)value;@end.m#import "PAAudioAnimationView.h"@i...
2018-06-06 11:02:29
4311
原创 pop 到指定控制器
前提 通过push方式 -推出控制器1、从 A控制器 push 新的控制器,从新的控制器返回 直接返回到 A控制器 的 前一个 或 前几个控制器(需要对下面代码略作改动),通过下面方式实现:if (self.navigationController.viewControllers.count != arrCount) { NSMutableArray *arr = [NSMutableAr...
2018-06-06 10:51:55
459
原创 UIButton title和image 水平居中
UIImage *image = [UIImage imageWithContentsOfFile:imgPath]; [but setImage:image forState:state]; NSString *str = but.currentTitle; CGSize size1 = [str sizeWithAttributes:@{NSFontAttributeN
2018-01-18 17:24:25
798
原创 自定义tabbar
iOS 自定义tabbar具体代码参考:https://github.com/yuchenArron/TabBar一 、将tabbarviewcontroller 的 tabbar 隐藏 [self.tabBar setHidden:YES];二、自定义tabbarview 继承自 UIView#define CircleDiameter 54#define Screen_Width [UIS
2018-01-18 17:22:48
293
原创 两台mac共享文件
1、打开finder ,按住command + K 会弹出: 2、在服务器地址栏,输入需要连接的mac 的 IP地址。可通过如下方式获取: 点击wifi图标->打开网络偏好设置-> 3、输入IP地址后点击连接: 1)如果弹出:访问被拒绝的提示框。需要在被连接的电脑进行如下设置: 系统偏好设置-> 用户与群组 -> 设置客人的访问权限 4、连接成功后就可以
2017-12-23 09:13:21
16711
原创 三、Audio 系统声音
全能型:AVFoundation编解码:AudiotoolBox底层:AudioUnit3D: openAL控制类VC:mediaPlayerAudio systemsound播放震动效果 播放系统音乐效果 播放提示音效果震动效果: NSString *device = [UIDevice currentDevice]model]; if (device isEqualToString:@”
2017-09-28 22:59:57
362
原创 2.2 Audio file 之 Audio信息获取
引入框架 #import AudioToolbox/AudioToolbox.h> 在项目中拖入音频文件 NSString *filePath = [[NSBundle mainBundle]pathForResource:@”” ofType:@”“]; NSURL *audioUrl = [NSURL URLWithString:filePath];//打开音频文件AudioFi
2017-09-28 22:40:13
1630
原创 二、Audio 架构
Audio架构图 从上图看出,共分为高中低三层 **高层: AVaudioplayer** audio 基本操作:播放 暂停 停止 循环 时间控制:任意时间位置播放、进度控制 从文件或者缓冲区播放 获取音视频关键参数AVaudioqueue 播放录制、可以拿到音频原始处理数据 1、初始化音频管理队列 2、音频队列:管理回调方法 3、实例化音频队列:audioqueueoutpu
2017-09-28 22:01:48
1086
原创 一、Audio 介绍
1、音频在iOS 中的架构和框架 2、音频编解码算法、文件封装格式 3、播放系统声音、震动、提示声音 4、AVfoundation精准中英文语言识别 编码格式:pcm\aac\mp3…Audio 流程图:
2017-09-28 21:50:33
634
原创 AVQueuePlayer 在线播放一组网络音频文件
头文件@interface ZNAudioPlayerUtil : NSObject//播放一组网络音频文件 + (void)playAudios:(NSArraypragma mark - public methods(void)pausePlayer{ AVQueuePlayer *queuePalyer = [ZNAudioPlayerUtil shareInstance].queueP
2017-09-12 19:30:32
1117
原创 iOS 录音文件格式转换 lame库
导入 lame 库文件 ,引入lame.h 头文件下面方法 实现了 格式转换 并删除原文件(NSString*)audio_PCM_to_MP3:(NSString *)recordFilePath changeName:(BOOL)isChange audioTime:(NSInteger)audioTime{NSString *wavFileName = [recordFilePath la
2017-09-12 19:25:51
325
原创 十六进制字符串转二进制 --- OC 实现
//将十六进制字符串转换未二进制字符串 + (NSString*)binaryStrFromHexStr:(NSString*)str{NSString *totalBinaryStr = @"";for (int i = 0;i < str.length;i++){ NSString *subStr = [str substringWithRange:NSMakeRange(i, 1)
2017-07-26 15:51:38
2039
原创 CDN缓存策略
CDN (content delivery network 内容分发网络)通过负载均衡技术,使得用户能够访问到最近的物理机房的文件,以节省网络时间,也就是说一份文件可能在全国甚至 全球的多个服务器存在这就涉及到文件的分发问题。目前CDN采用回源策略来实现文件的分发,即每个域名都关联了一些源服务器 ,只要发布文件到这些服务器即可,CDN会根据策略从服务器拉取数据。以保证用户能尽早访问到最新的文件内容。
2017-07-25 22:03:56
508
原创 assign 和 weak的区别
assign 和weak都是弱引用类型用weak声明的变量在栈中会自动清零,赋值为nil用assign 声明的变量在栈中可能不会自动赋值为nil,会造成野指针错误
2017-06-29 21:49:58
546
原创 堆和栈的区别
堆栈控件分配 栈(操作系统):由操作系统自动释放,存放函数的参数值,局部变量的值。其操作方式类似于数据结构中的栈。 堆(操作系统):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,分配方式类似于链表 堆栈缓存方式 栈使用的是一级缓存,他们通常都是被调用时处于存储空间中,调用完毕立即释放 堆使用的是二级缓存,生命周期由虚拟机的垃圾回收算法来决定。所以调用这些对象的速度相对来的
2017-06-28 21:46:34
257
原创 OC 和 C 的本质区别
OC使用消息结构(messaging structure),c使用函数调用(function calling) 消息结构:运行时所执行的代码由运行环境决定(动态绑定) 函数调用:运行时所执行的代码由编译器决定 OC的重要工作都有“运行期组件”(runtime component)而非编译器完成,包括: OC面向对象特性所需要的去不数据结构及函数 OC全部内存
2017-06-27 22:06:27
1135
原创 iOS socket 编程
socket (套接字)是通信的基石,是支持tcp/ip协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远端主机的IP地址,远端进程的协议端口。Socket是对TCP/IP协议的封装,socket本身并不是协议,而是一个调用接口(API),通过socket,我们才能使用TCP/IP协议。多个TCP连接或多个应用程序进程可能需要通过
2017-06-22 22:12:54
244
原创 蓝牙4.0 概述
v4.0 版本 蓝牙4.0包括三个子规范,即传统蓝牙技术、高速蓝牙技术和新的蓝牙低功耗技术。蓝牙4.0的改进之处主要体现在三个方面,电池续航时间、节能和设备种类上。拥有低成本,跨厂商互操作性,3毫秒低延迟、100米以上超长距离、AES-128加密等诸多特色,蓝牙4.0的有效传输距离有很大提升。3.0版本的有效传输距离为10米,而4.0的有效传输距离最高可达100米。协议层次结构第一层:physic
2017-06-21 22:56:18
908
原创 (二)iOS Core Bluetooth 蓝牙 “外设模式”
在CoreBluetooth框架中,有两个主要的类 中央和外设(Central and Peripheral),整个框架都是围绕这两个类设计的,它俩之间有一系列的回调交换数据。 外设(Peripheral)是生成或保存了数据的设备,中央(Central)是使用这些数据的设备。所有可用的iOS设备可以作为外设(Peripheral)也可以作为中央(Central) ,但不可同时即是外设Perip
2017-06-20 21:50:02
1375
原创 iPhone SDK 应用程序开发 第一章
苹果桌面系统采用的策略,就是创建一种模块化、自包含的应用程序,这种应用程序仅由其自身内部的文件资源构成。 1.1 应用程序剖析 Mac OS X 的前身,NeXT系统,它将应用程序视为一个目录所构成的束。束这个概念引入了一种方法,可以聚合应用程序资源、二进制文件和其他相关文件。 应用程序运行所需的一切都必须包含在自身的目录结构内。(沙盒)应用程序并不知道自己的安装位置,每次安装时,都会有一个唯
2017-06-19 22:48:34
283
原创 (一)CoreBluetooth iOS 蓝牙 “中心模式”
使用Corebluetooth框架进行蓝牙开发,有两种模式:一种是中心模式,另一种是外设模式。 中心模式 分为以下几步: 1.建立中心设备 2.扫描外部设备 3.连接外部设备 4.扫描外部设备的服务和特征 5.利用外部设备的特征与外部设备手法数据一、首先导入框架 #import
2017-06-09 22:27:13
571
转载 GCD介绍(一): 基本概念和Dispatch Queue
什么是GCD? Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写。从基本功能上讲,GCD有点像NSOperationQueue,他们都允许程序将任务切分为多个单一任务然后提交至工作队列来并发地或者串行地执行。GCD比之NSOpertionQueue更底层更高效,并且它不是Cocoa框架的一部分。 除了代码的平行执行能力,GCD还提供高
2017-02-16 18:00:59
223
原创 iOS 多线程(一)Pthread
pthread 是 iOS 多线程的底层实现方式(是POSIX多线程开发框架,是跨平台的C语言框架),平时开发使用很少用到 代码示例如下:/ 创建线程,并且在线程中执行 demo 函数 - (void)pthreadDemo { /** 参数: 1> 指向线程标识符的指针,C 语言中类型的结尾通常 _t/Ref,而且不需要使用 * 2> 用来设置线程
2017-02-16 13:53:08
366
原创 weak & strong self
常遇到一个block要使用self,会处理成在外部声明一个weak变量指向self(__weak __typeof(self) weakSelf = self),在block里又声明一个strong变量指向weakSelf(__strong __typeof(weakSelf) strongSelf = weakSelf),weakSelf是为了block不持有self,避免循环引用,而再声明一个s
2017-02-16 11:37:15
265
原创 如何管理自己github上的项目
1.在github上初始化仓库 在你的github上初始化一个仓库: 初始化仓库完成 通过终端命令或者github客户端将仓库clone到本地 终端命令: git clone https:github.com/你的仓库的地址clone仓库成功,并将你的项目文件拷贝至该目录下 点击github桌面工具右上角的sync按钮进行同步再在git上查证,同步成功
2017-02-10 09:08:37
768
原创 iOS UIView 和 CALayer 的关系
一、概念: UIView不具备显示功能,拥有显示功能的是它内部的图层即CALayer属性当UIView需要显示到屏幕上时,会调用DrawRect:方法进行绘图,并且将所有的内容绘制在自己的图层上Property()CALayer *layer,绘图完成后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示UIView 的Layer属性在系统内部,被维护着三份拷贝。分别是逻辑树,这里是代码可以
2017-02-09 08:47:13
2088
原创 iOS 对象的归档、解档 runtime
iOS 对象的归档、解档 runtime若要实例对象实现归档解档,需要该类遵守NSCoding协议,及以下协议方法项目中以YCArchiveBase类为例,可直接添加属性使用pragma mark - NSCoding(void)encodeWithCoder:(NSCoder *)aCoder{ unsigned int count = 0; //取出所有属性 objc_propert
2017-02-07 22:02:31
454
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人