Entry

抛出这8个问题,检验一下你到底会不会ThreadLocal,来摸个底~

笑着哭i 提交于 2020-08-19 19:02:52
0、问题 和Synchronized的区别 存储在jvm的哪个区域 真的只是当前线程可见吗 会导致内存泄漏么 为什么用Entry数组而不是Entry对象 你学习的开源框架哪些用到了ThreadLocal ThreadLocal里的对象一定是线程安全的吗 笔试题 一、概述 1、官方术语 ThreadLocal类是用来提供线程内部的局部变量。让这些变量在多线程环境下访问(get/set)时能保证各个线程里的变量相对独立于其他线程内的变量。 2、大白话 ThreadLocal是一个关于创建线程局部变量的类。 通常情况下,我们创建的成员变量都是线程不安全的。因为他可能被多个线程同时修改,此变量对于多个线程之间彼此并不独立,是共享变量。而使用ThreadLocal创建的变量只能被当前线程访问,其他线程无法访问和修改。也就是说:将线程公有化变成线程私有化。 二、应用场景 每个线程都需要一个独享的对象(比如工具类,典型的就是 SimpleDateFormat ,每次使用都new一个多浪费性能呀,直接放到成员变量里又是线程不安全,所以把他用 ThreadLocal 管理起来就完美了。) 比如: /** * Description: SimpleDateFormat就一份,不浪费资源。 * * @author TongWei.Chen 2020-07-10 14:00:29 */ public

Citrix虚拟桌面小技巧篇之二虚拟桌面优化

ⅰ亾dé卋堺 提交于 2020-08-19 00:51:44
日拱一卒无有尽,功不唐捐终入海。 宁可十年不将军,不可一日不拱卒。 关于虚拟桌面,在构建Gold Image时,需要做哪些优化,通过本文做一些简单的总结。 本文所说的所有优化都是针对Windows 10. 基于文档的优化 关于Windows 10的优化,可以参考如下链接:Windows 10 Optimization Guide https://support.citrix.com/article/CTX216252 在该手册里,主要提供了如下优化: 移除非必须的应用程序 Scheduled Task Considerations Microsoft CEP优化 安全 Maintenance Optimization Protection HDX优化 系统和用户的优化 用户体验的优化 基于WAN的优化 Printing from non-Windows end points 整个文档共计19页,英文版,全部的优化步骤相对还是比较复杂的。 基于工具的优化-Citrix Optimizer Citrix Optimizer提供了一种图像界面的优化工具,可以帮助工程师优化系统环境,尤其是包含Citrix VDA的操作系统,该工具基于Poweshell编写。 下载地址:https://support.citrix.com/article/CTX224676 最新版本: May 21,

【微信小程序】springboot后台获取用户的openid

徘徊边缘 提交于 2020-08-18 21:34:19
openid可以标识一个用户,session_key会变,所以来获取一下openid。 openid不能在微信小程序中直接获取,需要后台发送请求到微信的接口,然后微信返回一个json格式的字符串到后台,后台处理之后,再返回到微信小程序。 发布的小程序需要https的域名,而测试的时候可以使用http。 小程序在app.js中,修改login()中的内容: // 登录 wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId if (res.code) { wx.request({ url: 'http://localhost:84/user/login' , method: 'POST' , data: { code: res.code }, header: { 'content-type': 'application/x-www-form-urlencoded' }, success(res) { console.log( "openid:"+ res.data.openid); if (res.data.openid != "" || res.data.openid!= null ){ // 登录成功 wx.setStorageSync("openid", res.data

解析webpack插件html-webpack-plugin

安稳与你 提交于 2020-08-18 21:15:26
前言:   本文将分为基本概念、基础使用、模块的运用(问题解决)来进行阐述。 一、基本概念   我们为什么会需要HtmlWebpackPlugin插件?   在真实发布项目时,发布的是dist文件夹中的内容,但是dist文件夹中如果没有index.html文件,那么打包的js等文件也就没有意义了。所以,我们需要将index.html文件打包到dist文件夹中,这个时候就需要使用HtmlWebpackPlugin插件。   那么,HtmlWebpackPlugin插件到低可以为我们做什么呢?   一、自动生成一个index.html文件(可以指定模板来生成)   二、将打包的js文件,自动通过script标签插入到body中 二、基础使用   1、安装插件 npm install html-webpack-plugin --save-dev (因为只在生产环境下用到,所以加上-dev)   2、使用插件,修改webpack.config.js文件中plugins部分的内容如下: module.exports = { plugins: [ new htmlWebpackPlugin({ title: "this is title", // 用于生成的HTML文档的标题 filename: "index.html", // 生成的模板文件的名字,默认index.html template

8月20日在线研讨会预热|SPEOS软件介绍

北城以北 提交于 2020-08-18 20:33:50
随着汽车电子技术的发展,各整车厂为了提升市场竞争力,在中高级车型上采用车身网络控制,以提高整车的舒适性和安全性。经纬恒润作为国内阿一家设计、生产商用车车身网络控制器的供应商,推出分布式网络控制方案,实现整车的灯光、雨刮、门窗等电气控制。整套产品目前已经随整车出口到欧洲、中东地区,现已为一汽解放、中国重汽、陕汽重卡、东风柳汽、江淮、华菱、江铃、三一、宇通、北奔、厦门金龙、Navistar、DAF、MAN、PACCAR等进行配套。 主要功能 经纬恒润的车身网络控制器,除实现传统的车身控制功能以外,还采用了CAN、LIN总线技术,在产品的系列化和后期维护方面都有很大的提升,提高了产品的竞争力。 基本功能 • 雨刮、洗涤控制 • 灯光控制(满足 ECE48法规标准) • 喇叭和右转弯报警等控制 • 后视镜控制 • 门窗控制(自动、点动、防夹) • 遥控控制功能(RKE:Remote Keyless Entry) • CAN通讯协议符合SAE J1939协议 • LIN通讯 • 支持OSEK/AUTOSAR网络管理 • 仪表信号指示及故障诊断功能(基于J1939_DM1协议) • 电气故障诊断(基于UDS协议) • 整车厂总装线/通过4S店自检测模式 • 有效保存运行信息,降低售后服务成本 产品特性与优势 • 简化开关设计,降低复杂度,提高可靠性 • 输出控制采用智能功率开关驱动

Java中最大的数据结构:LinkedHashMap 了解一下?

[亡魂溺海] 提交于 2020-08-18 14:42:15
作者:莫那一鲁道 https://www.jianshu.com/p/06a0fd962e0b Map 家族数量众多,其中 HashMap 和 ConcurrentHashMap 用的最多,而 LinkedHashMap 似乎则是不怎么用的,但是他却有着顺序。两种,一种是添加顺序,一种是访问顺序。 LinkedHashMap 继承了 HashMap 。那么如果是你,你怎么实现这两个顺序呢? 如果实现添加顺序的话,我们可以在该类中,增加一个链表,每个节点对应 hash 表中的桶。这样,循环遍历的时候,就可以按照链表遍历了。只是会增大内存消耗。 如果实现访问顺序的话,同样也可以使用链表,但每次读取数据时,都需要更新一下链表,将最近一次读取的放到链尾。这样也就能够实现。此时也可以跟进这个特性实现 LRU(Least Recently Used) 缓存。 如何使用? 下面是个小 demo LinkedHashMap<Integer, Integer> map = new LinkedHashMap<>(16, 0.75f, true); for (int i = 0; i < 10; i++) { map.put(i, i); } for (Map.Entry entry : map.entrySet()) { System.out.println(entry.getKey() + ":"

Solr API操作

那年仲夏 提交于 2020-08-18 09:03:45
1、需要在/usr/local/services/solr/solr-4.10.3/example/solr/collection1/conf的solrconfig.xml加上 <requestHandler name="/select" class="solr.SearchHandler"> <!-- default values for query parameters can be specified, these will be overridden by parameters in the request --> <lst name="defaults"> <str name="echoParams">explicit</str> <int name="rows">10</int> <str name="df">text</str> </lst> <!-- 这行代码非常重要,如果没有这行,拼写检查,是不起作用的--> <arr name="last-components"> <str>spellcheck</str> 以便spell能够生效 2、在/usr/local/services/solr/solr-4.10.3/example/solr/collection1/conf的schema.xml修改,加上字段,否则会报错 如: <field name="id"

基础——线程

牧云@^-^@ 提交于 2020-08-18 05:15:35
一、线程执行的内存原理 public static void main(String[] args) { MyThread t1 = new MyThread(); MyThread t2 = new MyThread(); t1.start(); t2.start(); } 对应的 内存原理图 大致是这样: 注意事项: 1.执行线程任务的run方法是线程私有的。 2.某个线程对象出现异常不会影响其他线程的执行。 二、创建线程的方式 (1)继承Thread类 1、步骤 1.定义一个类,继承Thread类。 2.重写Thread类的run方法。 3.创建线程对象。 4.调用start方法开启新线程,内部会执行run方法。 2、代码示例 public class MyThread extends Thread { @Override public void run() { // 获取线程名称 String threadName = this.getName(); for (int i=0;i<100;i++) { // 复习异常抛出的方法,抛出一个运行时异常 if("Thread-1".equals(threadName) && i == 3){ throw new RuntimeException(threadName + "出问题了"); } System.out.println

接上

我的未来我决定 提交于 2020-08-17 19:05:37
//如果类加载器不为null,则加载类路径下spring.factories文件,将其中设置的配置类的全路径信息封装 为Enumeration类对象 Enumeration urls = classLoader != null ? classLoader.getResources("META-INF/spring.factories") : ClassLoader.getSystemResources("META-INF/spring.factories"); LinkedMultiValueMap result = new LinkedMultiValueMap(); //循环Enumeration类对象,根据相应的节点信息生成Properties对象,通过传入的键获取值,在将值切割为一个个小的字符串转化为Array,方法result集合中 while(urls.hasMoreElements()) { URL url = (URL)urls.nextElement(); UrlResource resource = new UrlResource(url); Properties properties = PropertiesLoaderUtils.loadProperties(resource); Iterator var6 = properties.entrySet()

LinkedList与LinkedHashMap的区别

徘徊边缘 提交于 2020-08-17 18:00:19
LinkedList与LinkedHashMap的区别 LinkedList LinkedList 底层数据结构是一个双向链表,链表的每个节点都可以向前或者向后传递。具有一下概念: 链表的节点称为Node,有属性next,prev。分别指向后一个节点和前一个节点。 first表示头节点,前一个节点为null last表示尾节点,后一个节点为null LinkedList源码 public class LinkedList < E > extends AbstractSequentialList < E > implements List < E > , Deque < E > , Cloneable , java . io . Serializable { transient int size = 0 ; /** * Pointer to first node. * Invariant: (first == null && last == null) || * (first.prev == null && first.item != null) */ transient Node < E > first ; /** * Pointer to last node. * Invariant: (first == null && last == null) || * (last.next