问题列表 - 第49728页

使用构建器/工厂模式确保内存可见性

以下课程:

class Pizza {

    Ingredients ingredients;
    Price price;

    public setIngredients(Ingredients ing) {
        if (ingredients != null) {
            throw new IllegalStateException();
        }
        ingredients = ing;
        return this;
    }

    public setPrice(Price p) {
        if (price != null) {
            throw new IllegalStateException();
        }
        price = p;
        return this;
    }

}
Run Code Online (Sandbox Code Playgroud)

可以在构建器模式中使用,在构建之后,它实际上是不可变的,因为每个属性只能设置一次.那是:

Pizza pizza = new Pizza().setIngredients(something).setPrice(somethingelse);
Run Code Online (Sandbox Code Playgroud)

但是,Pizza它不是线程安全的:不能保证线程B看到线程A设置的成分.有一些方法可以解决它:

  • 成员final.但是你不能使用构建器模式.
  • 同步对成员的访问权限.但这似乎是浪费,因为它们只写过一次.
  • 制作它们volatile.像同步一样感觉浪费.
  • 使用AtomicReference.
  • 等等.?

我的问题是,告诉JVM一个类成员在调用某个方法后不会改变的最佳方法是什么?我应该只是同步对它的访问,并相信JVM会优化锁定吗?它只是感觉浪费,因为我知道成员应该final在它设置之后表现得像它一样.有没有更好的解决方案?

java volatile synchronized thread-safety memory-visibility

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

使用JasperReports和相对路径

我有一个网络应用程序,客户端已要求查看一些报告.方法是使用iReport并在屏幕上显示报告.

我已经问了这样的事情.但今天我发现报告文件(jrxml)的路径是绝对的.所以我必须更改程序,以便它接受相对路径.我一直在尝试这样做,但似乎jrxml或编译(.jasper)文件都不接受既不编译也不填充报告的相对路径.

这是我迄今为止所得到的:

//path is generated as request.getContextPath() + "/jrxmlFiles/"
public void generateReport(HttpServletResponse res, ConexionAdmin con, String path) throws Exception{ 

    ServletOutputStream out = null;
    ByteArrayOutputStream bos    = new ByteArrayOutputStream();

    JasperDesign jasperDesign = JRXmlLoader.load(path);
    JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

  byte[] bytes = JasperRunManager.runReportToPdf(jasperReport, pars, con.initConexion());
        res.setContentType("application/pdf");
  res.setContentLength(bytes.length);
  out = res.getOutputStream();
  out.write(bytes, 0, bytes.length);

  res.setHeader("Cache-Control", "cache");
  res.setHeader("Content-Disposition", "attachment; filename=report.pdf"); 
  res.setHeader("Pragma", "cache");
  res.setContentLength(bos.size());

  out.write(bos.toByteArray());
  out.flush();
  bos.close();
  out.close(); 
  res.flushBuffer();
}
Run Code Online (Sandbox Code Playgroud)

这似乎适用于绝对路径,但抛出我:

Exception Message
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException
Run Code Online (Sandbox Code Playgroud)

当改为相对路径时.我在网上搜索没有成功如何改变我的适合度.

我有jasper API的javaDoc,但如果我能帮助它,我宁愿不读它.

java jasper-reports

12
推荐指数
1
解决办法
3万
查看次数

只有对Context的引用时关闭当前活动

如果我有参考Context,是否可以完成当前的活动?

我没有参考当前的活动.

android android-context android-activity

68
推荐指数
3
解决办法
6万
查看次数

bash命令和返回状态

pkill返回状态> 0如果错误(例如,如果找不到进程).如何返回pkill的0状态独立结果?

bash

7
推荐指数
1
解决办法
4217
查看次数

WPF:如何绑定到name属性

我可以绑定到name属性吗?这似乎不起作用:

<TextBlock Name="FordPerfect" Text="{Binding Path=Name, Mode=OneWay}"/>
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?

编辑:
添加ElementName=FordPerfect"解决了问题.我不明白的是为什么只有绑定到Name需要这个,而其他属性没有.

注意:将第二个(设计)问题移到另一个问题(我应该在第一次放置......)

谢谢

wpf binding

0
推荐指数
1
解决办法
1万
查看次数

如何在csv中的值中用逗号导出字符串?

我使用代码导出csv文件中的datagridview记录:

using (StreamWriter myFile = new StreamWriter(filename, false, Encoding.Default))
{
        string sHeaders = "";
        for (int j = 0; j < dGV.Columns.Count; j++)
        {
             if (dGV.Columns[j].Visible)
             {
                 sHeaders = sHeaders.ToString() + dGV.Columns[j].HeaderText + ", "; 
             }
        }
        myFile.WriteLine(sHeaders);
        // Export data.  
        for (int i = 0; i < dGV.RowCount; i++)
        {
             string stLine = "";
             for (int j = 0; j < dGV.Rows[i].Cells.Count; j++)
             {
                 if (dGV.Columns[j].Visible)
                 {
                     stLine = stLine.ToString() + dGV.Rows[i].Cells[j].Value.ToString() + ", ";
                 }
             }
                        myFile.WriteLine(stLine);
        } …
Run Code Online (Sandbox Code Playgroud)

c# export-to-csv

3
推荐指数
1
解决办法
1万
查看次数

RegEx检测语法正确的URL

我使用Asp.net 4和C#Web Forms.

在我的Web应用程序中,用户可以使用TextBox添加URL.

我需要确保插入的每个值都具有语法正确的URL格式(我不需要检查URL是否确实存在).

因此,作为第一条规则,我想使用CustomValidator Controlif 检查用户插入的输入在开头是否具有值字符串"http://".

我的问题?

  • 你能为我提供一个RegEx来添加到我的CustomValidator Control中,它只允许传递以"http://"开头的字符串吗?

  • 你有任何其他规则使用RegEx建议我吗?

  • 检测语法正确的URL的最佳做法是什么?

谢谢你的帮助

c# regex asp.net

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

在UDF中尝试/捕获不可能吗?如何"tryCast"varchar到datetime?

如何将varchar参数转换为datetime,如果转换失败使用GetDate()默认值?我试图把它放在Try/Catch中,但显然这在UDF中不起作用.它也不能简单地检查datetime是否为null,因为它会抛出异常('将char数据类型转换为datetime数据类型导致超出范围的datetime值'):

CREATE FUNCTION [dbo].[getRZUInfo]
(
    @IMEI varchar(20),
    @StrDeliveryDate varchar(20)
)
RETURNS VARCHAR(8000)
AS
BEGIN
    DECLARE @Info VARCHAR(8000) 
    DECLARE @DeliveryDate datetime;
    SET @DeliveryDate = Convert(datetime,@StrDeliveryDate,102);
    IF @DeliveryDate IS NULL
        SET @DeliveryDate=GetDate();
    SELECT   @Info = COALESCE(@Info + '|', '') + 'TAT_B2B: ' + Convert(varchar,tabData.TAT_B2B) + ', AC' + Convert(varchar,tabData.fimaxActionCode) + ', Diff: ' + Convert(varchar,DateDiff(day,tabData.Received_date,@DeliveryDate))
        FROM   tabData
    WHERE     (SSN_Number = @IMEI) AND (Received_Date >= DATEADD(month, -3, @DeliveryDate))
    ORDER BY SSN_Number,Received_Date DESC
    return @Info
END
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2005

2
推荐指数
1
解决办法
1522
查看次数

来自x86_64程序集的OS X视频内存

我正在使用Intel Mac OS X 10.6.x上的C++应用程序.我有一个变量,它包含使用OpenGL调用glReadPixels获得的像素数据.我想使用x86_64汇编指令直接对像素数据执行一些操作.汇编程序在测试程序中运行良好,但是当我尝试在像素数据上使用它时,它只在像素数据变量指向的内存位置中得到零.我猜这是因为我试图直接从x86_64程序集访问视频内存.有没有办法直接从程序集访问x86_64视频内存?否则我该如何解决这种情况?

感谢任何指针.提前致谢.

请参阅下面的代码示例以翻转最后n个和前n个字节.相同的代码在测试程序中运行良好.

void Flip(void *b, unsigned int w, unsigned int h)
  {
    __asm {
    mov r8, rdi //rdi b
    mov r9, rsi //W
    mov r10,rdx //H
    mov r11, 0 // h <- 0
    mov r12, 0 // w<- 0
    outloop:
    ------------
    .............
    .............
  }
Run Code Online (Sandbox Code Playgroud)

opengl macos video assembly x86-64

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

在野牛推进纯粹的解析器堆处理

有没有办法为堆管理指定我自己的allocator/deallocator函数而不是malloc()/ free()用于bison中的纯推送解析器?

c language-design bison parser-generator

7
推荐指数
1
解决办法
520
查看次数