小编Mar*_*rcF的帖子

Spring安全多个hasIPAddress antMatchers

我有以下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)

spring spring-security

12
推荐指数
1
解决办法
1万
查看次数

Axios可以区分"无网络"和"网络断开连接"

Axios是否可以区分以下内容:

  • 请求失败,因为客户端在发出请求时没有网络连接 - (ERR_CONNECTION_REFUSED).
  • 请求失败,因为在发出请求之后收到响应之前网络连接丢失- (ERR_INTERNET_DISCONNECTED).

似乎在这两种情况下,我们所得到的只是一个相当无益的"网络错误"消息......

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)

javascript error-handling axios

12
推荐指数
1
解决办法
3216
查看次数

在C#中序列化和反序列化V.Large字典

我们有一个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)读取字节.

有人可以指出我们做错了什么,因为我们希望加载时间与保存时间相同.

此致,马克

c# dictionary

11
推荐指数
2
解决办法
1771
查看次数

Protobuf.net异常 - 检查元数据时超时

尝试使用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# deadlock protobuf-net

8
推荐指数
2
解决办法
2589
查看次数

Networkstream.Write()阻塞问题

我目前正在测试我编写的托管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所建议的那样.

c# networkstream

6
推荐指数
1
解决办法
2785
查看次数

Protobuf.net内存使用情况

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代内存使用将是值得赞赏的.

c# protobuf-net

6
推荐指数
1
解决办法
1628
查看次数

长时间运行mysql"清理"事务

我一直在尝试调试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)

mysql locking transactions amazon-web-services amazon-rds

6
推荐指数
1
解决办法
2381
查看次数

在页面API帖子中提到Facebook页面

道歉这是一个重复的帖子 - Facebook Graph Api - 作为管理员发布到粉丝页面

图形API逐字表明(https://developers.facebook.com/docs/graph-api/reference/v2.1/page/feed/):

帖子的主体,否则称为状态消息.必须提供链接或消息.该消息可以包含使用以下语法提及的Facebook页面:

 @[page-id]
Run Code Online (Sandbox Code Playgroud)

例如,以下消息将提及内嵌的Facebook开发者页面:

 Test message @[19292868552] tag
Run Code Online (Sandbox Code Playgroud)

如果我使用上述语法发布到页面(我是管理员),使用内联链接的页面ID(我也是管理员)和使用facebook应用程序(我是开发人员)这个似乎不起作用.我的一个例子是:

https://graph.facebook.com/v2.1/page-id1/feed?message=Test+message+@[page-id2]+tag

在我的情况下,标签在上面显示时呈现,即没有链接或提及.到目前为止,我尝试过:

  1. page-id1和page-id2的不同组合.
  2. HTML编码@,[和]符号.
  3. 作为页面或用户发布.
  4. 使用不同的符号@ [page-id:page-name].这不会被渲染,只是变成一个空白区域.

如果有人能够对此有所了解,我必须遗漏一些明显的东西!

facebook facebook-graph-api

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

禁用弹簧启动执行器端点java配置

我想要禁用除健康端点之外的所有执行器端点.所有文档都描述了如何在资源属性中实现此目的:

endpoints.enabled=false
endpoints.health.enabled=true
Run Code Online (Sandbox Code Playgroud)

但我总是喜欢使用内联java配置.有人可以解释我可以在应用程序中配置相同的位置吗?

java spring spring-mvc spring-boot

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

JPEG EOF与EOI标记

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)

jpeg file-format

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

将整数格式化为%d和%s有什么区别?

两者在语法上均有效,但以下两者之间是否应意识到任何重要的根本差异:

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)

在这两种情况下哪里someIntValueint

java string

3
推荐指数
2
解决办法
82
查看次数

内部类访问修饰符不起作用?

我真的不明白为什么,但似乎内部访问修饰符不起作用: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# class internal

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