实例变量

Python 3.6 字符串操作 实例

自闭症网瘾萝莉.ら 提交于 2019-11-28 23:48:42
Python 3.6 字符串操作 常见的字符串操作 字符串的格式化 C语言使用函数printf()、sprintf()格式化输出结果,Python也提供了类似的功能。Python将若干值插入带有“%”标记的字符串中,从而可以动态地输出字符串。字符串的格式化语法如下所示。 " %s " % str1 " %s %s " % (str1, str2) 【代码说明】第1行代码使用一个值格式化字符串。第2行代码使用多个值格式化字符串,用于替换的值组成一个元组。 下面这段代码演示了字符串的格式化操作: str1 = 'version' num = 1.0 format = " %s " % str1 print ( format ) format = " %s %d " % (str1, num) print ( format ) 【代码说明】 第4行代码用变量str1的值替换字符串中的%s。 第5行代码输出结果是“version”。 第6行代码分别用变量str1、num的值替换%s和%d的值。%d表示替换的值为整型。 第7行代码输出结果为“version 1”。 注意 如果要格式化多个值,元组中元素的顺序必须和格式化字符串中替代符的顺序一致,否则,可能出现类型不匹配的问题。如果将上例中的%s和%d调换位置,将抛出如下异常: TypeError: int argument required

线程安全

半世苍凉 提交于 2019-11-28 18:58:31
非线程安全:在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是"脏读",也就是取到的数据其实是被更改过的(同个对象的变量即共享变量)。 线程安全:获得的实例变量的值是经过同步处理的,不会出现脏读的现象。   另外还有static修饰的类变量。 来源: https://www.cnblogs.com/myitnews/p/11421517.html

volatile的使用及DCL模式

南楼画角 提交于 2019-11-28 18:07:01
volatile要点 volatile 只保证变量的线程可见性,不保证变量的原子性(只对赋值起作用),另外一个作用是防止重排序。 volatile 典型的使用场景,作为boolean,采用while来做信号通知 不采用volatile的dcl容易出错(DCL即Double Check Locking模式,就是双加锁检查模式。) 代码实例 单例的延迟加载实现 123456789101112131415161718192021222324252627282930 package cn.javass.dp.singleton.example2; /*** 懒汉式单例示例*/public class Singleton { /** * 定义一个变量来存储创建好的类实例 */ private static Singleton uniqueInstance = null; /** * 私有化构造方法,好在内部控制创建实例的数目 */ private Singleton(){ // } /** * 定义一个方法来为客户端提供类实例 * @return 一个Singleton的实例 */ public static synchronized Singleton getInstance(){ //判断存储实例的变量是否有值 if(uniqueInstance == null){ //如果没有

并发下常用关键字的原理

风流意气都作罢 提交于 2019-11-28 17:25:20
对Synchronized的理解 synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。 另外,在 Java 早期版本中,synchronized属于重量级锁,效率低下,因为监视器锁(monitor)是依赖于底层的操作系统的 Mutex Lock 来实现的,Java 的线程是映射到操作系统的原生线程之上的。如果要挂起或者唤醒一个线程,都需要操作系统帮忙完成,而操作系统实现线程之间的切换时需要从用户态转换到内核态,这个状态之间的转换需要相对比较长的时间,时间成本相对较高,这也是为什么早期的 synchronized 效率低的原因。在 Java 6 之后 Java 官方对从 JVM 层面对synchronized 较大优化,所以现在的 synchronized 锁效率也优化得很不错了。JDK1.6对锁的实现引入了大量的优化,如自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销。 synchronized关键字最主要的三种使用方式: 修饰实例方法: 作用于当前对象实例加锁,进入同步代码前要获得当前对象实例的锁 修饰静态方法: :也就是给当前类加锁,会作用于类的所有对象实例,因为静态成员不属于任何一个实例对象,是类成员( static

深入理解static关键字

巧了我就是萌 提交于 2019-11-28 16:50:01
提到static关键字,相信大家都不陌生,这是相对比较难以理解的一个关键字,相信各位也都能深深感受的到!本篇文章将好好总结一下static这个关键字。 文章目录 1、static存在的主要意义 2、static的独特之处 3、static应用场景 4、静态变量和实例变量的概念 5、静态变量和实例变量区别【重点常用】 6、访问静态变量和实例变量的两种方式 7、static静态方法 8、static静态代码块 9、static变量与普通变量区别 10、静态内部类 11、静态导包 12、static注意事项 13、final与static的藕断丝连 在开始讲static之前,我想让各位看一段有意思的代码: public class Test { static { System . out . println ( "test static 1" ) ; } static { System . out . println ( "test static 2" ) ; } public static void main ( String [ ] args ) { } } 看完程序,小白童鞋发话了:啥玩意?main方法中啥都没有,能运行啥?博主你个星星星… 运行结果: test static 1 test static 2 小白童鞋:那啥…那啥…博主我说啥了,我啥都没说… 其实

Java类和对象

烂漫一生 提交于 2019-11-28 13:41:57
了解类和对象前,简单提及面向对象程序设计。面向对象程序设计就是通过对象来进行程序设计,对象表示一个可以明确标识的实体。例如:一个人、一本书、一个学校或一台电脑等等。每个对象都有自己独特的标识、状态和行为。 对象的状态(特征或属性,即实例变量),由该对象的数据域来表示。 例如:一个人可以具有名字、年龄、身高、体重、家庭地址等等属性,这些就是“人这个对象的数据域”。 对象的行为(对象执行的动作,即功能),由方法来定义。例如:定义getName()来获取姓名, getHeight()获取身高,setAddress(String addr)修改地址。 类和对象的关系 类是一种抽象的概念集合,是最基础的组织单位,作为对象的模板、合约或蓝图。 类是对象的类型,使用一个通用类可以定义同一类型的对象,类中定义对象的数据域是什么以及方法是做什么的。 对象是类的实例,一个类可以拥有多个实例,创建实例的过程叫做实例化。实例也称为对象,两者说法一致。 构造方法 构造方法在使用new操作符创建对象时被调用,作用就是用于初始化对象数据域。 构造方法相比于普通方法比较特殊的地方: 构造方法名和所在类的类名一致;无返回值(即void也没有);只有创建对象时才会被调用。 构造方法和普通方法一样,也可以重载,根据不同的初始参数,来构造对象。   //只初始化名字和性别 public Person(String

面试题整理

时间秒杀一切 提交于 2019-11-28 12:39:57
原文: http://blog.gqylpy.com/gqy/448 置顶:来自一名75后老程序员的武林秘籍——必读 (博主推荐) 来,先呈上武林秘籍链接: http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我会画原理图,会画 PCB,会模拟,会数字!玩过 PLC,玩过单片机,会用汇编,会用 C!玩过 ARM,比如 PLC,STM32,和时下正在起飞的 NXP RT1052!搞过 DSP,比如 TMS320F28335!搞过 FPGA,不管 Xilinx 还是 Altera,也不管是 Verilog 还是 VHDL,或者直接画数字电路图!我懂嵌入式系统,比如 uCOS 和 Linux!我懂开源的硬件,比如 Arduino 和树莓派!我也搞软件,学了一堆上位机的语言C#,JAVA,Python,Kotlin,Swift!会写爬虫工具,又自学写APP,不管Android 还是 IOS! 可是这一切有什么用呢?土鸡瓦狗!不值一提!干技术的永远就是最苦逼的那个人! 我相信看到这里的你,应该是个 IT

Lua语言基本语法~运算符

前提是你 提交于 2019-11-28 11:50:53
Lua 变量 变量在使用前,必须在代码中进行声明,即创建该变量。 编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。 Lua 变量有三种类型:全局变量、局部变量、表中的域。 Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。 局部变量的作用域为从声明位置开始到所在语句块结束。 变量的默认值均为 nil。 -- test.lua 文件脚本 a = 5 -- 全局变量 local b = 5 -- 局部变量 function joke() c = 5 -- 全局变量 local d = 6 -- 局部变量 end joke() print(c,d) --> 5 nil do local a = 6 -- 局部变量 b = 6 -- 对局部变量重新赋值 print(a,b); --> 6 6 end print(a,b) --> 5 6 赋值语句 赋值是改变一个变量的值和改变表域的最基本的方法。 a = "hello" .. "world" t.n = t.n + 1 Lua 可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。 a, b = 10, 2*x <--> a=10; b=2*x 遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作

变量

不想你离开。 提交于 2019-11-28 10:38:59
变量 什么是变量? 变量是用来命名一个数据的标示符。 实例: /*2019这是一个数字,代表某年。如果命名它:*/ int year=2019; /* int:是数据类型,表示是整数 year:是一个标示符 =:是赋值操作符 2019:是一个数字类型的值 ; :表示该行结束 */ View Code 基本变量类型 一个变量的类型,决定了该变量可以包含什么样的值。 Java种有八种基本类型,都是Java语言预先定义好的,并且是关键字。 这八种基本类型分别是: 整型(4种) 字符型(1种) 浮点型(2种) 布尔型(1种) 整型 整型用于存放整数:byte、short、int、long 区别在于不同类型的整型,最大值,最小值不一样。 如果byte类型的变量赋予超出其范围的值,就会编译错误,这时就需要进行类型转换。 实例: public class Zx{ public static void main(String[] args){ byte=1; short s=200; int i=300; long=400; /*如果试图给byte类型的变量赋予超出其范围的值,就会产生编译错误*/ byte b2=200; } } View Code 字符型 char 类型用于存放一个字符,值用但因号表示(双引号表示字符串类型)其长度和short一样,也是16位。 只能存放一个字符

Spring单例与线程安全小结

时光毁灭记忆、已成空白 提交于 2019-11-28 10:32:34
一、Spring单例模式与线程安全 Spring框架里的bean,或者说组件,获取实例的时候都是默认的单例模式,这是在多线程开发的时候要尤其注意的地方。 单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 当多用户同时请求一个服务时,容器会给每一个请求分配一个线程,这是多个线程会并发执行该请求多对应的业务逻辑(成员方法),此时就要注意了,如果该处理逻辑中有对该单列状态的修改(体现为该单列的成员属性),则必须考虑线程同步问题 同步机制的比较  ThreadLocal和线程同步机制相比有什么优势呢?ThreadLocal和线程同步机制都是为了解决多线程中相同变量的访问冲突问题。   在同步机制中,通过对象的锁机制保证同一时间只有一个线程访问变量。这时该变量是多个线程共享的,使用同步机制要求程序慎密地分析什么时候对变量进行读写,什么时候需要锁定某个对象,什么时候释放对象锁等繁杂的问题,程序设计和编写难度相对较大。   而ThreadLocal则从另一个角度来解决多线程的并发访问。ThreadLocal会为每一个线程提供一个独立的变量副本,从而隔离了多个线程对数据的访问冲突。因为每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了。ThreadLocal提供了线程安全的共享对象,在编写多线程代码时