自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 640

原创 树莓派编译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 3658

原创 汇编函数:ReadSector

在《自己动手写操作系统》中有个重要的汇编函数ReadSector,作用是通过中断int 13,从驱动器中读取开始地址(ax号扇区)后指定数量(cl个)扇区数据到目标地址(es:bp),具体代码如下:;----------------------------------------------------------------------------; 函数名: ReadSector;-...

2020-02-28 13:16:44 752

原创 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 365

原创 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 829

原创 C# UI与后台线程死锁问题

在项目开发中,往往会遇到线程死锁问题。前几天,我也遇到了一个类似的问题,在这里与大家分享。一、功能描述 原本程序只能自动刷新(其实就是每隔十秒钟查询访问数据库,得到数据),现在希望增加手动刷新共功能,保证用户使用的方便性和实时性。界面如下:二、设计思路 为了保证自动刷新的时候不会被手动刷新所干扰,我在程序中加了锁。功能函数如下:自动刷...

2019-04-05 09:20:18 1386

原创 Linux 2. 关于pthread_cond_signal 唤醒两个线程的问题

这里贴出一个非常经典的关于多线程条件变量互斥锁的案例,即生产消费者模型。我想说的是这里的while循环判断pthread_cond_wait,为何不能使用if的问题。根据man查询到pthread_cond_signal这个函数至少会唤起1个线程,也就是说也有可能会唤起两个及以上个线程。因此,如果这里使用if而不是while,那么当被唤起两个线程时(考虑争夺仅有的一个资源时的情况),会发生

2017-06-05 10:20:30 6666 7

原创 Linux 1. 奇怪符号 ^@

最近一直在研究Linux操作,从内心来说,我觉得这个操作系统很有意思,而且拓宽了我局限于C#的思维模式,Tres bien!学习过程中也遇到一些各种各样奇怪的问题,网上搜索后好像大家也没有一个确切的说法。因此在这里,我打算把我遇到的比较有意思的问题写在博客中,是自己的思考和实验,希望对大家有益。本文要讲的就是这个看似奇怪的 ^@ 符号。先上代码:#include#include

2017-06-03 11:11:52 9879

转载 【C#】63. 异步操作数据库 localDB

这篇不难,都是些基础性的异步操作,所以直接上代码。可以参考里面的语法包括:1)找到当前的bin文件夹:string outputFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);2)调用数据库的自带procedure(这里是detach)并且传参:Console.WriteLin

2016-12-13 15:27:21 3781

转载 【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 10134 1

转载 【C#】61. 并行查询的异常处理 PLINQ Exception

本文主要是要说明PLINQ中如果发生了异常(除取消任务以外的异常),那么将会返回一个aggregateexception(因为所有并行查询中发生的异常都会被抛出),需要对其中的innerexception进行进一步处理。首先来看普通Linq查询中发生的异常:由于是顺序执行查询,因此当碰到了对应的第一个异常时便自动捕获,也无须考虑线程的问题,因为是在同一个线程中。IEnumerabl

2016-12-13 14:06:58 1140

转载 【C#】60. PLINQ 的几个选项

本篇主要介绍在使用并行查询时的几个选项,包括指定并行度(WithDegreeOfParallelism)、是否强制使用并行执行模式(WithExecutionMode)、对于查询结果的合并选项(WithMergeOptions)以及取消选项(WithCancellation)。static IEnumerable GetTypes(){return from assembly in App

2016-12-13 13:45:34 566

转载 【C#】59. AsParallel() 与 ForAll

平时经常会用到LINQ,这里介绍的方法可以有效地使用并行查询来加快查询速度(AsParallel),同时通过使用ForAll来对结果进行并行处理。GetTpyes:通过反射,从当前Assembllies中的所有组件中找出名称以“Web”开头的类型名称。static IEnumerable GetTypes(){return from assembly in AppDomain.

2016-12-13 13:27:36 9998

转载 【C#】58. .Net中的并发集合——BlockingCollection

这篇是并发集合中的最后一篇,介绍一下BlockingCollection。在工作中我还没有使用过,但是看上去应该是为了便捷使用并发集合而创建的类型。默认情况下,BlockingCollection使用的是ConcurrentQueue容器,当然我们也可以使用其他实现了IProducerConsumerCollection的类型来操作。static Task GetRandomDelay(){

2016-12-13 12:31:26 5219

翻译 【C#】57. .Net中的并发集合——ConcurrentBag

这个是一个直接的爬虫可伸缩应用,虽然大致看明白了,但是真的用到实际中,如何处理超时和网络连接失败呢?Crawling类型:用于标示需要爬取的网页的URL,以及是由哪个爬虫找到的。class Crawling{public string UrlToCrawl { get; set; }public string ProducerName { get; set; }}

2016-12-13 11:15:44 7237

翻译 【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 3633

翻译 【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 8565

转载 【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 6525

转载 【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 6417

翻译 【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 1041

翻译 【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 8472 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 3589

原创 【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 1969

原创 【C#】48. TaskScheduler

这篇其实很重要,讲了如何在UI线程和线程池线程之间通讯。一般来说,UI线程拥有的对象,其他线程是无法操作的。但是.Net有一个很重要的抽象对象——TaskScheduler(任务调度器)。它协调着不同任务(线程)的运行,使得线程池中的线程有了操作UI线程的可能。在我以前不知道OberservableCollection和WPF开发的时候,都是要么使用 Invoke方法,要么就是使用TaskSche

2016-12-12 13:44:45 8413

原创 【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 11691

原创 【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 9283

原创 【C#】46. 使用CancellationTokenSource 取消 Task

本篇的内容也很重要,因为涉及到了日常经常会碰到的取消任务操作。从我个人了解到的情况,基本上大家都采用CancellationTokenSource方法来取消任务,因此这里就举几个简单的例子。例子依然是来自于《C#多线程编程实战》。private static int TaskMethod(string name, int seconds, CancellationToken token)

2016-12-12 10:03:52 18768

原创 【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 23302 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 37549 1

原创 【C#】43. TPL基础——Task初步

从这篇文章开始,我想直接进入关于Task的一些内容,有时间再回顾Threadpool的相关内容。我一开始接触Task就觉得他和Thread很像,都是开新的线程。但是两者有很多区别,其中比较明显的是:Task创建的是线程池任务,而Thread默认创建的是前台任务。    同Thread一样,Task可以使用lambda表达式来构造action,作为Task的构造函数参数。如下:1

2016-12-11 20:56:10 2738 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 3230

原创 【C#】41. 线程中使用lock

锁的内容很重要,首先必须明确,只有用到使用相同变量时,会发生竞争。如果线程操作的是不同实例,那么不会发生影响。以下代码先构造一个抽象类CounterBase,里面说明所有其子类必须Increment()和Decrement()两个方法。其子类有两个:Counter和CounterWithLock。比较有意思的是两者都用的是Count属性(private set),估计是可以生成默认的内部变量。

2016-12-11 18:09:29 420

原创 【C#】40. 线程参数传递的三种方法

本文主要介绍三种向线程传递参数的方法,使用的例子依然是《C#多线程编程实例》。这三种方法分别是:1、写一个类型,在构造函数中传参,而后在类型中写无参数函数,里面使用内部变量,从而达到传参的目的。2、使用lambda方法,通过直接调用已有的带参数函数,通过lambda表达式向线程传参。3、使用thread.start(object parameter)的方法。其中,第二种方法与第一种方法其实

2016-12-11 17:36:28 6106

原创 【C#】39. 前台线程与后台线程

这篇文章主要介绍一下前台线程后后台线程的区别:进程会等待前台线程结束后才能结束,而不会理会后台线程的执行状况。显示创建的线程默认情况下都是前台线程,除非手动设置 IsBackground = True。using System;using System.Threading;namespace Chapter1.Recipe7{class Program{static vo

2016-12-11 15:33:08 1301

原创 【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 6364

原创 【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 12722

原创 【C#】36. 多线程基础(1) Thread Start、Sleep

C#多线程基础

2016-12-11 13:09:47 2639

原创 【批处理】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 2801

原创 【VBA】34. 一个简单的VBA宏(含按钮)

一个VBA的小程序

2016-10-05 09:17:58 11491

原创 【C#】33. 使用XAPI进行程序化交易

最近一直在研究CTP和XAPI接口的东西,一方面是工作需要,一方面是自己兴趣所在。在网上也找了很多资料,但说实话确实没有很详实的材料。在自己的不断试错中,逐渐摸索到了一点规律。在此基础上,我写了一个很简单的winform程序,主要用来下单,同时又配合simnow快期软件来进行监控,最终效果如下:初步设计能够通过市价下单,并且查询到下单回报,同时还可以查询到持仓。但是XAPI在实

2016-07-23 10:03:42 2471 1

rpi-apache-hive-3.1.2-src.tar.gz

HIVE 源代码文件,针对树莓派进行过修改,在standalone-metastore/pom.xml中增加 protocCommand属性为本地protoc执行文件路径 /opt/protobuf/protobuf-2.5.0/bin/protoc的节点

2020-07-13

rpi-hive-3.1.2.tar.gz

用树莓派4B编译apache官网的最新HIVE源文件,供大家下载使用。编译这个比较吃内存,多次出现JAVA HEAP SIZE问题。

2020-07-13

rpi-hadoop-3.2.1.tar.gz

用树莓派4B编译apache官网的最新HADOOP源文件,供大家下载使用。由于树莓派使用的是arm架构,而官网给的编译后文件都是基于X86架构,且为64位,故编译过程较为艰难。

2020-07-08

rpi-hadoop-3.2.1-src.tar.gz

对于官方源码中个别文件进行了调整,1、 find . -name "*.cmake" | xargs grep "mfloat-abi" 将softfp改为hard 2、打补丁 HADOOP-11505.001.patch

2020-07-06

树莓派 4 B hadoop编译文件下载 hadoop-3.2.1.tar.gz

由于树莓派4用的是32位armv7架构,因此apache网站上的hadoop文件无法使用,只能自行编译,但编译过程十分坎坷,故分享此编译文件。

2020-07-06

GAC_MSIL.rar

sqlserver 2008版本用到的STrace.dll和SqlTDiagM。注意,需要拷贝到C:\Windows\assembly下。

2020-02-09

Visual Studio 2010 Tools for Office Runtime 10.0.40303.0

MS官网上的 VSTO office runtime是10.0.6的,但是在XP环境下是有bug的,无法运行。因此要使用旧版本的runtime来解决这一问题。楼主在开发Excel插件时需要使用到该工具。

2017-11-03

VBA网页数据提取(汇率数据)

自动提取http://www.x-rates.com/中的汇率数据

2013-04-22

空空如也

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

TA关注的人

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