首页 文章 精选 留言 我的

精选列表

搜索[数据库知识开放麦],共10027篇文章
优秀的个人博客,低调大师

开放平台:Parse for iOS

引言: Parse一款基于Baas的后端云存储服务平台,为开发者提供云端数据存储和读取的能力,Parse团队在其SDK方面花费了大功夫,实现了很多非常有用的功能.并且,非常的稳定,兼容和灵活性,相对于其他Baas平台,Parse在上手方面是最为容易的. Parse的特性如下: 1:自定义数据字典 2:消息推送 3:地理位置 4:数据缓存 5:离线数据同步 6:云端自定义代码 7:二进制文件读取 参考资料: 1:Parse的主页 https://www.parse.com 2: 安装: 1.首选的安装方式是跟着Parse自家提供的官方起步教程即可完成,非常简单! 2.也可以用 CocoPods,只是SDK太肥了,而且装的话,还会有一个 Facebook SDK的依赖. 使用: Parse支持的数据类型主要如下: Number: 对应各种类型,包括:整形,浮点型 转换成NSNumber后存储到Parse Cloud Date: 对应NSDate Array:对应NSArray. 万能的数组(Parse的强大之处) String:对应NSString Null: 很少用到 Pointer: 指针:相当于表与表之间的外键关系, 只存储着某个对象的ID Relation:关系:应付多对多关系时的方案,但是可以用Array达到同意的功能. 查询: Parse设定了尽可能多样的查询方式,并且它还支持NSPredicate. 这对于使用过CoreData的人来说,是比较容易上手的. 首先来说说Parse提供哪些查询接口 时间: 查询创建时间大于某个时间的数据行: NSDate *lastQueryDate = [self lastQueryTime]; if (lastQueryDate == nil) { lastQueryDate = [NSDate date]; } [query whereKey:@"createdAt" greaterThan:lastQueryDate]; 查询缓存策略: kPFCachePolicyIgnoreCache查询不从缓存加载结果或将结果保存到缓存。默认缓存策略为 kPFCachePolicyIgnoreCache。kPFCachePolicyCacheOnly查询会忽略网络,仅从缓存加载结果。如果没有缓存的结果,则会引发 PFError。kPFCachePolicyNetworkOnly查询不从缓存加载结果,但会将结果保存到缓存。kPFCachePolicyCacheElseNetwork查询首先尝试从缓存加载结果,但如果加载失败则从网络加载结果。如果缓存和网络加载都不成功,则会出现 PFError。kPFCachePolicyNetworkElseCache查询首先尝试从网络加载结果,但如果加载失败则从缓存加载结果。如果网络和缓存加载都不成功,则会出现 PFError。kPFCachePolicyCacheThenNetwork查询首先从缓存加载结果,然后再从网络加载。在此情况下,实际上会调用两次回调 - 第一次针对缓存的结果,随后针对网络结果。由于会在不同的时间返回两个结果,因此该缓存策略不能与 findObjects 同时使用。 Push: 官方提供了一个详细的消息推送配置流程: https://parse.com/tutorials/ios-push-notifications Parse远程推送教程实在是太详细了,图文并茂. 在这里我简单复述了一下整个过程方便理解: 1.申请苹果的开发者招生计划,并成功激活. 2.通过本地的Mac系统生成一个证书签名请求(Certificate Signing Request), 3:接下去苹果开发者主页的Member Center(会员中心)创建一个新的App IDs. 并通过证书签名请求激活这个App IDs的远程推送服务功能. 4.下载这个App IDs的推送许可服务,并通过钥匙访问串导出密匙(p12). 5.最后生成这个App IDs的描述文件,并应用到工程中. 6.编写Parse所提供的Push的相关API代码. 实现远程消息推送. 其中有一个步骤是当你通过Certificate Signing Request(证书签名请求)激活了苹果的远程推送通知服务以后. 并下载了推送许可证书:aps_development.cer. 教程中要求从钥匙访问串(Keychain Access)中导出.p12后缀的密匙. 在导出时有两点需要注意: 1:请在名称为 Apple Development IOS Push Services : ***** 或Apple Prodoction IOS Push Services : ***** 的栏位上直接右键,如下图: 图中方框中的三角箭头,请直接无视和忽略他。 里面是证书的创建者信息而已。 虽然也可以导出p12, 但是这个p12是无效(请特别注意) 2:在导出时要求你输入密码,请直接忽视,也就是空密码即可,否则Parse 的 App Settings - Push Notifications里要求上传的p12密匙无法成功. 最后还有一个细节要注意,也就是当你的产品成功发布到应用商店以后,你之前用来测试的开发版本证书,应该替换为发布版本证书(aps_production.cer). 否则从App Store上面下载的应用将无法收到消息推送.. 所以,你需要重新上传发布版本的密匙.跟开发版本的上传方式一样. 成功后如下图所示: 总结: 可能遇到的问题: 1:编译问题. 解决方案: http://stackoverflow.com/questions/15457136/parse-for-ios-errors-when-trying-to-run-the-app

优秀的个人博客,低调大师

Linux初级知识

Linux内核创始人 : 芬兰人李纳斯.托瓦兹Linux是一套免费使用、自由传播的类unix操作系统特点是多用户、多任务、支持多线程和多CPU的系统Linux的发行版:比较知名的有Ubuntu、Redhat、Centos、FedoraLinux应用领域:通常服务器使用LAMP(Linux+Apache+Mysql+Php) LNMP(Linux+Nginx+Mysql+Php) Linux的启动过程,可以分为5个阶段1.内核的引导2.运行Int3.系统初始化4.建立终端5.用户登录系统 操作系统——》/boot--》init进程——》运行级别——》/etc/init.d--》用户登录

优秀的个人博客,低调大师

Spring小知识

两大核心功能:IOC、AOPIOC:动态注入,让一个对象的创建不用new了,可以自动的生产,实现原理利用java里的反射,反射就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。 AOP:面向切面编程,可以为某一类对象 进行监督和控制(也就是 在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过 配置类达到的。

优秀的个人博客,低调大师

Python知识梳理

这是个人学习笔记,非教程,内容会有些混乱 极简教程 数据类型 我们可以使用type()函数类获取对象的类型,Python3中内置数据类型包括:None,int,float,complex,str,list,dict,tuple,set,frozenset,range等,Python2中还有long类型,Python中并没有内置数组类型。 dict,list,set这些是可变类型(用户自定义类型也可变),可以改变类型对象的值;数值和字符串类型则是不可变的。 str与js一样,python中字符串即可用单引号也可用双引号表示 numbersPython3中数值类型有:int和float两种 list字面量表示:[1,1.0,False,'list'] 列表推导式,创建列表的一种简易方法: tuple字面量表示:(1,1.0,False,'tuple') range list、tuple、range均属于序列类型(Sequence Types) dict set/frozenset集合是不包含重复元素的数据集,frozenset是不可变的,set是可变的,可以使用字面量构建一个集合{1,2,2,4,5}会输出{1,2,4,5} 类型转换 Python中类型转换只需调用相关函数即可 函数 # 函数定义模板 def func_name([self,][args]): pass def say_hello(): print('hello python!') # python3.5之后,定义函数时可以添加类型说明 # 这里只是提供一个说明文档而非强制类型约束 def type_instruction(num:int)->int: return num 定义多返回值函数 # 多返回值函数,返回一个tuple对象 def multi_returns(): return 0,1 内置函数 Python中有许多内置函数: dir我们可以使用dir()函数来查看对象都含有哪些成员: map filter reduce不是内置函数,但也很有用 lambda Python中使用lambda关键字即可创建lambda表达式: *args 与 **kvargs *args和**kvargs都用于函数中接收多个参数,这里args和kvargs只是约定俗成的写法,可以换成其它的名称,但*和**则是必须的。*args和**kvargs的区别是,*args用于接受普通参数,**kvargs用于接受键值对参数。 三元运算符 面向对象 Python中一切皆对象(这句话理解起来并不是那么容易),包括函数(C#,JAVA中函数不能独立存在)。这里贴一篇以前写的文章:Python中的类、对象、继承 Python按引用传递对象,对于不可变对象在修改时会产生新的对象;而对于可变对象,所有的修改都会反映在原有对象上。 魔术方法是Python对象模型的重要部分。 可以动态的给对象/类型添加属性,若给类型添加属性,则该属性在已产生的实例上也是可见的: 异常与错误 Python中异常与错误类间关系如下:自定义异常只需继承Exception或各种Error类即可 异常处理 try: raise IOError('使用raise语句抛出异常') except IOError as err: print(err) else: print('未发生异常则执行') finally: pass 捕获多个异常类型: try: raise IOError() except (IOError,TypeError): pass with语句 with...as...语句等价于try...finally...,与C#中的using语句类似 命名规范 module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_VAR_NAME, instance_var_name, function_parameter_name, local_var_name. 应该避免的名称 单字符名称, 除了计数器和迭代器. 包/模块名中的连字符(-) 双下划线开头并结尾的名称(Python保留, 例如__init__) 命名约定 所谓”内部(Internal)”表示仅模块内可用, 或者, 在类内是保护或私有的. 用单下划线(_)开头表示模块变量或函数是protected的(使用import * from时不会包含). 用双下划线(__)开头的实例变量或方法表示类内私有. 将相关的类和顶级函数放在同一个模块里. 不像Java, 没必要限制一个类一个模块. 对类名使用大写字母开头的单词(如CapWords, 即Pascal风格), 但是模块名应该用小写加下划线的方式(如lower_with_under.py). 尽管已经有很多现存的模块使用类似于CapWords.py这样的命名, 但现在已经不鼓励这样做, 因为如果模块名碰巧和类名一致, 这会让人困扰. Python之父Guido推荐的规范 Type Public Internal Modules lower_with_under _lower_with_under Packages lower_with_under Classes CapWords _CapWords Exceptions CapWords Functions lower_with_under() _lower_with_under() Global/Class Constants CAPS_WITH_UNDER _CAPS_WITH_UNDER Global/Class Variables lower_with_under _lower_with_under Instance Variables lower_with_under _lower_with_under (protected) or __lower_with_under (private) Method Names lower_with_under() _lower_with_under() (protected) or __lower_with_under() (private) Function/Method Parameters lower_with_under Local Variables lower_with_under 包与模块 模块包含Python语句或定义的文件就是一个模块,文件名就是模块名。在一个模块中,模块名是全局变量__name__的值。 包包含__init__.py文件的文件夹即可视为一个包,包用于管理模块,可以防止模块命名冲突。如:A.C和B.C,分别表示A包中的C模块和B包中的C模块。 导入模块:import a、import a as alias、from a import *、from a import b,c Python解释器会先从内置模块中寻找导入的模块,然后从sys.path中指定的模块搜索路径寻找模块 测试 编写一个文件操作类,文件名为file_operator.py: # coding=utf-8 import codecs class FileOperator: def save_file(self, file_path, content, encoding="utf-8"): with codecs.open(file_path, "w", encoding) as f: f.write(content) 编写测试用例,文件名为test_file_operator.py: # coding=utf-8 import unittest class TestFileOperator(unittest.TestCase): def test_save_file(self): content = "file content \r\n 文本内容" opt = file.FileOperator() opt.save_file("1.txt", content) if __name__ == "__main__": unittest.main() 工具推荐 iPython VS Code PyCharm 小结 以上是自己近期学习Python的一些总结,全文的主要关注点在Python语言本身。掌握以上内容后,便可以用Python写些脚本,辅以其他第三方包或框架就可以干更多更复杂的事了。如,爬虫、数据分析、后端开发以及现在比较热的人工智能(其实,我是不建议追热点的)。 用了一段时间的Python后,会觉着Python挺有意思的。 最后附上一张,个人总结的语言学习套路: 推荐阅读 人生苦短,为什么我要用Python?Python风格规范Python语言规范[[Python]内存管理](https://chenrudan.github.io/blog/2016/04/23/pythonmemorycontrol.html)Python进阶Python 入门指南Python 3.7.0 documentation

优秀的个人博客,低调大师

基础知识

1. # 这是单行注释 2. """ 这是多行注释 """ IPO input process output python提供了两套索引体系 第一种叫正向递增序号,从0开始,0是第一个元素 arr[0:10] 第二种叫反向递减序号,从-1开始,-1是倒数第一个元素,逐渐反向递减 arr[-5:-1] input()函数,从控制台读取一行,可带参数input("请输入:") 定义一个变量接收返回值 temp = input() print()函数,输出 eval() 评估函数 去掉参数最外侧引号并执行余下的函数 8. if TempStr[-1] in ['F', 'f']: C = (eval(TempStr[0:-1]) - 32) / 1.8 print("转换后的温度是{:.2f}C".format(C)) # {:.2f}是一个占位符, :.2f表示将结果保留两位小数 elif TempStr[-1] in ['C', 'c']: F = 1.8 * eval(TempStr[0:-1]) + 32 print("转换后的温度是{:.2f}F".format(F)) else: print("输入的格式错误") type(eval(N)) == int 判断是不是某种类型 arr[-1]表示取最后一个元素,arr[0,-1] 截取第一个到倒数第二个子串,不包含最后一个 arr[0,arr.len()]

优秀的个人博客,低调大师

知识萃取规范指南-三层知识萃取-构建场景-概念-实体的知识元模型

很多长期写作的人都会遇到一个困境——翻看自己过去几年的文章,少则几十篇,多则数百篇,明明每一个字都是自己写的,每一篇文章都花过心思,但回过头来看,却很难说清楚自己到底积累了什么。更尴尬的是,遇到一个新问题时,隐约记得自己以前写过类似的话题,但翻半天找不到;找到了,又发现当时的写法和现在的理解已经对不上了。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册