变量

jvm学习006 jvm内存结构分配

穿精又带淫゛_ 提交于 2020-03-07 06:13:10
主要内容如下: JVM启动流程 JVM基本结构 内存模型 编译和解释运行的概念 一、JVM启动流程: JVM启动时,是由java命令/javaw命令来启动的。 二、JVM基本结构: JVM基本结构图: 《深入理解Java虚拟机(第二版)》中的描述是下面这个样子的: Java中的内存分配: Java程序在运行时,需要在内存中的分配空间。 为了提高运算效率,就对数据进行了不同空间的划分 ,因为每一片区域都有特定的处理数据方式和内存管理方式。 具体划分为如下 5个内存空间 :(非常重要) 栈 :存放 局部变量 堆 :存放所有 new出来的东西 方法区:被虚拟机加载的类信息、常量、静态常量等。 程序计数器(和系统相关) 本地方法栈 1、程序计数器: 每个线程拥有一个PC寄存器 在线程创建时创建 指向下一条指令的地址 执行本地方法时,PC的值为undefined 2、方法区: 保存装载的类信息   类型的常量池   字段,方法信息   方法字节码 通常和永久区(Perm)关联在一起 3、堆内存: 和程序开发密切相关 应用系统对象都保存在Java堆中 所有线程共享Java堆 对分代GC来说,堆也是分代的 GC管理的主要区域 现在的GC基本都采用分代收集算法,如果是分代的,那么堆也是分代的。如果堆是分代的,那堆空间应该是下面这个样子: 上图是堆的基本结构,在之后的文章中再进行详解。 4、栈内存:

scss

瘦欲@ 提交于 2020-03-07 02:40:51
SASS 是一款 CSS 预编译器 Scss 其实是 Sass 3 为了兼容 CSS 引入的新语法。 最早的 Sass 语法格式,被称为 缩进格式 (Indented Sass) 通常简称 “Sass”,是一种简化格式。它使用 “缩进” 代替 “花括号” 表示属性属于某个选择器,用 “换行” 代替 “分号” 分隔属性,很多人认为这样做比 SCSS 更容易阅读,书写也更快速,比如上面这段样式用sass的语法可以这样写: #sidebar width : 30 % background - color : #faa Sass和Scss的大部分扩展,例如变量、parent references 和 指令都是一致的;唯一不同的是,SCSS 需要使用分号和花括号而不是换行和缩进。 比如上面这段样式用Scss的语法写的话看起来和CSS的写法是一样的: #sidebar { width : 30 % ; background - color : #faa ; } 变量 SassScript 最普遍的用法就是变量,变量以美元符号”$”开头,赋值方法与 CSS 属性的写法一样: $width : 10 px ; 使用变量: #main { width : $width ; } 如果变量类型为字符串,一般不需要加引号,但是有些特殊情况,比如字符串中有双斜杠“//”

多线程笔记:同步机制(1)

有些话、适合烂在心里 提交于 2020-03-07 00:22:25
同步机制简介 线程同步机制是一套用于协调线程间的数据访问及活动的机制,该机制用于保障线程安全以及实现这些线程的共同目标。 线程同步机制是编程语言为多线程运行制定的一套规则,合理地运用这些规则可以很大程度上保障程序的正确运行。 这套机制包含两方面的内容,一是关于多线程间的数据访问的规则,二是多线程间活动的规则。前者关乎程序运行的正确与否,是相当重要的内容;后者很大程度上是影响程序的运行效率,也是不容忽视的内容。不太严谨地说,数据访问的规则主要是由锁来实现,线程间活动的规则则表现线程调度上。 锁 线程安全问题的产生前提是多个线程并发访问共享数据,那么一种保障线程安全的方法就是将多个线程对共享数据的并发访问转换为串行访问,即一个共享数据一次只能被一个线程访问,该线程访问结束后其他线程才能对其进行访问。锁就是利用这种思路来实现线程同步机制。 GoLang中换了个思路,通过通道(channel)来实现共享数据的安全性。 锁的相关概念 锁在编程里是个蛮有趣的概念。 锁:置于可启闭的器物上,以钥匙或暗码(如字码机构、时间机构、自动释放开关、磁性螺线管等)打开的扣件 —— 在线新华字典 特定代码的作用域或是 lock() 和 unlock() 方法之间的代码构成的区域就是“器物”的表征,线程访问其中的共享数据相当于解开“扣件”,打开了“器物”;通常所说“获得xx锁”,更像是获得了“钥匙或暗码

java语言判定sinx的近似值

試著忘記壹切 提交于 2020-03-07 00:14:34
import java.util.Scanner; public class Main { //main函数,程序入口 public static void main(String[] args) { //定义变量sum用于保存结果 double sum=0.0,x; //定义变量n用于循环,flag置正负标志位 int n,flag=1; //输出提示 System.out.println("please enter 2 nums to x,n:"); //开始接受用户的输入 Scanner sc=new Scanner(System.in); //接受x的值,保存到变量x中 x=sc.nextDouble(); //接受n的值,保存到变量n中 n=sc.nextInt(); //开始循环计算 for(int i=1;i<=2*n-1;i+=2){ //定义变量用于求2*i-1的阶层 int jc=1; for(int j=1;j<=i;j++){ jc=jc*j; } //累加到sum中,其中 Math.pow(x,y)函数用于求x的n次数方 sum+=flag*Math.pow(x, i)/jc; //flag变标志位 flag=-flag; } //循环退出之后,输出值 System.out.format("sinx(%4f)=%.8f", x,sum); } } 来源:

R语言| 缺失值判断

我们两清 提交于 2020-03-06 22:30:49
缺失值判断 一、缺失值判断 通常用“NA"表示,判断数据是否存在缺失值的常用方法 使用函数is.na( ) 使用函数is.na( ),该函数是判断缺失值的最基本的函数。可以用于判断不同的数据对象,如向量、列表和数据框. 其函数的基本书写格式为:is.na( x ) 判断数据集中是否存在缺失值,如果存在,返回 TRUE ; 如果不存在,则返回FALSE 例: > library ( DMwR) > data ( "algae" ) > sum ( is . na ( algae ) ) [ 1 ] 33 可以看到数据集algae中一共有33个缺失值 使用函数complete.cases( ) complete.cases( )判断数据集的每一行是否存在缺失值,如果不存在,则返回TRUE,如果存在,则返回TRUE。 例: > sum ( !complete . cases ( algae ) ) [ 1 ] 16 > algae [ !complete . cases ( algae ) , ] #输出含有缺失值的行 可以看到数据集algae一共有16行记录存在缺失值 Summary( )判断数据集中分类变量是否含有缺失值 例: 对输出结果进行分析,如可以看到变量mxPH中含有1个缺失值,变量CHla中含有12个缺失值。 二、缺失模型判断 在处理缺失值之前,需要先对缺失模式进行判断

Python——函数的几种形式还有多值递归拆包操作

故事扮演 提交于 2020-03-06 20:55:45
一、函数的几种形式 1. 函数根据有没有参数和 返回值,可以组合成下面的四组 - 无参,无值 - 无参,有值 - 有参,有值 - 有参,无值 2.那么我们到底给那种呢? 我给出了如下的总结: 2.1 无参数,无返回值 此类函数,不接收参数,也没有返回值,应用场景如下: 只是单纯地做一件事情 ,例如 显示菜单 在函数内部 针对全局变量进行操作 ,例如: 新建名片 ,最终结果 记录在全局变量 中 注意: 如果全局变量的数据类型是一个 可变类型 ,在函数内部可以使用 方法 修改全局变量的内容 —— 变量的引用不会改变 在函数内部, 使用赋值语句 才会 修改变量的引用 2.2 无参数,有返回值 此类函数,不接收参数,但是有返回值,应用场景如下: 采集数据,例如 温度计 ,返回结果就是当前的温度,而不需要传递任何的参数 1.3 有参数,无返回值 此类函数,接收参数,没有返回值,应用场景如下: 函数内部的代码保持不变,针对 不同的参数 处理 不同的数据 例如 名片管理系统 针对 找到的名片 做 修改 、 删除 操作 2.4 有参数,有返回值 此类函数,接收参数,同时有返回值,应用场景如下: 函数内部的代码保持不变,针对 不同的参数 处理 不同的数据 ,并且 返回期望的处理结果 例如 名片管理系统 使用 字典默认值 和 提示信息 提示用户输入内容 如果输入,返回输入内容 如果没有输入

Python错误:UnboundLocalError: local variable 'max' referenced before assignment

被刻印的时光 ゝ 提交于 2020-03-06 19:03:21
分配前已引用局部变量“ max” 在函数内部对变量赋值进行修改后,该变量就会被Python解释器认为是局部变量而非全局变量,当程序执行到 max = max(nums[:k])的时候,想当于执行max则被认为是局部变量,在函数内部找不到max的定义,自然报错 解决方式 :在函数内部,给变量添加global修饰符,声明此变量为全局变量 然而,我加了global max之后 仍然出错 原来是 变量名和函数名max()重名 于是将变量名max改成maxa即可 来源: CSDN 作者: weixin_45729335 链接: https://blog.csdn.net/weixin_45729335/article/details/104697463

Java多线程的基本知识

旧时模样 提交于 2020-03-06 18:54:17
1、进程与线程 进程是指一个程序的执行过程,持有资源和线程 线程是系统中最小的执行单元,一个进程可以有多个线程,线程共享进程资源,具有同步(线程的协作)与互斥(资源的争抢) 例如:我们一个班级当做一个进程,班级里面的学生就是线程,里面的学习工具就是资源,学生们的相互协作与竞争就是线程之间的同步与互斥 2、java对线程的支持 Thead类及Runnable接口 Runnable用来定义任务 Thead控制任务执行 Runnable可以避免Thread方式由于java单继承的特性带来的缺陷,可以被多个线程(Thread实例)共享,适合于多个线程处理同一个资源的情况。 class MyThread extends Thread{ @Override public void run() { } } MyThread mt = new MyThread(); mt.start();lass MyThread implements Runnable { public void run() { }}MyThread myThread = new MyThread();Thread td = new Thread(myThread);td.start(); 3、线程的生命周期 其中阻塞事件包括:sleep、 yield、 join、wait 阻塞解除:等待或休眠时间到了 notify

ionic cordova 安卓环境配置

点点圈 提交于 2020-03-06 17:37:00
ionic 及cordova环境配置 1、安装nodejs 参见 https://blog.csdn.net/liwan09/article/details/104651650 2、安装cordova和ionic cmd 执行命令 npm i -g cordova ionic 执行完成后,可通过 node -v 和cordova -v 查看安装的版本 Android 环境配置(打包环境) 1、Java JDK配置 1)下载jdk https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm 注:Cordova 与最新版的 JAVA SDK 不兼容,必须安装JDK 8 2)安装JDK 默认安装目录: C:\Program Files\Java\jdk1.8.0_231\ 3)JDK环境变量配置 a. 我的电脑——属性——高级系统设置——高级——环境变量 b.系统变量——新建 变量名为JAVA _HOME, 变量值为JAVA JDK 安装目录 c.系统变量——新建 变量名CLASSPATH,变量值 .;%JAVA_HOME%\lib d.选择“系统变量”中变量名为“Path”的环境变量,双击该变量,在原来变量后追加 %JAVA_HOME%\bin 测试JDK环境变量的配置成功与否

非原子的64位数据操作(long和double)

妖精的绣舞 提交于 2020-03-06 15:40:45
非volatile类型的64位数值变量,在JVM的内存模型中写入和读出都是原子操作,但是64位的long和double类型变量在JVM的内存模型中,是将64位的操作拆分乘2个32位的操作。当取出一个非volatile类型的long或者double变量时,如果有一个读线程和一个写线程,那么读线程有可能读出一个原来数值的高32位和一个更改过后的低32位的数值。 来源: https://www.cnblogs.com/dazhu123/p/12426317.html