小编Har*_*shi的帖子

Java(Android)多线程进程

我正在开发应用程序(Matt的traceroute windows版本http://winmtr.net/),它创建多个线程,每个线程都有自己的进程(执行ping命令).ThreadPoolExecutor一段时间后关闭所有线程(例如10秒)

ThreadPoolExecutor 使用阻塞队列(在执行之前保存任务)

int NUMBER_OF_CORES = Runtime.getRuntime().availableProcessors();
ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(
    NUMBER_OF_CORES * 2, NUMBER_OF_CORES * 2 + 2, 10L, TimeUnit.SECONDS, 
    new LinkedBlockingQueue<Runnable>()
);
Run Code Online (Sandbox Code Playgroud)

PingThread.java

private class PingThread extends Thread {

    @Override
    public void run() {
        long pingStartedAt = System.currentTimeMillis();
        // PingRequest is custom object
        PingRequest request = buildPingRequest(params);

        if (!isCancelled() && !Thread.currentThread().isInterrupted()) {

            // PingResponse is custom object

            // Note:
            // executePingRequest uses PingRequest to create a command 
            // which than create …
Run Code Online (Sandbox Code Playgroud)

java multithreading android blockingqueue threadpoolexecutor

13
推荐指数
2
解决办法
1699
查看次数

RBAC/ABAC通过XACML策略

我正在研究各种类型的访问控制模型,并且知道是受欢迎的模型.

对于我的一个项目,我有一个基本的场景,我无法理解我应该选择RBAC还是ABAC.显然RBACABAC我应该去的子集,ABAC但是ABAC需要一些经验才能在编写策略.我们正在使用WSOIS和APIM.

我的身份服务器(IS)中有管理员,所有者和成员角色.

  • 管理员可以查看,删除和更新用户.
  • 所有者可以查看和更新​​.
  • 会员只能查看.

在某个时刻,我使用HTTP动词来实现愿望结果,即所有者无法访问DELETE请求,成员无法访问PUT&DELETE.

问题

我有一个仪表板,我在其中显示不同的部分,如最高用户,计费,服务,顶级消费者等.

  1. 我需要nav-bar根据服务器的用户角色和属性进行填充,例如,成员不应该有权访问其他用户(添加,列表)nav-bar.nav-bar项目依赖于用户角色,以便我们可以通过RBAC
  2. 我们已经计划增加与OPS一样,营销的作用,支持等等.这是否意味着我们需要创建一个单独的DB-模式,以保持每个角色的访问权限?
  3. 在仪表板中,我需要隐藏/显示用户,服务等中的视图,更新和删除按钮.现在,成员可以看到用户但无权更新或删除它们.无法查看统计信息,结算和其他私人信息.
  4. 所有者可以查看与其部门/组织相关的所有用户,但管理员可以查看所有部门/组织的所有用户.在这里,我们需要为所有消费者使用相同的API,但api对不同的角色应该有不同的响应.角色可以是10s和100s,因此ee不能为每个角色创建不同的api.

我们可以实现所有这些场景,RBAC但是为了管理nav-bar和查看相关的实现,我们需要在服务器中添加业务逻辑而不是使用WSO2-ISWSO2-APIM.有没有办法管理隐藏/显示按钮和部分等视图权限,甚至消费相同,API但它应该为不同的api消费者返回不同的结果.

authorization rbac xacml wso2is abac

8
推荐指数
2
解决办法
1021
查看次数

读取通过slf4android记录的文件?

我正在使用slf4android(https://github.com/bright/slf4android)编写日志,但是如何阅读它们并不明显(理想情况下我只想将它们下载到我的计算机上).其他应用无法访问该应用的内部存储空间.我可以配置slf4android来登录共享目录吗?我试过这个,但我得到了通知:

FileLogHandlerConfiguration fileHandler = LoggerConfiguration.fileLogHandler(this);
File lol = this.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS);
fileHandler.setFullFilePathPattern(fileHandler.toString() + "/my_log.%g.%u.log");
LoggerConfiguration.configuration().addHandlerToRootLogger(fileHandler);
Run Code Online (Sandbox Code Playgroud)

logging android slf4j slf4android

5
推荐指数
2
解决办法
265
查看次数

支持FragmentManager、popbackstack和屏幕旋转

我有一个奇怪的问题让我发疯!

设想:

我有ActivityA 作为启动器Activity, B 可以通过inActivity启动IntentActivity A

Activity A --> Activity B
Run Code Online (Sandbox Code Playgroud)

Activity B 有一个初始Fragment名称为FragmentC,它在 B 中实例化,Activity如下所示:

if(getSupportFragmentManager().findFragmentByTag(FragmentC.TAG) == null) {
        getSupportFragmentManager()
                 .beginTransaction()
                 .add(R.id.container,
                  FragmentC.newInstance(null), // optional bundle
                  FragmentC.TAG)
                 .commit();
}
Run Code Online (Sandbox Code Playgroud)

FragmentCI 中,有一个RecyclerViewOnClickListenerthis 上通过CViewHolder回调到托管B。此时,我启动一个(在B 中)来替换当前的C,将其称为D,然后将此事务添加到后台堆栈:ActivityFragmentFragmentTransactionActivityFragmentFragment

getSupportFragmentManager()
          .beginTransaction()
          .setCustomAnimations(
                  R.anim.fragment_slide_enter,
                  R.anim.fragment_slide_exit,
                  R.anim.fragment_slide_enter_pop,
                  R.anim.fragment_slide_exit_pop)
          .replace(R.id.container,
                        FragmentD.newInstance(bundle),
                        FragmentD.TAG)
          .addToBackStack(null)
          .commit();
Run Code Online (Sandbox Code Playgroud)

所以此时我有ActivityB 和D 以及从C …

android android-fragments

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

更改导航抽屉项目的区域设置

当我更改应用程序的语言环境时,每种TextView语言都会更改,但是导航抽屉项不会更改语言。

我用过

@Override
public void onDrawerOpened(View drawerView) {    
    super.onDrawerOpened(drawerView);
    invalidateOptionsMenu();
    drawerView.invalidate();
    supportInvalidateOptionsMenu();
}
Run Code Online (Sandbox Code Playgroud)

更改语言环境后,语言更改仍不会反映在导航抽屉中。

但是,当我重新开始活动时,语言更改会反映在导航抽屉中。

更改语言环境后,如何更改导航抽屉项目中的语言?

android locale navigation-drawer

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

无法使用 mkdirs() 创建目录 - android

我尝试创建一个目录并使用以下代码:

boolean success = true;
String rootDirectory = Environment.getExternalStorageDirectory().toString();
folder = new File(rootDirectory, "Directory");
if(!(folder.exists())) {
     success = folder.mkdirs();
} else {

}

if(success) {
   Toast.makeText(getActivity().getApplicationContext(), "DIR created", Toast.LENGTH_SHORT).show();     
} else {
     Toast.makeText(getActivity().getApplicationContext(), "DIR not created successfully", Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)

我还搜索了创建的文件夹,但没有。

授予权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

我还尝试在运行时请求许可,似乎该应用程序已获得许可,因此不可能是问题。

几个月前,我创建了另一个应用程序并使用了相同的代码和相同的 Sdk 版本,但它仍然不适用于这个应用程序。我收到“未成功创建 DIR”,但不知道为什么,请帮我找出无法创建目录的原因。

android file mkdir mkdirs

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