首页 文章 精选 留言 我的

精选列表

搜索[case],共5551篇文章
优秀的个人博客,低调大师

算法 - 链表操作思想 && case

算法- 链表操作题目套路 前面这一篇文章主要讲链表操作时候的实操解决方式,本文从本质讲解链表操作的元信息,学完后,再也不怕链表操作题目了。 1.链表的基本操作 链表的基本操作无外乎插入,删除,遍历 插入的化,要考虑到前驱节点和后继节点,记住下面的伪代码 nex = 当前节点.next 当前节点.next = 插入的指针 插入指针.next = tmp 对于删除,是否会觉得需要备份一下next的指针,答案是不用,执行语句是先取右边的值存起来然后赋值给左边的,所以直接下面一句话即可 cur.next = cur.next.next 对于遍历,实际上是又迭代和递归的,另外又有前序和后序 cur = head while cur != null { print(cur) cur = cur.next } //前序 dfs(cur) { if cur == null return print(cur.val) return dfs(cur.next) } 2.链表的考点 链表的考点就只有对指针的修改和对指针的拼接,其中都需要对指针的前驱节点和后继节点进行保留,如果头节点不能首次确定,或者可能会改变,那么又需要一个虚拟头节点,链表的考点无外乎就这些。 下面我们来看两个题 删除链表中的重复元素 https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/ public ListNode deleteDuplicates(ListNode head) { //递归版 if (head == null || head.next == null) return head; if (head.val == head.next.val) { while (head.next != null && head.next.val == head.val) head = head.next; head = deleteDuplicates(head.next); } else { head.next = deleteDuplicates(head.next); } return head; } 判断是否为回文链表 https://leetcode-cn.com/problems/palindrome-linked-list/ public boolean isPalindrome(ListNode head) { if(head == null || head.next == null)return true; temp = head; return dfs(head); } public boolean dfs(ListNode head){ if(head == null)return true; boolean res = dfs(head.next) && temp.val == head.val; temp = temp.next; return res; } 总结,链表的题目,掌握号指针的操作,就会简单点了,对于递归写法也会简化很多代码 大数据开发,更多关注查看个人资料

优秀的个人博客,低调大师

一个存疑的Hive Case——MapRedTask Slow

线上Hadoop做压缩格式更新,默认的从GZip转到Snappy,并重启了HDFS/MAPREDUCE集群,突然发现一个Hive Script Job从原来的12分钟缩短到4分钟并稳定跑了2天,并且该Job agent Server上的所有Hive Script Job的运行时间都缩短了;首先分析变更前后两天Job的MAPREDUCE日志,发现MAPREDUCE只变快了4分钟(因为Snappy的低压缩比导致了增加了一个REDUCER而把一个最慢的step加快,该哭还是笑呢:P),另外那诡异的4分钟在哪里消失了呢? 对比了两天的Job运行日志发现变化之前每个Job Stage之间的时间间隔在30s+,而维护后这个时间在3s以内,第一反应就是怀疑是不是JobTracker的问题,在确认了从生成Job,提交Job到Job完成的时间都是正常的,并且Job在准备文件的过程中对HDFS的操作也是确认正常,GC正常,排除掉JT的问题同时也排除了Namenode的问题;再进一步发现Hive的MoveTask/Stats Task也是1s完成,掐头去尾后定位到是在MAPREDUCE已经被JobTracker确认完成后,但是Hive被block了接近30s(=10×(pullinterval+checkpollinterval))才确认完成!(counterplan在隔了30s才打印,也就是说runningJob isNotCompleted). 然后查看了其他的Hive agent Server的日志发现都一直正常,那么范围进一步缩小就是这台有问题,结合上面的分析有几点可能: 1.JT到agent网络不稳定——是否调整过有待确认,不过查看sar无错误包等,流量正常,看MR源码waitingforComplete的interval默认是在5s,如果是网络问题应该retry了5,6次; 2.Hive所在服务器问题 3.Hive本身问题 对于2服务器本身的流量/IO/LOAD都不高,余量很充分,并且2无错误日志,找一台对比OS参数发现太多不一样的了(坑)直接忽略掉,假设没问题,存疑; 对于3直接看Hive代码了,假设没1的问题,Hive在polltask的过程中有一个Bug(HIVE-4000),就是runningQueue不是线程安全的,可能导致racecondition进而会block住Hive;并且从 context switch/sec: 和Interupted/sec: 上看确实维护后降低了,也就是Sleep时间(此处Hive代码注释错误,每2秒而不是10秒进行一次poll)降低了,但是如果是Bug那应该是随机的,为什么单单这一台在维护之前有问题,所以这个解释不通,那这个cs降低应该是“果”而不是“因”,因此最可能的还是1,2网络层面的问题 问题分析到这里虽然还没有一个完美的答案,但是还是暴露一些问题:比如参数不统一,比如一些不合理的设置和监控的缺失,不过对HIVE/MAPREDUCE/HDFS梳理更清晰了.经验值确实值1000了:) 本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1303926,如需转载请自行联系原作者

优秀的个人博客,低调大师

[python case]DataCamp中Dr. Semmelweis and the discovery of handwashing案...

#本人数据新手(real - - ),前几天刚刚接触datacamp,感觉还蛮有趣。基本上所有练习都由浅入深,大多数只要能看懂英文大意即可完成。 #接下来如果有时间的话计划整理一些学习体会。 #如果有一起学习datacamp的小伙伴欢迎留言,一起学习。 #title Dr. Semmelweis and the discovery of handwashing ##summary Reanalyse the data behind one of the most important discoveries of modern medicine: Handwashing. ##skill pandas foudations 整个故事以1847年Ignaz Semmelweis的发现为背景: In 1847 the Hungarian physician Ignaz Semmelweis makes a breakthough discovery: He discovers handwashing. Contaminated hands was a major cause of childbed fever and by enforcing handwashing at his hospital he saved hundreds of lives. 整个project分9块: 1.Meet Dr. Ignaz Semmelweis 2.The alarming number of deaths 3.Death at the clinics 4.The handwashing begins 5.The effect of handwashing 6.The effect of handwashing highlighted 7.More handwashing, fewer deaths? 8.A Bootstrap analysis of Semmelweis handwashing data 9.The fate of Dr. Semmelweis 下面每部分注释一下,整体比较基础(real = =),不过还是希望能够帮助和我一样对python做数据分析的门外汉们。 1. Meet Dr. Ignaz Semmelweis 老教授看见这样一组数据,刚生过小孩的妈妈们经常会因为一种child fever的病而不幸去世,于是他调查得到了一些数据: # importing modules # ... YOUR CODE FOR TASK 1 ... import pandas as pd #导入pandas 以pd作为简称 import csv #导入csv # Read datasets/yearly_deaths_by_clinic.csv into yearly yearly = pd.read_csv('datasets/yearly_deaths_by_clinic.csv')#利用pd.read_csv将csv文件导入yearly变量中 # Print out yearly # ... YOUR CODE FOR TASK 1 ... print(yearly)#输出yearly检查变量 output: year births deaths clinic 0 1841 3036 237 clinic 1 1 1842 3287 518 clinic 1 2 1843 3060 274 clinic 1 3 1844 3157 260 clinic 1 4 1845 3492 241 clinic 1 5 1846 4010 459 clinic 1 6 1841 2442 86 clinic 2 7 1842 2659 202 clinic 2 8 1843 2739 164 clinic 2 9 1844 2956 68 clinic 2 10 1845 3241 66 clinic 2 11 1846 3754 105 clinic 2 2. The alarming number of deaths 经过上面的输出,老教授感觉事情没那么简单: # Calculate proportion of deaths per no. births # ... YOUR CODE FOR TASK 2 ... yearly["proportion_deaths"]=yearly['deaths']/yearly['births']#增加proportion_deaths死亡率列 # Extract clinic 1 data into yearly1 and clinic 2 data into yearly2 yearly1 = yearly.loc[yearly['clinic']=='clinic 1']#提取含clinic1的行,利用loc函数 yearly2 = yearly.loc[yearly['clinic']=='clinic 2']#提取含clinic2的行 print(yearly1) # Print out yearly1 # ... YOUR CODE FOR TASK 2 ... output: year births deaths clinic proportion_deaths 0 1841 3036 237 clinic 1 0.078063 1 1842 3287 518 clinic 1 0.157591 2 1843 3060 274 clinic 1 0.089542 3 1844 3157 260 clinic 1 0.082357 4 1845 3492 241 clinic 1 0.069015 5 1846 4010 459 clinic 1 0.114464 loc函数参考:https://www.cnblogs.com/to-creat/p/7724562.html 要选择列值等于标量some​​_value的行,请使用==: df.loc[df['column_name'] == some_value] 3. Death at the clinics 做成图之后就更加直观和明显了: # This makes plots appear in the notebook %matplotlib inline#magic method # Plot yearly proportion of deaths at the two clinics # ... YOUR CODE FOR TASK 3 ... ax = yearly1.plot(x="year", y="proportion_deaths",label="clinic1")#利用plot函数画图,x轴为年,y轴为死亡率,label添加图例,为了yearly1和yearly2同轴(图)显示,将此图名为ax yearly2.plot(x="year", y="proportion_deaths",label="clinic2", ax=ax)#利用ax=ax可以实现同轴显示 ax.set_ylabel("Proportion deaths")#设置y轴名命令,sex_ylabel("name") output: plot函数参考:https://blog.csdn.net/sinat_24395003/article/details/60364345 4. The handwashing begins 根据前面的一顿操作分析可以得知,clinic1的死亡率要比clinic2高,这是为什么呢(挠头).原来奥,clinic1的接生同学们还兼职了对尸体的研究.于是教授下令,以后研究完尸体之后必须洗手!!!然后又收集了41年到49年的数据: # Read datasets/monthly_deaths.csv into monthly monthly = pd.read_csv("datasets/monthly_deaths.csv",parse_dates=["date"])#导入新的csv到monthly,这里parse_dates是定义date下数据为时间数据(而非字符串),从而具有时序的特性(可以比较先后) # Calculate proportion of deaths per no. births # ... YOUR CODE FOR TASK 4 ... monthly["proportion_deaths"]=monthly["deaths"]/monthly["births"] # Print out the first rows in monthly # ... YOUR CODE FOR TASK 4 ... print(monthly.head(3))#输出部分(前三行)monthly数据 5. The effect of handwashing 洗了手之后有没有效果呢: # Plot monthly proportion of deaths # ... YOUR CODE FOR TASK 5 ... ax=monthly.plot(x="date",y="proportion_deaths",label="deaths after handwashing") ax.set_ylabel("Proportion deaths") output: 6. The effect of handwashing highlighted 挖草,好像那个线确实下降了哎,不过不太明显哦: # Date when handwashing was made mandatory import pandas as pd handwashing_start = pd.to_datetime('1847-06-01')#标注'洗手事变'开始时间 # Split monthly into before and after handwashing_start before_washing = monthly.loc[monthly['date']<handwashing_start]#将时间轴划分为洗手前和洗手后(parse_date的作用出现了) after_washing = monthly.loc[monthly['date']>=handwashing_start] # Plot monthly proportion of deaths before and after handwashing # ... YOUR CODE FOR TASK 6 ... ax=before_washing.plot(x='date',y='proportion_deaths',label='before washing') after_washing.plot(x='date',y='proportion_deaths',label='after washing',ax=ax) ax.set_ylabel="Proportion deaths" output: 7. More handwashing, fewer deaths? 这下牛逼了奥,看着清晰明了.但是洗手和死亡率的降低真的有关系吗?求个平均值看看 # Difference in mean monthly proportion of deaths due to handwashing before_proportion = before_washing['proportion_deaths'] after_proportion = after_washing['proportion_deaths'] mean_diff = after_proportion.mean()-before_proportion.mean() mean_diff output: -0.08395660751183336 8. A Bootstrap analysis of Semmelweis handwashing data 可以看到死亡率确实减小了8%左右,看来洗手是真的有用.但是数据科学家感觉事情并没有结束.又用了bootstrap analysis(自助法?) 参考:https://www.zhihu.com/question/38429969 https://en.wikipedia.org/wiki/Bootstrapping_%28statistics%29(too long no see) # A bootstrap analysis of the reduction of deaths due to handwashing boot_mean_diff = []#定义一个空list for i in range(3000):#做一个3000次的实验 boot_before = before_proportion.sample(frac=1,replace=True)#frac=1->全部重新排序,并放回 boot_after = after_proportion.sample(frac=1,replace=True) boot_mean_diff.append(boot_after.mean() - boot_before.mean())计算一次均值差,加入boot_mean_diff中 # Calculating a 95% confidence interval from boot_mean_diff #计算boot_mean_diff置信区间 confidence_interval = pd.Series(boot_mean_diff).quantile([0.025, 0.975]) confidence_interval 这里有一个地方不是很明白,为什么3000次实验每次只将before_proportion和after_proportion打乱顺序,然后求平均值做差,但boot_after.mean() - boot_before.mean()的结果都不一样呢?(不应该是一样的吗?所有样本都摆在那里求平均值跟什么顺序摆放的也没关系啊?) print(boot_mean_diff[0:20]) [-0.07787261202620424, -0.07424799825364967, -0.09358312005955502, -0.08894556209810614, -0.08087685009098905, -0.06429190709356139, -0.08068023440789948, -0.07240951438539092, -0.06750565112365006, -0.0676633601804324, -0.08713968457785505, -0.08382681590118775, -0.08280812612089627, -0.08059191110129257, -0.09227479693648963, -0.07786725171910112, -0.08150749269654012, -0.08903607701866195, -0.061659787819670464, -0.0809971940784796] 自问自答(shoegazing - - ): 因为replace=True,所以每次个sample都是从所有(始终是一开始的样本)中抽选的,可能重复,也可能不重复。 test: import pandas as pd a=pd.read_csv('C:/Users/chenchutong/Desktop/1.csv')#随便选了一个数据的一段做实验 b=a['births'] print(b) print('---------') print(b.sample(frac=1,replace=True)) output: 0 254 1 239 2 277 3 255 Name: births, dtype: int64 --------- 0 254 1 239 1 239 2 277 Name: births, dtype: int64 可以看到有放回的情况下sample出来的样本是可能重复的,这造成了mean值的不同。 9. The fate of Dr. Semmelweis So handwashing reduced the proportion of deaths by between 6.7 and 10 percentage points, according to a 95% confidence interval. All in all, it would seem that Semmelweis had solid evidence that handwashing was a simple but highly effective procedure that could save many lives. The tragedy is that, despite the evidence, Semmelweis' theory — that childbed fever was caused by some "substance" (what we today know asbacteria) from autopsy room corpses — was ridiculed by contemporary scientists. The medical community largely rejected his discovery and in 1849 he was forced to leave the Vienna General Hospital for good. One reason for this was that statistics and statistical arguments were uncommon in medical science in the 1800s. Semmelweis only published his data as long tables of raw data, but he didn't show any graphs nor confidence intervals. If he would have had access to the analysis we've just put together he might have been more successful in getting the Viennese doctors to wash their hands. # The data Semmelweis collected points to that: doctors_should_wash_their_hands = True that's all thank you~~~ dataset:https://github.com/chenchutong/DESOLATION_ROW

优秀的个人博客,低调大师

windows 7 解决B/S架构兼容性的case

来san Francisco(旧金山)一个星期了,今天碰巧使用windows 7 中的免费组件Virtual PC 的XP Mode 解决了一个棘手的B/S架构(很多web system都有这样的问题存在)盛行后带来的异构客户端的兼容问题。 我暂住在小姨这里,她是一所私立大学的文学教授。她的job需要在学校的一个基于web的系统上(这里叫: CyberCampus)批改学生的作业,发布自己讲课的视频、文章以及回答学生的问题等等。but遇到了一个奇怪又无奈的问题:她如果在线编辑或者update她的课程内容的话,必须在她的旧电脑上做(windows me的系统95年买的,速度可想而知,估计现在这台PC只能帮她做这件事。在她编辑她的课程内容时是可以看到编辑页面的按钮的,而在windows vista 或者windows 7 或者他们家的另一台MAC的系统苹果机上都看不到编辑按钮,只能通过HTML标记进行,而这样就无形中加大了小姨的工作量,而对她这样的非IT人事来说HTML标记是多么恐怖的一件事!相当于让一个文学工作者去写Code!)。而做PPT或者批改学生作业或者文档的时候就在新的PC上做了。所以带来了很多麻烦,在新的PC上做了一半事情还要拿U盘Copy到Old PC上去收尾。多么惨不忍睹的事情啊(难道是地球人“杯具”用多了造成的?)。 不再愿意看到这样的事情发生在地球人身上。所以一探究竟,立誓要为地球人造福。发现小姨的New PC是windows 7的系统,而旧的PC是windows me 那么是什么差异造成了小姨的困惑呢? 因为她用的System是基于Web的,所以我想问题应该出在浏览器上。再仔分析了她学校的Web system。 wow!用CGI写的。OK 再次确定问题就是浏览器的版本问题。只要换成IE6.0的浏览器版本这个问题就可以解决,but windows 7 上怎么能装 IE 6.0呢? OK,我想到了windows 7上的虚拟化解决方案 virtual PC 的XP Mode,于是download 再安装(如果你也遇到了这样的问题,可以在这里download: download virtual-pc and Windows XP Mode),15分钟时间XP Mode 的虚拟机已经打开了,如果你从来没有安装过甚至还不了解什么是virtual PC 的XP mode的话,建议你看一段3分钟的视频: 点此查看virtual PC XP mode 教学视频。 OK,安装完XP mode 并且已经在你的PC上开始运行了以后,你可能会说,这不就是在虚拟机里安装一个XP么?那么你就错了,并没有真正的了解到XP mode 的作用。 接下来,我们需要的就是不在虚拟机中,而是直接在windows 7中来运行IE 6.0。要这样其实在XP Mode中很简单。当你启动了XP Mode后只需要在你安装XP Mode时所创建的用户配置文件的启动目录中放入你想要的应用程序的快捷方式就可以了。接下来你可以关闭XP Mode 然后在windows 7的开始--所有程序—virtualPC—XP Mode应用程序的目录中就可以直接打开XP Mode下的应用程序。如此一来,IE6.0就在windows 7中跑起来了。这样一来,因为B/S架构所造成的Web system兼容问题就在XP Mode的铁蹄下不复存在了。 本文转自 angerfire 51CTO博客,原文链接:http://blog.51cto.com/angerfire/278560,如需转载请自行联系原作者

优秀的个人博客,低调大师

一个价值2000元case的解决方法

2000元也许是一个小数字,如果我和你说,2000元就是解决了一个问题,你相信 吗? 近期,客户遇到一个问题,也就是一个问题,价值2000元。 问题就是:用户无法连接上Citrix XenApp控制台。 截图如下: 根据错误截图: 首先,根据错误详细信息,确认Citrix MFcom服务是否启动。 结果:启动 其次,确认是否安装XenApp服务器 结果:已经安装,客户确认以前使用过。 第三步,用户账户是否为Farm管理员 结果:是。 第四步,查看错误日志。如下 分析错误:从错误日志可以看出,问题有可能出现用户的账户与数据库验证不对。 用户访谈:什么时候出现连接不上控制台?连接不上控制台前做过什么变更? 最终得出:用户的连接数据库用户名和密码修改过。 解决方案:运用Dsmaint config命令,重新配置数据库连接。 如下图:为了安全:隐去了用户名和密码。 这个问题的思考: 1、对任何一个问题的解决需要抽丝剥茧,这样才能解决问题。 2、熟悉产品的架构和原理。 本文转自shj1985122951CTO博客,原文链接:http://blog.51cto.com/shenhj/687571,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册