在我的项目中,我有工作流,它在多个实体上运行以完成业务交易.表示工作流逻辑的最佳位置是什么?目前我只是创建一个"XXXManager",它负责与实体对象协作以结束业务事务.还有其他选择吗?
当我尝试通过Imagemagick运行一堆具有alpha透明度的PNG-8图像时,它会将它们转换为PNG-32,从而大大增加了文件大小.
是否可以强制Imagemagick将我的图像类型保持为8位PNG?
我有MP3文件在线音频,如何从我的J2ME应用程序流式传输音频?一个网站为应用程序提供要播放的音频列表,选择音频,然后必须从网站流式传输.
示例代码会很好.谢谢
如果我想模拟一个返回一个字符串的类,该字符串用于确定while循环是否应该继续(想象读取字符串!= null),我该如何设置期望值.我尝试过以下方法:
provider.Reader.Expect(r => r.ReadLine()).Return("1,10,20");
provider.Reader.Expect(r => r.ReadLine()).Return(null);
Run Code Online (Sandbox Code Playgroud)
但是当它在同一个方法中被调用两次时,它会在两种情况下返回第一个字符串,而我希望它在第二次调用时返回第二个值(null).
我要做的是使用不同的模板生成电子邮件内容.
我认为ASP.NET MVC可能非常适合这种情况.我的控制器将获取电子邮件的必要数据并决定要呈现的视图(模板).(这只是一个简单的邮件合并,需要有条件块,foreach等)
我希望能够将这些模板存储在数据库中而不是Web应用程序中的文件中,因此可以从Web应用程序本身轻松添加新模板.
这可能吗?我希望能够使用WebForms视图引擎,但如果不可能,则会考虑其他视图引擎.我希望使用键入的视图.
我有以下xml片段:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="reports">
<typeAlias alias="Header" type="VerificationVO"/>
</sqlMap>
Run Code Online (Sandbox Code Playgroud)
在尝试使用以下方法解析此xml时:
def sqlMapOld = new XmlParser().parse(file)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Exception thrown: Connection refused: connect
java.net.ConnectException: Connection refused: connect
Run Code Online (Sandbox Code Playgroud)
如果我从xml片段中删除DOCTYPE,则此错误消失.有没有办法阻止groovy脚本尝试连接到URL?
我有办法强制在Postgres中使用特定的连接顺序吗?
我有一个看起来像这样的查询.我已经删除了一些真实查询中的东西,但这种简化证明了这个问题.剩下的不应该太神秘:使用角色/任务安全系统,我试图确定给定用户是否具有执行给定任务的权限.
select task.taskid
from userlogin
join userrole using (userloginid)
join roletask using (roleid)
join task using (taskid)
where loginname='foobar'
and taskfunction='plugh'
Run Code Online (Sandbox Code Playgroud)
但我意识到该程序已经知道userlogin的价值,所以通过跳过userlogin上的查找并只填写userloginid似乎可以提高查询效率,如下所示:
select task.taskid
from userrole
join roletask using (roleid)
join task using (taskid)
where userloginid=42
and taskfunction='plugh'
Run Code Online (Sandbox Code Playgroud)
当我这样做 - 从查询中删除一个表并对从该表中检索到的值进行硬编码时 - 解释计划时间就会增加!在原始查询中,Postgres读取userlogin然后userrole然后roletask然后task.但是在新查询中,它决定先读取roletask,然后加入userrole,即使这需要对roletask进行全文扫描.
完整的解释计划是:
版本1:
Hash Join (cost=12.79..140.82 rows=1 width=8)
Hash Cond: (roletask.taskid = task.taskid)
-> Nested Loop (cost=4.51..129.73 rows=748 width=8)
-> Nested Loop (cost=4.51..101.09 rows=12 width=8)
-> Index Scan using idx_userlogin_loginname on userlogin (cost=0.00..8.27 rows=1 width=8)
Index Cond: …Run Code Online (Sandbox Code Playgroud) 我正在将一个中等大小的CRUD应用程序从.Net移植到Qt,我正在寻找一种创建持久化类的模式.在.Net中,我通常使用基本方法(插入,更新,删除,选择)创建抽象持久化类,例如:
public class DAOBase<T>
{
public T GetByPrimaryKey(object primaryKey) {...}
public void DeleteByPrimaryKey(object primaryKey) {...}
public List<T> GetByField(string fieldName, object value) {...}
public void Insert(T dto) {...}
public void Update(T dto) {...}
}
Run Code Online (Sandbox Code Playgroud)
然后,我将其子类化为特定的表/ DTO并添加了DB表布局的属性:
[DBTable("note", "note_id", NpgsqlTypes.NpgsqlDbType.Integer)]
[DbField("note_id", NpgsqlTypes.NpgsqlDbType.Integer, "NoteId")]
[DbField("client_id", NpgsqlTypes.NpgsqlDbType.Integer, "ClientId")]
[DbField("title", NpgsqlTypes.NpgsqlDbType.Text, "Title", "")]
[DbField("body", NpgsqlTypes.NpgsqlDbType.Text, "Body", "")]
[DbField("date_added", NpgsqlTypes.NpgsqlDbType.Date, "DateAdded")]
class NoteDAO : DAOBase<NoteDTO>
{
}
Run Code Online (Sandbox Code Playgroud)
感谢.Net反射系统,我能够实现繁重的代码重用并轻松创建新的ORM.
在Qt中执行此类操作的最简单方法似乎是使用QtSql模块中的模型类.不幸的是,就我而言,它们提供了过于抽象的界面.我至少需要事务支持和控制QSqlTableModel不提供的单个提交.
你能给我一些关于用Qt解决这个问题的提示或者指点一些参考资料吗?
更新:
根据Harald的线索,我实现了一个与上面的.Net类非常相似的解决方案.现在我有两节课.
UniversalDAO继承QObject并使用元类型系统处理QObject DTO:
class UniversalDAO : public QObject
{
Q_OBJECT
public: …Run Code Online (Sandbox Code Playgroud) 假设我有一个类TestCollection,用于保存Test类型的对象并定义为
public class TestCollection : CollectionBase
Run Code Online (Sandbox Code Playgroud)
这允许我以集合方式遍历集合
foreach(object o in collection)
...
Run Code Online (Sandbox Code Playgroud)
要么
foreach(Test t in collection)
Run Code Online (Sandbox Code Playgroud)
但是不允许我使用新的Linq查询.
如果我将类的定义更改为
public class TestCollection : CollectionBase, IEnumerable<Test>
Run Code Online (Sandbox Code Playgroud)
并添加一个方法
public new IEnumerator<Test> GetEnumerator()
{
foreach (Test o in this.List)
yield return o ;
}
Run Code Online (Sandbox Code Playgroud)
然后linq查询可用.
但是,这个新方法不仅仅调用linq查询,而且还在遗留代码中调用(即在foreach(集合中的对象o)和foreach(集合中的Test)期间).
迭代通过集合的旧方法和假设集合中的所有项目都是Test类型的新方法之间有什么区别吗?我知道添加IEnumerator方法会导致程序抛出异常,如果它找到除Test之外的任何类型,但想知道我是否忽略了任何东西.
我有一个字段,其中包含'Blah-OVER','Blah-OveR'等字符串,并希望在没有'over'的情况下选择它们.这只能抓住第一种情况(可以这么说)而不是其他情况:
SELECT field as "before", REPLACE(field, 'OVER', '') as "after"
Run Code Online (Sandbox Code Playgroud)
我怎么只是让他们所有人都说"Blah-"(保留剩下的情况)而不试图用另一个嵌套的REPLACE函数覆盖每个案例组合?
sql ×2
asp.net-mvc ×1
c# ×1
collections ×1
database ×1
generics ×1
groovy ×1
imagemagick ×1
java-me ×1
optimization ×1
orm ×1
png ×1
postgresql ×1
qt ×1
rhino-mocks ×1
sql-server ×1
viewengine ×1
workflow ×1
xml ×1