首页 文章 精选 留言 我的

精选列表

搜索[安全框架],共10000篇文章
优秀的个人博客,低调大师

iOS FMDB(数据库框架)

FMDB 1. 导包 // 点击项目->General->Linked Frameworks and Libraries->搜索libsqlite3.tbd,并add. #import "FMDB.h" #import <sqlite3.h> @interface ViewController () // 数据库对象 @property (nonatomic, strong) FMDatabase *fmDatabase; @end 2. 打开数据库 // 创建数据库路径 NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"data.sqlite"]; // 创建数据库对象 FMDatabase *db = [FMDatabase databaseWithPath:path]; self.fmDatabase = db; // 打开数据库,true,打开成功;false,打开失败 BOOL isSuccess = [db open]; // 判断是否打开成功 if (isSuccess) { NSLog(@"打开数据库成功"); NSLog(@"数据库路径:%@", path); } else { NSLog(@"打开数据库失败"); } 3. 创建表 // 创建表,执行sql语句,增删改相同,查询不一样 NSString *sql = @"create table if not exists test(id integer primary key autoincrement, name text, age integer);"; // 执行创建表命令,true, 创建成功;false,创建失败 BOOL isSuccess = [self.fmDatabase executeUpdate:sql]; if (isSuccess) { NSLog(@"创建表成功"); } else { NSLog(@"创建表失败"); } 4. 插入数据 // 向表中添加100条数据 for (int i = 0; i < 100; i++) { // 名称设置 NSString *name = [NSString stringWithFormat:@"item-%d", i]; // 随机生成20--25岁之间的年龄 NSInteger age = arc4random_uniform(5) + 20; // sql语句拼接 NSString *sql = [NSString stringWithFormat:@"insert into test(name,age) values('%@',%zd);", name, age]; // 执行插入语句 BOOL isSuccess = [self.fmDatabase executeUpdate:sql]; // 判断是否添加成功 if (isSuccess) { NSLog(@"添加成功"); } else { NSLog(@"添加失败"); } } 5. 查询数据 // 查询语句 NSString *sql = @"select name,age from test where age = 23;"; // 执行查询语句 FMResultSet *result = [self.fmDatabase executeQuery:sql]; // 遍历查询结果 while ([result next]) { // name NSString *name = [result stringForColumnIndex:0]; // age NSInteger age = [result intForColumnIndex:1]; NSLog(@"name = %@, age = %ld.", name, age); } 6. 更新数据 // 修改语句 NSString *sql = @"update test set age = 30 where age < 22;"; // 执行sql语句 BOOL isSuccess = [self.fmDatabase executeUpdate:sql]; if (isSuccess) { NSLog(@"修改数据成功"); } else { NSLog(@"修改数据失败"); } 7. 删除数据 // 删除语句 NSString *sql = @"delete from test where age > 25;"; // 执行语句 BOOL isSuccess = [self.fmDatabase executeUpdate:sql]; if (isSuccess) { NSLog(@"删除成功"); } else { NSLog(@"删除失败"); }

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

AliOS Things网络适配框架 - SAL

AliOS Things中提供了丰富的SAL开发组件,来加速MCU+通信连接芯片的应用场景开发和部署。在此类应用场景中,主控MCU芯片通过UART或SPI总线与WiFi、NB-IoT等通信芯片相连,AliOS Things操作系统和用户APP运行在主控MCU中,需要网络数据访问时,通过外接的通信芯片进行网络负载的接收和发射。主控MCU和外接通信芯片之间的通信,可以是AT Command通道,也可以是厂商私有协议通道。 AliOS Things SAL方案概述 目前,AliOS Things提供了atparser、at_adapter、SAL等开发组件。借助这些组件,用户可以方便地进行应用开发,同时这些组件也方便厂商在现有MCU产品基础上通过外接通信芯片方式扩展网络访问能力。下图展示了AliOS Things提供的SAL组件和方案架构:

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

android网络框架Retrofit 同步异步

http://blog.csdn.net/jiguangcanhen/article/details/39006197 同步的方式: 1)首先定义要接口。注解Get表示使用的Get请求方式,{user}代表要被替换的数据 public interface GitHubService { @GET("/users/{user}/repos") List<Repo> listRepos(@Path("user") String user); } 2)初始化RestAdapter,并利用动态代理来创建的接口对象。 RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint("https://api.github.com") .build(); GitHubService service = restAdapter.create(GitHubService.class); 3)使用网络访问并返回 List<Repo> repos = service.listRepos("octocat"); 异步的方式: @POST("/users/new") void createUser(@Body User user, Callback<User> cb); 注:body注解,在进行请求前对象会被转换器进行相应的数据转换。 前两部和之前的相同,不同在于最后一个参数变成了CallBack对象。 controller.getLogin(mail, password,newCallback<UserDataModel>() { @Override publicvoidfailure(RetrofitError error) { //TODOAuto-generated method stub } @Override publicvoidsuccess(UserDataModel ldm, Response response) { //TODOAuto-generated method stub }); 可以看到当请求网络返回之后,会在failure中和success中进行回调,而且默认的数据转换器会把相应的json字符串转换为对象。(当然,我们也可以定义自己的数据转换器) 定义自己的数据转换器: publicclassMyConverterimplementsConverter { @Override publicObject fromBody(TypedInput body, Type type)throwsConversionException { StringBuffer result =newStringBuffer(); try{ InputStream is = body.in(); byte[] buffer =newbyte[1024]; while(is.read(buffer) != -1){ result.append(newString(buffer,"UTF-8")); } }catch(IOException e) { e.printStackTrace(); } returnresult; } @Override publicTypedOutputtoBody(Objectobject) { returnnull; } } 上面的自定义数据转换器,会在请求成功之后,返回给我们字符串,而不是相应的被gson转换过格式的字符串。 RestAdapter restAdapter =newRestAdapter.Builder() .setEndpoint(“url”) .setConverter(newMyConverter()) .build(); 在创建RestAdapter之后创建设置使用自己的数据转换器就可以了。 我们还可以灵活的进行其他的配置: 1)设置请求拦截器,会在请求发出前,进行拦截。 RequestInterceptor requestInterceptor = new RequestInterceptor() { @Override public void intercept(RequestFacade request) { request.addHeader("User-Agent", "Retrofit-Sample-App"); } }; RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint("https://api.github.com") .setRequestInterceptor(requestInterceptor) .build(); 2)设置错误控制器 class MyErrorHandler implements ErrorHandler { @Override public Throwable handleError(RetrofitError cause) { Response r = cause.getResponse(); if (r != null && r.getStatus() == 401) { return new UnauthorizedException(cause); } return cause; } } RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint("https://api.github.com") .setErrorHandler(new MyErrorHandler()) .build(); 3)设置log日志。 RestAdapter restAdapter = new RestAdapter.Builder() .setLogLevel(RestAdapter.LogLevel.FULL) .setEndpoint("https://api.github.com") .build(); 上面只是简单介绍了它的使用,其实它还有很多的功能,Get,Post,Put,Delete,Head……具体请参见官方网址。 版权声明:本文为博主原创文章,未经博主允许不得转载。 本文转自wanqi博客园博客,原文链接:http://www.cnblogs.com/wanqieddy/p/4933606.html如需转载请自行联系原作者

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

Docker基本概念和框架

Docker简介 启动Docker容器: 什么是容器? 一种虚拟化的方案 操作系统级别的虚拟化 只能运行相同或相似内核的操作系统 依赖于Linux内核特性:Namespace和Cgroups(Control Group) 容器技术优点: 占用磁盘空间小 资源占用小 对CPU、内存资源消耗小 什么是Docker? 将应用程序自动部署到容器 Go 语言开源引擎 Github地址:https://github.com/docker/docker 2013年初 dotCloud 基于Apache2.0 开源授权协议发行 Docker的目标 提供简单轻量的建模方式 职责的逻辑分离 快速高效的开发生命周期 鼓励使用面向服务的架构 Docker的使用场景 1、使用Docker容器开发、测试、部署服务。 2、创建隔离的运行环境 3、搭建测试环境 4、构建多用的平台即服务(PaaS)基础设施 5、提供软件即服务(SaaS)应用程序 6、高性能、超大规模的宿主机部署 例如: 1、腾讯万台规模的Docker应用实践 Docker的基本组成 docker client客户端 docker daemon守护进程 docker image 镜像 docker container 容器 docker registry 仓库 Docker客户端/守护进程 c/s架构 本地/远程 Docker Image 镜像 容器的基石 层叠的只读文件系统 联合加载(union mount) Docker Container 容器 通过镜像启动 启动和执行阶段 写时复制(copy on write) Docker Registry仓库 公有 私有 docker Hub docker version 查看docker版本 docker search tutorial 查找tutorial镜像 docker pull learn/turorial 从仓库下载镜像到本地 docker run learn/turorial echo ‘ hello word’ docker run learn/turorial apt-get install -y ping 在容器中安装ping命令 docker ps -l 查看容器 docker commit 69822a9948422 learn/ping 将修改的容器提交 docker run learn/ping pingwww.google.com运行镜像 docker ps 查看你当前镜像 docker inspect efefdc74ald5 查看你运行中的容器 docker image 查看镜像 docker push learn/ping 将镜像保持到docker hub仓库上 Docker容器相关技术简介 Docker依赖的Linux内核特性 Namespaces 命名空间 Control groups (cgroups)控制组 Docker源码分析:http://www.infoq.com/cn/articles/docker-source-code-analysis-part1/ 本文转自 yard521 51CTO博客,原文链接:http://blog.51cto.com/tangyade/1905232,如需转载请自行联系原作者

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

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部分的功能。

用户登录
用户注册