自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(156)
  • 资源 (1)
  • 收藏
  • 关注

原创 梦想路过半

自从下定决心不准备考研,直接找工作开始,已经过了一年多了。这一年里我几乎每一个月都有将自己学到的知识放到CSDN博客上。这一年多的积累,一年多的学习,一年多的努力,终于让我在今年的5月份找到了实习。而这份实习,也是我最初的梦想BAT种的B,ByteDance。在今年的2月到5月份,这三个月,我的博客几乎停更,一直在努力的找实习,一直在被拒绝。也许公司认为不会SpringMVC 不配找实习吧。导致自己的简历一直被拒绝。但是大厂还是给我了些许机会,字节跳动,腾讯,美团,阿里都邀请我面试。非常感谢面试初体验交

2020-05-17 21:08:07 1676 2

原创 初来乍到

大家好,这是我来到CSDN社区的第一篇博客。先简单的介绍一下自己,我就读于西安工业大学,是计算机院物联网工程专业的大二学生。我热爱舞蹈,喜欢健身。我认为做好任何一件事都需要一个明确的目标,对于我所就读的计算机专业, 我的目标就是进入B A T。既然有了一个明确的目标那么我也要有所准备去完成我的“大”目标。我的做法是把大目标细化,分成小目标,年目标,学期目标,月目标,周目标。在第一篇自我...

2019-05-02 15:14:53 329

原创 python 生成器与推导式

生成器 与类和对象无关,与魔法方法没有关系。生成器,实际上就是迭代器的一种实现。为什么有了迭代器,还要有一个生成器呢?首先我们来讲一下迭代器的缺点,迭代器必须要定义一个类,重写__iter__(self) , __next__(self) 这两个方法,才可以对某一个对象进行迭代。生成器,只需要在普通的函数中,加入 yield 这个语句即可,使它编程一个特殊的函数。生成器类似一个协同程序。协程程序:可以运行的独立函数调用,函数可以暂停或者挂起,并且在需要的时候从程序离开的地方继续,或者重新开始。

2020-06-09 12:00:05 320

原创 python 迭代器

迭代器实际上就是 Java 中的 Iterator,这个很好理解,其实就是挨个访问元素,去遍历整个容器。例如,迭代字符串for c in "String": print(c)迭代文件的每一行f = open("file.txt","rt")for line in f: print(line)迭代字典:for key in dicts: print(key,"->",dicts[key])那么这些循环在底层他们所触发的就是迭代器。python提供了两个魔法方法(内置函数)。

2020-06-09 11:21:51 157

原创 Python 魔法方法

魔法方法也叫内置方法,不需要主动调用,存在的意义就是给python解释器进行调用。也就是说魔法方法并不需要认为的去显示调用,这些方法是python解释器所调用的内置函数。魔法方法特征:__魔法方法名__(参数)__new__(cls,参数1,参数2....)第一个参数就是要生成的对象所对应的类,生成一个对象时,解释器自动调用此方法来生成一个对象,然后将参数传入给构造器函数init。一般来说,极少的情况我们需要对此方法进行重写。重写的情况基本上只有一个类继承了一个不可变类时,需要重写new方法。举

2020-06-09 10:54:08 285

原创 python高级 - 面向对象

有关面向对象的定义,我不在阐述,在我之前的Java基础文章中已经阐述的相对很清除了,这里我们直接来进行学习以及操作。这里我将脱离网站上的教学,直接与Java对比学习,我相信对于任何一个掌握了另外一门语言的人来说,对比学习,应该是最快上手的。类创建一个类python:java:对象new一个对象访问权限属性和方法调用继承接口抽象类向上转型 与 调用父类方法导入包...

2020-06-07 12:55:58 222

原创 用一张图,解决python基础语法以及使用

通过之前的MOOC中北京理工大学的 python语言基础学习 我都总结了博客,但是我觉得如果能做成一张脑图,学习起来会更加轻松,于是我花了些时间将最基础的知识点,做成了一张脑图,希望大家能在学习python面向过程基础的时候可以用到。这里给大家简单展示一下图,脑图资源...

2020-06-02 13:56:24 335

原创 python第五天 程序设计方法学

程序设计方法学体育竞技分析需求:如何科学分析体育竞技比赛输入球员的水平,能否输出比赛成绩???简单来说就是不断地进行比赛,最后选手的能力的而显示的输赢情况,会越来越精确比赛规则简单来说,两个人打乒乓球。自定向下的方法:将总问题分解为很多个小问题,再划分为小问题,直到我们可以解决这个小问题,自底向上的执行,分别执行每一个实际单元,进行测试,测试通过,组合测试。也就是小问题测试没问题,就合并另一个小问题称谓一个略大的问题,再进行测试,通过,再合并再测试。程序总体框架及步骤:打印程序的介

2020-06-01 01:25:59 260 1

原创 python第四天 组合数据类型 文件与数据格式化

组合数据类型集合类型集合与Java中的集合定义相同,都是组合的数据类型,将数据以某种方式进行存储,可以是链表(LinkedList),可以是数组(ArrayList),可以是哈希表(HashMap),可以是堆(PriorityQueue)。在Python中,集合类型与数学上的集合概念一致,集合元素之间无序,唯一,不可重复 , 并且集合中的元素不能被修改,不能是可变的数据类型!因为如果集合类型中的数据可以被改变,在定义的时候,集合的元素是:1,2,3,4,5. 没有问题,但是如果把1 改为2 ,那么这

2020-05-29 22:52:56 774

原创 python小程序练习 5-7 单元

七段数码管绘制import turtle as timport timedef gap(): t.penup() t.fd(5)def drawline(draw): gap() t.pendown() if draw else t.penup() t.fd(40) gap() t.right(90) def drawDigit(n): drawline(True) if n in [2,3,4,5,6,8,9] el

2020-05-29 22:31:04 381

原创 python第三天 程序的控制 函数和代码复用

程序的控制结构程序的控制结构有: 顺序结构,分支结构,循环结构单分支结构 :可以理解为 如果xx 就yyy以简单的猜数字为例子(if True 代表始终为真, if not True 代表始终为假)guess = eval(input())if guess == 99: print("Right!")双分支:guess = eval(input())if guess == 99: print("Right!")eles: print("False")双分支的紧凑形式格式:

2020-05-26 19:49:13 720

原创 python练习小程序 1 - 4单元

温度转换#获取输入字符串str1 = input()#判断最后一位if str1[-1] in ['F','f']: #进行转换 C = (eval(str1[0:-1])-32)/1.8 #格式化输出 print("{:.2f}C".format(C))elif str1[-1] in['C','c']: F = eval(str1[0:-1])*1.8+32 print("{:.2f}F".format(F))else: print("输入

2020-05-24 16:49:33 2375 1

原创 Python第二天 基本数据类型

基本数据类型数字类型整数没有取值限制! 这个时python的数据类型的一个特点,整数没有溢出的概念。所以当使用 pow(x,y) 时,想算多大算多大python提供了4种进制表示,十进制:(正常书写),123,456二进制:(以0b或者0B开头),0b010 ,-0B101八进制:(以0O或者0o开头 ,注意,是零欧不是零零),0o123,-0o456十六进制:(以0X 或者0x 开头),0x9a,0X89浮点数带有小数点以及小数的的数字,就是浮点数。浮点数的取值范围和小数精度都存在

2020-05-22 23:00:27 2494 1

原创 Pyhton 第一天学习 基础语句, 图形绘制

什么是Python?python是一个脚本语言,与C++,Java的最大不同就是纯解释型语言。C++,Java写好的程序都需要将文件进行编译,再执行。(Java其实为混合模式,编译+解释,也就是常说的JIT优化)

2020-05-21 19:35:07 453

原创 工厂模式

生么是工厂?任何一个可以产生对象的类,都可以叫做工厂。但是工厂也分小工厂和大工厂,我们写的普通的类,去new 一个对象,那就是一个小工厂。举一个简单的例子。简单工厂class Car{ void go(){ System.out.println("车开始跑了。。。。"); }} public static void main(String[] args...

2020-03-21 20:22:57 262

原创

树与图是典型的非线性数据结构那么什么是树呢?最典型的就是书的目录了,以《漫画算法》为例(tips:好书,强推!)这就是一个树形结构,一个节点与若干个节点有父子关系。树的定义:树(tree)是n(n >= 0)个节点组成的有限集。当 n = 0 时,称为空树。在任意一个非空树中,有如下特点。1.有且仅有一个节点称为根节点。2.当 n > 1 时,区域节点可分为 m (m ...

2020-03-16 22:54:37 236

原创 策略模式

什么是策略模式?策略模式(Strategy)顾名思义,就是应对一个事情要有不同的策略。不同的策略中对应不同的方法去应对。例如诸葛亮给赵云的锦囊妙计。根据诸葛亮推测它老大哥的处境,给出不同的策略去执行。这就是策略模式。策略模式(Strategy Pattern)是一种比较简单的模式,也叫做政策模式(Policy Pattern)。其定义如下: Define a family of algo...

2020-03-15 18:16:42 258

原创 单例模式

单例模式简介单例单例,单个实例。简单来说就是在运行时,内存中有且只有一个实例存在。如何实现单例?首先既然只能由一个实例,也就是其他类或者方法中,不能调用new来获得一个实例,所以我们把构造器定义为私有!然后我们把这个实例用 getInstance()方法来获取这个实例就可以。饿汉式顾名思义,饿汉就是看到吃着就着急了,就开始干活挣饭钱了。所以在没有任何方法需要它时,它就准备好一切准备调用。...

2020-03-14 22:20:24 165

原创 二分查找 - 53 - II. 0~n-1中缺失的数字

ok,上面的测试用例还不够完全,我们再来两个,这样我们就会很快明白了。【0,1,2,4,5,6,7】; 缺少3.【1,2,3,4,5,6,7,8】缺少0.【0,1,2,3,4,5】 缺少6通过以上的测试用例我们很快就能发现,如果说一个数组的下标和值相等,缺的一定不是它,缺的是第一个!第一个下标和值不对应的那个下标,那个下标就是缺少的值。如果数组的下标和值全部都一一对应了。那么缺少的就是 ...

2020-03-13 16:21:01 315

原创 二分查找 - 53 - I. 在排序数组中查找数字 I

暴力解法思路,直接遍历到target数字下标,开始统计有多少个target,向后遍历。极其简单。二分查找思路,我认为二分查找或者三分查找也好,最重要的是简单高效以及高可读性。所以首先基于普通二分查找的想法,先找到target的值。然后对 mid 下标左右进行探测,首先先让 left 和 right 都指向 mid,然后判断right+1的下标是否等于target,如果等于,那么right向...

2020-03-13 14:33:32 117

原创 链表 - 52.两个链表的第一个公共节点

答案 -》单链表扩展

2020-03-13 13:16:43 84

原创 分治 - 51.数组中的逆序对

这道题一上来最直观的做法就是将遍历一个数字,扫描之后的所有数字,只要遇到比自己小的那就将结果进行+1。这种写法非常简单,但是复杂度相当的高。时间复杂度O(n^2).我们尝试用空间换时间。我们利用分治的思想,也就是归并排序的思路去解析这道题。首先我们把数组分解,一直分解到只有一个数字。那么单个数字和单个数字比大小,这样就很快得到了一个很小区间的逆序对的个数。例如 图中的 11 和 8 , ...

2020-03-13 13:05:54 144

原创 空间换时间 - 50.第一个只出现一次的字符

思路1:最常规的

2020-03-13 12:23:49 98

转载 动态规划 - 49.丑数

1.小根堆方法一:堆首先我们可以发现,一个丑数最基本的特征就是被2,或者被3,或者被5整除,我们逆向思维考虑的话,是不是一个数2,或者3,或者*5,就是一个丑数呢?那么这个数是是什么呢?那么这个限制就是因数只存在2,3,5,也就是这个数本身就是丑数!所以丑数 *2,*3 或者 *5,也是丑数。根据这个思想,我们已经将问题解决了一半。现在我们就需要想怎么样存储了。首先它是一个由小到大的顺...

2020-03-11 01:28:15 129

原创 滑动窗口 - 48. 最长不含重复字符的子字符串

思路:最简单的就是暴力法了,定义 left 和 rigth 两个指针,每当right向后移动时,就遍历left 到 right 中的

2020-03-09 01:56:59 207

原创 动态规划 - 47. 礼物的最大价值

思路:我们对该数组直接进行处理,不适用额外的空间进行计数。对于第一行以及第一列,我们把数字逐个累加使它变成这样1 4 52 5 16 2 1为什么呢?因为要走到grid【0】【1】的位置必定经过grid【0】【0】;而要走到grid【0】【2】 也必定经过grid【0】【1】;第一行和第一列都是这样的规律,所以第一行和第一列我们进行预处理。之后的内部,从第二行(row...

2020-03-09 01:03:49 221

原创 动态规划 - 46. 把数字翻译成字符串

思路:动态规划,就是去穷举所有的情况。首先将数字变为 char 数组,每一次传入两个下标(index1,index2)所对应的数字,我们可以讲两个数字分开,把单个数字翻译成一个字母,也可以尝试两个数字翻译成一个字母。最后当index发生越界的时候,那么就证明已经到了数组的尾部了,相当于这一种情况已经被列举出来,我们将这种情况保存在一个HashSet中,最后所有的递归结束时,HashSet的...

2020-03-06 00:43:51 154

原创 Netty网络库简介以及基本框架

Netty简介Netty是由JBOSS提供的一个java开源框架,现为 Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户、服务器端的编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化和流线...

2020-03-05 01:50:01 418

原创 数学 - 45. 把数组排成最小的数

思路:字符排序,排成最小的数,就是把小的数放到前面大的数放到后面。所以只需要对数字进行从小到大的排序然后平成字符串即可。public static String minNumber(int[] nums) { ArrayList<String> list = new ArrayList<String>(); for(int i : num...

2020-03-05 01:27:14 88

原创 多线程容器之 ConcurrentHashMap

简介ConcurrentHashMap是Java中的一个线程安全且高效的HashMap实现。平时涉及高并发如果要用map结构,那第一时间想到的就是它。从以下几个方面,我们来了解ConcurrentHashMap1)ConcurrentHashMap在JDK8里结构2)ConcurrentHashMap的put方法、szie方法等3)ConcurrentHashMap的扩容4)HashM...

2020-02-28 02:32:24 520

原创 数学 - 44.数字序列中某一位的数字

思路:锁定范围,算出具体数值,计算偏移,获得值。1.锁定范围,我们要确定当前的 n 是在1位数,2位数,还是3位数。2.计算出这个n具体所对应的值,例如10 对应10,11对应的10.3.计算出偏移,10对应的是10的第一位数字,11对应的是10 的第二位数字,所以我们要算出他是具体的第几位数字4.返回。举个例子1001。序列的前10位是0~9,这些都是1位数字,1001 >...

2020-02-27 19:06:01 224

原创 数学 - 43.从1到n整数中1出现的次数

思路:数学规律(来源编程之美)首先我们来看几个数学规律。0~10 个位出现1的次数为 1次也就是1 。0~100 十位出现1的次数为10次分别是10 11 12 13 14 15 16 17 18 19;0~1000 百位出现1的次数为100次分别是 100- 199 。现在有一个规律了,如果当前的数字的最高位数是十位,那么个位出现的次数就是这个数字有几个10 再 * 1。也就...

2020-02-27 17:05:19 609

原创 数组/动态规划 - 42.连续子数组的最大和

思路1 :数学思路,以途中的案例为例子,第一个数是-2,当前最大的子序和就是-2,如果下一个数是正数,任意的一个正数与负数相加,绝对不可能比自己大了。所以如果当前子序和为负数时,那么就可以抛弃当前的子序。以下一个数字为子序的起始。每一次进行相加之后,都要判断并保存子序和的最大值,例如我们默认第一次的子序和最大值就为数组的第一个数,后面再遍历加和的过程中,如果出现和sum,比上一个最大值大,那么...

2020-02-27 01:38:33 100

原创 堆/优先级队列 - 41. 数据流中的中位数

思路:两个堆,一个最大堆一个最小堆。最大堆保存小的数,最小堆保存大的数。形象的来个图()

2020-02-25 01:39:10 180

原创

什么是堆堆实际上就是一颗二叉树,而这颗二叉树的特点就是父节点一定比子节点都大或者小。堆分为大根堆或者小根堆。大根堆 :根节点是整颗树的最大值小根堆:根节点是整棵树的最小值树的父亲与孩子节点的关系:父节点为 i ,左孩子为2 * i ; 右孩子为 2 * i +1;实现大根堆:在这里插入代码片...

2020-02-24 00:59:07 98

原创 排序与堆 - 40.最小的k个数

思路:排序,分割数组即可。//实现中练了练手写堆排序,实际上可以使用Arrays.Sort(); public static int[] getLeastNumbers(int[] arr, int k) {// Arrays.sort(arr);// return Arrays.copyOfRange(arr,0,k); //堆排序小根堆丢...

2020-02-20 18:17:27 105

原创 数组- 39.数组中出现次数超过一半的数字

这个题的思路非常简单:乍一看非常复杂似乎要遍历查找,实际上完全没有必要,大家想想一下,一个数字的出现次数都超过数组长度一半了,只要对它进行排序,那么中间的字符,必定是它。class Solution { public int majorityElement(int[] nums) { Arrays.sort(nums); return nums[nums...

2020-02-20 16:45:26 70

原创 全排列 - 38. 字符串的排列

思路:全排列的算法思想:递归剪枝。把一个数组分为两段,一段是第一个元素,一段是全部元素。首先要确定第一个元素,而第一个元素可以实待排列的数组中的任意值。而除了第一个元素之外,的其余元素,做全排列。讲解以下为什么要这么做所以其实全排列就是做了两件事第一把所有数组中的元素与第一个交换,剩下的数组做全排列,如果没有元素可以全排列了。那么当前的一种情况,就诞生了,把它加入到结果集中。如果有重...

2020-02-20 16:22:27 117

原创 线程通信 与 Condition接口

线程通信生产者于消费者模型的实现线程通信的方式

2020-02-20 01:29:29 119

原创 Lock接口 与 实现子类ReentrantLock

浅谈Lock接口在实现线程同步时,大多情况下使用的是Synchronized关键字实现,但是Synchronized的锁太过封闭,获得锁和释放锁都是系统自动的。所以为了更灵活的操作,在JDK1.5版本之后,就诞生了Lock接口以及其实现类。lock接口也是对资源上锁的一种工具,它不同于Synchronized的隐式上锁与解锁,lock接口中的获取锁和释放锁,是需要手动去操作的所以我们们了解一...

2020-02-19 20:45:22 350

Python面向过程.xmind

这是我通过中国大学MOOC 嵩天老师课程学习之后进行的脑图总结,在这里并没有第三方库的介绍以及扩展,更多的是基础语法,以及三个常用的标准库的使用说明,以及简单的知识点,更多的是希望在复习的时候,或者是在学习的时候能够帮助到大家

2020-06-02

空空如也

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

TA关注的人

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