我有以下spring安全配置代码段:
http
.authorizeRequests()
.antMatchers("/tokens").hasIpAddress("10.0.0.0/16")
....
Run Code Online (Sandbox Code Playgroud)
这有效,但我还想从127.0.0.1授予对"/ tokens"的访问权限.我希望下面的内容可行,但它不会:
http
.authorizeRequests()
.antMatchers("/tokens").hasIpAddress("10.0.0.0/16").hasIpAddress("127.0.0.1/32")
....
Run Code Online (Sandbox Code Playgroud) Axios是否可以区分以下内容:
似乎在这两种情况下,我们所得到的只是一个相当无益的"网络错误"消息......
Axios文档(https://github.com/axios/axios#handling-errors)表明,在后一种情况下,error.request应该填充,但我无法复制存在的任何场景error.request.在上述两个场景中,我得到一个如下所示的错误对象:
{
config: { ... },
response: undefined,
message: "Network Error",
stack: "Error: Network Error at createError (http://localhost:3000/static/js/bundle.js:1636:15) at XMLHttpRequest.handleError (http://localhost:3000/static/js/bundle.js:1170:14)"
}
Run Code Online (Sandbox Code Playgroud) 我们有一个v.large Dictionary<long,uint>(几百万条目)作为高性能C#应用程序的一部分.当应用程序关闭时,我们使用BinaryFormatter和将字典序列化为磁盘MemoryStream.ToArray().序列化在大约30秒内返回并生成大小约为200MB的文件.然后,当我们尝试使用以下代码反序列化字典时:
BinaryFormatter bin = new BinaryFormatter();
Stream stream = File.Open("filePathName", FileMode.Open);
Dictionary<long, uint> allPreviousResults =
(Dictionary<long, uint>)bin.Deserialize(stream);
stream.Close();
Run Code Online (Sandbox Code Playgroud)
返回需要大约15分钟.我们已经尝试了替代方案,慢速部分肯定是bin.Derserialize(stream),即在1秒内从硬盘驱动器(高性能SSD)读取字节.
有人可以指出我们做错了什么,因为我们希望加载时间与保存时间相同.
此致,马克
尝试使用protobuf.net反序列化对象时,有时会收到以下异常.我很惊讶,因为我从来没有多个线程同时反序列化同一个对象,并且protobuf.net源似乎没有使用任何静态对象进行反序列化.例外确实提出了一个解决方案,但我不确定如何实现,所以欢迎一个例子.
Base Exception Type:
System.TimeoutException: Timeout while inspecting metadata; this may indicate a deadlock. This can often be avoided by preparing necessary serializers during application initialization, rather than allowing multiple threads to perform the initial metadata inspection
at ProtoBuf.Meta.RuntimeTypeModel.TakeLock(Boolean& lockTaken)
at ProtoBuf.Meta.RuntimeTypeModel.FindOrAddAuto(Type type, Boolean demand, Boolean addWithContractOnly, Boolean addEvenIfAutoDisabled)
at ProtoBuf.Meta.RuntimeTypeModel.GetKey(Type type, Boolean demand, Boolean getBaseKey)
Inner Exception Type:
System.TimeoutException: Timeout while inspecting metadata; this may indicate a deadlock. This can often be avoided by preparing necessary serializers …Run Code Online (Sandbox Code Playgroud) 我目前正在测试我编写的托管c#网络库,我遇到了偶然的问题.这个问题在networkstream.write()上显示为非常一致(总是在30ms内)5000ms块,可能占所有发送操作的1%.这是在测试环境中,全部在本地运行,每次使用完全相同的数据包大小(2MB).在客户端,我不断将以下内容写入连接的网络流:
tcpClientNetworkStream.Write(headerBytes, 0, headerBytes.Length);
tcpClientNetworkStream.Write(dataBytes, 0, dataBytes.Length);
Run Code Online (Sandbox Code Playgroud)
在服务器端,我使用异步读取等待数据.一旦数据出现,我在tcpClientNetworkStream.DataAvailable上使用while循环,直到收到所有数据.
我知道如果缓冲区已满,networkstream.write()可能会阻塞,但如果这是问题我想不出更快的方法在服务器端清除它们(发送和接收缓冲区大小默认为8192字节) .块如此一致的事实似乎很奇怪.我的第一个想法可能是某种形式的Thread.Sleep但是进行完整的项目搜索没有显示.如果有人能帮助阐明这个问题,那将非常感激.
渣
编辑添加:一个似乎让问题消失的黑客攻击如下(尽管由于BlockCopy而导致相关的性能下降):
byte[] bytesToSend = new byte[headerBytes.Length + dataBytes.Length];
Buffer.BlockCopy(headerBytes, 0, bytesToSend, 0, headerBytes.Length);
Buffer.BlockCopy(dataBytes, 0, bytesToSend, headerBytes.Length, dataBytes.Length);
tcpClientNetworkStream.Write(bytesToSend, 0, bytesToSend.Length);
Run Code Online (Sandbox Code Playgroud)
编辑add2:我也通过使用两个异步写入和两者之间的线程信号来重现问题.目前我唯一的解决方案就是上面编辑中的单一写操作.
编辑add3:好的,另一个可能的修复如下.我仍然有兴趣知道为什么连续写它会像它一样"阻塞".
BufferedStream sendStream = new BufferedStream(tcpClientNetworkStream);
sendStream.Write(bytesToSend, 0, bytesToSend.Length);
sendStream.Write(packet.PacketData, 0, packet.PacketData.Length);
sendStream.Flush();
Run Code Online (Sandbox Code Playgroud)
编辑add4:经过进一步的广泛测试后,'edit to add3'中的解决方案不会使问题消失,只会将发生率降低到约0.1%.好多了但远没有解决.我将使用阻塞读取替换异步读取,然后查看是否对其进行排序,如PaulF所建议的那样.
Heyup.protobuf.net的长期爱好者.
但是问题很快.我有一个高度多线程的C#应用程序,可以反序列化大约100个对象/秒,大约50MB /秒.我看到非常大的内存使用量,远远超过我正在反序列化的内存.我通过'Red Gate ANTS Memory Profiler'运行应用程序,由于protobuf(超过50%的应用程序使用),它向我展示了大量的第2代内存对象.大多数对象都是int值,并与以下内容链接:
- TypeModel.TryDeserializeList()
- ProtoBuf.Meta.BasicList
Run Code Online (Sandbox Code Playgroud)
任何帮助减少这个第2代内存使用将是值得赞赏的.
渣
我一直在尝试调试MySQL(AWS RDS)v5.6.19a中的"锁定等待超时超时"错误,当我尝试使用主ID选择行进行更新时偶尔会抛出该错误,即:
SELECT primary_id FROM tbl_widgets WHERE primary_id = 5 FOR UPDATE
Run Code Online (Sandbox Code Playgroud)
经过几个小时的调试后,我已经排除了我的应用程序的另一部分"直接"锁定同一行(这是明显的罪魁祸首).因此我开始深入研究mysql锁定的兔子洞,并注意到抛出的"锁定等待超时超时"错误与以下信息提供的信息之间存在以下相关性:
SHOW ENGINE INNODB STATUS;
Run Code Online (Sandbox Code Playgroud)
在清理状态中似乎存在长时间运行的TRANSACTION,其锁定缓慢增加的行数达10分钟,这里是来自10个手动INNODB STATUS查询的此事务的相关行:
2015-08-19 13:29:04
---TRANSACTION 25861246681, ACTIVE 158 sec
10 lock struct(s), heap size 1184, 21 row lock(s), undo log entries 20
MySQL thread id 5110120, OS thread handle 0x2ba082506700, query id 7146839061 10.0.1.154 mfuser cleaning up
Trx read view will not see trx with id >= 25861246682, sees < 25861246682
2015-08-19 13:29:42
---TRANSACTION 25861246681, ACTIVE 196 sec
13 lock struct(s), …Run Code Online (Sandbox Code Playgroud) 道歉这是一个重复的帖子 - Facebook Graph Api - 作为管理员发布到粉丝页面
图形API逐字表明(https://developers.facebook.com/docs/graph-api/reference/v2.1/page/feed/):
帖子的主体,否则称为状态消息.必须提供链接或消息.该消息可以包含使用以下语法提及的Facebook页面:
Run Code Online (Sandbox Code Playgroud)@[page-id]例如,以下消息将提及内嵌的Facebook开发者页面:
Run Code Online (Sandbox Code Playgroud)Test message @[19292868552] tag
如果我使用上述语法发布到页面(我是管理员),使用内联链接的页面ID(我也是管理员)和使用facebook应用程序(我是开发人员)这个似乎不起作用.我的一个例子是:
https://graph.facebook.com/v2.1/page-id1/feed?message=Test+message+@[page-id2]+tag
在我的情况下,标签在上面显示时呈现,即没有链接或提及.到目前为止,我尝试过:
如果有人能够对此有所了解,我必须遗漏一些明显的东西!
我想要禁用除健康端点之外的所有执行器端点.所有文档都描述了如何在资源属性中实现此目的:
endpoints.enabled=false
endpoints.health.enabled=true
Run Code Online (Sandbox Code Playgroud)
但我总是喜欢使用内联java配置.有人可以解释我可以在应用程序中配置相同的位置吗?
的JPEG文件签名指出JPEG EOI(图像的结束)标记是由最后给出FF D9.但是我偶尔会遇到这样的EOI之后也有少量数据的JPEG(在本例中02 24 ...):
FF D8 FF E1
...
...
FF D9
02 24 02 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 48 00 00 00 00 00 00 00 00 00 00 00 00 27 10 00 00 00 00 00 00 00 00 27 10 00 00 00 00 27 10 00 00 27 10 00 00 00 00 00 …Run Code Online (Sandbox Code Playgroud) 两者在语法上均有效,但以下两者之间是否应意识到任何重要的根本差异:
String result = String.format("Here is a number - %s", someIntValue);
Run Code Online (Sandbox Code Playgroud)
vs:
String result = String.format("Here is a number - %d", someIntValue);
Run Code Online (Sandbox Code Playgroud)
在这两种情况下哪里someIntValue是int?
我真的不明白为什么,但似乎内部访问修饰符不起作用:S
我看过这个教程:http: //msdn.microsoft.com/en-us/library/7c5ka91b(v=vs.110).aspx
但对我来说,它编译.另外,我买了一本图书画报C#2012.作者解释了内部课程等等......但是,它仍然没有做任何事情.
这是我的完整代码,即使是内部访问也是如此.
//Program.cs
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Class1 myclass = new Class1(); //works
myclass.display(); //works
myclass.display2(); //works even though its not public :S
Console.Read();
}
}
}
Run Code Online (Sandbox Code Playgroud)
-
//Class1.cs
namespace ConsoleApplication1
{
internal class Class1
{
public void display()
{
Console.WriteLine("display()");
}
internal void display2()
{
Console.WriteLine("display2()");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我甚至可以访问函数internal void display2():S
c# ×5
java ×2
protobuf-net ×2
spring ×2
amazon-rds ×1
axios ×1
class ×1
deadlock ×1
dictionary ×1
facebook ×1
file-format ×1
internal ×1
javascript ×1
jpeg ×1
locking ×1
mysql ×1
spring-boot ×1
spring-mvc ×1
string ×1
transactions ×1