小编Rod*_*dia的帖子

使用LinkedBlockingQueue的ExecutorService与ThreadPoolExecutor

我正在开发一个多线程项目,我需要生成多个线程来测量我的客户端代码的端到端性能,因为我正在进行负载和性能测试.所以我创建了以下使用的代码ExecutorService.

以下是代码ExecutorService:

public class MultithreadingExample {

    public static void main(String[] args) throws InterruptedException {

        ExecutorService executor = Executors.newFixedThreadPool(20);
        for (int i = 0; i < 100; i++) {
            executor.submit(new NewTask());
        }

        executor.shutdown();
        executor.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS);
    }
}

class NewTask implements Runnable {

    @Override
    public void run() {
        //Measure the end to end latency of my client code
    }   
}
Run Code Online (Sandbox Code Playgroud)

问题陈述:

现在我正在阅读互联网上的一些文章.我发现也有ThreadPoolExecutor.所以我很困惑我应该使用哪一个.

如果我将以上代码替换为:

ExecutorService executor = Executors.newFixedThreadPool(20);
    for (int i = 0; i < 100; i++) …
Run Code Online (Sandbox Code Playgroud)

java multithreading executorservice blockingqueue threadpoolexecutor

48
推荐指数
3
解决办法
4万
查看次数

片段onCreateView()包.它从何而来?

我通过常规方式开始活动:

Intent startIntent = new Intent(this, DualPaneActivity.class);
startIntent.putExtras(((SearchPageFragment) currentFragment).getPageState());
startActivity(startIntent);
Run Code Online (Sandbox Code Playgroud)

加载此活动时,它会将Fragment放在框架中,如下所示:

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();   
Fragment currentFragment = fragment;
currentFragment.setArguments(getIntent().getExtras());
transaction.replace(R.id.singlePane, currentFragment);  
transaction.commit();
Run Code Online (Sandbox Code Playgroud)

看似简单吧?

但是,您可以在onCreateView()方法内部访问三个单独的包(如果包含Fragment中包含的包,则为四个onCreate(Bundle savedInstanceState)):

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{
    // Fill state information
    Bundle bundle;
    if(savedInstanceState != null)  bundle = savedInstanceState; // 1       
    else if(getArguments() != null) bundle = getArguments();     // 2
    else                            bundle = getActivity().getIntent().getExtras(); // 3
    setPageState(bundle);   
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我从试验中得出结论,我想要的包是第二个,从中检索到的包getArguments().

根据我的理解,第三个getActivity().getIntent().getExtras();实际上是从用于开始包含活动的意图中调用Bundle.我也从实验中知道savedInstanceState似乎总是空的.但它来自哪里,为什么它是空的?

该 …

android bundle

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

从strings.xml获取布尔值和整数

我之前只需要在strings.xml文件中使用Strings,但现在我有一个需要使用Boolean和Integer项的情况.

<item type="integer" name="usenetPort">563</item>

<item type="bool" name="usenetUseSSL">true</item>

我通常getResources().getString(R.strings.my_string)用来检索一个值,但这不适用于Boolean和Integers.我试过getInteger(),getBoolean()但Eclipse说这是错的.

我如何从布尔值和整数中获得价值?

java android

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

六角形瓷砖并找到它们相邻的邻居

我正在使用六边形瓷砖地图开发一个简单的2D棋盘游戏,我已经阅读了几篇文章(包括gamedev one,每次有关于六边形瓷砖的问题时都会链接)关于如何在屏幕上绘制六边形以及如何管理运动(虽然我以前做过很多).我的主要问题是根据给定的半径找到相邻的瓷砖.

这就是我的地图系统的工作方式:

(0,0) (0,1) (0,2) (0,3) (0,4)
   (1,0) (1,1) (1,2) (1,3) (1,4)
(2,0) (2,1) (2,2) (2,3) (2,4)
   (3,0) (3,1) (3,2) (3,3) (3,4)
Run Code Online (Sandbox Code Playgroud)

等等...

我正在努力的事实是我不能通过使用for(x-range;x+range;x++); for(y-range;y+range;y++);来选择相邻的瓷砖,因为它选择了不需要的瓷砖(在我给出的示例中,选择(1,1)瓷砖并给出1的范围也会给出我是(3,0)瓷砖(我实际需要的是(0,1)(0,2)(1,0)(1,2)(2,1)(2,2)),这是有点与瓷砖相邻(因为数组的结构方式),但它并不是我想要选择的东西.我可以强制它,但这不会很美,可能不会覆盖'选择半径的东西".

有人能指出我在正确的方向吗?

grid dictionary hexagonal-tiles

14
推荐指数
2
解决办法
4804
查看次数

单个Codebase多个网站

我们开发了一个使用单一代码库的系统,包括四个带有管理网站的Visual Studio项目和面向客户的网站(每个系统都有自己的MS SQL数据库).

这一直很有效,因为所有新网站(包括管理员)都在SVN中引用相同的代码库项目,因此对代码库所做的任何更改都可供所有网站使用.

每个网站都有不同的母版页和不同的用户控件(.ascx),因此虽然网站背后的主要编码是相同的,但部分不同.

我们现在遇到的问题是,如果存在错误,功能更改或新功能,我们必须在所有站点中单独实施(对于管理员和客户站点).这开始让我们感到疯狂,也意味着我们在实施变更方面存在巨大的误差.

我曾考虑过使用svn:externals,但这会变得很乱.

可以选择从主网站和主管理系统进行分支,但合并以获取新代码是网站不完全相同的主要问题.

我认为一个很好的概述可以说每个站点的标记完全不同(除了管理站点,这只是一个主题更改)但代码库是相同的.

管理这个的最佳方法是什么,还是我们坚持做大量的复制和粘贴?

编辑

你想明确哪一点?

出现的问题是在页面JavaScript不同的情况下,HTML布局可以在网站之间完全不同.但页面的代码是相同的.

所以我需要'同步'文件和文件夹,例如在app_code中找到的文件和文件夹,但这里也存在问题.

站点1和站点2可以完全相同,只是一个不同的主题.站点3也有不同的主题,但它也有一些只有这个站点需要的定制代码,app_code中的一些代码也对站点1和站点2的行为有所不同

现在我可以通过分支轻松实现这一点,但是当合并到新分支时,如果存在代码差异,那么将会发生重大冲突.

合并也将成为一项大任务并且需要很长时间,因为我们只需要合并某些文件夹和文件,尽管您无法通过分支合并单个文件(这可能是错误的).

例如:

在root中有一个download.aspx,它返回一个流作为响应而不是一个页面,用于通过系统推送所有下载请求.

因此,站点1和站点2中的此页面是相同的,但在站点3中,它执行了额外的操作,这是其他站点不需要或不需要的.

我们不希望这个定制功能成为一个重载,因为我们不希望/需要它为其他网站,我们现在不能再合并这个文件,从主网站,它必须手动合并.

希望这能更好地解释我想要实现的目标.

编辑2

基本站点结构

|- App_code
|- App_Themes
|- Bin
|- Content
|     |- Flash
|     |- Images
|     |- Scripts
|     |- Uploaded
|
|- Controls
|     |- MasterPage
|     |     |-MasterPageControls
|     |
|     |- Navigation
|     |- Search
|     |- Templates
|     |     |- Control Templates 
|     |     |- Page Templates
|     |
|     |- WebServices
| …
Run Code Online (Sandbox Code Playgroud)

version-control

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

静态变量和线程(C)

我知道在C中的函数中声明一个静态变量意味着该变量在函数调用之间保留其状态.在线程的上下文中,这会导致变量在多个线程上保持其状态,还是在每个线程之间具有单独的状态?

以下是我正在努力回答的过去的纸质考试问题:

以下C函数旨在用于为其调用者分配唯一标识符(UID):

get_uid() 
{
static int i = 0;
return i++;
}
Run Code Online (Sandbox Code Playgroud)

解释get_uid()在多线程调用它的环境中可能会以何种方式正常工作.使用特定示例方案,详细说明可能发生此类错误行为的原因和方式.

目前我假设每个线程都有一个单独的变量状态,但我不确定这是否正确,或者答案是否与缺少互斥有关.如果是这种情况,那么在这个例子中如何实现信号量呢?

c concurrency static multithreading mutual-exclusion

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

Android - 无法安装*smartsocket*监听器

当我尝试运行我的Android应用程序时,我得到以下异常:

等待设备时出错:java.lang.RuntimeException:无法创建调试桥:无法启动adb服务器:错误:无法安装smartsocket侦听器:无法绑定到127.0.0.1:5037:尝试访问套接字一种被其访问权限禁止的方式.(10013)无法从ADB Server*读取确定无法启动守护程序*错误:无法连接到守护程序'C:\ Users\XXX\AppData\Local\Android\Sdk\platform-tools\adb.exe,start-server'失败 - 必要时手动运行

所以我尝试使用这些命令手动完成:

adb kill-server

  • 响应:*服务器未运行*

adb start-server

  • 响应是下一个例外:

*守护程序没有运行.现在在端口5037上启动*错误:无法安装smartsocket侦听器:无法绑定到127.0.0.1:5037:尝试以其访问权限禁止的方式访问套接字.(10013)无法从ADB服务器读取确定

*无法启动守护程序*错误:无法连接到守护程序

我在我的任务管理器中寻找adb进程但没有运行.有任何想法吗?谢谢.

sockets android adb android-studio

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

Android形状内的形状

我想要一个shape带有双色边框轮廓的元素.我可以使用solid元素做单色轮廓,但这只允许我画一条线.我尝试stroke在我的形状中使用两个元素,但这也不起作用.

有没有办法在一个形状内绘制一个形状或在我的形状周围画两条线(有圆角,BTW).

android shape

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

动画在Android结束后如何删除动画视图?

我正在为RelativeLayout使用右移动动画.

我试图将"可见性"设置为"GONE" onAnimationEnd(),但它不起作用.动画视图仍然存在于停止的位置.

这是我使用的代码:

从右到左创建动画:

TranslateAnimation animate = new TranslateAnimation(0,-rlImages.getWidth()/2,0,0);
animate.setDuration(1000);
animate.setFillAfter(true); 
Run Code Online (Sandbox Code Playgroud)

将动画设置为布局:

centre_leftanimate.startAnimation(animate);
Run Code Online (Sandbox Code Playgroud)

添加侦听器到动画:

animate.setAnimationListener(new AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onAnimationRepeat(Animation animation) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onAnimationEnd(Animation animation) {
        // TODO Auto-generated method stub
        centre_leftanimate.setVisibility(View.GONE);   // I wants to make the visibility of view to gone,but this is not working                                                         
        half_left.setVisibility(View.VISIBLE);
    }
});
Run Code Online (Sandbox Code Playgroud)

如何在动画结束后使动画视图的可见性不可见?

请建议.

android android-animation

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

在Laravel 4注册观察员的确切位置

当为模型观察者使用单独的类时,我应该在哪里注册观察者?文档说要打电话,User::observe(new UserObserver);但我不知道最好的地方在哪里.

https://laravel.com/docs/5.4/eloquent#observers

model observers laravel

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