- 博客(16)
- 收藏
- 关注
原创 Java学习笔记——JVM(2)内存结构
1. JVM的内存区域划分这是个老生常谈的问题了,一般来说,JVM的内存区域包括以下几部分:(1)堆(Java堆)Heap:存放对象实例的成员变雷的值(不存方法)(2)方法区 Method Area:包括永久代(元空间)以及有关于类的一些元数据,包括类加载器的引用、常量池、字段数据、方法数据、方法代码等(3)栈(虚拟机栈) VM Stack:每个方法被执行一次的时候创建一个栈帧,存储局部变量表、操作栈、动态链接、方法出口等(4)本地方法栈 Native Method Stack:与VM栈
2020-08-18 09:40:26
208
原创 Java学习笔记——JVM(1)类加载机制
1类的加载时机JVM规范规定了5个情况必须立即初始化该类(将class文件加载到JVM中):(1)new了一个这个类的实例or访问这个类或接口的静态成员(2)反射(3)子类被初始化时,父类也会被初始化(4)被标注为启动类的类在JVM启动时就会被加载,以及直接用java.exe运行的类(5)使用JDK1.7的动态语言支持时可见,JVM对类的加载是动态的,这是为了节约内存资源。2 类的加载过程2.1类加载器的选择Java有三种默认的类加载器:Bootstra...
2020-08-18 07:17:56
196
原创 Python高级编程学习笔记(一) 魔术方法
最近在看Luke Sneeringer的"Professional Python"这本书,做一些关于这本书的笔记。首先是魔术方法,本书的第二部分,第四章。为什么不按顺序来呢,我也不知道。0. 什么是魔术方法简单地说,就是在面向对象编程时,编写的一些对于特定操作(例如特定函数、操作符)做出特定响应的函数(作者称之为“钩子”)。对于魔术方法,遵循统一的格式:双下划线在函数名两端,例...
2019-06-21 16:29:09
293
原创 Python使用内置sorted()函数对自定义类实例排序的两种方法
在Java中,自定义类可以通过继承comparable接口,重写compareTo方法来使用内置sort()函数来对自定义对象排序,我就在想Python中有没有类似的操作。 首先随便写个自定义类,比如说我写了个“分数”类,成员变量包括分子、分母和分数的值,后面我们根据值来对分数排序。代码如下:class Frac: def __init__(self, upper...
2018-12-16 22:16:22
2949
原创 使用conda快速在windows下安装GPU版本的Tensorflow+CUDA+cudnn
之前我尝试过很多种方法,首先要找python对应版本的tf,又要找tf对应版本的cuda,最后还要找cuda对应版本的cudnn,麻烦事一大堆,还不一定能一次安排上,偶然间发现了conda的强大,来跟大家分享一下。首先推荐安装Anaconda,有多好用就不多说了,基本上有常用的各种包,关键是还有大杀器conda,从此以后就告别pip了。首先,确认你的python版本是3.6(反正不能是3....
2018-11-06 20:45:33
4334
5
原创 手撕算法系列——4. 判断单链表是否有环
这道题展开来说,就是给出一个单链表的头结点head: 1)求该链表中是否存在环路; 2)如果存在环路,求出环路的入口和环的长度。 根据单链表的性质,一个结点最多只能有一个后继,故单链表若存在环,则环一定在链表的末尾,且没有尾结点。如果一直沿着链表遍历下去,最后会在环内一直死循环。 根据以上性质,这道题的解法还是用“双指针”的思想,两个指针同时从头结点出发,但是一个指...
2018-05-29 00:34:52
504
原创 手撕算法系列——3. 线段相交问题
这道题也是一道经典的面试题,即分别给出两条线段在平面直角坐标系下的端点坐标,判断这两条线段是否相交(这里的相交定义为有且只有一个公共点)。 这道题如果用传统的解析几何思维,那就是求出这两条线段所在直线的方程,判断是否平行,若不平行,再算出两直线的交点,最后计算交点是否在线段上。这样做思路比较简单,但是实现起来可能会遇到各种各样的问题,例如若线段所在直线倾角等于或接近90°,在计算过程...
2018-05-27 18:35:25
1020
原创 手撕算法系列——2. top-k问题
这道题也是很经典的面试题了,因为很多互联网公司要处理海量数据,从海量数据中筛选第k大(小)的数据成为了很常见的问题,这道题也因为解法众多而一直受到热议。下面假定问题是要从n个不同大小的数据寻找第k大的元素,即有k-1个元素大于它。(1)解法一——简单粗暴排序 这个解法不用多说了,如果使用基于比较的排序,则平均时间复杂度为O(nlogn),如果n很大的话,这个时间复杂度是难以接受的,而...
2018-05-27 00:58:28
1920
原创 手撕算法系列——1. 单链表逆转
这道题是一道经典的算法题了,出没在各大厂小厂的面试题中,也出现在了我去年的考研题中,当时写的很烂,残念。。从考研题说起,当时题目的要求还比较严苛,要求不能借助额外的辅助空间,也就是要求完全通过操作指针来实现链表的逆转...
2018-05-22 00:55:35
1047
原创 手撕常见算法题【持续更新】
手撕一些经典算法题以及各大厂面试常见算法题,一般用C语言撕(如果我感觉人生苦短可能会改用Python),长期更新。超链接没亮就是还没填坑1. 单链表逆转2. top-k问题3. 判断两线段是否相交4. 判断单链表是否有环5. 寻找字符串中是否含有某个子串6. 最大连续子列和7. 最长公共子序列...
2018-05-20 14:10:31
1402
原创 Python数据挖掘一些常用的库
1. scikit-learn(sklearn) 机器学习包包含了很多机器学习函数以及测试这些函数的现成数据集。2. Numpy、SciPy无需多说,强大的科学计算库。3. Networkx 网络分析库可以构建图形化社交网络4. 文本挖掘库:(1)nltk(Natural Language Toolkit):最经典的自然语言工具包,拥有庞大的语料库。(2)Gensim 一个很受欢迎的文本挖掘模块,...
2018-05-17 14:26:00
2784
原创 2018年4月第一周学习笔记——JAVA面向对象初步
1. 类的基本定义形式Java中,最简单的类定义形式为:class ClassName{ fields…… constructors…… methods……}一般类名的首字母要大写。2. 访问修饰符——public和private在一个源文件中,只能有一个public类,并且文件名必须与public类名字相同,一般将包含main方法的类声明为public类。一般将数据域设置为私有...
2018-04-06 00:43:54
307
原创 3.28-29学习笔记——JAVA控制流程和数组
1. JAVA控制流程这部分和C++基本上一样,分支结构可以用if、else,也保留了switch语句,语法和C++一样;循环结构也保留了C++的while、do-while和for循环,不过在java1.5版本增加了for each语句,一般用于访问数组的每一个元素,调用方法是:for(type element : type[] array)作用类似于Python的for element in ...
2018-03-30 00:43:56
209
原创 3.25-26学习笔记——JAVA数据类型
1. JAVA的命名规范(1)包名全小写;(2)类名首字母大写,如有多个单词使用驼峰命名法;(3)对象名和方法名首字母小写,如有多个单词同上;(4)标识符可以以字母、下划线、$开头,中间可以包含数字。2. JAVA数据类型(1)整型:int(4 byte)范围大约20亿 long(8 byte)范围10的19次方级,若要表示超过20亿的数字如全球人口,则要用lo...
2018-03-27 00:48:18
324
原创 3月24日学习笔记
建立第一个JAVA程序:HelloWorld第一步:设置好IDE,设置工作路径,将字体大小、界面风格设置成喜欢的格式(设置成DARK风格保护眼睛);第二步:new一个JAVA project,命名为HelloWorld,在src目录下new一个class(这里可以看出JAVA的特色,面向对象),将该class归为名为hello的package,建立class的时候勾选在该类里面建立一个main函数...
2018-03-25 01:10:13
208
原创 2018年3月-5月学习、工作计划
3.23-3.31 搭建好JAVA和MYSQL的开发环境,JAVA的IDE选择JDK,熟悉JDK和MYSQL的各种基本操作。学习JAVA的基本语法(先熟悉面向过程部分,可以写一些基本的数组排序、二叉树遍历等算法练手),学习SQL语言的基本语法。4月 学习JAVA的面向对象部分,继续学习MYSQL并尝试用MYSQL去管理本科毕业论文中所需要处理的数据;尝试用Python或JAVA去连接MYSQL,并...
2018-03-23 11:58:48
693
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人