- 博客(66)
- 资源 (3)
- 收藏
- 关注
原创 flutter -- root view 架构
### 1. Stack + OffStage + TickerMode能保持状态,不能实现懒加载* Stack:类似Android里的FrameLayout,按照children的顺序依次绘制。用它可以保存所有子页面的状态。* OffStage:可以控制控件是否参与布局和绘制* TickerMode:可以控制控件是否动画``` Widget _bodyPage() { return Stack( children: <Widget> [ _...
2021-02-01 17:34:19
328
原创 flutter -- 创建一个新的应用
# 创建一个新的应用## VS Code1. 启动 VS Code2. 调用 View>Command Palette… (shift+command+P)3. 输入 ‘flutter’, 然后选择 ‘Flutter: New Module Project’ action4. 指定放置项目的位置,然后按蓝色的确定按钮5. 输入 Project 名称 (如myapp), 然后按回车键6. 等待项目创建继续,并显示main.dart文件## Terminal```$ .
2021-02-01 17:05:09
252
原创 使用DZNEmptyDataSet指定customview时报 height and vertical position are ambiguous for uiview
直接修改源码- (void)setupConstraints.....if (_customView) { [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[customView]|" options:0 metrics:nil views:@{@"customView":_customView}]];// [self.contentView
2020-08-17 15:24:10
1081
原创 use Swift for TensorFlow
在安装 swift tensorflow toolchain的是时候会报开发者认证安全问题,安装完成之后,运行下面代码仍然会报签名错误,通过启用“Signing & Capabilities > Hardened Runtime”中的“Disable Library Validation”选项来解决问题,此选项使Xcode项目无需任何代码签名即可添加框架。import TensorFlow#if canImport(PythonKit) import PythonKit..
2020-08-15 11:03:08
236
原创 SourceTree避免输入密码方法
方式一:利用命令行已经拉取完代码,在sourcetree 的界面打开终端:打开终端之间在终端输入 git config --global credential.helper store这条命令之后执行一次push操作,这个时候还要输入账号密码,以后就不用了.方式二:在git的congfig的url字段里加入账号密码1.https://git.coding.net/项目.git2. https://账号:密码@git.coding.net/项目.git由1变为2,且2中..
2020-07-09 16:42:14
1698
转载 WKWebView详解&WKWebVieW和JS交互
开发App的过程中,常常会遇到在App内部加载网页,通常用UIWebView加载。而这个自iOS2.0开始使用的Web容器一直是开发的心病:加载速度慢,占用内存多,优化困难。如果加载网页多,还可能因为过量占用内存而给系统kill掉。各种优化的方法效果也不那么明显iOS8 以后,苹果推出了新框架 WebKit,提供了替换 UIWebView 的组件 WKWebView。各种 UIWebView 的性能问题没有了,速度更快了,占用内存少了,体验更好了,下面列举一些其它的优势:1、在性能、稳定性、功能方面有很.
2020-07-01 11:16:01
2214
原创 metal基础
整体渲染过程MTLDevice代表GPU设备,提供创建缓存、纹理等的接口;MTLCommandQueue 用于组织命令缓冲区以供GPU执行的队列。MTLCommandBuffer 一个容器,用于存储编码的命令以供GPU执行。MTLCommandEncoder 将GPU命令写入命令缓冲区的编码器。CommandQueue、CommandBuffer、CommandEncoder的关系顶点渲染过程MTLLibrary Metal着色器功能的集合。MTLRenderPipelineSt
2020-06-29 19:24:23
341
原创 使用Jenkins 遇到的坑
1.插件安装失败更新中心镜像设置修改更新中心的地址为 https://updates.jenkins-zh.cn/update-center.json2.调用Xcode失败xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Develop...
2020-04-22 16:08:13
629
原创 Jenkins Xcode 插件应用
Jenkins的安装可以参考我的另一篇博文Jenkins的安装和删除1.安装xcode插件插件管理 -- 可选插件 中搜索Xcode integration选中直接安装2.应用1)、新建一个项目2)、General -- 描述: 项目描述3)、源码管理 -- Git 输入仓库URL指定分支,我的是直接访问的钥匙串,如果出现报错可以直接添加Cr...
2020-04-22 15:59:21
794
原创 Jenkins安装和删除
1.brew 安装$brewinstallJenkins2.命令行启动Jenkins$ jenkins3.浏览器打开http://localhost:8080/4.获取密码$sudo cat /Users/***/.jenkins/secrets/initialAdminPassword5.安装推荐插件安装推荐插件,可能会失败,大多是因为网络的问题,,多试几...
2020-04-22 15:25:11
1697
原创 Jenkins笔记
一、安装运行1.brew 安装$brewinstallJenkins2.命令行启动Jenkins$ jenkins3.浏览器打开http://localhost:8080/4.获取密码$sudo cat /Users/***/.jenkins/secrets/initialAdminPassword5.安装推荐插件安装推荐插件,可能会失败,大...
2020-04-16 16:28:44
535
原创 Jenkins安装插件超时
Jenkins自动打包ios工程详细使用方法可参考这一篇博文,我在此不做赘述,这里主要写一下遇到的报错1.安装好选择推荐插件安装,部分插件安装失败,其实是大部分安装失败,点开monitor一看全是爆红,一版滑不到底,究其原因就是依赖没有加载成功,点击纠正,进入可选插件,直接搜插件的名称,直接安装直接安装插件还是失败java.net.SocketTimeoutException...
2020-03-27 22:55:26
4913
原创 全局gitignore_global导致文件被忽略
在用GitHub Desktop上传工程时,发现.xcodeproj工程文件没有传到远程仓库,使用 git add 命令行添加又报错,****:Petrel roo$ git add Petrel.xcodeprojThe following paths are ignored by one of your .gitignore files:Petrel/Petrel.xcodeproj...
2020-03-27 09:51:02
446
原创 URLNavigator应用及源码解析
应用集成pod 'URLNavigator' 创建NavigationMap文件 将视图注册到URL模式navigator.register("petrel://douban") { url, values, context in return DouBanViewController()}在didFinishLaunchingWithOptions方法中初始化...
2020-03-26 12:21:36
486
原创 URLNavigator应用及源码解析
### 集成``` pod 'URLNavigator'```### 应用1. 创建`NavigationMap`文件2. 将视图注册到URL模式```navigator.register("petrel://douban") { url, values, context in return DouBanViewController()}```3. 在`didFi...
2020-03-26 09:26:26
1072
原创 iOS开发之网络安全
篡改数据客户端通常会保存uid,访问接口时传入uid告诉服务器是谁访问。那么引出了最初级的安全问题,如果我们仅仅只信任uid那一旦修改这个参数值就可以篡改别的用户数据了。 使用token,在用户登录成功服务端返回uid和token,客户端访问服务器时提供这两个参数,uid区别唯一性,token验证合法性。这样即使修改了uid,对应的token不一致也无法成功。 使用https,...
2020-03-10 11:27:09
399
转载 iOS耗电量检测与优化
一、耗电量检测1、进入手机"设置"->"电池",可以直观的看出来手机应用的耗电情况。image.pngimage.png2、使用Xcode打开你的工程,然后插上手机,使用真机running项目(必须是真机),然后command+6,点击Energy Impactimage.png蓝色表示--合理 黄色--表示程序比较耗电 红色--表示仅仅轻度 ...
2020-03-10 11:07:53
1073
原创 App启动优化
App启动的三个阶段:main()函数执行前; main()函数执行后; 首屏渲染完成后。main()函数执行前加载可执行文件 加载动态链接库 Objc运行时初始处理,相关类的注册、category注册、selector唯一性检查等 初始化,执行+load()方法、__attribute__((constructor))修饰的函数调用、创建c++静态全局变量此阶段优化方案:...
2020-03-05 14:05:13
128
原创 iOS卡顿监测方案总结
整理了一下iOS中卡顿监测的那些方案,不了解卡顿的原理的可以看这篇文章iOS 保持界面流畅的技巧,写的很好。FPSFPS (Frames Per Second) 是图像领域中的定义,表示每秒渲染帧数,通常用于衡量画面的流畅度,每秒帧数越多,则表示画面越流畅,60fps 最佳,一般我们的APP的FPS 只要保持在 50-60之间,用户体验都是比较流畅的。监测FPS也有好几种,这里只说最...
2020-03-05 12:07:02
435
原创 1 duplicate symbol for architecture armv7
duplicate symbol _registerTag in: /Users/bear/Library/Developer/Xcode/DerivedData/CarShare-aocjqpzrgbdimnfzsvvibtngyved/Build/Intermediates.noindex/XXXX.build/Debug-iphoneos/XXXX.build/Objects...
2019-09-11 10:50:26
864
原创 项目引入 protobuf 历程
最近在做出行类的项目,需要socket上传分发 location 数据,之前都是json数据,现在要改成protobuf,头一次听说这个东东,下面是搜到的一些内容,然后写了一个demo,用Python实现了一个简单的socket 服务端,简单实现发送分发protobuf数据。闲话少说,让我们先了解一下protobuf是什么protocol buffers 是一种语言无关、平台无关、可扩展的序列...
2019-09-10 16:05:04
431
原创 cocoapods 引入 三方库 历程
在已有的工程中没有使用 pod, 新建一个demo手动导入protobuf时报错GPB文件找不到,直接使用pod导入没有出现类似错误,所以就在项目工程中引入pod去集成protobufplatform :ios, '8.0'use_frameworks!source 'https://github.com/CocoaPods/Specs.git'target 'Project' do...
2019-09-10 11:02:53
317
原创 vapor 之 Router
Swift vapor3 - API与Router这里有一篇博文写的很详细,自认没他写的好,我就不赘述这部分内容啦,请自行点击查看,关于这片文章之外的内容添加一点router.groupedgroup后可以添加路径和中间件,添加路径不必赘述,在提供的可变参数“中间件”中创建一个新的“路由器”,后面所有添加的路由都将被中间件封装router.register(collection: &l...
2019-08-22 16:12:32
152
原创 Ping for mac
终端打开终端 , ping <域名> 停止: control + c网络实用工具Spotlight 搜索“网络实用工具” 选中ping页面
2019-08-22 09:02:37
906
原创 vapor xcode failed
dependencies错误$ vapor xcodeGenerating Xcode Project [Failed]/Users/roo/Roo/Vapor/Demo: error: manifest parse error(s):/Users/roo/Roo/Vapor/Demo/Package.swift:9:19: error: expression type '[Pack...
2019-08-16 17:07:50
491
原创 MySQL 从安装到卸载(Mac)
1,安装、卸载安装官网下载免费,我的是社区版mysql-8.0.16-macos10.14-x86_64,双击dmg文件,安装列表里只有一个点击安装即可,安装成功系统偏好设置中即可显示出来,单击查看状态Start MySQL when your computer starts up 默认选中,Stop MySQL Server 停止MySQL服务卸载sudo rm /...
2019-08-14 09:33:52
370
原创 vapor 链接MySQL失败
configure.swift // === mysql === // 首先注册数据库 try services.register(FluentMySQLProvider()) // Configure a MySQL database let mysql = MySQLDatabase(config: MySQLDatabaseConfig(host...
2019-08-13 20:33:29
309
原创 category、extension、protocol
分类(category)① category只能添加“方法”,不能添加成员变量。② 分类中可以访问原来类中的成员变量,但是只能访问@protect和@public属性。③ 添加方法加上前缀,添加方法会覆盖父类的同名方法,可以防止意外覆盖,也防止被别人覆盖。④ 分类中添加的成员变量,要通过getter、setter方法进行添加。类扩展(extension)① 类扩展的属性和方法都是私有的,...
2019-07-08 21:16:53
230
原创 关于内存管理
什么是内存管理?是指软件运行时对计算机内存资源的分配和使用技术。其最主要的目的就是如何高效、快速的分配,并且在适当的时候释放和回收内存资源。内存分配在 iOS 中数据是存在堆和栈中的,然而我们的内存管理管理的是堆上的内存,栈上的内存并不需要我们管理。非OC对象(基础数据类型)存储在栈上 OC对象存储在堆上引用计数引用计数是计算机编程语言中的一种内存管理技术,是指将资源(可以是对...
2019-06-20 09:19:13
147
原创 关于埋点
先说一下埋点是干嘛的,埋点可以解决两大类的问题:一是了解用户使用App的行为, 二是降低分析线上问题的难度。常见的埋点方式有 代码埋点、可视化埋点和无埋点。其中,可视化埋点和无埋点属于无侵入的埋点代码埋点主要通过手写代码的方式来埋点,能很精确的需要埋点的代码处上埋点代码,可以很方便的记录当前环境的变量值,方便调试,追踪埋点内容,但开发工作量大,并且埋点代码到处都是,后期难以维护。 可...
2019-06-20 07:50:47
280
原创 关于链接器
编译器和解释器执行代码的特点如下:采用编译器生成机器码执行的好处就是效率高,缺点就是调试时间长 采用解释器执行的好处是编写调试方便,缺点是执行效率低iOS开发采用的编译器是 LLVMLLVM是编译器工具链接技术的一个集合。其中 lld 项目是内置链接器。编译器会对每个文件进行编译,生成Mach-O(可执行文件);链接器会将项目中的多个 Mach-O 文件合并成一个LLVM编译过程如...
2019-06-19 18:37:16
124
原创 项目模块化记事
首先解决三个问题:模块粒度应该如何划分? 如何分层? 多团队如何协作?颗粒度划分对于 iOS面向对象编程开发模式来说,我们应该遵循以下五个原则,即solid原则单一功能原则:对象功能要单一, 不要在一个对象里添加很多功能 开闭原则:扩展是开放的,修改是封闭的 里氏替换原则:子类对象是可以替代基类对象的 接口隔离原则:接口的用途要单一,不要在一个接口上根据不同的入参实现多个功...
2019-06-17 22:44:53
121
原创 APP启动那点事
一般而言,App的启动时间指的是从用户点击App开始,到用户看到第一个界面之间的时间。总结来书,App的启动包括三个阶段:main()函数执行前; main()函数执行后; 首屏渲染完成后。main()函数执行前在 main() 函数执行前,系统主要会做下面几件事:加载可执行文件 (App 的 .o文件集合) 加载动态链接库,进行rebase 指针调整和bind符号绑定 Ob...
2019-06-17 17:45:59
105
转载 Swift: 对于weak、unowned的理解
可参考这些文章:1.Swift内存管理、weak和unowned以及两者区别(如何使用Swift 中的weak与unowned?)2.Swift:Weak 和 Unowned3.扒一扒swift中的unowned和weak下总结:1.共同点:1.1 引用对象的自动引用计数都不会加1,不会造成对引用对象的强引用。2.不同点:2.1 weak的对象,在blo...
2019-06-16 19:17:39
767
转载 socket、tcp、udp、http 的认识及区别
一、先来一个讲TCP、UDP和HTTP关系的1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传输层中有TCP协议与UDP协议。在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。因此,HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。...
2019-04-16 11:23:43
99
原创 tf.expand_dims()、tf.tile()、tf.squeeze()
tf.expand_dims(input, dim, name=None)TensorFlow中,想要维度增加一维,可以使用tf.expand_dims(input, dim, name=None)函数。当然,我们常用tf.reshape(input, shape=[])也可以达到相同效果,但是有些时候在构建图的过程中,placeh...
2019-03-29 14:15:03
780
转载 python中数组和列表读取一列的方法
在python中,普通的列表list和numpy中的数组array是不一样的,最大的不同是:一个列表中可以存放不同类型的数据,包括int、float和str,甚至布尔型;而一个数组中存放的数据类型必须全部相同,int或float。 在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,4]需要4个指针和四个数...
2019-03-29 14:02:12
23950
1
原创 用tensorflow构建动态RNN
直接看代码def create_cell(): cell = rnn.LSTMCell(num_units) return rnn.DropoutWrapper(cell, input_keep_prob=0.5)rnn_cell = rnn.MultiRNNCell([create_cell() for _ in range(2)])output, states = ...
2019-03-28 22:50:56
370
原创 tensorflow报错信息
报错信息OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initialized.OMP: Hint: This means that multiple copies of the OpenMP runtime have been linked into the program. Th...
2019-03-28 14:25:56
368
原创 TF-IDF
TF-IDF:是一种加权技术。采用一种统计方法,根据字词在文本中出现的次数和在整个语料中出现的文档频率来计算一个字词在整个语料中的重要程度。优点:能过滤掉一些常见的却无关紧要的词语,同时保留影响整个文本的重要词语。公式如下:TF−IDF(x)=TF(x)∗IDF(x)TF(Term Frequency):表示某个关键词在整篇文章中出现的频率。IDF(InversDocum...
2019-03-20 16:54:06
153
tensorflow中文文档
2018-06-06
XCTestAPI文档
2017-09-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人