自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Terry Tian' coding Life

早,就是优势。希望我们彼此都成为牛 啤的人。公众号&微博&视频号:冬月末Wechat:terrytian1125(本人)

  • 博客(32)
  • 资源 (34)
  • 收藏
  • 关注

原创 springboot接口防刷实现

本文主要介绍一种通过实现自定义注解,实现一种比较通用的接口防刷方式

2022-11-26 22:50:09 1565

原创 红桃Q:选对圈子跟对人

terrytian读完需要2分钟速读仅需 1 分钟选对圈子跟对人,尽可能多去与大佬近距离接触,帮他做一些事,短期来看可能回报比较少,但是长期来看价值非常大。人是群居的动物,任何一个人都无法独自生活。有句老话说的好:“你的优秀取决于所处的圈子”。跟着苍蝇找厕所,跟着蜜蜂找花朵;跟着富翁挣百万,跟着乞丐会要饭。选好圈子跟对人很重要,跟什么样的人就会成为什么样的人。   选对圈子“近朱者赤,近墨者黑",与你接触的人对你的影响非常大,一定程度上决定你会吸纳什么样的智慧,构建什么样的人生理念,进而

2021-08-18 22:21:30 264

原创 spacy环境搭建

0.前言博主默认各位读者在自己的电脑上已经搭建好 python 的环境。下面的安装默认以 pip 方式进行安装。全文开发环境为 windows 10 x64。1.spacy安装打开命令行窗口,输入以下命令,进行 spacy 的安装。pip install -U pip setuptools wheelpip install -U spacy上述方式,在国内安装的话,经常安装到一半,或者安装到一大半后,就报错终止了,估计是因为网络问题。建议换成下述方式安装:pip install -.

2021-01-13 21:37:12 954

原创 索引的使用原则

1.什么时候使用索引字段的数值有唯一性的限制,比如用户名;频繁作为where查询条件的字段,尤其数据表大的情况下效果更明显;需要经常 GROUP BY 和 ORDER BY 的列;UPDATE、DELETE的 WHERE 条件列,一般也需要创建索引;DISTINCT 字段需要创建索引;多表连接时:连接的表的数量尽量不要超过3张;对 WHERE 条件创建索引;对用于连接的字段创建索引,并且该字段在多张表中的类型必须一致2.什么时候不需要创建索引WHERE(包括 GROUP B

2020-11-22 21:40:14 532 3

原创 solr8.5+tomcat8.5环境搭建

1.本地环境参数系统:windows 10tomcat 容器:tomcat 8.5.55jdk:jdk 1.8solr:8.5.12.本地环境搭建步骤推荐与博主环境保持一致!本机下载并配置好 jdk,请自行搜索;本机下载并配置好 tomcat 环境,请自行搜索;官网下载 solr,并解压到本地,如下图:把solr-8.x的server/solr-webapp目录下边的webapp文件夹复制到tomcat/webapps的目录下,并重命名为solr。将solr-8

2020-11-18 21:25:17 181

翻译 [翻译]估计硬件规模:为什么我们没有一个明确的答案?

感谢阅读这篇博文,欢迎关注与评论!本文转载翻译来源 https://lucidworks.com/post/sizing-hardware-in-the-abstract-why-we-dont-have-a-definitive-answer/博客原文:估计硬件规模:为什么我们没有一个明确的答案?Sizing Hardware in the Abstract: Why We Don’t Have a Definitive Answer估计硬件规模:为什么我们没有一个明确的答案? <T

2020-10-26 21:52:29 438

原创 设计模式系列-Java单例模式的5种实现方法(初版)

饿汉类加载的时候就创建了实例优点:类加载的时候创建一次实例,避免了多线程同步问题缺点:即使单例没被用到也会创建,浪费内存public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { } public static Singleton getInstance() { return instance; }}懒

2020-06-27 23:46:34 125

原创 多个maven项目启动顺序

问题背景在公司实际项目中,开发的项目一般都会涉及到多个 maven 项目,比如项目2会依赖项目1。使用 Jenkins 实现自动部署时,除了写一个流水线脚本时,就需要找一个合适的 maven 命令脚本解决。问题描述现在有两个 Maven 工程,maven1 和 maven2 ,maven2 依赖于 maven1 。maven1 的 pom 文件如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www

2020-05-17 17:19:41 1430

原创 1.初识RabbitMQ

title: 1.初识RabbitMQdate: 2019-09-5 20:52:52categories: RabbitMQ #文章文类tags: [消息中间件] #文章标签,多于一项时用这种格式 [测试1,测试二],只有一项时使用tags: blog<Excerpt in index | 首页摘要>*** 感谢阅读这篇博文,欢迎关注与评论!***原文链接:http...

2019-09-06 10:54:30 175

原创 Maven安装配置

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。Maven主要有两个功能:1、项目构建2、依赖管理安装配置步骤如下:下载maven官方网站:http://maven.apache.org具体应该使用...

2019-03-08 08:38:32 194

原创 Tomcat的环境变量配置

新建变量名:CATALINA_BASE,变量值:E:\tomcat新建变量名:CATALINA_HOME,变量值:E:\tomcat打开PATH,添加变量值:%CATALINA_HOME%\lib;%CATALINA_HOME%\bin;有了JDK环境变量配置的经验,我相信大家对配置都已经轻车熟路了,这里就不配图了。最后一步:在CMD命令下输入命令:startup,出现如下对话...

2018-08-14 20:35:14 243

原创 JDK的环境变量配置

笔者开发环境:Windows 10 x64新建JAVA_HOME新建CLASSPATH编辑PATH第一步:“我的电脑” -&amp;gt; 右击 -&amp;gt; “属性” -&amp;gt; “高级系统设置” -&amp;gt; “环境变量”;第二步:新建JAVA_HOME 里边填入jdk的绝对地址: E:\JAVA\jdk 注意:最后不要加分号!!!!第三步:新建CLA...

2018-08-14 20:32:25 198

原创 JDK、Tomcat、JSTL、Maven的首次安装与配置

JDK的环境变量配置新建JAVA_HOME新建CLASSPATH编辑PATH第一步:“我的电脑” -&amp;gt; 右击 -&amp;gt; “属性” -&amp;gt; “高级系统设置” -&amp;gt; “环境变量”;第二步:新建JAVA_HOME 里边填入jdk的绝对地址: E:\JAVA\jdk 注意:最后不要加分号!!!!第三步:新建CLASSPATH 内容为: ...

2018-07-01 21:32:27 324

原创 使用Hexo+github建设个人博客教程

title: 使用Hexo+github建设个人博客教程 date: 2017-02-18 15:46:58 categories: Hexo tags: [Hexo,Git,node,github]前言为了防止出现排版兼容问题,请到:博文元站点访问。 博主本来打算在Coding上搭建自己的Ghost博客,由于以前没有搭建博客的经验,就在网上百度教程,但很遗憾,教程很少,写的也比较

2017-02-19 14:06:28 651

原创 1.Android日志工具的使用(Log)

Android中的日志工具类是Log(android.util.Log),这个类中提供了如下5个方法来提供给我们打印日志。log.v()。用于打印那些最为琐碎的,意义最小的日志信息。对应级别verbose,是Android日志里面级别最低的一种。log.d()。用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别debug,比verbose高一级。log.i()。用于打

2017-01-20 23:26:35 489

原创 DHTML编程-1.HTML简介与第一个HTML页面

前言: 这一个系列是笔者自学java时所写,一方面为了巩固自己对知识的理解,方便日后查看;另一方面,也是为了能给自学java的同行者说一下自己的愚见。本系列文章内容在学习时是以HTML 4 标准,撰写时会参考菜鸟教程中的教程,补充HTML 5 新增标准。 链接: [菜鸟教程](http://www.runoob.com/html/html-tutorial.html) 。什么是HTML

2017-01-16 17:20:26 1178

原创 ADB命令简单使用技巧(Android)

* 感谢阅读这篇博文,欢迎关注与评论!*连接手机和电脑的“脐带”,就是ADB——Android Debug Bridge。通过ADB我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。ADB的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下ADB会daemon相关的网络端口,所以当我们运行Eclipse时

2016-10-21 22:17:16 893

原创 SQL Server笔记(一)

SQL语言包含4个部分数据定义语言(DDL),例如:CREATE、DROP、ALTER数据操作语言(DML),例如:INSERT、UPDATE、DELETE数据查询语言(DQL),例如:SELECT语句数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK

2016-09-30 10:53:11 372

原创 约瑟夫问题(Java实现)

一、简介约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.)例子: len个人围成一个圈,玩丢手绢游戏。从第k个人开始,从1开始数数,当数到m时,数m的人就退出圈子,当圈子只剩下一个人为止。问题分析与算法设计约瑟夫问题并不难,但求解的方法很多;题目的变化形式也很多。这里给出一种实现方法。 题目中l

2016-08-24 21:32:14 7640

原创 java 读取excel 文件 Unable to recognize OLE stream 错误

使用 Java 代码读取 excel 文件代码时报错如下:jxl.read.biff.BiffException: Unable to recognize OLE stream    at jxl.read.biff.CompoundFile.(CompoundFile.java:116)    at jxl.read.biff.File.(File.java:127)   

2016-08-15 08:41:40 560

原创 Git简单使用教程(五)-添加远程库

现在的情景是,你已经在本地创建了一个Git仓库后,又想在Coding创建一个Git仓库,并且让这两个仓库进行远程同步,这样,Coding上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。首先,登陆Coding,然后,在右上角的“+”找到“项目”按钮,创建一个新的仓库:在 项目名称 填入tq1,其他保持默认设置,点击“创建项目”按钮,就成功地创建了一个

2016-06-30 17:17:18 495

原创 Git简单使用教程(四)-远程仓库

到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了。可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Git有什么特别的地方。没错,如果只是在一个仓库里管理文件历史,Git和SVN真没啥区别。为了保证你现在所学的Git物超所值,将来绝对不会后悔,同时为了打击已经不幸学了SVN的童鞋,本章开始

2016-06-30 17:03:58 353

原创 Git简单使用教程(三)-创建版本库

什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:$ mkdir tq1$ cd tq1注意:Windows系

2016-06-30 16:52:03 490

原创 Git简单使用教程(二)-安装Git

要使用Git,第一步当然是安装Git了。由于笔者使用的windows系统,所以此处只介绍在Windows环境下如何安装Git。在Windows上安装Git想要在Windows下安装Git,首先要下载Git安装包,用户可以从https://git-scm.com/download/下载,然后按默认选项安装即可。安装完成后,在开始菜单里找到“Git”->

2016-06-30 16:32:17 446

原创 Git简单实用教程(一)-Git简介

Git是什么?Git是目前世界上最先进的分布式版本控制系统(没有之一)。Git有什么特点?简单来说就是:高端大气上档次!那什么是版本控制系统?如果你用Microsoft Word写过长篇大论,那你一定有这样的经历:想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个

2016-06-30 16:19:27 335

原创 SVN与Git的最主要的区别?

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。      Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一

2016-06-24 16:10:09 394

原创 文件系统的设计与实现(操作系统课程设计)

目录一、设计目的、意义 1二、 设计分析 1三、方案分析 2四、功能模块实现 3五、最终结果分析 4六、 设计体会 5一、设计目的、意义1.通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识,加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。2.意义:本

2016-05-08 11:22:02 51891 15

转载 超级课程表原理解析(如何获取网页内容)

超级课程表原理解析(如何获取网页内容)一直对手机怎么访问网页很好奇,比如网页上填的姓名密码之类的,在手机上怎么填上去,怎么把网页的内容解析完放在手机上。这次就手机访问教务系统举个简单的例子,相信看完你就懂啦,以后就可以随心所欲的解析网页啦。君欲善其事,必先利其器。首先要准备两个工具:1.HttpWatch(网页数据分析工具,利用它抓取网页内容),2.一个Jar包:J

2016-05-07 17:36:04 1508

原创 并行计算与多核多线程技术 课程报告

并行计算与多核多线程技术 课程报告   专业        软件工程                 班级        计133-2                  学号     XXXXXXXXX               姓名         XX         成绩 ____________________   

2016-01-11 16:40:59 3356

原创 VS 2013的初配置

VS 2013的初配置

2015-08-09 22:14:08 3149

原创 Windows下lex 与 yacc的使用(2)

Windows下lex 与 yacc的使用                                                  之一个简单的小例子题目要求:写一个小的程序。该程序复制一个文件,并将文件中的每个非空的空白字符序列替换为单个空格。1.首先新建一个文本文档(在flex文件夹下),写好代码后将文件的扩展名改为“**.l”或者“**.lex”,如下所示:

2015-04-05 19:36:37 1685

原创 Windows下lex 与 yacc的使用

Windows下lex与yacc的使用首先下载下载flex和bison。网址是http://pan.baidu.com/s/1dDlfiW5选择下载就好了,下载后解压到你电脑中的任一盘中。找到这个文件夹就行了。然后里面就是这样:打开flex打开bison至此万事俱备,我们可以开始两个简单的文件来测试一下。1.新建文本文件,更

2015-04-03 23:04:47 12521 5

教程源码Loading

本文档为本人原创教程的例子源码,供读者下载。

2016-08-14

例子源码Loading

例子源码Loading

2016-08-14

WinPcap_4_1_3.exe

解决安朗客户端缺少.all .dll 文件

2016-08-01

手机移动开发技术大作业

手机移动开发(Android)课程设计报告

2016-06-28

universal-image-loader-1.8.6-with-sources

从网络获取图片的jar文件

2016-06-28

Android实验

文档+代码

2016-06-23

UML课程设计

本书是为了配合UML建模语言的教学而编写的,目的是通过课程设计的综合训练,培养学生实际分析问题;编程和动手能力,帮助学生系统地掌握该门课程的主要内容,更好地完成教学任务。, 本书从用户的需求开始,通过11个课程设计,结合相关概念和设计任务,详细地描述了一个典型的“选课系统”设计实例,并逐步介绍使用Rose实现设计的全过程。课程设计后面均附有评分标准,既可供读者评判自己的设计,也为教师提供方便。, 本书既可以作为高等院校相关专业的课程设计教材,也可以作为自学教材或教学参考书。

2016-06-23

并行计算课程设计(代码+执行文件+文档)

1. 设计目的、意义(功能描述) 蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。本次大作业主要是对蒙特·卡罗方法进行并行处理,通过OpenMP、MPI、.NET、Java、Win32API等一系列并行技术和并行机制对该算法进行并行处理,从而也进一步熟悉了蒙特·卡罗方法的串行算法和并行算法,实现了用蒙特·卡罗方法计算出半径为1单位的球体的体积,体会到了并行技术在实际生活中的应用。 2. 方案分析(解决方案) 蒙特·卡罗方法(Monte Carlo method)是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。球的体积可以估算为:位于点模型内随机点个数与全体随机点个数的比值乘以包围盒的体积算的。 3. 设计分析 3.1 串行算法设计 假定球体用B表示,半径r=1单位,B1是包含B的参考立方体(在本例中是边长为2的正方体),在B1中产生N个均匀分布的伪随机点。对每个随机点检测其是否在B内,假设位于B内的随机点个数为N(in)(<=N),应用蒙特卡洛算法,则B的体积为 V=V1(N(in)/N) 其中V1是B1的体积。如果产生足够多的随机点,理论上可以获得任意逼近精度。 算法描述如下: BEGIN N=_MAX; FOR I=0;I<_MAX;I++ X=RANDOM(); Y=RANDOM(); Z=RANDOM(); IF (X*X+Y*Y+Z*Z)<=1 COUNT++; END IF; END FOR; BULK=V1*(COUNT/_MAX); END; 本算法主要是在参考立方体的选取上和定义的_MAX的值对结果影响较大,所以应该选择合适的数。 3.2 并行算法设计 对FOR循环进行划分使用两个处理器完成计算。例如对一个长为n的序列,首先划分得到两个长为n/2的序列,将其交给两个处理器分别处理;而后进一步划分得到四个长为n/4的序列,再分别交给四个处理器处理;如此递归下去最终得到结果。当然这是理想的划分情况,如果划分步骤不能达到平均分配的目的,那么结果的效率会相对较差。 伪代码如下: BEGIN N=_MAX; FOR1 I=0;I<_MAX/2;I++ X1=RANDOM(); Y1=RANDOM(); Z1=RANDOM(); IF (X1*X1+Y1*Y1+Z1*Z1)<=1 COUNT1++; END IF; END FOR1; FOR2 I=_MAX/2+1;I<_MAX;I++ X2=RANDOM(); Y2=RANDOM(); Z2=RANDOM(); IF (X2*X2+Y2*Y2+Z2*Z2)<=1 COUNT2++; END IF; END FOR2; BULK=V1*((COUNT1+ COUNT2)/_MAX); END; 3.3 理论加速比分析 实验中大量数据所产生的加速比比小量数据所产生的加速比要体现得更明显,并且数据生成的并行加速比随着处理器核的增加而增加。设处理器个数为p,数据量为n,由于正常情况下该快速排序算法的复杂度为O(nlogn),并行处理的时间复杂度为O(klogk),其中k=n/p,所以并行算法的时间复杂度为O((n/p)log(n/p)),理论加速比为nlogn/((n/p)log(n/p))=p+logp. 4. 功能模块实现与最终结果分析 4.1 基于OpenMP的并行算法实现 4.1.1 主要功能模块与实现方法 利用了OpenMP里面的#omp parallel sections将对两个for循环用两个线程并行化执行,以多线程方式并行运行程序,并行的算法步骤如下: (1)初始化_max = 10000000; (2)创建两个线程; (3)由OpenMP编译指导语句控制产生并行执行代码区段; (4)将数据存放到tianqing_count; (5)各线程调用算法得出结果; 并行算法的部分代码如下: #pragma omp parallel for private(tianqing_x,tianqing_y,tianqing_z) reduction(+:tianqing_count2) for (tianqing_i = 0; tianqing_i<tianqing_max; tianqing_i++) { tianqing_x = rand(); tianqing_x = tianqing_x / 32767; tianqing_y = rand(); tianqing_y = tianqing_y / 32767; tianqing_z = rand(); tianqing_z = tianqing_z / 32767; if ((tianqing_x*tianqing_x + tianqing_y*tianqing_y + tianqing_z*tianqing_z) work1.pSumto(b, 0, MAXN - 1)); Thread newthread1 = new Thread(thread1); 创建Work类的对象work2; ThreadStart thread2 = new ThreadStart(() => work2.pSumto(c, 0, MAXN - 1)); Thread newthread2 = new Thread(thread2); stopwatch.Start(); 启动线程1和线程2; 等待进程结束; stopwatch.Stop(); 得到结果; 4.5.2 实验加速比分析 实验中创建了两个线程,通过多次测试,得出实验结果:由上面的理论加速比分析可知,当线程数为2时,理论加速比为2+log2=3.但由于实际操作中硬件设备以及内存分配的影响,实验加速比达不到理论值3.实验加速比在2.6~2.7左右。 4.6 并行计算技术在实际系统中的应用 4.6.1 主要功能模块与实现方法 该飞机订票系统主要实现了对机票的一些基本信息进行存储和管理的功能。在系统中实现了对机票信息的增删改查,考虑到查询的方便性,对机票按照航班号进行排序,而此排序方法用并行快速排序运用进来。利用OpenMP的并行技术,对机票信息按顺序排列好,并分析了实验过程中的加速比。 4.6.2 实验加速比分析 实验中创建了两个线程,通过多次测试,得出实验结果:当数据量比较大时,加速比理论在1.9左右。数据量较大时体现出来的加速比更准确。由上面的理论加速比分析可知,当线程数为2时,理论加速比为2+log2=3.但由于实际操作中硬件设备以及内存分配的影响,实验加速比达不到理论值3.实验加速比在2.2~2.4左右。 5. 设计体会 虽然没有按时完成作业,但这份报告花了我好几天的时间,从开始的搭建并行计算平台到最后的程序运行成功可以说是对我的一个锻炼。每一次的遇到问题与每一次的解决问题都是一个成长。每一次遇到问题和解决问题都是一种锻炼,一种尝试,从我们上并行计算课我懂得了很多电脑硬件和软件的知识,这些可能对于我们这个专业以后都是没有机会接触的,所以我觉得选择了并行计算与多核多线程技术这门课是非常正确的。对OpenMP、MPI、WIN32API、Java、.NET的并行技术有了一定的了解。在搭建MPI并行程序这块,学习的知识尤为增加,这些都是在不断的摸索、学习中学会的。 这次的大作业虽然是对以前实验的整合,但它加深了我对并行计算的印象,也使我对并行计算知识的理解更加深刻,也使我认识到了自己很多不足之处。学习并行计算的历程不会因为完成本次大作业而停止,我们是为了用知识武装大脑而学习,通过学习充实自己的生活,要努力学习,争取以后能够完成规模更大的程序。

2016-01-11

并行计算课程设计(报告+代码+可执行文件)

1. 设计目的、意义(功能描述) 蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。本次大作业主要是对蒙特·卡罗方法进行并行处理,通过OpenMP、MPI、.NET、Java、Win32API等一系列并行技术和并行机制对该算法进行并行处理,从而也进一步熟悉了蒙特·卡罗方法的串行算法和并行算法,实现了用蒙特·卡罗方法计算出半径为1单位的球体的体积,体会到了并行技术在实际生活中的应用。 2. 方案分析(解决方案) 蒙特·卡罗方法(Monte Carlo method)是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。球的体积可以估算为:位于点模型内随机点个数与全体随机点个数的比值乘以包围盒的体积算的。 3. 设计分析 3.1 串行算法设计 假定球体用B表示,半径r=1单位,B1是包含B的参考立方体(在本例中是边长为2的正方体),在B1中产生N个均匀分布的伪随机点。对每个随机点检测其是否在B内,假设位于B内的随机点个数为N(in)(<=N),应用蒙特卡洛算法,则B的体积为 V=V1(N(in)/N) 其中V1是B1的体积。如果产生足够多的随机点,理论上可以获得任意逼近精度。 算法描述如下: BEGIN N=_MAX; FOR I=0;I<_MAX;I++ X=RANDOM(); Y=RANDOM(); Z=RANDOM(); IF (X*X+Y*Y+Z*Z)<=1 COUNT++; END IF; END FOR; BULK=V1*(COUNT/_MAX); END; 本算法主要是在参考立方体的选取上和定义的_MAX的值对结果影响较大,所以应该选择合适的数。 3.2 并行算法设计 对FOR循环进行划分使用两个处理器完成计算。例如对一个长为n的序列,首先划分得到两个长为n/2的序列,将其交给两个处理器分别处理;而后进一步划分得到四个长为n/4的序列,再分别交给四个处理器处理;如此递归下去最终得到结果。当然这是理想的划分情况,如果划分步骤不能达到平均分配的目的,那么结果的效率会相对较差。 伪代码如下: BEGIN N=_MAX; FOR1 I=0;I<_MAX/2;I++ X1=RANDOM(); Y1=RANDOM(); Z1=RANDOM(); IF (X1*X1+Y1*Y1+Z1*Z1)<=1 COUNT1++; END IF; END FOR1; FOR2 I=_MAX/2+1;I<_MAX;I++ X2=RANDOM(); Y2=RANDOM(); Z2=RANDOM(); IF (X2*X2+Y2*Y2+Z2*Z2)<=1 COUNT2++; END IF; END FOR2; BULK=V1*((COUNT1+ COUNT2)/_MAX); END; 3.3 理论加速比分析 实验中大量数据所产生的加速比比小量数据所产生的加速比要体现得更明显,并且数据生成的并行加速比随着处理器核的增加而增加。设处理器个数为p,数据量为n,由于正常情况下该快速排序算法的复杂度为O(nlogn),并行处理的时间复杂度为O(klogk),其中k=n/p,所以并行算法的时间复杂度为O((n/p)log(n/p)),理论加速比为nlogn/((n/p)log(n/p))=p+logp. 4. 功能模块实现与最终结果分析 4.1 基于OpenMP的并行算法实现 4.1.1 主要功能模块与实现方法 利用了OpenMP里面的#omp parallel sections将对两个for循环用两个线程并行化执行,以多线程方式并行运行程序,并行的算法步骤如下: (1)初始化_max = 10000000; (2)创建两个线程; (3)由OpenMP编译指导语句控制产生并行执行代码区段; (4)将数据存放到tianqing_count; (5)各线程调用算法得出结果; 并行算法的部分代码如下: #pragma omp parallel for private(tianqing_x,tianqing_y,tianqing_z) reduction(+:tianqing_count2) for (tianqing_i = 0; tianqing_i<tianqing_max; tianqing_i++) { tianqing_x = rand(); tianqing_x = tianqing_x / 32767; tianqing_y = rand(); tianqing_y = tianqing_y / 32767; tianqing_z = rand(); tianqing_z = tianqing_z / 32767; if ((tianqing_x*tianqing_x + tianqing_y*tianqing_y + tianqing_z*tianqing_z) work1.pSumto(b, 0, MAXN - 1)); Thread newthread1 = new Thread(thread1); 创建Work类的对象work2; ThreadStart thread2 = new ThreadStart(() => work2.pSumto(c, 0, MAXN - 1)); Thread newthread2 = new Thread(thread2); stopwatch.Start(); 启动线程1和线程2; 等待进程结束; stopwatch.Stop(); 得到结果; 4.5.2 实验加速比分析 实验中创建了两个线程,通过多次测试,得出实验结果:由上面的理论加速比分析可知,当线程数为2时,理论加速比为2+log2=3.但由于实际操作中硬件设备以及内存分配的影响,实验加速比达不到理论值3.实验加速比在2.6~2.7左右。 4.6 并行计算技术在实际系统中的应用 4.6.1 主要功能模块与实现方法 该飞机订票系统主要实现了对机票的一些基本信息进行存储和管理的功能。在系统中实现了对机票信息的增删改查,考虑到查询的方便性,对机票按照航班号进行排序,而此排序方法用并行快速排序运用进来。利用OpenMP的并行技术,对机票信息按顺序排列好,并分析了实验过程中的加速比。 4.6.2 实验加速比分析 实验中创建了两个线程,通过多次测试,得出实验结果:当数据量比较大时,加速比理论在1.9左右。数据量较大时体现出来的加速比更准确。由上面的理论加速比分析可知,当线程数为2时,理论加速比为2+log2=3.但由于实际操作中硬件设备以及内存分配的影响,实验加速比达不到理论值3.实验加速比在2.2~2.4左右。 5. 设计体会 虽然没有按时完成作业,但这份报告花了我好几天的时间,从开始的搭建并行计算平台到最后的程序运行成功可以说是对我的一个锻炼。每一次的遇到问题与每一次的解决问题都是一个成长。每一次遇到问题和解决问题都是一种锻炼,一种尝试,从我们上并行计算课我懂得了很多电脑硬件和软件的知识,这些可能对于我们这个专业以后都是没有机会接触的,所以我觉得选择了并行计算与多核多线程技术这门课是非常正确的。对OpenMP、MPI、WIN32API、Java、.NET的并行技术有了一定的了解。在搭建MPI并行程序这块,学习的知识尤为增加,这些都是在不断的摸索、学习中学会的。 这次的大作业虽然是对以前实验的整合,但它加深了我对并行计算的印象,也使我对并行计算知识的理解更加深刻,也使我认识到了自己很多不足之处。学习并行计算的历程不会因为完成本次大作业而停止,我们是为了用知识武装大脑而学习,通过学习充实自己的生活,要努力学习,争取以后能够完成规模更大的程序。

2016-01-11

并行计算课程报告模板

1. 设计目的、意义(功能描述) 2. 方案分析(解决方案) 3. 设计分析 3.1 串行算法设计 3.2 并行算法设计 3.3 理论加速比分析 4. 功能模块实现与最终结果分析 4.1 基于OpenMP的并行算法实现 4.1.1 主要功能模块与实现方法 4.1.2 实验加速比分析 4.2 基于MPI的并行算法实现 4.2.1 主要功能模块与实现方法 4.2.2 实验加速比分析 4.3 基于Java的并行算法实现 4.3.1 主要功能模块与实现方法 4.3.2 实验加速比分析 4.4 基于Windows API的并行算法实现 4.4.1 主要功能模块与实现方法 4.4.2 实验加速比分析 4.5 基于.net的并行算法实现 4.5.1 主要功能模块与实现方法 4.5.2 实验加速比分析 4.6 基于Linux的并行算法实现(选作) 4.6.1 主要功能模块与实现方法 4.6.2 实验加速比分析

2016-01-11

使用拟蒙特卡罗方法计算点模型的体积

! 拟蒙特卡罗方法 蒙特卡罗方法已被广泛用于计算 # $ % 和边界 表示的实体的体积 [ 5 ] " 假定 ! 是一个三维实体, ! 9 是包含 ! 的参考立方体, 在 ! 9 中产生 " 个均匀分 布的伪随机点 " 对每个随机点检测其是否位于 ! 内, 假设位于 ! 内的随机点个数为 " - ( ( ! " ) , 应用 蒙特卡罗方法, 则 ! 的体积为 # " # 9 " - ( ( ) " ( 9 ) 其中 # 9 是 ! 9 的体积 " 如果产生足够多的随机点, 理论上可以获得任意逼近精度 " 用蒙特卡罗方法求 解体积的随机误差阶次为 $ ( " B 9 ! ! ) [ 9 ! ] , 精度随着 随机点个数 " 的平方根增加 " 该方法的优点是算 法简单, 缺点是收敛慢 " 比伪随机点更均匀地充满 采样空间的序列被称为低差异数序列 [ 9 : ] , 用低差异 数序列代替伪随机数序列的蒙特卡罗方法被称作拟 蒙特卡罗方法 " 拟蒙特卡罗方法的收敛速度一般可比蒙特卡罗方法提高数百倍, 并可大大提高计算精 度 " 近年来, 人们开始利用拟蒙特卡罗方法计算 # $ % 表示实体的体积和面积 [ = 6 7 ] , 使用 C - / 1 / + + / - * / + 低差异数序列的拟蒙特卡罗方法的误差阶次为 $ ( " B 9 0 ’ 2 % " ) , 此处 % 是问题的维数 [ = & 7 ] " 特别地, 当 求解三维实体体积时, 其误差阶次为 $ ( " B 9 0 ’ 2 : " ) "。。。。。。。。。。。

2016-01-11

操作系统考研试题(9套)

2005年北方交通大学试题 选择答案: 1.程producer、copyist、printer分别对缓冲区buffer(0)、buffer(1)进行操作。Producer把产生的数据送buffer(0);copyist把buffer(0)的数据复制到buffer(1)中;printer把buffer(1)中的数据取出来打印。请选择相关的wait、signal语句完善给出的流程: 流程中s1是producer的私用信号量;s2、s3是copyist的私用信号量;s4是printer的私用信号量。 Var s1, s2, s3, s4 : = A ; Buffer : array[ 0 , 1 ] of item ; Begin Parbegin Producer : begin Repeat Produce an item in x ; Waite(s1) ; buffer(0) : = x ; B ; until false ; end copyist : begin Repeat Waite(s2) ; C ; copy buffer(0) to buffer(1) ; D ; E ; until false ; end printer : begin Repeat F ; y : = buffer(1) ; signal(s3) ; print data in y ; until false ; end parend end

2016-01-10

操作系统期末试题(9套)

简答题(每题4分,共16分) 1 分别举出一个在命令行使用输入重定向、输出重定向、管道的例子,并说明使用相应命令的意图。 2 对比“进程”和“线程”的异同。 3 对比动态分页系统中的全局、局部页面置换策略。 4 什么是设备无关性?如何实现设备无关性?

2016-01-10

操作系统专科考试题

简答题(共40分) 1、说明进程在三个基本状态之间转换的典型原因。(8分) 2、固定分区和动态分区有何区别?(8分) 3、为什么说引入缓冲后可显著地提高I/O速度,6而使CPU与I/O 速度不匹配的矛盾得到缓和?(8分) 4、中断技术的基本原理是什么(8分) 5、文件的三种物理结构的特点(8分)

2016-01-10

烟台大学期末考试题

1.请说出三种预防死锁的方法,并解释。 2.什么是系统功能调用?系统调用和一般用户调用有什么区别? 3.试说明分页系统中,由逻辑地址到物理地址的变化过程。 4.试说明I/O控制的种类,及其优缺点。 5.一个文件系统的物理结构是顺序结构,其在逻辑上是否可以实现索引结构, 如何实现? 四、综合题(每题15分,共90分, 要求写出解题步骤) 1.如图1所示, 方框表示资源类别,小方框表示同种资源, 圆形表示进程, 从资源指向进程的箭头表示该资源被进程拥有,从进程指向资源的箭头表示进程申请该类资源。如对P1进程,P1进程拥有r1和r2类资源各一个并申请另一个r2类资源。在下图情况下会不会产生死锁。为什么?如果P4再申请r1资源会不会死

2016-01-10

软件工程模拟题

这是一份关于软件工程概论期末考试的模拟题,概括的很全,比较适合烟大的学生,与期末考试题型一致。

2016-01-10

操作系统复习提纲2015

操作系统复习,烟台大学,提纲,分章节总结

2016-01-04

计算机网络(谢希仁版)复习资料整理(期末考试必备)

计算机网络(谢希仁版)复习资料整理(期末考试必备),各章重点内容,烟台大学

2016-01-04

Web中期作业

1、设计一个个人求职网站,要求包括个人照片、个人基本情况,各种爱好,掌握的专业技术,学习过的课程,参与过的项目,理想的工作描述。 2、设计一个班级网站,要求包括顶部导航栏,内容包括班级新鲜事、班级通知公告、班级相册、个人风采、联系方式等。

2015-06-10

一道关于第几天的c++题目

这是一个关于第几天的演示文稿,希望大家喜欢,谢谢。

2014-02-21

Iris Pro电脑护眼程序.7z

一款windows系统上的电脑护眼软件,拥有多种模式,可以按照不同情境下选择不同的护眼模式,很好用,值得一试。

2020-06-27

jacob-1.9.7

jacob是一个用于操作office的jar包工具类,可以按需操作office和wps

2019-02-28

jacob的jar包

jacob是一个用于操作office的jar包工具类,可以按需操作office和wps

2019-02-28

Splashtop XDisplay

本软件用于实现将电脑屏幕扩展到其它移动设备的软件。

2019-02-27

RXTX 的API文档

RXTX串口通信的开发说明帮助文档,有具体类与接口的说明和框架!

2019-02-22

VSPD及串口调试工具

VSPD:虚拟comm串口的工具,里边还有串口调试的工具。

2019-02-22

RXTX Win x86个人备份

RXTX串口通信的开发工具类,用于websocket串口的开发,一般在接受地磅数据时可以用到

2019-02-22

RXTX Win x64个人备份

RXTX串口通信的开发工具类,用于websocket串口的开发,一般在接受地磅数据时可以用到。

2019-02-22

Xftp6个人备份

是一个基于 MS windows 平台的功能强大的SFTP、FTP 文件传输软件。使用了 Xftp 以后,MS windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。Xftp 能同时适应初级用户和高级用户的需要。它采用了标准的 Windows 风格的向导,它简单的界面能与其他 Windows 应用程序紧密地协同工作,此外它还为高级用户提供了众多强劲的功能特性。 主要是为了个人备份,所以分数设置的高一点,这个软件可以在官网免费下载,免费版适用于非商业开发用。

2018-09-29

Postman-win64

一款测试web接口的工具,在web开发中,我们通常需要测试web接口是否好用,此版本为windows 64位安装版本。

2018-08-22

Xshell 6 官方个人免费版

Xshell [1] 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。 本软件为免费版,不得用于商业或者其它用途。

2018-08-22

Hexo博客源文件

该文件为搭建Hexo+github博客时未编译的博客项目源文件

2017-02-18

Toast的基本使用代码

Toast的基本使用代码,对应博客中2.1 Toast(吐司)的基本使用。

2017-01-23

百度云PushReceiver

配置百度云推送时需要的PushReceiver类

2016-08-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除