- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以我现在有这样的东西 http://codepen.io/anon/pen/bBgVOL
它获取一个位置,将其传递给 GET ajax 调用,该调用返回纬度/经度,然后将其传递给我的 Controller 。 (是的,我知道这很乱)
@RequestMapping(value = "/rentals", method = RequestMethod.GET)
public String rentResults(@RequestParam(value = "page", required = false) Integer pageNumber, @RequestParam(value = "lat", required = false) String lat, @RequestParam(value = "lng", required = false) String lng, @RequestParam(value = "rad", required = false) String rad, Map model) {
int total = 25;
if (pageNumber == null) {
pageNumber = 1;
} else {
pageNumber = (pageNumber - 1) * total + 1;
}
List<ForRent> rentals = new ArrayList();
int count;
if (lat == null && lng == null && rad == null) {
rentals = forRentDao.getRentalsByPage(pageNumber, total);
count = forRentDao.getNumOfRentals();
} else {
count = forRentDao.RentalRadiusCount(lat, lng, rad);
rentals = forRentDao.RentalRadius(lat, lng, rad, pageNumber, total);
String latParam = "&lat=" + lat;
String lngParam = "&lng=" + lng;
String radParam = "&rad=" + rad;
model.put("latParam", latParam);
model.put("lngParam", lngParam);
model.put("radParam", radParam);
}
int page;
if (count % total == 0) {
page = (count / total);
} else {
page = 1 + (count / total);
}
List<Integer> pages = new ArrayList();
for (int i = 1; i <= page; i++) {
pages.add(i);
}
model.put("pages", pages);
model.put("rentals", rentals);
boolean rent = true;
model.put("rent", rent);
return "rent";
}
js
function initMap() {
var input = /** @type {!HTMLInputElement} */(
document.getElementById('address'));
var autocomplete = new google.maps.places.Autocomplete(input);
};
$('#searchRadius').on('click', function (e) {
var lati;
var lng;
var address = $('#address').val();
var rad = $('#radius').val();
var select = document.getElementById('sel');
var choice = select.value;
e.preventDefault();
$.ajax({
type: "GET",
url: "http://www.mapquestapi.com/geocoding/v1/address?key=&location=" + address,
beforeSend: function (xhr) {
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-type", "application/json");
},
success: function postForm(response) {
lati = response.results[0].locations[0].latLng.lat;
lng = response.results[0].locations[0].latLng.lng;
if (rad == null) {
rad = '10';
}
console.log(lati, lng, rad);
var data = JSON.stringify({
lat: lati,
lng: lng,
rad: rad
});
if (choice == 1) {
$.ajax({
url: contextRoot + "/map/radius",
type: "POST",
data: data,
dataType: 'json',
beforeSend: function (xhr) {
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-type", "application/json");
},
success: function (data, status) {
console.log(data);
window.location = contextRoot + "/rent/rentals?lat=" + data.lat + "&lng=" + data.lng + "&rad=" + data.rad;
},
error: function (data, status) {
alert("bad api call");
console.log(status);
}
});
}
},
error: function (data, status) {
console.log(data.errors);
}}
);
});
所以现在它要么返回没有纬度/经度/半径参数的租赁列表,要么返回带有应用参数的列表。
我需要添加大约 5-10 个参数(例如 http://codepen.io/anon/pen/QGdjoB )
我现在设置 Controller 的方式很可能不起作用,并且将来会非常令人头痛,因为我需要大量基于参数的 if/else 语句。我现在正在使用 SQL 查询过滤数据。返回所有数据并在内存中过滤它是否会更好,或者是否有更好/更有效的方法来设置此 Controller 响应?
谢谢!
最佳答案
您的数据库将针对搜索和过滤进行优化;这是它的主要用例。此外,数据库将能够访问 Java 无法访问的索引。此外,该数据库可能会实现比您在 Java 中尝试的任何搜索更快的搜索。例如,数据库的搜索实现可能会使用并发性。
但这并不是完全黑白分明的。也许数据库位于非常慢的硬件上;在这种情况下:也许 Java 应用程序服务器可以更快地进行过滤。也许数据库位于机械硬盘上,因此随机访问速度很慢(这会使其不善于利用索引……尽管 Java 根本没有任何索引)。
我仍然建议将工作推送到数据库,因为这就是它的用途。
<小时/>当然,也许您的搜索/过滤条件不太适合关系数据库模型。考虑具有数据依赖性的过滤条件 - 例如“查找存在旧车的每辆车”。这在 SQL 中有点笨拙(我认为很慢)。数据库仅在其设计的工作中才快。
如果性能实际上很重要,请对其进行基准测试。尝试两种方法,并进行测量。
如果性能并不重要:问问自己哪些代码更难维护。以动态、参数化的方式构建 SQL 查询可能会变得非常难看。但在 Java 中操作数据结构也可能变得非常难看。
关于java - 使用多个参数过滤数据的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40683033/
简而言之:我想从可变参数模板参数中提取各种选项,但不仅通过标签而且通过那些参数的索引,这些参数是未知的 标签。我喜欢 boost 中的方法(例如 heap 或 lockfree 策略),但想让它与 S
我可以对单元格中的 excel IF 语句提供一些帮助吗? 它在做什么? 对“BaselineAmount”进行了哪些评估? =IF(BaselineAmount, (Variance/Baselin
我正在使用以下方法: public async Task Save(Foo foo,out int param) { ....... MySqlParameter prmparamID
我正在使用 CodeGear RAD Studio IDE。 为了使用命令行参数测试我的应用程序,我多次使用了“运行 -> 参数”菜单中的“参数”字段。 但是每次我给它提供一个新值时,它都无法从“下拉
我已经为信用卡类编写了一些代码,粘贴在下面。我有一个接受上述变量的构造函数,并且正在研究一些方法将这些变量格式化为字符串,以便最终输出将类似于 号码:1234 5678 9012 3456 截止日期:
MySql IN 参数 - 在存储过程中使用时,VarChar IN 参数 val 是否需要单引号? 我已经像平常一样创建了经典 ASP 代码,但我没有更新该列。 我需要引用 VarChar 参数吗?
给出了下面的开始,但似乎不知道如何完成它。本质上,如果我调用 myTest([one, Two, Three], 2); 它应该返回元素 third。必须使用for循环来找到我的解决方案。 funct
将 1113355579999 作为参数传递时,该值在函数内部变为 959050335。 调用(main.c): printf("%d\n", FindCommonDigit(111335557999
这个问题在这里已经有了答案: Is Java "pass-by-reference" or "pass-by-value"? (92 个回答) 关闭9年前。 public class StackOve
我真的很困惑,当像 1 == scanf("%lg", &entry) 交换为 scanf("%lg", &entry) == 1 没有区别。我的实验书上说的是前者,而我觉得后者是可以理解的。 1 =
我正在尝试使用调用 SetupDiGetDeviceRegistryProperty 的函数使用德尔福 7。该调用来自示例函数 SetupEnumAvailableComPorts .它看起来像这样:
我需要在现有项目上实现一些事件的显示。我无法更改数据库结构。 在我的 Controller 中,我(从 ajax 请求)传递了一个时间戳,并且我需要显示之前的 8 个事件。因此,如果时间戳是(转换后)
rails 新手。按照多态关联的教程,我遇到了这个以在create 和destroy 中设置@client。 @client = Client.find(params[:client_id] || p
通过将 VM 参数设置为 -Xmx1024m,我能够通过 Eclipse 运行 Java 程序-Xms256M。现在我想通过 Windows 中的 .bat 文件运行相同的 Java 程序 (jar)
我有一个 Delphi DLL,它在被 Delphi 应用程序调用时工作并导出声明为的方法: Procedure ProduceOutput(request,inputs:widestring; va
浏览完文档和示例后,我还没有弄清楚 schema.yaml 文件中的参数到底用在哪里。 在此处使用 AWS 代码示例:https://github.com/aws-samples/aws-proton
程序参数: procedure get_user_profile ( i_attuid in ras_user.attuid%type, i_data_group in data_g
我有一个字符串作为参数传递给我的存储过程。 dim AgentString as String = " 'test1', 'test2', 'test3' " 我想在 IN 中使用该参数声明。 AND
这个问题已经有答案了: When should I use "this" in a class? (17 个回答) 已关闭 6 年前。 我运行了一些java代码,我看到了一些我不太明白的东西。为什么下
我输入 scroll(0,10,200,10);但是当它运行时,它会传递字符串“xxpos”或“yypos”,我确实在没有撇号的情况下尝试过,但它就是行不通。 scroll = function(xp
我是一名优秀的程序员,十分优秀!