自从我开始进行iPhone开发以来,我一直很困惑,哪种方式是作为Class中的成员访问数据的最佳方式.
假设我有一个名为MyClass的类,其中我有:
@interface MyClass : NSObject {
int myInt;
}
@property (nonatomic, assign) int myInt;
Run Code Online (Sandbox Code Playgroud)
在实现中,最好是这样做:
myObject.myInt = 1;
Run Code Online (Sandbox Code Playgroud)
或这个?
[myObject setMyInt:1];
Run Code Online (Sandbox Code Playgroud)
这也适用于读取值.
int newInt = myObject.myInt;
Run Code Online (Sandbox Code Playgroud)
与
int newInt = [myObject myInt];
Run Code Online (Sandbox Code Playgroud) Cygwin或UNIX的psql命令有一个补全功能 Windows本机的psql中没有该功能。如何在Windows下完成psql?
我们目前正在编写一个IT已经为其购买硬件的应用程序.他们的方法是购买我们将部署的大型硬件.为了增加更多处理,他们计划添加具有相同软件的其他服务器.为了适应这种设计,我们使用Terracotta来提供运行多个JVM的能力,就像它是一个大型JVM一样.无论这是否是一种明智的方式(我仍然不相信),这就是我正在处理的情况.
无论如何,我们有一部分应用程序使用标准的生产者/消费者类型队列.使用Terracotta,我们可以创建一个可与多个JVM一起使用的单个队列.这很漂亮,效果很好.
但现在,我们正在寻找额外的机会来运行异步流程.为了使我们的所有排队逻辑更加一致,我们正在考虑使用JMS来抽象出通用逻辑.由于我们不打算将JMS用作远程队列(至少在可预见的未来),我想知道JMS是否只是增加了不必要的复杂性.
有什么建议或想法?我们应该继续将队列构建为并发结构,还是将它们视为单独的可能远程对象?
我有一个smalldatetime列,我需要将其更改为datetime列.这是安装过程的一部分,因此它不能是手动过程.不幸的是,该列有一些索引和一个非空约束.索引与性能相关,只需使用新数据类型即可保留.是否有可能编写一个语句,允许我在更改列数据类型的同时保留相关信息?如果是这样,怎么办呢?
假设我有一个要解析的文本文件,其中包含一些固定长度的内容:
123jackysee 45678887
456charliewong 32145644
<3><------16------><--8---> # Not part of the data.
Run Code Online (Sandbox Code Playgroud)
前三个字符是ID,然后是16个字符的用户名,然后是8位电话号码.
我想写一个正则表达式来匹配并验证每一行的输入,我提出的那个:
(\d{3})([A-Za-z ]{16})(\d{8})
Run Code Online (Sandbox Code Playgroud)
用户名应包含8-16个字符.但([A-Za-z ]{16})也会匹配空值或空格.我想,([A-Za-z]{8,16} {0,8})但它会检测超过16个字符.有什么建议?
我一直在用s和s word-wrap: break-word包装文本.但是,它似乎不适用于表格单元格.我有一个表设置,有一行和两列.列中的文本虽然使用上面的样式,但不会换行.它会使文本超出单元格的边界.这种情况发生在Firefox,谷歌浏览器和Internet Explorer上.divspanwidth:100%word-wrap
以下是源代码:
td {
border: 1px solid;
}Run Code Online (Sandbox Code Playgroud)
<table style="width: 100%;">
<tr>
<td>
<div style="word-wrap: break-word;">
Looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong word
</div>
</td>
<td><span style="display: inline;">Short word</span></td>
</tr>
</table>Run Code Online (Sandbox Code Playgroud)
上面的长词大于我的页面的边界,但它不会破坏上面的HTML.我已经尝试了以下建议加入text-wrap:suppress和text-wrap:normal,但也有帮助.
我仍然大多不熟悉控制反转(虽然我现在正在学习它)所以如果这是我的问题的解决方案,请告诉我,我会回过头来学习它.
我有一对控制器需要一个Session变量,自然没有什么特别的事情发生,因为Session首先工作,但这让我想知道在两个独立的控制器之间共享相关对象最干净的方法是什么.在我的特定场景中,我有一个UploadController和一个ProductController,它们相互配合使用来上传图像文件.当UploadController上传文件时,有关上传的数据存储在Session中.发生这种情况后,我需要在ProductController中访问该Session数据.如果我在两个控制器中为包含我的上传信息的Session变量创建一个get/set属性,我将能够访问该数据,但同时我将违反各种DRY,更不用说创建一个,充其量,令人困惑的设计,其中一个对象由两个完全断开连接的对象共享和修改.
你有什么建议?
确切的背景:
文件上载View将文件发布到UploadController.ImageWithpreview(),然后读取已发布的文件并将其复制到临时目录.保存文件后,另一个类生成上传图像的缩略图.然后,使用JsonResult将原始文件和生成的缩略图的路径返回到javascript回调,该回调更新页面上可以"已保存"或"已取消"的表单中的某些动态内容.无论上传的图像是保存还是被跳过,我都需要从临时目录中移动或删除它和生成的缩略图.为此,UploadController在Session维护的Queue对象中跟踪所有上传文件及其缩略图.
返回视图:在使用生成的图像缩略图填充表单后,表单将回发到ProductsController,其中标识了所选文件(目前我将文件名存储在隐藏字段中,我意识到这是一个可怕的漏洞),然后从临时目录复制到永久位置.理想情况下,我想简单地访问我存储在Session中的队列,这样表单就不需要像现在一样包含图像位置.这就是我设想我的解决方案的方式,但我会热切地倾听任何评论或批评.
我正在使用urllib2将数据发布到表单.问题是表单回复302重定向.根据Python HTTPRedirectHandler,重定向处理程序将接受请求并将其从POST转换为GET并遵循301或302.我想保留POST方法和传递给opener的数据.通过简单地将data = req.get_data()添加到新请求,我在自定义HTTPRedirectHandler上尝试失败.
我确信这已经完成,所以我想我会发帖子.
注意:这与此帖和此类似,但我不想阻止重定向,我只想保留POST数据.
这是我的HTTPRedirectHandler不起作用
class MyHTTPRedirectHandler(urllib2.HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
"""Return a Request or None in response to a redirect.
This is called by the http_error_30x methods when a
redirection response is received. If a redirection should
take place, return a new Request to allow http_error_30x to
perform the redirect. Otherwise, raise HTTPError if no-one
else should try to handle this url. Return None if you can't …Run Code Online (Sandbox Code Playgroud) 我发现了一种奇怪的行为,这让我感到很好奇,而且还没有令人满意的解释.
为简单起见,我已将我注意到的症状减少到以下代码:
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
public class CalendarTest {
public static void main(String[] args) {
System.out.println(new SimpleDateFormat().getCalendar());
System.out.println(new GregorianCalendar());
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我得到的内容与以下输出非常相似:
java.util.GregorianCalendar[time=-1274641455755,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/Los_Angeles",offset=-28800000,dstSavings=3600000,useDaylight=true,transitions=185,lastRule=java.util.SimpleTimeZone[id=America/Los_Angeles,offset=-28800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=1929,MONTH=7,WEEK_OF_YEAR=32,WEEK_OF_MONTH=2,DAY_OF_MONTH=10,DAY_OF_YEAR=222,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=8,HOUR_OF_DAY=20,MINUTE=55,SECOND=44,MILLISECOND=245,ZONE_OFFSET=-28800000,DST_OFFSET=0] java.util.GregorianCalendar[time=1249962944248,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/Los_Angeles",offset=-28800000,dstSavings=3600000,useDaylight=true,transitions=185,lastRule=java.util.SimpleTimeZone[id=America/Los_Angeles,offset=-28800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2009,MONTH=7,WEEK_OF_YEAR=33,WEEK_OF_MONTH=3,DAY_OF_MONTH=10,DAY_OF_YEAR=222,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=8,HOUR_OF_DAY=20,MINUTE=55,SECOND=44,MILLISECOND=248,ZONE_OFFSET=-28800000,DST_OFFSET=3600000]
(如果我提供类似于"yyyy-MM-dd"SimpleDateFormat 的有效格式字符串,也会发生同样的事情.)
原谅可怕的非包裹线,但这是比较两者的最简单方法.如果您滚动到大约2/3的路径,您将看到日历的YEAR值分别为1929和2009.(还有一些其他差异,例如一周中的一周,一周中的某一天和DST偏移.)两者显然都是GregorianCalendar的实例,但它们之所以不同是令人费解的.
据我所知,格式化器在格式化传递给它的Date对象时生成准确.显然,正确的功能比正确的参考年份更重要,但差异仍然令人不安.我不认为我必须在一个全新的日期格式化程序上设置日历才能获得当前年份......
我在使用Java 5(OS X 10.4,PowerPC)和Java 6(OS X 10.6,Intel)的Mac上进行了测试,结果相同.由于这是一个Java库API,我认为它在所有平台上的行为都相同.对这里正在发生的事情的任何见解?
(注意:这个SO问题有些相关,但不一样.)
编辑:
以下答案都有助于解释这种行为.事实证明,SimpleDateFormat的Javadocs 实际上在某种程度上证明了这一点:
"对于使用缩写年份模式("y"或"yy")进行解析,SimpleDateFormat必须解释相对于某个世纪的缩写年份.它通过将日期调整为在SimpleDateFormat实例之前的20年之前和20年之后来实现这一点.被建造."
因此,他们不会对解析日期的年份感到满意,而是默认将内部日历设置为80年.这部分本身没有记录,但是当你知道它时,这些部分都是合在一起的.
osx拥有非常强大的dtrace/ktrace/dtruss工具 - 但是我不愿意投入必要的时间来学习如何处理它们.
什么是在OSX上获得linux ltrace(可能是strace)的等效功能的最简单方法?
java ×2
macos ×2
accessor ×1
asp.net-mvc ×1
automation ×1
calendar ×1
concurrency ×1
css ×1
date ×1
dtrace ×1
html ×1
html-table ×1
iphone ×1
jms ×1
linux ×1
objective-c ×1
postgresql ×1
psql ×1
python ×1
regex ×1
sql ×1
sql-server ×1
strace ×1
t-sql ×1
terracotta ×1
urllib2 ×1
windows ×1