当前位置: 首页 > news >正文

ThreadLocalRandom 是线程安全的吗?

来源:https://zhenbianshu.github.io

前言

最近在写一些业务代码时遇到一个需要产生随机数的场景,这时自然想到 jdk 包里的 Random 类。

但出于对性能的极致追求,就考虑使用 ThreadLocalRandom 类进行优化,在查看 ThreadLocalRandom 实现的过程中,又追了下 Unsafe 有部分代码,整个流程下来,学到了不少东西,也通过搜索和提问解决了很多疑惑,于是总结成本文。

Random 的性能问题

使用 Random 类时,为了避免重复创建的开销,我们一般将实例化好的 Random 对象设置为我们所使用服务对象的属性或静态属性,这在线程竞争不激烈的情况下没有问题,但在一个高并发的 web 服务内,使用同一个 Random 对象可能会导致线程阻塞。

Random 的随机原理是对一个”随机种子”进行固定的算术和位运算,得到随机结果,再使用这个结果作为下一次随机的种子。在解决线程安全问题时,Random 使用 CAS 更新下一次随机的种子,可以想到,如果多个线程同时使用这个对象,就肯定会有一些线程执行 CAS 连续失败,进而导致线程阻塞。

ThreadLocalRandom

jdk 的开发者自然考虑到了这个问题,在 concurrent 包内添加了 ThreadLocalRandom 类,第一次看到这个类名,我以为它是通过 ThreadLocal 实现的,进而想到恐怖的内存泄漏问题,但点进源码却没有 ThreadLocal 的影子,而是存在着大量 Unsafe 相关的代码。

我们来看一下它的核心代码:

UNSAFE.putLong(t = Thread.currentThread(), SEED, r = UNSAFE.getLong(t, SEED) + GAMMA);

翻译成更直观的 Java 代码就像:

Thread t = Thread.currentThread();
long r = UNSAFE.getLong(t, SEED) + GAMMA;
UNSAFE.putLong(t, SEED, r);

看上去非常眼熟,像我们平常往 Map 里 get/set 一样,以 Thread.currentThread() 获取到的当前对象里 key,以 SEED 随机种子作为 value。

但是以对象作为 key 是可能会造成内存泄漏的啊,由于 Thread 对象可能会大量创建,在回收时不 remove Map 里的 value 时会导致 Map 越来越大,最后内存溢出。

Unsafe

功能

不过再仔细看 ThreadLocalRandom 类的核心代码,发现并不是简单的 Map 操作,它的 getLong() 方法需要传入两个参数,而 putLong() 方法需要三个参数,查看源码发现它们都是 native 方法,我们看不到具体的实现。两个方法签名分别是:

public native long getLong(Object var1, long var2);
public native void putLong(Object var1, long var2, long var4);

虽然看不到具体实现,但我们可以查得到它们的功能,下面是两个方法的功能介绍:

  • putLong(object, offset, value) 可以将 object 对象内存地址偏移 offset 后的位置后四个字节设置为 value。
  • getLong(object, offset) 会从 object 对象内存地址偏移 offset 后的位置读取四个字节作为 long 型返回。

不安全性

作为 Unsafe 类内的方法,它也透露着一股 “Unsafe” 的气息,具体表现就是可以直接操作内存,而不做任何安全校验,如果有问题,则会在运行时抛出 Fatal Error,导致整个虚拟机的退出。

在我们的常识里,get 方法是最容易抛异常的地方,比如空指针、类型转换等,但 Unsafe.getLong() 方法是个非常安全的方法,它从某个内存位置开始读取四个字节,而不管这四个字节是什么内容,总能成功转成 long 型,至于这个 long 型结果是不是跟业务匹配就是另一回事了。而 set 方法也是比较安全的,它把某个内存位置之后的四个字节覆盖成一个 long 型的值,也几乎不会出错。

那么这两个方法”不安全”在哪呢?

它们的不安全并不是在这两个方法执行期间报错,而是未经保护地改变内存,会引起别的方法在使用这一段内存时报错。

public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {// Unsafe 设置了构造方法私有,getUnsafe 获取实例方法包私有,在包外只能通过反射获取Field field = Unsafe.class.getDeclaredField("theUnsafe"); field.setAccessible(true);Unsafe unsafe = (Unsafe) field.get(null);// Test 类是一个随手写的测试类,只有一个 String 类型的测试类Test test = new Test();test.ttt = "12345";unsafe.putLong(test, 12L, 2333L);System.out.println(test.value);
}

运行上面的代码会得到一个 fatal error,报错信息为 “A fatal error has been detected by the Java Runtime Environment: … Process finished with exit code 134 (interrupted by signal 6: SIGABRT)”。

可以从报错信息中看到虚拟机因为这个 fatal error abort 退出了,原因也很简单,我使用 unsafe 将 Test 类 value 属性的位置设置成了 long 型值 2333,而当我使用 value 属性时,虚拟机会将这一块内存解析为 String 对象,原 String 对象对象头的结构被打乱了,解析对象失败抛出了错误,更严重的问题是报错信息中没有类名行号等信息,在复杂项目中排查这种问题真如同大海捞针。

不过 Unsafe 的其他方法可不一定像这一对方法一样,使用他们时可能需要注意另外的安全问题,之后有遇到再说。

ThreadLocalRandom 的实现

那么 ThreadLocalRandom 是不是安全的呢,再回过头来看一下它的实现。

ThreadLocalRandom 的实现需要 Thread 对象的配合,在 Thread 对象内存在着一个属性 threadLocalRandomSeed,它保存着这个线程专属的随机种子,而这个属性在 Thread 对象的 offset,是在 ThreadLocalRandom 类加载时就确定了的,具体方法是 SEED = UNSAFE.objectFieldOffset(Thread.class.getDeclaredField("threadLocalRandomSeed"));

我们知道一个对象所占用的内存大小在类被加载后就确定了的,所以使用 Unsafe.objectFieldOffset(class, fieldName) 可以获取到某个属性在类中偏移量,而在找对了偏移量,又能确定数据类型时,使用 ThreadLocalRandom 就是很安全的。

疑问

在查找这些问题的过程中,我也产生了两个疑问点。

使用场景

首先就是 ThreadLocalRandom 为什么非要使用 Unsafe 来修改 Thread 对象内的随机种子呢,在 Thread 对象内添加 get/set 方法不是更方便吗?

stackOverFlow 上有人跟我同样的疑问:

https://stackoverflow.com/questions/40620026/why-is-threadlocalrandom-implemented-so-bizarrely

被采纳的答案里解释说,对 jdk 开发者来说 Unsafe 和 get/set 方法都像普通的工具,具体使用哪一个并没有一个准则。

这个答案并没有说服我,于是我另开了一个问题,里面的一个评论我比较认同,大意是 ThreadLocalRandom 和 Thread 不在同一个包下,如果添加 get/set 方法的话,get/set 方法必须设置为 public,这就有违了类的封闭性原则。

内存布局

另一个疑问是我看到 Unsafe.objectFieldOffset 可以获取到属性在对象内存的偏移量后,自己在 IDEA 里使用 main 方法试了上文中提到的 Test 类,发现 Test 类的唯一一个属性 value 相对对象内存的偏移量是 12,于是比较疑惑这 12 个字节的组成。

我们知道,Java 对象的对象头是放在 Java 对象的内存起始处的,而一个对象的 MarkWord 在对象头的起始处,在 32 位系统中,它占用 4 个字节,而在 64 位系统中它占用 8 个字节,我使用的是 64 位系统,这毫无疑问会占用 8 个字节的偏移量。

紧跟 MarkWord 的应该是 Test 类的类指针和数组对象的长度,数组长度是 4 字节,但 Test 类并非数组,也没有其他属性,数据长度可以排除,但在 64 位系统下指针也应该是 8 字节的啊,为什么只占用了 4 个字节呢?

唯一的可能性是虚拟机启用了指针压缩,指针压缩只能在 64 位系统内启用,启用后指针类型只需要占用 4 个字节,但我并没有显示指定过使用指针压缩。查了一下,原来在 1.8 以后指针压缩是默认开启的,在启用时使用 -XX:-UseCompressedOops 参数后,value 的偏移量变成了 16。

小结

在写代码时还是要多注意查看依赖库的具体实现,不然可能踩到意想不到的坑,而且多看看并没有坏处,仔细研究一下还能学到更多。

近期热文推荐:

1.600+ 道 Java面试题及答案整理(2021最新版)

2.终于靠开源项目弄到 IntelliJ IDEA 激活码了,真香!

3.阿里 Mock 工具正式开源,干掉市面上所有 Mock 工具!

4.Spring Cloud 2020.0.0 正式发布,全新颠覆性版本!

5.《Java开发手册(嵩山版)》最新发布,速速下载!

觉得不错,别忘了随手点赞+转发哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-2710.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

STM32CubMx自学笔记(一)-LED灯翻转

STM32CubMX自学笔记(一)---LED灯翻转工程创建系统具体配置工程代码编写下载验证结语工程创建 首先得安装STM32CubMx软件。具体安装步骤参照 保姆级安装步骤,这里将不再赘述,第一节主要是介绍新工程的创建,首先在桌面打…...

十四、Python第十四课——文件和异常

(请先看这篇文章:https://blog.csdn.net/GenuineMonster/article/details/104495419) 如果看完这篇博文,你的问题还是没有解决,那么请关注我的公众号,后台发消息给我吧,当天回复&#x…...

微信小程序趋势及前景,大厂直通车!

最近看到群里看到一个女生,讲述了她从开始选择Android,经过非常努力的学习和挣扎,然而最后面对当前的环境却不得不放弃。看完以后真的非常替她感觉惋惜,如果早几年入行可能结果会比现在好很多,但可惜,这就是…...

设计模式导读助记

各个设计模式的详细介绍都已经完成,但是不经常用总会忘,所以我想用 一句话 总结设计模式,思考模式的真正意图,再用 一点提示 来思考代码如何实现 写在前面 我整理的设计模式这一个系列,主要是结合了以下几本书 : 《设…...

RT-Thrad|STM32F103+ESP8266 S01+RT-Thread联网之环境搭建(1/3)

文章目录前言硬件准备百问网STM32F103ESP8266 01SESP8266 介绍ESP8266 01S技术规格参数软件准备下载安装 Keil μVision5Pack Installer安装 ST-Link 驱动获取RT-Thread源码下载安装 RT-Thread env 工具文章列表 RT-Thrad|STM32F103ESP8266 S01RT-Thread联网之环境搭建(1/3)RT…...

LeetCode 数值的整数次方

实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000 示例 2: 输入&#xf…...

elementUI-Tree 树形控件的使用

elementUI-Tree 树形控件的使用 实现效果: 控件的官方使用说明 控件要求返回的数据结构 {"success": true,"code": 20000,"message": "成功","data": {"items": [{"id": "1394579386…...

2021java1年经验公司面试真题

1面我就省略了,主要就是看你的以前工作情况,以前工作内容能不能清晰表达,还有一些简单的java基础问题,大概20多分钟。二面就是40分钟基础,20分钟业务,10分钟个人情况。下面是二面问题 1.自我介绍 做一下自…...

Unity基础之C#核心篇笔记4:多态

Unity基础之C#核心篇笔记4:多态多态1.多态的概念2.解决的问题3.多态的实现4.总结抽象类和抽象方法1.抽象类2.抽象函数3.总结4.练习题接口1.接口的概念2. 接口的申明3.接口的使用4.接口可以继承接口5.显示实现接口6.总结7.练习题密封方法1.密封方法基本概念2.实例3.总…...

LeetCode每日一题 - 有多少小于当前数字的数字

题目&#xff1a; 给你一个数组 nums&#xff0c;对于其中每个元素 nums[i]&#xff0c;请你统计数组中比它小的所有数字的数目。 换而言之&#xff0c;对于每个 nums[i] 你必须计算出有效的 j 的数量&#xff0c;其中 j 满足 j ! i 且 nums[j] < nums[i] 。 以数组形式返回…...

用Python爬取彼岸图网图片

用Python爬取彼岸图网图片 *使用了 四个模块 import time import requests from lxml import etree import os 没有的话自行百度安装。 #encoding utf-8 import time import requests from lxml import etree import os# http://www.netbian.com/ 爬虫 if __name__ __mai…...

第k个数(快速选择)

算法思路 快速选择&#xff1a; 1.即任意选一个数&#xff0c;将数组划分为二。 2.最终根据该数所在的位置&#xff0c;即第&#xff1f;大&#xff0c;选择第k大的数字所在区间进行划分。 时间复杂度分析&#xff0c;第一次划分n,下一次划分期望n/2&#xff0c;n/4…累加和小…...

yolov5 detect.py报错

新手求助 yolov5训练了自己的数据集后&#xff0c;test没问题&#xff0c;但是运行detect.py就报错了&#xff0c;一直找不到问题所在&#xff0c; 求大佬指点指点...

DEX 争霸战火升级,BabySwap 会否成为下一代黑马?

在 AMM机制大力推动下&#xff0c;DEX的群雄争霸比预想中来得要快且凶猛。伴随着诸如高盛等主流资本逐步认可DeFi 的意义&#xff0c;在真正的去中心化金融爆发的前夜&#xff0c;可以说谁抢占了DEX 红海的先机&#xff0c;谁就赢得了未来。 从早期以太坊的Uniswap和DoDo&…...

flutter 常用的第三方组件

引用文章链接&#xff1a; https://www.jianshu.com/p/a523e5f131b2 1、格式化日期时间组件&#xff1a;https://pub.dev/packages/date_format 2、日期选择组件&#xff1a;https://pub.dev/packages/flutter_cupertino_date_picker 3、轮播图组件&#xff1a;https://pub.…...

Android面试回忆录:帮助程序员提高核心竞争力的30条建议,真香!

**新技术层出不穷&#xff0c;去年kotlin到如今Flutter&#xff0c;技术迭代&#xff0c;你是否会变得固步自封&#xff1f;**那么看本篇文章帮你解决问题&#xff0c;让你知道怎么样学习&#xff0c;学习那些技术点才能不被时代的迭代快速淘汰&#xff01; 首先&#xff0c;先…...

2021-05-30解决centos+宝塔面板,FTP传输421 Too many connections问题错误

解决centos宝塔面板&#xff0c;FTP传输421 Too many connections”问题错误 1、首先连入服务器 在/www/server/pure-ftpd/etc下&#xff0c;找到pure-ftpd.conf 2、vim pure-ftpd.conf 没有vim的&#xff0c;用其他编辑软件也可以 3、找到 #Maximum number of sim clients wit…...

RK3399 DDR频率修改

RK3399 DDR频率修改 一、DDR当前频率获取与可调节范围 1、获取当前DDR频率、可调值、容量 cat /sys/class/devfreq/dmc/cur_freq2、查看DDR频率可调节的值 cat /sys/class/devfreq/dmc/available_frequencies3、获取DDR容量 cat /proc/meminfo二、DDR测试定频 1、因为RK3…...

javascript正则表达式常用合集

javascript正则表达式常用的合集 参考网址 {n}: n 是一个正整数&#xff0c;匹配了前面一个字符刚好出现了 n 次 {n,}: n是一个正整数&#xff0c;匹配前一个字符至少出现了n次 {n,m}: n 和 m 都是整数。匹配前面的字符至少n次&#xff0c;最多m次。如果 n 或者 m 的值是0&…...

qApp加载qss技巧

使用Qt加载qss样式&#xff0c;一般操作是读取文件&#xff0c;通过setStyleSheet设置 但是qApp只需如下&#xff1a; qApp->setStyleSheet("file:///:/test.qss");//只适用于qApp...

测试总结:如何做接口测试

目录 一、接口测试须知 1、接口测试了解 &#xff08;3&#xff09;Http接口的组成 &#xff08;3&#xff09;为什么要做接口测试 &#xff08;1&#xff09;接口测试常用 &#xff08;2&#xff09;接口测试完整图 &#xff08;3&#xff09;接口测试参考计划图 3、企…...

CCF 2014-09-1 相邻数对

题目链接: 2014-09-1 相邻数对. code #include <iostream> #include <algorithm> //引入sort函数using namespace std;int main() {int n;cin >> n;int* nums new int[n];for (int i 0; i < n; i)cin >> nums[i];sort(nums, nums n);int coun…...

学习前端的第十天

这几天深受鼠标双击的折磨&#xff0c;非常痛苦&#xff0c;正好趁618换个鼠标。闲聊就到这吧&#xff0c;今天说说布局方式和浏览器兼容问题。 一、宽高自适应 1、自适应介绍&#xff1a;在以往的开发过程中&#xff0c;大家发现某个区域如果宽度或者高度固定好的话&#xff…...

网络规划-连接网络

文章目录网络规划-连接网络1 连接到广域网1.1 广域网连接方式2.2 专业术语2 点到点连接(PPP)2.1 PPP身份验证协议(PAP)2.2 配置PPP身份验证3 IPv4网络地址转换(NAT)3.1 NAT术语4 VPN4.1 VPN优点4.2 站点到站点VPN(GRE)4.2.1 GRE隧道配置4.2.2 GRE隧道检验4.3 远程访问VPN4.3.1 …...

阿里Java开发手册!阿里java电话面试

前言 不知道大家有没有这样的经历&#xff0c;明明感觉自己这个技术掌握的还行&#xff0c;能写在简历里肯定是有点自信的&#xff0c;但是被面试官一问&#xff0c;就感觉啥也不是 当我从面试的大楼里出来的时候脑袋里还是昏昏沉沉的&#xff0c;你压根不知道我经历了什么&a…...

Java-ArrayList修改和删除(泛型)

import java.util.ArrayList; import java.util.List;//泛型:给集合指定具体存放的数据类型&#xff0c;只能存放自定义数据类型。加了< >的可以使用泛型。 public class Demo3 {public static void main(String[] args) {//集合中只能存放自定义数据类型&#xff0c;不能…...

金三银四大厂面经总结,java怎么快速创建构造方法

前言 Java作为最全面的语言&#xff0c;国内开发者也是最多的&#xff0c;Java综合起来各方面都不错&#xff0c;在大部分场景下是一种稳健的技术选择。加上近年来安卓的推动&#xff0c;目前也是最流行的一种语言。 现在Java的就业市场看起来还是挺大的&#xff0c;而且工资…...

这操作真香!java结合redis秒杀功能

前言 分布式事务主要解决分布式一致性的问题。说到底就是数据的分布式操作导致仅依靠本地事务无法保证原子性。与单机版的事务不同的是&#xff0c;单机是把多个命令打包成一个统一处理&#xff0c;分布式事务是将多个机器上执行的命令打包成一个命令统一处理。 MySQL 提供了…...

RecyclerView实现长按弹出菜单

public class AddressListAdapter extends BaseQuickAdapter<AddressListResult.Address, AddressListAdapter.ViewHolder> {private int position;public AddressListAdapter(Nullable List<AddressListResult.Address> data) {super(R.layout.item_addressshow,...

可以拖拽的元素如何在iframe 中释放(无法触发drop事件)?

可以拖拽的元素如何在iframe 中释放(无法触发drop事件)&#xff1f; 最简单的解决方式&#xff1a;通过css 方式在iframe 上覆盖一层同等宽高的div 并设置透明&#xff01; 然后在这成div上绑定 drop事件 <tempalte><div dragover"dragover($event)">可…...

上海理工大学光电信息与计算机工程学院在哪个校区,上海理工大学光电信息与计算机工程学院怎么样...

2016-08-04 15:18黄皖毅 客户经理电气工程及其自动化本专业培养能够从事与电气工程有关的系统运行、自动控制、电力电子技术、信息处理、试验分析、研制开发、经济管理以及电子与计算机技术应用等领域工作的宽口径"复合型"高级工程技术人才。业务培养要求&#xff1a…...

【调剂】上海电机学院-机械学院-材料加工工程-郭彦兵老师课题组招收研究生...

点击文末的阅读原文或者公众号界面左下角的调剂信息或者公众号回复“调剂”是计算机/软件等专业的所有调剂信息集合&#xff0c;会一直更新的。上海电机学院郭彦兵老师课题组诚招研究生&#xff0c;招收研究生专业&#xff1a;&#xff08;1&#xff09;材料加工工程&#xff0…...

用python+selenium自动登录上海电机学院官网并选课

from selenium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitimport timedriverwebdriver.Chrome()driver.get("http://www.sdju.edu.cn")driver.maximize_window()driver.find_element_by_xpath("//*[idlink]/div/div/div/div/di...

抛物面极值C语言程序,多元函数微分法及其应用期末复习题高等数学下册(上海电机学院)...

第八章 偏导数与全微分一、选择题1.若uu(x, y)是可微函数&#xff0c;且,1),(2x y y x u ,2x xuxy ??则??2x y y u [A ] A. 21-B. 21C. -1D. 12.函数62622-y x y x z [ D ]A. 在点(-1, 3)处取极大值B. 在点(-1, 3)处取极小值C. 在点(3, -1)处取极大值D. 在点(3, -1)处取极小…...

作者:​覃海焕(1978-),女,博士,上海电机学院讲师。

覃海焕&#xff08;1978-&#xff09;&#xff0c;女&#xff0c;博士&#xff0c;上海电机学院讲师&#xff0c;主要研究方向为云计算、大数据技术。...

今年第一所408调剂出炉!上海电机学院考408招调剂

熟悉我们的同学都知道&#xff0c;我们每年都会整理计算机考研相关的调剂信息&#xff0c;今年也不例外。在公众号后台回复调剂&#xff0c;就能看到今年的调剂信息。前段时间&#xff0c;我发了一个调剂信息&#xff1a;【调剂】上海电机学院2021年专业学位硕士研究生调剂信息…...

【招生目录和招生简章】南京航空航天大学 上海海事大学 北京印刷学院 上海电机学院...

小编开了一个专区&#xff0c;提供给同学们各种学校的招生简章和招生目录链接。当然&#xff0c;如果这个学校没有计算机/软件工程等相关专业&#xff0c;在这里可能是没有的。点击阅读原文&#xff0c;查看全部学校的招生简章和招生目录。这是更新的 招生简章和招生目录&#…...

上海电力学院c语言结构体,燃气轮机及其联合循环课后题答案(姚秀平主编版)上海电力学院...

第一章3和4、从热力学角度看&#xff0c;汽轮机循环利用了蒸汽可在常温下凝结的特性&#xff0c;达到了较低的工质平均放热温度&#xff0c;但工质平均吸热温度不高。燃气轮机循环的工质平均吸热温度高&#xff0c;但工质平均吸热温度不低。汽轮机发展方向&#xff1a;开发新材…...

上海电机学院计算机调剂,别傻等成绩!预调剂已经在这几所院校出现了

原标题&#xff1a;别傻等成绩&#xff01;预调剂已经在这几所院校出现了到了这时候&#xff0c;如果还在干等成绩&#xff0c;真的是有点落后了。考研这场战斗已经进入到白热化阶段&#xff0c;复试和调剂也即将扑面而来&#xff0c;现在已经有部分院校的预调剂已经出来了&…...

上海双非【上海电机学院】也改考408!还不是计算机专业!

前几天&#xff0c;小编描述了上海一所一本大学改考408的消息&#xff1a;上海双非【上海海事大学改考408】&#xff01;专硕比学硕更难&#xff1f;当时&#xff0c;小编感觉这仅仅是一所双非大学&#xff0c;计算机学科评评估C-&#xff0c;考408是不是太难了&#xff0c;会造…...

电机学院计算机学,上海电机学院计算机组成原理期末考(练习)

上海电机学院2008_–2009_学年第_1_学期《03305062&#xff3f;计算机组成原理&#xff3f;》课程期末考试试卷 B2008.12开课学院&#xff1a;电子信息&#xff0c;专业&#xff1a;考试形式&#xff1a;闭卷&#xff0c;所需时间 120 分钟考生姓名&#xff1a;学号&#xff1a…...

上海电机学院计算机科学与技术专业怎么样,上海电机学院计算机科学与技术专业2016年在上海理科高考录取最低分数线...

类似问题答案上海电机学院计算机科学与技术专业2016年在河北理科高考录取最低分数线学校 地 区 专业 年份 批次 类型 分数 上海电机学院 河北 计算机科学与技术 2016 二批 理科 531 学校 地 区 专业 年份 批次 类型 分数 上海电机学院 河北 计算机科学与技术 2016 二批 理科 53…...

上海电机学院计算机类分数,2021年上海电机学院投档线及各省最低录取分数线统计表...

2018-2019年上海电机学院投档线及各省最低录取分数线统计表高考填报志愿的时候&#xff0c;查询每个院校投档分数线是志愿填报信息的必要一步。那么什么是投档线呢&#xff1f;高考院校投档线是指以院校为单位&#xff0c;按招生院校同一科类(如文科或理科)招生计划数的一定比例…...

上海电机学院计算机期末,上海电机学院计算机组成原理期末考(练习).docx

文档介绍&#xff1a;上海电机学院2008_– 2009_学年第 _1_学期《 03305062_计算机组成原理_》课程期末考试试卷B2008.12开课学院:电子信息,专业:考试形式:闭卷,所需时间120分钟考生姓名:学号:班级任课教师题序一二三四五六七八总 分得分评卷人一、 填空题(共 25 分,每空格 1 分…...

面试题目记录

这里写目录标题Ci/iemplace右值引用智能指针Lambda表达式Lambda使用问题QT使用qml有哪些问题win32窗口从点击到相应的过程推荐几款实用的C 在线工具C、Qt基础面试题C i/i int i 1;int a i;i 1;int b i;i 1;int c i i;a 1 b 2 c 6 emplace 解释vector.push_back(&q…...

BIM设计 | 学会CAD这5个隐藏操作,让你受益无穷

每一个CAD设计师都会有自己的设计习惯&#xff0c;无论是从CAD的绘图、改图、图层管理、图块管理、甚至是打印设置&#xff0c;都是不尽相同的。 对于还是小白的新手设计师来说&#xff0c;是还没有一套属于自己的操作习惯的&#xff0c;这个阶段大多数新手设计师都是通过参考别…...

一、【redux】redux简介 mini版求和Demo

文章目录1、学习文档2、redux是什么3、什么情况下需要使用redux4、redux工作流程5、redux的三个核心概念5.1、action5.2、reducer5.3、store6、redux的核心API6.1、createStore()6.2、store对象6.3、applyMiddleware()6.4、combineReducers()7、求和Demo&#xff08;纯react版&…...

计算机技术应用包括哪些,计算机的应用包括哪些呢?

计算机是人类科学技术上一项伟大的成就&#xff0c;如今计算机的应用范围已经从科学计算扩展到人类社会的各个领域。计算机之所以如此普及&#xff0c;是由其自身特点所决定的。接下来小编为大家整理了计算机的应用包括哪些呢?希望对你有帮助哦!Computer—Our Good FellowsWha…...

计算机软件系统的组成及功能,计算机软件系统的组成以及工作原理,你知道吗?...

大家都知道&#xff0c;计算机是由很多硬件连接在一起组成的&#xff0c;那么安装完硬件之后&#xff0c;软件也是必不可少的&#xff0c;否则计算机将无法为我们工作。只有硬件的计算机叫做裸机&#xff0c;还不能用它做事情。配上各种软件以后&#xff0c;才能称之为计算机系…...

西邮linux小组2019-2021面试题总结

这篇文章是对linux 近三年的纳新面试题的小小总结&#xff0c;篇幅有点长&#xff0c;希望你可以耐心看完&#xff0c;看完你一定有收获&#xff0c;有什么不妥可以提出的吖 知识点一&#xff1a;sizeof&#xff08;&#xff09;和strlen&#xff08;&#xff09;的异同 先看道…...