云过飘雨


  • Home

  • Archives

剑指Offer-57:删除链表中重复的节点

Posted on 2019-04-11 |

题目描述

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

解题思路

首先,链表中如果没有节点或者只有1个节点,直接返回pHead

接下来,判断头结点是不是和它后边一个节点重复

  • 如果重复的话,就一直往后找重复的节点,直到找到第一个不和pHead重复的节点,递归该节点
  • 如果不重复的话,pHead仍然保留,递归pHead.next,并且要记得递归返回的节点和pHead.next关联上,最后返回pHead

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*
public class ListNode {
int val;
ListNode next = null;

ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode deleteDuplication(ListNode pHead)
{
if( pHead == null || pHead.next == null )
return pHead;
if( pHead.val == pHead.next.val ){//当前节点和后一节点重复
ListNode now = pHead.next;
while( now != null && now.val == pHead.val ){//找到第一个不重复的
now = now.next;
}
return deleteDuplication( now );
}
else{//当前节点和后一节点不重复
pHead.next = deleteDuplication( pHead.next );
return pHead;
}

}
}

java.lang.OutOfMemoryError

Posted on 2018-11-26 |

通过spark-submit提交任务时,出现错误:
Exception in thread “main” java.lang.OutOfMemoryError: GC overhead limit exceeded

解决方案:

这两种错误之前我一直认为是executor的内存给的不够,但是仔细分析发现其实并不是executor内存给的不足,而是driver的内存给的不足。在standalone client模式下用spark-submit提交任务时(standalone模式部署时,默认使用的就是standalone client模式提交任务),我们自己写的程序(main)被称为driver,在不指定给driver分配内存时,默认分配的是512M。在这种情况下,如果处理的数据或者加载的数据很大(我是从hive中加载数据),driver就可能会爆内存,出现上面的OOM错误。

方法一:在spark-submit中指定 –driver-memory memSize参数来设定driver的jvm内存大小,可以通过spark-submit –help查看其他可以设置的参数。

eg:

./spark-submit \
–master spark://7070 \
–class $MAIN_CLASS \
–executor-memory 3G \
–total-executor-cores 10 \
–driver-memory 2g \
–name $APP_NAME \
–conf “spark.executor.extraJavaOptions=-XX:+PrintGCDetails -XX:+PrintGCTimeStamps” \
“$SPARK_APP_JAR”

方法二:修改spark-defaults.conf

spark.driver.memory 20g

java.io.FileNotFoundException

Posted on 2018-11-26 |

出现错误:

Exception in thread “main” java.io.FileNotFoundException:
file:/home/yunya/data/dbl_data/param/queries/query.txt (No such file or directory)

解决方案

首先是通过搜索得到的答案:
由spark的源码源码的注释可以知道,spark可以读取本地数据文件,但是需要在所有的节点都有这个数据文件(亲测,在有三个节点的集群中,只在master中有这个数据文件时执行textFile方法一直报找不到文件,
在另外两个work中复制这个文件之后,就可以读取文件了)
sc.textFile(“file:///root/wc/sparkInput”)
在idea中读取本地文件是由于本地环境中有hadoop的环境变量.在集群中如果需要加载本地的文件还不如传到hdfs上,然后从hdfs中读取数据.
(spark用的是1.6.1)

我发现这样读取文件还是会出现找不到的错误,于是用scp命令将相应的文件/文件夹传到slaves节点,解决了这个问题。

DLL load failed

Posted on 2018-11-26 |

使用Python的时候报错:

1
2
3
4
5
6
7
8
Traceback (most recent call last):
File "D:/python_work/OA_RegressionTree/oa_result.py", line 3, in <module>
from regression_tree_cart import *
File "D:\python_work\OA_RegressionTree\regression_tree_cart.py", line 6, in <module>
import pygame
File "C:\Users\DBIS\AppData\Roaming\Python\Python27\site-packages\pygame\__init__.py", line 136, in <module>
from pygame.base import *
ImportError: DLL load failed: %1 ������Ч�� Win32 Ӧ�ó���

原因

python版本是64位,安装的pygame是32位的,版本不一致导致出现此错误,统一版本即可。

dll-load-filled

Posted on 2018-11-26 |

Index column size too large. The maximum column size is 767 bytes.

Posted on 2018-09-04 |

在MySQL数据库上建立索引时,出现错误Index column size too large. The maximum column size is 767 bytes.
由于 MySQL Innodb 引擎表索引字段长度的限制为 767 字节,因此对于多字节字符集的大字段(或者多字段组合索引),创建索引会出现上面的错误。

解决方案

Step 1 :设置参数 innodb_large_prefix 为 ON

set global innodb_file_format = BARRACUDA;
set global innodb_large_prefix = ON;

Step 2:创建表的时候指定表的 row format 格式为 Dynamic 或者 Compressed
1
2
3
4
5
create table tb_name
(
……
)
ROW_FORMAT=DYNAMIC ENGINE=InnoDB DEFAULT CHARSET=utf8;
Step 3:对于已经创建的表修改表的row_format
1
2
alter table <table_name> row_format=dynamic;
alter table <table_name> row_format=compressed;

经过上述步骤之后,再继续创建索引就可以成功了。

1
alter table <table_name> add unique index(column_name);

Whatever

Posted on 2018-07-23 |
云想衣裳花想容

春风拂槛露华浓

若非群玉山头见

会向瑶台月下逢

Yii2.0 汉化(国际化)

Posted on 2018-07-20 |

1、修改配置文件 backend\config\main.php

添加
// set target language to be Chinese
‘language’ => ‘zh-CN’,
// set source language to be English
‘sourceLanguage’ => ‘en-US’,
添加位置如下:
这里写图片描述

2、View 视图层文件

修改显示内容为

<?= Yii::t('yii','Favourites')?>

yii为一种模式。

这里写图片描述

3、添加翻译信息 vendor\yiisoft\yii2\messages\zh-CN\yii.php

Yii::$app->language = ‘zh-CN’;
这里写图片描述

再见,世界杯!

Posted on 2018-07-16 |

世界杯在今天凌晨结束了,恭喜法国队夺冠。
从一开始对足球比赛十分抗拒的心情,到如今兴奋地熬到晚上一点钟看完决赛,我自己都没想到有生之年我会对足球赛事有这么高的热情。
我之前不看球的原因很简单。和多数女生的想法一样,一是想想二十来个人踢那么长时间也进不了几个球实在是提不起兴趣看,二是世界杯的时间经常在凌晨,我这种熬不了夜的老年人注定和它无缘。但是这个夏天不一样,世界杯在俄罗斯举行,巧妙的时差让几场比赛恰好在晚上十点到十二点。当然,更重要的是我身边有一群爱看球的朋友带我了解了足球的魅力。作为一个喜欢追逐大潮的小浪花,加入到看世界杯的大浪中可以说是天时地利人和了吧。

足球的魅力首先是陪你看球的朋友的魅力。

我看的第一场完整的比赛是德国对韩国。作为一个之前只看过几个进球集锦,勉强知道C罗、梅西是谁的人,碰到这场比赛作为观看足球比赛的开始实在是有点糟糕。德国队一水的男模颜值的确让我在刚开始的时候兴趣满满,加上德国队是上次世界杯冠军,我当然为德国队打call啦。不得不说,这90分钟实在是……太无聊了。上半场还没结束,已经走了两个姑娘了。我的想法很简单,能看到德国队进个球就满足了。这么简单的心愿都没有实现,哎,韩国队还特喵地进了一个。德国这门将出来拼,没看住大门,韩国又特喵地进了一个。我这个气啊,这踢的是个啥。比赛是不好看,但我记得我那天晚上特别开心。一大波人围在一起嗑着瓜子看球,有人解说,有人逗乐,氛围不要太好。足球的魅力首先是陪你看球的朋友的魅力啊。

“或许,你喜欢梅西吗?”

第二天晚上是阿根廷对法国。“或许,你喜欢梅西吗?”,我第一次听到这句话是在《请回答1988》里,作为小姑娘搭讪帅哥的一招。即使很多不看球的人也大概听过梅西这种传奇人物,加上我舍友是个梅西粉给我疯狂安利,我在看球之前铁铁地支持阿根廷。开场不久法国队一个点球,格列兹曼真的很沉稳,在大赛中有着很好的风范。上半场最终以1:1打平,下半场阿根廷上来先进了个球,我当时整个人都沸腾了。想着朋友圈刷屏的“我是里奥梅西,我现在慌得一批”终于可以结束了,屋子里支持法国队的人也瞬间士气大落。不得不说法国队真的很强,很快就把比分追到2:2平,接着姆巴佩凭借惊人的速度,带球前冲连进两球。我刚刚的想法瞬间就破灭了,虽然阿圭罗最后上场进了个头球还是无法扭转乾坤。比赛结束后,法国队抱在一起激动万分,下一个镜头,就是梅西,双手叉腰,满脸的失落。梅西已经跟世界杯说再见了。其实这一场,梅西被四五个人围着无法发挥,我并没有感受到梅西踢球时的魅力。中场休息的时候,我们看了梅西的进球集锦,年轻时无人能挡的神勇和如今四面受围的落寞,让人感叹球星的不易。小F说“能在这个时代见证两位伟大的球星,我们真的好幸运”,如今能看到赛场上的梅西,我也觉得好幸运。
梅西

你猜对了吗

看完这两场球,就到了八进四的淘汰赛。这个时候,之前陪我们一起看球的一拨人已经毕业了。一个学长感慨,我刚找到能陪我看球的一帮人,就毕业了。以前满满的一屋子人瞬间就变得窸窸窣窣了,还好有微信群可以继续保持沟通。淘汰赛之前,我们每人都列出了自己认为的晋级队伍。奇怪的是,群里的人没有任何两个人预测得完全相同。说实话,对于自己完全不了解的队伍,我基本是都是选择自己喜欢的国家名字,跟他们的足球实力完全没有半毛钱关系。现在想想,我对这四场比赛中看过的两场已经没什么印象了,大概只记得我在法国对阵乌拉圭时成功pick了格列兹曼,我们的关注点貌似都在自己有没有猜对上边。一个巴西铁杆粉在凌晨看完巴西败给比利时之后崩溃了,我们的预测由这位仁兄发起,两场比赛全跪送走自己热爱的巴西队,他真是太可怜了。到这个时候,我已经完全习惯了在每个有球赛的晚上乖乖坐在小板凳上看球了。周六那天,我们几个兴起跑去浪。那一个晚上用一个词形容就是——马不停蹄,吃饭完赶场去看电影,看完电影又赶场回来看球。这一次看球人数达到了历史新低,只有三个人,为了恢复以往看球的气氛,我发起了群视频,从头到尾边看边聊。这完全不像是一开始那个拒绝看球的我了,现在我已经陷入其中了。
八人竞猜

再见,世界杯!

半决赛的比赛时间都在两点,舍不得熬大夜的我们放弃观看了。克罗地亚进入决赛出乎我们所有人的意料,大家都觉得英格兰踢赢克罗地亚不是问题,反倒在法国和比利时之间纠结。比利时和克罗地亚的比赛在这之前我一场都没看,不过比利时3:2反超的战绩让我感觉比利时这个队伍十分强大。比利时也确实在三四名的决赛中拿下了英格兰,看完这场球对比利时的门将库尔图瓦充满好感,又帅又厉害的人真的存在,还是一米九九的存在。然后就是昨晚的决赛啦,世界杯就这么结束啦。法国队的实力毋庸置疑,克罗地亚的表现也十分亮眼。双方打得十分精彩,其实我想如果没有那个乌龙球和手球,结果会是怎样呢?哈哈,虽然心疼克罗地亚,还是希望法国队夺冠。看完球之后,大家开始收拾屋子,把房间门锁上的时候,我们也和世界杯说再见啦。
视频
身边好多小伙伴说我们很幸运,第一次看球就基本碰到了各种各样的情况,乌龙、手球、点球看遍了,还能看到4:3这样的精彩对决。是的,我也这么觉得。看球的这几个礼拜里,真的发生了特别多有意思的事情,我和周围的这帮朋友也变得越来越熟悉。在大晚上喝啤酒嗑瓜子吃西瓜长膘,侃天侃地不知不觉中看完整场比赛。晚上十二点多从学院后门溜回宿舍,叫醒宿舍阿姨帮我们开门,回到宿舍小心翼翼洗漱上床。这一切随着决赛的结束都要结束啦,还有那么一丢丢地不适应。
天津地跌
再见啦,世界杯。和我pick的一众小哥哥们(梅西,巴西19号爆炸头小哥、格列兹曼、库尔图瓦)也要再见啦。不知道下一次世界杯的时候,身边的这群朋友都在哪里看球或者还看不看球。

Yii2.0 Gii工具的使用

Posted on 2018-07-09 |

Gii工具的使用大大提高了开发速度,这篇文章就介绍如何使用Gii。

一. 在Mysql数据库中创建表单tki_template

这次就以这张表为例说一下Gii工具的使用 。

###二. 在访问地址后加 ?r=gii进入gii工具使用界面
这里写图片描述
如果你使用了美化url规则的话,直接在url后加gii即可进入该页面。

###三 点击Model Generator,生成model。进入页面后填写Table Name,其余会自动生成。
这里写图片描述
Namespace根据项目的目录结构进行修改,其余根据需要勾选。

点击页面下方的 Preview 按钮,查看即将生成的文件。
这里写图片描述
确认无误之后,点击 Generate 按钮,生成所需要的文件。
成功之后显示:
这里写图片描述

###四.返回gii工具的使用界面,点击 CRUD Generator ,生成CRUD。
这里写图片描述
如果一直显示路径不存在或者有语法错误,记得去models层把namespace修改掉。
点击 Preview 按钮,确认无误之后,点击 Generate,成功之后显示:
这里写图片描述
填写参照

这里写图片描述

12

美少女

19 posts
8 tags
GitHub
© 2019 美少女
Powered by Hexo
|
Theme — NexT.Muse v5.1.4