变量

初学者利用数组处理求解斐波那契数列

做~自己de王妃 提交于 2020-02-23 17:07:04
例题:利用数组处理求解斐波那契数列,打印前20位数。 *问题分析:先看斐波那契数列,1、1、2、3、5、8、13…从第3项开始,每一项等于前两项之和。 方法一:将斐波那契数列两两对应,设每组变量f1、f2,得出数列的计算公式并循环计算,分别存入数组a[20],最后打印数组。 严格来说,这种方法并不符合例题要求,第二个方法更符合一些 代码: # include <stdio.h> /*************** 方法一:将斐波那契数列设为两两一对,定义f1、f2两个变量,可得出计算公式。再分别进行存储。 此方法变量较多,但把斐波那契数列和要存储的数组区分开来,比较容易理解运算过程。 ***************/ void main ( ) { int i , f1 = 1 , f2 = 1 , a [ 20 ] = { 1 , 1 } ; //定义变量i用于for循坏及数组a[i],单独设立斐波那契数列的变量f1、f2,先对a[20]数组的前两位赋值1 for ( i = 2 ; i <= 19 ; i ++ ) //i初始值为2,因为a[20]中未知数是从a[2]开始 { f1 = f1 + f2 ; //f1=1+1=2 a [ i ] = f1 ; //a[2]=f1=2 f2 = f2 + f1 ; //f2=1+2=3 i ++ ; //因为每次循环涉及两个变量

Java并发编程(三)概念介绍

狂风中的少年 提交于 2020-02-23 16:28:26
在构建稳健的并发程序时,必须正确使用线程和锁。但是这终归只是一些机制。要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对 共享的(Shared) 和 可变的(Mutable) 状态的访问。 对象的状态是指存储在 状态 变量(例如实例或静态域)中的数据。 对象的状态可能包括其他 依赖对象的域 。比如某个HashMap的状态不仅是HashMap对象本身,还存储在许多Map.Entry对象中。 "共享"意味着变量可以由多个线程同时访问,而"可变"则意味着变量的值在其生命周期内可以变化。 线程安全性在于如何防止数据上发生 不可控的并发访问 。 一个对象是否 需要是线程安全的 ,取决于它是否被多个线程访问。 要使对象是线程安全的,需要采用 同步机制 来协同对对象可变状态的访问。如果无法实现协同,那么可能导致数据破坏以及其他不该出现的结果。 协同多个线程对变量访问的同步机制主要有: 1. 关键字 synchronized 2. 关键字 volatile 3. 显式锁 (Explicit Lock) 4. 原子变量 协同多线程访问一个可变的状态变量的方法有: 1. 不在线程之间共享该状态变量 2. 将状态变量修改为不可变的变量 3. 在访问状态变量时使用同步 什么是线程安全? 一个类在多线程环境下被访问,这个类始终能表现出正确的行为,那么就称这个类是线程安全的。

mysql变量(用户+系统)

荒凉一梦 提交于 2020-02-23 16:01:04
9.3. 用户变量 可以先在用户变量中保存值然后在以后引用它;这样可以将值从一个语句传递到另一个语句。用户变量与连接有关。也就是说,一个客户端定义的变量不能被其它客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。 用户变量的形式为@var_name,其中变量名var_name可以由当前字符集的文字数字字符、‘.’、‘_’和‘$’组成。 默认字符集是cp1252 (Latin1)。可以用mysqld的-- default -character- set 选项更改字符集。参见5.10.1节,“数据和排序用字符集”。用户变量名对大小写不敏感。 设置用户变量的一个途径是执行SET语句: SET @var_name = expr [, @var_name = expr] ...对于SET,可以使用=或:=作为分配符。分配给每个变量的expr可以为整数、实数、字符串或者NULL值。 也可以用语句代替SET来为用户变量分配一个值。在这种情况下,分配符必须为:=而不能用=,因为在非SET语句中=被视为一个比较 操作符: mysql> SET @t1=0, @t2=0, @t3=0; mysql> SELECT @t1:= (@t2:=1)+@t3:=4,@t1,@t2,@t3;+----------------------+------+------+------+| @t1:=

Java环境配置

别来无恙 提交于 2020-02-23 15:19:15
JDK是Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库。 linux下环境配置 一、下载jdk java -version,查看是否已经搭建java开发环境。 下载链接: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 二. 解压 tar -zxvf jdk-8u121-linux-x64.tar.gz 三、新建一个目录,并将解压好的文件移动过去 mkdir /usr/local/java mv ./jdk1.8.0_121 /usr/local/java 四、设置环境变量,这里我们需要修改/etc/profile文件 vim /etc/profile 在末尾添加如下四行 export JAVA_HOME=/usr/local/java/jdk1.8.0_121 export JRE_HOME=/usr/local/java/jdk1.8.0_121/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE

Java并发编程实战3章

喜你入骨 提交于 2020-02-23 13:17:29
1.同步包括两方面:原子性和可见性。 2.可见性:因为在多线程程序中,如果没有采用正确的同步,有些线程就会得到失效数据。 Java内存模型要求,变量的读取操作和写入操作都必须是原子操作,但对于非volatile类型的long和double变量,JVM允许将64位的读操作或写操作分解为两个32位的操作。当读取一个非volatile类型的long变量时,如果对该变量的读操作和写操作在不同的线程中执行,那么很可能会读取到某个值的高32位和另一个值的低32位。即使不考虑失效数据问题,在多线程程序中使用共享且可变的long和double等类型的变量也是不安全的,除非用关键字volatile来声明它们,或者用锁保护起来。 加锁的含义不仅仅局限于互斥行为,还包括内存可见性。为了确保所有线程都能看到共享变量的最新值,所有执行读操作或者写操作的线程都必须在同一个锁上同步。 下面的代码是书中例子,如果多线程访问这个类,就存在可见性问题,但是如何测试得到比如输出为0的结果或者程序无法终止?求赐教! public class NoVisibility { private static boolean ready = false; private static int number = 0; public static class ReaderThread extends Thread { public

指针变量和普通变量的值

白昼怎懂夜的黑 提交于 2020-02-23 11:23:02
指针变量有3个值,自己的地址,保存的地址和保存地址内的值 #include <cstdio> int main(){ int a=10; int *p=&a; printf("p的地址:%p\n",&p); printf("p保存的地址:%p\n",p); printf("p保存地址内的值:%d\n",*p); return 0; } 普通变量有2个值,自己的地址,自己的值 #include <cstdio> int main(){ int a=10; printf("a的地址:%p\n",&a); printf("a的值:%d\n",a); return 0; } 来源: https://www.cnblogs.com/litifeng/p/12348702.html

Python学习笔记004

走远了吗. 提交于 2020-02-23 11:19:45
变量 变量的命名规则 1. 要具有描述性 2. 变量名只能_,数字,字母组成,不可以是空格或特殊字符(#?<.,¥$*!~) 3. 不能以中文为变量名 4. 不能以数字开头,下划线或者小写字母开头 5. 保留字符是不能被使用 6. 区分大小写 常量 全部大写的变量名来代表次变量为常量 来源: https://www.cnblogs.com/wtzxxy/p/12348719.html

day 1 python基础学习笔记

守給你的承諾、 提交于 2020-02-23 10:57:34
6月24日 周一 day1python基础学习内容一 编程语言 什么是编程语言? 上面提及的能够被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质。在编程的世界里,计算机更像是人的奴隶,人类编程的目的就命令奴隶去工作。 什么是编程? 编程即程序员根据需求把自己的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是包含一堆字符的文件。 强调: 程序在未运行前跟普通文件无异,只有程序在运行时,文件内所写的字符才有特定的语法意义。二 计算机组成部分 CPU 内存 外存 输入设备 输出设备三 python的安装与使用 1.安装python解释器 2.安装pycharm编辑器 3.编写python代码,并输出打印hello world!四 变量可变化的量。 变量值: 是真实存放在内存中的一块内存地址。 变量名: 用于与变量值绑定关系的。 赋值=号: 将变量的值绑定给变量名的。 print("hello world!") name="Tank"//定义变量变量命名规范:1.驼峰命名法 AgeOfTank2. 推荐命名:age_of_tank变量名定义规范:1.要以英文字母或者下划线开头,不能以数字开头2.关键字不能命名变量名规范age_of_Tank=18不使用中文命名定义变量的三个特征:id #用来表示内存中的唯一内存地址type

Linux从程序到进程

时间秒杀一切 提交于 2020-02-23 10:52:27
我们之前一直在使用“对象”这个概念,但没有探讨对象在内存中的具体存储方式。这方面的讨论将引出“对象引用”(object reference)这一重要概念。 对象引用 我们沿用之前定义的Human类,并有一个Test类: public class Test { public static void main(String[] args) { Human aPerson = new Human(160); } } class Human { /** * constructor */ public Human(int h) { this.height = h; } /** * accessor */ public int getHeight() { return this.height; } /** * mutator */ public void growHeight(int h) { this.height = this.height + h; } private int height; } 外部可以调用类来创建对象,比如上面在Test类中: Human aPerson = new Human(160); 创建了一个Human类的对象aPerson。 上面是一个非常简单的表述,但我们有许多细节需要深入: 首先看等号的右侧。 new是在内存中为对象开辟空间。具体来说,new是在内存的

Linux从程序到进程

会有一股神秘感。 提交于 2020-02-23 10:50:51
链接地址: http://www.cnblogs.com/vamei/archive/2013/04/01/2992484.html 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 我们之前一直在使用“对象”这个概念,但没有探讨对象在内存中的具体存储方式。这方面的讨论将引出“对象引用”(object reference)这一重要概念。 对象引用 我们沿用之前定义的Human类,并有一个Test类: public class Test { public static void main(String[] args) { Human aPerson = new Human(160); } } class Human { /** * constructor */ public Human(int h) { this.height = h; } /** * accessor */ public int getHeight() { return this.height; } /** * mutator */ public void growHeight(int h) { this.height = this.height + h; } private int height; } 外部可以调用类来创建对象