<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lilianggui的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lilianggui</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lilianggui]]></copyright><item><title><![CDATA[【LangGraph】05-LangGraph 持久化模式]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/51154068</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/51154068</guid><author>lilianggui</author><pubDate>Sat, 18 Apr 2026 13:49:06 +0800</pubDate><description><![CDATA[LangGraph 内置的持久层会将每个执行的步骤状态保存在存储介质中，支持三种持久化模式，你可以根据应用程序的需求平衡性能和数据的一致性。更高的一致性往往意味着更大的性能开销。]]></description><category></category></item><item><title><![CDATA[【LangGraph】04-LangGraph之checkpointer]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/149094448</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/149094448</guid><author>lilianggui</author><pubDate>Sat, 18 Apr 2026 12:31:25 +0800</pubDate><description><![CDATA[LangGraph 内置了一个持久层，可以将图状态保存为检查点。当您使用检查点编译图时，执行的每一步的图状态都会保存成快照，并将其组织成线程。checkpoint非常重要，它是LangGraph中人机协作、对话记忆、中断恢复、时间旅行等核心功能的基础。]]></description><category></category></item><item><title><![CDATA[【LangGraph】03-LangGraph之state]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/160260976</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/160260976</guid><author>lilianggui</author><pubDate>Fri, 17 Apr 2026 23:37:42 +0800</pubDate><description><![CDATA[State通常用于保存当前会话中的消息，也可以自定义State用来存储额外的信息字段，State在节点之间传递，可以在节点中访问和修改State，此外LangGraph中的短期记忆通常使用State实现。]]></description><category></category></item><item><title><![CDATA[【LangGraph】02-LangGraph条件边的使用]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/160257218</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/160257218</guid><author>lilianggui</author><pubDate>Fri, 17 Apr 2026 20:21:30 +0800</pubDate><description><![CDATA[今天给大家分享一下LangGraph中条件边的使用，条件边是LangGraph中非常重要的概念，它允许你根据大模型返回的推理结果或上下文中的特定信息决定跳到不同的节点，或者是直接结束返回，让你可以更好的控制你的LangGraph程序的走向来完成复杂的任务。]]></description><category></category></item><item><title><![CDATA[【LangGraph】01-第一个LangGraph程序]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/159396235</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/159396235</guid><author>lilianggui</author><pubDate>Fri, 17 Apr 2026 17:25:36 +0800</pubDate><description><![CDATA[今天给大家带来一个超级简单的LangGraph程序，希望可以帮助大家加深对LangGraph中的图（Graph）、节点（Node）、边（Edge）等概念的理解。]]></description><category></category></item><item><title><![CDATA[Java Servlet相关面试题]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/130859320</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/130859320</guid><author>lilianggui</author><pubDate>Fri, 26 May 2023 16:42:19 +0800</pubDate><description><![CDATA[Servlet是运行在java服务器中的小型Java程序。作用：接收用户请求，并对请求作出处理，将处理结果相应给客户端。Servlet是JavaWeb三大组件（Servlet、过滤器，监听器 ）之一，它属于动态资源。Servlet的作用是处理请求，服务器（Tomcat等）会把接收到的请求交给Servlet来处理，在Servlet中通常要完成以下三步：接收请求、处理请求、完成响应。]]></description><category></category></item><item><title><![CDATA[Java Web 编写第一个Servlet程序全过程]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/130885170</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/130885170</guid><author>lilianggui</author><pubDate>Fri, 26 May 2023 14:23:26 +0800</pubDate><description><![CDATA[idea会自动配置好项目的路径和web.xml的位置，检查一下是否正确。idea会自动配置好，如下，检查是否正确；点击确定，至此项目配置完成。选择第六步创建好的Artifact作为发布内容。配置你电脑上的Tomcat路径。创建Artifact。]]></description><category></category></item><item><title><![CDATA[python练习题19]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/112549385</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/112549385</guid><author>lilianggui</author><pubDate>Tue, 12 Jan 2021 22:58:29 +0800</pubDate><description><![CDATA[模拟按顺序下载文件

	
from random import randint
from time import time, sleep


def download_file(filename):
    print('开始下载%s...' % filename)
    time_to_download = randint(5, 10)
    sleep(time_to_download)
    print('%s下载完成! 耗费了%d秒' % (filename, time_to_downlo..]]></description><category></category></item><item><title><![CDATA[python练习题17]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/112405682</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/112405682</guid><author>lilianggui</author><pubDate>Sat, 09 Jan 2021 22:33:31 +0800</pubDate><description><![CDATA[写文件
	
if __name__ == '__main__':

    with open('/Users/lilianggui/Desktop/aa.txt', mode='w') as f:
        f.write('hello!')

	总结：使用写模式‘w’，写方法write()；w模式会覆盖文件原有的内容，如果想要追加内容使用追加模式‘a’。
	
	读写二进制文件
	
if __name__ == '__main__':

    with open('/Users/lilianggu]]></description><category></category></item><item><title><![CDATA[python练习题16]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/112403863</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/112403863</guid><author>lilianggui</author><pubDate>Sat, 09 Jan 2021 20:26:34 +0800</pubDate><description><![CDATA[读取文件
	

if __name__ == '__main__':
    f = open('m1.py', 'r', encoding='utf-8')
    print(f.read())
    f.close()

	总结：第一个参数是文件的路径，第二个参数是指定打开的操作模式，r表示读操作，除了读操作外还有写操作（w）、追加（a）、二进制模式（b）等
	
	
	逐行读取文件

	
if __name__ == '__main__':
    with open('m1.py', mode=']]></description><category></category></item><item><title><![CDATA[python练习题15]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/112341564</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/112341564</guid><author>lilianggui</author><pubDate>Thu, 07 Jan 2021 22:37:07 +0800</pubDate><description><![CDATA[使用tkinter做一个简单的GUI应用
	
import tkinter
import tkinter.messagebox


def main():
    flag = True

    # 修改标签上的文字
    def change_label_text():
        nonlocal flag
        flag = not flag
        color, msg = ('red', 'Hello, world!')\
            if flag else]]></description><category></category></item><item><title><![CDATA[python练习题14]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/112299545</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/112299545</guid><author>lilianggui</author><pubDate>Wed, 06 Jan 2021 22:49:44 +0800</pubDate><description><![CDATA[继承和多态
	
class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def do_something(self):
        if self.age &gt; 18:
            print('正在玩刺激的游戏')
        else:
            print('只能玩捉迷藏和过家家')


class S]]></description><category></category></item><item><title><![CDATA[python练习题13]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/112254662</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/112254662</guid><author>lilianggui</author><pubDate>Tue, 05 Jan 2021 23:19:51 +0800</pubDate><description><![CDATA[@property装饰器

	
class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age

    # getter方法
    @property
    def name(self):
        return self._name

    @property
    def age(self):
        return self._age

   ..]]></description><category></category></item><item><title><![CDATA[python练习题12]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/112134147</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/112134147</guid><author>lilianggui</author><pubDate>Sun, 03 Jan 2021 15:03:30 +0800</pubDate><description><![CDATA[定义一个类描述数字时钟
	

from time import sleep

class Clock(object):
    def __init__(self, hour, minute, second):
        self.hour = hour
        self.minute = minute
        self.second = second

    def run(self):
        self.second += 1
        if self.second]]></description><category></category></item><item><title><![CDATA[python练习题11]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/112133747</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/112133747</guid><author>lilianggui</author><pubDate>Sun, 03 Jan 2021 13:22:41 +0800</pubDate><description><![CDATA[类的定义
	
class Student(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def study(self, curse_name):
        print('%s正在学习%s' % (self.name, curse_name))

    def watch_movie(self, movie):
        if self.age &l]]></description><category></category></item><item><title><![CDATA[python练习题10]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/112133117</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/112133117</guid><author>lilianggui</author><pubDate>Sun, 03 Jan 2021 12:26:58 +0800</pubDate><description><![CDATA[获取文件名后缀
	
def get_suffix(file_name):
    pos = file_name.rfind('.')
    if 0 &lt; pos &lt; len(file_name) - 1:
        return file_name[pos:]
    else:
        return ''

print(get_suffix('ddd.txt'))

	总结：0 &lt; pos &lt; len(file_name) - 1是一种比较新奇的写法；截取字符串时]]></description><category></category></item><item><title><![CDATA[python练习题9]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/112130302</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/112130302</guid><author>lilianggui</author><pubDate>Sun, 03 Jan 2021 00:14:56 +0800</pubDate><description><![CDATA[一、字符串常用处理函数

获取字符串长度
	分割字符串
	获取字符串首字母大写的拷贝
	获取每个单词首字母大写的拷贝
	查找字符串所在的位置
	截取字符串
	判断字符串是否以某字符串开头
	判断字符串是否由数字组成
	判断字符串是否由字母组成
	判断字符串是否由数字和字母组成

a = 'hello world'
# 获取字符串的长度
print(len(a))
# 分割字符串
print(a.split(' '))
# 获取首字母大写的拷贝
print(a.capitalize())
# 获取单词首字母大]]></description><category></category></item><item><title><![CDATA[python练习题8]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/112101279</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/112101279</guid><author>lilianggui</author><pubDate>Sat, 02 Jan 2021 16:02:30 +0800</pubDate><description><![CDATA[一、模块

python一个文件就是一个模块，模块中可以有许多变量和函数，模块中没有重载的概念，函数不能重名，如果重名，后面的函数会覆盖前面的函数。

如定义模块m1，模块中有a、b两个变量和aa、bb两个函数



二、模块的调用

如何在另一个模块中调用模块刚才定义的模块中的函数和变量呢，python提供了两种方式

1、from module import xx从某模块引入xx变量或者函数（可以用*表示引入模块中的所有内容）


from m1 import aa

aa()



from m1 i]]></description><category></category></item><item><title><![CDATA[python练习题7]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/112099362</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/112099362</guid><author>lilianggui</author><pubDate>Sat, 02 Jan 2021 15:43:32 +0800</pubDate><description><![CDATA[一、函数定义与调用


def hello():
    print('hello')

hello()

总结：使用关键字def定义函数；同一个文件中，函数必须定义在调用的前面。



二、函数参数


def hello(name):
    print('hello, %s' % name)

hello('Jim')

总结：函数定义需要传递参数时，调用时必须传递参数，否则程序会出现异常



三、参数默认值


def hello(name='Tom'):
    print('hello, ..]]></description><category></category></item><item><title><![CDATA[python练习题6]]></title><link>https://blog.youkuaiyun.com/lilianggui/article/details/112095868</link><guid>https://blog.youkuaiyun.com/lilianggui/article/details/112095868</guid><author>lilianggui</author><pubDate>Sat, 02 Jan 2021 14:47:58 +0800</pubDate><description><![CDATA[一、找出所有的水仙花数

是一个3位数，该数字每个位上数字的立方之和正好等于它本身


for i in range(100, 1000):
    g = i % 10
    s = i // 10 % 10
    b = i // 100
    if g ** 3 + s ** 3 + b ** 3 == i:
        print(i)



总结：//是python整除向下取整；%是取余数；**是次方运算符



二、正整数反转

输入一个整数，将该整数反转并输出。如输入12345，输.]]></description><category></category></item></channel></rss>