小编Iva*_*var的帖子

在自定义视图中绘制时支持 RTL 语言环境

当我使用 Canvas 在我的自定义视图中绘制时,是否有一种简单的方法可以在不手动反转坐标计算的情况下为 RTL 区域设置绘制?

作为一个非常人为的例子,这是一个自定义视图,在 onDraw() 中包含以下内容:

int w = getWidth();
int h = getHeight();
canvas.save();

mPaint.setColor(Color.RED);
canvas.drawRect(0, 0, w / 2, h, mPaint);
mPaint.setColor(Color.BLUE);
canvas.drawRect(w / 2, 0, w, h, mPaint);

int size = h / 4;
mPaint.setColor(Color.GREEN);
int paddingEnd = ViewCompat.getPaddingEnd(this);
canvas.translate(-paddingEnd, getPaddingTop());
canvas.drawRect(w - size, 0, w, size, mPaint);

canvas.restore();
Run Code Online (Sandbox Code Playgroud)

它在 LTR 和 RTL 布局中看起来完全相同:

在此处输入图片说明

我知道您可以使用矩阵或 canvas.scale(),但是对于更复杂的场景,例如在画布上绘制文本或其他可绘制对象,这不是一个可行的选择。

在 Canvas 上完成 RTL 绘图的最佳方法是什么?我真的必须计算 X 轴坐标的倒置值吗?

android android-custom-view right-to-left

5
推荐指数
1
解决办法
1800
查看次数

如何从数组对象列表中找到max元素?

Collections.max(arraylist)不起作用,常规for循环也不起作用.

我有的是:

ArrayList<Forecast> forecasts = current.getForecasts();
Run Code Online (Sandbox Code Playgroud)

Collections.max(forecast) 给我这个错误:

The method max(Collection<? extends T>) in the type Collections is
not applicable for the arguments (ArrayList<Forecast>)
Run Code Online (Sandbox Code Playgroud)

ArrayList保持Forecast每个具有对象int字段的每一天的温度.我试图将max存储在int max中.

java arrays arraylist

5
推荐指数
1
解决办法
5783
查看次数

同一方法的@PutMapping和@PostMapping注释

我想将Put和Post映射请求应用于如下所示的方法.它适用于PUT,但不适用于POST请求.我错了什么?

@RestController
@RequestMapping("/PQR")
public class XController {

    @PutMapping("xyz")
    @PostMapping("xyz")
    public MyDomainObject createOrUpdateDAO(
            HttpServletRequest request, 
            @RequestBody String body) throws IOException {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

当我发出POST请求时,我得到一个405 HTTP状态代码:

[nio-8080-exec-3] osweb.servlet.PageNotFound:不支持请求方法'POST'

如果我看一下这个例子,同样的方法有相同的方法被映射为GET和POST请求.

@RequestMapping(value="/method3", method = { RequestMethod.POST,RequestMethod.GET })
@ResponseBody
public String method3() {
    return "method3";
}
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-boot

5
推荐指数
1
解决办法
2404
查看次数

为什么 Google Hangouts 支持在最新版 Chrome 中不使用 Chrome 扩展程序共享桌面?

据我所知,在 Chrome 等浏览器中,共享桌面或应用程序需要 Chrome 扩展程序才能工作,例如:

chrome.permissions.request({
    permissions: ['desktopCapture'],
}
Run Code Online (Sandbox Code Playgroud)

但是为什么 Google Hangouts 不需要任何扩展来捕获桌面?

是否有任何 JavaScript 的 API 用于此?

javascript frontend google-chrome-extension webrtc

5
推荐指数
1
解决办法
673
查看次数

读取一个巨大的对象 json 数组文件

我有一个很大的 json 文件,大小约为 40Gb。当我尝试将此对象数组文件转换为 java 对象列表时,它崩溃了。我已经使用了最大堆的所有大小xmx,但没有任何效果!

public Set<Interlocutor> readJsonInterlocutorsToPersist() {
    String userHome = System.getProperty(USER_HOME);
    log.debug("Read file interlocutors "+userHome);
    try {
        ObjectMapper mapper = new ObjectMapper();
        // JSON file to Java object
        Set<Interlocutor> interlocutorDeEntities = mapper.readValue(
                new File(userHome + INTERLOCUTORS_TO_PERSIST),
                new TypeReference<Set<Interlocutor>>() {
                });
        return interlocutorDeEntities;
    } catch (Exception e) {
        log.error("Exception while Reading InterlocutorsToPersist file.",
                e.getMessage());
        return null;
    }
} 
Run Code Online (Sandbox Code Playgroud)

有没有办法使用读取此文件BufferedReader,然后逐个对象推送?

java jackson fasterxml

5
推荐指数
1
解决办法
4999
查看次数

js onkeypress 在下一个输入之前不起作用

当输入大小恰好为 2 时,我尝试插入连字符。这是我的代码

document.getElementById('numberInput').onkeypress = function() {
  if (this.value.length == 2) {
    this.value = this.value + '-';
  }
}
Run Code Online (Sandbox Code Playgroud)
<input type="text" id="numberInput">
Run Code Online (Sandbox Code Playgroud)

但问题是 - 直到输入第三个字符才出现。尽管连字符放置正确,但我的意思是在两个字符之后。

输入两个字符后如何立即得到连字符?

我尝试过onkeyup,但问题是当我按退格按钮时它也会触发。当有两个字符时,会出现连字符,但此时如果我按退格键并删除连字符,它会立即返回。所以我选择onkeypress

javascript

5
推荐指数
1
解决办法
707
查看次数

如何使用导出相同函数名的2个库

重复以下问题:C函数冲突


嗨,在我目前的项目中,我必须使用某种接口库.函数名由这个接口给出,这个函数做的是开发人员的选择.据我所知,项目应该使用这个函数,当涉及到编译时,你可以选择lib并使用它来实现功能.我尝试做的是通过包装另一个并在mein函数中调用它来同时使用现有的lib和我的lib:

otherlib:

int function1 (int a) {
// do something
}
Run Code Online (Sandbox Code Playgroud)

MYLIB:

int function1 (int a) {
//my code here
    otherlib::function1(a);
}
Run Code Online (Sandbox Code Playgroud)

问题是我没有访问其他lib,而其他lib没有任何名称空间.我已经试过了

namespace old {
    #include "otherlib.h"
}
Run Code Online (Sandbox Code Playgroud)

然后在我的函数中通过old :: function1调用旧函数.只要它是唯一的头文件,这就可以工作.lib将它的符号输出回全球空间.还有类似的东西

namespace new {
    function1 (int a) {
        ::function1(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

没用.最后但并非最不重要的是我尝试了ifdef和这里建议的定义

但我没有成功.

任何想法如何解决这个问题?提前致谢.

编辑:我既没有访问旧的lib也没有项目的两个库都应该使用.

EDIT2:至少旧的lib是静态的

c c++ ambiguity word-wrap

4
推荐指数
1
解决办法
7382
查看次数

如何在JPA中表达多态关联?

一个多态关联类似于外键或多对一的一个关系,区别在于目标可能是多种类型(在语言班,在db表)之一.

我正在移植一个数据库设计,我已经使用了几年,从PHP到Java.在旧的代码中,我已经推出了自己的ORM,由于多种原因这不是最佳的.虽然我可能会在以后开始调整内容,也许最终会自己再次实现,现在我想在我的实体类中使用现成的ORM和JPA.

现在,关于数据库布局有一点我不知道如何在JPA中表达:

我有一个存储图形NodeEdge表格(DAG,如果重要的话).每个节点可以可选地从数据库引用另一个实体.在整个图表中可以多次引用这些entites,并且还可能存在"孤立"的entites,这对于用户来说是不可访问的,但是至少保持一段时间可能是有意义的.

这些对象在继承等方面完全没有关系,但具有自然层次结构,类似于Customer-> Site-> Floor-> Room.事实上,几年前,我开始只使用指向"父"对象的外键字段.但是,这种层次结构不够灵活,并且开始崩溃.

例如,我想允许用户将文件夹中的对象分组,某些对象可以有多个"父母",并且关系也会随着时间而变化.我需要跟踪关系是如何进行的,因此图的edegs具有与它们相关的时间跨度,从何时到何时有效.

从节点到对象的链接存储在节点表的两列中,一个在外表中携带id,一个携带其名称.例如(省略了一些列):

table Node:
+--------+-------+----------+
| ixNode | ixRef | sRefType |
+--------+-------+----------+
|    1   |  NULL |   NULL   |  <-- this is what a "folder" would look like
|    2   |   17  |  Source  |
|    3   |   58  |  Series  |  <-- there's seven types of related objects so far
+--------+-------+----------+

table Source (excerpt):
+----------+--------------------+
| ixSource |        sName       |
+----------+--------------------+
|    16    | …
Run Code Online (Sandbox Code Playgroud)

database-design modeling jpa polymorphic-associations

4
推荐指数
3
解决办法
5496
查看次数

php转换为byte,

在Java中,我可以轻松地将数字转换为一个字节,例如:

System.err.println((byte) 13020);
Run Code Online (Sandbox Code Playgroud)

结果将是

-36
Run Code Online (Sandbox Code Playgroud)

现在我如何在PHP中实现相同的目标?

php byte casting

4
推荐指数
2
解决办法
2696
查看次数

启动时C#Hide(),没有ShowInTaskbar为false

我正在尝试使用热键和在任务栏托盘中启动的选项来创建应用程序.

现在的问题是,this.Hide()在load事件中使用不会产生任何影响.我可以添加this.ShowInTaskbar = false,但在我再次设置为true后,为了显示窗口,它会自动禁用我的热键.

有没有其他方法可以在启动时隐藏我的表单,或者阻止我的热键取消注册?

我隐藏表单的代码:

private void frmMain_Load(object sender, EventArgs e)
{
    if (StartBG())
    {
        this.Hide();
        this.ShowInTaskbar = false;
        notifyIcon.Visible = true;
        notifyIcon.ShowBalloonTip(3000, "Kore screenshots", "The application is started and will run on the background.", ToolTipIcon.Info);
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码之后,热键仍然有效,

private void showform()
{
    this.Show();
    this.ShowInTaskbar = true;
    notifyIcon.Visible = false;
    this.WindowState = FormWindowState.Normal;
}
Run Code Online (Sandbox Code Playgroud)

在此代码之后,热键被禁用.

.net hotkeys startup hide c#-3.0

4
推荐指数
1
解决办法
2260
查看次数