疑难点汇总

2017-08-01 疑难要点

记录时间17/08/02

疑点:

问题1、为何所有的捕捉异常的catch(Exception/SQLException e){}都是没有内容的?

因为try{//代码区}catch(Exception e){//异常处理} 的捕捉异常机制就是首先先执行try代码区的内容,并且捕捉try内是否出现错误,如果有错误就执行catch内的代码,返回的结果也为catch内异常处理的代码,可以充当于一个警报装置,提示哪里出现错误,而小说站内的catch异常处理没有是因为已经过了测试错误的阶段,所以并不需要这部分代码。

补充:程序会跑出异常,try catch一般是用来捕获异常的,如果不捕获就会直接退出,导致不能正常响应。一般捕获之后要记录日志,用来定位错误的位置,便于解决错误,但是姐夫懒得写,就没有写。

问题2、数据库内容不是特别理解的地方?

String sql = "SELECT tags.text From article_tags As ats LEFT JOIN tags ON ats.tag_id = tags.id GROUP BY ats.tag_id ORDER BY COUNT(ats.tag_id) DESC LIMIT ?";

PreparedStatement statement = connection.prepareStatement(sql);

statement.setInt(1,limit);

首先:

问号是替换的作用,用来拼接SQL查询语句,statement.setInt(1, limit)意思就是把第1个问号替换为limit的值,它表面上的作用是拼接字符串,但是拼接字符串用+号就可以实现。所以它不是单纯的字符串拼接,实际上最主要的作用是用来防止SQL注入,黑客入侵,你可以搜索一下「SQL注入」,跟安全相关的;

其次:

1. 这个语句的重点在「JOIN」,联表查询。它的作用是求一个表和另一个表的交集(或者叫并集)。

2. AS的意思是别名,就是把article_tags起了另一个名字叫ats;

3. 这里就是求article_tags和tags两个表的交集,条件是article_tags表的tag_id跟tags表的id相等。就是把两个表中符合条件的所有记录找出来;

4. GROUP就是分组,ORDER是排序,LIMIT是限制条数,可以分别去搜索「SQL GROUP」,「SQL ORDER」,「SQL LIMIT」去学习,不难;

5. 另外学习SQL的时候,要学会拆解语句,比如:

a. 这个语句可以拆解成SELECT * FROM article_tags,去navicat软件里执行,看看输出什么;//找到article_tags的表格

b. 再加条件:SELECT * FROM article_tags AS ats LEFT JOIN tags ON ats.tag_id = tags.id; 看看输出什么;//找到了article_tags和tags id相等部分;

c. 再加条件:SELECT * FROM article_tags AS ats LEFT JOIN tags ON ats.tag_id = tags.id GROUP BY ats.tag_id; 看看输出什么;

d. 再加条件:SELECT * FROM article_tags AS ats LEFT JOIN tags ON ats.tag_id = tags.id GROUP BY ats.tag_id ORDER BY COUNT(ats.tag_id) DESC; 看看输出什么;

e. 最后在语句后加条件:LIMIT 100; 看看输出什么;

补充:

SELECT tags.text

FROM article_tags

AS ats //将article_tags以ats代替

LEFT JOIN tags ON ats.tag_id = tags.id

//直接搜到了article_tags与tags的id相同的一个交集id,输出的tags中id对应的文本行。

GROUP BY ats.tag_id //对文章标签的标签id进行分组,将重复的内容归纳到一个一个组别中

ORDER BY COUNT(ats.tag_id) //对每组标签的点击次数进行排序

DESC LIMIT 10 //并以倒序的形式输出,限制输出10行

问题3、tags标签的尺寸比较(articleHash.size() > 5 && tagHash.get(tag) >= articleHash.size() * 0.5)?源代码如下:

while(it.hasNext()){

String tag = (String) it.next();

if(articleHash.size() > 5 && tagHash.get(tag) >= articleHash.size()*0.5){

tags.add(tag);//将tag中的内容添加到tags中

}

}

此步骤有可能是如果首次从数据库根据关键词搜索到的文章哈希表大于5个以上,且标签的哈希表大于等于文章哈希表尺寸的一半时,才将二次搜索获得的标签添加到标签列表内;首次搜索文章哈希表小于等于5就不需要再进行详细的第三次搜索内容了。


2017-08-02 疑难要点

记录时间17/08/03

疑点:

问题1、novelDao内第8第9有关order的引号问题;`order`——小说章节序号 的用法?

` 字在mysql中的用法是为了避免与数据库中的关键字冲突,因为ORDER和小说章节序号order有冲突,所以加符号`order`就可以成功避免这个问题,表示此为变量。

问题2、*SQL LIKE模糊识别的用法?

SQL中LIKE是指的是模糊识别,

SELECT "栏位名"

FROM "表格名"

WHERE "栏位名" LIKE{套式};

其中,当套式多为字符样式,举个例子'%AN%'指的是所有包含'AN'这个套式的字符串存在,限定范围在“栏目名中”寻找;

问题4、小说的热门榜代码中

SELECT novel_id, novel_name, stat_time

FROM statics

WHERE stat_time = //stat_time是发布时间吗?

(

SELECT MAX(stat_time) FROM statics //如果是为什么要把范围限定在最新发布小说内?

)

ORDER BY ip //ip指的是他们的点击数吗??

DESC LIMIT 20

(1)stat_time指什么?(2)如果是为什么要把范围限定在最新发布小说内?(3)ip是什么?

1)statics这个表是用一个定时脚本更新的,代码还没给你。stat_time指的是统计的时间,可以去Navicat看看具体的内容,2017-08-0200:00:00表示8月2号的统计,保存每天的统计数据;

2)因为我们要的只是当天的数据,今天是8月2号,MAX(stat_time)就刚好是2017-08-0200:00:00,就可以把当天的数据筛出来。

3)就是当天访问这个小说的所有用户的IP数量,novel_click指当天点击小说URL的次数,chapter_click指的是当天点击章节的总次数。这些数据都是用来支持「今日热书」的功能。

问题5、COUNT( )的用法?

一般数据库中写COUNT( )主要用于计数,而COUNT(1)表示为栏目第一列技术,

又如,数据库记录了每个消费者每条消费记录,为了检测如Tom消费的次数,我们就可以用COUNT(Tom)的方法来计算。详细链接http://www.w3school.com.cn/sql/sql_func_count.asp

数据库:

1、SQL语句ORDER BY \DESC\LIMIT\OFFSET解析(第3点有详细解说)

SELECT *

FROM articles

ORDER BY id //此处表示以id进行排序,默认为顺序

DESC //表示以倒序输出,由大到小  ASC则与其相反

LIMIT 10 //表示限制的输出行数为10

OFFSET 10 //表述跳过前10行后才开始输出,此时输出的就是按照倒序从第11行到20行;

2、数据库UPDATE(第3点有详细解说)

UPDATE novels SET `popular` = `popular` + 1 WHERE id = ?

表示设置novels内某id的小说的欢迎程度加1

3、数据库【SQL注入】【SQL GROUP】【SQL ORDER】【SQL LIMIT】【SQL UPDATE】内容:

1、SQL注入:

主要就是通过数据语言逻辑,向数据库发送某些特定请求或提交表单等;在这个过程中很大的安全问题存在,SQL注入的主要内容也就包括SQL的注入原理、方法、技术等,更重要的是SQL注入时安全防护问题。详细了解链接https://baike.baidu.com/item/sql%E6%B3%A8%E5%85%A5/150289?fr=aladdin

2、SQL GROUP:

主要作用是用于某列的相同项,比如articles列表中有author一列,将重复名字的作者合并就用到了GROUP BY;更多用法于http://www.w3school.com.cn/sql/sql_groupby.asp

SELECT author

FROM articles

GROUP BY author;//得到了所有不重名的作者,作用就在于合并重复项

3、SQL ORDER:

ORDER BY结果用于对结果集进行排序;

ORDER BY "首要排序的名称" //如果后面不加DESC一般默认以a-Z,又小到大的顺序排列

ORDER BY "首要排序的名称",“次要排序的名称”;

具体用法例子借鉴http://www.w3school.com.cn/sql/sql_orderby.asp

4、SQL LIMIT:

主要作用用于限制返回的搜索结果,一般有两种

1) LIMIT a;//返回从1-a行结果

2) LIMIT a,b//返回从a-b行的结果

LIMIT优化搜索问题详细http://blog.csdn.net/a14206149/article/details/37690855

5、SQL UPDATE:

UPDATE语句用于修改表中的数据;

语法:

UPDSTE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

http://www.w3school.com.cn/sql/sql_update.asp


2017-08-04 疑难要点

记录时间17/08/04

问题1、最难看懂的就是function()类问题,例如以下等等,有关function()的内容?

那些function是自动生成的代码,是百度广告,一些第三方应用为了方便部署,提供了插件代码,不用管的。我们的评论交互也是用的插件,搜狐畅言的。这些代码都是他们的逻辑,乱七八糟的经过混淆的,不用细看;

问题2、实现html页面自动下拉列表问题?

实际上这是模版语言,有很多种,专门用来生成HTML的,小说站用的是Play framework的模版语言叫twirl,实际上这就是twirl中的遍历数组的用法,详细链接:https://www.playframework.com/documentation/2.6.x/ScalaTemplates#string-interpolation

问题3、novel_sitemap.scala.html应该是爬虫页面,其自变量是根据小说集合,和作者集合去爬内容的,可是在所有网站中却并没有发现@novel_sitemap,这个有点困惑?

novel_sitemap.scala.html是给搜索爬虫看的,比如给百度和谷歌的爬虫看,要在百度站长平台提交这个链接,然后百度爬虫每天都会去这个页面看一眼,有没有新的内容;

问题4、输出文本内容@Html()相关问题?

可以把.trim()或.replace("\n", "")去掉,看看是什么效果,@Html有转义的作用,如果文本里有//点我中奖这样的链接,Html不会展示链接,而是直接显示文本,起到一个安全保护的作用,你可以测试一下:@Html("点我中奖");//代码块内容被清除,看原笔记

问题5、遍历小说出来(@for((novel,index) <- novels.zipWithIndex))是如何遍历的?

这里用了Scala语句中zipWithIndex的方法,其主要用途是遍历novels的过程中给每个novel一个从0开始的序号,一边遍历出所有的小说,一边给每个小说添加序号;

详细链接http://blog.csdn.net/shenxiaoming77/article/details/56288500


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,898评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,401评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,058评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,539评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,382评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,319评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,706评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,370评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,664评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,715评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,476评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,326评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,730评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,003评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,275评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,683评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,877评论 2 335

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,513评论 18 399
  • 2016-01-11 文/柔西 柚見pomelo 像80年代,假如时光倒流到80年代,你去台湾,你会看到什么呢?你...
    柔西盐阅读 15,332评论 6 22
  • 醒后 落一 这是一场绵延到远方的雨 淋湿了我在梦里丢失的心情 与躺在桥上的文字重逢 原是风吹逝了我...
    乔夕落阅读 183评论 0 1
  • 这一颗心已化作流萤 在黑夜中随风扑塑 草丛埋藏于我 我带不动尘世的繁苛 让我脱离这一切一切的束缚 轻作一克的灵 在...
    琴键上跳舞的米老鼠阅读 237评论 0 2
  • 话说天下大势,分久必合、合久必分。看官以为乃是定数?吾独不以为然,实乃天时地利人和三物作祟也。此三物分崩离析...
    七妙神君阅读 2,503评论 0 5