我正在开发一个简单的Java EE应用程序.
我有这样的课:
import javax.annotation.PostConstruct;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
@Stateless
public class BlogEntryDao {
EntityManager em;
@PostConstruct
public void initialize(){
EntityManagerFactory emf = Persistence.createEntityManagerFactory("Persistence");
em = emf.createEntityManager();
}
public void addNewEntry(){
Blogentry blogentry = new Blogentry();
blogentry.setTitle("Test");
blogentry.setContent("asdfasfas");
em.persist(blogentry);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的托管bean调用这个方法.直到这里没有问题.但是由于没有调用initialize方法,我在em.persist中获得了一个NPE .
为什么没有调用initialize方法?我在Glassfish服务器上运行它.
问候.
总而言之,挑战如下:
Hackerland是一维城市Ñ房屋,其中每个房子我位于一些X 我在x轴上.市长希望在城市房屋的屋顶上安装无线电发射器.每个发射机具有一个范围,ķ,这意味着它可以将信号发送到所有的房屋≤ ķ单位距离的路程.
鉴于Hackerland的地图和k的值,您能找到覆盖每个房屋所需的最小数量的发射器吗?
我的实现如下:
package biz.tugay;
import java.util.*;
public class HackerlandRadioTransmitters {
public static int minNumOfTransmitters(int[] houseLocations, int transmitterRange) {
// Sort and remove duplicates..
houseLocations = uniqueHouseLocationsSorted(houseLocations);
int towerCount = 0;
for (int nextHouseNotCovered = 0; nextHouseNotCovered < houseLocations.length; ) {
final int towerLocation = HackerlandRadioTransmitters.findNextTowerIndex(houseLocations, nextHouseNotCovered, transmitterRange);
towerCount++;
nextHouseNotCovered = HackerlandRadioTransmitters.nextHouseNotCoveredIndex(houseLocations, towerLocation, transmitterRange);
if (nextHouseNotCovered == -1) {
break;
} …Run Code Online (Sandbox Code Playgroud) 我知道Java不允许无符号类型,所以我想知道它如何将整数转换为一个字节.假设我有一个值为255的整数a,我将整数转换为一个字节.值是否以字节11111111表示?换句话说,值是否更多地被视为带符号的8位整数,还是直接复制整数的最后8位?
我使用Java作为示例,但这更像是一般的OOP设计相关问题.
让我们以IOExceptionJava中的s为例.为什么有一个类FileNotFoundException例如?难道不应该是一个实例IOException,其中的原因是FileNotFound?我想说的FileNotFoundException是一个例子IOException.这到底在哪里?FileNotFoundButOnlyCheckedOnceException,FileNotFoundNoMatterHowHardITriedException..?
我也看到过我所在的项目中的代码,其中包括类FirstLineReader和LastLineReader存在的类.对我来说,这些类实际上代表了实例,但我在很多地方看到了这样的设计.以Spring Framework源代码为例,它带有数百个这样的类,每次看到一个我都看到一个实例而不是蓝图.这些课程不是蓝图吗?
我想问的是,如何在这两个非常简单的选项之间做出决定:
选项1:
enum DogBreed {
Bulldog, Poodle;
}
class Dog {
DogBreed dogBreed;
public Dog(DogBreed dogBreed) {
this.dogBreed = dogBreed;
}
}
Run Code Online (Sandbox Code Playgroud)
选项2:
class Dog {}
class Bulldog extends Dog {
}
class Poodle extends Dog {
}
Run Code Online (Sandbox Code Playgroud)
第一个选项为调用者提供了配置它正在创建的实例的要求.在第二个选项中,类已经表示了实例本身(正如我所看到的,这可能是完全错误的......).
如果你同意这些类代表实例而不是蓝图,你会说创建表示实例的类是一个好习惯,或者我正在看这个是完全错误的,我的语句"表示实例的类"只是加载废话?
我可以定义一组断点,并将此定义保存在IntelliJ中并稍后恢复吗?
就像我在A级的40,50线断点一样.我可以保存这个,并以任何方式恢复吗?
谢谢.
所以我有一个基本的JSF Datatable,相关部分是:
<h:dataTable value="#{actorTableBackingBean.allActors}" var="actor">
<h:column headerText="Actor Name" sortBy="#{actor.firstName}">
<h:outputText value="#{actor.firstName}" />
</h:column>
<h:column>
<h:form>
<h:commandButton value="Delete Actor"
action="#{actorTableBackingBean.deleteActor(actor)}"/>
</h:form>
</h:column>
<h:column>
<h:form>
<h:commandButton value="Randomize Actor Name"
action="#{actorTableBackingBean.editActor(actor)}"/>
</h:form>
</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
这就是ActorTableBackingBean的样子:
@Named
@RequestScoped
public class ActorTableBackingBean implements Serializable {
@Inject
ActorDao actorDao;
private List<Actor> allActors;
public List<Actor> getAllActors() {
return allActors;
}
@PostConstruct
public void fillUp(){
allActors = actorDao.getAllT();
}
public String deleteActor(Actor a){
removeActor(a);
return "/allActors.xhtml";
}
private String removeActor(Actor a){
try{
actorDao.deleteActor(a);
return null;
}catch (Exception e){ …Run Code Online (Sandbox Code Playgroud) 我有一个简单的Web应用程序,我使用JPA.
我有一个名为BlogEntry的实体.
当我提交一个新的BlogEntry时,当我调试我的应用程序时,我看到utf8字符就好了.
例如
em.persist(entity);
Run Code Online (Sandbox Code Playgroud)
在这一行中,如果我调试例如:
entity.getTitle()
Run Code Online (Sandbox Code Playgroud)
我可以成功地在IDE中看到utf-8字符.(如ğğ,或çç)
此外,我的数据库具有UTF8排序规则,我可以使用类似"INSERT INTO ..."的sql插入utf-8字符.
但是,使用JPA时,字符会保持为????
为什么会这样?
问候.
这是我的persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="Persistence">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.tugay.blog.core.model.Blogentry</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/blogdatabase"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="aabbccdd"/>
</properties>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud) 我是桌面应用程序开发的新手,今年夏天我有一个非常大的项目.问题是代码必须非常清晰,所以当我更新代码时,我不会遇到麻烦.
结果,我想要一个良好的"关注点分离".对我来说最困难的部分是视图 - 控制器分离.
现在,我已经阅读了很多教程,讨论等.我已经以3种不同的方式设计了一个迷你应用程序.该应用程序很简单:单击将标签转换为"Hello world"的按钮.
你怎么看待这3个设计?
有没有更好的设计来满足我的期望?
View1.java:
public View1() {
initComponents();
this.controller = new Controller1(this);
}
private Controller1 controller;
public void updateLabel(String message){
this.jLabel1.setText(message);
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.controller.doSomething();
}
private void initComponents() {
...
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
...}
Run Code Online (Sandbox Code Playgroud)
Controller1.java:
public class Controller1 {
public Controller1(View1 v){
this.view = v;
}
public void doSomething(){
this.view.updateLabel("Hello world");
}
private View1 view;
}
Run Code Online (Sandbox Code Playgroud)
View2.java:
public View2() {
initComponents(); …Run Code Online (Sandbox Code Playgroud) 我一直在讨论这个问题,Hibernate SessionFactory和JPA EntityManagerFactory之间的鸟眼差异是JPA是标准的.您可以使用它而不必担心底层ORM.然而它会在底层调用底层的sessionFactory.(如果我错了,请纠正我)
但如果有人知道他将来只是坚持使用hibernate作为ORM,那么他应该从这两个工厂中选择什么呢?为什么呢?
其次,这两者在性能,功能,稳定性等方面还存在哪些差异?