在Java Concurrency In Practice一书(第156页)中,有关于毒丸方法的陈述:
毒丸只能在未绑定的队列中可靠地工作.
这是否意味着有限的队列我可以陷入僵局,或者是关于其他一些活动问题?它与生产者和顾客的数量有关吗?
是否有任何便携式开源库支持基于样本的合成并封装生成和混合简单的PCM?
我真的需要一些简约的东西,并与操作系统的音频输出机制分离.
是否真的可以在构造函数中创建的线程中查看部分构造的对象,因为缺少同步和泄漏此实例?
当然,除了有子类的情况,或者我们正在使用clone或类似的东西进行隐式构造 - 所以让我们假设该类是final,并且在调用其他线程之前调用构造函数的线程中它是完全初始化的.
据我所知,以下hb()规则适用,
线程中的每个操作都发生在该程序顺序中稍后出现的该线程中的每个操作之前(程序顺序规则)
在启动线程中的任何操作之前,对线程的start()调用发生.
如果是hb(x,y)和hb(y,z),那么hb(x,z)
那么它是否意味着以下代码在技术上是线程安全的(我从类似的问题中得到它为什么我不应该在我的类的构造函数中使用Thread.start()?,还有一个类似的问题为什么它是坏的练习在构造函数上创建一个新线程?,ps我希望这个不会被重复关闭)
final class SomeClass
{
public ImportantData data = null;
public Thread t = null;
public SomeClass(ImportantData d)
{
t = new MyOperationThread();
// t.start(); // Footnote 1
data = d;
t.start(); // Footnote 2
}
}
Run Code Online (Sandbox Code Playgroud)
PS显然数据字段在这里缺乏封装,但是这个问题是关于对象从线程t的状态可见性.
如何以编程方式在MIUI设备中打开管理应用程序电池使用情况设置?
我打开设置:
startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在MIUI设备中打开管理应用程序电池使用设置.
看来org.hibernate.cfg.Configuration对象可以通过调用validateSchema方法以编程方式执行验证.但是,此方法需要dialect和databaseMetadata对象.我正在使用Spring,我可以从spring上下文中获取AnnotationSessionFactoryBean对象.到目前为止,我有以下代码:
AnnotationSessionFactoryBean factory = null;
factory = (AnnotationSessionFactoryBean) context.getBean("AnnotationSessionFactory");
Configuration configuration = factory.getConfiguration();
//the following line does not work, ConnectionHelper hierarchy is not visible outside the package
ConnectionHelper connectionHelper =
new ManagedConnectionProviderConnectionHelper(factory.getHibernateProperties());
Dialect dialect = Dialect.getDialect(factory.getHibernateProperties());
Connection connection = null;
DatabaseMetadata databaseMetadata = null;
try {
databaseMetadata = new DatabaseMetadata(connection, dialect);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
configuration.validateSchema(dialect, databaseMetadata);
Run Code Online (Sandbox Code Playgroud)
我是在正确的轨道上吗?ConnectionHelper层次结构在包外不可见,因此我无法以这种方式获取连接对象,以构建databaseMetadata.我该如何实现呢?
编辑:我想我已经取得了一些进展.有一个SchemaValidator类.代码现在看起来像这样:
AnnotationSessionFactoryBean factory = context.getBean("&AnnotationSessionFactory");
Configuration configuration = factory.getConfiguration();
SchemaValidator validator = new SchemaValidator(configuration); …
Run Code Online (Sandbox Code Playgroud) 我已经阅读了http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-4.html并注意到所有示例都有显式声明的参数类型,即使它已经从interface-function声明中得知.
public interface FileFilter {
/** ... **/
boolean accept(File pathname);
}
FileFilter java = (File f) -> f.getName().endsWith(".java");
Run Code Online (Sandbox Code Playgroud)
我们不能一起去
(f) -> f.getName().endsWith(".java"); ?
Run Code Online (Sandbox Code Playgroud)
更新:在JSR-335草案中,我发现最有可能支持推断类型参数
(int x) -> x+1 // Single declared-type parameter
(int x) -> { return x+1; } // Single declared-type parameter
(x) -> x+1 // Single inferred-type parameter
x -> x+1 // Parens optional for single inferred-type case
Run Code Online (Sandbox Code Playgroud) 我用
当我开始
$ docker-compose exec web /bin/bash # ssh into the web server
$ bundle exec rails c
Run Code Online (Sandbox Code Playgroud)
我收到以下错误。
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/runtime.rb:86:in `each'
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/runtime.rb:86:in `block in require'
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/runtime.rb:75:in `each'
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/runtime.rb:75:in `require'
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler.rb:106:in `require'
from /usr/src/app/config/application.rb:7:in `<top (required)>'
from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:82:in `require'
from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:82:in `preload'
from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:143:in `serve'
from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:131:in `block in run'
from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:125:in `loop'
from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:125:in `run'
from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application/boot.rb:19:in `<top (required)>'
from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
Run Code Online (Sandbox Code Playgroud)
但是我已经把pq
gem 放在了 …
我有 spring 应用程序,其中我将 org.apache.cxf 用于soap 和 spring MVC 用于显示一些页面。我的web.xml
包含两个 servlet:CXFServlet and mvc-dispatcher
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/servlet-context.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
当我@ResponseBody
在我的控制器中使用时,一切都很好。
@Controller
@RequestMapping("/hello")
@ResponseBody
public class HelloController {
@RequestMapping(method = RequestMethod.GET)
public String printWelcome() {
return "hello" ;
}
}
Run Code Online (Sandbox Code Playgroud)
但是后来我需要使用jsp我必须使用以下内容
@Controller
@RequestMapping("/hello")
public class HelloController {
@RequestMapping(method = RequestMethod.GET)
public ModelAndView printWelcome(ModelMap model) {
model.addAttribute("message", "hello");
return new ModelAndView("hello") ; …
Run Code Online (Sandbox Code Playgroud) 我有一个Web应用程序,其中包含我的一个应用程序服务的配置xml文件,该文件作为spring bean公开.此外,我在同一个工作区中有一个独立的Java应用程序(它从其pom.xml引用我的Web应用程序项目),它使用Spring TestContext框架运行测试,其中一个测试检查该XML文件的配置.
但是我从独立应用程序访问此xml文件时遇到问题:
在设置测试之前,在我之前的配置中,该文件是通过ServletContext访问的,位于WEB-INF /文件夹中.然而,使其从测试项目,我必须将它移动到accessable 源/文件夹,并用getClassLoader()加载它.的getResourceAsStream()方法,而不是ServletContext中的.但它会使编辑文件变得很麻烦,因为每次都需要重新部署应用程序.
是否可以将文件保存在WEB-INF /文件夹中,但在测试运行期间从引用项目中加载它?
PS目前它是一个带有Tomcat服务器的STS项目.
我正在尝试集成一个从stdin读取的小型Win32 C++程序,并将解码结果(〜128 kbytes)写入输出流.
我把整个输入读入缓冲区
while (std::cin.get(c)) { }
Run Code Online (Sandbox Code Playgroud)
将整个输出写入stdout后.
当我从命令行运行应用程序时,一切正常test.exe < input.bin > output.bin
,但是这个小应用程序应该从Python运行.
我希望Python subprocess.communicate
应该被使用,文档说:
与流程交互:将数据发送到stdin.从stdout和stderr读取数据,直到达到文件结尾.等待进程终止.
因此communicate()
,在等待我的应用程序完成之前,请等到文件结束 - 当我的应用程序退出时,是否应该发生EOF?或者我应该明确地做fclose(stderr)和fclose(stdout)吗?