因此,我开发了一个系统,只要用户尝试保存并且数据库连接不存在,就会将数据库插入/更新命令保存到文本文件中.文件中的每一行都是一个插入或更新命令.但是,我似乎遇到了一个问题.
有些文件似乎不想通过第一行读取.所有这些都有一个共同点 - 因为数据库中有与第一个插入对应的数据,我跳过它,因为输入后不允许更改该信息.但是,当我尝试读取下一行时,它会启动,因为该readLine()
命令返回null(这会导致其余代码按预期失败).
我尝试while(!ready() Thread.sleep(500))
在下一个之前添加一个readLine()
,但它只是无限期地坐在那里(我让它在杀死JVM之前大约需要10分钟).我还尝试过只添加一个else块来检查数据库中是否存在数据,该数据暂停2秒,但问题仍然存在.
请注意,任何以不存在的数据插入开头的文件都可以正常工作.
有没有人对如何解决这个问题有任何想法?
编辑:这是从顶部到等待准备的代码
private static boolean loadExistingData()
{
File dir = new File(Configuration.DBOutputDataLocation);
// Attempt to create the directory in case it doesn't exist.
if(!dir.exists())
{
if(!dir.mkdir())
{
return false;
}
}
String[] existingFiles = dir.list();
System.out.println(existingFiles.length);
if(existingFiles == null || existingFiles.length == 0)
{
return false;
}
else
{
BufferedReader fileReader = null;
DatabaseAccessor dba = DatabaseAccessor.getInstance();
// Pull out the files, submit each one.
for(int i …
Run Code Online (Sandbox Code Playgroud) 我可以在同一个文件中使用MATLAB脚本代码和功能代码吗?
%% SAVED IN FILE myfunc.m (otherwise fail)
function [out1] = myfunc( x )
out1 = sqrt( 1 + (cos(x))^2 );
end
%%
%OTHER CRAP
y = 1:10
% use myfunc
Run Code Online (Sandbox Code Playgroud)
即使使用end
关键字,它似乎也不起作用.这种类型的东西是允许的还是我总是需要在自己正确命名的文件中使用EACH功能?
我确信几年前我看到了在同一个文件中使用这些函数的函数和代码.
我为我的新计费系统编写了一些代码.目的是在每个月的同一天向客户收费.(不是本月的第1天或最后一天)
static bool NeedToBill(DateTime planLastBilled, DateTime cycleDate)
{
// is today the same date as the cycleDate AND is was the planLastBilled not the same day as today?
if (DateTime.UtcNow.Day.Equals(cycleDate.Day) && !DateTime.UtcNow.Day.Equals(planLastBilled))
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
两个陷阱是:
这里有一个共同的最佳做法吗?
所以看起来有很多事要检查
谢谢!
假设我在erlang应用程序中创建了新的本地进程,我想向它发送一条重要消息.
-module(chain_hello).
start(N, Some_big_data)->
Pid1 = spawn(chain_hello, some_fun, [N]),
Pid1 ! Some_big_data,
io:format("done \n").
Run Code Online (Sandbox Code Playgroud)
尽管Some_big_data
是对真正大数据的引用(例如文件的内容) - 它在发送时是否被复制?对性能有很大的惩罚吗?
通常我会使用一些线程安全的共享对象(和/或互斥).Erlang中是否有任何解决方案可以避免复制邮件内容?
增加:
有趣的情况是Some_big_data是结构化内容 - 具体:map,我可以在其上执行某些操作.
ADDED2
好的,我看到Erlang没有这样的解决方案(剪切一些结构化数据,比如工作流程中的map) - 因为Erlang设计.但我认为通过扎实的工作和轻松的并发管理是合理的.
根据Node 0.4.3的API文档,该fs.watchFile(filename, [options], listener)
函数启动一个例程
留意变化
filename
.该callback
监听器将每个文件被访问时调用.
它还说
所述
options
如果提供的话应该是包含两个成员的布尔对象,persistent
以及interval
,以毫秒为单位的轮询值
这表明它将根据间隔内的频率进行检查.但它也说
默认是
{ persistent: true, interval: 0 }
.
那么这是否意味着它将检查每毫秒以查看文件时间是否已更改?它是否监听操作系统级事件?这是如何运作的?
以下摘录来自英特尔®64和IA-32架构软件开发人员手册,第1卷:基本架构(p.432,http://www.intel.com/Assets/PDF/manual/253665.pdf)
当使用I/O地址空间而不是内存映射I/O时,情况在两个方面有所不同:
•处理器从不缓冲I/O写入.因此,处理器强制执行I/O操作的严格排序.(与存储器映射的I/O一样,芯片组可以在某些I/O范围内发布写入.)
•处理器将I/O指令执行与外部总线活动同步(参见表14-1).
表14-1.I/O指令序列化
------------------+----------------------------------+---------------------------------- | Processor Delays Execution of … | Until Completion of … +---------------+------------------+-----------------+---------------- Instruction Being | Current | Next | | Executed | Instruction? | Instruction? | Pending Stores? | Current Store? ------------------+---------------+------------------+-----------------+---------------- IN | Yes | | Yes | INS | Yes | | Yes | REP INS | Yes | | Yes | OUT | | Yes | Yes | Yes OUTS | | Yes | Yes | Yes REP OUTS …
假设我运行此代码:
__block int step = 0;
__block dispatch_block_t myBlock;
myBlock = ^{
if(step == STEPS_COUNT)
{
return;
}
step++;
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC / 2);
dispatch_after(delay, dispatch_get_current_queue(), myBlock);
};
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC / 2);
dispatch_after(delay, dispatch_get_current_queue(), myBlock);
Run Code Online (Sandbox Code Playgroud)
该块从外部调用一次.到达内部调用时,程序崩溃,没有任何细节.如果我在所有地方使用直接调用而不是GCD调度,一切正常.
我也尝试使用块的副本调用dispatch_after.我不知道这是否是朝着正确方向迈出的一步,但这还不足以让它发挥作用.
想法?
iphone objective-c grand-central-dispatch objective-c-blocks
我最近下载了一个应用程序(Overkill),他们有一个游戏"虚拟货币"称为"过度杀戮奖章"或"OM".您可以使用应用内购买系统购买更多的OM,或者您可以通过名为"Tapjoy"的服务获得它.
Tapjoy(在Overkill应用程序内)会显示一个包含符合条件的应用程序的菜单,以及指向iTunes商店的链接以下载它,并要求您"下载并打开"该应用程序以获得您的OM.
这个应用程序如何知道我已经下载并打开了应用程序,以便授予我OM?
编辑:它似乎也知道我什么时候有应用程序