今天要统计下各种维度下的数据,访问量等等,写了几个方法,实现了维度分析,并将返回结果自动发送邮件到自定义邮箱
主要实现类
1 | public static void main(String[] args) { |
Today does not walk, will have to run tomorrow.
1 | public static void main(String[] args) { |
一个应用开发到一定阶段,普遍会遇到一个问题。当功能越来越多,代码量越来越大,bug修复越来越频繁,开发人员一波一波的交替,…..应该用会向着越来越不可控发展。我们不能再准确估计新功能的开发时间,也不知道一个bug修复后是否会引发另一个bug出现。所有的程序开发,都会面临着这样的问题。
C/C++程序通过makefile管理编译测试打包的过程,Java程序通过Maven,Ant实现项目构建管理功能,Python有pip,Ruby有gem。在Nodejs的领域,我们同样需要一个项目构建工具,这就是Grunt。Grunt可以执行像压缩, 编译, 单元测试, 代码检查以及打包发布的任务。
Grunt是一个自动化的项目构建工具. 如果你需要重复的执行像压缩, 编译, 单元测试, 代码检查以及打包发布的任务. 那么你可以使用Grunt来处理这些任务, 你所需要做的只是配置好Grunt, 这样能很大程度的简化你的工作.
如果在团队中使用Grunt, 你只需要与其他人员约定好使用Grunt应该规避的问题, 就能够很方便的自动化的处理大部分的常见工作任务, 你所付出的努力几乎为0.
万圣节,出没在小区里的快递员穿上了动物外套,一只毛茸茸的熊头出现在门禁对讲屏上,着实吓人一跳。最近,她并没有在网店上下过单,好奇心让她早早地打开门。一只“大灰熊”从电梯里出来,麻溜地摘下熊头套,递给她一封信。
关门,拆信,里面是一张明信片形式的参观券,上面印有一列火车。她想起来了,前几天去逛商场时,促销活动是“恶棍快车之旅”,她漫不经心地签上了自己的地址,随后就忘了这事儿了。还真的要去参观吗?她走向厨房,将明信片贴在冰箱门上,冰箱压缩器恰好轰鸣起来,不知怎地,她的视线恍惚了,冰箱不再是冰箱,而是一只卡住白鲸的长方形笼子,一头白鲸眼神悲哀地在其中扭动,她扶住冰箱门,定神一看,果然只是幻觉。
“你知道方块鲸吗?一条鲸鱼卡在方块里了。”吃晚饭时,她不经意地说。
“下午办公室里还在聊这个呢。”丈夫疲倦的脸上,闪出兴奋的光,对神秘的事情,他一向热衷,“说是恶棍快车进入终点站时,会发出一种鲸鱼的叫声,就像一头鲸鱼卡在方块里,慢慢地,慢慢地窒息……”丈夫夸张地做了一个掉脑袋的动作,随后总结:即使是机器人,面对死亡,也是会被痛苦折磨的,所以,他们最好别干坏事。
胃不太舒服,她不想继续这个话题了。
晚上,他们早早地躺下。她睡了一小会儿,眼皮又睁开了,陷入了所谓的对自己完全无能为力的失眠的长夜。思绪拉扯得很开,散漫,像血瘀女子脸上的红血丝。肚子里不知发生了什么事情,不断有咕噜噜的叫声,焦躁与烦闷一阵阵地涌上来,脸颊像傍晚的天边,堆满了绚烂的火烧云。后来,月光透过窗帘缝洒到被子上,她安静了下来,一遍遍地想到海,如果那辆列车真的在终点站掉下去的话,会不会径直掉到大海里,如果是在海水里,鲸鱼就不会被卡住了吧。头一回,她对身边人的呼噜声没有反感,聆听着,像在海边住着的人,呼噜声只是海浪,她从未去过海边——现在,她对海可以一遍又一遍地猜想。
最近看到了一篇文章
文丨烟波人长安
我有一个朋友,单身好些年,最近看了几场爱情电影,少女心勃发,哭着喊着要谈恋爱。我说这个简单啊,满世界是男人,总有一个你看上眼的吧?难不成你看上的是吴彦祖?
朋友说不是啊,你不觉得谈恋爱很难吗?
哪里难了?我反问,喜欢就表白,成功了就在一起,不成功找下一个,不难啊。
你说得轻松。朋友说,第一眼看上了,要找机会说话吧?万一聊不到一块儿怎么办?两个人都不说话,给谁默哀呢?有了共同话题,就要考虑将来一起生活,是不是又一堆问题?到我这年纪,恋爱多数都是奔着结婚去的,我总不能等结婚了,发现不合适,再离婚吧?
哦,她今年27,家里催婚,已经催了两年。
真的,都快不会谈恋爱了。朋友说。
这种时候,一般都应该我出马,告诉她爱情很美好恋爱很温馨喜欢就要上一类的话,灌一碗鸡汤,打一打鸡血,安慰加鼓励。
但我仔细想想她那一连串问句,发现我没有办法说些这样的话。
再仔细想想,周围单身的朋友一大把,年龄相仿境遇相似,每年的愿望都是脱单,但他娘的,一直没有实现过。也不是没有“好像还挺合适的”那个人,但都没有走到一起。
什么时候,谈恋爱变得这么难了?
最近想把UUID32位的主键策略改为6位的INT自增的主键,来改善个人网站的优雅和简洁性。于是找了些资料整理在这。由于我的网站用的注解,来减少xml配置文件带来的烦躁,所以主键策略一定要是基于注解的。
hibernate在JPA的基础上进行了扩展,可以用一下方式引入hibernate独有的主键生成策略,就是通过@GenericGenerator加入的。**
比如说,JPA标准用法**1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Id
@GeneratedValue(GenerationType.AUTO)
就可以用hibernate特有以下用法来实现
@GeneratedValue(generator = "paymentableGenerator")
@GenericGenerator(name = "paymentableGenerator", strategy = "assigned")
@GenericGenerator的定义:
@Target({PACKAGE, TYPE, METHOD, FIELD})
@Retention(RUNTIME)
public @interface GenericGenerator {
String name();
String strategy();
Parameter[] parameters() default {};
}