标签: shared

程序在Windows中查看共享内存?

我正在寻找一个程序来查看和浏览Windows x32/x64中的(本地)共享内存.

我知道这是存在的,因为我之前已经看过它了.出于某种原因谷歌和MSDN在这个问题上让我失望.

windows shared shared-memory

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

跨域的PHP共享会话

我在SOF上看到了一些答案,但其中大多数都关注子域的使用,其中没有一个对我有用.常见的是使用session.cookie_domain,根据我的理解,只能使用子域.

我感兴趣的是一个处理完全不同域的交易的解决方案(并包括子域的可能性).不幸的是,项目截止日期是他们的,时间不在我身边,所以我转向SOF的专业知识和经验.

当前项目简介是能够登录到当前仅存储user_id在会话中的一个站点,然后能够在同一服务器环境中的不同域上检索此值.会话数据是从作为session id主键的数据库中存储/检索的.

我希望找到一个"轻松"和"轻松"实施解决方案.

该系统正在使用内部模型视图控制器设计模式,因此所有请求(包括不同的域)都通过单个引导脚本运行.使用域名作为变量,这将确定要向用户显示的上下文.

确实看起来有潜力的一个选项是使用隐藏图像并使用alt标签来设置user id.我的第一印象表明,这似乎"太容易"(如果可能的话)并且充满了安全漏洞.涉诉?

我考虑的另一个选项是使用IP和用户代理进行身份验证,但我觉得由于共享网络和更改IP地址,这不会是一个可靠的选择.

我考虑过但尚未见过的第三个选项(也是首选)是htaccess用来欺骗用户认为当inform apache重定向时他们在不同的域上; 就像是

www.foo.com/index.php?domain=bar.com&controller=news/categoires/1
但是向用户显示为
www.bar.com/news/categories/1

foo.com表示所有请求都通过的"主站点域",并且bar.com是用户认为他们正在访问的域.控制器请求指示所请求的页面和视图.这可能吗?

还有其他选择吗?优点缺点?

提前致谢!!!

php dns .htaccess session shared

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

在共享库中使用全局变量

我在C中编写一个使用全局变量(日志文件结构)的应用程序.在我的应用程序中,我在运行时动态加载共享库,我想使用指向相同日志文件结构的全局变量来记录共享库.

这似乎不太可能采用简单的方法:

  • 将全局变量声明为extern将不起作用,因为dlopen()sas表示全局变量是未定义的符号
  • 再次定义全局变量将起作用,但"new"变量将不同于可执行文件中的"原始"变量

任何暗示如何解决这个问题都会很棒.

谢谢!

c unix shared shared-libraries

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

Tomcat Web应用程序之间的共享缓存

我正在寻找一种在不同主机上运行的两个tomcat web应用程序之间共享缓存的解决方案.缓存用于数据同步,因此必须保证缓存在两个tomcat实例之间始终保持最新.(对不起,我不是100%确定这个要求的正确术语是"一致性"还是更具体的术语,如具有ACID属性).另一个要求当然是它应该快速访问缓存,其读写次数与读取次数相同.我确实可以访问共享文件系统,因此这是一个考虑因素.

我看过像ehcache这样的东西,但是为了在webapps之间获得共享缓存,我需要在Terracotta环境之上实现或使用新的ehcache缓存服务器.前者(Terracotta)似乎有点矫枉过正,而缓存Web服务器似乎无法提供我想要的快速性能.

我看到的另一个解决方案是在Redis或memcachedb等快速键值存储上构建简单的东西.Redis是内存中的,但可以很容易地配置为集中式缓存,而memcachedb是一个基于磁盘的持久缓存,可以工作,因为我有一个共享文件系统.

我正在寻找有关如何最好地解决这个问题的建议.该解决方案需要是一种相对成熟的技术,因为它将用于生产环境.

提前致谢!

java tomcat synchronization caching shared

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

运行时C++链接器缺少库(SONAME行为)

我已经制作了一个程序,它使用了两个共享库(我编译过)并且放置如下:

/home_directory_where_I_compile_and_run_everything
-->/lib/libjson_linux-gcc-4.4.6_libmt.so
-->/lib/libre2.so.0
Run Code Online (Sandbox Code Playgroud)

当我编译我的程序时,我将这些库的相对位置传递给链接器,如下所示:

g++ ...... stuff ........ my_program.cc lib/libjson_linux-gcc-4.4.6_libmt.so lib/libre2.so.0
Run Code Online (Sandbox Code Playgroud)

并且它编译得很好,但是在运行程序时它无法找到libre2.so,如果我用ldd检查它,这是发生了什么:

....
lib/libjson_linux-gcc-4.4.6_libmt.so (0x00007f62906bc000)
libre2.so.0 => not found
....
Run Code Online (Sandbox Code Playgroud)

显然,它确实承认libjson上的路径是相对的,但它在libre2.so.0上没有这样做(它修剪了所有路径,只留下了libre2.so.0)

有人能告诉我为什么会这样吗?

另外,有没有办法通过g ++参数修改它?

最好.

*更新*哇看看这个!我已经将libre2.so.0的名称更改为stuff.so,然后尝试编译基本相同,如下所示:

g++ ...... stuff ........ my_program.cc lib/libjson_linux-gcc-4.4.6_libmt.so lib/stuff.so
Run Code Online (Sandbox Code Playgroud)

它无论如何都会失败; 不仅它失败了,它失败了,因为它找不到"libre2.so.0".

Whyyy?

*更新#2*

输出为 readelf -d the_program.o

0x0000000000000001 (NEEDED)             Shared library: [lib/libjson_linux-gcc-4.4.6_libmt.so]
0x0000000000000001 (NEEDED)             Shared library: [libre2.so.0]
Run Code Online (Sandbox Code Playgroud)

现在,如果我可以将[libre2.so.0]改为[lib/libre2.so.0],那就没关系了.

*更新#3*

正如@troubadour发现:

当可执行文件与具有DT_SONAME字段的共享对象链接时,则在运行可执行文件时,动态链接器将尝试加载由DT_SONAME字段指定的共享对象,而不是使用为链接器指定的文件名.

这就是为什么它适用于libjson .....所以而不是libre2.so.0.(libjson .....所以没有SONAME的条目).

我终于找到了我正在寻找的确切问题:

有没有办法告诉gcc链接器忽略共享库文件上的SONAME条目,而是链接到特定的文件路径?

c++ linker shared g++

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

用cmake构建库

我为打扰你们而道歉,但我对cmake有一点编译问题.

我有一个CMakeLists.txt文件,我用它来构建一个测试可执行文件和一个共享库.它们都依赖于另一个库(SFML).

我在MinGW的窗口上使用cmake.

我知道我正在构建的lib的名称与sfml有点混淆,但它应该是一个SFML包装器,所以,我找不到更好的名字!

这里是CMakeLists.txt

cmake_minimum_required(VERSION 2.6)
project(projectName)

set(EXECUTABLE_NAME testSFML)
set(LIBRARY_NAME    SFMLwindow)

set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin/)

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include /
${CMAKE_CURRENT_SOURCE_DIR}/../../include
)

link_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../lib/)

file(
    GLOB_RECURSE
    SRC_FILES
    src/*
)

file(
    GLOB_RECURSE
    INCLUDE_FILES
    include/*
)

add_executable(
${EXECUTABLE_NAME}
main.cpp
${SRC_FILES}
${INCLUDE_FILES}
)

target_link_libraries(
    ${EXECUTABLE_NAME}
    sfml-main
    sfml-system
    sfml-window
)


add_library(
${LIBRARY_NAME}
SHARED
${SRC_FILES}
)
Run Code Online (Sandbox Code Playgroud)

我在终端得到了什么:

"C:\MinGW\bin\mingw32-make.exe" 
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/iksemel/docs/WorkBench/programming/projets/TestSFML/cmake
Linking CXX shared library libSFMLwindow.dll
Creating library file: libSFMLwindow.dll.a
CMakeFiles\SFMLwindow.dir/objects.a(SFMLWindow.cpp.obj):SFMLWindow.cpp:(.text+0x59):undefined reference to `_imp___ZN2sf9VideoModeC1Ejjj'
CMakeFiles\SFMLwindow.dir/objects.a(SFMLWindow.cpp.obj):SFMLWindow.cpp:(.text+0xda): undefined reference to `_imp___ZN2sf6WindowC1ENS_9VideoModeERKSsjRKNS_15ContextSettingsE' …
Run Code Online (Sandbox Code Playgroud)

c++ shared build cmake sfml

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

应用重启后,共享首选项不会持久

我在这里找到了所有答案并尝试了所有解决方案,但我的共享首选项仍然没有持久性.

这是我的代码:

public static void setActivated(boolean activated) {
    SharedPreferences sp = Utils.getContext().getSharedPreferences(
            USER_PREFS, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit(); 
    editor.putBoolean(ASD, activated);
    editor.commit();
}

public static boolean isActivated() {
    SharedPreferences sp = Utils.getContext().getSharedPreferences(USER_PREFS, Context.MODE_PRIVATE);
    return sp.getBoolean(ASD, true); 
}
Run Code Online (Sandbox Code Playgroud)

我也试过了:

editor.clear();
editor.put ..
editor.commit();
Run Code Online (Sandbox Code Playgroud)

我也试过了

editor.apply();
Run Code Online (Sandbox Code Playgroud)

我甚至尝试了.apply()和.commit()并没有运气.

另一个想法是尝试使用不同的模式:

...getSharedPreferences(USER_PREFS, Context.MODE_MULTI_PROCESS);
Run Code Online (Sandbox Code Playgroud)

问题是保存的值不是持久的.如果我关闭应用程序然后重新打开它,则值全部错误.

有没有人有任何想法?我还要提到问题只出现在某些设备上,例如HTC One S,三星Galaxy S3(我在不同的S3上测试过,它运行得很好).

编辑:我在按钮单击监听器上调用保存,并在加载片段时调用isActivated(在onViewCreated()之后).

谢谢!

android shared save preferences persistent

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

将Azure CDN与共享访问签名一起使用

我试图合并Azure来存储应用程序的大部分文件.我想将这些文件上传到私有容器和Azure中的私有blob,并将这些上载通过Azure CDN复制到所有其他节点(仍作为私有容器和blob).然后,我希望我的应用程序向存储的blob发出请求,并在一段时间内向blob提供共享访问签名链接.但是,我希望为用户提供最近的数据中心生成的链接.每次需要blob时我都会生成SAS,但是我需要能够使用整个CDN的SAS选项.这甚至可以用于Azure,还是只能将SAS用于一个数据中心?

编辑 我希望我们的CDN好像它是我们主数据中心的副本,所以我不希望CDN对象被删除,除非它们从主数据中心删除.如果我确实创建了一个SAS并将其丢弃在CDN URL的末尾,如果SAS上的过期日期已经过去,而不是缓存持续时间,那么用户是否能够返回并访问该文件?

继承我的榜样:

显然,用户可以在2015年4月1日之前访问此URL,但如果他们在2015年4月2日回来,他们仍然可以访问吗?

另外,假设我确实将blob的缓存控制头设置为与SAS URL同时到期,这也是在缓存持续时间之后.然后,我有一个用户在2015年4月8日回来查找相同的blob,我们会生成一个新的SAS并将其提供给用户,blob是否仍然在CDN上,或者缓存控制头是否会从CDN中删除它?

shared signature azure azure-storage-blobs azure-cdn

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

共享内存和分布式内存的主要区别

关于共享内存分布式内存之间的区别,我有点困惑.你能澄清一下吗?

  1. 是一个处理器的共享内存和许多(网络)分布?

  2. 如果我们有共享内存,为什么我们需要分布式内存?

memory distributed shared cpu-architecture multiprocessing

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

C - 2D动态数组(双指针) - 共享内存

我有两个通过共享内存进行通信的进程(客户端和服务器).

我需要创建一个动态的2D数组(基于参数).数组存储在结构中,然后写入共享段.

我可以将数组写入共享内存,但无法从其他进程中检索它.

客户代码:

struct shared_use_st {
    int     written_by_you;
    int     **PID_PRI_array;
};
            /* Prepare Dynamic 2D array */
        data_store = malloc(/*ROWS*/ 5 * sizeof(int*));
        for(i=0;i<5; i++)
            data_store[i] = malloc(/*COLS*/ 2 * sizeof(int));


        /* Prepare Dynamic 2D array - Shared Memory Seg */
        shared_stuff->PID_PRI_array = malloc(/*ROWS*/ 5 * sizeof(int*));
        for(i=0;i<5; i++)
            shared_stuff->PID_PRI_array[i] = malloc(/*COLS*/ 2 * sizeof(int));


        /* Write PID and PRI to data_store array */
        data_store[0][0] = pid;
        data_store[0][1] = 1;

        data_store[1][0] = 12345;
        data_store[1][1] = 2;

        data_store[2][0] = 12346; …
Run Code Online (Sandbox Code Playgroud)

c memory shared multidimensional-array

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