当前位置:  编程技术>综合
本页文章导读:
    ▪session.get()/load()的参数使用问题!      在做课设keshe的时候:由于定义主键id是int类型的,所以在用session.load/get()方法是就会出错。用session.createCriteria().add(Restriction.eq("",id))   hibernate的官方文档里有个例子: Cat cat = session.........
    ▪python 实现简单client与server      socket.getaddrinfo(host, port, family=0, socktype=0, proto=0, flags=0) #根据给定的参数host/port,相应的转换成一个包含用于创建socket对象的五元组, #参数host为域名,以字符串形式给出代表一个IPV4/IPV6地址.........
    ▪进一步思考-关于Linus: 大多黑客甚至连指针都未理解      看到CSDN上一篇关于Linus回答问题的文章,感觉很是有趣。 链接: Linus问答     文章      在问答中,Linus指出,"大多数黑客甚至连指针都未理解", 对此不敢有任何.........

[1]session.get()/load()的参数使用问题!
    来源: 互联网  发布时间: 2013-11-10

在做课设keshe的时候:由于定义主键id是int类型的,所以在用session.load/get()方法是就会出错。用session.createCriteria().add(Restriction.eq("",id))

 

hibernate的官方文档里有个例子:

Cat cat = session1.get(Cat.class, catId);

Cat cat = (Cat) firstSession.load(Cat.class, catID);

catID指对象标识符。二个catID意思是一样的.

catID 不能是long,int 型的,必须是 Long, Integer型的。

By the way, catID can not be long, int,  it must be Long, Integer, which implements serializable interface. So if your class id is long or int, you have to use Cat cat = (Cat) firstSession.load(Cat.class, new Integer(myCatID); here myCatID is int type.

 

作者:zhujiaxing666666 发表于2013-1-12 21:51:54 原文链接
阅读:0 评论:0 查看评论

    
[2]python 实现简单client与server
    来源: 互联网  发布时间: 2013-11-10
socket.getaddrinfo(host,  port, family=0, socktype=0, proto=0, flags=0)
#根据给定的参数host/port,相应的转换成一个包含用于创建socket对象的五元组,
#参数host为域名,以字符串形式给出代表一个IPV4/IPV6地址或者None.
#参数port如果字符串形式就代表一个服务名,比如“http”"ftp""email"等,或者为数字,或者为None
#参数family为地主族,可以为AF_INET  ,AF_INET6 ,AF_UNIX.
#参数socketype可以为SOCK_STREAM(TCP)或者SOCK_DGRAM(UDP)
#参数proto通常为0可以直接忽略
#参数flags为AI_*的组合,比如AI_NUMERICHOST,它会影响函数的返回值
#附注:给参数host,port传递None时建立在C基础,通过传递NULL。
#该函数返回一个五元组(family, socktype, proto, canonname, sockaddr),同时第五个参数sockaddr也是一个二元组(address, port)
# Echo server program
import socket
import sys

HOST = None               # Symbolic name meaning all available interfaces
PORT = 8888              # Arbitrary non-privileged port
s = None
for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
                              socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
    af, socktype, proto, canonname, sa = res
    try:
        #根据getaddrinfo()的返回信息初始化socket
        s = socket.socket(af, socktype, proto)
    except socket.error, err_msg:
        print err_msg #回显异常信息
        s = None
        continue
    try:
        #sa是(host,port)的二元组
        s.bind(sa)
        #监听客户端请求
        s.listen(1)
    except socket.error, err_msg:
        print err_msg
        s.close()
        s = None
        continue
    break
if s is None:
    print 'could not open socket'
    sys.exit(1)
    
conn, addr = s.accept()
print 'Connected by', addr

while 1:
    data = conn.recv(1024)# 2)接受数据
    if not data: break
    conn.send(data)# 3)并返回2中接受到得数据
conn.close()



# Echo client program
import socket
import sys

HOST = '127.0.0.1'    # The remote host
PORT = 8888              # The same port as used by the server
s = None
for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
    af, socktype, proto, canonname, sa = res
    try:
        s = socket.socket(af, socktype, proto)
    except socket.error, msg:
        s = None
        continue
    try:
        s.connect(sa)
    except socket.error, msg:
        s.close()
        s = None
        continue
    break
if s is None:
    print 'could not open socket'
    sys.exit(1)
    
s.sendall('Hello, world')# 1)发送数据
data = s.recv(1024)# 4)接受服务器回显的数据
s.close()
print 'Received', repr(data) #打印输出

作者:qianguozheng 发表于2013-1-12 21:48:46 原文链接
阅读:9 评论:0 查看评论

    
[3]进一步思考-关于Linus: 大多黑客甚至连指针都未理解
    来源: 互联网  发布时间: 2013-11-10
看到CSDN上一篇关于Linus回答问题的文章,感觉很是有趣。
链接: Linus问答
    文章
    
在问答中,Linus指出,"大多数黑客甚至连指针都未理解", 对此不敢有任何的评论。我所关注的主要是Linus讲的利用二级指针删除链表元素的方法。
方法的思想是:链表中每一个元素都有一个指针指向,那么可以使用一个二级指针来遍历每一个元素,可以"非常自然流畅"的完成删除工作,避免了条件判断和prev指针。
这里说明,这里并不是要讨论什么"奇技淫巧",我关注的是方法本身,以及方法的推广。如果有任何想法,都可以和谐讨论。
该方法有一个关键是,利用链表每个元素都有指针指向这样一个特性(为什么我从来没有想过在遍历的时候,利用这个特性那?)。
根据这一点,可以想到,在链表其他操作中同样可以使用这一方法。以下是我编写的操作list的代码,包括Linus讲的remove方法,还有数个create方法。个人拙见。


#include <stdio.h>
#include <malloc.h>

typedef struct
{
    int number;
    struct node *next;
}node;

typedef int (*remove_fn)(const node *pn);

node* remove_list(node *head,remove_fn rm)
{
    node **cur=&head;
    for(;*cur;)
    {
        node *entity=*cur;
        if(rm(entity))
        {
            *cur=entity->next;
            free(entity);
        }else
            cur=&entity->next;
    }
    return head;
}
/**
 * 删除小于0的节点
 */
int rm(const node *pn)
{
    if(pn->number<0)
        return 1;
    return 0;
}
//打印链表
void print(const node *head)
{
    while(head)
    {
        printf("node-number=%d\n",head->number);
        head=head->next;
    }
}
//第一种非linus方法,创建n个元素的链表
node *create_normal_1(int n)
{
    node *head=NULL,*tail=head;

    int i;
    for(i=1;i<=n;++i)
    {
        node *new=(node*)malloc(sizeof(node));
        printf("input number:"); scanf("%d",&new->number);
        new->next=NULL;
        if(!head)
        {
            head=new;
        }else
        {
            tail->next=new;
        }
        tail=new;
    }

    return head;
}
//第二种非linus方法,创建n个元素的链表
node *create_normal_2(int n)
{
    node *head=NULL,*tail=head;

    if(n>0)
    {
        head=(node*)malloc(sizeof(node));
        printf("input number:"); scanf("%d",&head->number);
        head->next=NULL;
        tail=head;
        --n;
    }
    int i;
    for(i=1;i<=n;++i)
    {
        node *new=(node*)malloc(sizeof(node));
        printf("input number:"); scanf("%d",&new->number);
        new->next=NULL;
        tail->next=new;
        tail=new;
    }
    return head;
}
//第三种非linus方法,创建n个元素的链表
node *create_normal_3(int n)
{
    node rock,*tail=&rock;//rock作为临时栈变量,作为创建链表时的头
    rock.next=NULL;
    
    int i;
    for(i=1;i<=n;++i)
    {
        node *new=(node*)malloc(sizeof(node));
        printf("input number:"); scanf("%d",&new->number);
        new->next=NULL;
        tail->next=new;
        tail=new;
    }
    return rock.next;
}
//linus的方法, 间接指针
node *create_linus(int n)
{
    node *head=NULL,**tail=&head;
    int i;
    for(i=1;i<=n;++i)
    {
        node *new=(node*)malloc(sizeof(node));
        printf("input number:"); scanf("%d",&new->number);
        new->next=NULL;
        *tail=new;
        tail=&new->next;
    }
    return head;
}

int main(int argc, char *argv[])
{
    //create list
    node *head=create_normal_3(10);

    print(head);
    //remove list node
    head=remove_list(head,rm);
    
    printf("after rm\n");
    print(head);
}



remove方法不必再说,这里说下四种create_list方法。create_list在生成每一个元素时,有一个特殊的情况,那就是开始时,链表是空链表(head==NULL),该特殊情况如何考虑,如何将该特殊情况以一种顺畅的方法表达出来?如此产生了一下四种方法。
create_normal_1:
    方法1是在创建list的过程中,添加条件判断。如果链表为空,那么需要对头节点处理。如果不为空,只需要在链表结尾添加元素。
create_normal_2:
    方法2是在开始,就处理空链表的特殊情况,这种不断的从复杂逻辑中逐一分离并处理的方法很常见,也很管用。虽然保险,但是会出现"逻辑重复"的问题。
create_normal_3:
    方法3是创建一个临时的栈对象,作为list的"假开头",这样就避免了空链表这种情况。这是一种反向的思路,将多种不同逻辑整理为一种,再进一步处理。
create_linus:
    方法4既是使用Linus方法的思想,从逻辑中找到了一个共性,感觉很自然。Yes.

作者:king_on 发表于2013-1-12 21:43:21 原文链接
阅读:4 评论: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的方法
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果 iis7站长之家
▪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