??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品久久久久久久久鸭 ,久久国产精品-国产精品,91久久精品国产成人久久http://www.shnenglu.com/wmuu/含笑半步癫是用蜂蜜、川贝、桔梗、加上天山雪莲配制而成Q不需冯Q也没有防腐剂,除了毒性猛烈之外,味道q很好吃Q而吃了含W半步癫的朋友,֐思义l对不能走半步\或是面露W容Q否则也会全w爆炸而死。实在是居家旅行Q杀人灭口,必备良药Q? zh-cnWed, 07 May 2025 19:09:40 GMTWed, 07 May 2025 19:09:40 GMT60mysql 常用命o(记录)http://www.shnenglu.com/wmuu/archive/2008/01/11/40943.html含笑半步?/dc:creator>含笑半步?/author>Fri, 11 Jan 2008 01:55:00 GMThttp://www.shnenglu.com/wmuu/archive/2008/01/11/40943.htmlhttp://www.shnenglu.com/wmuu/comments/40943.htmlhttp://www.shnenglu.com/wmuu/archive/2008/01/11/40943.html#Feedback0http://www.shnenglu.com/wmuu/comments/commentRss/40943.htmlhttp://www.shnenglu.com/wmuu/services/trackbacks/40943.html  pȝ提示W下 mysql --user=root -p
   use mysql
GRANT ALL PRIVILEGES ON *.* TO root@finapp IDENTIFIED BY "123"
grant all privieges on database.table to user@IpOrName identified by "password"









]]>
MySQL性能优化相关(? 作者:andyaohttp://www.shnenglu.com/wmuu/archive/2008/01/09/40838.html含笑半步?/dc:creator>含笑半步?/author>Wed, 09 Jan 2008 15:52:00 GMThttp://www.shnenglu.com/wmuu/archive/2008/01/09/40838.htmlhttp://www.shnenglu.com/wmuu/comments/40838.htmlhttp://www.shnenglu.com/wmuu/archive/2008/01/09/40838.html#Feedback0http://www.shnenglu.com/wmuu/comments/commentRss/40838.htmlhttp://www.shnenglu.com/wmuu/services/trackbacks/40838.html原文link: http://andyao.javaeye.com/admin/show/144033
转蝲L?br>
1. ?/strong>
在Web应用E序体系架构中,数据持久层(通常是一个关pL据库Q是关键的核心部分,它对pȝ的性能有非帔R要的影响。MySQL是目前用最多的开源数据库Q但是MySQL数据库的默认讄性能非常的差Q仅仅是一个玩h据库。因此在产品中用MySQL数据库必进行必要的优化?br>优化是一个复杂的dQ本文描qMySQL相关的数据库设计和查询优化,服务器端优化Q存储引擎优化?br>
2. 数据库设计和查询优化
在MySQL Server性能调优中,首先要考虑的就是Database Schema设计Q这一Ҏ非常重要的。一个糟p的Schema设计即在性能调优的MySQL Server上运行,也会表现出很差的性能Q和Schema怼Q查询语句的设计也会影响MySQL的性能Q应该避免写Z效的SQL查询。这一节将详细讨论q两斚w的优化?br>
2.1 Schema Design
Schema的优化取决于要q行什么样的queryQ不同的query会有不同的Schema优化Ҏ?.2节将介绍Query Design的优化。Schema设计同样受到预期数据集大的影响。Schema设计时主要考虑Q标准化Q数据类型,索引?br>
2.1.1 标准?/font>

标准化是在数据库中组l数据的q程。其中包括,Ҏ设计规则创徏表ƈ在这些表间徏立关p;通过取消冗余度与不一致相x,该设计规则可以同时保护数据ƈ提高数据的灵zL。通常数据库标准化是让数据库设计符合某一U别的范式,通常满W三范式卛_。也有第四范式(也称?Boyce Codd范式QBCNF)Q与W五范式存在Q但是在实际设计中很考虑。忽视这些规则可能得数据库的设计不太完,但这不应影响功能?br>标准化的特点Q?br>
1) 所有的“对象”都在它自qtable中,没有冗余?br>2) 数据库通常由E-R囄成?br>3) z,更新属性通常只需要更新很的记录?br>4) Join操作比较耗时?br>5) SelectQsort优化措施比较?br>6) 适用于OLTP应用?br>
非标准化的特点:
1) 在一张表中存储很多数据,数据冗余?br>2) 更新数据开销很大Q更C个属性可能会更新很多表,很多记录?br>3) 在删除数据是有可能丢失数据?br>4) SelectQorder有很多优化的选择?br>5) 适用于DSS应用?br>

标准化和非标准化都有各自的优~点Q通常在一个数据库设计中可以؜合用,一部分表格标准化,一部分表格保留一些冗余数据:
1) 对OLTP使用标准化,对DSS使用非标准化
2) 使用物化视图。MySQL不直接支持该数据库特性,但是可以用MyISAM表代ѝ?br>3) 冗余一些数据在表格中,例如ref_id和name存在同一张表中。但是要注意更新问题?br>4) 对于一些简单的对象Q直接用value作ؓ建。例如IP address{?br>5) Reference by PRIMARY/UNIQUE KEY。MySQL可以优化q种操作Q例如:
java 代码
  1. select city_name
  2. from city,state
  3. where state_id=state.id and state.code=‘CA’” converted to “select city_name from city where state_id=12

2.1.2 数据cd
最基本的优化之一是使表在磁盘上占据的空间尽可能。这能带来性能非常大的提升Q因为数据小Q磁盘读入较快,q且在查询过E中表内容被处理所占用的内存更。同Ӟ在更的列上建烦引,索引也会占用更少的资源?br>可以使用下面的技术可以表的性能更好q且使存储空间最:
1) 使用正确合适的cdQ不要将数字存储为字W串?br>2) 可能地使用最有效(最?的数据类型。MySQL有很多节省磁盘空间和内存的专业化cd?br>3) 可能用较的整数cd使表更小。例如,MEDIUMINTl常比INT好一些,因ؓMEDIUMINT列用的I间要少25%?br>4) 如果可能Q声明列为NOT NULL。它使Q何事情更快而且每列可以节省一位。注意如果在应用E序中确实需要NULLQ应该毫无疑问用它Q只是避?默认地在所有列上有它?br>5) 对于MyISAM表,如果没有M变长?VARCHAR、TEXT或BLOB?Q用固定尺寸的记录格式。这比较快但是不q地可能会浪费一些空间。即使你已经用CREATE选项让VARCHAR?span class=hilite1>ROW_FORMAT=fixedQ也可以提示想用固定长度的行?br>6) 使用sample character setQ例如latin1。尽量少使用utf-8Q因为utf-8占用的空间是latin1?倍。可以在不需要用utf-8的字D上面用latin1Q例如mailQurl{?br>

2.1.3 索引
所有MySQL列类型可以被索引。对相关列用烦引是提高SELECT操作性能的最佳途径。用烦引应该注意以下几点:
1) MySQL只会使用前缀Q例如key(a, b) …where b=5 用不到烦引?br>2) 要选择性的使用索引。在变化很少的列上用烦引ƈ不是很好Q例如性别列?br>3) 在Unique列上定义Unique index?br>4) 避免建立使用不到的烦引?br>5) 在Btree index中(InnoDB使用BtreeQ,可以在需要排序的列上建立索引?br>6) 避免重复的烦引?br>7) 避免在已有烦引的前缀上徏立烦引。例如:如果存在indexQaQbQ则LindexQaQ?br>8) 控制单个索引的长度。用keyQnameQ?Q)在数据的前面几个字符建立索引?br>9) 是短的键D好,最好用integer?br>10) 在查询中要用到索引Q用explain查看Q,可以减少ȝ盘的ơ数Q加速读取数据?br>11) 相近的键值比随机好。Auto_increment比uuid好?br>12) Optimize table可以压羃和排序indexQ注意不要频J运行?br>13) Analyze table可以更新数据?br>
2.2 Designing queries
查询语句的优化是一个Case by case的问题,不同的sql有不同的优化ҎQ在q里我只列出一些通用的技巧?br>
1) 在有index的情况下Q尽量保证查询用了正确的index。可以用EXPLAIN select …查看l果Q分析查询?br>2) 查询时用匹配的cd。例如select * from a where id=5Q?如果q里id是字W类型,同时有indexQ这条查询则使用不到indexQ会做全表扫描,速度会很慢。正的应该?… where id=”5” Q加上引可明类型是字符?br>3) 使用--log-slow-queries –long-query-time=2查看查询比较慢的语句。然后用explain分析查询Q做Z化?br>
3. 服务器端优化
3.1 MySQL安装
MySQL有很多发行版本,最好用MySQL AB发布的二q制版本。也可以下蝲源代码进行编译安装,但是~译器和cd的一些bug可能会ɾ~译完成的MySQL存在潜在的问题?br>如果安装MySQL的服务器使用的是Intel公司的处理器Q可以用intel c++~译的版本,在Linux World2005的一PPT中提刎ͼ使用intel C++~译器编译的MySQL查询速度比正常版本快30%左右。Intel c++~译版本可以在MySQL官方|站下蝲?br>
3.2 服务器设|优?/font>
MySQL默认的设|性能很差Q所以要做一些参数的调整。这一节介l一些通用的参数调_不涉及具体的存储引擎Q主要指MyISAMQInnoDBQ相关优化在4中介l)?br>
--character-setQ如果是单一语言使用单的character set例如latin1。尽量少用Utf-8Qutf-8占用I间较多?br>--memlockQ锁定MySQL只能q行在内存中Q避免swappingQ但是如果内存不够时有可能出现错误?br>--max_allowed_packetQ要_大,以适应比较大的SQL查询Q对性能没有太大影响Q主要是避免出现packet错误?br>--max_connectionsQserver允许的最大连接。太大的话会出现out of memory?br>--table_cacheQMySQL在同一旉保持打开的table的数量。打开table开销比较大。一般设|ؓ512?br>--query_cache_sizeQ?用于~存查询的内存大?br>--datadirQmysql存放数据的根目录Q和安装文g分开在不同的盘可以提高一Ҏ能?br>
4. 存储引擎优化
MySQL支持不同的存储引擎,主要使用的有MyISAM和InnoDB?br>
4.1 MyISAM
MyISAM理非事务表。它提供高速存储和索,以及全文搜烦能力。MyISAM在所有MySQL配置里被支持Q它是默认的存储引擎Q除非配|MySQL默认使用另外一个引擎?br>
4.1.1 MyISAMҎ?/font>
4.1.1.1 MyISAM Properties
1) 不支持事务,宕机会破坏表
2) 使用较小的内存和盘I间
3) Z表的锁,q发更新数据会出C重性能问题
4) MySQL只缓存IndexQ数据由OS~存
4.1.1.2 Typical MyISAM usages
1) 日志pȝ
2) 只读或者绝大部分是L作的应用
3) 全表扫描
4) 扚w导入数据
5) 没有事务的低q发??br>
4.1.2 MyISAM优化要点
1) 声明列ؓNOT NULLQ可以减磁盘存储?br>2) 使用optimize table做碎片整理,回收I闲I间。注意仅仅在非常大的数据变化后运行?br>3) Deleting/updating/adding大量数据的时候禁止用index。用ALTER TABLE t DISABLE KEYS?br>4) 讄myisam_max_[extra]_sort_file_size_大,可以显著提高repair table的速度?br>
4.1.3 MyISAM Table Locks
1) 避免q发insertQupdate?br>2) 可以使用insert delayedQ但是有可能丢失数据?br>3) 优化查询语句?br>4) 水^分区?br>5) 垂直分区?br>6) 如果都不起作用,使用InnoDB?br>
4.1.4 MyISAM Key Cache
1) 讄key_buffer_size variable。MyISAN最主要的cache讄Q用于缓存MyISAM表格的index数据Q该参数只对MyISAM有媄响。通常在只使用MyISAM的Server中设|?5-33%的内存大?br>2) 可以使用几个不同的Key CachesQ对一些hot dataQ?br>
a) SET GLOBAL test.key_buffer_size=512*1024;
b) CACHE INDEX t1.i1, t2.i1, t3 IN test;
2) Preload index到Cache中可以提高查询速度。因为preloading index是顺序的Q所以非常快?br>
a) LOAD INDEX INTO CACHE t1, t2 IGNORE LEAVESQ?br>

4.2 InnoDB
InnoDBlMySQL提供了具有提交,回滚和崩溃恢复能力的事务安全QACID兼容Q存储引擎。InnoDB提供row level lockQƈ且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户部|和性能。没有在InnoDB中扩大锁定的需要,因ؓ在InnoDB中row level lock适合非常的I间。InnoDB也支持FOREIGN KEYU束。在SQL查询中,你可以自由地InnoDBcd的表与其它MySQL的表的类型؜合v来,甚至在同一个查询中也可以؜合?br>InnoDB是ؓ在处理巨大数据量时获得最大性能而设计的。它的CPU使用效率非常高?br>InnoDB存储引擎已经完全与MySQL服务器整合,InnoDB存储引擎为在内存中缓存数据和索引而维持它自己的缓冲池?InnoDB存储它的表&索引在一个表I间中,表空间可以包含数个文Ӟ或原始磁盘分区)。这与MyISAM表不同,比如在MyISAM表中每个表被存在分离的文件中。InnoDB 表可以是M大小Q即使在文g寸被限制ؓ2GB的操作系l上?br>许多需要高性能的大型数据库站点上用了InnoDB引擎。著名的Internet新闻站点Slashdot.orgq行在InnoDB上?Mytrix, Inc.在InnoDB上存储超q?TB的数据,q有一些其它站点在InnoDB上处理^均每U?00ơ插?更新的负荗?br>4.2.1 InnoDBҎ?/font>
4.2.1.1 InnoDB Properties
1) 支持事务QACIDQ外键?br>2) Row level locks?
3) 支持不同的隔ȝ别?br>4) 和MyISAM相比需要较多的内存和磁盘空间?br>5) 没有键压~?br>6) 数据和烦引都~存在内存hash表中?br>
4.2.1.2 InnoDB Good For
1) 需要事务的应用?br>2) 高ƈ发的应用?br>3) 自动恢复?br>4) 较快速的Z主键的操作?br>
4.2.2 InnoDB优化要点
1) 量使用shortQinteger的主键?br>2) Load/Insert数据时按主键序。如果数据没有按主键排序Q先排序然后再进行数据库操作?br>3) 在Load数据是ؓ讄SET UNIQUE_CHECKS=0QSET FOREIGN_KEY_CHECKS=0Q可以避免外键和唯一性约束检查的开销?br>4) 使用prefix keys。因为InnoDB没有key压羃功能?br>
4.2.3 InnoDB服务器端讑֮
innodb_buffer_pool_sizeQ这是InnoDB最重要的设|,对InnoDB性能有决定性的影响。默认的讄只有8MQ所以默认的数据库设|下面InnoDB性能很差。在只有InnoDB存储引擎的数据库服务器上面,可以讄60-80%的内存。更_一点,在内存容量允许的情况下面讄比InnoDB tablespaces?0%的内存大?br>
innodb_data_file_pathQ指定表数据和烦引存储的I间Q可以是一个或者多个文件。最后一个数据文件必L自动扩充的,也只有最后一个文件允许自动扩充。这P当空间用完后Q自动扩充数据文件就会自动增长(?MB为单位)以容U额外的数据。例如: innodb_data_file_path=/disk1/ibdata1:900M;/disk2/ibdata2:50M:autoextend两个数据文g攑֜不同的磁盘上。数据首先放在ibdata1中,当达?00M以后Q数据就攑֜ibdata2中。一旦达?0MBQibdata2以8MB为单位自动增ѝ如果磁盘满了,需要在另外的磁盘上面增加一个数据文件?br>
innodb_data_home_dirQ放|表I间数据的目录,默认在mysql的数据目录,讄到和MySQL安装文g不同的分区可以提高性能?br>
innodb_log_file_sizeQ该参数军_了recovery speed。太大的话recovery׃比较慢,太小了媄响查询性能Q一般取256M可以兼顾性能和recovery的速度
?br>innodb_log_buffer_sizeQ磁盘速度是很慢的Q直接将log写道盘会媄响InnoDB的性能Q该参数讑֮了log buffer的大,一?M。如果有大的blob操作Q可以适当增大?br>
innodb_flush_logs_at_trx_commit=2Q?该参数设定了事务提交时内存中log信息的处理?br>
1) =1Ӟ在每个事务提交时Q日志缓冲被写到日志文gQ对日志文g做到盘操作的刷新。Truly ACID。速度慢?br>2) =2Ӟ在每个事务提交时Q日志缓冲被写到文gQ但不对日志文g做到盘操作的刷新。只有操作系l崩溃或掉电才会删除最后一U的事务Q不然不会丢׃务?br>3) =0Ӟ 日志~冲每秒一ơ地被写到日志文Ӟq且Ҏ志文件做到磁盘操作的h。Q何mysqldq程的崩溃会删除崩溃前最后一U的事务
innodb_file_per_tableQ可以存储每个InnoDB表和它的索引在它自己的文件中?br>
transaction-isolation=READ-COMITTED: 如果应用E序可以q行在READ-COMMITED隔离U别Q做此设定会有一定的性能提升?br>
innodb_flush_methodQ?讄InnoDB同步IO的方式:
1) Default – 使用fsyncQ)?br>2) O_SYNC 以sync模式打开文gQ通常比较慢?br>3) O_DIRECTQ在Linux上用Direct IO。可以显著提高速度Q特别是在RAIDpȝ上。避免额外的数据复制和double bufferingQmysql buffering 和OS bufferingQ?br>
innodb_thread_concurrencyQ?InnoDB kernel最大的U程数?br>
1) 最设|ؓ(num_disks+num_cpus)*2?br>2) 可以通过讄?000来禁止这个限?br>
5. ~存
~存有很多种Qؓ应用E序加上适当的缓存策略会显著提高应用E序的性能。由于应用缓存是一个比较大的话题,所以这一部分q需要进一步调研?

6. Reference
1) http://www.mysqlperformanceblog.com/
2) Advanced MySQL Performance Optimization, Peter Zaitsev, Tobias Asplund, MySQL Users Conference 2005
3) Improving MySQL Server Performance with Intel C++ CompilerQPeter ZaitsevQLinux World 2005
4) MySQL Performance Optimization, Peter Zaitsev, Percona Ltd, OPEN SOURCE DATABASE CONFERENCE 2006
5) MySQL Server Settings Tuning, Peter Zaitsev, co-founder, Percona Ltd, 2007
6) MySQL Reference Manual

]]>
jni试用资料http://www.shnenglu.com/wmuu/archive/2008/01/05/40462.html含笑半步?/dc:creator>含笑半步?/author>Sat, 05 Jan 2008 08:17:00 GMThttp://www.shnenglu.com/wmuu/archive/2008/01/05/40462.htmlhttp://www.shnenglu.com/wmuu/comments/40462.htmlhttp://www.shnenglu.com/wmuu/archive/2008/01/05/40462.html#Feedback0http://www.shnenglu.com/wmuu/comments/commentRss/40462.htmlhttp://www.shnenglu.com/wmuu/services/trackbacks/40462.html

~译HelloWorldc?br>
 1 public class HelloWorld {
 2     public native void displayHelloWorld();
 3 
 4     public native void printxx(String str);
 5 
 6     static {
 7         System.loadLibrary("hello");
 8         // System.load("hello");
 9     }
10 
11     public static void main(String[] args) {
12         HelloWorld hw = new HelloWorld();
13         hw.displayHelloWorld();
14         for (int i = 0;; ++i) {
15             hw
16                     .printxx("wo kaowo kaowo kaowo kaowo kaowo kaowo kaowo kaowo kaowo kaowo kao");
17             if (i % 1000 == 0) {
18                 try {
19                     Thread.sleep(10);
20                 } catch (InterruptedException e) {
21                 }
22             }
23         }
24     }
25 }

对编译完的class执行
javah HelloWorld

 1 /* DO NOT EDIT THIS FILE - it is machine generated */
 2 #include <jni.h>
 3 /* Header for class HelloWorld */
 4 
 5 #ifndef _Included_HelloWorld
 6 #define _Included_HelloWorld
 7 #ifdef __cplusplus
 8 extern "C" {
 9 #endif
10 /*
11  * Class:     HelloWorld
12  * Method:    displayHelloWorld
13  * Signature: ()V
14  */
15 JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
16   (JNIEnv *, jobject);
17 
18 /*
19  * Class:     HelloWorld
20  * Method:    printxx
21  * Signature: (Ljava/lang/String;)V
22  */
23 JNIEXPORT void JNICALL Java_HelloWorld_printxx
24   (JNIEnv *, jobject, jstring);
25 
26 #ifdef __cplusplus
27 }
28 #endif
29 #endif
30 

~译
cl -I%java_home%\include -I%java_home%\include\win32 -LDHelloWorld.c -Fehello.dll

 1 #include <jni.h>
 2 #include "HelloWorld.h"
 3 #include <stdio.h>
 4 JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
 5 {
 6 printf("Hello world!\n"); 
 7 return;
 8 }
 9 
10 JNIEXPORT void JNICALL Java_HelloWorld_printxx
11   (JNIEnv *env, jobject obj, jstring prompt){
12 
13 const char *str = (*env)->GetStringUTFChars(env, prompt, 0);
14   printf("%s",prompt);
15 (*env)->ReleaseStringUTFChars(env, prompt, str);
16   
17   return;
18   }
19   
20   




3QJavacd和本地类型对?br>  
  在如下情况下Q需要在本地Ҏ中应用java对象的引用,׃用到cd之间的{换:
  
  1QjavaҎ里面参C入本地方法;
  
  2Q在本地Ҏ里面创徏java对象Q?br>  
  3Q在本地Ҏ里面returnl果ljavaE序?br>  
  分ؓ如下两种情况Q?br>  
  Java原始cd
  
  像booleans、integers、floats{从JavaE序中传到本地方法中的原始类型可以直接用,下面是java中的原始cd和本地方法中的类型的对应Q?br>  
  Javacd  本地cd  字节(bit)
  
  boolean   jboolean   8, unsigned
  byte    jbyte    8
  char    jchar    16, unsigned
  short    jshort    16
  int     jint     32
  long    jlong    64
  float    jfloat    32
  double   jdouble   64
  void    void     n/a
  
  也就是说如果我在Ҏ中传q去了一个boolean的参数的话,那么我在本地Ҏ中就有jbooleancd与之对应。同理,如果在本地方法中return一个jint的话Q那么在java中就q回一个intcd?中国|管论坛
  
  Java对象
  
  Java对象做ؓ引用被传递到本地Ҏ中,所有这些Java对象的引用都有一个共同的父类型jobject(相当于java中的ObjectcL所有类的父cM?。下面是JNI实现的一些jobject的子c:
  
  4Q本地方法中讉KjavaE序中的内容
  
  1)讉KString对象Q?br>  
  从javaE序中传q去的String对象在本地方法中对应的是jstringcdQjstringcd和c中的char*不同Q所以如果你直接当做char*使用的话Q就会出错。因此在使用之前需要将jstring转换成ؓc/c++中的char*Q这里用JNIEnv的方法{换。下面是一个例子:
  
  代码3Q?br>  
  JNIEXPORT jstring JNICALL Java_Prompt_getLine
  (JNIEnv *env, jobject obj, jstring prompt)
  {
  char buf[128];
  const char *str = (*env)->GetStringUTFChars(env, prompt, 0);
  printf("%s", str);
  (*env)->ReleaseStringUTFChars(env, prompt, str);
  
  q里使用GetStringUTFCharsҎ传q来的promptQjstringcdQ{换成为UTFQ?的格式,p够在本地Ҏ中用了?br>  
  注意Q在使用完你所转换之后的对象之后,需要显C用ReleaseStringUTFCharsҎQ让JVM释放转换成UTF-8的string的对象的I间Q如果不昄的调用的话,JVM中会一直保存该对象Q不会被垃圾回收器回Ӟ因此׃D内存溢出?

www.bitsCN.com


  
  下面是访问String的一些方法:
  
  ◆GetStringUTFCharsjstring转换成ؓUTF-8格式的char*
  
  ◆GetStringCharsjstring转换成ؓUnicode格式的char*
  
  ◆ReleaseStringUTFChars释放指向UTF-8格式的char*的指?br>  
  ◆ReleaseStringChars释放指向Unicode格式的char*的指?br>  
  ◆NewStringUTF创徏一个UTF-8格式的String对象
  
  ◆NewString创徏一个Unicode格式的String对象
  
  ◆GetStringUTFLengt获取UTF-8格式的char*的长?br>  
  ◆GetStringLength获取Unicode格式的char*的长?br>  
  2) 讉KArray对象Q?br>  
  和String对象一P在本地方法中不能直接讉Kjarray对象Q而是使用JNIEnv指针指向的一些方法来是用?br>  
  讉KJava原始cd数组Q?br>  
  1Q获取数l的长度Q?br>  
  代码4Q?br>  
  JNIEXPORT jint JNICALL Java_IntArray_sumArray
  (JNIEnv *env, jobject obj, jintArray arr)
  {
  int i, sum = 0;
  jsize len = (*env)->GetArrayLength(env, arr);
  
  如代?所C,q里获取数组的长度和普通的c语言中的获取数组长度不一Pq里使用JNIEvn的一个函数GetArrayLength?
bitsCN_com

  
  2Q获取一个指向数l元素的指针Q?br>  
  代码4Q?br>  
  jint *body = (*env)->GetIntArrayElements(env, arr, 0);
  
  使用GetIntArrayElementsҎ获取指向arr数组元素的指针,注意该函数的参数Q第一个是JNIEnvQ第二个是数l,W三个是数组里面W三个是数组里面开始的元素
  
  3Q用指针取出Array中的元素
  
  代码5Q?br>  
  for (i=0; i<len; i++) {
  sum += body[i];
  }
  
  q里使用和普通的c中的数组使用没有什么不同了
  
  4Q释放数l元素的引用
  
  代码6Q?br>  
  (*env)->ReleaseIntArrayElements(env, arr, body, 0);
  
  和操作String中的释放String的引用是一LQ提醒JVM回收arr数组元素的引用?br>  
  q里丄例子是用int数组的,同样q有boolean、float{对应的数组?br>  
  获取数组元素指针的对应关p:
  
  函数            数组cd
  
  GetBooleanArrayElements   boolean
  GetByteArrayElements    byte
  GetCharArrayElements    char bitsCN.nET中国|管博客
  GetShortArrayElements    short
  GetIntArrayElements     int
  GetLongArrayElements    long
  GetFloatArrayElements    float
  GetDoubleArrayElements   double
  
  释放数组元素指针的对应关p:
  Function            Array Type
  ReleaseBooleanArrayElements   boolean
  ReleaseByteArrayElements    byte
  ReleaseCharArrayElements    char
  ReleaseShortArrayElements    short
  ReleaseIntArrayElements     int
  ReleaseLongArrayElements    long
  ReleaseFloatArrayElements    float
  ReleaseDoubleArrayElements   double
  
  讉K自定义Java对象数组
  
  The JNI provides a separate set of functions to access elements of object arrays. You can use these functions to get and set individual object array elements.
  
  Note: You cannot get all the object array elements at once.
  
  GetObjectArrayElement returns the object element at a given index.
www_bitscn_com

  
  SetObjectArrayElement updates the object element at a given index.
  
  3) 讉KJava对象的方法:
  
  在本地方法中调用Java对象的方法的步骤Q?br>  
  ?获取你需要访问的Java对象的类Q?br>  
  jclass cls = (*env)->GetObjectClass(env, obj);
  
  使用GetObjectClassҎ获取obj对应的jclass?br>  
  ?获取MethodIDQ?br>  
  jmethodID mid = (*env)->GetMethodID(env, cls, "callback", "(I)V");
  
  使用GetMethdoIDҎ获取你要使用的方法的MethdoID。其参数的意义:
  
  env??>JNIEnv
  
  cls??>W一步获取的jclass
  
  "callback"??>要调用的Ҏ?br>  
  "(I)V"??>Ҏ的Signature
  
  ?调用ҎQ?br>  
  (*env)->CallVoidMethod(env, obj, mid, depth);
  
  使用CallVoidMethodҎ调用Ҏ。参数的意义Q?br>  
  env??>JNIEnv
  
  obj??>通过本地ҎI过来的jobject
  
  mid??>要调用的MethodIDQ即W二步获得的MethodIDQ?br>  
  depth??>Ҏ需要的参数Q对应方法的需求,d相应的参敎ͼ bitsCN.nET中国|管博客
  
  注:q里使用的是CallVoidMethodҎ调用Q因为没有返回|如果有返回值的话用对应的ҎQ在后面会提到?br>  
  Ҏ的Signature
  
  Ҏ的Signature是由Ҏ的参数和q回值的cd共同构成的,下面是他们的l构Q?br>  
  "(argument-types)return-type"
  
  其中JavaE序中参数类型和其对应的值如下:
  
  Signature  Java中的cd
  Z       boolean
  B       byte
  C       char
  S       short
  I       int
  J       long
  F       float
  D       double
  L fully-qualified-class;   fully-qualified-class
  
  [ type  type[]
  
  ( arg-types ) ret-type  method type
  
  一个JavacȝҎ的Signature可以通过javap命o获取Q?br>  
  javap -s -p Javacd
  
  l调用的函数传参敎ͼ
  
  通常我们直接在methodID后面要传的参数d在后面,但是q有其他的方法也可以传参敎ͼ
  
  CallVoidMethodV可以获取一个数量可变的列表作ؓ参数Q?www_bitscn_com
  
  CallVoidMethodA可以获取一个union?br>  
  调用静态方法:
  
  是第二步和第三步调用的方法改为对应的Q?br>  
  GetStaticMethodID获取对应的静态方法的ID
  
  CallStaticIntMethod调用静态方?br>  
  调用类的方法:
  
  用的比较,自己看啦。^_^?br>  
  4)讉KJava对象的属性:
  
  讉KJava对象的属性和讉KJava对象的方法基本上一P只需要将函数里面的Method改ؓField卛_







]]>
qt4在vs2008下的使用记录(草稿)http://www.shnenglu.com/wmuu/archive/2008/01/05/40431.html含笑半步?/dc:creator>含笑半步?/author>Fri, 04 Jan 2008 16:07:00 GMThttp://www.shnenglu.com/wmuu/archive/2008/01/05/40431.htmlhttp://www.shnenglu.com/wmuu/comments/40431.htmlhttp://www.shnenglu.com/wmuu/archive/2008/01/05/40431.html#Feedback0http://www.shnenglu.com/wmuu/comments/commentRss/40431.htmlhttp://www.shnenglu.com/wmuu/services/trackbacks/40431.htmlqt4 开源版本qt-win-opensource-src-4.3.3

qt官方|站 http://trolltech.com/


解压qt4?br>使用Visual Studio 2008 Command Prompt到命令行模式?br>到qt目录?br>cd bin
configure   (很久)
namke   (很久)

建立目

~辑一个xx.cpp文g
在文件目录下执行
qmake -project
qmake -t vcapp




下面用一个小E序试一?br>
创徏文g名ؓhello.cppQ输入如下代码:

#include <QApplication>
#include <QLabel>

int main(int argc, char **argv) {
  QApplication app(argc, argv);
  QLabel *label = new QLabel("Hello World!");
 
  label->show();

  return app.exec();
}
然后
prompt> qmake -project -o hello.pro
prompt> qmake
prompt> nmake
׃在debug文g夹下生成一?exe文g?br>




qmake
用vs2008打开目

~辑ui
执行bin目录下的designer.exe
存盘Q?br>uic -o xxx.h xxx.ui
复制到项目下?br>执行qmake
用vs2008打开


字符串用gbk~码(全局)
main函数加入
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));.



]]>
java classpath 扚w讄脚本http://www.shnenglu.com/wmuu/archive/2008/01/04/40401.html含笑半步?/dc:creator>含笑半步?/author>Fri, 04 Jan 2008 07:45:00 GMThttp://www.shnenglu.com/wmuu/archive/2008/01/04/40401.htmlhttp://www.shnenglu.com/wmuu/comments/40401.htmlhttp://www.shnenglu.com/wmuu/archive/2008/01/04/40401.html#Feedback0http://www.shnenglu.com/wmuu/comments/commentRss/40401.htmlhttp://www.shnenglu.com/wmuu/services/trackbacks/40401.html

YOUR_LIB=your_path

for jar in `ls $YOUR_LIB/*.jar`
do
      CLASSPATH="$CLASSPATH:""$jar"
done


windows :


SETLOCAL ENABLEDELAYEDEXPANSION
set LIB=xx
set CLASSPATH=.
FOR %%C IN (LIB\*.jar) DO set CLASSPATH=!CLASSPATH!;%%C
echo %CLASSPATH%



unix ksh:
暂无



]]>
java中Double-Checked Locking 双重锁定的测试代?/title><link>http://www.shnenglu.com/wmuu/archive/2007/01/19/17782.html</link><dc:creator>含笑半步?/dc:creator><author>含笑半步?/author><pubDate>Fri, 19 Jan 2007 06:59:00 GMT</pubDate><guid>http://www.shnenglu.com/wmuu/archive/2007/01/19/17782.html</guid><wfw:comment>http://www.shnenglu.com/wmuu/comments/17782.html</wfw:comment><comments>http://www.shnenglu.com/wmuu/archive/2007/01/19/17782.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/wmuu/comments/commentRss/17782.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/wmuu/services/trackbacks/17782.html</trackback:ping><description><![CDATA[ <p> <br /> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <span style="COLOR: #008080"> 1</span> <span style="COLOR: #0000ff">package</span><span style="COLOR: #000000"> test;<br /></span><span style="COLOR: #008080"> 2</span> <span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 3</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> testClone {<br /></span><span style="COLOR: #008080"> 4</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">volatile</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">boolean</span><span style="COLOR: #000000"> isInit;<br /></span><span style="COLOR: #008080"> 5</span> <span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 6</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">volatile</span><span style="COLOR: #000000"> Foo foo;<br /></span><span style="COLOR: #008080"> 7</span> <span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 8</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">volatile</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> time </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080"> 9</span> <span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">10</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Foo {<br /></span><span style="COLOR: #008080">11</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">volatile</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> flg;<br /></span><span style="COLOR: #008080">12</span> <span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">13</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> Foo() {<br /></span><span style="COLOR: #008080">14</span> <span style="COLOR: #000000">            flg </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">15</span> <span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> {<br /></span><span style="COLOR: #008080">16</span> <span style="COLOR: #000000">                Thread.sleep(time);<br /></span><span style="COLOR: #008080">17</span> <span style="COLOR: #000000">            } </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (InterruptedException e) {<br /></span><span style="COLOR: #008080">18</span> <span style="COLOR: #000000">            }<br /></span><span style="COLOR: #008080">19</span> <span style="COLOR: #000000">            </span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">flg;<br /></span><span style="COLOR: #008080">20</span> <span style="COLOR: #000000">            System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Foo inited</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">21</span> <span style="COLOR: #000000">        }<br /></span><span style="COLOR: #008080">22</span> <span style="COLOR: #000000">    }<br /></span><span style="COLOR: #008080">23</span> <span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">24</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main(String[] args) </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> InterruptedException {<br /></span><span style="COLOR: #008080">25</span> <span style="COLOR: #000000">        testClone t </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> testClone();<br /></span><span style="COLOR: #008080">26</span> <span style="COLOR: #000000">        t.test();<br /></span><span style="COLOR: #008080">27</span> <span style="COLOR: #000000">    }<br /></span><span style="COLOR: #008080">28</span> <span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">29</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> test() {<br /></span><span style="COLOR: #008080">30</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">; </span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">i) {<br /></span><span style="COLOR: #008080">31</span> <span style="COLOR: #000000">            WorkThread t </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> WorkThread();<br /></span><span style="COLOR: #008080">32</span> <span style="COLOR: #000000">            t.start();<br /></span><span style="COLOR: #008080">33</span> <span style="COLOR: #000000">        }<br /></span><span style="COLOR: #008080">34</span> <span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">35</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (;;) {<br /></span><span style="COLOR: #008080">36</span> <span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> {<br /></span><span style="COLOR: #008080">37</span> <span style="COLOR: #000000">                Thread.sleep(</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">38</span> <span style="COLOR: #000000">            } </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (InterruptedException e) {<br /></span><span style="COLOR: #008080">39</span> <span style="COLOR: #000000">            }<br /></span><span style="COLOR: #008080">40</span> <span style="COLOR: #000000">            time </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">41</span> <span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">synchronized</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">) {<br /></span><span style="COLOR: #008080">42</span> <span style="COLOR: #000000">                foo </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">43</span> <span style="COLOR: #000000">            }<br /></span><span style="COLOR: #008080">44</span> <span style="COLOR: #000000">        }<br /></span><span style="COLOR: #008080">45</span> <span style="COLOR: #000000">    }<br /></span><span style="COLOR: #008080">46</span> <span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">47</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> Foo bar() {<br /></span><span style="COLOR: #008080">48</span> <span style="COLOR: #000000">        Foo f </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> foo;<br /></span><span style="COLOR: #008080">49</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (f </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">) {<br /></span><span style="COLOR: #008080">50</span> <span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">synchronized</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">) {<br /></span><span style="COLOR: #008080">51</span> <span style="COLOR: #000000">                </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (foo </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">) {<br /></span><span style="COLOR: #008080">52</span> <span style="COLOR: #000000">                    foo </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Foo();<br /></span><span style="COLOR: #008080">53</span> <span style="COLOR: #000000">                }<br /></span><span style="COLOR: #008080">54</span> <span style="COLOR: #000000">                </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> foo;<br /></span><span style="COLOR: #008080">55</span> <span style="COLOR: #000000">            }<br /></span><span style="COLOR: #008080">56</span> <span style="COLOR: #000000">        }<br /></span><span style="COLOR: #008080">57</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> f;<br /></span><span style="COLOR: #008080">58</span> <span style="COLOR: #000000">    }<br /></span><span style="COLOR: #008080">59</span> <span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">60</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> WorkThread </span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"> Thread {<br /></span><span style="COLOR: #008080">61</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> run() {<br /></span><span style="COLOR: #008080">62</span> <span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (;;) {<br /></span><span style="COLOR: #008080">63</span> <span style="COLOR: #000000">                </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> {<br /></span><span style="COLOR: #008080">64</span> <span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">65</span> <span style="COLOR: #000000">                    Foo f </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> bar();<br /></span><span style="COLOR: #008080">66</span> <span style="COLOR: #000000">                    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (f.flg </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) {<br /></span><span style="COLOR: #008080">67</span> <span style="COLOR: #000000">                        System.out.println(f.flg);<br /></span><span style="COLOR: #008080">68</span> <span style="COLOR: #000000">                    }<br /></span><span style="COLOR: #008080">69</span> <span style="COLOR: #000000">                } </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (Throwable e) {<br /></span><span style="COLOR: #008080">70</span> <span style="COLOR: #000000">                    e.printStackTrace();<br /></span><span style="COLOR: #008080">71</span> <span style="COLOR: #000000">                }<br /></span><span style="COLOR: #008080">72</span> <span style="COLOR: #000000">            }<br /></span><span style="COLOR: #008080">73</span> <span style="COLOR: #000000">        }<br /></span><span style="COLOR: #008080">74</span> <span style="COLOR: #000000">    }<br /></span><span style="COLOR: #008080">75</span> <span style="COLOR: #000000">}<br /></span><span style="COLOR: #008080">76</span> <span style="COLOR: #000000"></span></div> <p> <br /> <br />1.4.2jdk~译执行。长旉执行没有发现有网上所说的׃jit优化D的当分配完Foo的内存,Foo构造函数未初始化完成就其地址赋值给foo的错误。相信这时候jit已经对代码进行了优化?br /><br />国外|址关于Double-Checked Locking的文?a >http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html</a></p> <h4>A test case showing that it doesn't work</h4> <p>Paul Jakubik found an example of a use of double-checked locking that did not work correctly. <a >A slightly cleaned up version of that code is available here</a>. </p> <p>When run on a system using the Symantec JIT, it doesn't work. In particular, the Symantec JIT compiles </p> <center> <pre>singletons[i].reference = new Singleton();</pre> </center> <p>to the following (note that the Symantec JIT using a handle-based object allocation system). </p> <pre>0206106A mov eax,0F97E78h 0206106F call 01F6B210 ; allocate space for ; Singleton, return result in eax 02061074 mov dword ptr [ebp],eax ; EBP is &singletons[i].reference ; store the unconstructed object here. 02061077 mov ecx,dword ptr [eax] ; dereference the handle to ; get the raw pointer 02061079 mov dword ptr [ecx],100h ; Next 4 lines are 0206107F mov dword ptr [ecx+4],200h ; Singleton's inlined constructor 02061086 mov dword ptr [ecx+8],400h 0206108D mov dword ptr [ecx+0Ch],0F84030h </pre> <p>As you can see, the assignment to <tt>singletons[i].reference</tt> is performed before the constructor for Singleton is called. This is completely legal under the existing Java memory model, and also legal in C and C++ (since neither of them have a memory model). <br />上面是国外网站给出的jit代码和说明?br /><br /><br /></p> <img src ="http://www.shnenglu.com/wmuu/aggbug/17782.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/wmuu/" target="_blank">含笑半步?/a> 2007-01-19 14:59 <a href="http://www.shnenglu.com/wmuu/archive/2007/01/19/17782.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>微Y的垃圄内存理{略http://www.shnenglu.com/wmuu/archive/2006/11/05/14692.html含笑半步?/dc:creator>含笑半步?/author>Sun, 05 Nov 2006 10:42:00 GMThttp://www.shnenglu.com/wmuu/archive/2006/11/05/14692.htmlhttp://www.shnenglu.com/wmuu/comments/14692.htmlhttp://www.shnenglu.com/wmuu/archive/2006/11/05/14692.html#Feedback3http://www.shnenglu.com/wmuu/comments/commentRss/14692.htmlhttp://www.shnenglu.com/wmuu/services/trackbacks/14692.html我机器的内存?.5g,qx一般只?00-700m.如果开机状态下,人离开比较?1-2时),那个垃圾的策略无视将q?g的空闲内?把东西写到虚拟内?盘)?所以每ơ重新操作机器的时?都要忍受那硬盘的咔哒?如果把虚拟内存禁?没q现象了,但是我有的时候又会用过1.5g的内存所以不得不开虚拟内存.



]]>
一些Informix SQL函数的用?/title><link>http://www.shnenglu.com/wmuu/archive/2006/10/30/14381.html</link><dc:creator>含笑半步?/dc:creator><author>含笑半步?/author><pubDate>Mon, 30 Oct 2006 06:44:00 GMT</pubDate><guid>http://www.shnenglu.com/wmuu/archive/2006/10/30/14381.html</guid><wfw:comment>http://www.shnenglu.com/wmuu/comments/14381.html</wfw:comment><comments>http://www.shnenglu.com/wmuu/archive/2006/10/30/14381.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/wmuu/comments/commentRss/14381.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/wmuu/services/trackbacks/14381.html</trackback:ping><description><![CDATA[ <p> <br />一、内部函?<br />  1、内部合计函?<br />    1QCOUNTQ?Q          q回行数 <br />    2QCOUNTQDISTINCT COLNAMEQ   q回指定列中唯一值的个数 <br />    3QSUMQCOLNAME/EXPRESSIONQ   q回指定列或表达式的数值和Q?<br />    4QSUMQDISTINCT COLNAMEQ    q回指定列中唯一值的?<br />    5QAVGQCOLNAME/EXPRESSIONQ   q回指定列或表达式中的数值^均?<br />    6QAVGQDISTINCT COLNAMEQ    q回指定列中唯一值的q_?<br />    7QMINQCOLNAME/EXPRESSIONQ   q回指定列或表达式中的数值最?<br />    8QMAXQCOLNAME/EXPRESSIONQ   q回指定列或表达式中的数值最大?<br />  2、日期与旉函数 <br />    1QDAYQDATE/DATETIME EXPRESSIONQ   q回指定表达式中的当月几?<br />    2QMONTHQDATE/DATETIME EXPRESSIONQ  q回指定表达式中的月?<br />    3QYEARQDATE/DATETIME EXPRESSIONQ   q回指定表达式中的年?<br />    4QWEEKDAYQDATE/DATETIME EXPRESSIONQ q回指定表达式中的当周星期几 <br />    5QDATEQNOT DATE EXPRESSIONQ     q回指定表达式代表的日期?<br />    6QTODAY                q回当前日期的日期?<br />    7QCURRENT[first to last]        q回当前日期的日期时间?<br />    8QCOLNAME/EXPRESSION UNITS PRECISION  q回指定_ֺ的指定单位数 <br />    9QMDYQMONTHQDAYQYEARQ       q回标识指定q、月、日的日期?<br />    10QDATETIMEQDATE/DATETIME EXPRESSIONQFIRST TO LAST q回表达式代表的日期旉?<br />    11QINTERVALQDATE/DATETIME EXPRESSIONQFIRST TO LAST q回表达式代表的旉间隔?<br />    12QEXTENDQDATE/DATETIME EXPRESSIONQ[first to last]Q返回经q调整的日期或日期时?/p> <p>?</p> <p>    例子1、和UNITS合用Q指定日期或旉单位(year,month,day,hour,minute,seond,fraction)Q?<br />       let tmp_date = today + 3 UNITS day <br />    例子2、let tmp_date = MDY(10,30,2002)  -- 2002-10-30 <br />    例子3、let tmp_date = today + interval(7) day to day --当前旉加上7天; <br />       注:该功能与1怼Q?<br />    例子4、EXTEND转换日期或日期时间?<br />       let tmp_inthour = extend(datetime1,hour to hour) </p> <p>  3、代数函?<br />   1QABS(COLNAME/EXPRESSION)Q       取绝对?<br />   2QMODQCOLNAME/EXPRESSIONQDIVISORQ  q回除以除数后的模(余数Q?<br />   3QPOWQCOLNAME/EXPRESSIONQEXPONENTQ  q回一个值的指数?<br />     例子Qlet tmp_float = pow(2,3) --8.00000000 </p> <p>   4QROOTQCOLNAME/EXPRESSIONQ[index]Q  q回指定列或表达式的根?</p> <p>   5QSQRTQCOLNAME/EXPRESSIONQ      q回指定列或表达式的qx根?</p> <p>   6QROUNDQCOLNAME/EXPRESSIONQ[factor]Q?q回指定列或表达式的圆整化?<br />   7QTRUNCQCOLNAME/EXPRESSIONQ[factor]Q?q回指定列或表达式的截尾?<br />     说明Q上两者中FACTOR指定数位数Q若不指定,则ؓ0Q若敎ͼ则整化到数点左边; <br />     注:ROUND是在指定位上q行4?入;TRUNC是在指定位上直接截断Q?<br />     let tmp_float = round(4.555,2) --4.56 <br />     let tmp_float = trunc(4.555,2) --4.55 </p> <p>  4、指CҎ函数 <br />   1QEXPQCOLNAME/EXPRESSIONQ    q回指定列或表达式的指数?<br />   2QLOGNQCOLNAME/EXPRESSIONQ    q回指定列或表达式的自然Ҏ?<br />   3QLOG10QCOLNAME/EXPRESSIONQ   q回指定列或表达式的底数?0的对数?</p> <p>  5、三角函?<br />   1QCOSQRADIAN EXPRESSIONQ     q回指定弧度表达式的余u?<br />   2QSINQRADIAN EXPRESSIONQ     正u <br />   3QTANQRADIAN EXPRESSIONQ     正切 <br />   4QACOSQRADIAN EXPRESSIONQ     反余?<br />   5QASINQRADIAN EXPRESSIONQ     反正?<br />   6QATANQRADIAN EXPRESSIONQ     反正?<br />   7QATAN2QXQYQ           q回坐标QXQYQ的极坐标角度组?</p> <p>  6、统计函?<br />   1QRANGEQCOLNAMEQ    q回指定列的最大g最g?= MAXQCOLNAMEQ?MIN</p> <p>QCOLNAMEQ?<br />   2QVARIANCEQCOLNAMEQ  q回指定列的h方差Q?<br />   3QSTDEVQCOLNAMEQ    q回指定列的标准偏差Q?</p> <p>  7、其他函?<br />   1QUSER              q回当前用户?<br />   2QHEXQCOLNAME/EXPRESSIONQ    q回指定列或表达式的十六q制?<br />   3QLENGTHQCOLNAME/EXPRESSIONQ  q回指定字符列或表达式的长度 <br />   4QTRIMQCOLNAME/EXPRESSIONQ   删除指定列或表达式前后的字符 <br />   5QCOLNAME/EXPRESSION || COLNAME/EXPRESSION q回q在一L字符Q?</p> <p>二、IDS内部函数 <br />  1、DBSERVERNAME   q回数据库服务器名 let tmp_char=DBSERVERNAME <br />  2、SITENAME     q回数据库服务器名 let tmp_char=SITENAME <br />   说明Q两者功能相同; </p> <p>  3、DBINFOQ‘SPECIAL_KEYWORD')   q回只关键字?<br />   例子1Q返回数据中每个表的DBSPACE名称 <br />     select dbinfo('dbspace',partnum),tabname from systables <br />     where tabid>99 and tabtype='T' (OK) <br />   例子2Q返回Q何表中插入的最后一个SERIAL?<br />     select dbinfo('sqlca.sqlerrd1') from systables where tabid = 1 <br />   例子3Q返回最后一个SELECTQINSERTQUPDATEQDELETE或EXECUTE PROCEDURE语句处理的行敎ͼ <br />     select dbinfo('sqlca.sqlerrd2') from systables where tabid=1; </p> <p> <br /> <br /> </p> <h3>Date Manipulation</h3> <p>One of the more difficult concepts in Informix's handling of date and time values concerns the use of the variables in arithmetic or relational expressions. You can add or subtract DATE and DATETIME variables from each other. You can add or subtract an INTERVAL to a DATE or DATETIME. Table 1 shows the results of different types of operations on DATE and DATETIME values. </p> <p> <b>Table 1. Operations on DATE and DATETIME Variables</b> </p> <table cellspacing="1" cellpadding="5" border="1"> <tbody> <tr> <td> <font size="2"> <p> <b>First Operand</b> </p> </font> </td> <td> <font size="2"> <b>Operation</b> </font> </td> <td> <font size="2"> <p> <b>Second Operand</b> </p> </font> </td> <td> <font size="2"> <p> <b>Result</b> </p> </font> </td> </tr> <tr> <td> <font size="2"> <p>DATE</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">-</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">-</p> </font> </td> <td> <font size="2"> <p>DATE</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>DATE</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+-</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">-</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+-</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+-</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">-</p> </font> </td> <td> <font size="2"> <p>CURRENT</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>CURRENT</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">-</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+</p> </font> </td> <td> <font size="2"> <p>CURRENT</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>CURRENT</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+-</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+-</p> </font> </td> <td> <font size="2"> <p>UNITS</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+-</p> </font> </td> <td> <font size="2"> <p>UNITS</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">*/</p> </font> </td> <td> <font size="2"> <p>NUMBER</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> </tbody> </table> <p>Notice that it's always okay to subtract one DATE or DATETIME value from another, as shown here: <font size="3"><pre>CURRENT - "07/01/1950" = INTERVAL (my age) "12/25/2000" ?CURRENT = INTERVAL (how long till Xmas?)</pre><p>In such a case, the result is always an INTERVAL variable. It would make no sense to add two DATE or DATETIME values together. What could such an addition represent? </p><h3>UNITS Keyword</h3><p>When working with INTERVAL values, sometimes it is necessary to specify the precision with which you are dealing. For example, suppose you have the following field defined: <font size="3"></font></p><pre>lead_time INTERVAL DAY to DAY</pre><p>To add 10 days to the lead time you could use a SQL statement like this: <font size="3"></font></p><pre>SELECT lead_time + INTERVAL(10) DAY to DAY FROM orders</pre><p>You could achieve the same results using the UNITS keyword: <font size="3"></font></p><pre>SELECT lead_time + 10 UNITS DAY FROM orders </pre><p>Like most other programming languages, SQL often allows you to achieve the same ends with different statements. Sometimes the choice is one of personal style. Other times, one format fits in better with a structured style of code writing than another format does. </p><h3>Functions</h3><p>There are several built-in functions that affect date and time calculations. They can apply to either DATE or DATETIME values, with some exceptions. </p><h4>TODAY</h4><p>The TODAY function returns a DATE data value representing the current date. For example, you could execute a SQL function like this: <font size="3"></font></p><pre>UPDATE member SET change_date = TODAY WHER member_number = 12345</pre><h4>CURRENT</h4><p>The CURRENT function is similar to the TODAY function, except it returns a DATETIME value. Without specific qualifiers, the default is YEAR to FRACTION(3). You can change the precision by using the same YEAR to FRACTION qualifiers as you use for DATETIMES. Thus, this would be legal: <font size="3"></font></p><pre>SELECT * from member WHERE elapsed_time < CURRENT YEAR to DAY</pre><h4>DATE</h4><p>The DATE function takes as input a non-DATE value such as CHAR, DATETIME, or INTEGER and returns the corresponding DATE value. For example, the following SQL translates a CHARACTER value to a DATE: <font size="3"></font></p><pre>SELECT * from member WHERE enrollment_date > DATE('01/01/99')</pre><h4>DAY</h4><p>This function returns an integer representing the day of the month. Here's an example: <font size="3"></font></p><pre>SELECT * from member WHERE DAY(enrollment_date) > DAY(CURRENT)</pre><h4>MONTH</h4><p>This performs like the DAY function except it returns an integer between 1 and 12 representing the month: <font size="3"></font></p><pre>SELECT * from member WHERE enrollment_date > MONTH('01/01/99')</pre><h4>WEEKDAY</h4><p>This returns an integer representing the day of the week, with 0 being Sunday and 6 being Saturday: <font size="3"></font></p><pre>SELECT * from member WHERE WEEKDAY(enrollment_date) > WEEKDAY(CURRENT)</pre><h4>YEAR</h4><p>This function is like the ones above, only it returns a four-digit integer representing the year. </p><h4>EXTEND</h4><p>This function allows you to use different precisions in a DATETIME than you have specified in the declaration of the variable. It uses the same FIRST to LAST syntax as the DATETIME variables. This function is used to adjust the precision of a DATETIME variable to match the precision of an INTERVAL that you are using in a calculation. If the INTERVAL value has fields that are not part of the DATETIME value that you are using in a calculation, use the EXTEND function to adjust the precision of the DATETIME. EXTEND can either increase or decrease the precision of a DATETIME, depending upon the FIRST and LAST values. </p><p>Suppose myvariable is declared as DATETIME YEAR to DAY. If you want to add or subtract an INTERVAL defined as MINUTE, you first have to extend the DATETIME as follows: <font size="3"><pre>SELECT EXTEND(myvariable, YEAR to MINUTE) ? INTERVAL(5) MINUTE to MINUTE FROM member</pre><p>The resulting value will be DATETIME YEAR to MINUTE. </p><h4>MDY</h4><p>The MDY function converts three-integer values into a DATE format. The first integer is the month and must evaluate to an integer in the range 1?2. The second integer is the day and must evaluate to a number in the range from 1 to however many days are in the particular month (28?1). The third expression is the year and must be a four-digit integer. Thus, the following MDY functions would each be valid: <font size="3"></font></p><pre>MDY(7,1,1950)</pre><p>returns a DATE of "07/01/50" <font size="3"></font></p><pre>MDY(MONTH(TODAY), 1, YEAR(TODAY))</pre><p>returns a DATE equal to the first day of the current month in the current year </p><p>Informix has extensive capabilities for manipulating dates and times, which can make for long and complex SQL statements. Using the three time-related data types and the time-related functions and keywords, you can accomplish almost any type of manipulation of time data. Unfortunately, getting there may be cryptic and painful. If you regularly do extensive date and time manipulation, you should understand all of the intricacies of these data structures. </p><p>Have fun! <br /></p></font></p></font><br /> </p> <img src ="http://www.shnenglu.com/wmuu/aggbug/14381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/wmuu/" target="_blank">含笑半步?/a> 2006-10-30 14:44 <a href="http://www.shnenglu.com/wmuu/archive/2006/10/30/14381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>氓软g,氓|站http://www.shnenglu.com/wmuu/archive/2006/08/28/11790.html含笑半步?/dc:creator>含笑半步?/author>Mon, 28 Aug 2006 10:31:00 GMThttp://www.shnenglu.com/wmuu/archive/2006/08/28/11790.htmlhttp://www.shnenglu.com/wmuu/comments/11790.htmlhttp://www.shnenglu.com/wmuu/archive/2006/08/28/11790.html#Feedback1http://www.shnenglu.com/wmuu/comments/commentRss/11790.htmlhttp://www.shnenglu.com/wmuu/services/trackbacks/11790.html
http://www.duduw.com/
嘟嘟|?br />http://59.34.197.176/go6456.asp


]]>
mathcad13注册文ghttp://www.shnenglu.com/wmuu/archive/2006/07/25/10429.html含笑半步?/dc:creator>含笑半步?/author>Mon, 24 Jul 2006 16:04:00 GMThttp://www.shnenglu.com/wmuu/archive/2006/07/25/10429.htmlhttp://www.shnenglu.com/wmuu/comments/10429.htmlhttp://www.shnenglu.com/wmuu/archive/2006/07/25/10429.html#Feedback3http://www.shnenglu.com/wmuu/comments/commentRss/10429.htmlhttp://www.shnenglu.com/wmuu/services/trackbacks/10429.html       When asked for serial, click Next->Yes.
       After installation, when the license is required, please set the
       file "mcad13.dat" as the license.?br />
"mcad13.dat"文g路径Q?   原始安装文g目录 \\Mathcad\program files\Mathsoft\Mathcad 13\mcad13.dat

]]>
99þþƷһ| þ޾ƷVA| þþŷղAV | һþþ| ɫۺϾþ| ޾Ʒһþ | ƷþþþþҰ| þþƷĻ23ҳ| ԭۺϾþô| ƷþþþӰӲ| ƬҹƬþ| þѵľƷV| þó˹Ʒһ| ٸƷþþһ| 99þù޸ۿ2024| þþþþþòҰ¸߳ | ŷ˾þۺ | þAëƬѹۿ| 鶹Ʒþþһ| þþƷŷպ99| ޹Ʒþþþþ| 97þۺɫdžѿ| ƷѾþþþùһ| 99þþƷձһ| ĻþþƷ| ҹƷþ| Ʒtvþþþþþ| ݺɫþþһ| ٸƷþ| Ʒ99þaaaһëƬ| ŷþþƷһcƬƬ| þ99Ʒþþþþhb| Ʒþ¶| þþþ99ƷƬ| ˾Ʒþۺ| 99þ99þþƷ| һaƬþëƬ| þۺۺϾþ97ɫ| ĻۺϾþ2| þòӰ| ԭۺϾþô|