来自Matlab中的非OO背景,我正在寻求以最佳实践方式执行我习惯的一些操作来进行C#.
我有一个类,它从一个源中导入数据,并将其格式化为一个int数组.我想要对这个数组执行一些操作.为了简单起见,我想说我想取所有值的平均值.我看到它的方式,我有三个选择:
double arrayAverage=MyClass.ArrayAve;我可以开发一个静态类,让我可以访问平均值 double arrayAverage= zotty.arrayMath.average(MyArray);
显然我可以通过某种方式继承或接口,以便我创建一个专门用于执行此类操作的类,然后Id可以通过实例化这个新类并将其传递给数组来访问:
OperatorClass oc = new OperatorClass();
oc.data = MyClass.MyArray;
double arrayAverage = oc.ArrayAverage();
扩展类似乎有风险,因为它还负责导入和格式化数据.如果我将所有数据处理添加到它中,我可能变得非常大,并且对于其他人来说,添加和与我一起工作并不是直截了当的.
未来的代码将需要在阵列上进行更复杂的操作,我不知道它们目前会是什么.我将在未来的程序中使用一些基本操作,这些操作作为静态类的一部分很有用 - 但复杂的操作将是多余的.
用于执行数据处理的单独类允许导入/格式化类保持隔离.它可以提供一般功能和特定功能,但代价是在代码中实例化另一个变量,这在我看来有点凌乱.
如果你对此事有任何想法,我会感激一些意见!
我确信这很简单,但我看不到如何使用CI可选上传文件.
如果将文件输入框留空,则会显示错误"您没有选择上载文件".
我希望它是可选的原因是我的表单编辑了目录类型列表,每次编辑列表时我都不需要上传图像.
有没有办法删除文件类上的"必需"错误处理
伙计们有一种方法可以将Annotation作为直接参数传递(而不是通过执行所有反射开销)?例如,在下面的代码中,我有一个包含int值的注释Number,我想作为参数传递给addImpl方法,我该怎么做(除了通过反射)?
代码片段:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})
public @interface Number {
int value();
}
public void add(int x2) {
addImpl(@Number(value = 10) lol, x2);
}
public void addImpl(Number a, int b) {
System.out.println(a.value() + b);
}
public static void main(String[] args) {
new TestClass().add(3);
}
Run Code Online (Sandbox Code Playgroud) 我正在研究一个.NET组件,它从数据库中获取一组数据,对该组数据执行一些业务逻辑,然后通过类似的存储过程更新数据库中的单个记录spUpdateOrderDetailDiscountedItem.
对于小型数据集,这不是问题,但是当我有一个非常大的数据集需要迭代368个存储过程调用来更新数据库中的记录时,我意识到我遇到了问题.一位高级开发人员查看了我的存储过程代码并说它看起来很好,但现在我想探索一种更好的方法来将"批量"数据发送到数据库.
我有哪些选项可以批量更新数据库?这可能与存储过程有关吗?我还有其他选择吗?
我不会选择安装完整的ORM,但任何建议都表示赞赏.
其他背景资料:
我们当前的数据访问模型是在5年前构建的,所有对db的调用当前都是通过模块化/静态函数执行的,其名称ExecQuery和GetDataTable.我不确定我是否需要保持在该模型中,但是我必须提供一个非常好的理由来超出我们当前的DAL以进入数据库.
另外值得注意的是,在谈到CRUD操作和数据库时,我还是比较新的.我更喜欢在.NET代码中玩/工作,但数据必须存储在某个地方,对吗?
存储过程内容:
ALTER PROCEDURE [dbo].[spUpdateOrderDetailDiscountedItem]
-- Add the parameters for the stored procedure here
@OrderDetailID decimal = 0,
@Discount money = 0,
@ExtPrice money = 0,
@LineDiscountTypeID int = 0,
@OrdersID decimal = 0,
@QuantityDiscounted money = 0,
@UpdateOrderHeader int = 0,
@PromoCode varchar(6) = '',
@TotalDiscount money = 0
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with …Run Code Online (Sandbox Code Playgroud) 什么是使用PHP计算flv文件长度的最佳方法,如外部依赖关系,如ffmpege,因为客户端站点在共享主机上运行,itry http://code.google.com/p/flv4php/,但它提取元数据而不是所有视频都包含元数据?
在 这篇文章中,作者讨论了使用\ @在完全停止之后放置正确的间距,例如先生等等.
宏建议
\newcommand\etc{etc\@ifnextchar.{}{.\@}}
Run Code Online (Sandbox Code Playgroud)
因为(\etc more text)它产生的情况不是很完美(etc.more text).
我见过很多作者都制作了自己的\etc宏版本,主要是变体etc.\.
对于什么是宏\etc,\ie,\etal,\eg产生在大多数情况下最好的结果?
一般来说,这个品味太过个人化吗?
场景是我有一个顶级窗口的窗口句柄列表,我想转移它们,所以它们按我选择的z顺序排列.我开始通过迭代列表(我希望最后的窗口最后一个),调用SetForegroundWindow每个.这似乎在某些时候有效,但并非总是如此,当我在每次通话之间稍微暂停时,有所改善.
有一个更好的方法吗?
编辑:
它看起来像BeginDeferWindowPos/ DeferWindowPos/ EndDeferWindowPosroute是要走的路.但是,我似乎无法让它一次使用多个窗口.当我将窗口列表限制为单个窗口时,它可以正常工作.当列表有多个窗口时,它似乎只能获得其中一个窗口.这是我正在做的伪代码:
HWND[] windows;
HWND lastWindowHandle = 0;
HDWP positionStructure = BeginDeferWindowPos(windows.length);
for (int i = 0; i < windows.length; i++)
{
positionStructure = DeferWindowPos(positionStructure, windows[i],
lastWindowHandle, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
EndDeferWindowPos(positionStructure);
Run Code Online (Sandbox Code Playgroud)
我确定这是一个小/明显我在这里失踪的东西,但我只是没有看到它.
我在这里看到它:
cimg_snprintf(st_path,sizeof(st_path),"D:\\IMAGEM~1.%d\\VISUA~1\\BIN\\convert.exe",k);
Run Code Online (Sandbox Code Playgroud) 我正在使用配置为使用自治事务的Oracle存储过程插入一行.我想插入此记录,提交该事务,然后锁定新插入的记录,以便除了当前会话之外没有其他人可以修改它(在另一个事务中,显然,因为插入它的是自治的).
在我有机会之前,如何确保没有其他人锁定此新记录SELECT...FOR UPDATE?
使用Oracle 10g.
我正在使用HashMap和下面显示的方法来跟踪类类型的更改侦听器.IDE正在发出警告
[rawtypes] found raw type: java.lang.Class
missing type parameters for generic class java.lang.Class<T>.
Run Code Online (Sandbox Code Playgroud)
需要指定什么类型的类来解决警告?
private HashMap<Class, Set<ChangeListener>> classChangeListeners;
/**
* Adds a ChangeListener to the listener list for the specified class type. The class type
* specified must be a subclass of {@link BusinessObject}.
*
* @param <T> the type of BusinessObject.
* @param cls the class type.
* @param listener the ChangeListener to be added.
*/
public <T extends BusinessObject> void addChangeListener(Class<T> cls, ChangeListener listener)
{
if (!classChangeListeners.containsKey(cls))
{ …Run Code Online (Sandbox Code Playgroud)