只是一个简单的问题,但是这段代码中需要刷新吗?请注意,这将在JPA事务中.
User user = new User();
em.persist(user);
em.flush;
User aUser = em.find(User.class,user.getId());
assert(user.equals(aUser));
Run Code Online (Sandbox Code Playgroud)
或者没有冲洗它会工作吗?
User user = new User();
em.persist(user);
User aUser = em.find(User.class,user.getId());
assert(user.equals(aUser));
Run Code Online (Sandbox Code Playgroud)
或者相同的问题,但更多涉及的例子:
User user = em.find(User.class,id);
user.setName("My Name");
em.merge(user);
em.flush; //Is this line needed?
User aUser = em.createQuery("select u from User where u.name = 'My Name');
assert(user.equals(aUser));
Run Code Online (Sandbox Code Playgroud) 我正在使用JavaComm,并从串口对象获取inputStream.我有一个问题,有时当系统启动时,缓冲区中存在我不想要的噪声字符.我想初始化串口然后在开始处理之前以某种方式刷新所有数据的输入.
有没有办法做到这一点?
TY弗雷德
我正在使用以下内容编写一个包含两个字节的小字节数组:
int bytes_to_write = 2;
port.Write(byte_buffer, buffer_offset, bytes_to_write);
Run Code Online (Sandbox Code Playgroud)
在将其写入端口之前,似乎底层库正在等待更多数据通过.这是正确的行为,我可以强制它立即写小块吗?一些论坛说使用:
port.BaseStream.Flush();
Run Code Online (Sandbox Code Playgroud)
将导致正确的行为,但其他人说这不起作用.我已经进行了几次测试,但它似乎对我不起作用.
干杯,理查德
我在一段代码中找到了类似的东西:
use IO::Handle;
autoflush STDOUT 1;
print '';
Run Code Online (Sandbox Code Playgroud)
"打印"的目的是清空可能填充的缓冲区吗?
我正在开发iPhone应用程序并希望使用:
CFStreamCreatePairWithSocketToHost(NULL, url, port, &serverReadStream, &serverWriteStream);
Run Code Online (Sandbox Code Playgroud)
之后使用:
[serverWriteStream write:[sendData bytes] maxLength:[sendData length]];
Run Code Online (Sandbox Code Playgroud)
我想发送5个字节的小包以获得实时更新.
我现在的问题是,流只在缓冲区已满时才发送数据.所以我需要某种刷新方法或告诉流立即发送数据.
搜索这个问题最终发现'TCP_NODELAY'似乎属于未记录的API(我不能用于AppStore,如果我错了请纠正我),即使我可能被允许使用它,我也必须改变流的创建,对吧?
我的程序在Linux上控制外部应用程序,通过管道将输入命令传递到外部应用程序stdin,并通过外部应用程序stdout的管道读取输出结果.
问题是对管道的写入是按块缓冲的,而不是按行缓冲的,因此在我的应用程序接收外部应用程序输出数据之前会发生延迟.无法更改外部应用程序以添加显式fflush()调用.
当我将外部应用程序设置为/ bin/cat -n(它回显输入,添加了行号)时,它正常工作,看起来,猫在每行之后刷新.强制外部应用程序刷新的唯一方法是向它发送exit命令; 当它收到命令时,它会刷新,所有答案都会在退出之前出现在标准输出上.
我很确定,Unix管道对于那种进程间通信(伪服务器 - 客户端)来说是合适的解决方案,但也许我错了.
(我刚刚从一个类似的问题中复制了一些文本:使用Python强制另一个程序的标准输出无缓冲)
当我坚持我的实体时,我收到此错误
另一个"在链配置的命名空间中找不到类'X'
在我将Symfony从Windows移动到Linux之前,这曾经工作过.
我的控制器:
public function SubscriptionHandlingAction(Request $request)
{
if ($request->isMethod('POST'))
{
$form = $this->createForm(new NewCustomer(), new Customer());
$form->bind($request);
if ($form->isValid())
{
// get the form data
$newcustomer = $form->getData();
//get the date and set it in the entity
$datecreation = new \DateTime(date('d-m-Y'));
$newcustomer->setdatecreation($datecreation);
//this works fine
echo $newcustomer->getname();
//persist the data
$em = $this->getDoctrine()->getManager();
$em->persist($newcustomer);
$em->flush();
return $this->render('NRtworksSubscriptionBundle:Subscription:subscription_success.html.twig');
}
Run Code Online (Sandbox Code Playgroud)
当然,我的类实体存在,因为我可以基于它创建表单,对象等.但是,这个实体不是"映射"意味着教义:mapping:info不给我任何东西(但是我手动创建了相应的sdl表并放入所有注释):
<?php
namespace NRtworks\SubscriptionBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="Customer")
*/
class Customer …Run Code Online (Sandbox Code Playgroud) 我注意到在许多源代码文件中,人们可以看到cout在cin 没有显式刷新的情况下在写入之前写入:
#include <iostream>
using std::cin; using std::cout;
int main() {
int a, b;
cout << "Please enter a number: ";
cin >> a;
cout << "Another nomber: ";
cin >> b;
}
Run Code Online (Sandbox Code Playgroud)
执行此操作时,用户输入的42[Enter]73[Enter]内容很好(g ++ 4.6,Ubuntu):
Please enter a number: 42
Another number: 73
Run Code Online (Sandbox Code Playgroud)
这是定义的行为,即标准是否说cout在cin读取之前以某种方式刷新了?我可以在所有符合要求的系统上预期这种行为吗?
或者应该在这些消息后明确说明cout << flush?
据我所知,std::endl流入std::cout将刷新它.我认为这种行为对大多数应用程序都有意义.
我的问题是我有一些输出使用多个输出,std::endl因此刷新输出.这对于我的程序的性能来说真的很糟糕,并且因为我跳得很多而导致很多图形故障.
所以我的问题是,如果我可以告诉std::cout等待下一次刷新,直到我明确地调用std::cout.flush()或std::flush流入std::cout.
如果这是可能的,我也想知道我怎么能扭转它,因为它对我来说并不总是有意义.
我正在使用Kafka Connect从Kafka Broker(v0.10.2)获取消息,然后将其同步到下游服务.
目前我有代码SinkTask#put处理,SinkRecord然后将其持久保存到下游服务.
几个关键要求,
因此,我们认为我们可以依赖于SinkTask#flush有效地退出为接收消息的特定轮询/周期提交偏移.通过抛出一个异常或者某个东西来告诉Connect不提交偏移量,但是在下次轮询中重试.
但正如我们发现的那样flush,实际上是基于时间的,并且或多或少地独立于民意调查之外,它会在达到特定时间阈值时提交抵消.
在0.10.2 SinkTask#preCommit中引入,所以我们认为我们可以将它用于我们的目的.但是在文档中没有提到SinkTask#put&之间存在1:1的关系SinkTask#preCommit.
因为基本上我们想commit offsets尽快一个put succeeds.同样地,如果特定失败,则不提交偏移量put.
如果没有通过,如何实现这一目标SinkTask#preCommit?