自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

愿世界和平的IT劝退师

讨论请加qq507517279

  • 博客(27)
  • 收藏
  • 关注

原创 C#-Socket编程-UDP

服务器端static void Main(string[] args){  //1.Socket udpserver=new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);   //2. IPAddress ipaddress = IPAddress.Pars

2017-01-11 11:57:52 316

原创 两个栈实现队列

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。stack stack1;stack stack2;  void push(int node){   stack1.push(node);}  int pop(){   if(stack2.empty())   {      while

2017-01-10 16:32:42 175

原创 由前序+中序,输出二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。TreeNode* Build(vector pre, vector in){     if(pre.size()==0)

2017-01-10 15:58:13 256

原创 逆向打印链表

输入一个链表,从尾到头打印链表每个节点的值。vector print(ListNode* head)     //递归{    vector v;    if(head != NULL)    {       if(head->next != NULL)       {          v =print(head->next);

2017-01-10 15:13:23 271

原创 空格替换成“%20 ”

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。void replaceSpace(chat *str, int length){      if(str==NULL || length          return;      for(int

2017-01-10 14:50:01 404

转载 unity WebGL

自加入Unity WebGL平台以来,Unity的开发团队就一直致力于优化WebGL的内存消耗。我们已经在Unity使用手册上有对于WebGL内存管理的详尽分析,甚至在Unite Europe 2015与Unite Boston 2015两届大会上,也有专题对其进行深入的讲解。然而,这方面的内容依旧是用户讨论的热门话题,因此我们意识到应当分享更多。希望本文能回答一些被频繁咨询的问题。Uni

2017-01-10 10:23:02 2931

原创 bank conflict

简介  目前 CUDA 装置中,每个 multiprocessor 有 16KB 的 shared memory。Shared memory 分成 16 个 bank。如果同时每个 thread 是存取不同的 bank,就不会产生任何问题,存取shared memory 的速度和存取寄存器相同。不过,如果同时有两个(或更多个) threads 存取同一个 bank 的数据,就会发生 bank

2017-01-09 16:30:24 2415

转载 共享内存与Thread的同步

在之前我们通过block,继续增大了线程的数量,结果还是比较令人满意的,但是也产生了一个新的问题,即,我们在CPU端的加和压力变得很大,所以我们想到能不能从GPU上直接完成这个工作。我们知道每个block内部的Thread之间是可以同步和通讯的,本篇我们将让每个block把每个thread的计算结果进行加和。所以本篇博客我们将研究CUDA架构中Thread另外两个非常重要的概念,共享内存Sha

2017-01-09 09:38:13 514

原创 输入二维数组和整数,判断是否含有

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。从右上开始寻找:bool Find(vector >array, int target){      int row = array.size();    int col = array[0].si

2017-01-08 14:07:47 405

转载 简单Socket通信

示例程序是同步套接字程序,功能很简单,只是客户端发给服务器一条信息,服务器向客户端返回一条信息;这里只是一个简单的示例,是一个最基本的socket编程流程,在接下来的文章中,会依次记录套接字的同步和异步,以及它们的区别。下面是示例程序的简单步骤说明服务器端:第一步:用指定的端口号和服务器的ip建立一个EndPoint对像;第二步:建立一个Socket对像;第三步:用socket

2017-01-06 17:12:16 155

转载 C#5.0多线程同步方法详解

1,线程概述线程是程序汇中独立的指令流。线程有一个优先级,实际上正在处理的程序的位置计数器,一个存储其局部变量的栈。每个线程都有自己的栈。但应用程序的内存和堆由一个进程的所有线程共享。进程包含资源,如windows句柄,文件句柄或其他内核对象。每个进程都分配了虚拟内存。一个进程至少包含一个线程。操作系统会调度线程。总结:同步代码区域(代码块):lock,   Mon

2017-01-06 12:27:50 1198

原创 网络编程基础--多线程

一、进程与线程      1)进程被定义为一个正在运行的程序的实例,是系统进行调度和资源分配的一个独立单位。简单分为系统进程和用户进程。而程序是一段静态代码,不能申请系统资源,不能被系统调度,也不能作为单独运行的单位,因此它不占用系统的运行资源。           线程是进程中的一个实体,自己不拥有系统资源,一个标准的线程由线程ID,当前指令指针PC,寄存器集合,堆栈组成。     

2017-01-06 11:56:21 203

原创 calling a __host__ function("XXX") from a __global__ function is not allowed

原因一:error : calling a __host__ function("fmod ") from a __global__ functionThis is happening because of a template argument mismatch. You are calling fmod with a floating point argument an

2017-01-06 09:17:02 7931

转载 别赋

黯然销魂者,唯别而已矣!况秦吴兮绝国,复燕宋兮千里。或春苔兮始生,乍秋风兮暂起。是以行子肠断,百感凄恻。风萧萧而异响,云漫漫而奇色。舟凝滞于水滨,车逶迟于山侧。棹容与而讵前,马寒鸣而不息。掩金觞而谁御,横玉柱而沾轼。居人愁卧,怳若有亡。日下壁而沉彩,月上轩而飞光。见红兰之受露,望青楸之离霜。巡层楹而空掩,抚锦幕而虚凉。知离梦之踯躅,意别魂之飞扬。  故别虽一绪,事乃万族。至若龙马银鞍,朱轩

2017-01-05 11:44:35 466

转载 ptxas fatal : Unresolved extern function xxxx

出现这个问题。找到了原因是,在global函数中调用了__device__函数,但是这两个文件不在同一个src文件里面。http://stackoverflow.com/questions/31006581/cuda-device-unresolved-extern-functionThe issue is that you defined a __devi

2017-01-05 10:11:46 2516 2

转载 双通道技术

双通道内存技术的原理双通道内存技术其实就是双通道内存控制技术,能有效地提高内存总带宽,从而适应新的微处理器的数据传输、处理的需要。它的技术核心在于芯片组(北桥)可以在两个不同的数据通道上分别寻址、读取数据R内存可以达到128位的带宽。内存双通道的优点1、能够带来2倍的内存带宽,从而可以那些与必须内存数据进行频繁交换的软件得到极大的好处,譬如SPEC Viewperf、3DM

2017-01-04 17:56:40 1710

转载 多核系统中温度隐蔽通道的带宽优化

On the Capacity of Thermal Covert Channels in Multicores, EuroSys’16(B类), 2016年4月[1] 1. 背景ETHZurich(苏黎世联邦理工学院)的研究人员针对多核系统中的温度隐蔽通道进行了研究。由于现在处理器技术的快速发展,其散热问题非常重要。处理器通常会配备温度传感器,并利用DynmaicTh

2017-01-04 10:11:41 311

原创 网络编程基础--Socket

一、定义简单地说,就是不同的计算机之间为了满足各自进程间通信的需要所架设的一条数据通道,是一个通信链的句柄。为了区别不同的应用程序进程和连接,许多计算a级操作系统为应用程序与TCP/IP协议交互提供了称为套接字的接口,区分不同的应用程序进程间的通信和连接。       生成套接字主要3个参数:(通信的目的IP地址、使用的传输协议、端口号)       套接字类型:    1.流式套

2017-01-03 19:44:09 295

转载 gdb

SIMT中文译为单指令多线程,英文全称为Single Instruction Multiple ThreadsGPU中的SIMT体系结构相对于CPU的SIMD中的概念。为了有效地管理和执行多个单线程,多处理器采用了SIMT架构。此架构在第一个unified computing GPU中由NVIDIA公司生产的GPU引入。不同于CPU中通过SIMD(单指令多数据)来处理矢量数

2017-01-03 16:30:56 349

转载 cudaMemcpyToSymbol 和cudaMemcpy

这是今天在群里有人问了这么一个问题 cudaMemcpyToSymbol可以将数据从host拷贝到global,cudaMemcpy也是从host到>global,这种情况下二个函数有什么区别吗?和各位大佬讨论一下后,和大家分享一下~首先,学到了cudaMemcpyToSymbol竟然还有将数据从host拷贝到global的功能,以前只用过这个函数拷贝到constant

2017-01-03 15:34:23 7279

原创 进程

进程 一、进程的引入一是刻画系统的动态性,发挥系统的并发性。而是解决共享性,正确描述程序的执行状态。多道程序系统中,程序具有:并行、制约以及动态的特征。程序概念难以反映系统中的情况: 1. 程序是一个静态的概念程序是完成某个功能的指令集和。系统实际上是出于不断变化的状态中,程序不能反映这种动态性。 2. 程序概念不能反映系统中的并行特性例如:两个C语言源程序由一个编译程序完

2017-01-03 14:32:23 264

转载 浏览器访问网站的过程

从本地DNS服务器那里得到百度的IP;得到百度的IP,下一步是使用TCP协议,建立TCP连接;为了将消息从你的PC上传到服务器上,需要用到IP协议、ARP协议和OSPF协议;用HTTP协议请求网页内容

2017-01-03 13:13:32 430

转载 管道、消息队列、共享内存之间的区别与联系

管道和消息队列的区别管道(PIPE)     管道通信方式的中间介质是文件,通常称这种文件为管道文件。两个进程利用管道文件进行通信时,一个进程为写进程,另一个进程为读进程。写进程通过写端(发送端)往管道文件中写入信息;读进程通过读端(接收端)从管道文件中读取信息。两个进程协调不断地进行写、读,便会构成双方通过管道传递信息的流水线。管道分为匿名管道

2017-01-03 12:20:59 7123

转载 共享内存和消息传递

线程通信机制:共享内存 VS 消息传递在并发编程中,我们必须考虑的问题时如何在两个线程间进行通讯。这里的通讯指的是不同的线程之间如何交换信息。目前有两种方式:1、共享内存2、消息传递(actor 模型) 共享内存共享内存这种方式比较常见,我们经常会设置一个共享变量。然后多个线程去操作同一个共享变量。从而达到线程通讯的目的。例如,我们使用多个线程去执行页面抓取任务,我

2017-01-03 12:04:07 12074

转载 define和const

(1) 编译器处理方式不同  define宏是在预处理阶段展开。  const常量是编译运行阶段使用。(2) 类型和安全检查不同  define宏没有类型,不做任何类型检查,仅仅是展开。  const常量有具体的类型,在编译阶段会执行类型检查。(3) 存储方式不同  define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。

2017-01-02 11:28:04 182

原创 链表单个节点的删除

实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回truebool  remove(ListNode* pnode){   if(pnode==NULL || (pnode!=NULL && pnode->next==NULL))  return false;  

2017-01-01 10:30:42 282

原创 链表中倒数第k个节点

输入一个链表,输出链表中倒数第k个节点ListNode* Find(ListNode* Head, unigned int k){      if(Head==NULL || k==0)    return NULL;       ListNode *p=Head, *q=Head;      while(p!=NULL && k)    {

2017-01-01 10:22:09 177

空空如也

空空如也

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

TA关注的人

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