摘要:
1 求三角形面积知道三角形三个顶点坐标,可以求三角形三条边长的长度,进而可以求出三角形的面积。海伦公式:假设三角形3条边长分别为a, b, c. p = (a + b + c) /2那么面积 s = sqrt( (p-a) * (p-b) * (p-c) * p );该公式的用途:可以用来计算面积,避免昂贵的三角函数计算。用来判断一个点是否在三角形内部。2 判断一个点是否在三角形内如上图,可以通过比较三角形ABC的面积(S1)与三角形ABD, ACD, BCD面积之和(S2)的大小来判断点是否在三角形内。如果S1等于S2,则点D在三角形内部。3 判断一个点p是否在一条射线ab的左边可以通过pa 阅读全文
摘要:
提交代码前删除中间文件这是个好习惯,也应该成为一个强制要求。这有利于保持版本控制的干净整洁,保证控制的都是不可缺少的文件,没有那些没必要的中间文件。一个项目本来源码只有10M,可是加上编译产生的中间文件,以及一些临时文件,项目文件大小可能膨胀到100来M,显然这些都提交到SVN,对空间即带宽都是极大的浪费。怎么样保证没有中间文件提交到SVN呢?可以在每次提交前做一个检查,就是在项目文件中搜索这些中间文件:*.exe , *.bak, *.suo, *.user, Debug, Release, *.ncb, *.pdb等等,然后删除。未了确定你没有删除项目所必须的文件,可以把清理后的目录拷贝到 阅读全文
摘要:
MD5算法简单的来说就是把任意长度的字串变换成固定长度(通常是128位)的16进制串。RFC 1321定义了MD5算法。该文档可从http://www.ietf.org/rfc/rfc1321.txt 获得。MD5的用途主要有:一致性验证。比如我们从网上下载了某个文件,网站上一般会给出该文件的MD5值,我们下载下来后,可以利用工具计算出新的MD5值,与正确的MD5值进行对照,如果不一样,则可以断定该文件下载出错或被篡改了。数字签名。可以用MD5算法对发布的程序或发布的消息生成MD5值作为签名等。密码存储。在传输过程中或存储过程中,直接用明文的密码都是很危险的。可以在传输之前先用MD5加密,存储 阅读全文
摘要:
什么是多线程多线程涉及到并行做某些事情,就像多进程一样。那么多线程与多进程有什么不同呢?当你正在一个电子表格上做计算的时候,可能在同一个桌面上有一个媒体播放器正在放着你喜欢的歌。这是一个两个进程并行工作的例子。一个进程运行电子表格程序。一个进程运行媒体播放器。这样的场景就是总所周知的多任务。近一步看媒体播放器,我们会发现在一个进程中某些事情正在并行的进行着。当媒体播放器正在发送音乐到声卡驱动时,用户界面也在不断的更新。这就是多线程所做的事情 – 单一进程中的并发性。并发性是怎么实现的呢?在单核CPU上的并行工作是一种错觉,就像电影不过时移动的图像一样。对于多进程,这种错觉是通过在一段非常短的时 阅读全文
摘要:
注册元类型qRegisterMetaType<DVRDevUseRecords>("DVRDevUseRecords"); 类型 名字主要是在定义信号槽的时候,传递的参数类型不一定是QT所识别的,QT不识别的就要先注册以下,让QT能够认识,就是用qRegisterMetaType注册。信号和槽信号都是私有的,只能发送自己定义或继承的信号。Slot无论是公有的还是私有的,另一个对象都可以根据信号触发。公有槽可以像public function members一样被使用。只有对象内部才能产生信号吗?不是可以这样 emit p->signal()注意connec 阅读全文
摘要:
用记事本打开.sln文件,把如下内容:MicrosoftVisualStudioSolutionFile,FormatVersion10.00#VisualStudio2008改为MicrosoftVisualStudioSolutionFile,FormatVersion9.00#VisualStudio2005另外用记事本打开.vcproj这样的文件,把Version="9.00改为Version="8.00这样就可以用vs2005打开了其它版本之间的转换可以用类似方法解决 阅读全文
摘要:
目的本来是这样的:有两个线程A,B。A在某个循环中等待线程B中的某个事件发生。比如在一个网络运用中,A是主线程,B是接收线程。A发送了一个请求到服务器,然后等待服务器返回响应或超时重发,当B接收到响应时通知A。先看如下代码:int main(){ HANDLE hMutex = CreateMutex(NULL, FALSE, NULL); WaitForSingleObject(hMutex, INFINITE); return 0;}WaitForSingleObject总是立即返回,为什么WaitForSingleObject没有起作用??原来是我理解错了,范了个低级错... 阅读全文
摘要:
编译模拟器版本1 到https://github.com/yuvi/gas-preprocessor下载gas-preprocessor.p并拷贝到/usr/sbin目录中2 下载ffmpeg源码。http://ffmpeg.org/download.htmlhttps://github.com/FFmpeg/FFmpeg3 解压源码,cd到源码目录下4 创建文件config_i386.sh,其内容如下#!/bin/tcsh -fset targetDir="../ffmpeg-libs/i386"if (! -d $targetDir ) mkdir $targetDir 阅读全文
摘要:
我的环境:OS: ubuntu 12.10android-ndk-r7 ffmpeg: 0.8下面是编译步骤:第一步:安装配置ndk运行ndk-build,如果显示如下信息,则表示安装成功通过设置宏NDK_PROJECT_PATH来指定工程目录export NDK_PROJECT_PATH=/home/robin/Desktop/wshare/jni第二步:下载ffmpeg源码第三步:建立文件夹jni,把ffmpeg源码解压至jni目录下,用ndk编译时,jni目录是必须的,否则编译出错。这一步后目录结构如下:ndk-build 默认编译jni下的文件,如果它找不到该目录,就要通过设置NDK_ 阅读全文
摘要:
实验一pthread在iOS上是否可以像在linux上一样使用?有如下代码://a.h#ifndef __A_H__#define __A_H__void testSleep(int t);void testPthread(int n);#endif//a.c#include "a.h"#include <stdio.h>#include <pthread.h>#include <unistd.h>#include <stdlib.h>void testSleep(int t){ printf("testSleep: 阅读全文