Python2编码问题 发表于 2019-10-24 更新于 2021-03-15 分类于 Python 最近工作的老项目使用的是 Python2,在处理中文的时候,遇到了一些编码错误,在这里总结一下。 在 Python2 中,一个字符串可能为 str 或者 unicode 。 123456a = '你好'type(a) # 输出 <type 'str'>repr(a) # 输出 "'\\xe4\\xbd\\xa0\\xe5\\xa5\\xbd'"a = u'你好'type(a) # 输出 <type 'unicode'>repr(a) # 输出 "u'\\u4f60\\u597d'" 阅读全文 »
Python中maketrans源码记录 发表于 2019-10-14 更新于 2021-03-15 分类于 Python 首先举个例子123456789101112from string import maketransa = 'abcde'b = '12345'trantab = maketrans(a, b)str = 'abcdefag'print str.translate(trantab)# 输出 12345f1g 阅读全文 »
Python抽象abc模块 发表于 2019-09-10 更新于 2021-03-15 分类于 Python ABC -抽象基类以下仅仅个人见解。 首先 Python2 的写法和 Python3 的写法不同,这个不是重点。 当我第一次读别人源码看到ABC这个东西时,发现竟然是一个内置模块,一定要搞清楚这个东西是干什么的,为什么存在?解决了哪些问题,还有到底为什么要用它? 参考某篇Blog的解释:Python 中并没有提供抽象类与抽象方法,但是提供了内置模块 abc (abstract base class)来模拟实现抽象类。 有了上面这个解释,我自然联想到 Java 中的抽象类或者接口的概念。 而在某些项目中,使用抽象类的好处: 通过定义抽象基类,可以为一组子类定义公共 API。 阅读全文 »
Java关于两个数通过函数交换引发的问题 发表于 2019-03-04 更新于 2021-03-15 分类于 Java Java中交换两个数字的一般方法 借助中间变量交换 12345int x = 10;int y = 20;int temp = x;x = y;y = temp; 位移运算交换 阅读全文 »
JVM 虚拟机栈中的栈帧 发表于 2019-03-01 更新于 2021-03-15 分类于 Java JVM虚拟机中的栈帧栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,存在于虚拟机运行时数据区中的虚拟机栈栈中的元素。 一个栈帧主要有 局部变量表 、操作数栈 、动态连接、方法出口 。 每一个方法从调用开始到执行完成的过程,就对应着一个栈帧在虚拟机里面从入栈到出栈的过程。 阅读全文 »
JVM内存模型 发表于 2019-02-27 更新于 2021-03-15 分类于 Java 运行时数据区域Java 虚拟机在执行 Java 程序的过程中会把所管理的内存划分为若干个不同的数据区域。Java 虚拟机所管理的内存包括以下几个运行时数据区域: Class文件通过类加载器进行加载后,不同的数据分布在不同的区域,然后经过执行引擎来进行执行。 一个线程的图示 阅读全文 »
Java模板设计模式 发表于 2019-01-19 更新于 2021-03-15 分类于 Java 模板设计模式模板(Template)设计模式: 模板模式就是定义一个算法的骨架,而具体的算法延迟到子类中来实现 优点 使用模板方法模式,在定义算法骨架的同事,可以很灵活的实现具体的算法,满足用户灵活多变的需求 缺点 阅读全文 »
Java动态代理 发表于 2019-01-19 更新于 2021-03-15 分类于 Java Java 动态代理 动态代理应用场景 日志集中打印 事务 权限管理 AOP Spring AOP 当中可以使用的方式实现,和区别。 阅读全文 »
Java 类加载及反射 发表于 2019-01-19 更新于 2021-03-15 分类于 Java 类加载当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过 加载,连接,初始化三步 来实现对这个类进行初始化。 加载 是指将 class 文件读入内存,并为之创建一个 Class 对象。 任何类被使用时系统都会建立一个 Class 对象。 连接 阅读全文 »
Java工厂模式 发表于 2019-01-19 更新于 2021-03-15 分类于 Java 工厂方法模式的概述和使用工厂方法模式概述 工厂方法模式中抽象工厂类负责定义创建对象的借口,具体对象的创建工作由继续抽象工厂的具体类实现。 优点 客户端不需要再负责对象的创建,从而明确了各个类的职责 如果有新的对象增加,只需要维护一个具体的类和具体的工厂类即可,不影响已有的代码 阅读全文 »