当前位置:  编程技术>综合
本页文章导读:
    ▪JQuery ajax use json communicate with server      好久没写文章了,我也心痒痒的,嘿嘿。现在写一篇文章。   好了 最近调查的任务颇多,也没来得及写下来。   好了 开始   1. 我今天要说的,大家可能已经知道。怎么用JQuery访问后台,交.........
    ▪关于iOS系统中通讯录的访问      在早些时候,当iOS 6还没出来的时候,我们访问通讯录只要如下简单的代码: ABAddressBookRef addressBook = ABAddressBookCreate(); 不过在iOS 6上,这个API返回空值。这时候需要用到如下代码: // Call.........
    ▪数据结构学习之栈       注:本文的主要目的是为了记录自己的学习过程,也方便与大家做交流。转载请注明来自: http://blog.csdn.net/ab198604         一般来说,在进行程序设计时需要考虑数据的存储.........

[1]JQuery ajax use json communicate with server
    来源:    发布时间: 2013-11-05

好久没写文章了,我也心痒痒的,嘿嘿。现在写一篇文章。

 

好了 最近调查的任务颇多,也没来得及写下来。

 

好了 开始

 

1. 我今天要说的,大家可能已经知道。怎么用JQuery访问后台,交互的方式就是JSon,对于拿哥来说,这个比较简单,嘿嘿

,在这里也瞥我啊,自己会就会把

 

2.给出Server端的code

 

List<Person> persons = personService.getPersonList();  
response.setContentType("text/html;charset=utf-8");  
response.setCharacterEncoding("utf-8");  
PrintWriter pw= response.getWriter();  
JSONArray json_ps = JSONArray.fromObject(persons);  
pw.write(json_ps.toString());  

 

 这个是抄袭过来的。我本身的目的不是后台

 

3.JQuery 代码

 

 

$.post(
		'tableoperation.htm', 
		{}, 
		function (data) {
			console.log(data.column);
		}
);
 

 

好了。

 

var person = '{"id":5,"name":"aa","age":25,"high":155.00}';  

 

 

String personJ = request.getParameter("personStr");  

        JSONObject jsonObject = JSONObject.fromObject(personJ);  

        Person person = (Person)JSONObject.toBean(jsonObject,Person.class);  

 

 

 



已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐
  • —软件人才免语言低担保 赴美带薪读研!—




    
[2]关于iOS系统中通讯录的访问
    来源: 互联网  发布时间: 2013-11-05

在早些时候,当iOS 6还没出来的时候,我们访问通讯录只要如下简单的代码:

ABAddressBookRef addressBook = ABAddressBookCreate();

不过在iOS 6上,这个API返回空值。这时候需要用到如下代码:

// Call ABAddressBookCreateWithOptions to create an instance of AddressBook. The
// ABAddressBookRef will initially not have access to contact data. The app must
// then call ABAddressBookRequestAccessWithCompletion to request this access.
// The options argument is reserved for future use. Currently it will always be NULL.
// If access to contact data is already restricted or denied, this will fail returning
// a NULL ABAddressBookRef with error kABOperationNotPermittedByUserError.
AB_EXTERN ABAddressBookRef ABAddressBookCreateWithOptions(CFDictionaryRef options, CFErrorRef* error) __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_6_0);

由于之前的iOS 版本在隐私方面被人诟病,以至于出现App在没有提醒用户的情况访问通讯录而被拒绝的案例。现在每个App要访问通讯录都应该得到用户的授权:

因此,如上注释所描述的,我们应该调用如下API来获取授权:

// Users are able to grant or deny access to contact data on a per-app basis. To request
// access to contact data, call ABAddressBookRequestAccessWithCompletion. This will not
// block the app while the user is being asked to grant or deny access. Until access has
// been granted, a non-NULL ABAddressBookRef will not contain any contacts and any attempt to
// modify contacts will fail with CFErrorRef returning kABOperationNotPermittedByUserError.
// The user will only be prompted the first time access is requested; any subsequent calls
// to ABAddressBookCreateWithOptions will use the existing permissions. The completion
// handler is called on an arbitrary queue. If the ABAddressBookRef is used throughout the app,
// then all usage should be dispatched to the same queue to use ABAddressBookRef in a
// thread-safe manner.
typedef void(^ABAddressBookRequestAccessCompletionHandler)(bool granted, CFErrorRef error);
AB_EXTERN void ABAddressBookRequestAccessWithCompletion(ABAddressBookRef addressBook,  ABAddressBookRequestAccessCompletionHandler completion) __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_6_0);

    ABAddressBookRef addressBook = NULL;
    __block BOOL accessGranted = NO;
    
    if (ABAddressBookRequestAccessWithCompletion != NULL) { // we're on iOS 6
        dispatch_semaphore_t sema = dispatch_semaphore_create(0);
        ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
            accessGranted = granted;
            dispatch_semaphore_signal(sema);
        });
        dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
        dispatch_release(sema);
    }
    else { // we're on iOS 5 or older
        accessGranted = YES;
    }
    
    if (accessGranted) {
        // Do whatever you want here.
    }

不过这只会在第一次时才显示对话框,如果用户已经拒绝了,我们可以判断下授权状态:

// To check the app's access to contact data. Based upon the access, the app could
// display or hide its UI elements that would access any AddressBook API.
//
// kABAuthorizationStatusNotDetermined
// The user has not yet made a choice regarding whether this app can access the data class.
//
// kABAuthorizationStatusRestricted
// This application is not authorized to access the data class. The user cannot change
// this application’s status, possibly due to active restrictions such as parental controls
// being in place.
//
// kABAuthorizationStatusDenied
// The user explicitly denied access to the data class for this application.
//
// kABAuthorizationStatusAuthorized
// This application is authorized to access the data class.
//
typedef CF_ENUM(CFIndex, ABAuthorizationStatus) {
    kABAuthorizationStatusNotDetermined = 0,
    kABAuthorizationStatusRestricted,
    kABAuthorizationStatusDenied,
    kABAuthorizationStatusAuthorized
};
AB_EXTERN ABAuthorizationStatus ABAddressBookGetAuthorizationStatus(void) __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_6_0);

通过判断授权状态,我们可以再次提醒用户进行授权。

比较糟糕的是,在中文版上,访问通讯录会出现汉化错误,XXX 想访问您的日历:


我突然发现微信还给了用户更为详细的信息,表示现在是要访问通讯录,而非日历。于是,我在上面提到的代码中翻了几遍,都没找到设置alertView详细信息的地方,最后在SO上得到解答 —— 通过在plist设置NSContactsUsageDescription关键字。详细文档见此。


作者:jasonblog 发表于2013-1-5 14:36:23 原文链接
阅读:0 评论:0 查看评论

    
[3]数据结构学习之栈
    来源: 互联网  发布时间: 2013-11-05

注:本文的主要目的是为了记录自己的学习过程,也方便与大家做交流。转载请注明来自:

http://blog.csdn.net/ab198604


        一般来说,在进行程序设计时需要考虑数据的存储方式,不同的数据存储方式决定了其相应的数据检索方法。通常检索数据常用的存储结构为栈和队列。下面先简单介绍下这“栈”这种存储结构的一些基本知识。         一、栈

        栈是一种按照先进后出的数据存储结构(LIFO),它检索元素的顺序与存储元素的顺序是相反的。所谓的先进后出是指数据元素的存储与删除操作,这意味着最后一个存储的元素将会第一个被删除。举个例子,现在要把"5,4,3,2,1"存入到“栈”中,从栈的底部到顶部分别是5,4,3,2,1,当删除时,顺序为“1,2,3,4,5”。

        不说理论了,来点干货。如何实现“栈”这种数据结构呢?其实,实现栈的方法有很多,可以用顺序的线性存储结构和链式的非线性存储结构。顺序存储结构如数组的方式。链式存储结构,顾名思义,是采用链表的存储方式。采用链表的方式来实现栈不仅操作简单,而且可以使栈具有多态的特性。这是因为除了栈本身的一些操作外,它毕竟本身就是一种链表,它具有与链表的相同属性。因此还可以使用链表的一些操作。所以本文采用链表的方式来实现栈。

        二、栈的结构及接口定义

        由于栈是链表的另一种表现形式,所以对栈的结构定义可以在链表的基础上进行一次封装。如下所示:

/* 
 * filename: stack.h
 * author:zhm
 * date:2012-01-05
 */

#ifndef STACK_H
#define STACK_H

#include <stdlib.h>

#include "list.h"

typedef List Stack;//对List类型重新定义
对链表的结构定义及接口,在《数据结构学习之单向链表结构》已经说明,这里不再讲述,有需要的朋友可以登录这个地址访问相关的内容:

http://blog.csdn.net/ab198604/article/details/8253405

由上面的typedef List Stack语句就已经实现了栈结构的定义了。下面为栈的相关操作:

/* public interface */
#define stack_init list_init
#define stack_destroy list_destroy
int stack_push(Stack *stack, const void *data);
int stack_pop(Stack *stack, void **data);
#define stack_peek(stack) ((stack)->head == NULL ? NULL : (stack)->head->data)
#define stack_size list_size
        主要有栈的初始化,栈的销毁,压栈操作,入栈操作等。栈的初始化、销毁及栈元素大小获取等都是在原链表接口的基础上用#define语句进一步封装而成。

        三、栈的接口实现细节

        真正要实现的就是压栈和入栈操作了,通过调用链表的接口就能实现,看下面代码:

/*
 * filename: stack.c
 * author: zhm
 * date: 2012-01-05
 */

#include <stdlib.h>

#include "list.h"
#include "stack.h"

/* stack_push */
int stack_push(Stack *stack, const void *data)
{
    /* push the data onto the stack */
    return list_ins_next(stack, NULL, data);
}

/* stack_pop */
int stack_pop(Stack *stack, void **data)
{
    /* pop the data off the stack */
    return list_rem_next(stack, NULL, data);
}

        四、栈的应用举例

        看下面代码:

/*
 * filename: main.c
 * author:zhm
 * date: 2013-01-05
 */
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

#include "list.h"
#include "stack.h"

/* destroy */
void destroy(void *data)
{
    printf("in destroy\n");
    free(data);
    return;
}


/* main */
int main(int argc, char **argv)
{
    Stack stack;
    int *int_ptr = NULL;
    int ret = 0;
    int i;

    stack_init(&stack, destroy);

    for(i = 0; i < 5; i++ )
    {
        int_ptr = (int *)malloc(sizeof(int));
        if( int_ptr == NULL )
            return -1;

        *int_ptr = i;
        printf("push the data: %d\n",i);
        ret = stack_push(&stack, (void *)int_ptr);
        if( ret != 0 )
            return -1;
    }
    
    printf("size of the stack is : %d\n", stack_size(&stack));

    //pop the data from top to the bottom

    for(i = stack_size(&stack); i > 0; i-- )
    {
        int_ptr = NULL;
        stack_pop(&stack, (void **)&int_ptr);
        printf("i = %d, pop the data = %d\n",i,*int_ptr);
        free(int_ptr);
    }
    
    printf("after pop size of the stack is :%d\n", stack_size(&stack));
    return 0;
}
        上述main()函数所实现的功能主要是将数据:0,1,2,3,4分别压入栈中,然后将其一一从栈顶弹出。程序经过编译运行后,结果如下所示:







        



作者:ab198604 发表于2013-1-5 14:35:14 原文链接
阅读:0 评论:0 查看评论

    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3