programing-language
文章平均质量分 63
孤鸿子_
just for fun/前ACMer/前MSRAer/ZJUer/编程爱好者/学生/
展开
-
tail recursion 尾递归
尾递归并不是函数式编程才有的特性,c++ 里面也是有的。第一次接触尾递归,是在 UW的coursera课程中,第二次是在sensetime的面试中,面试官问我了解尾递归吗,什么情况下编译器可以用尾递归优化。这里虽然使用 scala作为实例讲解尾递归,但请注意,这并不是scala语言中才有的特性先说定义,尾递归就是一种特殊的递归,这种递归编译器可以优化,怎么优化呢?如果递归的过程中可以用被调用...原创 2019-03-16 09:40:20 · 763 阅读 · 0 评论 -
[Java Collections Framework] 浅析java 集合框架(三) : ArrayList,LinkedList,ArrayDeque源码解析
原本以为我能深入解析,源码,发现我还是太native了,,,有很多深入的方法和设计我发现并不是短时间内能理解了,所以还是改为浅析算了。ArrayListtoArraysublistLinkedListArrayList transient Object[] elementData; // non-private to simplify nested cl...原创 2018-07-27 14:53:24 · 763 阅读 · 0 评论 -
[Java Collections Framework] 浅析java 集合框架(四) : priorityQueue
priorityQueue 是一个堆 (heap) 的数据结构,底层就是一个数组,逻辑上是一棵完全二叉树。并且PQ的堆顶idx 是0。也就是说 对于任意的节点,xxx, lc=2x+1,rc=2∗(x+1),par=(x−1)>>1lc=2x+1,rc=2∗(x+1),par=(x−1)>>1lc = 2x+1,rc = 2*(x+1),par = (x-1)>>1, 这里...原创 2018-07-27 16:51:10 · 198 阅读 · 0 评论 -
[Java Collections Framework] 浅析java 集合框架(五) : Map,HashMap,LinkedHashMap
MapviewmultimapMap.entryHashMapMap这部分可以参见官方文档的介绍The Map Interfaceview有意思的是这个 视图集 View, keySet — the Set of keys contained in the Map. values — The Collection of val...原创 2018-07-30 10:42:55 · 310 阅读 · 0 评论 -
[Java Collections Framework] 浅析java 集合框架(六) : TreeMap
特性higherEntry,ceilingEntry迭代器的时间复杂度疑问特性底层是红黑树,算法基于经典书籍 《Introduction to Algorithm》key 需要实现comparable 接口,或者提供comparatorViews: - EntrySet: Set OF Map.Enty OF Key-Value - ...原创 2018-07-30 15:41:35 · 250 阅读 · 0 评论 -
[Java Collections Framework] 浅析java 集合框架(七) : Set,HashSet,LinkedHashSet,TreeSet
其实这部分只需要一句话,你就明白了,HashSet 的底层是一个HashMap, 也就是说所有操作都和HashMap一样,就将value 设为了 一个固定的Object。。。。,同理TreeSet也一样,所以源代码不足500 行,而HashMap一个文件就接近3000行Set interface这部分比较有意思的是他提供的交并补操作 s1.containsAll(s2) — ...原创 2018-07-31 15:30:35 · 225 阅读 · 0 评论 -
c++ string常用函数总结
构造函数 string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化substr string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串只有当pos = npos即最后一个空时才返回空串.枚举的时候一定要小心原创 2017-04-24 22:18:06 · 474 阅读 · 0 评论 -
STL nth_element神器
这周在看kd-tree,苦于找中位数写起来太过麻烦,去观摩了一下其他大佬的代码,竟然还有nth_element这种东西。 http://www.cplusplus.com/reference/algorithm/nth_element/ nth_element(first,nth,last) first,last 第一个和最后一个迭代器,也可以直接用数组的位置。 nth,要定位的第n原创 2017-09-08 13:52:19 · 6845 阅读 · 0 评论 -
应对高校C++考试(一) : 从C到C++
写在前面本系列是为了应对敝校C++考试帮同学辅导,而写。所有内容仅涉及C++基本语法,加之我并不擅长C++(ps: 准备以后将java作为发展方向 :) .)而且长期只是 C with STL 选手,所以所写均很简单。不过好在考试仅考语法,语法这东西就像说明书,其实用到的时候再学也是不会影响程序设计的。这不是c++程序设计,而是简单的c++语法总结……使用前请保证:已掌握基本c语...原创 2018-06-04 00:39:08 · 3702 阅读 · 0 评论 -
应对高校C++考试(二) : 函数
这节讲c++的某些特殊函数语法糖,主要讲 函数递归调用,默认参数,函数重载。目录函数声明函数的递归调用默认参数函数重载函数声明你应该很熟悉声明一个函数的方法<返回值类型> <函数名字>(变量类型){.....return <返回值类型相同的值>}尖括号中是你需要替换的东西。为什么要引入函数呢? 如果你经常编程...原创 2018-06-04 09:48:09 · 955 阅读 · 0 评论 -
应对高校C++考试(三) : 指针和引用
这节主要讲指针和引用的区别指针引用常引用引用作为函数参数引用作为返回值指针c++ 里面的指针和c语言完全一样。 理解指针需要理解地址和值的区别。 T* 就表示到类型 T 的地址,例如:#include <iostream>using namespace std;int main(){ char c = 'a'; char...原创 2018-06-05 00:50:28 · 755 阅读 · 0 评论 -
应对高校C++考试(四) : 认识类
这一讲初步讲解关于类的东西,我们先来看一个日期类, Date 的设计,Date 有一个有年月日成员,然后有一些访问成员函数,看不明白不要紧,我们慢慢来理解下面这段代码就行了,这一节就是理解这段代码中的语法类的相关语法类的声明类的成员变量和成员函数访问控制成员函数常量成员函数构造函数默认构造函数析构函数复制构造函数(copy construct function)...原创 2018-06-05 19:46:33 · 743 阅读 · 0 评论 -
应对高校C++考试(五) : 运算符重载与有元
这里谈谈c++里面两个特别的语法糖 —-运算符重载和有元。为什么说是特别?难以理解,特别装逼,完全可用其他方式替代,比如运算符重载就是一个函数,完全可用函数替代,而且重载的运算符函数根本无法重名字理解函数的意思….很多语言都没有,比如java 不会有这么复杂的事情,感觉像块鸡肋如果不是考试,我永远不会学这种东西。目录运算符重载重载 []重载 << 流输入输...原创 2018-06-06 00:56:16 · 551 阅读 · 0 评论 -
[Java Collections Framework] 浅析java 集合框架(二) : 线性结构(List,Queue,Deque)
本篇文章总结自 Java Collections Framework Tutorial interfaceCollection Interface基本操作遍历集合批处理数组操作ListQueueDequeCollection Interface基本操作int size(), boolean isEmpty(), boolean contains...原创 2018-07-26 16:43:42 · 377 阅读 · 0 评论 -
[Java Collections Framework] 浅析java 集合框架(Collection Framework)(一) : 接口概述
我把java Collection 里面的所有类做了一张 UML 图(去掉了 aggregation 关系)可以看到里面主要分了 4部分 :Iterator辅助类 : Arrays, CollectionsCollection ( List, Queue,Set)Map值得注意的是,Map 和Collection(以后无特别说明类均指以上4个部分中的一部分) 并没有继承和...原创 2018-07-25 16:17:18 · 371 阅读 · 0 评论 -
[java language] 浅析java IO Stream
这里简要总结java io 流相关操作,不涉及底层源码。java 中的IO 流机制简单来说就是将数据源从一个地方输出到另外一个地方.这里主要总结3种流,字节流,字符流,缓冲流。测试说明:1M 字符文件机器是 Surface pro4 4+128ByteStream其实ByteStream才是常规意义上的Stream, 是面向字节的,所以对于读入文件是字符来说通常非常慢。读...原创 2018-06-10 20:36:26 · 375 阅读 · 0 评论 -
(co-,contra-,in-)variance in Scala, what is [+-A]
本文主要总结Scala中关于generic variance(泛型变化, 我也不知道该怎么翻译,以下称 GV),(co-,contra-,in)variance in Scala 的相关知识,什么是 generic variance 呢?我的感觉是一种泛型类型的类型系统,应该和 type system 比较相关,(PL专家就不要嘲笑我了)。比如: List<Integer>是 Lis...原创 2019-03-27 01:16:26 · 533 阅读 · 0 评论 -
[java 源码思考] O(1)时间找到一个数的最小二次幂(Find the best power of two)--ArrayDeque
就是说给定一个数 nnn, 找到 x,s.t.n<x,x=2kx,s.t.n<x,x=2kx,s.t. n < x, x = 2^k打开 ArrayDeque,我看见在分配元素的时候有这样一段代码 private void allocateElements(int numElements) { int initialCapacity = MIN_INITI...原创 2018-07-27 11:22:15 · 369 阅读 · 0 评论 -
latex 插入java 代码模版
废了好大劲 把下面那堆东西添加到头文件就好了,(PS :( UI真难做) [TOC]模版 \usepackage{listings}\usepackage{color}\usepackage{xcolor}\definecolor{dkgreen}{rgb}{0,0.6,0}\definecolor{gray}{rgb}{0.5,0.5,0.5}\definecolor{ma...原创 2018-05-20 20:31:15 · 5853 阅读 · 5 评论 -
5分钟latex 使用入门写llncs论文
写在前面其实这连入门都算不上. 用到这个工具其实来源于老师让我给springer投稿,要使用llncs 模板,有latex,和word。我word玩的太差了,索性就用latex吧,我想只要按照格式来都没撒问题的,就边写边学了一下。果然很适合我,不需要自己去配置什么硬编码了,需要什么搞个命令就行了。。。。撤多了,开始入门llncs(计算机会议论文模板)写论文。工具CTex 下个...原创 2018-03-06 21:18:17 · 4852 阅读 · 0 评论 -
c++中range-based for 的性能分析
这要是对以下几种在c++里的 for-range-loop做一个总结for(auto e : container)for(auto &e : container)for(const auto &e : container)for(auto && e : container)这里主要是参考 ref [1] stackoverflow里的类容,他总结的很好...原创 2019-08-23 16:11:55 · 846 阅读 · 0 评论 -
numpy学习笔记
slicinga[:-1]#去掉最后一个a[:7:2]#[0,7]以2为增值累加索引In [48]: a[::-1]Out[48]: array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])In [49]: a[::-2]Out[49]: array([9, 7, 5, 3, 1])In [53]: a[:4:-2] #到4截至Out[53]: array([9, 7原创 2017-04-25 09:38:16 · 382 阅读 · 0 评论 -
pandas 数据处理
Pandaspandas is a Python library for data analysis. It offers a number of data exploration, cleaning and transformation operations that are critical in working with data in Python.pandas build upon nu原创 2017-07-18 19:01:57 · 3488 阅读 · 0 评论 -
<<python 核心编程>>第一章 正则表达式
基本使用方法match与searchimport rem = re.match('foo|bar','foo')print(m.group())footype(m.group())strm.group() 返回匹配的字符串pattern = 'foo|bar'm = re.match(pattern,'foobarfooooooook')print(m.group())foore.mat原创 2017-07-27 20:32:42 · 618 阅读 · 0 评论 -
python语言学习:列表展开
问题提出这里遇到一个问题,比如我有两个列表 a=[1,2,3] b=[4,5,6]然后我们想做这样一个事情我们想把a中的元素加到b中,我们知道如果使用 b.append()a =[1,2,3]b = [4,5,6]b.append(a)bOut[37]: [4, 5, 6, [1, 2, 3]]加入的是嵌套链表,解决方法我们可以使用 b.extend(a)这样就可以将a的逐次迭代的原创 2017-08-07 21:42:03 · 625 阅读 · 0 评论 -
python爬虫自动提交HDU并获取AC状态(p3+request+Beatifulsoup)
说明今天下午搞了好一会儿,源于上周日的沈阳网络赛,竟然可以枚举答案交1024发……想到如果自己能写个爬虫自动提交那该多好啊,源于这总冲动自己今天花了一个下午实现了这个小玩意儿.效果图实现过程其实主要是3个步骤:login 登录submit 提交代码report status 范围状态(AC没有?)首先是登录,就是要把你的id 和 密码post 到HDU ,我们可以打开HDU 的主页然后分析提原创 2017-09-13 22:36:24 · 897 阅读 · 0 评论 -
python 字符串与二进制串之间的转化
最近学习密码学,经常要在二进制位上操作,加完密以后又要把二进制串转化回去,还要中英文兼顾,就只好用’utf-8’了,’utf-8’转化为二进制串是很容易的事情,但是二进制串转回去就有点麻烦了,因为解码好像只能是bytes对象,不能是字符串,这里记录一个简单的方法bitarrayfrom bitarray import bitarraybitarray对象可以轻松将二进制串转化为bitarray对象原创 2017-10-07 23:08:00 · 22194 阅读 · 3 评论 -
java ACM竞赛IO优化Petr模板
相信ACMer 用java的时候不少遇到超时的现象吧,今天做CF的时候就遇到了,$10^5$ Int 就超1s了,根本不能忍,这里留下一个petr 大佬的模板,果然速度提高10倍输入输出例子输入class InputReader{ private final static int BUF_SZ = 65536; BufferedReader in; StringToke原创 2018-05-09 20:17:18 · 2043 阅读 · 0 评论 -
应对高校C++考试(六) : 模版
这节是最后一节了,讲模版 (template)所有文章目录在这里应对高校C++考试(一) : 从C到C++ 应对高校C++考试(二) : 函数 应对高校C++考试(三) : 指针和引用 应对高校C++考试(四) : 认识类 应对高校C++考试(五) : 运算符重载与有元本节内容,实现模版类和模版函数目录模版函数模版类总结模版 template 的作用...原创 2018-06-06 11:31:06 · 748 阅读 · 0 评论