自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 [个人思考] 所思所想

本文为作者在工作中所思所想,或者灵光一闪而产生的简短文字记录。2020-01-12一年后,即2020年8月,要开始准备面试,不在每天混日子,不可以随波逐流,要避免平庸,时时刻肯提醒自己。工作方面的事情,有问必回。不要心急,想一想一年后,多往好处想,相信自己可以的,保持好的精神状态和战斗力。2020-02-18每天学习的东西太多,没有时间消化和吸收,下次遇到了,还是不熟。怎么破解?2020-02-25每天早上7点半起床,尽量少看手机。起床喝一杯水,上午到公司后,尽量不喝水,尽量不上厕所。保.

2020-06-30 22:09:03 294

原创 [经验分享] 覃超算法训练营学习笔记

本文为覃超算法训练营的课程笔记推荐学习网站学习数据结构的动画演示网站B站 覃超大魔王Snailclimb/JavaGuide工欲善其事,必先利其器simple collaborative textIntelliJ 10 tips (YouTube )小工具要用的很熟编码指法以上都是顶尖职业选手区别于普通人的细节体现。关于编程感觉-道​ 找到一种感觉,爱上看别人的代码。​ 重剑无锋,大巧不工,看到好的代码马上就想抄下来,同时自己练会学会,并且让自己写出的..

2020-06-30 21:19:10 2260

原创 [学习资料] 经典书籍和资料

书籍C程序设计语言C++primerEffective C++C++并发编程编写可读代码的艺术代码大全深入理解计算机系统Linux高性能网络编程Unix网络编程网站cppreferencebrpc源码在线课程极客时间-趣谈Linux操作系统极客时间-Linux代码性能优化实战极客时间-算法训练营章淼-代码的艺术(微信公众号"章老师说")...

2020-06-30 20:50:29 178

原创 [经验分享] 对于技术人的成长,什么是最重要的?

对于技术人的成长,什么是最重要的?本文为沈剑关于数据结构与算法训练营的分享。1. 聪明智商我们无法改变,从出生那天就决定了,但能通过努力逼近智商上限。勤奋练习更重要,通过练习让自己变得熟练。给自己定个小目标:比最晚下班的同学再晚一小时。关于这点我的理解为:下班不是工作的终点,而是学习的起点。下班不意味着享乐的开始,而是将自己从白天被公司支配的工作中解脱出来,让时间回归自己,开始思考和精进。程序员那么忙,哪有时间写文章?就问一个题?大家晚上在干嘛?就算晚上11点下班,也还有两个小时。2.

2020-06-30 02:16:32 634 1

原创 [C++] 动态数组及其应用

动态数组存在的意义:​ 很多情况下,在预编译过程阶段,数组的长度无法预先知道,必须在程序运行时动态给出。但C++要求定义数组时,必须明确给定数组的大小,否则编译无法通过。动态数组和静态数组的区别​ 静态数组[]是在栈上创建,不需要自行释放空间,效率高,但是栈空间有限。​ 动态数组new是在堆上创建,堆为自由存储区(free store),需要自行释放空间,效率低。在c和c++中,动态数组的分配方式略有区别:C:malloc和freeC++:new和deletenew在内部做

2020-06-28 17:52:24 816 2

原创 [Scala] 元组转换为分隔字符串

背景需要将包含若干个元素的元组,转换为特定字符分隔的字符串。例如(1, 2, 3) -> "1:2:3"(28, "lianmeng", 173) -> "28:lianmeng:173" 但是元组不可以直接转换为array或者list。必须转换为迭代器方法通过对元组调用productIterator方法,转换为迭代器类型,进而调用mkString方法。scala> val s = (1,2,3)s: (Int, Int, Int) = (1,2,3)scala&g

2020-06-28 11:40:31 803

原创 [LeetCode] 从LC22谈递归

import java.util.List;class Solution22 { public List<String> generateParenthesis(int n) { generate(0, 2 * n, ""); // 自顶向下编程逻辑 return null; } private void generate(int level, int max, String s) { // terminator

2020-06-28 08:52:24 119

原创 [数据结构与算法] 递归解题笔记

递归解题笔记递归理解​ 递归本质上类似于循环,只不过是通过循环体调用自己,来进行所谓的循环。​ 为什么会有这样一种形式呢?就是因为计算机语言在创造的时候,本质上是汇编。汇编的特点就是没有所谓的循环嵌套这一说法,很多时候它用的是,你之前有一段函数写什么地方,或者一段指令写在什么地方,你就直接不断地反复跳到之前的那段指令,不断的去执行。这就是所谓的递归。​ 循环本身你可以把它编译出来,看它的汇编代码,其实和递归本身有异曲同工之处。所以递归和循环他们没有明显的边界。​ 重复性可以用计算机解决。可

2020-06-28 08:48:16 379

原创 2020-06-24 第3篇

这是我在CSDN的第3篇博文。写作是为了逼迫自己思考,培养思考,总结和回顾的习惯。学习篇本周学习的新知识点如下scala在linux中通过命令行编译运行[Scala] 命令行编译运行整理了spark中数据格式转换的技巧[Spark] 巧用ListBuffer进行数据格式转换[Spark] 巧用groupBy进行数据结构转换学习Linux系统中,vim配置文件~/.vimrc及其配置选项[Linux] .vimrc设置vim中代码显示格式学习FM模型,以及在MovieLe

2020-06-24 23:39:32 182

原创 [Linux] .vimrc设置vim中代码显示格式

背景在vim中打开代码,总是觉得别扭,不如在IDE中写代码那么爽。最近才发现,原来vim中也可以很爽。前提是你要有以一个看起来很爽的显示和界面。方法syntax enable"set background=dark"colorscheme solarizedset nu "显示行号syntax on "自动语法高亮set shiftwidth=4 "默认缩进4个空格set softtabstop=4 "使用tab时 tab空格数set tabstop=4 "tab 代表4个空格set

2020-06-23 17:06:24 385

原创 [Spark] 巧用groupBy进行数据结构转换

背景[Spark] 巧用ListBuffer进行数据格式转换与这篇正好相反,现在我们想把数据格式为category item(number 0)(number 1)(number 2)(number 3)…(alphabet a)(alphabet b)(alphabet c)(alphabet d)…转换为category item_list(number 0,1,2,3,4,5,6,7,8,9)(alphabet a,b,c,d,e,f,g,h,i,j)方法需要对具

2020-06-23 16:31:18 726

原创 [Spark] 巧用ListBuffer进行数据格式转换

背景某个父类目下对应多个子类目,例如数字:0,1,2,3,4,5,6,7,8,9字母:a,b,c,d,e,f,g,h,i,j假设某个hive表,且叫table,其中存储的数据格式为category item_list(number 0,1,2,3,4,5,6,7,8,9)(alphabet a,b,c,d,e,f,g,h,i,j)我们想将其转换为如下数据格式(number 0)(number 1)(number 2)(number 3)…(alphabet a)(alphabe

2020-06-23 15:03:55 1199

原创 [Scala] 命令行编译运行

背景最近工作中需要用scala开发一个简单的脚本,希望能够每次只输入入参。如果进入scala交互式界面,则需要每次都输入所有代码。 1 // ProductCategoryAppid.scala 2 object ProductCategoryAppid { 3 def main(args:Array[String]): Unit = { 4 val str = args(0) // input a 5 val tmp = str.split(",").m

2020-06-23 10:42:29 1106

原创 [C++] vector删除指定元素

背景最近在工作中遇到一个问题,问题可简化如下:在推荐系统中,对某个user的召回候选item集合进行打分排序,item集合存放在一个召回列表vector中。需要实现的功能为,在召回item列表送入模型打分之前,先做过滤。即对于user已经拥有的item,不再将这些item送入模型进行打分。例如:user1已经拥有item1,item2。则需要将召回列表vector中的item1,item2过滤掉。解决方案int32_t filter_number = 0std::set<int64_t&g

2020-06-20 23:19:58 2084

原创 2020-06-20 第2篇

这是我在CSDN的第2篇博文。写作是为了逼迫自己思考,培养思考,总结和回顾的习惯。学习篇本周学习的新知识点如下:c++中std::vector删除指定元素的操作方法erase.如何自定义spark中的函数spark 自定义hash函数git commit的规范格式Commit message 和 Change log 编写指南可以看出,本周个人状态不是很好,学习进展缓慢,需要及时调整状态。运动篇本周运动力执行较好,截止至本周五,周跑量25km。估计本周可达到35km。深圳的6月特别

2020-06-20 22:03:28 132

原创 [Spark] 自定义hash函数

背景之前在spark1.6中运行的代码,放在了spark2上去运行,发现运行的结果不一致,定位后发现是不同版本中,hash函数的实现方式不同,导致取数结果不同。区别为:spark1.6 版本为hashCode,2.X版本为murmurhash。解决方法如果在spark2上运行spark1编写的代码,需要重新定义hashCode,具体如下:hiveContext.udf.register("hashCode", (x: String) => x.hashCode().toString)从而

2020-06-15 21:36:20 1861

原创 2020-06-12 开篇词

我是思密达,这是我在CSDN的第一篇博文。我喜欢读书,并且一直保持着阅读的习惯。通过读书,我了解到很多出色的人都有写博客的习惯。从今天起,我打算把写博客当做一项事业来做,一来向优秀的前辈们看齐,二来通过书写促使自己思考。我是一个非计算机科班出身的程序员,本硕7年通信。由于上学时对于未来的职业思考较少,在硕士找工作期间才决定投身互联网。因此,我并没有扎实的计算机基础,秋招面试时靠着临时突击和母校的光环,进入一家还算不错的非传统互联网大厂的互联网部门,担任算法工程师。这是我工作的头一年,这一年我给自己定的

2020-06-13 09:12:36 284 1

原创 protoc 编译报错cannot open shared object file: No such file or directory

现象$ make/simida/public_lib/third_lib/protobuf-3.6.0/bin/protoc /simida/test/Protocol/predictor.proto --proto_path /simida/test/Protocol --cpp_out=.//simida/public_lib/third_lib/protobuf-3.6.0/bin/protoc: error while loading shared libraries: libprotobu

2020-06-12 17:51:56 1519

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除