复习 JavaEE,着手写了一个小站点,现在开源。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
outmanone
V2EX    Java

复习 JavaEE,着手写了一个小站点,现在开源。

  •  
  •   outmanone 2016-11-30 22:42:01 +08:00 5259 次点击
    这是一个创建于 3242 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近复习 JavaEE ,感觉还是要写点啥更有效率,平时比较爱买书,所以索性做了一个同时比较 4 个网上商城的小站点,发布了第一个可以用版本了,准备开源。技术栈如下:
    JDK1.8
    Spring4.3.x
    Hibernate5.2x
    Mysql5.x
    前端用了, bootstrap, vue.js
    web 容器是: Tomcat8.x

    源代码在这里: https://github.com/RobotJiang/book_price_compare

    第一个版本部署在: http://112.74.124.215:7000/

    P.S. 第一个版本非常简陋,也没有做过多的安全验证,请各位大侠玩的时候手下留情,别把我的那台服务器玩坏了。:) (4 个网上卖书的是:京东,亚马逊,当当,文轩网)

    最后求各位大侠, fork, star .

    34 条回复    2016-12-26 16:27:55 +08:00
    eyp82
        1
    eyp82  
       2016-11-30 22:51:30 +08:00
    表示网站无法打开啊
    Noocl
        2
    Noocl  
       2016-11-30 22:56:33 +08:00
    Internal Server Error
    outmanone
        3
    outmanone  
    OP
       2016-11-30 22:58:03 +08:00
    @eyp82 @Noocl 现在好了。阿里云不知道哪里抽风了。
    timothyye
        4
    timothyye  
       2016-11-30 23:02:54 +08:00   1
    已 star
    onyourroad
        5
    onyourroad  
       2016-11-30 23:05:28 +08:00
    不错,提供了一些小的便利。
    lcc4376
        6
    lcc4376  
       2016-11-30 23:11:16 +08:00
    老白是化怎 code 了?
    timothyye
        7
    timothyye  
       2016-11-30 23:12:21 +08:00
    @lcc4376 化学老师转行了,哈
    xiaolai123
        8
    xiaolai123  
       2016-11-30 23:13:22 +08:00 via Android
    已 star
    Lonely
        9
    Lonely  
       2016-11-30 23:50:25 +08:00
    看一看瞧一瞧
    HTNecro
        10
    HTNecro  
       2016-11-30 23:58:57 +08:00
    推荐 springboot
    wangpugod2003
        11
    wangpugod2003  
       2016-12-01 09:47:23 +08:00
    现在该换 springMVC + mybatis 了吧~
    outmanone
        12
    outmanone  
    OP
       2016-12-01 10:07:42 +08:00
    @wangpugod2003 mybatis 以前也用过,不过写这种练习程序,还是 Hibernate 方便。 mybatis 虽然比较灵活,但写映射文件也很讨厌。
    leesudo
        13
    leesudo  
       2016-12-01 10:47:28 +08:00
    这是写来练手的吧,还以为是惠惠购物助手那种比价,简单扫了下代码,发现并不是。
    首次查询时去源站抓了价格,然后就存数据库了。以后每次都去查本地数据库的记录了,比的价格都是过期的。
    这几个电商每一个的图书商品少说有几百 W 条记录吧,你直接全存一张表里了。另外查询的语句用 like %% 这种索引都没法用吧。
    misaka19000
        14
    misaka19000  
       2016-12-01 11:15:24 +08:00
    如果不存数据库而是每次都抓取最新的价格信息是不是会好一点?
    outmanone
        15
    outmanone  
    OP
       2016-12-01 12:38:48 +08:00
    @leesudo 就是练习程序啊,不是已经说明了么?希望能贡献代码。
    outmanone
        16
    outmanone  
    OP
       2016-12-01 12:39:27 +08:00
    @misaka19000 可以贡献代码啊,实现你的想法。如果可以,我们就重新部署。
    outmanone
        17
    outmanone  
    OP
       2016-12-01 12:42:39 +08:00
    @leesudo 存一张表里面也没有什么问题,因为又没有写服务爬虫去爬数据。只有人用的多,搜索的多,才会增加数据。这小数据用 Like 也可以的。如果要继续搞下去,肯定要重构啊什么的。这是我复习 JavaEE 时写的一个小程序。希望能贡献代码。谢谢。
    gejun123456
        18
    gejun123456  
       2016-12-01 14:16:31 +08:00
    楼主我最近也复习了下,写了个博客
    https://github.com/gejun123456/bootstrap-java-blog
    基于 springboot+mybatis
    一同学习下哈

    mybatis 生成 xml 是挺麻烦的
    在 intellij 下有个插件可以自动生成
    插件名是 codehelper.generator
    我代码里的 xml 就是用这个生成的 挺方便的
    outmanone
        19
    outmanone  
    OP
       2016-12-01 16:02:12 +08:00
    @gejun123456 不错,不错,一同学习。
    fantastM
        20
    fantastM  
       2016-12-01 16:52:22 +08:00
    ```
    if(keyword != null && keyword.trim() != "")
    ```
    非空字符串的判断,是不是该用.equals()
    outmanone
        21
    outmanone  
    OP
       2016-12-02 22:39:13 +08:00
    @fantastM 字符串判断确实应该用 equals ,我修复了。
    q397064399
        22
    q397064399  
       2016-12-05 17:25:39 +08:00
    我 fork 了你的代码,麻烦请使用 jdk1.7 ,真的, 1.8 目前还是非主流,我正在把你的代码从 1.8 改回 1.7
    q397064399
        23
    q397064399  
       2016-12-05 18:28:44 +08:00
    已经改成 1.7 正常运行了,练手的好项目,脚手架已经搭好,我准备改成 JPA 做 DAO 层
    q397064399
        24
    q397064399  
       2016-12-07 10:54:02 +08:00
    https://github.com/jonwinters/book-price-compare
    已经 forked 了,嫌麻烦 直接扒过来用 Jdk1.7 写的
    q397064399
        25
    q397064399  
       2016-12-07 10:57:15 +08:00
    if(!hibernateTmplMysql.find("from Book b where b.shop = ?0 and b.name = ?1", shop, name).isEmpty()) {
    return (List<Book>)hibernateTmplMysql.find("from Book b where b.shop = ?0 and b.name = ?1", shop, name);
    } else {
    return new ArrayList<>();
    }

    这段代码表示 从数据库查不到任何结果不知道是不是我自己配置的缘故,请 repo 主 自己手工断点 调试下
    q397064399
        26
    q397064399  
       2016-12-07 11:01:44 +08:00
    https://github.com/jonwinters/book-price-compare

    这个版本已经改 JDK1.7 了,改了数据库查不到结果 bug ,
    默认设定 数据库缓存 2 小时,可以在 Utils 里面改 缓存时间

    还有一个小问题没有解决,就是前面的关键字会覆盖后面新的结果
    zxc337
        27
    zxc337  
       2016-12-09 12:17:09 +08:00
    gejun123456
        28
    gejun123456  
       2016-12-09 17:05:19 +08:00
    @zxc337 哇,你这个写得好漂亮,我来学习下
    outmanone
        29
    outmanone  
    OP
       2016-12-09 17:08:17 +08:00
    @q397064399 为什么你们觉得有问题,你们都不提 issue, 也不做 PR ? 我现在的项目已经前端和后端彻底分开了,并且用 node.js 重构了前端。
    outmanone
        30
    outmanone  
    OP
       2016-12-09 17:13:02 +08:00
    @q397064399 练手嘛,当然要用 Java8 了。
    q397064399
        31
    q397064399  
       2016-12-10 07:03:43 +08:00
    @outmanone
    因为我根本就不会 node.js , js 基本上都是 我当做面向过程的语言 偶尔为了前端交互,配合 Jquery 写一点,我连前端的脚手架都不会用,更不要提 node.js 了,而且我一直只用 1.7 ,很多人一直还在用 1.6

    一来 写 Java 的 大多比较念旧,不像 C++那么喜欢追新语法,一个 Lamada ,跟一个匿名接口实现类 区别并不大,
    前者很多新手不一定能看懂, comparetor 有接口定义,新手点开看下接口定义 也大概知道怎么一回事,总体而言,语法糖层面的东西,用旧不用新,毕竟也就是多几个单词而已
    outmanone
        32
    outmanone  
    OP
       2016-12-15 23:05:11 +08:00
    @q397064399
    1. Node.js 不会就慢慢学嘛。不过 JS 怎么又面向过程了,大哥?而且现在 jQuery 都是以基础库存在的,很少有人直接用它,并且现在很多库都不用 jQuery 了。如果你还在直接用 jQuery 证明你已经落伍了。
    2. 写 Java 的也不一定都守旧吧,人家 C++ 都几十年了,仍然推陈出新(参考 C++11),怎么到你那里就变成什么都是语法糖了? Java8 里面很多新东西还真不是什么语法糖可以说的过去的。 Lambda 也不是什么新概念(stream 就跟不是了),很多新手,特别是看过其他动态语言的估计一眼就看懂了,既然是练习,多说两句,肯定要很快速的,用尽量少的代码实现功能啊。难道,意大利面条式的代码,天天写,还有理了?
    q397064399
        33
    q397064399  
       2016-12-16 05:33:01 +08:00
    @outmanone 不是有理,我依旧 JDK7 ,()
    wyk1184
        34
    wyk1184  
       2016-12-26 16:27:55 +08:00
    @q397064399 太较真
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     882 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 21:22 PVG 05:22 LAX 14:22 JFK 17:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86