我想写一些字节到共享内存.这是在我的application1中完成的.从我的另一个应用程序:application2我想访问该共享内存来读取写入的字节.为此,我尝试使用android的MemoryFile类.我被困在如何在两个不同的应用程序之间引用相同的分片内存.如果memoryFile用于相同的目的,我现在也很困惑. http://developer.android.com/reference/android/os/MemoryFile.html我发现这个主题的链接.提前致谢.克里希纳
我有一个第一行空白的JTable.现在,当我通过单击该列对基于列的表进行排序时,空行将位于底部.如果我在空白行中插入一些内容并进行排序,则相应地放置行.即使在排序时,如何跟踪其行索引.我需要访问该行,但如果用户进行排序,那么我会松开行索引,因为它不再是第一行.
考虑以下输入的典型背包问题.
V = [10,8,12]
W = [2,3,7]
i = 1,2,3
C = 10
Run Code Online (Sandbox Code Playgroud)
我尝试使用memoization进行递归来解决此示例但发现没有重叠的子问题.
递归程序的签名:
knapsack(int c, int i)
Run Code Online (Sandbox Code Playgroud)
最初称为 knapsack(10,1)
解决方案的方法类似于https://www.youtube.com/watch?v=6h6Fi6AQiRM和https://www.youtube.com/watch?v=ocZMDMZwhCY中所述.
动态编程如何帮助减少这些Knapsack样本的时间复杂度?如果它没有帮助改善这种情况的时间复杂度,那么DP解决方案的最坏情况复杂性也与基于后向跟踪搜索相同,即2到功率n [ 忽略修剪,就像修剪应用那样复杂性将降低两者解决方案再次DP将不会比非memoized递归解决方案更好 ]
**在上面的示例中是否真的缺少子问题,或者我遗漏了什么?**
algorithm recursion knapsack-problem memoization dynamic-programming
我在为执行程序创建新线程时感到困惑.我的理解是:对于cachedthreadpool,根据任务的提交创建新线程.对于fixedthreadpool和singlethread,无论提交任务如何,都会提前创建线程.我的理解错了吗?
ExecutorService exec = Executors.newCachedThreadPool();
exec.execute(new LiftOff());
ExecutorService exec = Executors.newFixedThreadPool(3); // Are the three threads created
// after this line executes?
exec.execute(new LiftOff());
ExecutorService exec = Executors.newSingleThreadExecutor(); // Is the single thread created
// after this line executes?
exec.execute(new LiftOff());
Run Code Online (Sandbox Code Playgroud) 我读过一些帖子和文章说我们不应该将java对象声明为易失性的,因为这样一来,只有引用变得易失性。这里有些例子:
Sonar 的建议是“非原始字段不应该是“易失性”的”,然而,它也表明所描述的问题涉及可变对象。“类似地,将可变对象字段标记为易失性意味着对象引用是易失性的,但对象本身是易失性的。不是'。
我的问题是:将 java String 声明为 volatile 是否安全?
我在Java中探索Thread本地.我无法理解为什么我们需要这门课.如果我只是简单地将一个新对象传递给每个线程来执行,我可以实现相同的动机,如果我使用initialValue()就会发生同样的事情.我只是在initialvalue()中为每个线程返回一个新对象.
但是说我有两个线程,ThreadOne:A和ThreadTwo B.现在我希望他们拥有自己的SimpleDateFormat类的副本.我可以通过在ThreadLocal类中扭曲SimpleDateFormat的对象然后使用initialValue()来执行此操作,我可以返回新的SimpleDateFormat("yyyyMMdd HHmm");. 同样的动机我可以通过创建两个新的SimpleDateFormat对象来实现,并且[每个都向ThreadOne提供一个:A.和ThreadTwo:B.ThreadLocal如何帮助我额外的
问候,
我有一个应用程序,它使用画布绘制用户完成的涂鸦.我已将路径序列化为外部文件并将其保存在SD卡中.当用户再次启动应用程序然后单击(重新绘制)按钮时,我希望在画布上重绘已保存的路径.我无法重绘路径.我在调试时检索文件中的路径并检查相同的路径.但我不知道为什么这些路径没有重新绘制.请帮助.
Command 模式有一个 IReceiver 接口,其中有几个方法,并且与每个方法相对应,有具体的 Command 对象(实现一个接口ICommand)。
我读到客户端知道具体接收器和具体命令,并且通常是客户端在具体命令对象中设置接收器对象。那为什么说它解耦了发送者和接收者呢?
当客户端已经知道具体的接收者时,我觉得这不是松耦合,而且在这种情况下客户端可以直接调用接收者对象上的 API(方法)。
代理模式在进行了一些其他处理(例如应用检查是否需要处理请求还是基于某些凭据检查)之后,将请求委托给Real主题。
它的类图如下
代理类直接引用了具体的Subject。
装饰器模式丰富了组件的行为(像代理一样,它也进行一些附加处理并将操作委托给实际组件)。此模式的类图类似于Proxy模式,唯一的区别是它具有对组件接口的引用。
在Proxy类中拥有具体的实际主题会使单元测试变得困难,因为类仅应依赖于接口而不是依赖于实现。我的问题是,如果代理模式也引用了Real主体公开的接口,那么它将等同于Decorator模式。在这种情况下,代理模式的类图也将如下所示
GOF 谈论“工厂方法”模式的框架。框架需要对象,但对象的实现取决于应用程序,因此创建了创建对象的抽象方法。此外,由于需要返回类型,因此定义了所需对象的接口,它定义了该对象所需的 api。实际对象是由子类(具体应用程序)创建的。这是一种创作模式。
对于模板模式,唯一的变化是封装类不知道某些行为的实现,因此它将其抽象为方法,使用它,但将实现留给子类。这是行为模式。
两者之间唯一的区别是
1. Factory method is creational and Template is behavioural.
2. Factory method abstracts a method to create an object where as template pattern abstracts a method for some policy or algorithm.
Run Code Online (Sandbox Code Playgroud)
示例代码
/**factory-method example**/
public abstract class Application{
public void create(){
View contentView = createContentView();
Menu menu = contentView.obtainMenu();
generateMenuItems(menu);
}
public abstract View createContentView(); //factory-method
public void generateMenuItems(Menu menu){
// some code
}
}
/** Product Specification**/
public interface View{
public abstract Menu obtainMenu(); …Run Code Online (Sandbox Code Playgroud) java oop design-patterns factory-method template-method-pattern