小编Jac*_*rry的帖子

使用带有并行流的forEachOrdered的好处

Oracle官方文档说:

请注意,如果对并行流使用forEachOrdered等操作,则可能会失去并行性的好处. Oracle - 并行性

forEachOrdered如果我们失去并行性,为什么有人会使用并行流呢?

java java-8

9
推荐指数
1
解决办法
1129
查看次数

验证富文本结构 RTF

MS Exchange / Outlook 消息使用 MAPI 存储数据。一个常见的 MAPI 属性包含消息正文的富文本版本(0x1009、PR_RTF_COMPRESSED、PidTagRtfCompressed)。如果富文本字符串具有无效结构,则 Outlook 2003 及更早版本将无法显示任何正文内容。

例如,这个 RTF 代码省略了一个结束的“}”。

{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 asdfasdf\par
Run Code Online (Sandbox Code Playgroud)

正确的版本是

{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 asdfasdf\par
}
Run Code Online (Sandbox Code Playgroud)

是否有可用于测试 RTF 代码是否有效的 .NET 方法或库?如果没有,我对 C++ 和 Java 或 COM 库持开放态度。如果没有,是否有应用程序报告 RTF 字符串中的违规行为?

理想的解决方案是报告包含不规则的行号。一个适当的解决方案将报告整个 RTF 是否有效且格式良好。

此问题在 MAPI 之外是相关的。例如,如果将上面指定的无效 RTF 字符串写入 .RTF 文件,它会在 WordPad 5.1 中正确打开,但 Word 2007 会报告错误并请求我修复该文件。


一个建议是我将 RTF 流式传输到富文本框中。我试过这个代码:

private void button1_Click(object sender, EventArgs e)
        {
            string aaa = richTextBox1.Rtf;
            richTextBox1.Rtf = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}}{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 asdfasdf\par}";
            richTextBox1.Refresh(); …
Run Code Online (Sandbox Code Playgroud)

mapi rtf richtext

5
推荐指数
1
解决办法
4094
查看次数

解密Lotus Notes NSF

我想以编程方式解密 Lotus Notes NSF 文件。假设对于每个 NSF,我都有访问 NSF 所需的 ID 文件和密码。

我使用的是 Lotus Notes 8.5.2、Windows 7 SP1 64 位。我愿意使用 COM、C++ API 或 C API。

我知道 C API 函数NSFDbIsLocallyEncrypted,它报告 NSF 是否已加密。但是,我不相信它能够解密 NSF。

我知道 C++ API 函数LNNotesSession.CreateDatabaseCopy,它采用参数 3 DBOptions,其中有一个我可以设置为的成员 DBOptions.SetLocalEncryption( LNLOCALENCRYPTION::LNLOCALENCRYPTION_NONE )。然而,这个函数创建了一个新的 NSF。如果可能的话,我想就地解密源 NSF 以节省时间和磁盘空间。

如何从 NSF 中删除本地加密?

lotus-notes lotus lotus-domino interop-domino

3
推荐指数
1
解决办法
8889
查看次数

在C#中应用程序结束之前,计时器不会触发

我在C#中有一个简单的控制台应用程序,它创建一个计时器来向控制台写入文本.然后它等待用户按下一个键.

如果用户在五秒钟之前按下一个键,则应用程序结束,并且计时器永远不会触发.如果用户没有按任何键,则计时器将按预期触发.

为什么计时器创建的线程不会阻止应用程序终止?即使用户按下某个键,我应该如何确保应用程序继续运行?

static void Main(string[] args)
    {
        System.Timers.Timer timer = new System.Timers.Timer(5000);
        timer.Interval = 5000; // 5 seconds
        timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
        timer.Enabled = true;
        timer.AutoReset = true;
        timer.Start();
        Console.ReadKey();
    }

    public static void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        Console.WriteLine("Timer Fired.");
    }
Run Code Online (Sandbox Code Playgroud)

c# multithreading timer

3
推荐指数
1
解决办法
142
查看次数

将字符串从Native C++ DLL传递到C#App

我用C++编写了一个DLL.其中一个函数写入字符数组.

C++函数

EXPORT int xmain(int argc, char argv[], char argv2[])
{
    char  pTypeName[4096];
    ...
    //Other pTypeName ends up populated with "Portable Network Graphics"
    //This code verifies that pTypeName is populated with what I think it is:
    char szBuff[64];
    sprintf(szBuff, pTypeName, 0);
    MessageBoxA(NULL, szBuff, szBuff, MB_OK);
    //The caption and title are "Portable Network Graphics"

    ...
    //Here, I attempt to copy the value in pTypeName to parameter 3.
    sprintf(argv2, szBuff, 0);

    return ret;
}
Run Code Online (Sandbox Code Playgroud)

C#导入

    //I believe I have to use CharSet.Ansi …
Run Code Online (Sandbox Code Playgroud)

c# c++ string dllimport visual-studio-2008

2
推荐指数
1
解决办法
1万
查看次数

numpy 矩阵乘法 nxm * mxp = nxp

我正在尝试将两个 numpy 数组作为矩阵相乘。我期望 ifA是一个n x m矩阵并且B是一个m x p矩阵,那么A*B会产生一个n x p矩阵。

此代码创建一个 5x3 矩阵和一个 3x1 矩阵,如shape属性所验证。我小心翼翼地创建了两个二维数组。最后一行执行乘法,我期望一个 5x1 矩阵。

A = np.array([[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5]])
print(A)
print(A.shape)
B = np.array([[2],[3],[4]])
print(B)
print(B.shape)
print(A*B)
Run Code Online (Sandbox Code Playgroud)

结果

[[1 1 1]
 [2 2 2]
 [3 3 3]
 [4 4 4]
 [5 5 5]]
(5, 3)
[[2]
 [3]
 [4]]
(3, 1)

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-38-653ff6c66fb7> in <module>()
      5 print(B)
      6 print(B.shape)
----> …
Run Code Online (Sandbox Code Playgroud)

python numpy matrix linear-algebra matrix-multiplication

2
推荐指数
1
解决办法
5618
查看次数

熊猫-将列名称添加到groupby的结果中

我想DataFrame在Python 3.6 中将列名添加到groupby的结果中。

我尝试了这段代码:

import pandas as pd
d = {'timeIndex': [1, 1, 1, 1, 2, 2, 2], 'isZero': [0,0,0,1,0,0,0]}
df = pd.DataFrame(data=d)
df2 = df.groupby(['timeIndex'])['isZero'].sum()
print(df2)
Run Code Online (Sandbox Code Playgroud)

结果

timeIndex
1    1
2    0
Name: isZero, dtype: int64
Run Code Online (Sandbox Code Playgroud)

看起来像是timeIndex列标题,但是尝试按名称寻址列会产生异常。

df2['timeIndex']
# KeyError: 'timeIndex'

df2['isZero']
# KeyError: 'isZero'
Run Code Online (Sandbox Code Playgroud)

我正在寻找这个结果。

df2 

     timeIndex    isZero
0    1    1
1    2    0

df2['isZero']

0    1
1    0
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas pandas-groupby

2
推荐指数
1
解决办法
3718
查看次数

在C#中使用托管结构的大小

我试图将C++代码移植到C#.该代码用于注册窗口类RegisterClassEx.

C++代码有一个对象WNDCLASSEX wcex.对象wcex有一个属性

wcex.cbSize = sizeof(WNDCLASSEX);
Run Code Online (Sandbox Code Playgroud)

在C#中,我将结构定义为

    [StructLayout(LayoutKind.Sequential)]
    public struct WNDCLASSEX
    {
        public uint cbSize;
        public uint style;
        [MarshalAs(UnmanagedType.FunctionPtr)]
        public PlatformInvokeGDI32.WNDPROC lpfnWndProc;
        public int cbClsExtra;
        public int cbWndExtra;
        public IntPtr hInstance;
        public IntPtr hIcon;
        public IntPtr hCursor;
        public IntPtr hbrBackground;
        public string lpszMenuName;
        public string lpszClassName;
        public IntPtr hIconSm;
    }
Run Code Online (Sandbox Code Playgroud)

我试图使用大小

wcex.cbSize = (uint)sizeof(WNDCLASSEX);
Run Code Online (Sandbox Code Playgroud)

包含此stament的函数声明为

unsafe private void
Run Code Online (Sandbox Code Playgroud)

我希望unsafe这会使法规有效.但是,我在IDE中收到此错误:

Cannot take the address of, get the size of, or declare a pointer …

c# unmanaged managed sizeof

1
推荐指数
1
解决办法
2189
查看次数

Lotus Notes复制文档 - 保留折叠和未读

我在C#中构建了一个应用程序,它将文档从源NSF复制到目标NSF.目标NSF是一个空壳,保留所有设计元素,基于源NSF.我正在使用Lotus Notes 8.5.3并且未连接到Domino服务器.

我使用此应用程序将源NSF拆分为较小的块.目标是创建可由我们的自动(eDiscovery)系统有效处理的目标NSF.我需要确保保留尽可能多的元数据.

我现有的代码符合这些目标,但(1)我丢失了文件夹信息.复制文档后,所有文件夹都为空.(2)所有文件都标记为已读,即使它们在源中未读.

代码C#

//Establish session
NotesSession ns = new Domino.NotesSessionClass();
ns.Initialize("");

//Open source NSF
NotesDatabase nd = ns.GetDatabase("", "test.nsf", false);
//Open destination NSF.
//Assume that all design elements of nd2 are identical to those of nd
NotesDatabase nd2 = ns.GetDatabase("", "test2.nsf", false);

//Create view that returns all documents.
NotesView nView2 = nd.GetView("$All");
nd.CreateView("All-DR", "SELECT @ALL", nView2, false);
NotesView nView = NotesConnectionDatabase.GetView("All-DR");

//Loop through entries in the new view
NotesViewEntry nvec = nView.AllEntries;
nve = nvec.GetFirstEntry();

for (int …
Run Code Online (Sandbox Code Playgroud)

c# com lotus-notes lotus lotus-domino

1
推荐指数
1
解决办法
1667
查看次数

C++代码使用.cpp源编译,但不是.c

在Visual Studio 2008中,使用C++,我尝试使用http://msdn.microsoft.com/en-us/library/ms235636.aspx上的说明构建DLL ,除了我命名了一个扩展名为"."的源文件. c"而不是建议的".cpp".

扩展名为.c时,编译器会抛出37个错误.扩展名为.cpp,DLL构建成功.

源文件的扩展有何不同?

这是完整的代码:

// MathFuncsDll.cpp
// compile with: /EHsc /LD

#include "MathFuncsDll.h"

#include <stdexcept>

using namespace std;

namespace MathFuncs
{
    double MyMathFuncs::Add(double a, double b)
    {
        return a + b;
    }

    double MyMathFuncs::Subtract(double a, double b)
    {
        return a - b;
    }

    double MyMathFuncs::Multiply(double a, double b)
    {
        return a * b;
    }

    double MyMathFuncs::Divide(double a, double b)
    {
        if (b == 0)
        {
            throw new invalid_argument("b cannot be zero!");
        }

        return a …
Run Code Online (Sandbox Code Playgroud)

c++ file-extension visual-studio-2008

0
推荐指数
1
解决办法
136
查看次数

angularjs - ng-repeat 未在数组更新时更新

我的 AngularJS 应用程序使用ng-repeat. AngularJS 发出 GET 请求,检索一个数组。该表正确显示了数组的元素。

该页面包含一个调用函数来修改数组的按钮。但是,该表不会更新以反映修改后的数组。

我已经尝试过以下方法:

  • $scope.apply()更新后打电话。
  • 将更新包含在传递给 的函数$scope.apply()$scope.apply(function...)关联
  • 使用$timeout 链接

这些尝试都没有奏效。此外,我相信这就是ng-repeatapply()本身。

AngularJS

<script>
    var app2 = angular.module('myApp2', []);

    app2.controller('StocksController', function ($scope, $http, $timeout) {
        // When the page loads...
        // Load myData with REST GET
        $http.get("http://example.com/exWebAPI/api/Ticker/").then(function (response) {
            $scope.myData = response.data;
        });

        // Update the array
        $scope.SendData = function () {
            alert('Hello from SendData.');
            $scope.myData.splice(0, 2);
            $scope.$apply();
        };

    });
</script>
Run Code Online (Sandbox Code Playgroud)

超文本标记语言

<div ng-app="myApp2" …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

0
推荐指数
1
解决办法
2614
查看次数