我在rails项目中遇到了一些性能问题(在rails 2.0.5上运行),例如在我的用户管理页面中.
我的用户模型有很多关系(细节,地址,角色...),他们加载了急切的加载.这会产生非常大的SQL查询,在某些情况下,加载30个用户需要将近一分钟.另一方面,删除急切加载会产生数百个查询,最后我遇到了同样的问题:加载页面速度很慢.
我曾经在Java和Oracle上进行开发,对于我用于创建视图的这种大查询,这些视图随后被缓存以便更快地呈现.维护非常无聊,因为我必须在视图脚本中手动更新数据库字段等...
但它真的有很棒的表现....所以我想知道是否有人试图在活动记录中实现某些东西以利用Mysql视图?
我刚做了一些基本的测试,这是我的观点(这个例子只有几个字段,我有一个标准的Restful Authentication用户表,以及一个用于个人数据的大表"详细信息"):
CREATE VIEW users_vs AS SELECT
users.id ,
users.login ,
users.email ,
details.last_name ,
details.first_name ,
details.phone ,
details.fax ,
FROM `users` LEFT OUTER JOIN `details` ON details.user_id = users.id ;
Run Code Online (Sandbox Code Playgroud)
然后一个模型:
class UsersV < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)
在我的控制台中尝试了一些事情:
u=UsersV.find(:first) # ok !
u=UsersV.find_by_last_name('smith') #=> ok !
us=UsersV.find_all_by_last_name('smith') #=> ok too !
Run Code Online (Sandbox Code Playgroud)
查看日志,简单查询的处理方式与任何表查询相同
当然,那些假模型只会用于读取数据.
我在想:
如果有人已经尝试过吗?
如果这是个好主意?
如果我应该调查类似memcached的东西......
作为那个网络标准的极客,我不喜欢<form runat="server">围绕我整个网页的默认设置.我见过很多没有这些的基于ASP.NET的网页,所以看起来它可以删除而不带走任何功能.怎么样?
我正在编写一个包含大量文件访问权限的Python程序.它运行得非常慢,所以我使用cProfile来找出花费时间的东西.
似乎有很多时间花在Python报告的"{内置方法获取}"上.我不知道这个方法是什么.它是什么,我怎样才能加快我的计划?
我有一个datagrid,当用户将文件拖放到其上时,该数据网格填充了CSV数据.是否可以在空白网格中显示消息,例如"请在此处拖动文件"或"此网格当前为空".当我等到文件被拖动以设置列等时,网格当前显示为深灰色框.
我正在为RC1中的控制器编写一些单元测试.这是我正在测试的控制器的公共签名:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AcceptColleague()
{
Run Code Online (Sandbox Code Playgroud)
AcceptColleague中的实现使用TryUpdateModel(同事)方法从表单字段填充Colleague对象.但是,在尝试对方法进行单元测试时,我在TryUpdateModel行上遇到"未设置为对象实例的对象引用"错误.
这是我的单元测试代码:
// definition
HomeController controller = new HomeController();
IColleagueRepository fakeColleagueRepo = MockRepository.GenerateMock<IColleagueRepository>();
Colleague requestedColleauge = new Colleague();
EmployeeInfo currentUser = new EmployeeInfo();
HttpContextBase fakeHttpContext = MockRepository.GenerateMock<HttpContextBase>();
HttpRequestBase fakeHttpRequest = MockRepository.GenerateMock<HttpRequestBase>();
ControllerContext fakeContext = MockRepository.GenerateMock<ControllerContext>(fakeHttpContext, new RouteData(), controller);
NameValueCollection fakeForm = new NameValueCollection();
// expectations
fakeColleagueRepo.Expect(c => c.Read(1234)).Return(requestedColleauge);
fakeColleagueRepo.Expect(c => c.Update(requestedColleauge));
fakeColleagueRepo.Expect(c => c.Add(new Colleague())).IgnoreArguments().Constraints(Is.NotNull());
fakeContext.Expect(cx => cx.HttpContext).Return(fakeHttpContext);
fakeHttpContext.Expect(hcx => hcx.Request).Return(fakeHttpRequest);
fakeHttpRequest.Expect(hr => hr.Form).Return(fakeForm);
// setup
controller.ColleagueRepository = fakeColleagueRepo;
controller.ControllerContext = fakeContext;
requestedColleauge.TargetEmployeeInfoId = …Run Code Online (Sandbox Code Playgroud) 我有一个.NET应用程序,需要加载一个本地库,其位置由用户指定.PInvoke看起来只会从全局搜索路径(或编译时指定的路径?)加载.最好的方法是创建一个在运行时调用LoadLibrary的C++/CLI程序集吗?
C++/CLI会比C#PInvoking LoadLibrary更简单吗?
我需要在屏幕上显示.NET Compact Framework版本号.我在Windows CE 4.0中使用.NET CF 2.0.
到目前为止,我一直忽略了版本号.我需要在装配中添加任何东西吗?我如何以编程方式检索它?
不幸的是,这不适用于Compact Framework.Application.ProductVersionCompact Framework中不存在该属性.你的答案的最新部分适用.
还有一个问题:这些属性(主要版本,次要版本,构建版本,修订版本)会自动增加,还是只要我想要设置它们?我看到它的方式,修改应该自动增加每个新的构建.
我通过继承MembershipProvider实现自定义成员资格提供程序.我有自己的数据库架构,与aspnet成员资格架构不同.
我没有使用密码字段,我想知道如何覆盖内置的CreateUserWizard控件?
我无法找到有关如何构建与我的自定义成员资格提供程序连接的自己的CreateUserWizrd控件的任何示例.我发现的示例是通过使用控件中的模板来自定义现有的CreateUserWizard.
谢谢
我以DataGridView编程方式生成子类中的所有列.但是,Visual Studio 2008会继续读取我的构造函数类(DataTable使用空内容填充并将其绑定到该类DataGridView)并为InitializeComponent方法中的列生成代码- 在进程设置AutoGenerateColumns中false.
这会导致设计时编译中的错误,这些错误只能通过手动进入设计代码并删除对这些自动生成列的所有引用来解决.
我怎么能阻止这样做呢?
我试过了:
DataGridView实例化对象protected(在之前的帖子中建议引用此站点).net ×3
asp.net ×2
c# ×2
performance ×2
winforms ×2
.net-2.0 ×1
ascii ×1
asp.net-mvc ×1
datagrid ×1
datagridview ×1
directory ×1
latex ×1
loadlibrary ×1
membership ×1
mocking ×1
mysql ×1
native ×1
optimization ×1
pinvoke ×1
profiling ×1
python ×1
ruby ×1
unit-testing ×1
updatemodel ×1
webforms ×1