加入收藏 | 设为首页 | 会员中心 | 我要投稿 淮安站长网 (https://www.0517zz.com.cn/)- 数据开发、人脸识别、智能机器人、图像处理、语音技术!
当前位置: 首页 > 站长资讯 > 动态 > 正文

读博这段旅程的一些感悟

发布时间:2021-01-30 10:17:06 所属栏目:动态 来源:互联网
导读:我确定您知道Python的交互式外壳,这是运行Python的好方法。但是您也知道IPython shell吗?如果您经常使用交互式外壳程序,但您不了解IPython,则应该检查一下! 增强的IPython shell提供的一些功能包括: 全面的对象自

我确定您知道Python的交互式外壳,这是运行Python的好方法。但是您也知道IPython shell吗?如果您经常使用交互式外壳程序,但您不了解IPython,则应该检查一下!

增强的IPython shell提供的一些功能包括:

  • 全面的对象自省。
  • 输入历史记录,跨会话持续存在。
  • 在具有自动生成的引用的会话期间缓存输出结果。
  • 制表符补全,默认情况下支持python变量和关键字,文件名和函数关键字的补全。
  • “魔术”命令,用于控制环境并执行许多与IPython或操作系统相关的任务。
  • 会话记录和重新加载。
  • 对pdb调试器和Python分析器的集成访问。
  • IPython的一个鲜为人知的功能:它的体系结构还允许并行和分布式计算。

IPython是Jupyter Notebook的核心,它是一个开放源代码Web应用程序,可让您创建和共享包含实时代码,方程式,可视化效果和叙述文本的文档。

13. Homeassistant

每个线程都应该有它自己的 SqlSession 实例,SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是 请求(request)或方法(method) 作用域。 绝对不能将 SqlSession 实例的引用放在一个类的静态域,甚至一个类的实例变量也不行。 也绝不能将 SqlSession 实例的引用放在任何类型的托管作用域中,比如 Servlet 框架中的 HttpSession。 如果你现在正在使用一种 Web 框架,考虑将 SqlSession 放在一个和 HTTP 请求相似的作用域中。 换句话说,每次收到 HTTP 请求,就可以打开一个 SqlSession,返回一个响应后,就关闭它。 这个关闭操作很重要,为了确保每次都能执行关闭操作,你应该把这个关闭操作放到 finally 块中。
 

对于客户端应用层面来说,熟悉 sqlSession 的 API 基本就可以任意操作数据库了,不过我们希望想进一步了解 sqlSession 内部是如何执行 sql 呢?其实 sqlSession 是 Mybatis 中用于和数据库交互的 顶层类 ,通常将它与本地线程 ThreadLocal 绑定,一个会话使用一个 SqlSession,并且在使用完毕之后进行 关闭 。

之所以称 SqlSession 为数据交互的 顶层类 ,是它其实没有完成实质的数据库操作。根据之前的架构设计流程我们已经清晰的知道,SqlSession 对数据库的操作都会转发给具体的执行器 Executor 来完成 ;当然执行器也是甩手掌柜,执行器 Executor 会再分派给语句处理器 StatementHandler ,语句处理器会结合参数处理器 ParameterHandler ,共同完成最终的数据库执行处理操作(底层还是封装了 JDBC Statement 操作)。并在每个语句处理器 StatementHandler 处理完成数据库操作之后, 通过结果结处理器 ResultSetHandler 以及类型处理器 TypeHandler ,对底层 JDBC 返回的结果集进行映射封装,最终才返回预期的封装对象。

关注以下图示 sqlSession 红色高亮位置,详细描述了会话的实际执行路径:

(编辑:淮安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读