<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_41600708的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_41600708</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_41600708]]></copyright><item><title><![CDATA[java中的异常(Exception)]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/116213438</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/116213438</guid><author>qq_41600708</author><pubDate>Wed, 28 Apr 2021 00:25:55 +0800</pubDate><description><![CDATA[异常

错误的情况下，java中会阻止当前方法或作用域的情况，称之为异常

分类


Throwable 是可抛出异常的接口，一般由虚拟机抛出，或者运行的时候由持续抛出


Error: 持续无法处理的错误，一般是虚拟机的错误，通常有Virtual MachineError(虚拟机运行错误),当jvm耗完出现OutOfMemoryError


Exception: 持续本身可捕获并处理的异常
运行时异常(不受检异常): RuntimeException 白哦是JVM运行期间可能出现的错误，编译器不会检查此]]></description><category></category></item><item><title><![CDATA[java枚举的使用]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/116207992</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/116207992</guid><author>qq_41600708</author><pubDate>Tue, 27 Apr 2021 19:16:26 +0800</pubDate><description><![CDATA[枚举类型

Java中的枚举类型，可以用来替换常量的声明
默认在里面是计数的，从0开始，一直到你定义的多少个变量的n-1


以前的做法
private fianl int red = 1;
private final int yello = 2;



现在的做法
public enum Color{
    RED,YELLOW
}






简单使用
enum Color{
    RED,YELLOW,WHITE
}
class Demo{
    main(){
        // 直接使用，]]></description><category></category></item><item><title><![CDATA[图的最短路径算法]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/115866865</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/115866865</guid><author>qq_41600708</author><pubDate>Mon, 19 Apr 2021 15:59:22 +0800</pubDate><description><![CDATA[图的最短路径算法
dfs

使用dfs遍历计算最短路径

void dfs(int cur,int dst){
    //当前的路劲大于之前的最短路劲就不用走了
    if(minpath &lt; dst) return;
    //临界条件，当走到终点n
    if(cur == en){
        if(minpath &gt; dst){
            minpath = dst;
            return;
        }
    }
    for(int]]></description><category></category></item><item><title><![CDATA[grep的简单使用]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/114067616</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/114067616</guid><author>qq_41600708</author><pubDate>Thu, 25 Feb 2021 11:07:08 +0800</pubDate><description><![CDATA[Grep

在file…文件中找到能够匹配pattern字符串的行


基本格式

grep 要匹配的符号 要进行匹配的文件
grep pattern file...


pattern 支持正则表达式

^ 匹配开头
$ 匹配结尾
[a-z] 匹配a-z字符集
\d 匹配一个数字
. 匹配任意字符一次
量词

* 匹配前面的字符任意次
? 匹配前面的字符0次或1次
{n,m} 匹配前面的字符n到m次,比如{1,3}则最少匹配1次，最多匹配3次




File 可以是一个文件也可以多个文件

一个文件: ]]></description><category></category></item><item><title><![CDATA[cron表达式]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/113992599</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/113992599</guid><author>qq_41600708</author><pubDate>Tue, 23 Feb 2021 15:47:23 +0800</pubDate><description><![CDATA[cron表达式


结构

从左到右: 秒 分  小时  月份中的日期  月份 星期中的日期  年份



各字段含义




字段
允许值
允许的特殊字符




秒
0-59
, - * /


分
0-59
, - * /


小时
0-23
, - * /


日期(DayofMonth)
1-31
, - * / L W C


月份
1-12或JAN-DEC
, - * /


星期(DayofWeek)
1-7或SUN-SAT(1-SUN)
, - * / L C #


年(可选，留空)(Y]]></description><category></category></item><item><title><![CDATA[利用后缀表达式实现一个简单的计算器]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/113878657</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/113878657</guid><author>qq_41600708</author><pubDate>Sat, 20 Feb 2021 10:53:25 +0800</pubDate><description><![CDATA[前缀表达式

运算符在数字的前面，

1 + (2 + 3) * 4 - 5 (中缀)
- + 1 * + 2 3 4 5  (前缀)


前缀表达式的计算方法和后缀表达式类似，只是变成了从右往左扫描

中缀表达式

运算符在中间，运算时需要考虑运算符优先级

1+2*3-5
要先算2*3....

后缀表达式

运算符在数字的后面，运算时不考虑优先级，只需要遇到符号，就把他前面的两个数字进行运算就好了
例如: a b c + +    即: a + (b + c)

1 + (2 + 3) * 4 - 5]]></description><category></category></item><item><title><![CDATA[git简单使用]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/111511504</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/111511504</guid><author>qq_41600708</author><pubDate>Tue, 22 Dec 2020 10:32:59 +0800</pubDate><description><![CDATA[简单使用

创建新仓库

git init


克隆仓库

git clone /path/to/repository
//远程
git clone username@host:/path/to/repository


添加与提交

//添加到缓存区
git add &lt;filename&gt; 
git add *
//提交改动
git commit -m "提交信息"
//此时已经提交到HEAD，但是还没有到你的远程仓库


推送改动

//连接到远程服务器
git remote add orig]]></description><category></category></item><item><title><![CDATA[归并排序，Python实现]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/111245898</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/111245898</guid><author>qq_41600708</author><pubDate>Wed, 16 Dec 2020 09:40:35 +0800</pubDate><description><![CDATA[归并排序

归并排序的思路是先把列表分为多个（这里分为2个），然后分别对这两个子列表进行排序，当两个子列表有序之后，把他们再合并起来，这样结果就也是有序的了

#python3代码

#归并排序
def my_sort(arr,l,r):
    if r - l &lt;= 1:
        return arr[l:r]
    mid = l + (r-l)//2

    def hebing(l,r):
        '''
        合并
        '''
        re]]></description><category></category></item><item><title><![CDATA[python实现最大堆]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/110918308</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/110918308</guid><author>qq_41600708</author><pubDate>Wed, 09 Dec 2020 10:57:38 +0800</pubDate><description><![CDATA[python实现最大堆

堆是利用的完全二叉树的性质，并且利用数组来实现的一种特殊数据结构

堆的应用场景

堆排序
优先级队列
高性能定时器
取中位数

实现堆的关键

堆的维持(从上到下，从下到上)
压堆
获得堆顶

具体实现代码
class myHeap(object):
    '''
    max heap
    '''
    def __init__(self):
        self.heap = []

    def add(self,item):
        self.he]]></description><category></category></item><item><title><![CDATA[使用快速排序对链表进行排序]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/109640242</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/109640242</guid><author>qq_41600708</author><pubDate>Thu, 12 Nov 2020 11:28:21 +0800</pubDate><description><![CDATA[使用快速排序对链表进行排序


本文代码使用python3语法





#链表节点
class Node():
    def __init__(self,val):
        self.val = val
        self.prev = None
        self.next = None

#链表
class LinkedList(object):
    def __init__(self):
        self.head = Node(-1)

    #添加
    .]]></description><category></category></item><item><title><![CDATA[http协议]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/108657744</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/108657744</guid><author>qq_41600708</author><pubDate>Mon, 21 Sep 2020 23:20:52 +0800</pubDate><description><![CDATA[http协议
当我们在浏览器访问网站的时候 ，我们

]]></description><category></category></item><item><title><![CDATA[python3列表推导式从入门到精通]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/108632644</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/108632644</guid><author>qq_41600708</author><pubDate>Thu, 17 Sep 2020 00:24:29 +0800</pubDate><description><![CDATA[列表推导式

列表推导式是python3中的一个语法糖可用于快速迭代一个可迭代对象并将结果存储在列表中

#基本语法
#iterable是可迭代对象，即可以是list，set之类的序列也可以是实现了__iter__的类
#var用于保存每次从中取到的元素
[var for var in iterable]

#例子,把0到9放到列表中
a = [var for var in range(10)]

#输出:a=[0,1,2,3,4,5,6,7,8,9]
#等效于下面的for语法
a = []
for i i]]></description><category></category></item><item><title><![CDATA[用python写一个学生管理系统]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/107445207</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/107445207</guid><author>qq_41600708</author><pubDate>Sun, 19 Jul 2020 15:07:39 +0800</pubDate><description><![CDATA[学生管理系统
相信大家学各种语言的时候，练习总是会写各种管理系统吧，管理系统主要有对数据的增删查改操作，原理不难，适合作为练手的小程序
数据的结构
要保存数据就需要数据结构，比如c里面的结构体啊，python里面的列表，字典，还有类都是常用的数据类型
在这里，我使用了链表来作为学生数据的数据结构,
即 Node类 和 Student_LinkList类，来实现链表
数据的持久化
我们在程序中产生的数据是保存在内存中的，程序一旦退出，下次就不能恢复此次的数据了，因此需要把内存种的数据，保存到文件或数据库中，存]]></description><category></category></item><item><title><![CDATA[用python编写一个vim目录管理插件]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/106899452</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/106899452</guid><author>qq_41600708</author><pubDate>Mon, 22 Jun 2020 12:32:34 +0800</pubDate><description><![CDATA[vim的python接口




命令
作用
实例




:py3 {stat}
执行一条python语句
:py3fprint(‘hello world’)


:py3f {file}
执行一个python模块
:py3f test.py


vim提供给python的模块–&gt;vim模块

即在python中可以 import vim 然后使用该模块操作vim

vim.current对象
表示vim当前所在
其中提供了如下属性:
line      #当前所在行
buffer      #当前]]></description><category></category></item><item><title><![CDATA[利用pickle序列化，进行socket通信]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/106865547</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/106865547</guid><author>qq_41600708</author><pubDate>Fri, 19 Jun 2020 23:37:58 +0800</pubDate><description><![CDATA[socket通信
socket通信只能传输二进制数据，每次接受到数据，都需要进行字符串的切割，判断之类的操作。
于是，想到了使用pickle模块提供的序列化和反序列化的功能，来传输一个对象，比如字典。
序列化和反序列化
就是把python中的对象，按照特定的格式，转换为二进制数据，写入到文件中
反序列化
反序列化，则相反，从文件中读取二进制数据，转换为python中的对象
python中大部分的对象都可以序列号，但是序列化只会保留实例属性哦
序列化和json有什么区别
json:按照特定的格式(javasc]]></description><category></category></item><item><title><![CDATA[python每日小程序5 用python实现一个shell]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/106842685</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/106842685</guid><author>qq_41600708</author><pubDate>Thu, 18 Jun 2020 20:34:10 +0800</pubDate><description><![CDATA[原理

在linux中可以使用cd ls touch mkdir等命令快速的对目录和文件进行操作，python标准库中提供了对路径的操作模块，我们可以用它来模拟实现linux终端的部分功能

使用的模块

pathlib

截图

代码

函数都写了注释,不明白的可以留言或私聊

from pathlib import *

class myShell(object):
    '''
    实现关于文件有关的操作
    cd ls pwd 
    touch
    mkdir 

    '''
]]></description><category></category></item><item><title><![CDATA[python小程序4 秒表]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/106819481</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/106819481</guid><author>qq_41600708</author><pubDate>Wed, 17 Jun 2020 22:09:22 +0800</pubDate><description><![CDATA[秒表

秒为 0-59 循环
分钟和小时都为 0-12 循环出现
秒变量每一秒钟进行加一，如果秒变量为59则下一次分钟加一，如果分钟为59下一次，小时数加一

截图

实现
def date():
    '''
    利用itertools.cycle迭代器，实现时间计数
    '''
    hour,minutes,seconds = itertools.cycle(range(12)),itertools.cycle(range(60)),itertools.cycle(range(60))
 ]]></description><category></category></item><item><title><![CDATA[python每日小程序3 命令行绘制棋盘]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/106819366</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/106819366</guid><author>qq_41600708</author><pubDate>Wed, 17 Jun 2020 22:05:17 +0800</pubDate><description><![CDATA[绘制棋盘

利用字符串在命令行中打印出一个棋盘，可以用于实现五子棋，四连环游戏等

截图

实现1
def qipan():
    #棋盘的参数
    rows,columns = 4,4
    data = [[-1 for i in range(columns)] for j in range(rows)]
    #棋盘格子的具体位置
    #data[0] = [1,0,0,1]
    data[1] = [0,1,1,0]
    #data[2] = [1,0,1,0]
    #da]]></description><category></category></item><item><title><![CDATA[排序算法 python3 冒泡 选择 插入 希尔 归并 快排 堆排序 计数 桶排序 基数排序]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/106713529</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/106713529</guid><author>qq_41600708</author><pubDate>Fri, 12 Jun 2020 12:55:07 +0800</pubDate><description><![CDATA[冒泡排序
def mp_sort(arr):
    '''
    冒泡排序
    '''
    for i in range(0,len(arr)-1):
        for j in range(0,len(arr)-1-i):
            if arr[j] &gt; arr[j+1]:
                arr[j],arr[j+1] = arr[j+1],arr[j]

选择排序
def sel_sort(arr):
    '''
    选择排序
    ']]></description><category></category></item><item><title><![CDATA[python每日小程序2  简易聊天室_客户端]]></title><link>https://blog.youkuaiyun.com/qq_41600708/article/details/106676930</link><guid>https://blog.youkuaiyun.com/qq_41600708/article/details/106676930</guid><author>qq_41600708</author><pubDate>Wed, 10 Jun 2020 22:53:55 +0800</pubDate><description><![CDATA[原理

见上一篇，服务端的博文

客户端的代码
from socket import *
import threading
import time
import atexit

class Client(object):
    def __init__(self):
        a = input('请输入用户名:')
        self.name = a
        #可以设置需要的用户的信息

    def getname(self):
        return self.name]]></description><category></category></item></channel></rss>