我已经工作了数周,创建了一个客户端/服务器来控制位于服务器端的音乐服务器应用程序,该应用程序由位于LAN上的多个客户端应用程序控制.我成功地让客户端与服务器通信,发送操作音乐服务器的命令,并通过使用回调,回复客户端,以便可以适当地更新所有客户端UI.但问题是,我无法弄清楚如何广播需要从服务器应用程序发送到客户端的其他消息.我希望利用回调方法; 但是我无法从服务器端访问它.我是否需要修改或创建另一个提供从服务器到客户端的通信的合同?绑定是否需要修改?正如我之前提到的,我已经真正开展了数周的工作(开始感觉像'年'),并希望能够使这个应用程序的最后一部分工作.有人会引导我朝正确的方向前进吗?
客户端服务参考:
<?xml version="1.0" encoding="utf-8"?>
<ServiceReference>
<ProxyGenerationParameters
ServiceReferenceUri="http://localhost:8001/APService/mex"
Name="APGateway"
NotifyPropertyChange="True"
UseObservableCollection="False">
</ProxyGenerationParameters>
<EndPoints>
<EndPoint
Address="net.tcp://localhost:8000/APService/service"
BindingConfiguration="TcpBinding"
Contract="APClient.APGateway.APUserService"
>
</EndPoint>
<EndPoint
Address="http://localhost:8001/APService/service"
BindingConfiguration="HttpBinding"
Contract="APClient.APGateway.APUserService"
>
</EndPoint>
</EndPoints>
</ServiceReference>
Run Code Online (Sandbox Code Playgroud)
客户端AP CONFIG
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="APClient.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<system.serviceModel>
<client>
<endpoint
address="net.tcp://localhost:8000/APService/service"
binding="netTcpBinding"
contract="APClient.APGateway.APUserService"
name="TcpBinding" />
<endpoint
address="http://localhost:8001/APService/service"
binding="wsDualHttpBinding"
contract="APClient.APGateway.APUserService"
name="HttpBinding" />
</client>
</system.serviceModel>
<applicationSettings>
<APClient.Properties.Settings>
<setting name="pathToDatabase" serializeAs="String">
<value>C:\Users\Bill\Documents\APData\</value>
</setting>
</APClient.Properties.Settings>
</applicationSettings> …Run Code Online (Sandbox Code Playgroud) 我遇到了这篇文章标题中提到的问题。默认情况下,复合模式具有复合 -> 组件关联的显式实现。但我还需要实现相反方向的关联:组件 -> 复合。

简而言之,复合模式中组件和复合对象之间双向关联的最佳解决方案是什么?
在一对多关系中,通常用 @ManyToOne 注释的字段是所有者 - 另一侧具有 'mappedBy' 属性。但是,如果我跳过“mappedBy”并使用@JoinColumn(同一列)注释双方,我可以更新双方-更改将传播到db。
我没有两个单向关系而不是一个双向关系 - 只有一个连接列。
如果没有选择一方作为关系所有者,我会遇到什么问题?
我的实体类似于以下内容:
@Entity
public class B {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "parent_id")
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})
private B parent;
@OneToMany()
@JoinColumn(name = "parent_id")
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})
private List<B> children = new ArrayList<B>();
...
}
Run Code Online (Sandbox Code Playgroud)
它似乎对性能没有任何影响(至少插入看起来没问题)这是一个简单的测试和日志输出:
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
B a = new B("a");
B b = new B("b");
B c = new B("c");
B d = new B("d");
B e = new B("e");
session.save(a);
session.save(b);
session.save(c);
session.save(d); …Run Code Online (Sandbox Code Playgroud) 我有Sessions和Users类与以下bi-directional OneToMany映射(以休眠逆向工程工具生成):
public class Users {
@OneToMany(fetch=FetchType.LAZY, mappedBy="users")
public Set<Sessions> getSessionses() {
return this.sessionses;
}
}
public class Sessions {
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="USER_ID")
public Users getUsers() {
return this.users;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我为用户创建新会话的代码:
Session s = ...;
Users user = (Users) s.createCriteria(Users.class)
./*restrictions...*/.uniqueResult();
Sessions userSession = new Sessions();
userSession.setUsers(user);
s.save(userSession);
user.getSessionses().add(userSession); // here getSessionses() has 2k records
Run Code Online (Sandbox Code Playgroud)
用户有 2k 个会话,因此最后一行非常慢。
如何在不获取整个会话集合的情况下将会话与用户链接?
我已阅读如何创建多语言Android应用程序?和android支持多种语言?我知道用多种语言创建一个Android应用程序.但我的问题是显示不同语言的从右到左和从左到右的文本.
例如,在英语中TextView,标签应EditText位于波斯语的左侧,而TextView应位于波斯语的右侧EditText.

如何在用户界面中支持从右到左的语言和UI?
我应该为从右到左的语言设计不同的布局吗?如何在RTL的布局中指定文件夹?类似的东西layout-rtl?或者我如何确定语言是从右到左?
有没有更简单的方法?
在Keras中,RNN的Bidirectional包装器也支持stateful=true.我真的不明白这是怎么回事:
在有状态的单向模型中,批次的状态被转移到下一批次.我猜它对双向模型中的前向层的作用相同.
但是后向层从哪里获取它的状态?如果我理解正确的一切,它应该从技术上接受"下一批"的状态.但显然"下一个"批次还不是计算机,所以它是如何工作的?
我有如下数据类:
@Entity
@Table(name = "SECTIONS")
data class Section(
@Id @GeneratedValue
@Column(name = "ID")
var id: Long = 0,
@Column(name = "NAME")
var name: String = "",
@OneToMany(
mappedBy = "section",
fetch = FetchType.EAGER,
cascade = arrayOf(CascadeType.ALL),
orphanRemoval = true
)
var fields: MutableList<Field> = mutableListOf()
)
@Entity
@Table(name = "FIELDS")
data class Field(
@Id @GeneratedValue
@Column(name = "ID")
var id: Long = 0,
@Column(name = "NAME")
var name: String = "",
@ManyToOne
@JoinColumn(name = "SECTION_ID")
var section: Section? = null …Run Code Online (Sandbox Code Playgroud) 我必须在 Prolog 中创建家庭关系来完成一项作业,我偶然发现了这个问题。
man(john).
woman(lisa).
married(john,lisa).
?- married(john,X).
X = lisa.
?- married(X,john).
false.
Run Code Online (Sandbox Code Playgroud)
如何使这个谓词以两种方式起作用?如果约翰嫁给了丽莎,那么丽莎也嫁给了约翰。
对于事实,我只能使用性别、父母和已婚:
man(john).
woman(lisa).
parent(john,steve).
parent(lisa,steve).
married(john,lisa).
Run Code Online (Sandbox Code Playgroud)
这个要求使得这个解决方案对我来说无法使用。我不能只添加关系,wife(lisa,john).因为我必须自己定义妻子、丈夫等。
wife(X,Y) :- woman(X),married(X,Y).
Run Code Online (Sandbox Code Playgroud) 我如何知道另一端已收到我通过 gRPC 流发送的消息?
是否有一种构建方法可以在 gRPC 双向流式传输中执行此操作,或者我是否需要仅使用流式传输,然后发回响应?
原型文件:
service SimpleService {
rpc SimpleRPC (stream SimpleData) returns (stream SimpleData) {}
}
message SimpleData {
string msg = 1;
}
Run Code Online (Sandbox Code Playgroud)
去代码:
client := pb.NewSimpleServiceClient(conn)
stream, err := client.SimpleRPC(context.Background())
waitc := make(chan struct{})
msg := &pb.SimpleData{"sup"}
go func() {
for {
stream.Send(msg)
}
}()
<-waitc
stream.CloseSend()
Run Code Online (Sandbox Code Playgroud)