??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲人成电影网站久久,久久免费高清视频,国产精品久久一区二区三区http://www.shnenglu.com/TianShiDeBaiGu/category/17189.htmll我一个EMACSQ我不需要操作系l?/description>zh-cnThu, 27 Dec 2018 17:35:09 GMTThu, 27 Dec 2018 17:35:09 GMT60sqlite错误列表http://www.shnenglu.com/TianShiDeBaiGu/articles/203297.html何清?/dc:creator>何清?/author>Wed, 18 Sep 2013 03:24:00 GMThttp://www.shnenglu.com/TianShiDeBaiGu/articles/203297.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/comments/203297.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/articles/203297.html#Feedback0http://www.shnenglu.com/TianShiDeBaiGu/comments/commentRss/203297.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/services/trackbacks/203297.html#define SQLITE_OK           0   /* 成功 | Successful result */
/* 错误码开?*/
#define SQLITE_ERROR        1   /* SQL错误 ?丢失数据?| SQL error or missing database */
#define SQLITE_INTERNAL     2   /* SQLite 内部逻辑错误 | Internal logic error in SQLite */
#define SQLITE_PERM         3   /* 拒绝讉K | Access permission denied */
#define SQLITE_ABORT        4   /* 回调函数h取消操作 | Callback routine requested an abort */
#define SQLITE_BUSY         5   /* 数据库文件被锁定 | The database file is locked */
#define SQLITE_LOCKED       6   /* 数据库中的一个表被锁?| A table in the database is locked */
#define SQLITE_NOMEM        7   /* 某次 malloc() 函数调用p| | A malloc() failed */
#define SQLITE_READONLY     8   /* 试写入一个只L据库 | Attempt to write a readonly database */
#define SQLITE_INTERRUPT    9   /* 操作?sqlite3_interupt() 函数中断 | Operation terminated by sqlite3_interrupt() */
#define SQLITE_IOERR       10   /* 发生某些盘 I/O 错误 | Some kind of disk I/O error occurred */
#define SQLITE_CORRUPT     11   /* 数据库磁盘映像不正确 | The database disk image is malformed */
#define SQLITE_NOTFOUND    12   /* sqlite3_file_control() 中出现未知操作数 | Unknown opcode in sqlite3_file_control() */
#define SQLITE_FULL        13   /* 因ؓ数据库满D插入p| | Insertion failed because database is full */
#define SQLITE_CANTOPEN    14   /* 无法打开数据库文?| Unable to open the database file */
#define SQLITE_PROTOCOL    15   /* 数据库锁定协议错?| Database lock protocol error */
#define SQLITE_EMPTY       16   /* 数据库ؓI?| Database is empty */
#define SQLITE_SCHEMA      17   /* 数据l构发生改变 | The database schema changed */
#define SQLITE_TOOBIG      18   /* 字符串或二进制数据超q大限?| String or BLOB exceeds size limit */
#define SQLITE_CONSTRAINT  19   /* ׃U束q例而取?| Abort due to constraint violation */
#define SQLITE_MISMATCH    20   /* 数据cd不匹?| Data type mismatch */
#define SQLITE_MISUSE      21   /* 不正的库?| Library used incorrectly */
#define SQLITE_NOLFS       22   /* 使用了操作系l不支持的功?| Uses OS features not supported on host */
#define SQLITE_AUTH        23   /* 授权p| | Authorization denied */
#define SQLITE_FORMAT      24   /* 附加数据库格式错?| Auxiliary database format error */
#define SQLITE_RANGE       25   /* 传递给sqlite3_bind()的第二个参数出范围 | 2nd parameter to sqlite3_bind out of range */
#define SQLITE_NOTADB      26   /* 被打开的文件不是一个数据库文g | File opened that is not a database file */
#define SQLITE_ROW         100  /* sqlite3_step() 已经产生一个行l果 | sqlite3_step() has another row ready */
#define SQLITE_DONE        101  /* sqlite3_step() 完成执行操作 | sqlite3_step() has finished executing */
/* 错误码结?*/


]]>
emacs实用函数ȝhttp://www.shnenglu.com/TianShiDeBaiGu/articles/199528.html何清?/dc:creator>何清?/author>Wed, 17 Apr 2013 17:09:00 GMThttp://www.shnenglu.com/TianShiDeBaiGu/articles/199528.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/comments/199528.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/articles/199528.html#Feedback0http://www.shnenglu.com/TianShiDeBaiGu/comments/commentRss/199528.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/services/trackbacks/199528.html阅读全文

]]>
EMACS 24配置遇到的问题以及解x?/title><link>http://www.shnenglu.com/TianShiDeBaiGu/articles/199527.html</link><dc:creator>何清?/dc:creator><author>何清?/author><pubDate>Wed, 17 Apr 2013 17:08:00 GMT</pubDate><guid>http://www.shnenglu.com/TianShiDeBaiGu/articles/199527.html</guid><wfw:comment>http://www.shnenglu.com/TianShiDeBaiGu/comments/199527.html</wfw:comment><comments>http://www.shnenglu.com/TianShiDeBaiGu/articles/199527.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/TianShiDeBaiGu/comments/commentRss/199527.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/TianShiDeBaiGu/services/trackbacks/199527.html</trackback:ping><description><![CDATA[<h1><a id="viewpost1_TitleUrl" href="http://www.shnenglu.com/TianShiDeBaiGu/archive/2012/10/24/emacs24.html" style="color: #ff6600; text-decoration: none;">EMACS 24配置遇到的问题以及解x?/a></h1><div style="padding-left: 20px; font-size: 13px; color: #5e5e5e; font-family: Verdana, Helvetica, Arial; line-height: 18px; text-align: justify; background-color: #ffffff;"><div><span style="color: red;">1 emacs24在cedet使用时于老版本的cedet不兼?/span><br />需要去cedet官方下蝲最新的2.4版本的cedetQ?/configure;make;~译Qƈcedet-build.el~译Zq制文g以提高效率,命o为:emacs -Q -l cedet-build.el -f cedet-build<br /><br /><span style="color: red;">2 出现</span><span style="color: red;">symbols function definition is void:eieio-build-class-alist错误提示<br /></span><span style="color: #000000;">需要在.emacs?require 'cedet)后增加一?require 'eieio-opt)<br /><br /></span><span style="color: red;">3 无法扑ֈgdb-ui.elq个文g<br /></span><span style="color: #000000;">emacs24gdb囑Ş化调试工L插g名改Zgdb-mi,因此Q在.emacs中应该将原来?require 'gdb-ui)改ؓ(require 'gdb-mi)<br /><br /></span><div><span style="color: red;">4 load-with-code-conversion("/home/.emacs" "/home/.emacs" t t)</span><br />q个错误原因为找不到正确的site-lisp位置Q如果是自己~译的emacs需要确认自qsite-lisp是位?usr/local/share/emacs下,而不?usr/share/emacs下?/div></div></div><img src ="http://www.shnenglu.com/TianShiDeBaiGu/aggbug/199527.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/TianShiDeBaiGu/" target="_blank">何清?/a> 2013-04-18 01:08 <a href="http://www.shnenglu.com/TianShiDeBaiGu/articles/199527.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>emacs收拾弹出H口 好东?popwin.elhttp://www.shnenglu.com/TianShiDeBaiGu/articles/196629.html何清?/dc:creator>何清?/author>Wed, 26 Dec 2012 01:31:00 GMThttp://www.shnenglu.com/TianShiDeBaiGu/articles/196629.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/comments/196629.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/articles/196629.html#Feedback0http://www.shnenglu.com/TianShiDeBaiGu/comments/commentRss/196629.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/services/trackbacks/196629.html阅读全文

]]>
redhat使用yum使用安装ISO镜像或者光盘上的Y?/title><link>http://www.shnenglu.com/TianShiDeBaiGu/articles/kvm.html</link><dc:creator>何清?/dc:creator><author>何清?/author><pubDate>Tue, 09 Oct 2012 09:10:00 GMT</pubDate><guid>http://www.shnenglu.com/TianShiDeBaiGu/articles/kvm.html</guid><wfw:comment>http://www.shnenglu.com/TianShiDeBaiGu/comments/193067.html</wfw:comment><comments>http://www.shnenglu.com/TianShiDeBaiGu/articles/kvm.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/TianShiDeBaiGu/comments/commentRss/193067.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/TianShiDeBaiGu/services/trackbacks/193067.html</trackback:ping><description><![CDATA[<div>挂蝲ISO文gQ?br />mkdir -p /media/rhel<br />mount -o loop rhel.iso /media/rhel<br /><br />d文grhel.repo?etc/yum.repos.d/下,在rhel.repo中加入如下内?br /><span style="background-color: #eeeeee; font-size: 13px; ">[rhel_6_iso]<br /></span><span style="font-size: 13px; background-color: #eeeeee; ">name</span><span style="font-size: 13px; background-color: #eeeeee; ">=</span><span style="font-size: 13px; background-color: #eeeeee; ">local iso</span><br style="font-size: 13px; " /><span style="font-size: 13px; background-color: #eeeeee; ">baseurl</span><span style="font-size: 13px; background-color: #eeeeee; ">=</span><span style="font-size: 13px; background-color: #eeeeee; ">file:</span><span style="font-size: 13px; color: #808080; ">///</span><span style="font-size: 13px; color: #008000; ">media/rhel/</span><span style="font-size: 13px; color: #808080; "><br /></span><span style="font-size: 13px; background-color: #eeeeee; ">gpgcheck</span><span style="font-size: 13px; background-color: #eeeeee; ">=</span><span style="font-size: 13px; background-color: #eeeeee; ">1</span><br style="font-size: 13px; " /><span style="font-size: 13px; background-color: #eeeeee; ">gpgkey</span><span style="font-size: 13px; background-color: #eeeeee; ">=</span><span style="font-size: 13px; background-color: #eeeeee; ">file:</span><span style="font-size: 13px; color: #808080; ">///</span><span style="font-size: 13px; color: #008000; ">media/rhel/RPM-GPG-KEY-redhat-release</span><br /><br /><br />试安装kvm<br />yun install kvm<br /><br /><div>[root@localhost rhel]# yum install kvm</div><div>Loaded plugins: fastestmirror, product-id, subscription-manager</div><div>Updating certificate-based repositories.                       </div><div>Loading mirror speeds from cached hostfile                     </div><div>addons                                                                            | 1.9 kB     00:00     </div><div>base                                                                              | 1.1 kB     00:00     </div><div>extras                                                                            | 1.9 kB     00:00     </div><div>rhel_6_iso                                                                        | 4.0 kB     00:00 ... </div><div>rhel_6_iso/primary_db                                                             | 3.1 MB     00:00 ... </div><div>update                                                                            | 1.9 kB     00:00     </div><div>Setting up Install Process                                                                               </div><div>Resolving Dependencies                                                                                   </div><div>--> Running transaction check                                                                            </div><div>---> Package qemu-kvm.x86_64 2:0.12.1.2-2.209.el6 will be installed                                      </div><div>rhel_6_iso/filelists_db                                                           | 3.6 MB     00:00 ... </div><div>--> Processing Dependency: qemu-img = 2:0.12.1.2-2.209.el6 for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64      </div><div>--> Processing Dependency: vgabios-vmware for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64              </div><div>--> Processing Dependency: vgabios-stdvga for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64              </div><div>--> Processing Dependency: vgabios-qxl for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64                 </div><div>--> Processing Dependency: vgabios for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64                     </div><div>--> Processing Dependency: seabios for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64                     </div><div>--> Processing Dependency: libspice-server.so.1(SPICE_SERVER_0.8.3)(64bit) for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64                                                                                      </div><div>--> Processing Dependency: libspice-server.so.1(SPICE_SERVER_0.8.2)(64bit) for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64                                                                                      </div><div>--> Processing Dependency: libspice-server.so.1(SPICE_SERVER_0.8.1)(64bit) for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64                                                                                      </div><div>--> Processing Dependency: libspice-server.so.1(SPICE_SERVER_0.6.0)(64bit) for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64                                                                                      </div><div>--> Processing Dependency: /usr/share/sgabios/sgabios.bin for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64 </div><div>--> Processing Dependency: /usr/share/gpxe/virtio-net.rom for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64 </div><div>--> Processing Dependency: /usr/share/gpxe/rtl8139.rom for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64 </div><div>--> Processing Dependency: /usr/share/gpxe/rtl8029.rom for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64 </div><div>--> Processing Dependency: /usr/share/gpxe/pcnet32.rom for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64 </div><div>--> Processing Dependency: /usr/share/gpxe/e1000-0x100e.rom for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64     </div><div>--> Processing Dependency: libspice-server.so.1()(64bit) for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64  </div><div>--> Processing Dependency: libcelt051.so.0()(64bit) for package: 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64    </div><div>--> Running transaction check                                                                            </div><div>---> Package celt051.x86_64 0:0.5.1.3-0.el6 will be installed                                            </div><div>---> Package gpxe-roms-qemu.noarch 0:0.9.7-6.9.el6 will be installed                                     </div><div>---> Package qemu-img.x86_64 2:0.12.1.2-2.209.el6 will be installed                                      </div><div>---> Package seabios.x86_64 0:0.6.1.2-8.el6 will be installed                                            </div><div>---> Package sgabios-bin.noarch 0:0-0.3.20110621svn.el6 will be installed                                </div><div>---> Package spice-server.x86_64 0:0.8.2-5.el6 will be installed                                         </div><div>---> Package vgabios.noarch 0:0.6b-3.6.el6 will be installed                                             </div><div>--> Finished Dependency Resolution                                                                       </div><div></div><div>Dependencies Resolved</div><div></div><div>=========================================================================================================</div><div> Package                  Arch             Version                            Repository            Size </div><div>=========================================================================================================</div><div>Installing:                                                                                              </div><div> qemu-kvm                 x86_64           2:0.12.1.2-2.209.el6               rhel_6_iso           1.1 M </div><div>Installing for dependencies:                                                                             </div><div> celt051                  x86_64           0.5.1.3-0.el6                      rhel_6_iso            50 k </div><div> gpxe-roms-qemu           noarch           0.9.7-6.9.el6                      rhel_6_iso           219 k </div><div> qemu-img                 x86_64           2:0.12.1.2-2.209.el6               rhel_6_iso           329 k </div><div> seabios                  x86_64           0.6.1.2-8.el6                      rhel_6_iso            83 k </div><div> sgabios-bin              noarch           0-0.3.20110621svn.el6              rhel_6_iso           6.6 k </div><div> spice-server             x86_64           0.8.2-5.el6                        rhel_6_iso           251 k </div><div> vgabios                  noarch           0.6b-3.6.el6                       rhel_6_iso            42 k </div><div></div><div>Transaction Summary</div><div>=========================================================================================================</div><div>Install       8 Package(s)                                                                               </div><div></div><div>Total download size: 2.1 M</div><div>Installed size: 6.1 M     </div><div>Is this ok [y/N]: y       </div><div>Downloading Packages:     </div><div>---------------------------------------------------------------------------------------------------------</div><div>Total                                                                     26 MB/s | 2.1 MB     00:00     </div><div>warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY                       </div><div>Retrieving key from file:///media/rhel/RPM-GPG-KEY-redhat-release                                        </div><div>Importing GPG key 0xFD431D51:                                                                            </div><div> Userid: "Red Hat, Inc. (release key 2) <security@redhat.com>"                                           </div><div> From  : /media/rhel/RPM-GPG-KEY-redhat-release                                                          </div><div>Is this ok [y/N]: y                                                                                      </div><div>Importing GPG key 0x2FA658E0:                                                                            </div><div> Userid: "Red Hat, Inc. (auxiliary key) <security@redhat.com>"                                           </div><div> From  : /media/rhel/RPM-GPG-KEY-redhat-release                                                          </div><div>Is this ok [y/N]: y                                                                                      </div><div>Running rpm_check_debug                                                                                  </div><div>Running Transaction Test                                                                                 </div><div>Transaction Test Succeeded                                                                               </div><div>Running Transaction                                                                                      </div><div>Warning: RPMDB altered outside of yum.                                                                   </div><div>** Found 3 pre-existing rpmdb problem(s), 'yum check' output follows:                                    </div><div>PackageKit-0.5.8-19.el6.x86_64 has missing requires of PackageKit-yum = ('0', '0.5.8', '19.el6')         </div><div>PackageKit-0.5.8-19.el6.x86_64 has missing requires of PackageKit-yum-plugin = ('0', '0.5.8', '19.el6')  </div><div>rhn-check-1.0.0-73.el6.noarch has missing requires of yum-rhn-plugin >= ('0', '0.9.1', '35')             </div><div>  Installing : celt051-0.5.1.3-0.el6.x86_64                                                          1/8 </div><div>  Installing : spice-server-0.8.2-5.el6.x86_64                                                       2/8 </div><div>  Installing : seabios-0.6.1.2-8.el6.x86_64                                                          3/8 </div><div>  Installing : sgabios-bin-0-0.3.20110621svn.el6.noarch                                              4/8 </div><div>  Installing : vgabios-0.6b-3.6.el6.noarch                                                           5/8 </div><div>  Installing : 2:qemu-img-0.12.1.2-2.209.el6.x86_64                                                  6/8 </div><div>  Installing : gpxe-roms-qemu-0.9.7-6.9.el6.noarch                                                   7/8 </div><div>  Installing : 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64                                                  8/8 </div><div>rhel_6_iso/productid                                                              | 1.7 kB     00:00 ... </div><div>Installed products updated.                                                                              </div><div>  Verifying  : gpxe-roms-qemu-0.9.7-6.9.el6.noarch                                                   1/8 </div><div>  Verifying  : spice-server-0.8.2-5.el6.x86_64                                                       2/8 </div><div>  Verifying  : 2:qemu-img-0.12.1.2-2.209.el6.x86_64                                                  3/8 </div><div>  Verifying  : vgabios-0.6b-3.6.el6.noarch                                                           4/8 </div><div>  Verifying  : 2:qemu-kvm-0.12.1.2-2.209.el6.x86_64                                                  5/8 </div><div>  Verifying  : sgabios-bin-0-0.3.20110621svn.el6.noarch                                              6/8 </div><div>  Verifying  : seabios-0.6.1.2-8.el6.x86_64                                                          7/8 </div><div>  Verifying  : celt051-0.5.1.3-0.el6.x86_64                                                          8/8 </div><div></div><div>Installed:</div><div>  qemu-kvm.x86_64 2:0.12.1.2-2.209.el6                                                                   </div><div></div><div>Dependency Installed:</div><div>  celt051.x86_64 0:0.5.1.3-0.el6                        gpxe-roms-qemu.noarch 0:0.9.7-6.9.el6</div><div>  qemu-img.x86_64 2:0.12.1.2-2.209.el6                  seabios.x86_64 0:0.6.1.2-8.el6</div><div>  sgabios-bin.noarch 0:0-0.3.20110621svn.el6            spice-server.x86_64 0:0.8.2-5.el6</div><div>  vgabios.noarch 0:0.6b-3.6.el6</div><div></div><div>Complete!</div><div></div><br /><span style="background-color: #eeeeee; font-size: 13px; "><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></span></div><img src ="http://www.shnenglu.com/TianShiDeBaiGu/aggbug/193067.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/TianShiDeBaiGu/" target="_blank">何清?/a> 2012-10-09 17:10 <a href="http://www.shnenglu.com/TianShiDeBaiGu/articles/kvm.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XAMPP: Couldn't start MySQL! _______localhost not found_________bugfree 403您没有被分配权限_________cbDExceptionhttp://www.shnenglu.com/TianShiDeBaiGu/articles/bugfree.html何清?/dc:creator>何清?/author>Fri, 21 Sep 2012 07:53:00 GMThttp://www.shnenglu.com/TianShiDeBaiGu/articles/bugfree.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/comments/191486.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/articles/bugfree.html#Feedback0http://www.shnenglu.com/TianShiDeBaiGu/comments/commentRss/191486.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/services/trackbacks/191486.html
rm -rf /opt/lampp/

tar xvf xampp-linux-1.8.1.tar.gz -/opt/
cp bugfree3.0.3 /opt/lampp/htdocs/ -dpr && sync

mkdir /opt/lampp/htdocs/BugFile -p
chmod 777 /opt/lampp/htdocs/BugFile
chmod 777 /opt/lampp/htdocs/bugfree3.0.3/ -R


perl -pi -'s|Listen\ 80|Listen\ 10000|g' /opt/lampp/etc/httpd.conf
perl -pi -'s|upload_max_filesize\ =\ 2M|upload_max_filesize\ =\ 50M|g' /opt/lampp/etc/php.ini
perl -pi -'s|nobody|root|g' /opt/lampp/etc/my.cnf
perl -pi -'s|phpmyadmin\"\>|phpmyadmin\"\>\n\ \ \ \ Require\ all\ granted|g' /opt/lampp/etc/extra/httpd-xampp.conf


#把空的用户密码都修改成非I的密码
echo "L?span style="color: #808080; ">/opt/lampp/bin/mysql -u root mysql 执行如下2个语?q启lamp
UPDATE user SET Password=PASSWORD('123456'where USER='root' and host='root' or host='localhost';
FLUSH PRIVILEGES;
特别注意Q?23456密码只是一个实?

#/opt/lampp/bin/mysql -u root mysql -p
killall httpd && killall mysqld && killall proftpd
/opt/lampp/lampp start

bugfree的错误及解决ҎQ这软g不好用。。。。?br />1 XAMPP: Couldn't start MySQL!   
查看错误日志文g/opt/lamp/var/mysql/localhost.localdomain.err
知道/tmp目录下某个文件不能写Q不知道谁把/tmp目录的权限改?55了,所以普通用h法写。原来没有普通用L情况下,pȝ只有root用户Q所以没有发现这个问题)Q两步:
a,使用root用户?tmp权限Qchmod 777 /tmp
b,删除/tmp下面部分不需要的文gQ腾出空_rm -rf /tmp/$(unusefull)

2
403您没有被分配权限后台理无法开启,q个应该是mysql没有启动_的权限导致的Q?br />修改/opt/lampp/conf/my.conf中的user=nobody为root

3安装时候无法找到localhost
我的错误原因是mysql后台q程没有开启,误一步确认mysqld的问题?br />
4 cbDException
数据库无权限Q修?opt/lampp/conf/my.confQ找到user=nobody,修改成user=root

qY件布局不合理。。。。。。?img src ="http://www.shnenglu.com/TianShiDeBaiGu/aggbug/191486.html" width = "1" height = "1" />

]]>
linux软g安装与卸载管?/title><link>http://www.shnenglu.com/TianShiDeBaiGu/articles/168585.html</link><dc:creator>何清?/dc:creator><author>何清?/author><pubDate>Thu, 22 Mar 2012 03:15:00 GMT</pubDate><guid>http://www.shnenglu.com/TianShiDeBaiGu/articles/168585.html</guid><wfw:comment>http://www.shnenglu.com/TianShiDeBaiGu/comments/168585.html</wfw:comment><comments>http://www.shnenglu.com/TianShiDeBaiGu/articles/168585.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/TianShiDeBaiGu/comments/commentRss/168585.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/TianShiDeBaiGu/services/trackbacks/168585.html</trackback:ping><description><![CDATA[@import url(http://www.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); <div>1、通过deb包安装的情况Q?br /> 安装.deb包:<br /> <div><strong>代码:</strong></div> <div>sudo dpkg -i package_file.deb</div> <br /> 反安?deb包:<br /> <div><strong>代码:</strong></div> <div>sudo dpkg -r package_name</div> <br /> <br /> 2、通过apt-get安装的情况:<br /> 安装<br /> <div><strong>代码:</strong></div> <div>sudo apt-get install package_name</div> <br /> 反安?br /> <div><strong>代码:</strong></div> <div>sudo apt-get remove package_name</div> </div> <div><br /> </div> <div> <h1 class="block_title" style="margin: 10px 0px 0px; font-size: 12pt; color: gray; font-family: verdana, arial, sans-serif; height: 59px; padding: 20px 0px 3px 20px; text-transform: uppercase; line-height: 18px; text-align: justify;"><a id="viewpost1_TitleUrl" href="http://www.shnenglu.com/TianShiDeBaiGu/articles/168415.html" style="color: #ff6600; text-decoration: none;">修复崩溃的GNOME-PANNEL</a></h1> <div id="9bb3xll" class="post" style="padding-left: 20px; font-size: 13px; color: #5e5e5e; font-family: Verdana, Helvetica, Arial; line-height: 18px; text-align: justify;"> <div id="93j9ff9" class="postcontent"> <div><span style="font-size: 11px;">$sudo apt-get autoremove</span></div> <div><span style="font-size: 11px;">$sudo apt-get install gnome-panel</span></div> <div><span style="font-size: 11px;">(做完q个提示E: Sub-process /usr/bin/dpkg returned an error code,提示kio-umountwrapper文g错误)</span></div> <div><span style="font-size: 11px;">$sudo apt-get install kio-umountwrapper</span></div> <div><span style="font-size: 11px;">$sudo apt-get install gnome-panel</span></div> <div><span style="font-size: 11px;">$gnome-panel</span></div> <div><span style="font-size: 11px;"><br /> </span></div> <div><span style="font-size: 11px;">Z保重启后能正常。system--preferences--Sessions--Current session 看看gnome-panel 一的style是不是restart。不是的话就是设为restart。okQ重启检验一?/span></div> </div> </div> </div><img src ="http://www.shnenglu.com/TianShiDeBaiGu/aggbug/168585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/TianShiDeBaiGu/" target="_blank">何清?/a> 2012-03-22 11:15 <a href="http://www.shnenglu.com/TianShiDeBaiGu/articles/168585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>老是忘记的一些技术点http://www.shnenglu.com/TianShiDeBaiGu/articles/linux_note.html何清?/dc:creator>何清?/author>Wed, 04 Jan 2012 08:54:00 GMThttp://www.shnenglu.com/TianShiDeBaiGu/articles/linux_note.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/comments/163557.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/articles/linux_note.html#Feedback0http://www.shnenglu.com/TianShiDeBaiGu/comments/commentRss/163557.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/services/trackbacks/163557.html
.bashrc的一个环境变?/span> PS1='[\[\033[01;32m\]\h:\[\033[01;34m\]\w\[\033[00m\]]\n\$ '
?/span>看文件大?            du -h 
查看文g在文件系l中的信?nbsp;df 
查看动态库的内部符?     nm -D 
查看q程?              ps -aux
查看q程?              pstree 
grep -rl DEBUG | xargs perl -pi -e "s|内容|\/\/内容|g"   注释当前有DEBUG字段的文件内的所有含?#8220;内容”的部?/span>

fuck_the_GFW.sh
#!/usr/bin/expect -f
set timeout 30
spawn ssh -D 7070 -l colleague 204.12.234.13
expect "password: "
send "vlctech\r"
interact

cscope生成索引文g
 find  . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files
cscope  -Rbkq -i cscope.files

道因ؓ某些q程占用服务而无法用的问题
用netstat -lntp | grep :80 扑և占用80端口的进E?/div>
    例如Q?/div>
    [root@localhost ~]# netstat -lntp | grep :80
    tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      3040/nginx
    q里的程序名是nginx
    
    试用killall [E序名]Q看能不能关闭他?/div>
    例如Qkillall nginx
    如果不行Q用ps 扑և他的PIDQ?/div>
    例如Q?/div>
    [root@localhost ~]# ps aux | grep nginx | grep -v grep
    root      5406  0.0  0.2   5996   756 ?        Ss   03:32   0:00 nginx: master process /usr/local/webserver/nginx/sbin/nginx
    q里的pid?5406
    然后用kill命ox它?/div>
    例如Qkill 5406
    PS:如果是通过apt-get安装的apacheQ可以尝试通过/etc/init.d/[E序名] stop 停止q程Q或?/div>
    通过chkconfig [E序名] off 关闭开机启动?br />
redhatpȝ导入KEY
http://www.liusuping.com/ubuntu-linux/Redhat-linux-centos-yum.html


]]>fedora 源设|?/title><link>http://www.shnenglu.com/TianShiDeBaiGu/articles/149495.html</link><dc:creator>何清?/dc:creator><author>何清?/author><pubDate>Sun, 26 Jun 2011 07:15:00 GMT</pubDate><guid>http://www.shnenglu.com/TianShiDeBaiGu/articles/149495.html</guid><wfw:comment>http://www.shnenglu.com/TianShiDeBaiGu/comments/149495.html</wfw:comment><comments>http://www.shnenglu.com/TianShiDeBaiGu/articles/149495.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/TianShiDeBaiGu/comments/commentRss/149495.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/TianShiDeBaiGu/services/trackbacks/149495.html</trackback:ping><description><![CDATA[更换源前做好备䆾Q主要是源文Ӟ以及RPM公匙文g<br />/ect/yum.conf yum配置文g<br />/etc/yum.repos.d/ repo文g,源站?br />/etc/pki/rpm-gpg/ RPM公匙文g <p>然后d|站http://mirrors.163.com 或?http://mirrors.sohu.comQ?/p><p>查看feoora那行的帮助,里面有说明操作?/p><p>然后</p><p>删除~存 从新更新<br />yum clean all <br />yum makecache</p><p>q可以自动添加高速源<br />安装yum-plugin-fastestmirror(自动挑选快的镜像站) <br />yum install yum-fastestmirror <br />?定/etc/yum.conf中的plugins=1</p><img src ="http://www.shnenglu.com/TianShiDeBaiGu/aggbug/149495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/TianShiDeBaiGu/" target="_blank">何清?/a> 2011-06-26 15:15 <a href="http://www.shnenglu.com/TianShiDeBaiGu/articles/149495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>g++~译器错误unknown pseudo-op: `.weakref' Q已解决Q?/title><link>http://www.shnenglu.com/TianShiDeBaiGu/articles/gcc_compile_error.html</link><dc:creator>何清?/dc:creator><author>何清?/author><pubDate>Sun, 10 Apr 2011 05:50:00 GMT</pubDate><guid>http://www.shnenglu.com/TianShiDeBaiGu/articles/gcc_compile_error.html</guid><wfw:comment>http://www.shnenglu.com/TianShiDeBaiGu/comments/143869.html</wfw:comment><comments>http://www.shnenglu.com/TianShiDeBaiGu/articles/gcc_compile_error.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/TianShiDeBaiGu/comments/commentRss/143869.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/TianShiDeBaiGu/services/trackbacks/143869.html</trackback:ping><description><![CDATA[看了半天的英文解x案,没有对应的办法,q个错误的原因是~译器套件的版本不兼宏V?br /> 通常在编译了一些版本不匚w的编译器之后Q会有一pd的类似错?br /> 如果你实在没有别的办法了Q删?font color="#008000">/usr/local/bin/</font>文g下的内容Q该目录下的文g是本地编译生的Q执行程序时控制C先去q个目录扄序,如果有,他就使用下面的程序,所以如果你的本地编译程序出错了Q删除这个目录,Z险v见,先备份,再删除?br /> 另外提一个徏?---------量使用pȝ提供的在U安装Y件来安装你需要的软gQ深入理解你的系l工作的q程Q这会避免我们走很多弯\?br /><br /><br /> 如果q有疑问Q请提出?br /> Wellcom and have fun !<br /><img src ="http://www.shnenglu.com/TianShiDeBaiGu/aggbug/143869.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/TianShiDeBaiGu/" target="_blank">何清?/a> 2011-04-10 13:50 <a href="http://www.shnenglu.com/TianShiDeBaiGu/articles/gcc_compile_error.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GCC强大背后http://www.shnenglu.com/TianShiDeBaiGu/articles/tianshidebaigu_1_cpp.html何清?/dc:creator>何清?/author>Sat, 27 Nov 2010 09:48:00 GMThttp://www.shnenglu.com/TianShiDeBaiGu/articles/tianshidebaigu_1_cpp.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/comments/134840.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/articles/tianshidebaigu_1_cpp.html#Feedback0http://www.shnenglu.com/TianShiDeBaiGu/comments/commentRss/134840.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/services/trackbacks/134840.html

GCC强大背后

来自Q?a >http://www.cnblogs.com/wwang/archive/2010/11/24/1883850.html

 

GCC Q全UGNU Compiler CollectionQ是一套GNU开发的~译器环境,它的创始Z是大名鼎鼎的Richard.M.Stallman。最初GCC刚开始开发时Q它q叫做GNU C CompilerQ随着开发的深入QGCC很快得到了扩展,不仅可以支持C语言Q还可以处理C++QPascalQObject-CQJava以及Ada{其他语a。目前,GCC不仅是GNU的官方编译器Q也成ؓ~译和创建其他操作系l的~译器,包括BSD家族以及MAC OS X{。另外,GCC也是跨^C叉编译的首选,它不仅支持Intel的x86pdQ同时也支持MIPSQARMQPowerPCQSPARC{等处理器。可以这么说Q即使GCC不是世界上效率最高的~译器,它也一定是世界上最全面的编译器?/p>

 

1. GCC?/h1>
我们先回C个常识性的问题Q什么是~译器呢Q简单地_~译器可以看作是一个语a译器。就像把中文译成英语一P~译器可以把高语言译成计机能够执行的机器语a。这L来,GCC可以得上是一个精通多国语a的高U翻译官了?/div>
最单的GCC使用指o如下所C:
gcc  hello.c  -o  hello
 
GCC接受hello.c作ؓ输入Q最后生目标可执行代码hello。这个简单的程实际上经历了很多步骤Q如下图所C:
虽然我们只用了一条命令就完成了编译,但实际上gcc命o依次呼叫了cppQgcc自己Qgas以及ld来进行完整的~译程Q最后生成最l的可执行文件hello?/div>
下面我们看一下分解动作:
cpp  hello.c  >  hello.i
gcc  -S  hello.i
as  hello.s  -o  hello.o
ld  -dynamic-linker  /lib/ld-linux.so.2  /usr/lib/crt1.o  /usr/lib/crti.o  /usr/lib/gcc/i686-linux-gnu/4.4.5/crtbegin.o -L/usr/lib/gcc/i686-linux-gnu/4.4.5 hello.o  -lgcc  -lgcc_eh  -lc  /usr/lib/gcc/i686-linux-gnu/4.4.5/crtend.o  /usr/lib/crtn.o  -o  hello
 
看完q些步骤有没有晕头{向的感觉呢?对于普通的用户来说Q还是让GCC帮我们做q些事情比较好?/div>
对于如何学习使用GCCQ可以参考GCC官方的手册,如果大家觉得官方的手册太|嗦Q我q里推荐一本GCC的入门书c?a target="_blank">An Introduction to GCC》,q本书详的介绍了GCC的用方法,内容显易懂Q很适合初学者?/div>
 

2. GCC强大的背?/h1>

学过~译原理q门评的同学对下面q副囑ֺ该很熟悉Q这是经典的~译程?/p>

GCC作ؓl典的编译器Q自然也是遵循这个教U书程Q实际GCC的处理更复杂点,但本质上是一LQ。我们先化一下上面这q图Q以中间代码为分界,前面的词法分析、语法分析、语义分析我们把它称之ؓ前端处理Q后面的优化和目标代码生成我们称之ؓ后端处理?/p>

试想一下,是否可以Z同的高语言单独写一个前端,然后Z同的处理器架构单独写一个后端呢Q?/p>

GCC基本上也是这么实现的Q不q不要误会,q没有一个统一的gcc执行E序能够处理如此多的前端和后端,每个语言的编译器都是一个独立的E序Q如C语言的编译器是gccQC++的编译器是g++Q,而不同的后端也要对应不同的可执行E序。你可以下蝲单独的一份GCC源代码,通过不同的configure来编译自己需要的~译器?/p>

而且Q编译器的实C比上图要复杂的多Q前端的主要功能是生一个可供后端处理的语法树,而语法树l构实际上很难与处理器架构脱钩,q些都是~译器应用中需要解决的问题?/p>

GCC强大的真正原因是什么?是因为它支持了众多的前端和后端吗Q这些都不过是一个表象而已。GCC是一Ƅ正自q~译器,我们可以随时把代码拿q来修改以实现自己需要的功能。如果你的硬件^台增加了一些指令,而普通的~译器ƈ不能产生q些指o怎么办?在GCC后端dq些指o吧。如果你觉得C语言用的不太手Q想l它d一些功能怎么办?修改GCC的前端吧。因为有了GCCQ我们才拥有q些自由Q以及迅速实现自己想法的能力Q而这些才是GCC强大背后的基?/p>

2010q?月䆾的时候,Google的Go语言前端被允许进入GCC~译器家族,GCC更加强大了?/p>

 

3. GCC的多h?/h1>
GCC因ؓ其灵zL被应用C很多领域和系l,从PC上的开发到嵌入式开发,都可以见到GCC的媄子?/div>
 

3.1   PC开?/h2>
我们先看看PC。MAC自从投入Intel的怀抱,是否也可以看作是一UPC呢?

Linux

Linuxpȝ应该是GCC的主战场Q但也是最没必要去说的一个系l,除了GCCQ难道我们还有更好的选择吗?Linux内核、Apache服务器、MySQL数据库,{等一pd伟大的作品都是通过GCC来构建的QGCC可以说是GNU/Linuxpȝ的基矟?/div>

MAC OS X

MAC OS X也是GCC的重度用P其应用程序开发环境Cocoa是使用的GCCQ所以在MAC OS X下开发也是离不开GCC的?/div>

Windows

现在在Windows下开发C/C++E序一般都是用微Y的编译器Q当q的Borland已经成ؓ传说。但是如果你不想付钱的话Q也可以考虑Windows下的GCC?/div>
在Windows下体验GCC最常用的有两种方式Q一是在Cygwin下用GCCQ另外一U是使用MinGW?/div>
Cygwin 是一个自pY件的集合Q最初由Cygnus Solutions开发,目的是在Windowspȝ上运行类Unix的Y件。通过Cygwin~译的程序可以在Windows上运行,但必M用cygwin.dll?/div>
MinGW (Minimalist GNU for Windows)Q是GNU开发工L植到Windowsq_的物,包括一pd头文件、库和可执行文gQ用MinGW开发的E序不需要额外的W三方DLL可以直接在Windows上运行。Nokia的图形开发包QT在Windows下就是调用MinGW来编译的?/div>

DOS

在DOSpȝ下也是可以用GCC的,国内的DOS开发者可能更熟悉Turbo C或者Open WatcomQGCC的DOS版本DJGPP其实也是32位DOSE序开发的L环境之一。最初DJGPP的发起hDJ Delorie曄询问qRichard StallmanQFSF是否考虑q把GCCUL到MS-DOS下,当时Richard的回{是GCC太庞大,而MS-DOS只不q是?6位的操作pȝQ所以官方ƈ没有考虑qg事。DJ Delorieq没有因此而退~,最l给我们带来了这个优U的开发^台。DJGPP刚开始开发时叫做djgccQ在引入了C++之后改ؓ现在q个名字QDJ's GNU Programming PlatformQ?/div>
 

3.2   嵌入式开?/h2>
对于嵌入式开发领域来_因ؓ开发板的能力限Ӟ是无法运行编译环境的Q这样就需要在PC上通过交叉~译来生成目标可执行E序QGCC的高度灵zL在嵌入式开发上发挥了极大的作用?/div>

Android

看看当今最火的Udq_AndroidQ就是完全用GCC来构建的Q请注意Q这里指的不是Android应用E序QAndroid下的应用E序是运行在Dalvik虚拟Z的JavaE序?/div>

iOS

Apple的iOS应用E序开发也是用Cocoa来进行,q怎么会离开GCC呢?

MeeGo/Symbian

在Apple和Google的冲MQNokiag已经日薄西山了,但对于中国国情来_真的是这样吗QiPhone高高在上Q拥有者只会是数QGoogle退Z国之后,Android Market很难在国内有所作ؓQ再加上Nokia手机一贯皮实的口碑Q现在的Symbian以及来的MeeGo的保有量应该不会低。Nokia已经把Symbian和MeeGo的开发环境统一到QT上了Q这里依然是GCC的一亩三分田?/div>
 
 
GCC是强大的Q但它ƈ不是一个h在战斗,在它的背后站着GNU工具?/font>Q包括makeQGCCQBinutilsQGDB{一pd工具Q这些工具之间是相辅相成的,只有把它们组合v来用才能发挥其最大的威力?/div>


]]>C++强大的背?/title><link>http://www.shnenglu.com/TianShiDeBaiGu/articles/tianshidebaigu_cpp.html</link><dc:creator>何清?/dc:creator><author>何清?/author><pubDate>Sat, 27 Nov 2010 09:46:00 GMT</pubDate><guid>http://www.shnenglu.com/TianShiDeBaiGu/articles/tianshidebaigu_cpp.html</guid><wfw:comment>http://www.shnenglu.com/TianShiDeBaiGu/comments/134839.html</wfw:comment><comments>http://www.shnenglu.com/TianShiDeBaiGu/articles/tianshidebaigu_cpp.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/TianShiDeBaiGu/comments/commentRss/134839.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/TianShiDeBaiGu/services/trackbacks/134839.html</trackback:ping><description><![CDATA[ <a name="top"> </a>  <h2><a id="ctl06_lnkTitle" ><font color="#6699cc">C++强大背后</font></a></h2><small>2010-09-17 00:56 by Milo Yip, 16411 visits, <a onclick="PutInWz();return false;" href="#">|摘</a>, <a >收藏</a>, <a id="ctl06_lnkEdit" >~辑</a></small><div id="znhtvdb" class="entry"><p>?1q前(1979q?Q一名刚获得博士学位的研I员Qؓ了开发一个Y仉目发明了一门新~程语言Q该研究员名?a ><font color="#3d81ee">Bjarne Stroustrup</font></a>Q该门语a则命名ؓ——C with classesQ四q后改称为C++。C++是一门通用~程语言Q支持多U编E范式,包括q程式、面向对?object-oriented programming, OP)、泛?generic programming, GP)Q后来ؓ泛型而设计的模版Q被<a ><font color="#3d81ee">发现</font></a>?a ><font color="#3d81ee">证明是图灵完备的</font></a>Q因此C++亦可支持<a ><font color="#3d81ee">模版元编E范?template metaprogramming, TMP)</font></a>。C++l承了C的特Ԍ既ؓ高语言Q又含低U语a功能Q可同时作ؓpȝ和应用编E语a?/p><p>C++q泛应用在不同领域,使用?a ><font color="#3d81ee">以数百万?/font></a>。根?a ><font color="#3d81ee">q十q的调查</font></a>QC++的流行程度约E_排行W??于C/Java之后)?C++l历长期的实践和演化Q才成ؓ今日的样貌?998q_C++标准委员会排除万难,使C++成ؓISO标准(俗称C++98)Q当中含非常强大?a ><font color="#3d81ee">标准模版?standard template library, STL)</font></a>。之后委员会?005q提交了有关标准库的<a ><font color="#3d81ee">W一个技术报?UTR1)</font></a>QƈZ一个标?a ><font color="#3d81ee">C++0x</font></a>而努力。可惜C++0xq不能在200xq完成,各界希望新标准能?011q内出台?/p><p>行的C++~译器中Q微软Visual C++ 2010已实?a ><font color="#3d81ee">部分C++0x语法q加入TR1扩充?/font></a>Q而gcc?a ><font color="#3d81ee">C++0x语法和库的支?/font></a>比VC2010更多?/p><h2>应否选择C++</h2><h3>哪些E序适宜使用C++?</h3><p>C++q万能丹,我按l验丑և一些C++的适用时机?/p><ul><li>C++适合构造程序中需求较E_的部分,需求变化较大的部分可用脚本语aQ?/li><li>E序d量发挥硬件的最高性能Q且性能瓉在于CPU和内存;</li><li>E序频J地与操作系l或g沟通;</li><li>E序必须使用C++框架/库,如大部分游戏引擎(如Unreal/Source)及中间g(如Havok/FMOD)Q虽然有些C++库提供其他语a的绑定,但通常原生的API性能最好、最斎ͼ</li><li>目中某个目标^台只提供C++~译器的支持?/li></ul><p>按应用领域来_C++适用于开发服务器软g、桌面应用、游戏、实时系l、高性能计算、嵌入式pȝ{?/p><h3>使用C++q是C? </h3><p>C++和C的设计哲学ƈ不一P两者取舍不同,所以不同的E序员和软g目会有不同选择Q难以一概而论。与C++相比QC具备~译速度快、容易学习、显式描q程序细节、较更新标?后两者也可同时视为缺?{优炏V在语言层面上,C++包含l大部分C语言的功?例外之一QC++没有C99?a ><font color="#3d81ee">变长数组VLA</font></a>)Q且提供OOP和GP的特性。但其实用C也可实现OOP思想Q亦可利用宏d现某E度的GPQ只不过C++的语法能较简z、自动地实现OOP/GP。C++?a ><font color="#3d81ee">RAII</font></a>(resource acquisition is initializationQ资源获取就是初始化)Ҏ比较独特,C/C#/Java没有相应功能。回֎ԌStroustrup开发的早期C++~译器Cpre/<a ><font color="#3d81ee">Cfront</font></a>是把C++源代码翻译ؓCQ再用C~译器编译的。由此可知,C++~写的程序,都能用等效的CE序代替Q但C++在语a层面上提供了OOP/GP语法、更严格的类型检查系l、大量额外的语言Ҏ?如异常?a ><font color="#3d81ee">RTTI</font></a>{?Qƈ且C++标准库也较丰富。有时候C++的语法可使程序更z,如运符重蝲、隐式{换。但另一斚wQC语言的API通常比C++z,能较Ҏ供其他语aE序调用。因此,一些C++库会提供C的API装Q同时也可供CE序调用。相反,有时候也会把C的API装成C++形式Q以支持RAII和其他C++库整合等?</p><h3>ZC++性能可优于其他语a?</h3><p>相对q行于虚拟机语言(如C#/Java)QC/C++直接以静态Ş式把源程序编译ؓ目标q_的机器码。一般而言QC/C++E序在编译及链接时可q行的优化最丰富Q启动时的速度最快,q行时的额外内存开销最。而C/C++相对动态语a(如Python/Lua)也减了q行时的动态类型检。此外,C/C++的运行行为是定的,且不会有额外行ؓ(例如C#/Java必然会初始化变量)Q也不会有如垃圾攉(GC)而造成的不定性gq,而且C/C++的数据结构在内存中的布局也是定的。有时C++的一些功能会使程序性能优于CQ当中以内联和模版最为突出,q两功能C++标准库的sort()通常比C标准库的qsort()<a ><font color="#3d81ee">快多?/font></a>(C可用宏或人手~码去解x问题)。另一斚wQC/C++能直接映机器码Q之间没有另一层中间语aQ因此可以做底层优化Q例如?a ><font color="#3d81ee">内部(intrinsic)函数</font></a>和嵌入汇~语a。然而,许多C++的性能优点q免费午餐Q代价包括较长的~译链接旉和较易出错,因而增加开发时间和成本Q这点稍后补充?/p><p>我进行了一个简单全局渲染性能试(512x512像素Q每像素10000个采?QC++ 1时36分、Java 3时18分、PythonU?8天、RubyU?51天。评方式和其他语言的结果详?a ><font color="#3d81ee">博文</font></a>?/p><h2>C++常见问题</h2><h3>C++源代码跨q_?</h3><p>C++有不错的跨^台能力,但由于直接映硬Ӟ因性能优化的关p,跨^台能力不及Java及多数脚本语a。然而,实践跨^台的C++软gq是可行的,但须注意以下问题Q?/p><ul><li>C++标准没有规定原始数据cd(如int)的大,需要特定大的cdӞ可自订类?如int32_t)Q同时对Mcd使用sizeof()而不假设其大;</li><li>字节?byte order)按CPU有所不同Q特别要注意二进制输入输出、reinterpret_cast法;</li><li>原始数据和结构类型的地址寚w有差异;</li><li>~译器提供的一些编译器或^C用扩充指令;</li><li>避免?a ><font color="#3d81ee">应用二进制接?application binary interface, ABI)</font></a>的假设,例如调用函数时参数的取值顺序在C/C++中没定义Q在C++中也不可随便假设RTTI/虚表{实现方式?/li></ul><p>L而言Q跨q_C++软g可在头文件中用宏编译器和^収ͼ再用宏、typedef、自定^台相兛_现等Ҏd践跨q_QC++标准不会提供q类帮助?/p><h3>C++E序Ҏ崩溃?</h3><p>和许多语a相比QC/C++提供不安全的功能以最优化性能Q有可能造成崩溃。但要注意,很多q行旉误,如向I指?引用解引用、数l越界、堆栈溢出等Q其他语a也会报错或抛出异常,q些都是E序问题Q而不是语a本n的问题。有些意见认为,出现q类q行旉误,应该量写入日志q立卛_溃,不该让程序l运行,以免造成更大的媄?例如E序l箋把内存中错误的数据覆写文?。若要容错,可按业务把程序分割ؓ多进E,?a ><font color="#3d81ee">Chrome</font></a>或用fork()的Ş式。然而,C++有许多机制可以减错误,例如?a ><font color="#3d81ee">string</font></a>代替C字符Ԍ?a ><font color="#3d81ee">vector</font></a>?a ><font color="#3d81ee">array(TR1)</font></a>代替原始数组(有些实现可在调试模式越?Q用智能指针也能减一些原始指针的问题。另外,我最帔R到的BugQ就是没有初始化成员变量Q有时会D崩溃Q而且调试版和发行版的行ؓ可能不同?/p><h3>C++要手动做内存理?</h3><p>C++同时提供在堆栈上的自动局部变量,以及从自由存?free store)分配的对象。对于后者,E序员需手动释放Q或使用不同的容器和指针?C++E序员经常进一步优化内存,自定义内存分配策略以提升效能Q例如用对象池、自定义的单?双向堆栈区等。虽然C++0xq没加入GC功能Q但也可以自行编写或使用现成库。此外,C/C++也可以直接用操作系l提供的内存相关功能Q例如内存映文件、共享内存等?/p><h3>使用C++常要重造轮?</h3><p>我曾参与的C++目Q都会重造不标准库已提供的功能Q此情况在其他语a中较出现。我试图分析个中原因。首先,C++标准库相对很多语a来说是乏的Q各开发者便会重复地刉自订库。从另一个角度看QC++标准库是用C++~写?很多其他语言不用自n而是用C/C++ȝ写库)Q在能力和性能上,自订库和标准库ƈ无本质差别;另外Q标准库为通用而设Q对不同q_及多U用需求作取舍Q性能上有所影响Q例如EA公司曾发表自制的EASTL规格Q描q游戏开发方面对STL的性能及功能需求的特点Q此外,多个C++库一起用,l常会因规范不同而引起冲H,又或功能重叠Q所以项目可能须自行开发,或引入其他库的概忉|实现(?a ><font color="#3d81ee">Boost</font></a>/<a ><font color="#3d81ee">TR1</font></a>/<a ><font color="#3d81ee">Loki</font></a>)Q改写以W合目规范?/p><h3>C++~译速度很慢?</h3><p>错,是非常慢。我认ؓC++可能是实用程序语a中编译速度最慢的。此问题涉及C++沿用C的编译链接方式,又加入了复杂的类/泛型声明和内联机Ӟ使编译时间倍增。在C++对编译方法改革之??a ><font color="#3d81ee">module提案</font></a>)Q可使用以下技巧改善:W一Q?a ><font color="#3d81ee">pimpl手法</font></a>Q因性能损耗应用于调用ơ数不多的类Q第二,仅包含必要头文gQƈ量使用及提供前|声明版本的头文?如iosfwd)Q第三采用基于接口的设计Q但L意虚函数调用成本Q第四,采用<a ><font color="#3d81ee">unity build</font></a>Q即把多个cpp文gl合在一个编译单元进行编译;W五Q采用分布式生成pȝ?a ><font color="#3d81ee">IncrediBuild</font></a>?/p><h3>C++~Z什么功?</h3><p>虽然C++已经非常复杂Q但仍缺很多常见功能?C++0x作出了不改善,例如语言斚w加入Lambda函数、闭包、类型推导声明等Q而库斚w则加入正则表辑ּ、采用哈希表的unordered_set/unordered_map、引用计数智能指针shared_ptr/weak_ptr{。但最值得留意的是C++0x引入多线E的语法和库功能Q这是C++演进的一大步。然而,模组、GC、反机制等功能虽有提案Q却未加qC++0x?/p><h2>C++使用</h2><h3>为应用挑选特性集</h3><p>我同意Stroustrup关于使用C++各种技术的回应Q“你可以做,不意味着你必这么做?Just because you can do it, doesn't mean that you have to.)?C++充满丰富的特性,但同时带来不同问题,例如q分复杂、编译及q行性能的损耗。一般可考虑是否使用多重l承、异常、RTTIQƈ调节使用模版及模版元~程的程度。用过分复杂的设计和功能,可能会o部分团队成员更难理解和维护?/p><h3>为团队徏立编E规?/h3><p>C++的编码自由度很高Q容易编写风DE异的代码QC++本n也没有定义一些标准规范。而且QC++的源文g物理构成Q较许多语言复杂。因此,除了军_Ҏ集Q每个团队应建立一套编E规范,包括源文件格?可用文件模?、花括号风格?/p><h3>量使用C++风格而非C风格</h3><p>׃C++有对C兼容的包袱,一些功能可以用C风格实现Q但最好用C++提供的新功能。最基本的是量以具名常量、内联函数和泛型取代宏,只把宏用在条件式~译及特D情c旧式的C要求局部变量声明在作用域开端,C++则无此限Ӟ应把变量声明量|于邻近其用的地方Qfor()的@环变量声明可|于for的括号内?C++中能加强cd安全的功能应量使用Q例如避免“万能”指针void *Q而用个别或泛型cdQ用bool而非int表示布尔|选用4UC++ cast关键字代替简单的强制转换?/p><h3>l合其他语言</h3><p>如前文所qͼC++q适合所有应用情境,有时可以混合其他语言使用Q包括用C++扩展其他语言Q或在C++E序中嵌入脚本语a引擎。对于后者,除了使用各种脚本语言的专门APIQ还可?a ><font color="#3d81ee">Boost</font></a>?a ><font color="#3d81ee">SWIG</font></a>作整合?/p><h2>C++学习</h2><p>C++~点之一Q是相对许多语言复杂Q而且隑֭隄。许多h说学习C语言只需一本K&R<a ><font color="#3d81ee">《CE序设计语言?/font></a>卛_Q但C++书籍却是多不胜数。我是从Cq入C++Q皆是靠阅读自学。在此分享一点学习心得。个为,学习C++可分?个层ơ:</p><ul><li>W一层次QC++基础Q挑选一本入门书c,?a ><font color="#3d81ee">《C++ Primer?/font></a>?a ><font color="#3d81ee">《C++大学教程?/font></a>、或Stroustrup撰写的经?a ><font color="#3d81ee">《C++E序设计语言?/font></a>或他一q半前的C<a ><font color="#3d81ee">《C++E序设计原理与实c?/font></a>Q而一般C++评也止于此Q另?a ><font color="#3d81ee">《C++ 标准E序库?/font></a>?a ><font color="#3d81ee">《The C++ Standard Library Extensions?/font></a>可供参考;</li><li>W二层次Q正高效地使用C++Q此层次开始必自修,阅读q?<a ><font color="#3d81ee">More</font></a>)<a ><font color="#3d81ee">Effective C++</font></a>》、?<a ><font color="#3d81ee">More</font></a>)<a ><font color="#3d81ee">Exceptional C++</font></a>》?a ><font color="#3d81ee">《Effective STL?/font></a>?a ><font color="#3d81ee">《C++~程规范?/font></a>{,才适宜t入专业C++开发之路;</li><li>W三层次Q深入了解C++Q关于全局问题可读<a ><font color="#3d81ee">《深入探索C++对象模型?/font></a>?a ><font color="#3d81ee">《Imperfect C++?/font></a>?a ><font color="#3d81ee">《C++沉思录?/font></a>?a ><font color="#3d81ee">《STL源码剖析?/font></a>Q要挑战智商Q可看关于模版及模版元编E的书籍?a ><font color="#3d81ee">《C++ Templates?/font></a>?a ><font color="#3d81ee">《C++设计新思维?/font></a>?a ><font color="#3d81ee">《C++模版元编E?/font></a>Q?/li><li>W四层次Q研IC++Q阅?a ><font color="#3d81ee">《C++语言的设计和演化?/font></a>?a ><font color="#3d81ee">《编E的本质?/font></a>(含STL设计背后的数学根?、C++标准文g<a ><font color="#3d81ee">《ISO/IEC 14882:2003?/font></a>?a ><font color="#3d81ee">C++标准委员?/font></a>的提案书和报告书、关于C++的学术文献?/li></ul><p>׃我主要是应用C++Q大U只停留于第二、三个层ơ。然而,C++只是软g开发的一环而已Q单凭语aq不能应付业务和工程上的问题。徏议读者不要强求几q内“彻底学会C++的知识”,到达W二层左右便从工作实战中汲取l验Q有兴趣才慢慢l学习更高层ơ的知识。虽然学习C++有难度,但也是相当有且有满x的?/p><p>数十q来QC++虽有起伏Q但她依靠其使用者而不断得到顽强的生命力,怿在我退休之前都不会与她分离Q也希望更进一步了解她Q与她走q未来?/p></div><img src ="http://www.shnenglu.com/TianShiDeBaiGu/aggbug/134839.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/TianShiDeBaiGu/" target="_blank">何清?/a> 2010-11-27 17:46 <a href="http://www.shnenglu.com/TianShiDeBaiGu/articles/tianshidebaigu_cpp.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下的D错误生的原因及调试方?推荐Q{)http://www.shnenglu.com/TianShiDeBaiGu/articles/125785.html何清?/dc:creator>何清?/author>Fri, 03 Sep 2010 05:16:00 GMThttp://www.shnenglu.com/TianShiDeBaiGu/articles/125785.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/comments/125785.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/articles/125785.html#Feedback0http://www.shnenglu.com/TianShiDeBaiGu/comments/commentRss/125785.htmlhttp://www.shnenglu.com/TianShiDeBaiGu/services/trackbacks/125785.htmlD错误生的原因及调试方?/font>

q篇文章比较全面Q讲的也不错Q推?

而言?产生D错误就是访问了错误的内存段Q一般是你没有权限,或者根本就不存在对应的物理内存,其常见的是讉K0地址.
一般来?D错误就是指讉K的内存超Zpȝ所l这个程序的内存I间Q通常q个值是?  gdtr      来保存的Q他是一?8位的寄存器,其中?2位是保存由它指向?font color="#008000">gdt
表,?3位保存相应于gdt的下标,最?位包括了E序是否在内存中以及E序的在cpu中的q行U别,指向的gdt是由?4位ؓ一个单位的表,在这张表中就保存着E序q行的代码段以及数据D늚起始地址以及与此相应的段限和面交换q有E序q行U别q有内存_度{等的信息?br />一旦一个程序发生了界讉KQcpu׃产生相应的异怿护,于是segmentation fault出C.


在编E中以下几类做法ҎDD错?基本是是错误C用指针引L

1)讉Kpȝ数据区,其是往 pȝ保护的内存地址写数? 最常见是l一个指针以0地址
2)内存界(数组界Q变量类型不一致等) 讉KC属于你的内存区域 解决Ҏ 我们在用C/C++语言写程序的时侯Q内存管理的l大部分工作都是需要我们来做的。实际上Q内存管理是一个比较繁琐的工作Q无Z多高明,l验多丰富,隑օ会在此处犯些错误,而通常q些错误又是那么的浅显而易于消除?br />
但是手工“除虫”QdebugQ,往往是效率低下且让h厌烦的,本文就"D错?q个内存讉K界的错误谈谈如何快速定位这?D错?的语句?
下面就以下的一个存在段错误的程序介l几U调试方法:
dummy_function (void)
{
         unsigned char *ptr = 0x00;
         *ptr = 0x00;
 }

 int main (void)
 {
         dummy_function ();

       return 0;
}

作ؓ一个熟l的C/C++E序员,以上代码的bug应该是很清楚的,因ؓ它尝试操作地址?的内存区域,而这个内存区域通常是不可访问的区Q当然就会出错了?br />我们试~译q行?
$ ./a.out
D错?
果然不出所料,它出错ƈ退Z?br />


 1.利用gdb逐步查找D错? q种Ҏ也是被大众所熟知q广泛采用的Ҏ.

首先我们需要一个带有调试信息的可执行程序,所以我们加?#8220;-g -rdynamic"的参数进行编译,然后用gdb调试q行q个新编译的E序,具体步骤如下:
$ gcc -g -rdynamic d.c
$ gdb ./a.out
GNU gdb 6.5 Copyright (C) 2006 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.
Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) r Starting program: ./a.out
Program received signal SIGSEGV, Segmentation fault.
0x08048524 in dummy_function () at d.c:4 4 *ptr = 0x00;
(gdb)
哦?Q好像不用一步步调试我们找C出错位置d.c文g的第4行,其实是如此的简单? 从这里我们还发现q程是由于收CSIGSEGV信号而结束的?br />通过q一步的查阅文(man 7 signal)Q我们知道SIGSEGV默认handler的动作是打印”D错?的出错信息,q生Core文gQ由此我们又产生了方法二?

2.分析Core文gQ?
Core文g是什么呢Q?
/The default action of certain signals is to cause a process to terminate and produce a core dump file, a disk file containing an image of the process's memory at the time of termination. A list of the signals which cause a process to dump core can be found in signal(7).
?上资料摘自man page(man 5 core)?br />不过奇怪了Q我的系l上q没有找到core文g。后来,惌vZ减少pȝ上的拉圾文g的数量,止了core文g的生成,查看了一下果真如此,系l的core文g的大限制在512K大小Q?br />再试:
$ ulimit -c
0
$ ulimit -c 1000
$ ulimit -c
1000
$ ./a.out
D错?(core dumped)
$ ls
a.out core d.c f.c g.c pango.c test_iconv.c test_regex.c

core文gl于产生了,用gdb调试一下看看吧:

$ gdb ./a.out core
GNU gdb 6.5 Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.
Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
warning: Can't read pathname for load map: 输入/输出错误.
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6 Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Core was generated by `./a.out'.

Program terminated with signal 11, Segmentation fault.
#0 0x08048524 in dummy_function () at d.c:4 4 *ptr = 0x00;

哇,好历宻Iq是一步就定位C错误所在地Q佩服一下Linux/Unixpȝ的此c设计?
接着考虑下去Q以前用windowspȝ下的ie的时侯,有时打开某些|页Q会出现“q行旉?#8221;Q这个时侯如果恰好你的机器上又装有windows的编译器的话Q他会弹出来一个对话框Q问你是否进行调试,如果你选择是,~译器将被打开Qƈq入调试状态,开始调试?br /> Linux下如何做到这些呢Q?br />我的大脑飞速地旋{着Q有了,让它在SIGSEGV的handler中调用gdbQ于是第三个Ҏ又诞生了:



 3.D错误时启动调试:
#include
#include
#include
#include
void dump(int signo)
{
      
char buf[1024];
      
char cmd[1024];
      FILE 
*fh;
      snprintf(buf, 
sizeof(buf),
                    
"/proc/%d/cmdline",
                      getpid());
      
if(!(fh = fopen(buf, "r")))
                exit(
0);
      
if(!fgets(buf, sizeof(buf), fh))
                exit(
0);
      fclose(fh);
      
if(buf[strlen(buf) - 1== '\n'
                buf[strlen(buf) 
- 1= '\0';
      snprintf(cmd, 
sizeof(cmd), "gdb %s %d", buf, getpid());
      system(cmd);
      exit(
0);
}
void dummy_function (void)
{
      unsigned 
char *ptr = 0x00;
      
*ptr = 0x00; } int main (void){
            signal(SIGSEGV, 
&dump);
            dummy_function (); 
return 0;
      }
}

~译q行效果如下:
$ gcc -g-rdynamicf.c
$ ./a.out
 GNU gdb 6.5 Copyright (C) 2006 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.
Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
Attaching to program: /home/xiaosuo/test/a.out, process 9563 Reading symbols from/lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6 Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2 0xffffe410 in __kernel_vsyscall ()
/(gdb) bt
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb7ee4b53 in waitpid () from /lib/libc.so.6
#2 0xb7e925c9 in strtold_l () from /lib/libc.so.6
#3 0x08048830 in dump (signo=11) at f.c:22
#4
#5 0x0804884c in dummy_function () at f.c:31
#6 0x08048886 in main () at f.c:38

怎么P是不是依旧很P 以上Ҏ都是在系l上有gdb的前提下q行的,如果没有呢?其实glibc为我们提供了此类能够dump栈内容的函数,详见/usr/include/execinfo.hQ这些函数都没有提供man pageQ难怪我们找不到Q,另外你也可以通过gnu的手册进行学习?


4.利用backtrace和objdumpq行分析:
重写的代码如?
#include
#include
#include
#include 
/* A dummy function to make the backtrace more interesting. */
void dummy_function (void)
{
      unsigned 
char *ptr = 0x00;
      
*ptr = 0x00;
}
void dump(int signo)
{
      
void *array[10];
      size_t size;
      
char **strings;
       size_t i;
       size 
= backtrace (array, 10);
       strings 
= backtrace_symbols (array, size);
       printf (
"Obtained %zd stack frames.\n", size);
      
      
for (i = 0; i < size; i++)
            printf (
"%s\n", strings[i]);
      free (strings); exit(
0);
}
int main (void)
{
      signal(SIGSEGV, 
&dump);
      dummy_function ();
      
return 0;
}
~译q行l果如下Q?br />$ gcc -g -rdynamic g.c
$ ./a.out
Obtained 5 stack frames.
./a.out(dump+0x19) [0x80486c2] [0xffffe420]
./a.out(main+0x35) [0x804876f] /lib/libc.so.6(__libc_start_main+0xe6) [0xb7e02866]
./a.out [0x8048601]
q次你可能有些失?g没能l出_的信息来标示错误,不?先看看能分析出来什么吧,
用objdump反汇~程?扑ֈ地址0x804876f对应的代码位|?
$ objdump -d a.out
8048765: e8 02 fe ff ff call
804856c 804876a: e8 25 ff ff ff call
8048694 804876f: b8 00 00 00 00 mov $0x0,%eax
8048774: c9 leave
我们q是扑ֈ了在哪个函数(dummy_function)中出错的,信息已然不是很完?不过有L没有好的?

后记: 本文l出了分?D错?的几U方?不要认ؓq是与孔乙己先生??字四U写法一L?因ؓ每种Ҏ都有其自w的适用范围和适用环境,请酌情?或遵d?


文章引用?
http://www.upsdn.net/html/2006-11/775.html


]]> ޾ƷۺϾþ| ŷһþþƷ޾Ʒþþþ | þAV뾫Ʒ| Ʒ99þþþþ鶹| þAV뾫Ʒɫҹ| Ʒһþ| 2021ƷþþƷ| ۺϾþĻӰ| þùƵ99Ӱ| 2021ƷۺϾþ| þ㽶߿ۿ| 2022Ʒþþþ| ˾þô߽AVһ | 99þþƷձһ | þĻƷһ| ƷŮþþþAV | þþûƬ| ޹Ʒþþ| ˾ھƷþþþ| þþþƷһ| þһŷպ | ޹Ʒþþò | Ӱһþҹײ | þþþþþۺձ| 99þֻоƷ| ƷۺϾþþþþ97| ձþĻ| þþžѸƵ| þþƷվ| þ99Ʒ鶹| þþƷ| þþWWWëƬ| þþݾþþ| þ99Ʒþ99ý| þۺϹ׾Ʒ| þӰ㶮| þþƷһ| þۺϾþۺϾþۺ| ޹Ʒþþþ| þþþƷþþþɫӰ| þõӰһ|