在Java中,可以同步访问多线程环境中所需的共享资源的方法或块.
我想知道"Scala Actors"这样做的方式是如何工作的.
假设我有一个java.sql.Connection
对象的连接池,我希望提供对它的线程安全访问.我将它实现为接收消息并向发送者发回连接的actor.
似乎有三种方法可以做到这一点:
!?
Connection
也是演员码:
sealed abstract class ConnectionPoolMessage
case class NewConnection extends ConnectionPoolMessage
case class CloseConnection(c:Connection) extends ConnectionPoolMessage
class ConnectionPool extends Actor {
def act() {
while (true) {
receive() {
case NewConnection => sender ! getConnectionFromPool
case CloseConnection(conn) => returnConnection(conn)
}
}
}
}
// Here, my "do stuff" method is all in one place, and I block waiting
// on the Future from the pool; however this could …
Run Code Online (Sandbox Code Playgroud) 考虑这个简化的应用领域:
Person
是参与调查的任何人Report
是调查的一部分信息Report
引用主要Person
(调查的主题)Report
具有次要相关的共犯(并且在其他调查或报告中肯定是主要的如果这些存储在某种数据库中并且我希望使用不可变对象,则似乎存在关于状态和引用的问题.
假设我改变了一些关于a的元数据Person
.由于我的Person
对象是不可变的,我可能会有一些代码:
class Person(
val id:UUID,
val aliases:List[String],
val reports:List[Report]) {
def addAlias(name:String) = new Person(id,name :: aliases,reports)
}
Run Code Online (Sandbox Code Playgroud)
因此,我Person
的新别名成为一个新对象,也是不可变的.如果a Report
指的是那个人,但别名在系统的其他地方被改变了,我Report
现在指的是"老"人,即没有新别名的人.
同样,我可能会:
class Report(val id:UUID, val content:String) {
/** Adding more info to our report */
def updateContent(newContent:String) = new Report(id,newContent)
}
Run Code Online (Sandbox Code Playgroud)
由于这些对象不知道是谁引用它们,因此我不清楚如何让所有"引用者"知道有一个新对象可用来代表最近的状态.
这可以通过让所有对象从中央数据存储"刷新"并且创建新的,更新的对象的所有操作存储到中央数据存储来完成,但这感觉就像是对基础语言的引用的简洁重新实现.也就是说,让这些"次要可存储物体"变得可变更为明确.因此,如果我向a添加别名Person
,则所有引用者都会看到新值而不执行任何操作.
当我们想要避免可变性时,如何解决这个问题,或者这是不可变性无效的情况?
我有一个全新的轨道6的应用程序,并没有任何东西在config/routes.rb
,输出bin/rails routes
具有非常长的URL为ActiveStorage,动作邮箱,和指挥的大规模清单。
这bin/rails routes
作为一种文档形式完全无用,特别是因为 的选项bin/rails routes
不允许过滤掉东西。
我不想省略 Rails 的这些部分,因为我可能需要它们。但我更喜欢这些路线 a) 如果我不使用它们就不存在 b) 不出现在bin/rails routes
.
有谁知道如何使这项工作?
部署J2EE/Java Web应用程序的两种主要方式(以非常简单的方式):
在这里,我们在.war
其他地方创建(或其他),将其配置为生产(可能为多个框创建大量工件)并将生成的工件放置在生产服务器上.
在这里,用于在开发人员盒上本地构建和部署的相同过程用于部署到生产.
我主要使用第二个进程,不可否认(没有时间/优先级用于另一个部署过程).就个人而言,我不会购买诸如"生产盒必须清理所有编译器等"之类的论点,但我可以看到部署你测试过的逻辑(而不是构建另一个工件).
但是,Java Enterprise应用程序对配置非常敏感,感觉就像在配置工件的两个过程中遇到麻烦一样.
思考?
这是一个具体的例子:
我们使用OSCache,并启用磁盘缓存.配置文件必须位于.war文件中,并引用文件路径.每条环境都有不同的路径.构建过程检测用户配置的位置,并确保放置在战争中的属性文件对其环境是正确的.
如果我们要使用构建过程进行部署,那么就需要为生产环境创建正确的配置(例如production.build.properties
).
如果我们遵循"将组装的工件部署到生产框",我们需要一个额外的过程来提取(不正确的)OSCache属性并将其替换为适合生产环境的属性.
这创建了两个完成相同事情的过程.
所以,问题是:
我最喜欢的vim功能之一就是能够做到这一点
set path=/my/project/root/**
Run Code Online (Sandbox Code Playgroud)
然后使用
:find SomeClassFile.java
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,我在那个级别有一些生成的目录,我无法移动并希望从这些搜索中排除.我似乎无法弄清楚如何排除这些目标.任何人都知道如何做到这一点?
我的iPhone应用程序中有一个简单的表单.表格通过IB和典型布线布局和管理(即我不是以编程方式创建此表单).
仅当设置了特定首选项时,才应显示其中一个字段(及其关联标签).
我可以将字段和标签的alpha设置为0并在这种情况下禁用它们.问题是这个现在看不见的字段下方的字段会保留在同一个地方,并且会有一个很大的空白区域.我的目标是让屏幕看起来都处于正常状态.
有没有办法以编程方式删除(或添加)UI元素,并让下面的那些向上或向下移动以腾出空间?或者我应该考虑为第二种情况制作一个完整的其他NIB文件?(而且,如果我这样做,是否有一种简单的方法来分享共同的元素?)
同时使用http://img.skitch.com/20100704-bm41w6wtqkdgh1da99ihb7g32d.jpg
使用Alpha隐藏http://img.skitch.com/20100704-q2sxrj3nf6ya68wp6ubn86n2pa.jpg
隐藏时所需http://img.skitch.com/20100704-82r876pgctee8gb51ujg1dwj7k.jpg
所以,我有一个用于存储,搜索和操作数据的基本应用程序.基本的CRUD操作.在我存储或更新此数据的代码的各个地方,我基本上都有这个:
NSError *error;
if (![self.managedObjectContext save:&error]) {
// TODO: Handle this error
NSLog(@"Error while saving data %@, %@", error, [error userInfo]);
}
Run Code Online (Sandbox Code Playgroud)
当这些事情出现时,大多数人会做什么,用户体验明智?
想到的唯一一件事就是UIAlertView
用一个模糊的信息突然出现一些可怕的信息; 不确定如何恢复这些东西.
为了论证,我们假设我的模型几乎没有验证,因此可能发生的唯一错误可能是可怕的错误或编程问题.
有关用户体验的任何好主意吗?
我有一个命令行Ruby应用程序我正在开发,我想允许它的用户提供将作为过程的一部分进行过滤的代码.基本上,应用程序执行此操作:
我希望过滤过程(步骤2)尽可能灵活.
我的想法是用户可以提供一个Ruby文件,设置一个已知的常量来指向实现我定义的接口的对象,例如:
# user's filter
class MyFilter
def do_filter(array_to_filter)
filtered_array = Array.new
# do my filtering on array_to_filter
filtered_array
end
FILTER = MyFilter.new
Run Code Online (Sandbox Code Playgroud)
我的应用程序的代码将执行以下操作:
array_that_might_get_filtered = get_my_array()
if (options.filter_file)
require options.filter_file
array_that_might_get_filtered = FILTER.do_filter(array_that_might_get_filtered)
end
Run Code Online (Sandbox Code Playgroud)
虽然这会起作用,但感觉很俗气,似乎应该有更好的方法来做到这一点.我还认为过滤器的形式是为已知类添加已知名称的方法,但这似乎也不正确.
Ruby中有更好的成语吗?
我已尽力而为,无法做出正在发生的事情.我有一个Spring MVC应用程序,但是我想在Spring MVC应用程序之外提供一些RESTEasy端点,但是在同一容器中,最终能够连接相同的bean.
作为第一步,我只是试图在容器内部站起来RESTEasy,为Spring配置的bean提供请求.我已经从说明书中试过了样板,并尝试了手动设置,但无济于事.
@Resource
@Path("/")
public class NeighborComparison {
private String foo;
@GET @Path(value="customer") @Produces("text/plain")
public String getNeighborComparison() {
return "foo";
}
}
Run Code Online (Sandbox Code Playgroud)
web.xml
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/api</param-value>
</context-param>
<listener>
<listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
<!-- NOT configuring SpringContextLoaderListener because I declare my own, so if I do, everything
blows up, plus all it actually does is sanity check configuration -->
<listener>
<listener-class>com.example.MyCustomContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>Resteasy</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Resteasy</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
applicationContext.xml
<bean …
Run Code Online (Sandbox Code Playgroud) 我在http://www.naildrivin5.com/scalatour上运行一个rails应用程序.它工作正常.当我使用登录应用程序时restful_authentication
,我会被带到http://www.naildrivin5.com而不是应用程序.奇怪的.
这似乎是我错误配置了一些东西.此外,还有一些地方我正在手工创建一些网址,我需要访问"应用程序上下文根"(即scalatour
在我的情况下)才能正确地形成URL.我最终把它扔进了我的配置,但这似乎是错的.
带有Passenger的Apache运行Rails应用程序:
Apache conf:
<VirtualHost 69.89.3.135:80>
DocumentRoot /somewhere/naildrivin5.com/html
ServerName naildrivin5.com
RailsBaseURI /scalatour
PassengerPoolIdleTime 5
# other things not related
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
passenger.conf
:
LoadModule passenger_module /usr/share/passenger/ext/apache2/mod_passenger.so
PassengerRoot /usr/share/passenger
PassengerRuby /usr/bin/ruby
PassengerLogLevel 2
Run Code Online (Sandbox Code Playgroud)
/somewhere/naildrivin5.com/html/scalatour
符号链接到我的Rails应用程序的public
文件夹.
该应用程序工作正常,除了身份验证,使用restful_authentication
.登录后,我被带到了Web服务器根目录,而不是应用程序根目录.
我应该如何/可以配置它,如何在运行时访问它,以及如何最好地配置我的本地开发环境来执行此操作(或不关心它)?
iphone ×2
java ×2
scala ×2
actor ×1
apache ×1
cocoa-touch ×1
concurrency ×1
core-data ×1
deployment ×1
idioms ×1
immutability ×1
java-ee ×1
passenger ×1
resteasy ×1
ruby ×1
spring ×1
spring-mvc ×1
vim ×1