我将很快开始研究xamarin,并将把很多代码从android studio的java转移到c#.
在java中我使用自定义类,它们被赋予参数条件等,将它们转换为SQL语句,然后将结果加载到项目模型中的对象
我不确定的是,linq是过滤此类数据的更好选择.
例如,目前会发生的事情就是沿着这些方向发展
List<Customer> customers = (new CustomerDAO()).get_all()
Run Code Online (Sandbox Code Playgroud)
或者,如果我有条件
List<Customer> customers = (new CustomerDAO()).get(new Condition(CustomerDAO.Code, equals, "code1")
Run Code Online (Sandbox Code Playgroud)
现在让我们假设我已经将类转移到了c#,我希望做一些类似于第二种情况的方法.
所以我可能会写下以下内容:
var customers = from customer
in (new CustomerDAO()).get_all()
where customer.code.equals("code1")
select customer
Run Code Online (Sandbox Code Playgroud)
我知道查询只会在我实际尝试访问客户时执行,但如果我有多次访问客户(让我们说我稍后使用4个foreach循环),get_all方法会被调用4次吗?或者是第一次执行时存储的结果?
它是否更有效(时间明智,因为内存方面可能不是)只保留get_all()方法并使用linq过滤结果?或者使用我现有的设置实际执行
Select * from Customers where code = 'code1'
Run Code Online (Sandbox Code Playgroud)
并将结果加载到对象?
提前感谢您提供的任何帮助
编辑:是的我知道有sqlite.net几乎可以做我的daos做但可能更好,并且在某些时候我可能会转换我的所有对象来使用它,我只需要知道为了知道
我有3个Web服务器.DB
,Web
和Worker
.工人整天都在处理sidekiq流程.
一旦队列超过100,000个工作岗位,我想拥有第二个工人实例,并且我正在努力思考如何做到这一点.(如果队列超过300.000,我需要3名工人,一次又一次).
Worker
拍了拍快照.我需要告诉数据库服务器允许它从这个实例IP接收连接
一旦队列低于20.000,我就可以杀死我的实例.
这是正确的做法还是有更好的方法?我错过了什么吗?
附加问题:
在DB
我只有MySQL和Redis的.没有红宝石或其他任何东西.所以也没有铁轨运行.如果我worker
决定创建另一个worker,那么新的worker需要访问mysql.似乎无法从远程计算机创建一些访问权限,它看起来我需要从数据库服务器创建访问权限.
mysql> show grants;
+-----------------------------------------------------------------------------------------+
| Grants for rails@162.243.10.147 |
+-----------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'rails'@'162.243.10.147' IDENTIFIED BY PASSWORD <secret> |
| GRANT ALL PRIVILEGES ON `followrado`.* TO 'rails'@'162.243.10.147' |
+-----------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql> CREATE USER 'rails'@'162.243.243.127' IDENTIFIED BY 'swag';
ERROR 1227 (42000): Access denied; you need (at least one …
Run Code Online (Sandbox Code Playgroud) 自从我将settings.py
文件更改为子文件夹“设置”中的 3 个不同文件(即基本文件、本地文件和生产文件)后,BASE_DIR
将无法正确显示项目路径。
我希望 BASE_DIR 输出的内容如下:
`PathToProject/Projectname`
Run Code Online (Sandbox Code Playgroud)
我得到了什么(因为我在 base.py 中的“设置”子文件夹中移动了 BASE_DIR:
PathToProject/Projectname/Projectname
这让我很困扰,因为现在它正在寻找其中的static
文件夹Projectname/Projectname
而不是Projectname
我怎样才能正确配置 BASE_DIR 函数来为我提供正确的项目路径?
我在我的应用程序中实现了以下库微调器,即来自xml
<com.weiwangcn.betterspinner.library.material.MaterialBetterSpinner
android:id="@+id/insurer_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_insurer_code"
android:textColor="@color/smart_primary"
android:textColorHint="@color/input_register_hint"
app:met_floatingLabel="normal" />
Run Code Online (Sandbox Code Playgroud)
和java代码
public class testActivity extends Activity implements OnItemSelectedListener
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(adapterView.getContext(), "Selected: " , Toast.LENGTH_LONG).show();
// On selecting a spinner item
String item = adapterView.getItemAtPosition(i).toString();
// Showing selected spinner item
Toast.makeText(adapterView.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)
但是当从菜单中选择一个项目时,onItemSelected不会启动.有关如何成功实施上述图书馆的任何指导将不胜感激.
正如标题所示,我开发了一个函数,给定一个ORDERED升序列表,你只保留距离至少为k个周期的元素,但它会在循环时动态改变迭代器.我被告知这应该像瘟疫一样被避免,尽管我并不完全相信为什么这是一个如此糟糕的想法,但我相信那些我一直倾向于接受培训的人,因此就如何寻求建议避免这种做法.代码如下:
import pandas as pd
from datetime import days
a = pd.Series(range(0,25,1), index=pd.date_range('2011-1-1',periods=25))
store_before_cleanse = a.index
def funz(x,k):
i = 0
while i < len(x)-1:
if (x[i+1]-x[i]).days < k:
x = x[:i+1] + x[i+2:]
i = i-1
i = i + 1
return x
print(funz(store_before_cleanse,10))
Run Code Online (Sandbox Code Playgroud)
您认为可以做些什么来避免它?ps:不要担心没有订购列表的解决方案.将给出的列表将始终以升序方式排序.
我有一个带有离散x轴的图,我想调整比例尺两侧的多余空间,使其在左侧变小,在右侧变大,因此长标签将适合。scale_x_discrete(expand=c(0, 1))
在这里不是我的朋友,因为它总是同时在两侧工作。这个问题是相似的,但是解决了连续的规模问题。
我该如何实现?
set.seed(0)
L <- sapply(LETTERS, function(x) paste0(rep(x, 10), collapse=""))
x <- data.frame(label=L[1:24],
g2 = c("a", "b"),
y = rnorm(24))
x$g2 <- as.factor(x$g2)
x$xpos2 <- as.numeric(x$g2) + .25
# two groups
ggplot(x, aes(x=g2, y=y)) +
geom_boxplot(width=.4) +
geom_point(col="blue") +
geom_text(aes(x=xpos2, label=label, hjust=0))
Run Code Online (Sandbox Code Playgroud)
一直在寻找互联网,但似乎没有找到我的问题的答案.我一直在使用PHPUnit和Mockery来测试Laravel中的控制器.但是,我似乎没有正确地模拟我的基于Eloquent的模型.我确实设法以相同的方式模拟我的Auth :: user(),尽管在下面的测试中没有使用它.
需要测试的AddressController中的函数:
public function edit($id)
{
$user = Auth::user();
$company = Company::where('kvk', $user->kvk)->first();
$address = Address::whereId($id)->first();
if(is_null($address)) {
return abort(404);
}
return view('pages.address.update')
->with(compact('address'));
}
Run Code Online (Sandbox Code Playgroud)
ControllerTest包含setUp和mock方法
abstract class ControllerTest extends TestCase
{
/**
* @var \App\Http\Controllers\Controller
*/
protected $_controller;
public function setUp(){
parent::setUp();
$this->createApplication();
}
public function tearDown()
{
parent::tearDown();
Mockery::close();
}
protected function mock($class)
{
$mock = Mockery::mock($class);
$this->app->instance($class, $mock);
return $mock;
}
}
Run Code Online (Sandbox Code Playgroud)
AddressControllerTest扩展ControllerTest
class AddressControllerTest extends ControllerTest
{
/**
* @var \App\Models\Address
*/
private $_address; …
Run Code Online (Sandbox Code Playgroud) 我为 Scrabble 编写了一个简单的搜索应用程序。从字符串中找出所有可能的单词。置换部分完成。我创建了一个函数 Permute(string) ,它输出一个包含所有排列的数组。
var dictionary=["abc","abcd",ab","dhgd","adbft"];
var input="abcd";
output=Permute(input);
//result:
0:"abcd"
1:"abdc"
2:"acbd"
3:"acdb"
4:"adbc"
5:"adcb"
...etc
Run Code Online (Sandbox Code Playgroud)
现在,我必须检查单词是否存在。我应该尝试所有长度吗?还有其他更有效的方法吗?
//Check all the item of the output array
for(var i=0; i<output.length;i++){
//Check if all length of output
for(var j=2;j<output[i].length;i++)
//Check all these possibilities if they exist in the dictionary
for(word in dictionary){
output[i].substring[1:j]==dictionary[word];
}
}};
Run Code Online (Sandbox Code Playgroud)
我真的无法想象如果字典是 250 000 个单词会多长时间......有没有更好的方法?
我的构建服务中的两个测试失败,在本地运行时不会失败.
我发现当我在mvn clean test
本地执行时,我的测试类的排序顺序是按字母顺序排列的(包和类),但是当在构建服务中运行时,它们看起来是随机的.
我不打算需要一个特定的"订单",所以我绝对担心一个测试先于另一个测试暗示了一个隔离问题.但是,我认为我不能告诉maven按特定顺序运行类.
我该怎么做才能重现?
编辑
我克隆了我的构建计划,但指着一个分叉的仓库(相同的代码),它成功运行,没有失败的测试...
我正在使用EPPlus .NET库(v4.0.4)来解释已保存的Excel工作簿。在一个这样的工作表中,使用Excel的“撇号”技巧将一些空单元格设置为“文本”格式(也就是说,用户在这些单元格中输入了一个撇号,以便Excel将其显示为空白)。
两个此类单元格的示例XML如下:
<c r="F6" s="1" t="inlineStr">
<is>
<t />
</is>
</c>
<c r="G6" s="1" />
Run Code Online (Sandbox Code Playgroud)
在此,F6带有撇号(即是一个空的文本单元格),而G6则真正是空白的。
是否可以inlineStr
使用EPPlus 读取此“内联字符串”()属性或以其他方式区分这两个单元格?所述ExcelRange / ExcelRangeBase类具有如特性Value
,Formula
,Style
等,但检查表示所述两个小区以上也看不出它们之间的任何差异对象时。
我知道我可以通过读取原始XML或使用替代库(也许是ClosedXML或类似库)来手动完成此操作,但是如果可能的话,我想使用EPPlus来执行此操作。