V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
outmanone
V2EX  ›  Java

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

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

    最近复习 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   ·   实用小工具   ·   1026 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:01 · PVG 05:01 · LAX 13:01 · JFK 16:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.