今天我用YSlow检查了我网站的性能统计数据.我收到了警告(或可能是错误),如下所示
Add Expires headers
There are 15 static components without a far-future expiration date.
* (no expires) http://www.example.com/video/css/global.css
* (no expires) http://www.example.com/video/js/global.js
* (no expires) http://www.example.com/video/images/main-bg.png
Run Code Online (Sandbox Code Playgroud)
这意味着什么以及如何在PHP和ASP.NET中实现这一点.我在共享托管服务器上,所以请告诉我一些使用代码执行此操作的方法,因为我无法在服务器端进行任何修改.
如果我将使标题过期,那么有可能如果我在CSS中进行更改,那么用户将无法立即获取它们,因为css和其他文件被缓存一段时间限制(1个月,一周).是吗?
使用expire头是否有任何缺点?
使用套接字在两个服务器之间发送数据是一个好主意,还是应该使用MQ之类的东西来移动数据.
我的问题:如果我只需要/确保交付数据,那么套接字是否可靠?
还有其他解决方案吗?
谢谢.
表格1:
col1 | col2
-------------
0 value1
1 value1
2 value1
0 value2
1 value2
2 value3
Run Code Online (Sandbox Code Playgroud)
主键是col1和col2在一起
表2:
col1 | col3
-------------
0 name1
1 name2
2 name3
Run Code Online (Sandbox Code Playgroud)
主键是col1.table1中的col1表示table2中的col1.
如果col1 + col2密钥对尚不存在,我需要一个mysql查询,该查询遍历table1中的每个不同col2,并为table2中的每个col1 INSERTS一列.
所以基本上在运行此查询后,table2应该看起来一样,table1应该如下所示:
col1 | col2
-------------
0 value1
1 value1
2 value1
0 value2
1 value2
2 value2
0 value3
1 value3
2 value3
Run Code Online (Sandbox Code Playgroud)
我知道如何用PHP中的循环来做到这一点,但我正试图摆脱学习更多的SQL.
我正在尝试对使用成员资格提供程序更新用户详细信息的控制器操作进行单元测试.我使用的Moq到目前为止一直很容易使用.
问题是我似乎无法模拟对不返回任何内容的方法的调用.
<TestMethod()> _
Public Sub Can_Update_User()
' Arrange
_membershipService.Setup(Function(x) x.UpdateUser(It.IsAny(Of MembershipUser)))
Dim controller As New UsersController(_membershipService.Object, _roleProvider.Object, _supportWorksService.Object, _portalClientService.Object)
' Act
Dim result As ViewResult = controller.Edit("testUser", New FormCollection)
' Assert
Assert.AreEqual("Index", result.ViewName)
End Sub
Run Code Online (Sandbox Code Playgroud)
模拟的成员资格服务的设置将无法编译,错误是:
重载决策失败,因为无法使用以下参数调用可访问的"Setup":
'公共函数设置(Of TResult)(表达式为System.Linq.Expressions.Expression(Of System.Func(Of Services.IMembershipService,TResult)))作为Moq.Language.Flow.ISetup(Of Services.IMembershipService,TResult)' :表达式不会产生值.
'公共函数设置(Of TResult)(表达式为System.Linq.Expressions.Expression(Of System.Func(Of Services.IMembershipService,TResult)))作为Moq.Language.Flow.ISetup(Of Services.IMembershipService,TResult)' :无法从这些参数推断出类型参数的数据类型.明确指定数据类型可能会更正此错误.
'公共函数设置(表达式为System.Linq.Expressions.Expression(Of System.Action(Of Services.IMembershipService)))作为Moq.Language.Flow.ISetup(Of Services.IMembershipService)':表达式不生成值.
我错过了什么?我是否必须创建一个假类,而不是在我的班级有一个我想要调用它的方法时使用Moq?
编辑:
好吧,一点点阅读表明这是由于使用Function()必须有结果的lambda在VB中表达的方式.
有没有人为此找到了解决办法,还是我不得不放弃Moq伪造方法?
对于子进程,可以使用wait()和waitpid()函数暂停当前进程的执行,直到子进程退出.但是此功能不能用于非子进程.
还有其他功能,可以等待退出任何进程吗?
快速版:
如果我拥有的唯一信息是每个上升沿出现的时间,我可以用什么算法来确定两个不同频率的方波信号之间的"相位差" ?
详细版本:
我正在开发一个嵌入式软件项目,我遇到了一个有趣的问题.我从两个霍尔效应速度传感器收集数据,每个传感器都针对两个啮合齿轮中的一个,如下图所示:
啮合齿轮和脉冲信号http://img291.imageshack.us/img291/4905/gears.png
注意:
正如Jaime指出的那样,该图中的信号实际上具有相同的频率.真正的硬件具有两个靶的齿轮,其中的一些是由轴代替啮合齿连接在几个传动级,因此我做有两个方波具有不同频率的结束,和它们之间的比率仍然是一个常数.我想简化图表来解决问题,但看起来我简化了太多了!
/注意
速度传感器输出方波信号,其频率与每个齿轮的转速成正比.当单个齿轮齿的前(和后)边缘经过传感器时,出现方波的上升(和下降)边缘.
我知道每个齿轮上有多少齿,根据这些信息,我能够根据方波信号的频率精确测量每个齿轮的转速.
为了测量频率,我将每个速度传感器信号连接到嵌入式控制器上的高速捕获定时器引脚.捕获定时器自动检测方波信号的上升沿,加载一个寄存器,其值表示转换发生的时间,并触发中断.每个信号的捕获点在图中以黄色显示.中断服务程序看起来像这样:
struct
{
long previousTime;
int frequency;
}
sensors[2];
void CaptureTimer_Interrupt(int channel, long transitionTime)
{
long timeDifference = transitionTime - sensors[channel].previousTime;
sensors[channel].frequency = CONVERSION_FACTOR / timeDifference;
sensors[channel].previousTime = transitionTime;
}
Run Code Online (Sandbox Code Playgroud)
我想做什么:
我希望能够检测出这两个方波信号的相对时序的微小差异.由于缺乏更好的术语,我称之为"相位差".如果两个信号具有完全相同的频率,则这将是直截了当的,并且相位差将是正确的术语.
这就是我所得到的:如果我要在很长一段时间内记录这两个信号,然后人为地减慢(或"伸展")高速(蓝色)信号16/9,它将具有与低速(红色)信号完全相同的频率,并且这两个信号将具有一些可测量的相位差,即红色信号中断和蓝色信号中断之间的时间差.我想计算相同的时间差(或等价的东西),而不必长时间记录信号.嵌入式控制器的资源有限,因此不能存储过去转换时间的大型数组.
有没有人遇到过这个?实际项目有几个这样的齿轮和传感器安排,所以我正在寻找一个优雅的算法,我可以重用.提前致谢!
我有2个表单(Form1和Form2)和一个类(Class1).Form1包含一个按钮(Button1),Form2包含一个RichTextBox(textBox1)当我在Form1上按下Button1时,我想要调用方法(DoSomethingWithText).我一直得到"NullReferenceException - 对象引用未设置为对象的实例".这是一个代码示例:
Form1中:
namespace Test1
{
public partial class Form1 : Form
{
Form2 frm2;
Class1 cl;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
frm2 = new Form2();
cl.DoSomethingWithText();
frm2.Show()
}
}
}
Run Code Online (Sandbox Code Playgroud)
1类:
namespace Test1
{
class Class1
{
Test1.Form2 f2;
public void DoSomethingWithText()
{
f2.richTextBox1.Text = "Blah blah blah";
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何在课堂中调用此方法?任何帮助是极大的赞赏.
我有一个名为A的活动,在选择菜单项0时,它产生服务B,它在新线程中启动一个可运行的C. 我在活动A中有一个TextView,我想在线程C中访问它.
我已经尝试将TextView作为公共静态字段,但这会产生以下错误:
07-21 07:26:25.723: ERROR/AndroidRuntime(1975): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
07-21 07:26:25.723: ERROR/AndroidRuntime(1975): at android.view.ViewRoot.checkThread(ViewRoot.java:2440)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975): at android.view.ViewRoot.invalidateChild(ViewRoot.java:522)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975): at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:540)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975): at android.view.ViewGroup.invalidateChild(ViewGroup.java:2332)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975): at android.view.View.invalidate(View.java:4437)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975): at android.widget.TextView.updateAfterEdit(TextView.java:4593)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975): at android.widget.TextView.handleTextChanged(TextView.java:5932)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975): at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:6081)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975): at android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:889)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975): at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975): at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432) …Run Code Online (Sandbox Code Playgroud)