小编ljb*_*ade的帖子

如何查看Linux共享库导出的函数列表?

我想在Linux上查看共享库的导出函数.

什么命令允许我这样做?

(在Windows上我使用的程序取决于)

linux export shared-libraries

176
推荐指数
4
解决办法
17万
查看次数

如何确保已重写的方法已同步

我有一类线程安全的公共代码.

该类中的一个方法是抽象的,需要为不同的实现重写.

我需要确保或至少向其他开发人员标记此方法的所有实现都需要是线程安全的.

做这个的最好方式是什么?

这个效果有关键字或注释吗?

我已经尝试过,abstract synchronized但不允许使用关键字组合.

java synchronization class thread-safety synchronize

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

如何让WiX主要升级工作?

我正在努力在WiX中启用主要的升级功能.

我希望安装程序的每个新版本都是主要升级(完全卸载,然后是新安装),因为我们不需要不同的升级和干净安装版本.

我开始试图使用标签的东西,但我一直得到"另一个版本已安装." 运行安装程序时出现错误消息.

所以我实现了V3.5中添加的新标签,使升级更容易.我仍然收到错误消息.

然后,我在某处读到您需要更改每个新版本的Id GUID.所以我设置Id ="*"来让WiX生成它们.

现在,当我安装较新版本时,它不会卸载旧版本,最终会对同一文件夹进行两次安装.我解决了这个问题,因为运行MSI(新的或旧的)会调出修复/删除屏幕.

该程序也没有被新版本覆盖.

这是我的WiX脚本的开始:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

    <Product Id="*"
             Name="Foo"
             Language="1033"
             Codepage="1252"
             Version="!(bind.FileVersion.Foo.exe)"
             Manufacturer="Foo Bar Ltd."
             UpgradeCode="dac2fab2-7d76-4e47-b25f-0748380dab81">

        <Package
                 Description="Foo"
                 Comments="This installer database contains the logic and data required to install Foo."
                 InstallerVersion="300"
                 Languages="1033"
                 SummaryCodepage="1252"
                 Platform="x86"
                 Compressed="yes" />

        <!-- Remove older versions -->
        <!-- Important note: MSI ignores the last version digit 1.0.0.? when comparing versions, so always change at least the 3rd digit for new external releases-->
        <MajorUpgrade DowngradeErrorMessage="The version currently …
Run Code Online (Sandbox Code Playgroud)

windows-installer wix upgrade

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

为什么GCC不能自动矢量化这个循环?

我试图优化一个占我程序计算时间很多的循环.

但是当我使用-O3 -ffast-math -ftree-vectorizer-verbose = 6 GCC输出打开自动矢量化时,它无法对循环进行矢量化.

我正在使用GCC 4.4.5

代码:

/// Find the point in the path with the largest v parameter
void prediction::find_knife_edge(
    const float * __restrict__ const elevation_path,
    float * __restrict__ const diff_path,
    const float path_res,
    const unsigned a,
    const unsigned b,
    const float h_a,
    const float h_b,
    const float f,
    const float r_e,
) const
{
    float wavelength = (speed_of_light * 1e-6f) / f;

    float d_ab = path_res * static_cast<float>(b - a);

    for (unsigned n = a …
Run Code Online (Sandbox Code Playgroud)

c++ gcc vectorization

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

如何将值与给定的对齐方式对齐

我有一个值,我想要对齐给定的对齐,即如果尚未对齐,则将值增加到对齐的下一个倍数.

在C++中执行此操作的简洁方法是什么?

例如

int x;
int alignment;
int y = ???; // align x to alignment
Run Code Online (Sandbox Code Playgroud)

c++ math

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

递归地将线程添加到Java线程池

我正在为我的Java并发课程编写一个教程.目标是使用线程池并行计算素数.

该设计基于Eratosthenes的Sieve.它有一个n个bool数组,其中n是你要检查的最大整数,数组中的每个元素代表一个整数.True是素数,false是非素数,数组最初都是真的.

线程池使用固定数量的线程(我们应该试验池中的线程数并观察性能).

给一个线程一个整数倍来处理.然后线程找到数组中第一个不是线程整数倍数的真元素.然后,线程在线程池上创建一个新线程,该线程被赋予找到的号码.

形成新线程后,现有线程继续将数组中所有整数的整数设置为false.

主程序线程以整数'2'启动第一个线程,然后等待所有生成的线程完成.然后它会吐出素数和计算所需的时间.

我遇到的问题是线程池中的线程越多,1个线程最快的线程就越慢.它应该变得更快而不是更慢!

互联网上有关Java线程池的所有内容都会创建n个工作线程,然后主线程等待所有线程完成.我使用的方法是递归的,因为worker可以生成更多的工作线程.

我想知道出了什么问题,以及是否可以递归使用Java线程池.

java concurrency multithreading threadpool

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

将ServiceLoader配置文件放在Web应用程序中的位置

我正在Eclipse中编写一个Web应用程序.

我正在尝试使用ServiceLoader类来加载一些插件.

ServiceLoader的文档说我需要在META-INF/services中放置一个文件.

我已将文件放在WebContent/META-INF/service文件夹中,但是当我通过Eclipse运行JUnit测试时,它找不到任何插件.

这是文件的正确位置吗?

另外,如何从ServiceLoader获取更多调试信息,例如它正在搜索文件的文件夹?

java eclipse serviceloader

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

用于接受有效主机名,IPv4或IPv6地址的Java正则表达式

任何人都有一个好的(最好是经过测试的)正则表达式,只能使用有效的DNS主机名,IPv4或IPv6地址?

java regex hostname ipv4 ipv6

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

使用numpy和matplotlib的和而不是计数的直方图

我有一些数据,每行有两列.在我的情况下,工作提交时间和地区.

我已经使用了matplotlib的hist函数来生成一个图表,该图表在x轴上按天分箱,在y轴上每天计数:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import datetime as dt

def timestamp_to_mpl(timestamp):
    return mpl.dates.date2num(dt.datetime.fromtimestamp(timestamp))

nci_file_name = 'out/nci.csv'
jobs = np.genfromtxt(nci_file_name, dtype=int, delimiter=',', names=True, usecols(1,2,3,4,5))

fig, ax = plt.subplots(2, 1, sharex=True)
vect_timestamp_to_mpl = np.vectorize(timestamp_to_mpl)
qtime = vect_timestamp_to_mpl(jobs['queued_time'])
start_date = dt.datetime(2013, 1, 1)
end_date = dt.datetime(2013, 4, 1)
bins = mpl.dates.drange(start_date, end_date, dt.timedelta(days=1))
ax[0].hist(qtime[jobs['charge_rate']==1], bins=bins, label='Normal', color='b')
ax[1].hist(qtime[jobs['charge_rate']==3], bins=bins, label='Express', color='g')
ax[0].grid(True)
ax[1].grid(True)
fig.suptitle('NCI Workload Submission Daily Rate')
ax[0].set_title('Normal Queue')
ax[1].set_title('Express Queue')
ax[1].xaxis.set_major_locator(mpl.dates.AutoDateLocator())
ax[1].xaxis.set_major_formatter(mpl.dates.AutoDateFormatter(ax[1].xaxis.get_major_locator())) …
Run Code Online (Sandbox Code Playgroud)

python numpy sum matplotlib histogram

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

tlbexp.exe更改方法名称的大小写

我有一个相当奇怪的问题.我正在从C#库导出一个接口到COM.我已启用'注册COM'项目设置,因此它调用tlbexp.exe来创建类型库.

我们在方法名称上使用驼峰大小写,并且我注意到导出的类型库将这些碰巧与类名称重合的方法更改为Pascal大小写...

例如

interface IFoo
{
void randomClass()
}

class RandomClass
{
}
Run Code Online (Sandbox Code Playgroud)

lib类型中导出的IFoo定义了IFoo-> RandomClass()而不是IFoo-> randomClass()

关于是什么原因以及如何阻止它的任何想法?

c# com interop tlbexp typelib

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