object -- 10




概述上一篇日志中,我们讲解了 python 的垃圾回收机制我们也提到了 python 对象的一些源码构成python 的内存管理与垃圾收集 Python 对象所有的 python 对象都有三个特性组成:id -- 使用内建函数 id() 可以获取,被认为是该对象的内存地址,通常并不被程序使用类型 -- 型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么规则,通过用内建函数 type() 可以查看对象的类型信息值 -- 对象表示的数据项id 和类型信息是只读的,对象的值是否可变称为对象的可改变性 对象标准类型python 对象拥有以下标准类型:整型布尔型浮点型复数型字符串列表 -- []元组 -- ()字典 -- {} 其他内建类型typeclassnonefile集合/固定集合函数/方法模块 内部类型内部类型是在一般情况下程序员不需要关心的类型代码帧跟踪记录切片省略Xrange 代码对象代码对象是编译过的 Python 源代码片段,它是可执行对象通
#技术帖    #龙潭书斋    #python    #对象   
概述作为 java 开发者,创建对象是一件最常见的事,那么,除了使用 new 来创建对象,你知道还有哪些创建对象的方式吗?怎样通过一个 Class 对象获得他的实例呢?本节我们就来介绍一下 java 对象创建的五种方式 使用 new 关键字MyObject myObj = new MyObject();  这是最简单也是最常见的对象创建方式,他是通过调用调用指定构造方法进行对象的创建的,可以调用任何构造方法 使用 Class 类的 newInstance 方法很多情况下,我们需要通过已有的 Class 对象创建对应的实例,这在代理、反射等情况下非常常见Class 对象拥有 newInstance 方法,他等同于调用对应类的无参构造方法创建对象,因此这种方式最大的局限也在于被实例化的类必须具有无参构造方法,当然这样做的一个好处是,我们可以调用类的无参 private 构造方法创建对象,这是用 new 关键字无法做到的 使用 java.lang.reflect.Constructor 类的&
#技术帖    #技术分享    #class    #java   
概述guava 是一套由 google 开发的十分成熟、易用 java 核心库,包含了集合、缓存、并发库、原生类型支持、通用注解、字符串处理、IO 操作等基础库由于 Guava 的强大与易用,被 java 开发人员广泛接受,jdk 的每次升级都会融入 Guava 中一些已经被广泛验证并且运用的特性,足见 Guava 的先进本篇日志就来介绍一下常见的几个 Guava 基本工具 Optional有过 java 编程经验的很多人都有过和 null 开战的悲惨经历,模棱两可的 null 常常会导致很多令人意想不到的问题java8 中也加入了 Optional 类:java8 新特性Guava 用 Optional 类解决了这个问题,Optional<T> 对 T 类型进行了一层封装,可以看做是 T 类型的一个容器,他 提供了下列方法: Optional 提供的 static 方法Opt
#技术帖    #技术分享    #java    #object   
开头讲一个故事很久以前,公司的老一代程序员(现在都已经离职)在古老的 restlet 框架的基础上创造了一个 Java MVC 框架,一段框架在程序员的手中代代相传,一个传说流传在程序员之间“所有的 controller 都必须打上 scope=prototype 的烙印”,当这个项目流转到我的手上,当时尚不知道 prototype 意味着什么的我在这个项目上种下了一个小小的 bean,打开了上线系统这个魔盒,等待着项目中的这个种子生根发芽,项目早已是饱经线下测试,我自然是胸有成竹,然而,说时迟那时快,客服电话已是纷至沓来,魔盒中的种子释放出的是混乱与灾难,虽是急急回滚,依然造成了一个多小时的线上故障 -- 所有的用户打开我的订单列表,看到的都是别人的订单记一次重大事故 -- 非线程安全框架引发的意外数据共享 如上面的博文中所述,这个真实的案例发生在 2015 年秋季,日志中也介绍了什么是 prototype,虽然项目饱经测试,但是问题依然没能避免,这就是一场线程安全所引发的灾难,也足见并发环境中的问题难以测试和复现那么,难道真的所有的 Controller 都必须加上 sc
#技术帖    #龙潭书斋    #线程    #thread   

200x200


概述HotSpot 是在 JIT 之后的一款 java 虚拟机的开源实现,sun 从 JDK 1.3.1 开始

#读书笔记    #技术帖    #堆    #龙潭书斋   
概述RTTI 即 Run-Time Type Identification,运行时类型检查,这个机制让你的程序中某个数据的类型信息直到运行时才被发现和使用java 提供了两大类 RTTI 机制,一种是“传统的”RTTI,他要求我们在编译时已知所有类型,另一种是反射机制,他允许我们在运行时才发现和使用类型信息 RTTI 与 Class 对象最基本的 RTTI 机制就是多态的实现,比如派生类与基类之间的转型和动态绑定那么,RTTI 是如何工作的呢?RTTI 是利用 Class 对象实现的,Class 对象就是用来创建所有常规对象的,他拥有对应类的大量相关信息,每当编译器加载一个类,就会产生一个 Class 对象,类加载器首先检查这个类的 Class 是否已经被加载,如果没有被加载,类加载器就会根据类名找到对应的 .class 文件,从而创建对应的 Class 对象 Class 对象也提供了很多方法供外部使用,如:static Class<?> forName(String className) th
#读书笔记    #技术帖    #龙潭书斋    #java   
概述变量是现代编程语言中一个不可或缺的基本元素它主要由三个基本部分组成:名称类型值 PHP 的变量类型与 C 语言、java 不同,php、javascript、ruby 等语言是弱类型语言弱类型语言的变量可以表示任意的数据类型,这虽然提供了很大的灵活性与易用性,但是有时也是一把双刃剑,因此,了解 PHP 是如何实现弱类型的就是非常必要的了 PHP 的变量 -- zvalPHP 虽然是弱类型语言,但是这并不意味着 PHP 的变量没有类型PHP 变量的类型共有 8 种,可以分为以下三类标量类型 -- boolean、integer(long)、float(double)、string复合类型 -- array、object特殊类型 -- resource、NULL PHP 的变量存储在 zval 结构体中,定义于 Zend/zend.h 文件中// struct _zval_struct // php 变量描述结构 {{{ struct _zval_struct { /* Variabl
#技术帖    #php    #c语言    #技术分享   
事务的概念及优势事务支持四大特性(ACID):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)以及持久性(Durability)一个事务中执行的任何操作,即使是分阶段执行的,也能保证安全地应用于数据库,并在提交时不会受到来自其他连接的干扰事务操作也可以根据请求自动撤销(假设还没有提交),这使得在脚本中处理错误更加容易事务通常是通过把一批更改“积蓄”起来然后使之同时生效而实现的;这样做的好处是可以大大地提供这些更改的效率。换句话说,事务可以使脚本更快,而且可能更健壮(不过需要正确地使用事务才能获得这样的好处) PDO 事务操作并不是每种数据库都支持事务,因此,默认情况下,PDO 在“自动提交”模式下工作,这意味着每条语句都有自己的隐式事务需要调用 beginTransaction 方法切换到事务模式无论错误处理方式是怎样的,如果底层驱动不支持事务,都会抛出一个 PDOException 异常但只要数据库底层支持事务,则无论实际上事务是否可用,beginTransaction 都会返回 true,比如 mysql 数据库的 MyISAM 引擎并不支持事务,但 beginTransaction 依
#php    #mysql    #database    #龙潭书斋   
概述PDO 即 The PHP Data Objects,是随 PHP 5.1.0 发布的一个轻量级、一致性接口,提供了访问 mysql、sqlite 等数据库的抽象访问接口PDO 使用面向对象的方式组织数据库的访问和操作,如果你需要在数据操作的抽象接口,你可以使用或者在此之上封装一层 ORM总的来说,PDO 提供了各个数据库访问的一致性接口,配置、使用较为便捷,可以有效避免 SQL 注入等问题 并且PHP 5.1.0 以后 PDO 及 PDO_SQLITE 作为默认扩展已经被编译到了 PHP 内核并已经启用,直接使用即可当然配置文件 php.ini 中需要加入:extension=pdo.so  创建 PDO 对象并连接数据库要使用 PDO 第一步要做的就是创建 PDO 对象并连接相应的数据库执行下面的代码即可:<?php $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $
#php    #mysql    #龙潭书斋    #技术分享   



京ICP备15018585号