- 博客(88)
- 资源 (8)
- 收藏
- 关注
原创 树莓派编译Hadoop:错误 /tmp/ccssxlbt.s:1959: error: bad instruction `bswap r5‘
上述错误发生在hadoop-mapreduce-client-nativetask 的编译过程中,错误描述为/tmp/ccssxlbt.s:1959: error: bad instruction `bswap r5'。网上找了下,发现可以通过打补丁解决https://issues.apache.org/jira/secure/attachment/12693989/HADOOP-11505.001.patch。我在src目录下建立了一个patches文件夹,放入补丁文件,然后执行cd .. ...
2020-07-06 11:29:37 663
原创 树莓派编译hadoop 3.2.1源码,错误:undefined reference to `__atomic_load_8‘
最近在研究树莓派编译hadoop源码,坑非常非常多。。。1、编译过程中 HADOOP-HDFS-NATIVE-CLIENT 错误:错误主要是在执行一下指令时发生的:/usr/bin/c++ -g -O2 -Wall -pthread -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -Wall -Wextra -pedantic -std=c++11 -g -fPIC -fno-strict-aliasing -Wno-missing-field-initialize.
2020-07-05 21:44:59 3689
原创 汇编函数:ReadSector
在《自己动手写操作系统》中有个重要的汇编函数ReadSector,作用是通过中断int 13,从驱动器中读取开始地址(ax号扇区)后指定数量(cl个)扇区数据到目标地址(es:bp),具体代码如下:;----------------------------------------------------------------------------; 函数名: ReadSector;-...
2020-02-28 13:16:44 780
原创 MINIX3 进程结构体1
刚开始学习MINIX3,把学到的一些东西写下来,留作笔记。MINIX3的内核文件中的/kernel/proc.h中定义了proc结构体:/*进程结构体*/struct proc { struct stackframe_s p_reg; /* process' registers saved in stack frame */ reg_t p_ldt_sel; /* selec...
2020-02-08 22:02:06 384
原创 C# SSIS包开发中遇到的无法找到Microsoft.SqlServer.DTSRuntimeWrap.dll问题
最近一直在搞SQLSERVER SSIS 2008包提取和解析方面的工作,在从Sqlserver下载IS包功能开发中,发现了一个问题:无法找到Microsoft.SqlServer.DTSRuntimeWrap.dll或者他的依赖项。捣鼓了一阵子后,发现是需要安装SQLSERVER CLIENTSDK的,就是SQLSERVER 2008安装过程中选中安装【客户端SDK】。不过即使安装...
2020-02-06 09:18:23 861
原创 C# UI与后台线程死锁问题
在项目开发中,往往会遇到线程死锁问题。前几天,我也遇到了一个类似的问题,在这里与大家分享。一、功能描述 原本程序只能自动刷新(其实就是每隔十秒钟查询访问数据库,得到数据),现在希望增加手动刷新共功能,保证用户使用的方便性和实时性。界面如下:二、设计思路 为了保证自动刷新的时候不会被手动刷新所干扰,我在程序中加了锁。功能函数如下:自动刷...
2019-04-05 09:20:18 1416
原创 Linux 2. 关于pthread_cond_signal 唤醒两个线程的问题
这里贴出一个非常经典的关于多线程条件变量互斥锁的案例,即生产消费者模型。我想说的是这里的while循环判断pthread_cond_wait,为何不能使用if的问题。根据man查询到pthread_cond_signal这个函数至少会唤起1个线程,也就是说也有可能会唤起两个及以上个线程。因此,如果这里使用if而不是while,那么当被唤起两个线程时(考虑争夺仅有的一个资源时的情况),会发生
2017-06-05 10:20:30 6747 7
原创 Linux 1. 奇怪符号 ^@
最近一直在研究Linux操作,从内心来说,我觉得这个操作系统很有意思,而且拓宽了我局限于C#的思维模式,Tres bien!学习过程中也遇到一些各种各样奇怪的问题,网上搜索后好像大家也没有一个确切的说法。因此在这里,我打算把我遇到的比较有意思的问题写在博客中,是自己的思考和实验,希望对大家有益。本文要讲的就是这个看似奇怪的 ^@ 符号。先上代码:#include#include
2017-06-03 11:11:52 10015
转载 【C#】63. 异步操作数据库 localDB
这篇不难,都是些基础性的异步操作,所以直接上代码。可以参考里面的语法包括:1)找到当前的bin文件夹:string outputFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);2)调用数据库的自带procedure(这里是detach)并且传参:Console.WriteLin
2016-12-13 15:27:21 3804
转载 【C#】62. 异步读写文件的几种方法: Task.Factory.FromAsync,WriteAsync
一、这里主要说明2种异步写入文件的方法:1)异步编程模型API转为Task——使用Task.Factory.FromAsync方法2)对于StreamWriter使用WriteAsync方法请记得对stream对象使用FileOptions.Asynchronous选项!首先来看一下准备函数:CreateFileContent是用来随机生成要写入的内容(字符串形式);
2016-12-13 14:38:23 10267 1
转载 【C#】61. 并行查询的异常处理 PLINQ Exception
本文主要是要说明PLINQ中如果发生了异常(除取消任务以外的异常),那么将会返回一个aggregateexception(因为所有并行查询中发生的异常都会被抛出),需要对其中的innerexception进行进一步处理。首先来看普通Linq查询中发生的异常:由于是顺序执行查询,因此当碰到了对应的第一个异常时便自动捕获,也无须考虑线程的问题,因为是在同一个线程中。IEnumerabl
2016-12-13 14:06:58 1145
转载 【C#】60. PLINQ 的几个选项
本篇主要介绍在使用并行查询时的几个选项,包括指定并行度(WithDegreeOfParallelism)、是否强制使用并行执行模式(WithExecutionMode)、对于查询结果的合并选项(WithMergeOptions)以及取消选项(WithCancellation)。static IEnumerable GetTypes(){return from assembly in App
2016-12-13 13:45:34 569
转载 【C#】59. AsParallel() 与 ForAll
平时经常会用到LINQ,这里介绍的方法可以有效地使用并行查询来加快查询速度(AsParallel),同时通过使用ForAll来对结果进行并行处理。GetTpyes:通过反射,从当前Assembllies中的所有组件中找出名称以“Web”开头的类型名称。static IEnumerable GetTypes(){return from assembly in AppDomain.
2016-12-13 13:27:36 10120
转载 【C#】58. .Net中的并发集合——BlockingCollection
这篇是并发集合中的最后一篇,介绍一下BlockingCollection。在工作中我还没有使用过,但是看上去应该是为了便捷使用并发集合而创建的类型。默认情况下,BlockingCollection使用的是ConcurrentQueue容器,当然我们也可以使用其他实现了IProducerConsumerCollection的类型来操作。static Task GetRandomDelay(){
2016-12-13 12:31:26 5257
翻译 【C#】57. .Net中的并发集合——ConcurrentBag
这个是一个直接的爬虫可伸缩应用,虽然大致看明白了,但是真的用到实际中,如何处理超时和网络连接失败呢?Crawling类型:用于标示需要爬取的网页的URL,以及是由哪个爬虫找到的。class Crawling{public string UrlToCrawl { get; set; }public string ProducerName { get; set; }}
2016-12-13 11:15:44 7266
翻译 【C#】56. .Net中的并发集合——ConcurrentStack
这篇其实和上一篇几乎一样,只是把ConcurrentQueue改为了ConcurrentStack,使用了Push(入)和TryPop(出)两个操作替代了Enqueue和TryDequeue。static void Main(string[] args){Task t = RunProgram();t.Wait();Console.Read();}static async Tas
2016-12-13 10:26:02 3815
翻译 【C#】55. .Net中的并发集合——ConcurrentQueue
这部分内容我觉得可以用在网络爬虫之类的任务上,应该是很有启发的。客户类型:class Custom{public int Id { get; set; }}“随机等待时间”任务:static Task GetRandomDelay(){int delay = new Random(DateTime.Now.Millisecond).Next(1, 500);return T
2016-12-13 10:17:16 8590
转载 【C#】54. .Net中的并发集合——ConcurrentDictionary
转载自《C#多线程编程实例》对于并行计算,我们需要使用适当的数据结构。这些结构具备可伸缩性,尽可能地避免锁,并且还能提供线程安全的访问。.Net Framework 引入了System.Collections.Concurrent 命名空间,包含了一些数据结构。const string Item = "Dictionary item";public static string Curre
2016-12-13 09:45:41 6542
转载 【C#】53. Async void VS Task
本文主要说明与Task或者Task相比,Async void为什么应该避免。async static Task GetInfoAsync(string name, int seconds){await Task.Delay(TimeSpan.FromSeconds(seconds));if(name.Contains("Exception")) throw new Exceptio
2016-12-12 22:57:57 6450
翻译 【C#】52. 使用Flatten方法处理并行任务抛出的异常
本篇主要讨论一下InnerException的处理方法flatten。async static Task GetInfoAsync(string name, int seconds){await Task.Delay(TimeSpan.FromSeconds(seconds));throw new Exception(string.Format("Boom from {0}!", nam
2016-12-12 22:20:23 1109
翻译 【C#】51. Await 处理并行任务(WhenAll)以及Task.Delay()
这篇文章主要说明两个问题:1、await如何替代ContinueWith来处理WhenAll之类的并行多任务;2、Task.Delay()的原理。async static Task GetInfoAsync(string name, int seconds){await Task.Delay(TimeSpan.FromSeconds(seconds));//await Task.Run(
2016-12-12 21:54:14 8532 1
原创 【C#】50.使用await操作连续的异步任务
本篇主要说明一下使用await处理连续异步任务后,程序的条理会变得较为清晰。async static Task GetInfoAsync(string name){Console.WriteLine("Task {0} started!", name);await Task.Delay(2000);if(name == "Async 2")throw new Exceptio
2016-12-12 21:13:55 3610
原创 【C#】49. async, await 基础
这篇文章主要介绍一下C# 5.0语法中的新组合:async 和 await。我这里主要会写一些基本的注意要点,但是不会过于仔细。首先,必须要说明的是async和await是一对,要使用await关键字,那么函数前必须要有async前缀;这对语法糖不能使用在catch、finally、lock、unsafe代码中;且函数参数不能有out或者ref修饰;异步函数必须返回Task或者Task类型。
2016-12-12 15:16:23 1983
原创 【C#】48. TaskScheduler
这篇其实很重要,讲了如何在UI线程和线程池线程之间通讯。一般来说,UI线程拥有的对象,其他线程是无法操作的。但是.Net有一个很重要的抽象对象——TaskScheduler(任务调度器)。它协调着不同任务(线程)的运行,使得线程池中的线程有了操作UI线程的可能。在我以前不知道OberservableCollection和WPF开发的时候,都是要么使用 Invoke方法,要么就是使用TaskSche
2016-12-12 13:44:45 8459
原创 【C#】48. Task WhenAll、WhenAny 创建任务的任务
Task中有几个非常方便的并行运行任务的方式,比如WhenAll(当所有Task都运行完毕RanToCompletion)、WhenAny(只要有一个Task运行完毕)等等。本篇就来介绍一下WhenAll和WhenAny。static int TaskMethod(string name, int seconds){Console.WriteLine("Task {0} 运行在线程 {1}
2016-12-12 11:08:33 11800
原创 【C#】47. Task 的异常处理
就像在讨论线程的时候我们说过,要在线程调用的函数里面做try catch处理,如果在其他线程中使用try catch是无法正常捕获异常。Task也一样,基本原理就是一个线程没办法捕获另一个线程的异常。static int TaskMethod(string name, int seconds){Console.WriteLine("Task {0} 运行在线程 {1} 上。是否是线程池线程
2016-12-12 10:34:49 9379
原创 【C#】46. 使用CancellationTokenSource 取消 Task
本篇的内容也很重要,因为涉及到了日常经常会碰到的取消任务操作。从我个人了解到的情况,基本上大家都采用CancellationTokenSource方法来取消任务,因此这里就举几个简单的例子。例子依然是来自于《C#多线程编程实战》。private static int TaskMethod(string name, int seconds, CancellationToken token)
2016-12-12 10:03:52 18886
原创 【C#】45. Task ContinueWith 后续操作
本章内容其实挺重要的,但是现在我工作中还没怎么遇到,应该是我还没想到的关系吧~ContinueWith是Task根据其自身状况,决定后续应该作何操作。也就是说,在运行完task后,会执行task.continuewith(XX)中的XX语句,但是是否执行、如何执行等需要看task的运行情况。static int TaskMethod(string name, int seconds)
2016-12-11 22:23:08 23452 3
原创 【C#】44. Task<T> 根据带返回值的函数构造Task
上篇中,我们看了不带参数值和返回值的函数(Action)构造Task的方法,本篇中我们想Thread一样,看看如何给Task传参和返回值。首先定义int TaskMethod(String)函数,该函数以String作为参数,返回Int类型结果:static int TaskMethod(string name){Console.WriteLine("Task {0} 运行在线程id为
2016-12-11 21:23:12 37985 1
原创 【C#】43. TPL基础——Task初步
从这篇文章开始,我想直接进入关于Task的一些内容,有时间再回顾Threadpool的相关内容。我一开始接触Task就觉得他和Thread很像,都是开新的线程。但是两者有很多区别,其中比较明显的是:Task创建的是线程池任务,而Thread默认创建的是前台任务。 同Thread一样,Task可以使用lambda表达式来构造action,作为Task的构造函数参数。如下:1
2016-12-11 20:56:10 2758 3
原创 【C#】42. 在线程中使用Try Catch
本文主要说明:在线程函数中使用Try Catch能够正确捕获异常,而如果使用形如 try { var t = New Thread(XX); t.start(); } Catch{} 这种代码是无法正确处理异常的。using System;using System.Threading;namespace Chapter1.Recipe11{ class Program {
2016-12-11 18:19:21 3246
原创 【C#】41. 线程中使用lock
锁的内容很重要,首先必须明确,只有用到使用相同变量时,会发生竞争。如果线程操作的是不同实例,那么不会发生影响。以下代码先构造一个抽象类CounterBase,里面说明所有其子类必须Increment()和Decrement()两个方法。其子类有两个:Counter和CounterWithLock。比较有意思的是两者都用的是Count属性(private set),估计是可以生成默认的内部变量。
2016-12-11 18:09:29 421
原创 【C#】40. 线程参数传递的三种方法
本文主要介绍三种向线程传递参数的方法,使用的例子依然是《C#多线程编程实例》。这三种方法分别是:1、写一个类型,在构造函数中传参,而后在类型中写无参数函数,里面使用内部变量,从而达到传参的目的。2、使用lambda方法,通过直接调用已有的带参数函数,通过lambda表达式向线程传参。3、使用thread.start(object parameter)的方法。其中,第二种方法与第一种方法其实
2016-12-11 17:36:28 6158
原创 【C#】39. 前台线程与后台线程
这篇文章主要介绍一下前台线程后后台线程的区别:进程会等待前台线程结束后才能结束,而不会理会后台线程的执行状况。显示创建的线程默认情况下都是前台线程,除非手动设置 IsBackground = True。using System;using System.Threading;namespace Chapter1.Recipe7{class Program{static vo
2016-12-11 15:33:08 1310
原创 【C#】38. 线程的等待方法:join
其实多线程最复杂的地方在于不同线程间的同步问题,这其中会涉及到先后执行问题、共享变量问题等。这篇文章我们主要来开个头,看一下join方法。using System;using System.Threading;namespace Chapter1.Recipe3{class Program{static void Main(string[] args){Console.Wri
2016-12-11 14:38:52 6390
原创 【C#.37】多线程中的Sleep以及子线程优先级
继续上篇,其实在写文章的过程中真的实践了不少,而且发现和自己原来认为的有挺多不同的。因此有错误的话请多指正。以下的内容都是经过试验得出的:using System;using System.Threading;namespace Chapter1.Recipe2{class Program{static void Main(string[] args){Thread
2016-12-11 14:00:17 12757
原创 【批处理】35.备份Mysql中所有数据库——mysqldump命令
今天下午研究了一下如何备份mysql中所有数据库,感谢老高给我的提醒。请千万要注意不要随意加【空格】啊!!!先上代码:@echo offecho 正在建立数据库备份...d:cd d:\MySQL\MySQL Server 5.5\binset /p filename=请输入备份文件名称:echo 正在E盘根目录下建立数据备份文件:%filename%.sqlm
2016-10-21 22:20:34 2817
原创 【C#】33. 使用XAPI进行程序化交易
最近一直在研究CTP和XAPI接口的东西,一方面是工作需要,一方面是自己兴趣所在。在网上也找了很多资料,但说实话确实没有很详实的材料。在自己的不断试错中,逐渐摸索到了一点规律。在此基础上,我写了一个很简单的winform程序,主要用来下单,同时又配合simnow快期软件来进行监控,最终效果如下:初步设计能够通过市价下单,并且查询到下单回报,同时还可以查询到持仓。但是XAPI在实
2016-07-23 10:03:42 2480 1
rpi-apache-hive-3.1.2-src.tar.gz
2020-07-13
rpi-hadoop-3.2.1.tar.gz
2020-07-08
rpi-hadoop-3.2.1-src.tar.gz
2020-07-06
树莓派 4 B hadoop编译文件下载 hadoop-3.2.1.tar.gz
2020-07-06
Visual Studio 2010 Tools for Office Runtime 10.0.40303.0
2017-11-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人