4 bitcarmanlee

尚未进行身份认证

暂无相关简介

等级
TA的排名 328

Java 程序员都该懂的 volatile 关键字

原文链接https://www.jianshu.com/p/4aea469f8e47一. 主存与工作内存说 volatile 之前,先来聊聊 Java 的内存模型。在 Java 内存模型中,规定了所有的变量都是存储在主内存当中,而每个线程都有属于自己的工作内存。线程的工作内存保存了被该内存使用到的变量的主内存副本拷贝,线程对变量的所有操作(读取,赋值等)都必须在工作内存中进行,而不能直接对...

2020-02-20 16:39:47

spark User class threw exception: java.lang.NoSuchMethodError

在spark 集群上运行job的时候,经常会出现类似如下错误提示:User class threw exception: java.lang.NoSuchMethodError: org.apache.spark.WritableConverter$.writableWritableConverterFn(Lscala/reflect/ClassTag;)Lscala/Function0;at...

2020-02-08 12:14:37

查找算法小结

前言对数据进行查找是数据处理中一个最基本最常见同时也最重要的操作。那么常见的查找方法有哪些,怎么能够实现又好又快的查找方式呢?下面来做一个小结1.遍历,顺序查找如果数据没有任何特点可言,要在一堆数据比如一个一维数组中查找一个特定的数据,此一维数组没有规律。那么很自然想到的方法就是遍历该一维数组,然后与特定数据进行比较看是否相同。时间复杂度分析该特定数据有可能再数组开头,也有可能再数组的末...

2020-02-01 22:04:46

linux shell用变量的值作为新变量名

实例如下:path1="123abc"i=1pathstr=path$iecho $pathstr# 结果为path1# 想将path1替换为123abcpath=`eval echo '$'"$pathstr"`echo $patheval命令小结:eval命令将会首先扫描命令行进行所有的替换,憨厚再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两...

2020-01-20 09:52:41

java线程池小结

1.线程池相关的类1.Executor接口,将任务提交与任务的细节解耦开。Executor接口只有一个execute方法public interface Executor { /** * Executes the given command at some time in the future. The command * may execute in a ne...

2019-12-28 20:49:24

Hash算法小结

1.哈希(Hash)与加密(Encrypt)的区别在本文开始,我需要首先从直观层面阐述哈希(Hash)和加密(Encrypt)的区别,因为我见过很多朋友对这两个概念不是很清晰,容易混淆两者。而正确区别两者是正确选择和使用哈希与加密的基础。概括来说,哈希(Hash)是将目标文本转换成具有相同长度的、不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的、可...

2019-12-27 15:03:53

maven跳过单元测试-maven.test.skip和skipTests的区别

-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。-Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。1.maven.test.skip使用maven.test.skip,不但跳过单元测试...

2019-12-27 11:05:40

Thrift 对象序列化、反序列化-字节数组分析

0.说明本篇博客仅分析Thrift对象的序列化、反序列化的字节数组,以及Thrift对象的序列化、反序列化原理。其他源码分析会另开章节~1.准备工作定义一个 Thrift 文件 struct Person { 1: required i32 age; 2: required string name; }生成 Java 代码thrift -r --gen java t...

2019-10-18 09:57:19

VIM空格和TAB转换

在.vimrc中添加以下代码后,重启vim即可实现按TAB产生4个空格:set ts=4 (注:ts是tabstop的缩写,设TAB宽4个空格)set expandtab对于已保存的文件,可以使用下面的方法进行空格和TAB的替换:TAB替换为空格::set ts=4:set expandtab:%retab!空格替换为TAB::set ts=4:set noexpandtab...

2019-10-10 20:01:15

hive collect_set mysql group_concat

1.hive中collect_set用法hive表有两列,其中一列为id,另外一列为channel。现在想把相同id的channel聚合到一块并去重。比如表中如下数据id1 c1id2 c2id1 c2id1 c1id1 c3id1 c3id2 c4输出结果如下id1 c1,c2,c3id2 c2,c4用collect_set函数可以满足上面的要求select id, ...

2019-09-30 17:58:20

scala中的枚举

1.scala枚举原理严格来说,和其它语言不同,Scala 并没有枚举这种类型。Scala 中的枚举值只是Enumeration下的Value类的实例,而不是枚举自身的实例。Value类的实例主要依靠其构造方法的两个值:id与name来构建。其中,id是自增长,name如果不指定时默认使用的就是值的名字。所以不像其它语言,Scala 并不能任意定义构造方法来构造枚举。abstract clas...

2019-09-26 15:21:27

scala中class,object,trait的区别

1.objectobject的特点是:1.可以拥有属性和方法,且默认都是"static"类型,可以直接用object名直接调用属性和方法,不需要通过new出来的对象(也不支持)。2.object里的main函数式应用程序的入口。3.object和class有很多和class相同的地方,可以extends父类或Trait,但object不可以extends object,即object无法作...

2019-09-25 19:51:05

埃氏筛法求区间内质数

1.判断整数是否为质数如果要判断某个整数是否为质数,这个相信不是很难。 public static boolean prime(int n) { if (n == 2) { return true; } if (n % 2 == 0) { return false; } ...

2019-09-01 12:11:54

linux查看进程占用内存与ps命令

1.查看内存方法1首先通过ps查找进程idps -ef | grep redismi 12455 30314 0 16:34 pts/26 00:00:00 redis-climi 17963 17046 0 17:34 pts/28 00:00:00 grep --color=auto redisredis 31087 1366 0 8月...

2019-08-29 17:51:08

redis安装与指标监控

1.redis安装在ubuntu上安装redis非常简单sudo apt-get install redis-server安装完成后,Redis服务器会自动启动。ps -aux | grep redusredis 31087 0.0 0.0 56348 19084 ? Ssl 8月27 1:00 /usr/bin/redis-server *:6379...

2019-08-29 16:58:49

sympy模块解指数方程

遇到一个形如α∗e−29=0.1\alpha * e^{-29} = 0.1α∗e−29=0.1的方程,求解α\alphaα的值。python中的sympy模块可以很轻松地解决这个问题。具体代码如下from sympy.abc import x, y, z, a, bfrom sympy import expprint sympy.solve(exp(-1 * x * 29) - 0.1...

2019-08-26 10:06:50

ValueError: Object arrays cannot be loaded when allow_pickle=False

在运行keras相关的代码时,发现报如下异常:ValueError: Object arrays cannot be loaded when allow_pickle=False在google上搜索一番,发现引起该问题的原因如下:本地numpy的版本为1.16.4。该版本numpy的函数np.load()和np.lib.format.read_array()采用allow_pickle关键...

2019-08-13 09:54:25

ImportError: cannot import name 'abs'

import tensorflow时候出现如下错误:ImportError: cannot import name 'abs'经过google,找到了原因,发现是protobuf与tensorflow发生了冲突。1.先删除tensorflow相关的模块pip uninstall tensorflow2.删除protobuf相关的模块pip uninstall protobuf3...

2019-08-06 14:51:09

linux shell sort多字段排序

需求:对第一列按数值大小排序,如果第一列相同对第四列按数值大小排序代码:sort -t $'\t' -k 1n -k 4nr xxxfile-k选项的具体语法格式要继续往下深入的话,就不得不来点理论知识。你需要了解-k选项的语法格式,如下:[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]...

2019-07-16 11:41:22

spark多字段排序与取topN

1.多字段排序前面介绍了[k,v]结构的rdd排序方法,下面来看更为复杂的情况,如果有更为复杂的多字段排序需求该怎么处理?比如有如下数据1 21 31 11 61 42 52 82 3我们现在想先对第一列逆序排,如果第一列相同再按第二列逆序排,该怎么办呢?以下两种方式都可以满足上面的需求1.1 定义SecondSortKey来实现首先我们定义一个SecondSortK...

2019-07-16 11:00:08

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。