小编Jas*_*rff的帖子

如何验证原子写入?

我已经努力搜索(在 S[O|F|U] 网络和其他地方),并认为这是一个不常见的问题。我正在使用运行 Debian Linux 2.6.28-4 的 Atmel AT91SAM9263-EK 开发板(ARM926EJ-S 内核,ARMv5 指令集)。我正在使用(我相信)tty 驱动程序与RS-485 串行控制器通信。我需要确保写入和读取是原子的。几行源代码(在本文末尾相对于内核源安装目录列出)暗示或隐含地说明了这一点。

有什么方法可以验证向/从该设备写入/读取实际上是原子操作吗?或者,/dev/ttyXX 设备是否被认为是 FIFO 并且参数在那里结束?仅仅相信代码正在执行它提出的这个声明似乎还不够——就在今年 2 月,freebsd 被证明缺乏小行的原子写入. 是的,我意识到 freebsd 与 Linux 并不完全相同,但我的观点是仔细确定并没有什么坏处。我能想到的就是继续发送数据并寻找排列 - 我希望有一些更科学的东西,理想情况下是确定性的。不幸的是,我对过去大学时代的并发编程课程一无所知。我会非常感谢在正确的方向上一记耳光或一推。如果您选择回复,请提前致谢。

亲切的问候,

杰斯


驱动程序/字符/tt​​y_io.c:1087

void tty_write_message(struct tty_struct *tty, char *msg)
{
    lock_kernel();
    if (tty) {
        mutex_lock(&tty->atomic_write_lock);
        if (tty->ops->write && !test_bit(TTY_CLOSING, &tty->flags))
            tty->ops->write(tty, msg, strlen(msg));
        tty_write_unlock(tty);
    }
    unlock_kernel();
    return;
}
Run Code Online (Sandbox Code Playgroud)


arch/arm/include/asm/bitops.h:37

static inline void ____atomic_set_bit(unsigned int bit, volatile unsigned long *p)
{
    unsigned long flags;
    unsigned long mask = 1UL …
Run Code Online (Sandbox Code Playgroud)

linux embedded arm atomic rs485

5
推荐指数
1
解决办法
1625
查看次数

如何确定是否从crontab执行python脚本?

我想知道如何确定是否从crontab执行python脚本?

我不想要一个需要添加参数的解决方案,因为我希望能够从导入的模块(而不是主脚本)中检测到这一点.

python unix terminal cron

5
推荐指数
3
解决办法
3016
查看次数

评估网格中单词的分布

我正在创建一个单词搜索,并试图通过验证单词集在整个网格中"均匀分布"来计算生成的谜题的质量.例如,连续放置每个单词,逐行填充它们并不是特别有趣,因为会有集群,用户会很快注意到一个模式.

如何衡量单词"均匀分布"的方式?

我想做的是编写一个程序,将一个单词搜索作为输入,输出一个评分拼图"质量"的分数.我想知道是否有人遇到过类似的问题并且可以向我推荐一些资源.也许统计数据中有一些概念可能会有所帮助?谢谢.

algorithm math statistics

5
推荐指数
1
解决办法
125
查看次数

从 Java 中的 LinkedList 中删除重复元素

我一直在从事一项任务,允许用户将对象输入到链接列表中,以及删除它们。我已经弄清楚了程序的所有区域,除了这里讨厌的部分......删除重复项。我已经从事这个工作有一段时间了,希望有人能给我指出正确的方向。

我下面的代码几乎可以工作...因为它确实删除了重复项...但仅删除了它遇到的第一个元素。那么,如何允许程序查看第一个项目,删除其重复项,然后返回并对列表中的所有其他元素执行相同的操作?我是否应该使用“上一个”和“当前”之类的节点而不是我在这里得到的节点,并尝试以这种方式遍历 LinkedList?我的教授暗示我需要两个 while 循环,但我尝试过的所有方法都不能正常工作。我应该将什么作为第二个(我假设)外部 while 循环的参数?

非常感谢任何帮助,谢谢!

public void removeDuplicate() //searches the LinkedList for duplicate elements, and removes them
   {
   ListIterator iter = listIterator();

   Object uniqueO = iter.next();

        while (iter.hasNext())
        {
           String uniqueS = (String) uniqueO;
           Object compareO = iter.next();
           String compareS = (String) compareO;
           int x = uniqueS.compareTo(compareS);
           if (x == 0)
           {
               iter.remove();
           }
        }

} //end removeDuplicate
Run Code Online (Sandbox Code Playgroud)

java linked-list duplicates while-loop

5
推荐指数
1
解决办法
9201
查看次数

如何正确使用自定义渲染器绘制JTable中的特定单元格?

我的GUI中有一个JTable组件,它显示psuedocode了一个算法.我想通过更改特定单元格的背景然后更改下面的单元格等来突出显示当前的执行行.

现在我的代码改变了JTable中所有单元格的背景,如下图所示:

JTable中

我用来存档这个当前状态的代码如下:

class CustomRenderer extends DefaultTableCellRenderer 
{
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
            JLabel d = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            if((row == 0) && (column == 0))
                d.setBackground(new java.awt.Color(255, 72, 72));
            return d;
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后我调用jTable2.setDefaultRenderer(String.class, new CustomRenderer());我的构造函数.

我认为:

  • 在每个String类型的表格单元格上调用此方法.
  • 这只会改变位置(0,0)处单元格的颜色

如何修复我的代码,以便只有单元格(0,0)被着色?

java swing jtable

5
推荐指数
3
解决办法
3830
查看次数

Android InApp计费包装?

InApp Billing API周围是否有经过充分测试和记录的包装器?

Google提供的内容甚至很难称为API - 单一aidl界面,以及相当复杂(针对任务)的示例应用程序.更何况,有已知的错误还没有固定的(例如不检查nullBillingService.onStart())相当混乱...

我根据示例应用程序整合了支付流程,但我正在寻找更好的解决方案.到目前为止我发现了什么:

  • gumma-android-payments - 这个提供公平的API,但实现似乎只是Dungeons样本的副本,这不会让我感到安全使用它
  • marketbilling - 这似乎是Google Code上的Dungeon示例应用程序项目(当前主干没有事件编译 - 没有评论)

是否还有其他推荐的资源(当然除官方文档外)?

android in-app-billing

5
推荐指数
1
解决办法
460
查看次数

如何在 Haskell 中避免 <<loop>>?

下面的程序生成<<loop>>GHC。

...明显地。事后看来。

发生这种情况是因为walk正在计算一个不动点,但有多个可能的不动点。当列表推导式到达图形遍历的末尾时,它“询问” 的下一个元素answer;但这正是它已经在尝试计算的。我想我认为程序会到达,呃,列表的末尾,然后停止。

我不得不承认,我对这个漂亮的代码有点感伤,希望我能让它工作。

  • 我应该怎么做?

  • 我如何预测“打结”(指的是表示如何计算值的表达式中的值)是一个坏主意?

import Data.Set(Set)
import qualified Data.Set

-- Like `Data.List.nub`, remove duplicate elements from a list,
-- but treat some values as already having been seen.
nub :: Set Integer -> [Integer] -> [Integer]
nub _ [] = []
nub seen (x:xs) =
  if Data.Set.member x seen
  then nub seen xs
  else x : nub (Data.Set.insert x seen) xs

-- A directed graph where the vertices are integers.
successors …
Run Code Online (Sandbox Code Playgroud)

haskell tying-the-knot fixed-point-iteration

5
推荐指数
0
解决办法
143
查看次数

如何从Squeak Smalltalk图像转储所有源代码?

我已经下载 Scratch 的源代码,它是用Squeak Smalltalk编写的.我可以在Squeak中浏览源代码,但我真正想要的是一个大文本文件.该图像基于Squeak 2.8.

我是一个吱吱叫的新手.到目前为止,我爱它,我的语言和环境的印象是,倾倒所有的源代码此图像中的一个文件可以大概在3行代码来完成,如果只有我知道更好左右我的方式.你能提供3行代码吗?

如果它最终成为4行(或更可能是1行),我不会抱怨.

smalltalk squeak

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

使用C++联合,何时需要哪个成员是未知的

基本上,我必须为我的tokenType结构重载<<运算符,后面跟着(不能更改,我必须以这种方式使用它)

struct tokenType 
{
    int category  ;   // one of token categories defined above
    union 
    {
        int  operand ;
        char symbol ; // '+' , '-' , '*' , '/' , '^' , '='
    } ;
    int  precedence() const ;
}
Run Code Online (Sandbox Code Playgroud)

我的重载方法的标题是:

ostream & operator<< ( ostream & os , const tokenType & tk)
Run Code Online (Sandbox Code Playgroud)

所以,我需要打印出struct tk中的值,int或char.当我不知道变量是操作数还是符号时,如何访问union中包含的内容?谢谢.

c++ operator-overloading ostream unions

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

Java-当用户输入字符串时,它是字符串文字吗?

我有一个问题可以帮我做作业.我们使用字符串文字编写程序并反向打印.我写了它,它工作正常,但我有两个不同的版本.第一个使用扫描仪,因此用户可以输入字符串,然后反向打印.在第二个中,我声明一个字符串文字,然后反向打印.

我的问题不是关于我的程序运行正常,而是我找不到任何在线或我的书中说输入的字符串是字符串文字.我知道字符串文字通常写成

String a = "Welcome to Java"
Run Code Online (Sandbox Code Playgroud)

但可以写成

String a = new String("Welcome to Java") 
Run Code Online (Sandbox Code Playgroud)
  • 那么输入的字符串是不是与字符串文字相同?
  • 是否必须用引号写出才能被视为字符串文字?

我假设答案是肯定的,因为我的书基本上说它必须在引号中,但我想在我递交我的作业之前仔细检查我正在转向正确的版本.在此先感谢任何澄清!

java string-literals

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