草庐IT

设计CPU

全部标签

java - 好的设计 : How to pass InputStreams as argument?

我有一个大文件,我正在打开一个FileInputStream。该文件包含一些文件,每个文件都具有相对于开头的偏移量和大小。此外,我有一个解析器应该评估这样一个包含的文件。Filefile=...;//thebigfilelongoffset=1734;//acontainedfile'soffsetlongsize=256;//acontainedfile'ssizeFileInputStreamfis=newFileInputStream(file);fis.skip(offset);parse(fis,size);publicvoidparse(InputStreamis,long

java - 为可测试性设计构造函数

我正在处理一些现有代码,试图添加到它并增加它的单元测试。但是在使代码可测试方面遇到了一些问题。原始构造函数:publicInfo()throwsException{_ServiceProperties=newServiceProperties();_SshProperties=newSshProperties();}我知道这很糟糕,而且显然不可测试。在junit环境中,这个类每次都无法创建,因为它无法找到必要的属性来构造自己。现在,我知道通过将以“new”开头的任何内容作为参数移动的简单更改,此类将更易于测试。所以我最终得到:新构造函数:publicInfo(ServiceProper

java - 纸牌游戏玩家类 OOP 设计

我要为我的纸牌游戏(ginrummy)创建玩家和AI玩家(AIBasicPlayer、AINormalPlayer和AIHardPlayer)类。创建上述类的最佳OOP或设计模式方法是什么?我查看了一些开源纸牌游戏并比较了它们的方法,以下是我收集的方法:***Classes**1.playerclassonlypublicclassplayer{}publicclassAIPlayer{}2.baseclassplayerpublicabstractclassplayer{}publicclassHumanPlayerextendsplayer{}publicclassAPlayere

java - 高 CPU,可能是由于上下文切换?

我们的一台服务器的应用程序的CPU负载非常高。我们查看了各种统计数据,但无法找到问题的根源。目前的一个理论是涉及的线程太多,我们应该尽量减少并发执行的线程数。只有一个主线程池,有3000个线程,和一个与之一起工作的WorkManager(这是JavaEE-Glassfish)。在任何给定时刻,大约有620个独立的网络IO操作需要并行执行(使用java.NIO也不是一个选项)。此外,大约有100个不涉及IO的操作也是并行执行的。这种结构效率不高,我们想看看它是否真的造成了损害,或者仅仅是一种不好的做法。原因是这个系统中的任何更改都非常昂贵(就工时而言),因此我们需要一些问题的证据。现在我

java - 似乎在等待的线程的高 CPU 使用率

我目前正在运行一些JMeter测试来测试Web服务的性能。它使用了大量的CPU。对于一个JMeter请求线程,它使用10-30%(取决于请求类型)。当我将其增加到仅15个线程时,我的CPU利用率约为95%。自然,我想弄清楚发生了什么。我做了一个HprofCPU示例(我尝试了times选项,但需要一个半小时才能启动我的服务,并且没有消息会通过)。以下是该采样的结果片段(超过15分钟)。CPUSAMPLESBEGIN(total=220846)FriAug2213:38:542014rankselfaccumcounttracemethod114.96%14.96%33038300514j

java - 服务提供者设计模式

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion我在研究Grapht@defaultImplementation代码(http://grepcode.com/file/repo1.maven.org/maven2/org.grouplens.grapht/grapht/0.5.0/org/grou

java - 这是一种常见的设计模式吗? "Descriptor pattern"?

我在做的事情是否符合通用设计模式?如果有,名字是什么?我有一个复杂对象,它具有“简单”字段,例如字符串和字符串列表,以及其他复杂对象。我想将此对象的实例添加到JMS消息队列中,这意味着它们需要是Serializable。我不想让整个对象图Serializable,所以我选择制作包含构建复杂对象所需信息的“Descriptor”对象和可以创建的“Builder”对象对象。现在,我序列化“Descriptor”对象并将其添加到队列中。当对象出队时,它会使用“Builder”构建成一个完整的对象。需要注意的重要一点是,对象是在其他系统上运行的作业。消息队列是一种方式,序列化只发生在作业生命周

java - 不可变类设计

JoshuaBloch给出的一个建议是,类应该设计为不可变的。我有以下类(class)publicclassDividend{publicDividendsetDate(SimpleDatedate){Dividenddividend=newDividend(this.getStock(),this.getAmount(),date);returndividend;}.....//Moretogo.对于setDate方法,this对象不会被修改。相反,将返回修改了日期字段的this的克隆副本。但是,通过方法名称判断,用户如何知道这个对象仍然保持不可变?除了setDate,还有更好的命名

java - 使用 Spring 的线程安全、无状态设计

我假设如果实例变量由springIOC管理,并且是单例,那么设计可以称为无状态和线程安全的。这种类型的设计因此可以扩展到集群服务器。下面概述的我的假设是否正确?@Repository("myDao")publicclassMyDaoimplementsDao{@AutowiredprivateJdbcTemplatejdbcTemplate;@Value("${sqlFoo}")privateStringfoo;@OverridepublicIntegergetMyInt(Stringstr){returnjdbcTemplate.queryForInt(foo,str);}然后注入(

MATLAB——IIR数字滤波器的设计

1.基础知识1.1、数字滤波器设计的基本步骤我们知道模拟滤波器的设计是数字滤波器的设计的基础。在学习数字信号处理的过程中,IIR数字滤波器的设计的步骤是(1)确定采样间隔Ts或者采样频率fs。(2)根据模拟频率和数字频率之间的关系,将所给出的数字滤波器的指标转化为模拟滤波器的指标。(Ω=ω/Ts)(3)根据模拟滤波器的指标设计模拟滤波器。(4)根据冲激响应不变法和双线性变换法,将H(s)转化为H(z)。1.2、冲激响应不变法根据z=esTz=e^{sT}z=esT,将S平面映射到Z平面,但不是一对一的映射。冲激响应不变法只适合用于有限带宽的滤波器设计。1.3、双线性变换法通过对S平面进行压缩,