小编Jay*_*Pea的帖子

Hibernate:在@Formula注释中使用HQL?

从我测试的内容来看,似乎只能在@Formula注释中使用标准SQL.文档对这个特性没有很好的描述(我最多找到了一个关于它的段落),所以我想知道是否可以以某种方式使用HQL,或者是否有另一个功能可以让我用HQL查询加载对象的属性.

annotations hibernate hql formula

6
推荐指数
1
解决办法
4297
查看次数

将HTML划分为页面,拆分长段落

好吧,我甚至不确定这是否可以用我目前的方法来完成.我正在尝试将HTML文档的内容放入当前视口大小的页面中.我目前正在通过迭代所有文档的元素并检查它们的顶部偏移是否在当前页面的边界内,每当它不是时,这个偏移成为新页面的开始并且页面边界被设置为该偏移加上视口的高度.

我面临的问题是,通常会有一个元素(例如一个段落),其高度大于视口本身,所以即使算法将此元素放在新页面的开头,其内容也会溢出.我试图找到一种方法来分割这些元素,使第一个切片占据页面的剩余部分.

这带来了更多困难.即使我能找到一种方法来确定一个段落的文本仍然适合页面的其余部分,并且这本身已经证明是非常困难的,我仍然会遇到DOM在分割之后没有立即更新的问题.段落,这将搞乱下一页的计算或至少迫使我打破递归,这将使算法复杂化更多.

有关如何以第一个切片占用页面上剩余空间的方式拆分段落的任何建议都是受欢迎的.到目前为止这是我的代码:

编辑: 值得注意的是,这只适用于非常简单的HTML,没有绝对定位或浮动的元素.在我的情况下,这不是问题.

var elementIndex = -1;
var pages = 1;
var pageBoundary = 0;
var pageBreaks = [];

function calculatePages() {
    //first page boundary is window height
    pageBoundary = $(window).height();
    //do calculations
    iterateElements($("body"));
    //print results
    console.log(pageBreaks);
}

function iterateElements(parent) {

    $.each($(parent).children(), function(i, e) {
        //increase current element index
        elementIndex = elementIndex + 1;
        //get element's top offset
        var offsetTop = $(e).offset().top;
        //get the last position that the element occupies
        var elementSpan = offsetTop + $(e).outerHeight();

        if …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery dom

6
推荐指数
1
解决办法
3921
查看次数

Flex Web应用程序:在窗口不可见时防止帧率下降

因此,自10.1版以来,Flash播放器中出现了一个新的"功能",当应用程序窗口不在视野范围内时,它会将播放器的帧速率降低到2 fps.这对于性能来说是个好消息,但它可能会破坏某些功能,例如Timer类.

我有一个使用Timer来显示倒计时的应用程序.鉴于应用程序的性质,即使用户没有看到它,Timer也需要完成倒计时.想象一下,您需要为用户提供10秒的时间来执行任务.如果用户将窗口最小化通过计数器,他们可以花费他们想要的时间,并且当他们返回窗口时仍然有5秒钟.使用较新的闪存播放器显然无法避免这种情况.

在Air应用程序中有backgroundFrameRate属性可以设置为防止此行为,但这是WindowedApplication类的一部分,因此它似乎在Web应用程序中不可用.有没有人知道一种方法来保持恒定的帧速率,即使窗口不可见?谢谢

apache-flex flashplayer-10 web

5
推荐指数
1
解决办法
1138
查看次数

Spring:这种模式是否是线程安全的?

我一直在学习如何使用Spring框架进行hibernate事务管理,到目前为止,它已经为此目的提供了很大的帮助.问题是,最近,我意识到我没有考虑过我选择的模式如何处理并发,特别是在Web应用程序的情况下.

下面的代码举例说明了我正在使用的模式,它是我发现的一些示例和自定义servlet实现的组合.我有点怀疑这个模式是如何工作的,以及它是否是线程安全的,因为我对它进行了一些定制.我的一些担忧是:

  • 即使servlet在技术上不是单例,我的印象是大多数时候每个servlet类只有一个实例.
  • 如果我理解正确,每个自动连线属性将是一个单独的,所以如果上面是真的,那么就会有一个带有单个服务实例的servlet实例,而这个实例又有一个DAO实例,它有自己的实例SessionFactory实例.
  • 如果以上是正确的,那么我可以想象servlet上的每个请求都将使用相同的对象,我想知道这是否是一件好事.在给出一些想法之后,我无法判断线程安全是否更好于拥有单例或为每个http请求创建新实例.
  • 通常这些spring模式都有一个@Controller类,我跳过这个类来支持我们的自定义servlet,我想知道这是否会以某种方式破坏模式的并发性.

谢谢

public interface UserDAO
{
    public void save(User user);
}

@Repository
public class HibernateUserDAO implements UserDAO
{
    @Autowired(required=true)
    protected SessionFactory sessionFactory;

    public void save(User user)
    {
        this.sessionFactory.getCurrentSession().save(user);
    }
}

public interface UserService
{
    public void saveUser(User user);
}

@Service
public class DefaultUserService implements UserService
{
    @Autowired(required=true)
    private UserDAO userDAO;

    @Transactional
    public void saveUser(User user)
    {
        this.userDAO.save(user);
    }
}

public class UserServlet extends CustomServlet
{   
    @Autowired(required=true)
    private UserService userService;

    public void init() throws ServletException
    { …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate web-applications thread-safety

5
推荐指数
1
解决办法
1381
查看次数

Hibernate:在删除之前检查外键约束是否违反?

我目前正在研究的系统有一个策略,其中没有关系的对象可以自由删除,而那些有关系的对象必须在逻辑上删除。这是为了防止历史信息被删除。

所以基本上,我试图做的是确定一个对象的键当前是否存在于另一个表中。如果不是,我将简单地调用 delete(),否则我将设置一个指示逻辑删除的属性,并调用 update()。

我正在使用 Spring 事务管理,所以我试图尽可能少地弄乱会话本身。我最初的方法起初似乎有效,但你会发现它有一个重大缺陷:

@Transactional
public void deleteObject(SomeEntity object)
{       
    //try to delete
    this.someEntityDAO.delete(object);

    try //force foreign key constraint check
    {
        this.someEntityDAO.flush();
    }
    catch (ConstraintViolationException e)
    {
        //reload object
        object= this.someEntityDAO.loadById(object.getId());

        //save as inactive instead of deleting
        object.setActive(false);
        this.someEntityDAO.update(object);
    }
}
Run Code Online (Sandbox Code Playgroud)

由于 Hibernate 异常是致命的,因此这是完全不可靠的(即使它有效)。我想知道是否有一种方法可以进行一种“窥视”操作,在该操作中我可以测试删除是否会因约束而失败,而无需实际执行操作(从而使会话无效)。我唯一能想到的就是手动检查每个相关表以查看 id 是否存在,但这在具有许多关系的表中会非常繁琐且容易出错。如果可能,我想利用数据库中已经存在的约束。

java spring hibernate constraints foreign-keys

5
推荐指数
1
解决办法
4779
查看次数

requestFullscreen 多个元素

假设您正在使用 HTML5 视频播放器库,例如 Videojs。您想通过添加一个额外的按钮来扩展这个库的功能,但由于与这个问题无关的原因,您不想进入整个插件编码业务,所以您只需将播放器放入容器内并添加一个绝对定位的按钮按钮,例如:

<div class="player-container">
  <video class="video-js"></video>
  <button type="button" class="absolutely-positioned"></button>
</div>
Run Code Online (Sandbox Code Playgroud)

问题是,在某些时候您可能会单击播放器的全屏按钮,这将调用requestFullscreen视频元素并且仅调用视频元素。这意味着您的按钮或该容器上的其他任何内容都不会处于全屏模式。

z-index在 webkit 浏览器上,您可以通过将全屏模式下的视频元素设置为等于或更高,使其他元素在全屏上保持可见。在 Firefox 上,该元素需要更改为position: fixed(但您不能使用-moz-full-screen前缀来设置其样式,因为该元素不会被识别为处于全屏模式),而在 IE 上,它根本不可见。

我试图找出全屏模式是否仅限于单个元素(及其子元素),或者是否可以同时拥有多个全屏元素。还有其他人遇到过类似的事情吗?有什么解决方法吗?

html javascript css html5-fullscreen

5
推荐指数
1
解决办法
2174
查看次数

SerialPort是否在自己的线程上接收数据?

假设我们有以下代码:

SerialPort port = new SerialPort("COM2", 115200); 
port.Open();
//
Thread.Sleep(5000);
//
if (port.BytesToRead > 0)
{
   Console.WriteLine("Bytes in buffer: " + port.BytesToRead.ToString());
}
Run Code Online (Sandbox Code Playgroud)

如果在线程被阻塞的5000毫秒期间,5个字节被发送到串口,那么代码会打印出缓冲区中有5个字节吗?或者在Thread.Sleep返回之前它不会开始接收?

谢谢

c# multithreading serial-port

3
推荐指数
1
解决办法
864
查看次数

Hibernate:有没有办法自动将原生SQL结果转换为自定义对象?

我有一个本机SQL查询返回几个计算结果(如几个表的总和和平均值),我想将这些结果加载到包含所有必要字段的自定义对象.我知道Hibernate提供了addEntity方法,它允许您指定结果所代表的映射实体的类型.

在这种情况下,由于结果来自多个表,因此我使用的自定义对象不是映射实体.有没有办法让hibernate返回一个List<CustomObject>或者我必须手动将结果复制到正确的对象?谢谢.

Query query = this.sessionFactory.getCurrentSession().createSQLQuery(queryString.toString());

return (List<CustomObject>)query.list(); //doesn't work, obviously
Run Code Online (Sandbox Code Playgroud)

java sql hibernate

3
推荐指数
1
解决办法
8886
查看次数

内存泄漏问题

自从我被要求修复一个有内存泄漏问题的C#应用​​程序以来,我一直在阅读很多内容,但我没有找到这两个问题的答案:

请考虑以下代码:

   private static ArrayList list = new ArrayList();

   public void Function()
   {
     list.add(object1);
     list.add(object2);

     //didn't call clear() prior to reusing list
     list = new ArrayList();
   }
Run Code Online (Sandbox Code Playgroud)

由于列表在创建新列表之前未被清除,这是否会产生某种垃圾,在静态列表本身被释放后不会被释放?

第二个问题是关于Form.Dispose().我看到设计师视图(即标签,图片框)上的许多控件都需要处理.似乎在Form上调用Dispose()会导致所有这些类型的控件也被处理掉(如果我错了就纠正我),这很奇怪,因为设计师添加了一个覆盖的void Dispose(bool disposing)方法,没有这样的事.我假设这发生在基本Form类的void Dispose(bool disposing)方法中.

上面的问题是,我不清楚我需要做些什么才能确保正确处理所有Form的资源.我不明白Form如何知道它需要处理哪些对象.例如,如果在我的表单中我有一个自定义IDisposable对象的字段,表单是否知道它需要处理?或者我应该添加自己发布对象所需的代码?

另外,如果我确实需要添加代码来处理某些对象,那么我该如何处理设计者已经覆盖void Dispose(bool disposing)方法的事实呢?我应该编辑设计器生成的代码还是有更简洁的方法来执行此操作?

我希望这不要混淆,这有点难以解释.谢谢

c# garbage-collection dispose idisposable

2
推荐指数
1
解决办法
2592
查看次数

Facebook登录:有没有办法在重定向中接收URL片段作为查询字符串参数?

因此,当使用Facebook登录时,事实证明,如果您设置response_typetokencode%20token将"响应数据作为URL片段包含在"重定向到您的应用的URL上.说真的,为什么?什么时候对任何人都有用?

无论如何,我希望这在某种程度上与安全有关,并且除了惹恼别人之外还有其他原因,但我想知道是否有办法禁用它,因为我使用的是Angular并且它是真实的使用hashbangs处理网址的痛苦.

如果我设置response_typecode唯一的代码返回一个非常干净的查询参数,但我想,以执行额外的验证能够同时接收.有没有办法改变这种行为?谢谢.

编辑: 那么事实证明,设定response_typecode收益#/ =在URL的末尾,所以没有办法得到一个干净的查询字符串.已经确定没有办法改变这种行为,但我仍然有兴趣找出Facebook为什么这么做.它与安全有关吗?这些url片段的目的是什么?

facebook facebook-login

2
推荐指数
1
解决办法
2293
查看次数

用于事务重用的Hibernate模式

我有一个基本方法,我写的是为了不反复重复相同的hibernate会话/事务逻辑.这很简单,但有一个特定的问题,我不确定这种方法可以解决.

想象一下,您有一个User实体和一个Permission实体.如果请求保存用户及其匹配权限,那么我认为在单个事务中执行这两个操作是有意义的,因为只能保存其中一个实体可能被视为数据损坏.例如,如果未能保存用户的权限,则可以保证回滚以前插入的用户数据.

我做了以下方法来允许通用的hibernate操作,如果有必要的话可以使用当前事务,尽管我现在认为它的当前形式因为调用session.beginTransaction()而无法工作.即使先前没有被提交,也可能会返回一个新的事务(这是这种情况吗?).假设我更改了它以使其返回当前会话和事务,如果指定当前事务将有更多操作,您认为它会起作用吗?做这样的事情是否可取,或者你会建议改变方法吗?谢谢

protected <T> void baseOperation(Class<T> entityClass, List<T> instances, BaseHibernateDAO.Operations operation, boolean isLastOperation) throws Exception
{
    Session session = null;
    Transaction transaction = null;
    boolean caughtException = false;

    //get session from factory
    session = HibernateSessionFactory.getSession();

    try
    {
        //get current transaction
        transaction = session.beginTransaction();

        for (Object instance : instances) //perform operation on all instances
        {
            log.debug(String.format("Will perform %s operation on %s instance.", operation.name(), entityClass.getName()));

            switch (operation) //perform requested operation
            {
                case SAVE:
                    session.save(instance);
                    break;
                case UPDATE:
                    session.update(instance);
                    break;
                case SAVEORUPDATE: …
Run Code Online (Sandbox Code Playgroud)

java session hibernate transactions

1
推荐指数
1
解决办法
3140
查看次数