我试图弄清楚如何重新调整图像的大小,使其保持宽度与高度的比例,但重新调整大小,直到图像的高度与包含div的高度匹配.我有这些相当大而长的图像(截图),我想将它们放入200px宽度,180px高度的div中进行显示,而无需手动重新调整图像大小.为了使这看起来很好,图像的边需要溢出并隐藏在包含div中.这是我到目前为止:
HTML
<a class="image_container" href="http://www.skintype.ca/assets/background-x_large.jpg">
<img src="http://www.skintype.ca/assets/background-x_large.jpg" alt="" />
</a>
Run Code Online (Sandbox Code Playgroud)
CSS
a.image_container {
background-color: #999;
width: 200px;
height: 180px;
display: inline-block;
overflow: hidden;
}
a.image_container img {
width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,图像父容器上显示灰色,根本不显示.为了使容器完全填满,宽度需要在两侧均匀溢出.这可能吗?是否也可以考虑一个太高的图像?
我有一个Quartz Job,它每5分钟在我的MySQL数据库中执行一次存储过程,由于某种原因,3次执行中有1次失败并给出了这个奇怪的异常.我搜索并搜索了这个异常的含义,但我找不到解决方案.这是完整的堆栈跟踪:
java.sql.SQLException: Could not retrieve transation read-only status server
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:951)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:941)
at com.mysql.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:3939)
at com.mysql.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:3910)
at com.mysql.jdbc.PreparedStatement.checkReadOnlySafeStatement(PreparedStatement.java:1258)
at com.mysql.jdbc.CallableStatement.checkReadOnlySafeStatement(CallableStatement.java:2656)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1278)
at com.mysql.jdbc.CallableStatement.execute(CallableStatement.java:920)
at com.mchange.v2.c3p0.impl.NewProxyCallableStatement.execute(NewProxyCallableStatement.java:3044)
at org.deadmandungeons.website.tasks.RankUpdateTask.execute(RankUpdateTask.java:30)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 1,198,219 milliseconds ago. The last packet sent successfully to the server was 950,420 milliseconds ago.
at sun.reflect.GeneratedConstructorAccessor43.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) …Run Code Online (Sandbox Code Playgroud) 我重新设计了我的数据库结构,使用PRIMARY和FOREIGN KEY将我的3个表中的条目链接在一起,我在尝试编写查询以在另一个表中给定数据的一个表中选择数据时遇到问题.以下是我的3个CREATE TABLE语句的示例:
CREATE TABLE IF NOT EXISTS players (
id INT(10) NOT NULL AUTO_INCREMENT,
username VARCHAR(16) NOT NULL,
uuid VARCHAR(200) NOT NULL DEFAULT 0,
joined TIMESTAMP DEFAULT 0,
last_seen TIMESTAMP DEFAULT 0,
PRIMARY KEY (id)
);
/* ^
One |
To
| One
v
*/
CREATE TABLE IF NOT EXISTS accounts (
id INT(10) NOT NULL AUTO_INCREMENT,
account_id INT(10) NOT NULL,
pass_hash VARCHAR(200) NOT NULL,
pass_salt VARCHAR(200) NOT NULL,
created BIGINT DEFAULT 0,
last_log_on BIGINT DEFAULT 0,
PRIMARY KEY …Run Code Online (Sandbox Code Playgroud) 我在代码重用和代码结构的几种不同的OOP方法之间徘徊,我无法找到我的案例的最佳选择.
目前,我有一个名为'Plot'(一块土地)的基类,它处理标准绘图类型和任何其他绘图类型的核心功能.所以我认为有任何其他Plot类型使用核心绘图功能来扩展Plot是有意义的.但是,我现在意识到这种方法有许多垮台.这是我的代码的当前基本结构(在java中):
public class Plot {
public void doStuff() {
// Do stuff for Standard plot type
}
}
public class EstatePlot extends Plot {
@Override
public void doStuff() {
// Make sure we still handle the base functionality (code reuse)
super.doStuff();
// Make sure we also do stuff specific to the Estate plot type
}
public void extendedFunctionality() {
// Do stuff that only applies to the Estate plot type
}
}
Run Code Online (Sandbox Code Playgroud)
出于几个原因,我不喜欢这种方法.
我认为这种方法不合适的更多原因可以在这里找到(http://www.javaworld.com/article/2073649/core-java/why-extends-is-evil.html)
我想过使用Composition,但我意识到这不是一个好选择,因为我仍然需要覆盖基础Plot类的功能. …
我有一个表依赖于插入顺序(糟糕的遗留设计,我无法改变),并且正在以错误的顺序插入瞬态实体.有问题的表称为'Mean',它是'Belief'的子实体.当session.save(belief);被调用时,该动作被级联到子平均实体,该实体被存储为信念类中的列表.均值实体以相应的顺序存储在belief.getMeans()列表中,但一旦持久存储到数据库,它们将按其复合键的顺序插入.例如,如果有3个Mean实体要插入以下顺序和复合键:
[1, 1], [1, 3], [1, 2]
Run Code Online (Sandbox Code Playgroud)
它们将按复合键排序,如下所示:
[1, 1], [1, 2], [1, 3]
Run Code Online (Sandbox Code Playgroud)
有什么可能导致这个的想法吗?我认为Hibernate应该根据它们在List中出现的顺序插入?我甚至尝试在每个Mean实体上单独运行session.save()以查看是否会产生差异,但事实并非如此.
我感谢您的帮助!
编辑:所以我最终做的是在Mean表中添加一个名为col_index的新列,该列保存结果矩阵中Mean的列索引.我使用了新的col_index列的javax.persistence.OrderBy注释,因此List of Mean实体以适当的顺序返回.虽然,这仍然无法解决插入顺序问题,我仍然希望得到答案.但是现在,这个解决方案必须满足要求.
我有一个webapp,使用setTimeout播放带淡入/淡出过渡的音频.众所周知,chrome和其他浏览器在非活动(或背景)选项卡中运行时会限制setTimeout执行.因此,要解决此问题,我使用此脚本(https://github.com/turuslan/HackTimer)修补Timer API以使用Web Worker.这允许音量衰落转换在后台运行,这样无论选项卡是否处于活动状态,它们将始终在同一时间执行和完成.这曾经在chrome中运行得很好,但现在我注意到在版本54(可能还有早期版本)的chrome中,Web Workers在非活动选项卡中运行时的执行速度是原来的两倍.这个问题不会发生,并且与FireFox甚至IE11完美配合!
这是一个铬虫吗?还是打算行为?这个问题还有另一种解决方法吗?我不想要求在单独的窗口中打开webapp,因此这不是一个选项.
这是一个演示:https: //jsfiddle.net/2614xsj8/1/
// Open Chrome console and run this then wait a few seconds to see
// it is executing on time. Then open or switch to a new tab and wait
// a few seconds. Come back to see how much slower the setTimeout
// function was being called even when using HackTimer which patches
// the Timer API to use Web Workers
var rate = 1000;
var …Run Code Online (Sandbox Code Playgroud)我有这个凌乱的代码,我真的想要清理,因为它有大约12个if if和每个if语句检查instanceof 2对象,所以类似于:if(parentObj instanceof superclass && parentObj2 instanceof superclass)
每个if语句执行不同的东西,所以我认为多态性不会让它变得更好.此外,因为这个小功能的12个不同的超类(大多数if语句执行1个衬里)会有点荒谬.多态无效的另一个原因是因为我无法访问父类或超类.我知道很多情况都不好,即使我从来没有真正理解为什么.在每个if语句中执行的方法不是父类,而是属于超类,因此我需要检查它们的类型,以便我可以转换它们并执行这些方法.关于如何清理它的任何想法?谢谢!
编辑:抱歉缺乏细节,我在手机上写了这个.无论如何,下面是我正在处理的一个例子.我看过战略模式,我唯一担心的是出于同样的原因,我必须创建许多不同的类,我觉得创建许多不同的对象只是为了一直执行1个衬里会有点浪费.另外在我看来,在策略设计中,我仍然需要进行许多实例检查以了解要执行的策略.无论如何,下面是一些代码:p
if (plotBlockState instanceof Sign && UpgradeBlockState instanceof Sign) {
//do Sign Stuff
}
else if (plotBlockState instanceof Chest && UpgradeBlockState instanceof Chest) {
//do Chest Stuff
}
else if (plotBlockState instanceof Dispenser && UpgradeBlockState instanceof Dispenser) {
//do Dispenser Stuff
}
else if (plotBlockState instanceof Furnace && UpgradeBlockState instanceof Furnace) {
//do Furnace Stuff
}
else if (plotBlockState instanceof BrewingStand && UpgradeBlockState instanceof BrewingStand) {
//do Brew Stand Stuff …Run Code Online (Sandbox Code Playgroud)