标签: reusability

C:用pthreads制作poolthread的方法是什么?

我有一个工作队列,我想建立一个4个线程的池,我可以把我的工作.我所坚持的是如何制作线程并在没有工作的情况下让它们暂停.

JOB QUEUE        | job1 | job2 | job3 | job4 | ..

THREAD POOL      | thread1 | thread2 | thread3 | thread4 |
Run Code Online (Sandbox Code Playgroud)

要创建我目前处于初始化点的线程:

for (t=0; t<num_of_threads; t++){
    pthread_create(&(threads[t]), NULL, doSth2, NULL);
}
Run Code Online (Sandbox Code Playgroud)

num_of_threads = 4且doSth2是一个内部没有任何内容的函数.所以一旦我创建了4个线程并且完成了doSth2,我怎么能给他们新的工作呢,而不会杀死他们?

c pthreads reusability threadpool

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

我应该跨多个微服务共享模型吗?

我正处于一个大项目的分析阶段,该项目将使用微服务架构创建。我非常有信心(至少在未来 3 年)整个代码库将用 TypeScript 编写,并且大多数模型将在这些服务之间使用。

我计划使用微服务来构建它,因为每个模块都将是一个单独的 API,它将拥有其 REST 端点来处理与其职责相关的任务。例如,身份服务将处理注册、身份验证、令牌更新等......

我计划将每个服务创建为独立的 NestJS 项目。及其存储库、包、依赖项等......

但我有一个疑问:

这些服务是否应该在内部声明每个模型?即使它可能是在另一个服务中声明的相同模型?这可能会导致项目之间出现大量代码重复,对吗?

如果他们不这样做,并且他们应该定义模型的只读子集,其中仅包含他们需要的属性,那么当“源”模型发生更改时,哪一个是在不同服务之间保留子集更改的最佳方法?假设服务A定义了模型X,服务B使用X的一个子集(称为X1 ),服务B使用X的另一个子集(称为X2 )。每当某个属性可能发生更改(被删除、更改类型、名称或其他)时,当这些项目可能有 10 个、20 个或更多时,哪种方法是在每个项目之间保持此更改同步的最佳方法?

我很困惑,因为据我所知,微服务应该是独立的,并且拥有它运行所需的一切,所以遵循这个逻辑让我认为服务应该重新声明原始模型的相同副本或子集,住在另一个服务中。

但从代码重复的角度来看,这似乎是一种自杀,因为第一年我将是唯一一个从事这些项目的人。

我知道微服务架构更适合开发团队,但是团队会来,所以在不久的将来可能会有 3/4 的人在做它,每个人都会有几个服务需要维护和维护发展。

在此先感谢任何愿意帮助我解决这个疑问的人!

architecture software-design reusability

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

多个WCF服务引用相同的数据协定

我正在构建一组共享公共数据合同(或者您喜欢的实体)的WCF服务.这些是使用DataContract和DataMember属性修饰的简单数据传输对象.我明确指定了名称和命名空间.在尝试遵循IDesign建议平均每个服务合同12个成员的原则时,我将我的服务项目分解为多个服务.

我的数据合同是在一个单独的程序集中,如果他们使用.Net,我可以提供给我们的客户.他们可以告诉他们的服务引用在引用的程序集中重用类型.但是,如果他们不使用.net并且他们使用两个使用相同实体的服务,那么他们将会得到一个含糊不清的参考消息.如果我没有引用数据协定dll,我可以在Visual Studio中看到这个.

我的问题是,我可以在我的服务中做些什么,或者他们可以在客户端应用程序中做什么来解决数据合同来自哪个代理?

service wcf datacontract reusability

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

UICollectionView不重用单元格

我在重用单元格和UICollectionViewiOS 7上遇到了问题.我的代码在iOS 6上工作正常,但在iOS 7中,它在调用后不重用单元格dequeueReusableCellWithReuseIdentifier(不要调用prepareForReuse).

即使这个代码https://developer.apple.com/library/ios/samplecode/CollectionView-Simple/Introduction/Intro.html#//apple_ref/doc/uid/DTS40012860也不会重复使用iOS7上的单元格(但在iOS6上运行良好) ),每dequeueReusableCellWithReuseIdentifier创建一个新单元格并释放旧单元格.是否有一些新的东西阻止细胞重复使用?

我的细胞足够大,不再重复使用它们效率很低.我注意到iOS 7上的延迟,但iOS 6上没有,因为它们没有在iOS 7中重复使用.

cocoa-touch reusability uicollectionview uicollectionviewcell ios7

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

CodeIgniter有插件/扩展/模块吗?

我正在寻找一些PHP框架,并注意到它们都以各种形式提供可重用,社区贡献的代码:

- Symfony 2(捆绑包):http://knpbundles.com/
- Zend Framework 2(模块):http://modules.zendframework.com/
- CakePHP(插件):http://plugins.cakephp.org/
- Yii框架(扩展):http://www.yiiframework.com/extensions/

但是我找不到Code Igniter的任何东西(我在这篇SO帖子中看到Code Igniter曾经有插件被帮助器取代,但当我谷歌搜索"Code Igniter helpers"或"Code Igniter插件"时我不能找到任何存储库).

Code Igniter社区贡献和可重用库的名称是什么?你能共享一个到他们主存储库的链接吗?

plugins codeigniter reusability

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

在循环c ++中重用线程

我需要在C++程序中并行化一些任务,并且对并行编程来说是全新的.到目前为止,我通过互联网搜索取得了一些进展,但现在有点卡住了.我想在循环中重用一些线程,但显然不知道如何做我正在尝试的东西.

我从计算机上的两个ADC卡(并行获取)中获取数据,然后我需要对收集的数据(并行处理)执行一些操作,同时收集下一批数据.这是一些伪代码来说明

//Acquire some data, wait for all the data to be acquired before proceeding
std::thread acq1(AcquireData, boardHandle1, memoryAddress1a);
std::thread acq2(AcquireData, boardHandle2, memoryAddress2a);
acq1.join();
acq2.join();

while(user doesn't interrupt)
{

//Process first batch of data while acquiring new data
std::thread proc1(ProcessData,memoryAddress1a);
std::thread proc2(ProcessData,memoryAddress2a);
acq1(AcquireData, boardHandle1, memoryAddress1b);
acq2(AcquireData, boardHandle2, memoryAddress2b);
acq1.join();
acq2.join();
proc1.join();
proc2.join();
/*Proceed in this manner, alternating which memory address 
is written to and being processed until the user interrupts the program.*/
}
Run Code Online (Sandbox Code Playgroud)

这是它的主要要点.循环的下一次运行将写入"a"内存地址,同时处理"b"数据并继续交替(我可以获取代码来执行此操作,只是将其取出以防止混乱问题).

无论如何,问题(我确信有些人已经知道)是我第二次尝试使用acq1和acq2时,编译器(VS2012)说"IntelliSense:没有适当的操作符调用类类型的对象( )或转换函数到指针到函数类型".同样,如果我将std :: thread再次放在acq1和acq2之前,它会显示"错误C2374:'acq1':重新定义;多次初始化".

所以问题是,我可以在完成上一个任务后将线程重新分配给新任务吗?我总是等待先前使用线程结束再次调用之前,但我不知道如何重新分配线程,因为它在循环中,我不能每次都创建一个新线程(或者如果我可能,这似乎是浪费和不必要的,但我可能会弄错).

提前致谢

c++ multithreading loops reusability

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

Node.js和MongoDB,重用DB对象

我是Node.js和MongoDB的新手,但我已经设法从SO和mongo的文档中放了一些部分.

Mongo文档给出了一个例子:

// Retrieve
var MongoClient = require('mongodb').MongoClient;

// Connect to the db
MongoClient.connect("mongodb://localhost:27017/exampleDb", function(err, db) {
  if(!err) {
    console.log("We are connected");
  }
});
Run Code Online (Sandbox Code Playgroud)

如果我只需要在一个地方的一个功能中使用DB,这看起来很好.搜索和阅读SO告诉我,我不应该每次都打开一个新连接,而是使用一个池并重用我第一次获得的数据库对象.这个答案在SO上很丰富,但我不知道如何首先获得DB对象,然后如何重用它.

假设我在我的App.js中有上面的Node.js代码,然后我有不同的路由需要在db上运行不同的操作,如:

app.post('/employee', function(req, res){
    //Put req.name in database
});


app.post('/car', function(req, res){
    //Put req.car in database
});
Run Code Online (Sandbox Code Playgroud)

我如何将这两个片段组合成有用的东西?

我在Node.js中发现了一个类似的问题,重用了MongoDB引用,但从它的外观(http://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html)看起来我应该使用MongoClient而不是db().而且我不确定它是否解决了我的问题......

pool object reusability mongodb node.js

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

Razor类库是否也可以打包静态文件(js,css等)?

可能已经重复了这个,但由于那篇文章没有任何答案,我发布了这个问题.

新的Razor类库非常棒,但它无法打包库文件(如jQuery,共享CSS).

我可以以多种方式在多个Razor Page项目中重复使用CSS,使用Razor类库或其他任何东西(我的目的是,多个网站使用相同的CSS,并且单个更改适用于所有项目).

我尝试wwwroot在Razor类库项目中创建该文件夹,但它没有按预期工作(我可以理解为什么).

c# asp.net-mvc reusability asp.net-core razor-pages

17
推荐指数
3
解决办法
3369
查看次数

没有重用表单元格的索引路径

这开始发生了.任何想法:代码:

CUSTOMCLASSNAME(我已经替换了实际的类名,因为它包含客户端的名称.)

初始化我的tableView:

[self.tableView registerClass:[CUSTOMCLASSNAME class] forCellReuseIdentifier:[self reuseIdentifier]];
Run Code Online (Sandbox Code Playgroud)

在行的单元格中:

嗨,标题正在控制台中打印.这是我的cellForRow:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    AVTCheckListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[self reuseIdentifier] forIndexPath:indexPath];

    [self configureCell:cell atIndexPath:indexPath];

    return cell;
}

- (void)configureCell:(AVTCheckListTableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
    ChecklistGroup *group = [self.checklistFetchedResultsController.fetchedObjects objectAtIndex:indexPath.section];

    ChecklistItem *item = [self getChecklistItemForIndexPath:indexPath];

    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
    [[cell cellTextView] setAttributedText:[[item checked] boolValue] ? [[NSAttributedString alloc] initWithString:[item name] attributes:@{ NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle) } ] : [[NSAttributedString alloc] initWithString:[item name]]];
    [[cell cellTextView] setUserInteractionEnabled:[[group isUserDefined] boolValue]];
    [[cell cellTextView] setTag:indexPath.row];
    [[cell cellTextView] setDelegate:self]; …
Run Code Online (Sandbox Code Playgroud)

reusability tableview tableviewcell ios

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

Angular2不适用于Lazy模块加载的自定义重用策略

我尝试在我的angular2项目中使用自定义重用策略,但我发现它不适用于延迟模块加载.谁知道这个?我的项目是角度2.6.4

重用strategy.ts

import {RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle} from "@angular/router";

export class CustomReuseStrategy implements RouteReuseStrategy {

    handlers: {[key: string]: DetachedRouteHandle} = {};

    shouldDetach(route: ActivatedRouteSnapshot): boolean {
        console.debug('CustomReuseStrategy:shouldDetach', route);
        return true;
    }

    store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {
        console.debug('CustomReuseStrategy:store', route, handle);
        this.handlers[route.routeConfig.path] = handle;
    }

    shouldAttach(route: ActivatedRouteSnapshot): boolean {
        console.debug('CustomReuseStrategy:shouldAttach', route);
        return !!route.routeConfig && !!this.handlers[route.routeConfig.path];
    }

    retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {
        console.debug('CustomReuseStrategy:retrieve', route);
        if (!route.routeConfig) return null;
        return this.handlers[route.routeConfig.path];
    }

    shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
        console.debug('CustomReuseStrategy:shouldReuseRoute', future, curr);
        return …
Run Code Online (Sandbox Code Playgroud)

routes lazy-loading reusability angular

16
推荐指数
2
解决办法
4282
查看次数