我有一个由Jobs组成的数据结构,每个都包含一组Tasks.作业和任务数据都在以下文件中定义:
jobs.txt:
JA
JB
JC
tasks.txt:
JB T2
JA T1
JC T1
JA T3
JA T2
JB T1
Run Code Online (Sandbox Code Playgroud)
创建对象的过程如下:
- 读取每个作业,创建它并通过id存储它
- 读取任务,通过id检索作业,创建任务,在作业中存储任务
读取文件后,永远不会修改此数据结构.所以我希望作业中的任务存储在一个不可变的集合中.但我不知道如何以有效的方式做到这一点.(注意:存储作业的不可变映射可能不可变)
这是代码的简化版本:
class Task(val id: String)
class Job(val id: String) {
val tasks = collection.mutable.Set[Task]() // This sholud be immutable
}
val jobs = collection.mutable.Map[String, Job]() // This is ok to be mutable
// read jobs
for (line <- io.Source.fromFile("jobs.txt").getLines) {
val job = new Job(line.trim)
jobs += (job.id -> job)
}
// read tasks
for (line …Run Code Online (Sandbox Code Playgroud) 对于64位系统上的32位应用程序(Windows 2003 SP2 x64,具体为2GB),malloc(虚拟堆,我猜?)的最大限制是什么?
我基本上试图推动一个程序超越它,没有运气.所以我想知道是否适用于Win x64位平台上的所有32位应用程序.
谢谢!
前段时间我问了一个关于TransactionScope升级到MSDTC的问题,当时我没想到它.(上一个问题)
简而言之,在SQL2005中,为了使用TransactionScope,您只能在TransactionScope的生命周期内实例化并打开一个SqlConnection.使用SQL2008,您可以实例化多个SqlConnections,但在任何给定时间只能打开一个SqlConnections.SQL2000将始终升级到DTC ...我们的应用程序中不支持SQL2000,即WinForms应用程序BTW.
我们对单连接问题的解决方案是创建一个名为LocalTransactionScope(又名'LTS')的TransactionScope助手类.它包装了一个TransactionScope,最重要的是,它为我们的应用程序创建并维护了一个SqlConnection实例.好消息是,它可以工作 - 我们可以在不同的代码片段中使用LTS,它们都加入了环境事务.非常好.问题是,创建的每个根 LTS实例都将创建并有效地终止连接池中的连接.通过'Effectively Kill',我的意思是它将实例化一个SqlConnetion,它将打开一个新连接(无论出于何种原因,它永远不会重用来自池的连接),并且当该根LTS被释放时,它会关闭并处理SqlConnection,这是应该将连接释放回池中以便可以重用它,但是,它显然永远不会被重用.池膨胀直到最大化,然后在建立max-pool-size + 1连接时应用程序失败.
下面我附上了一个精简的LTS代码版本和一个示例控制台应用程序类,它将演示连接池耗尽.要观察连接池膨胀,请使用SQL Server Managment Studio的"活动监视器"或此查询:
SELECT DB_NAME(dbid) as 'DB Name',
COUNT(dbid) as 'Connections'
FROM sys.sysprocesses WITH (nolock)
WHERE dbid > 0
GROUP BY dbid
Run Code Online (Sandbox Code Playgroud)
我在这里附加LTS,以及一个示例控制台应用程序,您可以使用它来演示它将使用池中的连接并且永远不会重复使用也不会释放它们.您需要为LTS添加对System.Transactions.dll的引用以进行编译.
注意事项:它是打开和关闭SqlConnection的根级LTS,它始终在池中打开一个新连接.嵌套LTS实例没有区别,因为只有根LTS实例建立了SqlConnection.如您所见,连接字符串始终相同,因此应该重用连接.
是否有一些我们没有遇到的神秘条件会导致连接无法重复使用?除了完全关闭池外,还有其他解决办法吗?
public sealed class LocalTransactionScope : IDisposable
{
private static SqlConnection _Connection;
private TransactionScope _TransactionScope;
private bool _IsNested;
public LocalTransactionScope(string connectionString)
{
// stripped out a few cases that need to throw an exception
_TransactionScope = new TransactionScope(); …Run Code Online (Sandbox Code Playgroud) int lcm_old(int a, int b) {
int n;
for(n=1;;n++)
if(n%a == 0 && n%b == 0)
return n;
}
int lcm(int a,int b) {
int n = 0;
__asm {
lstart:
inc n;
mov eax, n;
mov edx, 0;
idiv a;
mov eax, 0;
cmp eax, edx;
jne lstart;
mov eax, n;
mov edx, 0;
idiv b;
mov eax, 0;
cmp eax, edx;
jnz lstart;
}
return n;
}
Run Code Online (Sandbox Code Playgroud)
我试图用我自己的函数(底部)击败/匹配顶部函数的代码.您有什么想法可以优化我的日常工作吗?
PS.这只是为了好玩.
我试图在C++中声明一个回调例程,如下所示:
void register_rename (int (*function) (const char *current, const char *new));
/*------------------------------------------------------------*/
/* WHEN: The callback is called once each time a file is received and
* accepted. (Renames the temporary file to its permanent name)
* WHAT: Renames a file from the given current name to the specified new name.
*/
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
line 204: error #70:
incomplete type is not allowed
void register_rename (int (*function) (const char *current, const char *new));
Run Code Online (Sandbox Code Playgroud)
我不知道如何纠正这个问题.我在同一个头文件中声明了其他类似的回调例程,我没有收到此错误.
请帮忙!:)
请参阅下面的PL/SQL片段:
create table t23 (
field01 number,
field02 number,
field03 char(1)
);
Run Code Online (Sandbox Code Playgroud)
declare x varchar2(2000) := '
<ArrayOfRecords>
<Record>
<Field01>130</Field01>
<Field02>1700</Field02>
<Field03>C</Field03>
</Record>
<Record>
<Field01>131</Field01>
<Field02>1701</Field02>
<Field03>B</Field03>
</Record>
</ArrayOfRecords>';
begin
insert
into T23
SELECT *
FROM XMLTABLE('/ArrayOfRecords/Record'
PASSING xmltype(x)
COLUMNS
Field01 number PATH 'Field01',
Field02 number PATH 'Field02',
Field03 char(1) PATH 'Field03'
);
end;
-- The records will be here - great!
select * from T23;
Run Code Online (Sandbox Code Playgroud)
declare y varchar2(2000) := '
<ArrayOfRecords>
<Record Field01="130" Field02="1700" Field03="C" />
<Record …Run Code Online (Sandbox Code Playgroud) 这是我最喜欢的日食功能之一.它是否存在于xcode中?我已经厌倦了从头文件剪切和粘贴到我的实现.
我正在使用强制下载主要下载网站上的拉链和mp3(http://pr1pad.kissyour.net) - 跟踪谷歌分析,数据库中的下载并隐藏真正的下载路径:
就是这样:
extending CI model
... - bunch of code
function _fullread ($sd, $len) {
$ret = '';
$read = 0;
while ($read < $len && ($buf = fread($sd, $len - $read))) {
$read += strlen($buf);
$ret .= $buf;
}
return $ret;
}
function download(){
/* DOWNLOAD ITSELF */
ini_set('memory_limit', '160M');
apache_setenv('no-gzip', '1');
ob_end_flush();
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public",FALSE);
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
if (isset($_SERVER['HTTP_USER_AGENT']) &&
(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)) …Run Code Online (Sandbox Code Playgroud) 我正在研究Haskell中的一个小概念项目,它需要一个循环缓冲区.我已经设法使用具有O(1)旋转的数组创建缓冲区,但当然需要O(N)来插入/删除.我发现使用列表的实现似乎需要O(1)进行插入和删除,但由于它保持左右列表,因此在旋转时越过某个边界将花费O(N)时间.在命令式语言中,我可以实现具有O(1)插入,删除和旋转的双向链接循环缓冲区.我认为这在像Haskell这样纯粹的功能性语言中是不可能的,但我很想知道我是不是错了.
我想知道,请你告诉我如何使用lift-json将一个简单的bean类序列化为json字符串(我正在使用v2.0-M1).我试过了:
val r = JsonDSL.pretty(JsonAST.render(myBean))
Run Code Online (Sandbox Code Playgroud)
我正在接受
[error] found : MyBean
[error] required: net.liftweb.json.JsonAST.JValue
Run Code Online (Sandbox Code Playgroud)
谢谢