ThreadLocal用在线程中存储线程的变量,每个线程被创建都会有自己的ThreadLocal对象,ThreadLocal对其他线程是不可见的,各个线程维护自己的ThreadLocal变量。 ThreadLocal内部有一个ThreadLocalMap的内部类,其中的Entry存储了当前线程的数据。 static class ThreadLocalMap { /** * The entries in this hash map extend WeakReference, using * its main ref field as the key (which is always a * ThreadLocal object). Note that null keys (i.e. entry.get() * == null) mean that the key is no longer referenced, so the * entry can be expunged from table. Such entries are referred to * as "stale entri.... 有更新! 关于ThreadLocal 程序人生
1、HashMap HashMap使用数组+链表的形式存储,初始化的时候,会根据传入的数组大小,找到一个最接近且大于当前值的2的幂,源码中方法如下: /** * Returns a power of two size for the given target capacity. */ static final int tableSizeFor(int cap) { int n = cap - 1; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |= n >>> 8; n |= n >>> 16; return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1; } 对传入的值做无符号右移,然后经行一个或操作,最终得到一个大于传入的值的2的幂。 hashmap是通过数组+链表或红黑树的形式存储数据的 transient Node<K,V>[] table.... 有更新! Java中的Map 程序人生
最近处理了一个上传文件后乱码的问题,下午无心工作,写此文记录此次事故。 项目使用struts1作为MVC框架,在项目运行过程中,出现了文件上传中文乱码的问题。 经排查,发现是代码在后端获取了输入流,读取存储到一个字节数组,但是在将字节数组转成字符串的时候,没有指定编码,导致后面的程序拿到的文件名一直是乱码,此处建立字符串指定编码即可解决。 new String(m_binArray, start, (end - start) + 1,"GBK"); web项目乱码的问题处理,万变不离其宗,进行下述操作一般可以解决。 将页面的编码和后端的编码统一设置 <%@ page language="java" pageEncoding="GBK"%> request.setCharacterEncoding("GBK"); response.setCharacterEncoding("GBK"); 后端过滤器统一处理编码 form表单提交的编码也要设置 accept-charset="GBK" enctype="multipart/form-data" 如果确定前后端.... 有更新! web项目乱码的问题处理 程序人生
拉取镜像 docker pull apache/zeppelin:0.9.0 启动容器 docker run -d --name zeppelin0.9 -p 8888:8080 apache/zeppelin:0.9.0 zeppelin的版本只到0.9.0,具体的docker版本号可以到docker镜像仓库查看https://hub.docker.com/ 有更新! docker启动zeppelin 程序人生
拉取镜像 docker pull flink 运行容器 docker run -t -d --name jobmanager --network host -e JOB_MANAGER_RPC_ADDRESS=jmr -p 8081:8081 flink jobmanager 有更新! docker启动flink 程序人生
拉取镜像 docker pull streamsets/datacollector 运行容器 docker run --restart=always -p 18630:18630 -d --name streamsets-dc streamsets/datacollector 有更新! docker启动streamsets 程序人生