我有以下问题...我想在点击普通链接时设置一个会话变量,如:
<a href="home" name="home">home</a>
Run Code Online (Sandbox Code Playgroud)
我的研究似乎指出,PHP不可能以一种设置会话变量的方式赶上click事件.
我相信它可以用Ajax,但是怎么样?我的链接会是什么样的?
设置会话变量应如下所示:
$_SESSION['link'] = home;
Run Code Online (Sandbox Code Playgroud)
简而言之:当点击HTML中的链接时,必须设置会话变量.
我该怎么做?
PS:我对Ajax不太熟悉,但我会赶上来.
编辑:链接将引用同一页面,我也想避免像"home.php?link = X"这样的网址.
如果不可能以任何其他方式做到这一点,那就太糟糕了.但我希望有一个解决方案.
重要提示:链接的名称将是值$_SESSION['link']
我偶然发现了以下问题.
我想要一个所有数字从1到100.000.000的哈希集.我尝试了以下代码:
var mySet = new HashSet<int>();
for (var k = 1; k <= 100000000; k++)
mySet.Add(k);
Run Code Online (Sandbox Code Playgroud)
那个代码没有成功,因为我在49mil附近的内存溢出.这也很慢,内存增长过度.
然后我尝试了这个.
var mySet = Enumerable.Range(1, 100000000).ToHashSet();
Run Code Online (Sandbox Code Playgroud)
其中ToHashSet()是以下代码:
public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source)
{
return new HashSet<T>(source);
}
Run Code Online (Sandbox Code Playgroud)
我再次获得了内存溢出但我能够使用前面的代码输入更多数字.
有效的方法如下:
var tempList = new List<int>();
for (var k = 1; k <= 100000000; k++)
tempList.Add(k);
var numbers = tempList.ToHashSet();
Run Code Online (Sandbox Code Playgroud)
我的系统需要大约800毫秒来填充tempList,其中Enumerable.Range()只需要4个滴答!
我确实需要HashSet,否则它需要花费很多时间来查找值(我需要它是O(1)),如果我能以最快的方式做到这一点会很棒.
现在我的问题是:
为什么前两种方法导致内存溢出,而第三种方法没有?
在初始化时,HashSet是否有特殊的内存?
我的系统有16GB的内存,所以当我得到溢出异常时我感到非常惊讶.
情况就是这样:
我列出了哪些字符串实际上是数字并且可以变得非常大(数亿项).
我将数字存储为字符串,因为有一个选项可以显示一些附加信息,即文本.
因为这需要大量的内存来存储我决定我最多只能存储500万个项目.(这只需要250-300mb).
该列表由计算输出填充.如果找到一个数字,它将被添加到列表中,此数字始终大于现有项目.
当列表达到5密耳时,我想删除第一个项目并将新项目添加到列表中.
喜欢:
// Why is this so freaking slow???
if (_result.Count == 5000000)
_result.RemoveAt(0);
_result.Add(result);
Run Code Online (Sandbox Code Playgroud)
正如你在评论中看到的那样,这非常非常非常慢.它只是将我的表现减少了15倍.花了2分钟,现在需要大约30分钟.
我用linq尝试过一些东西,.Skip(1).ToList但是会重新创建列表,因此更慢.
列表必须保持正确的顺序,因此不能通过索引覆盖(除非您可以解释一个很好的解决方法).
我的问题:
有没有合适的方法来做到这一点?
我真的需要这里的表现,因为它可能需要检查大约10000000000个数字.这可能需要一天的时间,但一个月有点太多了:(.
需要更多信息,随时问,我很乐意提供.
解决方案:
执行O(1)
// Set the _result
Queue<object> _result = new Queue<object>(5000000);
/// Inside the method
// If the count has reach it's max, dequeue the first item
if (_result.Count == 5000000)
_result.Dequeue();
_result.Enqueue(result);
Run Code Online (Sandbox Code Playgroud) 我知道很多次都会问过这种问题.但我没有成功在页面上显示我的数据库中的图像.
我尝试了以下方法.
protected void Page_Load(object sender, EventArgs e)
{
//Get the picture id by url
//Query here
byte[] picture = queryoutput;
Response.ContentType = "image/jpeg";
Response.BinaryWrite(picture);
}
Run Code Online (Sandbox Code Playgroud)
链接获取图像.
<asp:Image runat="server" ImageUrl="~/givememypicture.aspx?pic=3" ID="testimage" />
Run Code Online (Sandbox Code Playgroud)
该<asp:Image />标签位于之间<asp:Content >标签.
当我运行此代码并检入firebug时,它只是声明"无法加载fiven URL".我也尝试将该Respone.Con...(picture);部分放入一个公共方法,并使用给定的字节var调用该方法.
我是asp.net的新手,但我在c#方面有一些经验.我开始真的不喜欢asp.net ...我已经在这个问题上苦苦挣扎了大约20个小时并尝试了很多选择,但没有一个工作.
如果我可以通过同一页面的代码文件填写图片,那将是最好的.调用另一个页面来加载图像对我来说似乎很不合逻辑.
有人可以告诉我这里我做错了什么吗?
解决方案:从处理图像响应的页面上的页面指令中删除了母版页引用.除了aspx文件中的@page指令本身之外,还删除了其他所有内容.
我一直在寻找解决方案已经有一段时间了,并且找不到任何接近的东西.
我想要实现的目标:
我有两个字符串,'a'和'b'.字符串'a'包含数据类型,例如"Boolean".
字符串b包含类似"1"或"False"的值,可以是任何值.
我希望能够将字符串'b'的值存储在具有字符串'a'的数据类型的变量中.
如果我想通过一个结果列表来使用与示例中给出的值相同的结果,结果如下:
Foreach(var value in MyList)
{
if(!var ConvertTo a) //Result would be negative because for "1" for it is not a boolean value, however if 'a' is "Int32" the result would be true.
continue;
else
{//The value "False" is convertable to boolean, so the result would true
Create a variable with datatype boolean with the value 'false'.
}
}
Run Code Online (Sandbox Code Playgroud)
或多或少,我正在寻找一些扼杀黑客版本的TryParse().
我在我的例子中使用了boolean,但这可以是任何数据类型.至少我应该能够处理至少以下数据类型:
我的问题:
是否有可能以任何方式(尝试)将值转换为字符串中给出的任何数据类型?
我希望我的问题和例子很清楚,如果没有,请发表评论.
我想用C#中的任何数字替换\r\n一个\r\n\r\n。抱歉,这是一个愚蠢的问题,但我是regex的新手。
其实我试过了
clearstring = Regex.Replace(clearstring, @"\r\n+", "\r\n\r\n", RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)
但是它没有用,有什么建议吗?我会很感激。
我有以下问题.
我想将字符串分隔为某个符号.这可以是逗号,空格,制表符或其他内容.我将分隔符符号存储在我的依赖项属性中Delimiter.
在我的WPF代码中,我有以下单选按钮,如果Delimiter属于该单选按钮,应该检查它.这是WPF代码:
<RadioButton IsChecked="{Binding ElementName=view, Path=Delimiter, Converter={StaticResource MyConverterToCheckForEquality}, ConverterParameter=\t}" Tag="\t" />
Run Code Online (Sandbox Code Playgroud)
如果我检查转换器中的参数,则值为't'.
我想'\ t'所以我尝试了以下选项:
(注意:我添加了额外的空格和反斜杠以正确显示它).
结果非常令人难过...... Triple和Double反斜杠给了我双反斜杠,Single给我没有.\ 也给了我零反斜杠.
也许最令人沮丧的是,当我使用Tag属性设置分隔符时,\ t工作正常并且在此过程中不会额外转义...
有人可以解释为什么会发生这种情况,为什么这些选项都不起作用以及如何修复它?
更新
当我在multidatatrigger中使用多绑定时,结果是不同的:
<Binding ElementName="view" Path="Delimiter" Converter="{StaticResource MyConverterToCheckForEquality}" ConverterParameter="\\\t" />
Run Code Online (Sandbox Code Playgroud)
我的转换器中的参数值现在为'\\\\\\ t',但我仍然无法使其工作.
我可以替换值,但这意味着我必须在我的代码后面使用不同的变量,这将是非常难看的.我想没有其他解决方案.
我正在尝试通过 Ajax 更改 div 的 ID。
因为 ID 有一个动态值,所以我在 div 中添加了一个类。
我的php代码:
echo '<div id="pagemenu">
<ul id="tabpanel">';
$tel = 0;
while($totaalklanten > -4)
{
$tel++;
echo '<li><a href="#'.$tel.'" name="'.$tel.'" onclick="listklant(\'klant.php\',this.name)">'.$tel.'</a></li>';
$totaalklanten = $totaalklanten - 5;
}
echo '</ul>';
echo '<div class="changeme" id="default">';
//Lots of query of php stuff here to execute
echo '</div>
Run Code Online (Sandbox Code Playgroud)
'changeme' 类的 div 是受害者。
到目前为止我的 Ajax 代码:
xmlhttp = new XMLHttpRequest();
function listklant(serverPage, pagenum)
{
xmlhttp.open("GET", serverPage);
document.getElementsByClassName('changeme').id = pagenum;
alert(document.getElementById(pagenum));
alert(document.getElementsByClassName('changeme').id);
xmlhttp.onreadystatechange = function()
{
if …Run Code Online (Sandbox Code Playgroud) 我已经挣扎了一段时间,但是我无法修复错误.
我在没有任何成功的情况下搜索了互联网,并开始徘徊,如果有可能我想完成的事情.
我希望创建一个包含大量节点的数组,这么大,我需要BigInteger.
我创立LinkedList了最适合我的解决方案,所以我开始使用这段代码.
BigInteger[] numberlist = { 0, 1 };
LinkedList<BigInteger> number = new LinkedList<BigInteger>(numberlist);
for(c = 2; c <= b; c++)
{
numberlist [b] = 1; /* flag numbers to 1 */
}
Run Code Online (Sandbox Code Playgroud)
这意味着将链表中的所有节点都设置为活动状态(1).
变量c和b也是大整数.
我从VS10得到的错误是:
无法将类型'System.Numerics.BigInteger'隐式转换为'int'.存在显式转换(您是否错过了演员?)
问题:
更新
在示例中,我使用c ++作为计数器.这是可变的......
节点列表可能如下所示:
numberlist[2]
numberlist[3]
numberlist[200]
numberlist[20034759044900]
numberlist[23847982344986350]
Run Code Online (Sandbox Code Playgroud)
我将删除已处理的节点.最多我将使用1,5GB的内存.
请回复此更新,我想知道我的想法是否正确.
我也想从错误中吸取教训!
c# ×6
performance ×2
ajax ×1
asp.net ×1
biginteger ×1
collections ×1
converter ×1
data-binding ×1
database ×1
dom ×1
escaping ×1
hashset ×1
html ×1
image ×1
javascript ×1
linked-list ×1
list ×1
memory ×1
php ×1
regex ×1
session ×1
wpf ×1