假设我想创建一个可用于跟踪用户的银行帐户和交易的数据库。可在支票簿应用程序中使用的数据库。
如果我有一个用户表,具有以下属性:
然后我创建一个帐户表,它可以链接到某个用户:
为了进行下一步,我创建一个事务表:
将 user_id 放在事务表中是一个好的选择吗?如果我想获取每个用户的所有交易,这将使查询更清晰,例如:
SELECT * FROM transactions
JOIN users ON users.user_id = transactions.user_id
Run Code Online (Sandbox Code Playgroud)
或者,我可以从帐户表追溯到用户表
SELECT * FROM transactions
JOIN accounts ON accounts.account_id = transactions.account_id
JOIN users ON users.user_id = accounts.user_id
Run Code Online (Sandbox Code Playgroud)
我知道第一个查询更清晰,但这是最好的方法吗?
我担心的是,通过在事务表中添加这个额外的(冗余)列,我浪费了空间,而无需该列即可实现相同的结果。
我有一个使用3个字母的字符串的switch语句.对于很多情况(但不是全部)我只想关注前2个字母.
例如,我希望每个以"FF"开头的代码都处理相同:
switch(code)
{
case "FF(?)":
// Handle it
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
我能在这做什么?我可以使用通配符吗?我是否必须考虑每个FF代码?
出于显而易见的原因,我不希望有这样的代码,这可能会变得非常大:
case "FFA":
case "FFB":
case "FFD":
// Handle it
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种根据自定义字母表对字符串列表进行排序的有效方法.
例如,我有一个字符串字母表,它是一个字符串"bafmxpzv"列表,仅由该字母表中包含的字符组成.
我想要一种方法来排序该列表与其他常见排序类似,但使用此自定义字母表.我怎样才能做到这一点?
我的应用程序中有三个活动
我想使用espresso来测试一系列事件:单击登录活动上的登录按钮,打开主活动,然后单击主活动中的列表项,打开详细活动,然后单击详细信息中的另一个按钮活动.我开始创建这个简单的测试,以获得对listview的引用:
public class LoginActivityTest extends ActivityInstrumentationTestCase2<LoginActivity> {
public LoginActivityTest() {
super(LoginActivity.class);
}
@Override
public void setUp() throws Exception {
super.setUp();
getActivity();
}
public void testSequence() throws Exception {
// Login
onView(withId(R.id.button_log_in)).perform(click());
// Check if MainActivity is loaded
onView(withId(R.id.container)).check(matches(isDisplayed()));
// Check if Fragment is loaded
onView(withId(R.id.list)).check(matches(isDisplayed()));
}
}
Run Code Online (Sandbox Code Playgroud)
在mainActivity onCreate()方法中,我加载一个像这样的片段:
getFragmentManager().beginTransaction()
.add(R.id.container, mListFragment)
.commit();
Run Code Online (Sandbox Code Playgroud)
该ListFragment片段有一个列表(R.id.list),但仍是测试失败了NoMatchingViewException:
android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with id: com.tests.android.development:id/list
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
java android functional-testing android-fragments android-espresso
我正在编写一个使用DataGridView的C#应用程序,我想在每次用户更改那里的数据时验证输入.
我开始使用CellValidating事件,该事件具有非常好的CancelEdit()方法,该方法将单元格返回到其先前的值.但是,每次用户离开单元格时都会触发此事件,无论它是否已更改.
CellValueChanged是否支持对先前值的取消或回滚方法?这样我仍然可以验证数据,但不会浪费时间与不需要它的单元格,但如果数据无效,则不希望牺牲恢复单元格的能力.
这是一些代码:
private void dataGrid1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if(dataGrid1.Columns[e.ColumnIndex].Name == "dateColumn")
{
String input = e.FormattedValue.ToString();
// Split the date from MM/DD/YYYY format
String[] temps = input.Split('/');
try
{
if(temps[2].Length != 4)
MessageBox.Show("The year entered is not the correct length.", "Invalid Year", MessageBoxButtons.OK);
DateTime date = new DateTime(Convert.ToInt32(temps[2]), Convert.ToInt32(temps[0]), Convert.ToInt32(temps[1]));
}
catch (Exception ex) // If exception is thrown, date was invalid
{
MessageBox.Show("The date entered was invalid.", "Invalid date", MessageBoxButtons.OK);
dataGrid1.CancelEdit(); // Set cell value back …Run Code Online (Sandbox Code Playgroud) Visual Studio中是否有一个选项可以将CheckedListBox中的所有项目设置为默认选中?我的意思是我希望在启动时检查所有项目,并且用户可以根据需要取消选择项目.
如果没有,我唯一的选择是在构造函数中以编程方式设置所有项目?
几天来,我一直在努力解决这个问题.我有一台可能有错误的机器.在数据库中,我有错误出现时的开始和结束时间(在unix时间),以及错误类型(数字从5到12).我遇到的问题是多个错误可能同时发生(和重叠).
我的表看起来像这样:
id| type | from | to
1| 6 | 1417179933 | 1417180006
2| 6 | 1417180035 | 1417180065
3| 9 | 1417180304 | 1417180409
4| 6 | 1417180662 | 1417184364
5| 8 | 1417180662 | 1417186832
6| 9 | 1417180662 | 1417184364
7| 12 | 1417180662 | 1417184364
8| 6 | 1417184364 | 1417186832
9| 9 | 1417184364 | 1417188054
Run Code Online (Sandbox Code Playgroud)
我需要找到这台机器的总错误持续时间.我无法总结上表中的所有差异,因为在同一时间间隔内可能出现两个或更多错误.记录按升序排序.
我的猜测是将每个记录(开始和结束时间)与之前进行比较,然后找出以秒为单位的差异.但是,此表可能会随着时间的推移而增长,搜索它是一个问题.
有没有一种聪明的方法在PHP或MySQL中找到机器不工作的总时间,可能在几分钟内?
我想根据条件加入两个表.
表A:
+--------+-------------+------+
| prefix | Destination | rate |
+----------------------+------+
| 56 | Monn | 25 |
| 5602 | Monn M1 | 23 |
| 5604 | Monn M3 | 44 |
| 5607 | Monn M1 | 23 |
| 5625 | Monn M2 | 22 |
| 23 | Xpia | 0.3 |
| 238 | Xpia F3 | 0.9 |
+--------+-------------+------+
Run Code Online (Sandbox Code Playgroud)
表B:
+--------+-------------+------+
| prefix | Destination | rate |
+----------------------+------+
| 56 | Monn …Run Code Online (Sandbox Code Playgroud) 我正在编写一个 chrome 扩展,它将拦截某些下载(当前为 .doc 和 .docx 文件),并获取这些文件并自动将它们上传到您的 Google 驱动程序文件夹。这是我的清单:
{
// Default manifest crap.
"manifest_version": 2,
"name": "App",
"description": "SpartaHack 2016 application",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
// Content security needed to access gapi script.
"content_security_policy": "script-src 'self' https://apis.google.com; object-src 'self'",
// Need to view downloads, and identity for obvious reasons.
// The other two permissions allow the script to access files that are outside our domain.
"permissions": [
"downloads",
"identity",
"http://*/",
"https://*/"
],
// Gives …Run Code Online (Sandbox Code Playgroud) javascript drive google-chrome-extension google-drive-api google-chrome-app
我有一个引用一些静态方法的文件:
class MyViewModel {
fun test() { }
companion object {
private val MY_STRING = ResourceGrabber.grabString(R.string.blah_blah)
}
}
Run Code Online (Sandbox Code Playgroud)
在我对此文件的 JUnit 测试中,我编写了一些代码来模拟设置中的资源抓取器。这将编译并运行,并且以下测试失败,正如我所期望的那样:
@PrepareForTest(ResourceGrabber::class)
@RunWith(PowerMockRunner::class)
class MyViewModelTest {
private lateinit var viewModel: MyViewModel
@Before
fun setup() {
PowerMockito.mockStatic(ResourceGrabber::class.java)
val mockResourceGrabber = Mockito.mock(ResourceGrabber::class.java)
whenever(mockResourceGrabber.grabString(Mockito.anyInt())).thenAnswer { invocation ->
val res: Int? = invocation?.arguments?.get(0) as? Int
TestResourceGrabber.grabString(res)
}
viewModel = MyViewModel()
}
@Test
fun someTest() {
// Fails, as expected.
assertEquals(2, 3)
}
}
Run Code Online (Sandbox Code Playgroud)
这就是事情变得奇怪的地方。我最近了解了自定义 JUnit 规则,您可以使用这些规则来避免跨测试出现一些重复的代码。在这种情况下,我不想将我的资源抓取器工作复制并粘贴到每个使用它的测试套件中,所以我制定了一个自定义规则:
class ResourceGrabberRule : TestRule {
override fun apply(base: …Run Code Online (Sandbox Code Playgroud)