我正在使用.NET framework 4.5.1 Linq to SQL.
我首先使用代码生成此产品类:
public class Part
{
public int PartID { get; set; }
[Required(ErrorMessage = "xxx")]
public string Title { get; set; }
[MaxLength(50)]
[Index(IsClustered = false, IsUnique = false,Order =1)]
public string Part_Number { get; set; }
[MaxLength(50)]
[Index(IsClustered = false, IsUnique = false, Order = 2)]
public string Manufacturer_Number { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我在数据库中有大约250万个这样的实体.
第一种方法
var query = db.Parts.Where(s => s.Manufacturer_Number == sstring).ToList();
query.AddRange(db.Parts.Where(s => s.Part_Number == sstring).ToList());
query.AddRange(db.Parts.Where(s => s.Title == …Run Code Online (Sandbox Code Playgroud) 上下文:我正在编写一个高性能的C++ 11应用程序,其中一部分是删除非活动连接.为此,我在我的连接对象中存储了"最后一个活动"时间戳,我在执行操作时会更新该时间戳.然后我有一个计时器,每隔几秒运行一次,循环遍历所有会话,并删除不活动的计时器.
目前我正在使用此代码获取当前时间戳:
timestamp = duration_cast<milliseconds>(system_clock::now().time_since_epoch()).count()
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更快的方法吗?更快,我的意思是获取时间戳本身的性能,而不是时间戳的分辨率.
对于我的具体应用,分辨率并不重要,它可能会低至一秒钟.此外,utc/local无关紧要,我只使用时间戳将其与其他时间戳进行比较,这是通过相同的方法获得的.
我想保持跨平台,但也欢迎使用条件编译进行特定于平台的优化.
我正在尝试将我的一些旧项目从TPLThreadPool和独立移动Thread到 TPL Task,因为它支持一些非常方便的功能,例如延续 with Task.ContinueWith(以及从 C# 5 with async\await)、更好的取消、异常捕获等。我很想在我的项目中使用它们。但是我已经看到了潜在的问题,主要是同步问题。
我写了一些代码来显示生产者/消费者问题,使用经典的独立Thread:
class ThreadSynchronizationTest
{
private int CurrentNumber { get; set; }
private object Synchro { get; set; }
private Queue<int> WaitingNumbers { get; set; }
public void TestSynchronization()
{
Synchro = new object();
WaitingNumbers = new Queue<int>();
var producerThread = new Thread(RunProducer);
var consumerThread = new Thread(RunConsumer);
producerThread.Start();
consumerThread.Start();
producerThread.Join();
consumerThread.Join();
}
private int ProduceNumber()
{
CurrentNumber++;
// Long running method. Sleeping …Run Code Online (Sandbox Code Playgroud) .net c# multithreading synchronization task-parallel-library
在测试一个 JavaScript 项目的性能时,我注意到一种非常奇特的行为 - JavaScript 成员访问性能似乎很大程度上受到它们所在范围的影响。我编写了一些性能测试,结果相差多个数量级。
我在 Windows 10 64 位上使用以下浏览器进行了测试:
以下是我运行的最相关的测试及其各自的结果:
// Code running on global scope, accessing a variable on global scope
// Google Chrome: 63000 ms.
// Mozilla Firefox: 57000 ms.
// Microsoft Edge: 21000 ms.
var begin = performance.now();
var i;
for(i = 0; i < 100000000; i++) { …Run Code Online (Sandbox Code Playgroud) 只是古玩。我正在查看互联网上的一个网络项目。
而代码流程是这样的:
[RoutePrefix("/person")]
public class PersonController : ApiController
{
//....
[Route("/register")]
public IHttpACtionResult RegisterPerson(PersonDto personDto)
{
//....
}
//....
}
Run Code Online (Sandbox Code Playgroud)
注意到上面的代码了吗?没有[HttpGet()]或[HttpPost()]指定。然而,上面的代码在GET调用时失败,但对POST调用有效。
任何想法如何解决此方法的 HTTP-Verb ?
注意:我知道如果方法名以GETor开头POST,则相应地通过HTTPGetor调用该方法HTTPPost。但是这里的方法名称以Register....
任何想法这是如何工作的?
我试图让我的 SSL 服务器同时支持 TLS 1.1 和 TLS 1.2,但不支持早期版本。
这是我配置 SSL 上下文的方式:
// Here io is an instance of io_service
boost::asio::ssl::context ctx(io, boost::asio::ssl::context::tlsv12_server);
ctx.use_certificate_chain_file("./certs.pem");
ctx.use_private_key_file("./key.pem", ssl::context::pem);
SSL_CTX_set_cipher_list(ctx.native_handle(), "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS");
ctx.set_options(boost::asio::ssl::context::default_workarounds
| boost::asio::ssl::context::no_sslv2
| boost::asio::ssl::context::no_sslv3
| boost::asio::ssl::context::no_tlsv1
| boost::asio::ssl::context::single_dh_use
| SSL_OP_CIPHER_SERVER_PREFERENCE);
ctx.clear_options(boost::asio::ssl::context::no_tlsv1_1);
// Creating socket:
using ssl_socket = boost::asio::ssl::stream<boost::asio::ip::tcp::socket>;
auto sock = std::make_unique<ssl_socket>(io, ctx);
Run Code Online (Sandbox Code Playgroud)
我什至试图清除该no_tlsv1_1选项,如果它以某种方式被默认设置。即使我将配置减少到:
ctx.use_certificate_chain_file("./certs.pem");
ctx.use_private_key_file("./key.pem", ssl::context::pem);
Run Code Online (Sandbox Code Playgroud)
尝试与 TLS 1.1 客户端连接时,async_handshake回调仍会给出错误代码asio.ssl:336109835, wrong version number。与 TLS 1.2 客户端连接时,一切正常。
如果构建SSL背景下,当我从改变的第二个参数tlsv12_server来tlsv11_server然后TLS 1.1的作品不错,但TLS 1.2变为不可用。
我已经尝试过 Boost …
在我的项目中,我正在使用boost::asio网络和线程管理.我想使用现代C++的一些功能,例如共享指针.
有两种选择:boost::shared_ptr因为我已经在使用Boost,std::shared_ptr因为我使用的是C++ 11编译器.据我所知,这些基本上是等价的,但它们彼此不相容.
我已经读过我应该更喜欢Boost上的标准库组件,而不是毫无意义地使用外部依赖.但是我仍然会使用Boost(至少直到他们决定将ASIO集成到标准库中),所以我仍然需要依赖.
共享指针只是一个例子,这个问题适用于标准库从升压接管所有功能,如function,bind,thread,等.
鉴于我的情况,这是该功能的首选实现?有没有关于选择的问题,在使用其他Boost或标准库组件时,我需要特别使用Boost或标准库版本?
我最近从Microsoft编译器切换到GCC.在很多事情中,我注意到它std::make_unique变得不可用了.这显然是因为make_unique它不是C++ 11标准的一部分,而且恰好将Microsoft作为扩展包含在内.
我们计划很快转向C++ 14,但同时我写了这个"shim"函数并将其放入std.
namespace std
{
template<typename T, typename... TArgs>
unique_ptr<T> make_unique(TArgs&&... args)
{
return std::unique_ptr<T>(new T(std::forward<TArgs>(args)...));
}
}
Run Code Online (Sandbox Code Playgroud)
这解决了gcc上的问题.但是,我认为它会在微软方面引起问题,因为它将是一个重复的定义.
有没有办法将功能正确地填充到std中,这样就不会对不同的编译器/ C++标准造成麻烦?我环顾四周,没有拿出任何东西.对于特定的标准功能,我想也许就像一个包含守卫?
#ifndef MAKE_UNIQUE_DEFINED
#define MAKE_UNIQUE_DEFINED
// Define make_unique
#endif
Run Code Online (Sandbox Code Playgroud)
可悲的是,它似乎std没有定义包含特定功能的警卫.还有什么我可以做的,以使这更正确和编译器/ C++标准不可知?
c++ ×4
.net ×3
c# ×3
boost ×2
c++11 ×2
performance ×2
boost-asio ×1
http ×1
javascript ×1
linq-to-sql ×1
openssl ×1
scope ×1
ssl ×1
std ×1
time ×1