自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 问答 (6)
  • 收藏
  • 关注

原创 Nio入门示例(服务器端&客户端)

Nio入门示例简单的nio模型如图所示:服务端代码示例: //创建selector Selector selector = Selector.open(); //创建一个channel并设置为非阻塞的 ServerSocketChannel socketChannel = ServerSocketChannel.open(); socketChannel.configureBlocking(false); //绑定端口

2021-04-27 11:03:32 243

原创 java中的wait()和sleep()

前言本篇文章记录了java多线程中wait()、sleep()的使用方式和两者之间的区别。一、线程的五种状态线程的状态有五种,分别是:初始状态、就绪状态、运行状态、阻塞状态、死亡状态。它们之间的关系如图所示:二、wait()wait()是属于Object类的一个方法,所以任何对象都可以使用这个方法,它的作用是使当前线程由运行状态进入阻塞状态,当被唤醒或经过规定的时间后再进入就绪状态。这个方法必须在有锁的代码块中使用,要不然的话会出现IllegalMonitorStateExce.

2021-03-03 15:47:32 674 1

原创 MySQL中的group by的使用总结

个人理解在使用数据库查询语句时经常会有分组的应用场景,这时就要用到group by关键字,比如,想在一张学生表中查询年龄最大的男生和女生。个人理解的分组是:按照一个或多个字段将一张表分为多个组,并且之后的操作是按照组来进行的,不再是整张表了(如果不妥还请执教)。按照组使用max()函数来求最大年龄时得到的就是每一组中的最大年龄。分组也具有局限性当一条语句使用group by时,其select后边的字段必须是聚合函数或者group by中使用到的字段。比如下边这个场景:一张学生表,一张成绩表,成绩表

2021-02-06 10:35:41 623

原创 数据类型搞错导致MySQL索引失效

数据类型搞错导致MySQL索引失效工作中遇到了一次索引失效的情况,特此记录下来。SQL语句:select *from t where SN = 43000899 and UpdateTime < '2021-01-20 10:00:00' and UpdateTime > '2021-01-29 10:00:00';其中SN和UpdateTime是一个组合索引,按照正常的所及来说应该是用到了这个组合索引,并且是一个range级别的,但是在程序运行时发现这条sql特别慢,使

2021-01-29 16:35:53 202

原创 SpringBoot中读取application.yml中的内容

SpringBoot中读取application.yml中的内容springboot中读取application中的数据是非常简单的,只需创建一个bean,在bean上添加几个注解,然后再定义好对应的属性即可。1 定义数据在application中定义数据时不同的文件格式对应不同的数据定义格式,在这里只记录.yml类型的配置文件。创建一个新的配置文件,取名为application-test.yml。特别注意的是:配置文件的命名规则是application+"-"+“后缀名",前面的applicati

2021-01-27 11:22:25 1172 3

原创 HashMap的迭代器遍历

HashMap的存储结构为了快速的查找和增删元素,java中的map采用的是数组+链表的数据结构来存储数据的。所以在遍历map的时候无法直接通过下标来遍历,而是需要使用迭代器的方式。基于这种数组+链表的存储结构,HashMap中有三种遍历方式,分别是:KeySet:通过keySet()方法获取一个KeySet集合,这个类里封装的是map的key。Values:通过values()方法获取Values集合,这个类里封装的是map的值。EntrySet():通过entrySet()获取EnterSe

2021-01-22 11:36:09 2686

原创 python里面的局部变量和闭包

局部变量局部变量指的是一个变量只能在其作用域内起到作用,当区域内的代码执行完毕后,这个变量就会销毁。例如:a = 10def local(): a = 11 print(a)local()print(a)这段代码会一次输出11,10其中a = 10是全局变量,而函数内的a = 11为局部变量。a = 11的作用域仅限于loca()函数。可是当我们调换一下a = 11和print语句的位置时,就会出现a未定义的错误。例:a = 10def local(): print(a)

2020-05-22 21:02:32 260

原创 python解决股票问题

股票问题股票问题指的是通过买卖股票来获得最大的收益,在力扣上有全套的股票问题题目。股票问题连接-https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/第一类股票问题给定一个数组,下标是日期,存储的数据是当天的股票价格。现在要求求出怎样买卖股票才能获得最大收益,其中只能进行一次买卖操作,且卖出日期需在买入日期之后。如:[3,1,5,7,4,2,8],最大的收益是在第0天买入,第6天卖出,总共赚取8-1=7收益。有两种方法,一种是

2020-05-12 20:59:04 711

原创 二叉树的前序遍历、中序遍历、后序遍历

Python代码实现二叉树以下的实现思想是借鉴的尚硅谷-韩顺平数据结构与算法的java实现,韩顺平老师视频地址-https://www.bilibili.com/video/BV1E4411H73v?p=15大概的思路是用两个类来实现,一个类是实现结点的,另一个类是操作节点的类。把对二叉树的三种遍历方式放到了结点类种。以下是实现代码:class Node: def __init__(self,id,name): #假设节点中存储的是id, name, 左子节点, 右子节点四个信息

2020-05-11 20:43:43 1234

原创 常见的排序算法(python实现)

排序算法有很多种,如冒泡排序、选择排序、快速排序等。冒泡排序(升序)冒泡排序是最基础的排序算法,他的基本思想就是:有两层循环,第一层循环n次,第二次循环n-i-1次,在第二次循环中比较第j个元素和第j+1个元素的大小,如果第j个元素大于第j+1那么这两个元素交换位置。这样的话每进行一次内循环就会将前n-i个元素的最大值放到n-i处。以下是冒泡排序的图解:以下是python代码实现:def bubble(arr): n = len(arr) for i in range(n):

2020-05-10 09:54:47 215

原创 哈夫曼树

哈夫曼树哈夫曼树是带权最小路径树。所有的需要构建哈夫曼树的元素都是只能作为叶子节点。根节点:二叉树的起始节点。叶子节点:不包含左子节点和右子节点的节点。权值:从根节点到达某一节点的花费。构建哈夫曼树例:哈夫曼编码,也叫霍夫曼编码。有以下一组数据:假设一套密码由以上几个字母组成,每个字母的出现频率如上所示,现要求用0,1两个数字组成来表示每个字母,怎样表示才能用最少的数字来表示。第一步:从小到大排序第二步:构建哈夫曼树,先取出出现频率最小的两个字母,c和a。将这两个字母作为叶子节点,

2020-05-09 10:22:15 192

空空如也

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

TA关注的人

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