hzq0630

2011-12-29

分类: 健身 |

臀部肌肉锻炼方法

1.仰卧单腿抬臀

仰卧,屈右腿,左腿架在右腿上。两手手心向下置于体侧。慢慢向上抬臀,尽量收紧臀肌,直到腰背挺直。还原后重复。每侧做3组,每组20次左右。


2.俯身屈膝举腿

双手双膝着地,膝关节成90度。动作以单腿上举开始,脚跟垂直向上,但膝关节角度保持不变。大腿上抬到最高处时正好与地面平行。动作不要太快,臀肌收紧。每侧3组,每组20次。


3.俯身负重屈小腿

双手双膝着地同练习2,沙袋绑于脚腕处(注意不要过重)。先把一条腿向后伸直,大约与地面平行,然后用力屈膝成90度。还原后重复。每侧3组,每组20次。注意动作始终要有控制,不能“甩”。


4.下蹲跳起

动作与负重下蹲基本相同,增加了爆发用力。双脚站距同肩宽,两臂抱于胸前。下蹲至膝关节成90度,垂直向上蹬起。注重大腿用力,臀部收紧。每组10次左右,做3组。由于这个练习跳起落地时与地面有冲击力,最好在胶垫、木地板或草地上做,并注意保持身体平衡。


5.窄站距负重下蹲

双脚站距10—20厘米。两手持哑铃(重量因人而异)。下蹲至大腿与地面平行后用力站起。动作中上体注意保持正直。不要前倾。每组8—10次,3组。


6.站立负重后举腿

面壁站立,身体稍前倾,双手扶墙。沙袋绑于脚腕处,脚跟略抬起。动作开始时身体重心移到支撑腿,动作腿用力慢慢向后踢起,膝关节可稍弯屈。腿踢至不能再向后为止。坚持数秒后还原。每侧3组,每组10次左右。

hzq0630

2011-11-10

分类: objective-c |

objective-c和c++的不同zz

1, 两者最大的相同便是: 都是从 C 演化而来的面向对象语言, 两者都兼容标准 C 语言.
2, 两者最大的不同便是: Objective C 提供了运行期动态绑定机制, 而 C++ 是编译时静态绑定, 并通过嵌入类(多重继承)和虚函数(虚表)来模拟实现. Objective C 在语言层次上支持动态消息转发, 其函数调用语法为 [object function], 而且C++ 为 object->function(). 两者的语义也有不同, 在 Objective C 里是说发送消息到一个对象上, 至于这个对象能不能处理消息(也就是说实现了这个函数与否)以及是处理还是转发消息都不会 crash, 而在 C++ 里是说对象进行了某个操作,如果对象没有这个操作的话,要么编译会报错(静态绑定),要么程序会 crash 掉的(动态绑定).
3, Objective C 不支持多重继承, 而 C++ 支持. 不过 Objective C 通过 proxy(代理) 和 Categor y(类别) 可以更优雅地实现这一特性. 这一点也包括了 overwriting(覆盖) 和 overloading(重载) 两者的不同. 
4, 函数名字解析也不同, Objective C 的函数名字解析是函数名称 + 参数名称的, 而 C++ 只包括函数名称. 因此在 Objective C 中以下是合法的,因为两者解析出来分别类似于 foo:bar1 和 foo:bar2, 是不同的; 
-(int)foo:(int) bar1;
-(char*)foo:(int) bar2;
而在 C++ 中以下是非法的, 编译将出错, 因为两者解析出来都是类似于 foo:int, 编译器无法辨别.
int foo(int bar1);
char* foo(int bar2);
5, Objective-C 没有 C++ 里有的构造函数和析构函数, 其对应物为 alloc-init/free .
6, Objective-C 2.0 了加入了垃圾回收机制(在 iPhone 和 iPad 上不可用), 而 C++ 没有.
7, Objective-C 不允许在 Stack 上分配内存, 只能在 heap 上进行, 而 C++ 两者都允许.
8, Objective-C 不支持引用, 而 C++ 支持.
9, Objective-C 不支持模板, 而 C++ 支持.
10, Objective-C 是 Smalltalk 系的, 而 C++ 是 Simula 系的. 

hzq0630

2011-09-27

分类: 我是程序员 | linux |

void (*signal(int signo, void (*fun(int))))(int)

这个函数是unix网络编程的一个函数,一直没看懂,然后找到了神文章,转过来备份

原文地址:

http://blog.sina.com.cn/s/blog_4850a7880100hnam.html
(..更多)

hzq0630

2011-09-20

分类: objective-c |

不使用xib创建view based app

打开Xcode,创建一个新的工程,选择Window-based Application模版,将工程命名为Test

1. 为了使用纯代码方式的准备(不使用xib文件)

1.1 删除MainWindow.xib

resource目录中找到MainWindow.xib文件并点击右键选择删除,注意在弹出的对话框中选择,“Also Move to Trash”按钮,达到完全删除的目的。

1.2 从项目名-info.plist文件中删除“Main nib file base name”项目

resource目录中找到项目名-info.plist文件,你会发现系统默认为你创建的“Main nib file base name”项目,其值被设置为MainWindow.xib,选中并删除该条目。(delete键)

1.3修改main.m

打开Other Sources目录下的main.m,并做如下的修改。注意UIApplicationMain方法的第四个参数默认为nil,这里我们使用delegate的类名。如代码21所示。

代码21 “main”方法

----------------------------------
int main(int argc, char *argv[]) {
    
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, @"TestAppDelegate");
    [pool release];
    return retVal;
}
----------------------------------

 

1.4创建RootViewController

创建一个新的RootViewController类,继承UIViewController类(注意不要选择同时创建xib文件的选项)。它是用来显示和控制程序的主界面的,当然我们的具体动画的代码也都会在这里实现。(具体内容下面会有详细记述)

 

1.5修改TestAppDelegate.m

打开Classes目录下的TestAppDelegate.m文件找到application:didFinishLaunchingWithOptions:方法并做如下的修改。注意由于我们没有使用xib文件,所以Window对象需要我们自己创建。还有不要忘记import RootViewController进来。如代码2所示

代码 22 “application:didFinishLaunchingWithOptions:”方法
----------------------------------
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    
	window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // Override point for customization after application launch.
	RootViewController *rootViewController = [[RootViewController alloc] init];
	
	[window addSubview:rootViewController.view];
    [window makeKeyAndVisible];
	
	
    [rootViewController release];
    return YES;
}
----------------------------------

 

hzq0630

2011-08-21

分类:

sqlite在ios下的应用

 

一、sqlite基本语法 

Sqlite满足SQL的基本语法,但是有一些语法会有不同或者不支持。比如外连接命令、视图都是不支持的,但是最基本的使用还是支持的,比如我们项目中需要的selectinsert,delete等等。 

 

Sqlite的数据类型一共有5种,NULLINTEGER REAL TEXT BLOB,其他的数据类型在储存时都转化为这五种之一。同时SQLite使用的是动态类型,会根据储存的值自动判断类型。 

 

二、FMDatabase——sqlite APIobjective-c封装 

FMDB是网上的一个开源项目,遵循MIT协议,主页在https://github.com/ccgus/fmdb 。这个开源框架就是将sqlite底层的c接口封装成objective-c的接口,方便我们使用。 

我在网上查阅关于objective-c中的sqlite的资料的时候很多人都提到了这个框架,他大大简化了在objective-c中使用sqlite的方法。这个框架主要有这样两个类: 

FMDatabase : 表示一个单独的SQLite数据库,用于执行查询 

FMResultSet : 用于表示查询结果

FMDatabase中提供了操作数据库的基本方法,下面讲一下我们需要经常用到的几种方法:

 

1.建立数据库:FMDatabase *db =[ FMDatabase databaseWithPath:@"/tmp/tmp.db"]

建立数据库有三种参数:

直接给出路径,如果文件不存在系统会为你创建;

给一个空字符串@"",系统会在硬盘创建一个临时文件,当数据库关闭时删除;

NULL 这是会在内存中建立一个数据库。

 

2.打开数据库操作

注意打开失败时需要释放资源 否则可能内存泄漏。

if(![db open]){

[db release];

return;

}

3.修改操作:

系统最推荐的函数为

- ( BOOL ) executeUpdate: (NSString*) sql, ...;

- ( BOOL ) executeUpdate: (NSString*) sql withArgumentsInArray: (NSArray *) arguments;

这两个函数返回的是操作成功或者失败的信息。其中sql就是一个储存sql语句的字符串变量,比如插入操作可以这样写:

[FmDb executeUpdate:@"insert into table values (?)",@"test" ];

这里问号是一个占位符,关于这个我会在后面详细解释。

在这里可以通过 -lastErrorMessage 和 - lastErrorCode 定位上次的错误。

 

4.查询操作

查询操作一般指以select开头的操作,他们通常返回一个FMResultSet的对象,储存着此次查询的结果。

系统推荐使用函数为:

- ( FMResultSet *) executeQuery:(NSString*) sql, ...;

- ( FMResultSet *) executeQuery:(NSString* ) sql, withArgumentsInArray: (NSArray *) arguments;

函数在成功是会返回一个FMResultSet,失败会返回nil.

一般情况下,我们使用next操作来遍历整个查询:

FMResultSet *s = [db executeQuery:@"SELECT * FROM myTable"];

while ([s next]) {

    //retrieve values for each record

}

 

5.查询语句

上文曾经说过SQLite使用?作为占位符,如INSERT INTO myTable VALUES (?, ?, ?),系统推荐我们给占位符传递参数来驱动操作,而不推荐使用%d%@的方式。

因此我们写查询时应该这样:

[db executeUpdate:@"INSERT INTO myTable VALUES (?)", @"this has \" lots of ' bizarre \" quotes '"];

而不应该这样:

[db executeUpdate:[NSString stringWithFormat:@"INSERT INTO myTable VALUES (%@)", @"this has \" lots of ' bizarre \" quotes '"]];

同时由于给?传递的参数必须是对象,如果有数字时要转换成NSNumber

 

6.数据库收缩

数据库收缩是一个很常用的命令,sqlite执行数据库收缩的命令是vacuum。通过这个命令可以手动收缩数据库。当然我们也可以命令表自动收缩,只要在建表后执行以下命令:

m_db.execDML(_T("PRAGMA auto_vacuum = 1"));//(m_dbCppSQLite3DB对象)

但是自动收缩只是将空闲页除去,不会整理或压缩数据库页,所以效果并不理想。在项目中我们还是应该采用vacuum命令手动收缩数据库。

 

hzq0630

2011-08-21

分类: objective-c |

iphone3开发基础教程 读书笔记

 

其实就看了前面一点 全是在讲XIL,据说这个写大项目很不好,就没在用。。。贴上来备份吧

第二章 创建基本项目

这一章十分简单,主要就是讲用interface Buider拖出个图形界面。。。。

主要注意一下nib文件。文件中有file's Owener和First Responder。

从 Cocoa Touch列表里拖出来save 然后在Xcoder中build->Build and run就可以了。

添加程序的icon就是把一个名为icon.png的57*57的图片拖到Xcoder 的Resources文件夹中。在.plist文件中可以设定icon file。当然如果不设定就会默认icon.png。

 
(..更多)

hzq0630

2011-07-29

分类: objective-c |

objective-c学习笔记2

那本小书看的真快,明天mac mini就到了,开始看iphone3那本书~
(..更多)

hzq0630

2011-07-20

分类: objective-c |

objective-c学习笔记1

 

公司安排我进了iPhone开发组,无奈没有给我配MAC,公司还不让用P2P,只能用mingw先学学objective-c了。

 

首先要在win搭建平台,参考了这个教程:http://www.cnblogs.com/ulihj/archive/2011/01/14/1935746.html

首先搭建GNUStep: http://www.gnustep.org/experience/Windows.html 在这里下载前面三个,GNUstep MSYS System,GNUstep Core,GNUstep Devel,不多说了,全部装好就是了。 (..更多)

hzq0630

2011-06-19

分类: 面试笔试 |

简历

1、应该充分挖掘自己的特长和亮点,把自己最有优势的地方放到最前面。
2、把自己的名字和联系方式放到最显眼的地方。
3、尽量压缩到一页(这一点我做的不太好)。
4、对于不同类型的单位,最好采用不同的简历模板,以更有针对性。
 1)对于外企:要强调“英文水平”、“学习能力”、“团队合作精神”、“沟通能力
”
 2)对于国企和事业单位:要强调“教育背景”、“政治面貌”、“获奖情况”、“学
习成绩”、“踏实稳重”
 3)对于技术类企业:要强调“专业技能”(与该企业相关的技能放到最前面)、“项
目经验”
 4)对于研究类单位:要强调“研究方向”、“获奖情况”、“学习成绩”
 5)对于销售、管理类职位:要强调“任职情况”、“组织活动”、“沟通能力”“团
队合作能力”、“解决问题能力”
5、尽量少谈“个人兴趣”,如果是特长的话,可以改为“个人特长”或“文体特长”
6、对于自己所做的项目,不要写或少写“项目简介”,而要重点写“个人职责”
7、不能说假话,自己没有的绝对不能说;但自己有的,一定要用最好的方式展现出来
8、对于自己的亮点,可以适当加一些修饰;对于自己的劣势,应极力的避开。

hzq0630

2011-06-16

分类: 我是程序员 |

ctrl+a显示隐藏图片和图片黑白变彩色的原理及matlab实现

ctrl+a显示隐藏图片和图片黑白变彩色的原理及matlab实现 (..更多)
TopBottom