小编Cyn*_*ech的帖子

(Java)包组织是否有最佳实践?

不久之前,我在这里看到了一个关于java包的细粒度组织的问题.例如,my.project.util,my.project.factory,my.project.service,等.

我现在找不到,所以我不妨问一下这个问题.

是否有关于Java程序包组织的最佳实践以及它们的内容?

如何在Java项目中组织课程?

例如,我正在与一些人合作的项目有一个名为beans的包.它最初是一个包含简单豆类的项目,但最终(通过糟糕的经验和缺乏时间)包含所有内容(几乎).我通过在工厂包中放置一些工厂类(使用创建bean的静态方法的类)来清理它们,但我们有其他类来执行业务逻辑,而其他类则执行简单处理(不使用业务逻辑),如检索来自属性文件的代码消息.

感谢您的想法和意见.

java naming-conventions package

190
推荐指数
7
解决办法
12万
查看次数

从MySQL数据库中删除权限

在你认为这是一个重复的问题之前,我相信我有一个独特的,即使它有点愚蠢的情况.

几天前,我将我的Ubuntu 10.04服务器上的MySQL版本升级到5.3.3(它超过了10.04的Ubuntu版本).今天,我尝试登录phpMyAdmin,发现了一些有些可怕的Connection for controluser as defined in your configuration failed错误.

在按照几个关于如何解决这个问题的SO问题的描述之后,我已经陷入困境.

  • 我试图重新配置phpMyAdmin,但没有成功.
  • 我试图卸载phpMyAdmin并重新安装它,但它无法从数据库中删除权限并失败.
  • 然后我尝试手动删除用户的权限 - 有点愚蠢,我可能会添加 - 来自数据库,然后删除数据库,然后删除用户(带flush privileges).
  • 我完全删除了phpMyAdmin的整个安装(删除了应用程序和/ etc/phpmyadmin目录)并重新安装(使用apt-get),但是它表示phpmyadmin用户的权限已经存在:

granting access to database phpmyadmin for phpmyadmin@localhost: already exists

所以,这就是我留下的东西.我有一笔不能修改的补助金,也没有撤销:

mysql> show grants for 'phpmyadmin'@'localhost';
+-------------------------------------------------------------------------------------------------------------------+
| Grants for phpmyadmin@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY PASSWORD '*46CFC7938B60837F46B610A2D10C248874555C14' |
| GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'phpmyadmin'@'localhost'                                                |
+-------------------------------------------------------------------------------------------------------------------+
2 rows in …
Run Code Online (Sandbox Code Playgroud)

mysql ubuntu privileges phpmyadmin grant

53
推荐指数
2
解决办法
11万
查看次数

为什么在Java方法名称中使用数字是错误的?

前段时间,我记得被告知不要在Java方法名称中使用数字.最近,我有一位同事问我为什么,为了我的生活,我记不起来了.

根据Sun(现在的Oracle),方法名称的一般命名约定是:

方法应该是动词,在第一个字母小写的大小写混合的情况下,每个内部单词的首字母大写.

Java的代码约定

这并没有具体说明数字不能使用,虽然有遗漏你可以看到它不被建议.

考虑一下您希望根据特定年度执行某些逻辑的情况(例如,一个在2011年生效的新政策),因此您的应用程序必须对信息采取行动并根据其年份对其进行处理.常识可以告诉你,你可以调用这个方法:

boolean isSessionPost2011(int id) {}
Run Code Online (Sandbox Code Playgroud)

是否可以在方法名称中使用数字(尽管标准的措辞)?如果没有,为什么?

编辑: "这并没有具体说明数字不能使用,虽然有遗漏你可以看到它不被建议." 也许我说错了.标准说'方法应该是动词'.我读到这个说,考虑一个数字不是一个动词,那么方法名称不应该使用数字.

java methods standards

18
推荐指数
4
解决办法
2万
查看次数

部署Grails 3 App会引发FlashScope异常

将新版本的Grails 3.1.1应用程序战争部署到正在运行的Tomcat时,在部署后访问它时会出现异常.

Oct 13, 2016 11:39:58 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [grailsDispatcherServlet] in context with path [/acses] threw exception
java.lang.ClassCastException: org.grails.web.servlet.GrailsFlashScope cannot be cast to grails.web.mvc.FlashScope
        at org.grails.web.servlet.DefaultGrailsApplicationAttributes.getFlashScope(DefaultGrailsApplicationAttributes.java:173)
        at org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:68)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
        at org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:113)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486)
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
        at org.springframework.boot.context.web.ErrorPageFilter.forwardToErrorPage(ErrorPageFilter.java:188)
        at org.springframework.boot.context.web.ErrorPageFilter.handleException(ErrorPageFilter.java:171)
        at org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:135)
        at org.springframework.boot.context.web.ErrorPageFilter.access$000(ErrorPageFilter.java:61) …
Run Code Online (Sandbox Code Playgroud)

grails flash-scope grails3

5
推荐指数
0
解决办法
89
查看次数

正则表达式不会找到'\ u2028'unicode字符

我们遇到了很多麻烦跟踪\ u2028(行分隔符)的用户提交的数据来源,使"未结束的字符串常量"错误在Firefox.

因此,我们希望在将其提交到服务器(然后是数据库)之前将其过滤掉.

经过广泛的谷歌搜索和阅读其他人的问题,很明显我必须在提交到数据库之前过滤掉这些字符.

在编写过滤器之前,我尝试搜索字符以确保它可以使用以下方法找到它:

var index = content.search("/\u2028/");
alert("Index: [" + index + "]");
Run Code Online (Sandbox Code Playgroud)

我每次都得到-1,即使我知道该字符在内容变量中(我已经通过服务器端的Java jUnit测试确认).

假设content.replace()会的工作方式与搜索相同的(),是不是我做错了什么的我失踪,以便找到并去掉这些行分隔符?

javascript regex unicode firefox

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

从Oracle中非常大的记录集中选择记录子集会耗尽内存

我有一个流程将日期从GMT转换为澳大利亚东部标准时间.为此,我需要从数据库中选择记录,处理它们然后再保存.

要选择记录,我有以下查询:

SELECT id,
  user_id,
  event_date,
  event,
  resource_id,
  resource_name
FROM
  (SELECT rowid id,
    rownum r,
    user_id,
    event_date,
    event,
    resource_id,
    resource_name
  FROM user_activity
  ORDER BY rowid)
WHERE r BETWEEN 0 AND 50000
Run Code Online (Sandbox Code Playgroud)

从总共大约中选择一个50000行的块.6000万行.我将它们分开是因为a)Java(写入更新过程的内容)耗尽了很多行的内存(每行都有一个bean对象)和b)我只有4 gig的Oracle临时空间可以播放用.

在这个过程中,我使用rowid来更新记录(所以我有一个唯一的值)和rownum来选择块.然后我在迭代中调用此查询,选择接下来的50000条记录,直到没有剩余(java程序控制它).

我得到的问题是,我仍然在使用此查询耗尽Oracle临时空间.我的DBA告诉我,不能授予更多临时空间,因此必须找到另一种方法.

我已经尝试用子视图替换子查询(我认为使用带排序的所有临时空间),但是使用视图的解释计划与原始查询之一相同.

是否有不同/更好的方法来实现这一点而不会遇到内存/温度空间问题?我假设更新查询更新日期(而不是java程序)会遇到使用临时空间可用的相同问题?

非常感谢您对此的帮助.

更新

我按照下面的建议走了pl/sql块的路径:

declare
  cursor c is select event_date from user_activity for update;
begin
  for t_row in c loop
    update user_activity
      set event_date = t_row.event_date + 10/24 where current of c;
    commit;
  end loop;
end;
Run Code Online (Sandbox Code Playgroud)

但是,我的撤消空间已经用完了.我的印象是,如果在每次更新后进行提交,则对撤消空间的需求很小.这个假设我不正确吗?

sql oracle oracle10g

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

如何选择按一天中的小时分组的记录,包括没有记录的小时数

我在Oracle数据库中有一个表,其中包含我们其中一个系统中用户执行的操作.它用于统计分析,我需要显示给定日期执行的操作数,按一天中的小时分组.

我有一个查询可以做到这一点,但是,它不会显示一天中没有包含任何操作的小时数(显然因为那个小时没有要显示的记录).

例如,查询:

SELECT TO_CHAR(event_date, 'HH24') AS during_hour,
  COUNT(*)
FROM user_activity
WHERE event_date BETWEEN to_date('15-JUN-2010 14:00:00', 'DD-MON-YYYY HH24:MI:SS') 
    AND to_date('16-JUN-2010 13:59:59', 'DD-MON-YYYY HH24:MI:SS')
AND event = 'user.login'
GROUP BY TO_CHAR(event_date, 'HH24')
ORDER BY during_hour;
Run Code Online (Sandbox Code Playgroud)

(不要注意奇怪的开始和结束日期,它们是这样的,因为它们是格林尼治标准时间,我是GMT + 10 - 但这是一个单独的问题,除非它影响回答这个问题的能力)

这会产生一个结果集:

DURING_HOUR            COUNT(*)               
---------------------- ---------------------- 
00                     12                     
01                     30                     
02                     18                     
03                     20                     
04                     12                     
05                     24                     
06                     20                     
07                     4                      
23                     8                      

9 rows selected
Run Code Online (Sandbox Code Playgroud)

如何修改此查询以显示包含0个事件的当天小时数?

我搜索了Stack Overflow,发现了一些类似的问题,但不能回答我的具体问题.

非常感谢您的协助.

sql oracle group-by date oracle10g

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