草庐IT

美团$方案$实践

全部标签

java - 并发实践 - volatile++

在ConcurrencyinPractice中,它说如果Writestothevariabledonotdependonitscurrentvalue.因此,如果您有一个共享的可变变量a,并且所有线程对它执行的操作都是a++(它们不获取值,它们只是++)。然后根据引用,即使a++不是原子的,您也应该能够使其成为volatile,对吗? 最佳答案 不,在volatile变量上使用++不是线程安全的,因为a++相当于:inttemp=a;temp=temp+1;a=temp;所以回写到a可能发生在另一个线程修改了a因为你的线程读取了它,

java - JAX-RS 中方法类型的最佳实践

关于JAX-RS中方法类型的最佳实践是什么?我对以下方法感兴趣:GET、POST、PUT和DELETE。我可能的做法:GET-始终返回响应。@GET@Path("/path/{something}")publicTgetT(){...returnt;//t-instanceofT}发布@POST@Path("/path")publicT/voidcreateOrUpdate(){...returnt;//t-instanceofT}问:是返回整个创建的资源还是只返回一个“ACK响应”,还是返回一个void更好方法?用作GET的POST怎么样(当我们想避免URL长度限制时)?放置@PUT

Java接口(interface)最佳实践

我有以下两个对象publicclassObjectA{intid;Stringname;}publicclassobjectB{Longid;Stringname;}我希望能够创建一个将由这两个对象实现的接口(interface)“AnObject”。这个界面会是什么样子?publicinterfaceAnObject{publicgetId();publicStringgetName();}ID的getter中的类型应该是什么? 最佳答案 首先不要命名为Object.Object是Java的所有其他类的隐式基类。从技术上讲,您可以

java - 即使在简单的 POJO Java 类中实现 java.io.Serializable 也是最佳实践吗?

一般来说,让简单的POJOJava类实现java.io.Serializable是最佳实践吗? 最佳答案 一般不会。约书亚布洛赫说implementSerializablejudiciously.他描述的缺点总结:降低了以后更改类实现的灵active-序列化形式是类API的一部分更有可能出现一些错误和安全漏洞-攻击者可以访问序列化字节流中的类内部增加了测试负担-现在您必须测试序列化!负担子类的作者——他们也必须使他们的子类可序列化当然,有时您需要一个POJO来实现可序列化,例如RMI,但如果不需要,没有它您的代码会更简单、更安全。

java - 如何在软件开发实践中尽早发现业务相关的bug?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion我在我客户的一个场所与一群非常敏锐的开发人员一起工作。我们围绕NullPointerException和其他异常进行了正确编码,因此我们没有这些异常。但是当涉及到业务规则时,我们有一些错误,并且在已经投入生产时发现了问题。当然,我们拥有非常快节奏的环境,并且由管理团队而不是开发团队指挥部署到生产环境。但我们通过了QA和数据质量团队的“绿灯”。在软件开发过程中及早发现业务相关错误的最佳做法是

java - 什么时候消息传递(例如 JMS)是多线程的替代方案?

我在一个数据处理应用程序上工作,在这个应用程序中,通过将多个工作单元放在一个消息队列上来实现并发,消息驱动bean(MDB)的多个实例会监听该消息队列。除了以这种方式实现并发之外,我们没有任何特定理由使用消息传递基础结构和MDB。这让我开始思考为什么使用多线程无法实现同样的效果。所以我的问题是,在什么情况下可以使用异步消息传递(例如JMS)作为多线程的替代方法来实现并发?使用一种方法相对于另一种方法有哪些优点/缺点。 最佳答案 它不能作为多线程的替代品,它是一种实现多线程的方式。这里有三种基本的解决方案:你负责队列的两端;您负责发送

windows下Nginx启动失败(常见的两个错误以及解决方案)

问题 windows10下启动nginx,闪屏而过,访问localhost显示无法访问。尝试解决cmd下使用命令:netstat-an|find"0.0.0.0:80",可以发现80端口已经被占用。 使用命令:netstat-ano可以发现占用80端口的服务pid=4,ctrl+shift+Esc打开任务管理器,查看详细,占先pid排序,可以查看到pid为4的进程:NTkernel&System。解决 第一步:使用如下命令关闭iis相关服务(管理员身份进入cmd)  netstophttp   这时会有提示确认信息,提示要关闭http服务,需要停止其依赖的其他服务,输入Y此时依赖的相关服务都会

java - JDBC 最佳实践

我要创建将对数据库进行操作的类。该类将具有addRecord()、getAllRecords()等函数。我正在寻找一种设计类(class)的好方法。我应该:1)为每个功能创建新的连接。像这样:voidreadRecords(){try{Connectioncon=DriverManager.getConnection(connectionURL);Statementstmt=con.createStatement();ResultSetrs=stmd.executeQuery("selectmoviename,releasedatefrommovies");while(rs.next(

java - Web 应用程序中的 Spring beans 作用域。最佳实践

我对这个话题有些疑惑。在大多数Springbean(dao、服务和Controller)的应用程序中,我们使用“请求”范围。这种方法允许我们减少内存使用并创建无状态层。但另一方面,我们在Spring上下文初始化的每个请求上都松散了性能。我考虑创建一些bean,例如DAO层,在“单例”或“原型(prototype)”范围内。您在应用程序中使用了哪些技术?也许存在一些设计SpringWeb应用程序bean范围的建议? 最佳答案 我在做决定时倾向于使用的一般规则如下:长存状态这是需要在多个请求(http)上保留状态的时候。在这种情况下,存

java - Java 中 File.exists() 的替代方案

我从没想过它会发生在我身上,但我在Java中遇到了我的第一个错误:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5003595我所处的情况与错误(Linux上的NFS)中描述的完全相同,而且我看到File.exists()没有返回正确的值(在至少不是马上)。所以我的问题是,除了这种检查文件是否存在的方法之外,还有其他方法吗?如果可能的话,我宁愿让它与操作系统无关。编辑:我找到了解决方法。如果您调用ls$filedir,NFS会刷新任何给Java带来麻烦的缓存/元数据,并且File.exists()会返回正确的值。诚然,这并不完全理