编程语言 Scala偏函数和偏应用函数 偏函数定义 偏函数是指仅定义了输入参数的子集的函数,下图显示的一个偏函数:f : X -> Y,该函数仅定义了输入参数X的子集1和3,没有包含2。对某些值现在还无法给出具体的操作(即需求还不明朗),也有可能存在几种处理方式(具体的需求),我们可以先对需求明确的部分进行定义,然后视具体情况补充其他域的定义。 yuziyue 10 Aug 2023 · 4 min read
编程语言 Golang 之 int string hex []byte 相互转换 int分为有符号型(int)和无符号型(uint),从使用的角度说,区别就是能支持的数范围大小。大端存储:大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。内存地址由小向大增加,而数据从高位往低位放,比如4个字节的数组[0 0 1 0]表示十进制数 256。 yuziyue 10 Aug 2023 · 9 min read
大数据开发 Flink 如何使用广播变量(批处理) Flink 如何使用广播变量(批处理) 一. 广播变量介绍 广播变量用于批计算。Flink支持广播变量,可以将数据广播到TaskManager上,数据存储在内存中,这样可以减缓大量的shuffle操作,使用广播变量同时也可以节省内存。 某个算子使用广播变量后,该算子内部的任何函数都可以使用这个广播变量。 yuziyue 8 Aug 2023 · 2 min read
大数据开发 Flink 如何实现双流 join 连接 Flink 如何实现双流 join 连接 一. join() join() 即inner join,算子提供的语义为"Window join",即按照指定字段和(滚动/滑动/会话)窗口进行 inner join,支持处理时间和事件时间两种时间类型。left join 可以使用 coGroup 实现。二. coGroup() 使用 coGroup,不管能不能匹配上,都会把原始数据传递,下面的示例使用 coGroup 实现了 left join 的功能。 yuziyue 8 Aug 2023 · 5 min read
大数据开发 Spark task多线程资源争抢问题 Spark task多线程资源争抢问题 在多个task同时读取 object 单例的内部非线程安全的对象时会报错,示例代码如下: 这个对象是线程不安全的,但是在task里面的多个线程会共用这个对象所有可能会有问题 val sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") 单个 partition 顺序执行的不会出现争抢问题 yuziyue 8 Aug 2023 · 1 min read
大数据开发 Flink 自定义 aggregate 总结 reduce和aggregate都是增量聚合,它们的区别如下 AggregateFunction 输入输出元素类型可以不相同。 ReduceFunction 输入输出元素类型相同 AggregateFunction它有三个参数:输入类型(IN),累加器类型(ACC)和输出类型(OUT),需要实现4个方法,所有的方法都是在同一个组里面:ACC merge(ACC a, ACC b); 合并两个累加器 yuziyue 6 Aug 2023 · 3 min read
编程语言 Java 枚举类型的定义与使用 Java 枚举类型的定义与使用 定义枚举类 通过enum关键字来定义枚举类,enum定义的类型就是class,只不过它有以下几个特点: 定义的enum类型总是继承自java.lang.Enum,且无法被继承;只能定义出enum的实例,而无法通过new操作符创建enum的实例;定义的每个实例都是引用类型的唯一实例;每多一个枚举 yuziyue 6 Aug 2023 · 1 min read
编程语言 Java 中List Map Stream排序总结 Java 中List Map Stream排序总结 一. List排序 方法:调用 List 对象的 sort 方法,传入实现了 Comparator 接口的 compare 方法的匿名类。 降序:compare 方法返回相反数,比如 return -o1.compareTo(o2); 按照Key排序 使用TreeMap来实现按照Key排序,TreeMap实现了红黑树的结构,形成了一颗二叉树,它的Key是有序的,可以自定义一个比较器 yuziyue 6 Aug 2023 · 2 min read
编程语言 Java 中如何使用元组 Tuple Java 中如何使用元组 Tuple Java 内置数据类型中是没有 Tuple 元组类型的,需要引入第三方包 vavr,它提供了最多八个元素的 Tuple 类型。添加依赖 vavr Tuple3 tuple3 = Tuple.of("beijing", 50, 60); System.out.println("tuple2._2() = " + tuple2._2()); yuziyue 6 Aug 2023 · 1 min read
编程语言 Java 之 ByteBuffer 详解 类ByteBuffer是Java nio程序经常会用到的类,ByteBuffer的核心特性来自Buffer,用于特定基本类型数据的容器。子类ByteBuffer支持除boolean类型以外的全部基本数据类型。Java提供的主要基础数据类型如下 Buffer也就是由装有特定基本类型数据的一块内存缓冲区和操作数据的4个指针变量(mark标记,position位置, limit界限,capacity容量)组成。 yuziyue 6 Aug 2023 · 7 min read
编程语言 Scala之高阶函数指南 高阶函数是指使用其他函数作为参数、或者返回一个函数作为结果的函数。在Scala中函数是“一等公民”,所以允许定义高阶函数。这里的术语可能有点让人困惑,我们约定,使用函数作为参数,或者返回值为函数的“函数”和“方法”,均称之为“高阶函数”。map 将传入的函数一次作用在序列上 yuziyue 5 Aug 2023 · 3 min read
编程语言 Java中的volatile关键字原理 概述 在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题,被volatile关键字修饰的变量(类的成员变量、类的静态成员变量),具有了可见性、有序性,但是不能保证原子性。volatile关键字保证了多线程间的可见性。被volatile修饰的变量的读取和修改特征: yuziyue 5 Aug 2023 · 4 min read
编程语言 Scala 编程之类与对象 Scala 编程之类与对象 主构造函数:其实就是把类成员初始化 辅助构造函数:额外的构造函数,每个辅助构造方法都必须首先调用另一个构造方法(另一个辅助方法 或者 主构造方法)。在 Java 类中,构造方法要么调用同一个类的另一个构造方法,要么直接调用超类的构造方法。而在 Scala 类中,只有主构造方法可以调用超类的构造方法。 yuziyue 5 Aug 2023 · 4 min read
编程语言 scala没有break关键字怎么办 scala.util.control 包的 Break 类给出了一个 break 方法,可以被用来退出包含它的用breakable标记的代码块。Break类实现的break的方法是抛出一个异常,然后由外围的breakable的方法的应用所捕获,因此对break的调用并不需要跟 breakable 的调用放在同一个方法内。 yuziyue 5 Aug 2023 · 1 min read
编程语言 Scala 中下划线用法总结 Scala 中下划线用法总结 导入通配符 *号在Java中是导入通配符,但是在Scala中是合法的方法名,所以导入包时要使用_代替。类成员默认值 Java中类成员可以不赋初始值,编译器会自动帮你设置一个合适的初始值,而在Scala中必须要显式指定,可以用 _ 让编译器自动帮你设置初始值,注意: 该语法只适用于类成员,而不适用于局部变量。可变参数 yuziyue 5 Aug 2023 · 3 min read
编程语言 Java 之字符串处理方法总结 在Java中,String是一个引用类型,它本身也是一个class,实际上字符串在String内部是通过一个char[]数组表示的 字符串编码转换 在Java中,char类型实际上就是两个字节的Unicode编码。如果我们要手动把字符串转换成其他编码,可以如下这样做。注意:转换编码后,就不再是char类型,而是byte类型表示的数组。 yuziyue 5 Aug 2023 · 3 min read
前端开发 iframe 引发的前端跨域问题总结 由 iframe 引发的前端跨域问题总结 想把第三方网站通过 iframe 的方式嵌入到我网站里面,但是报错 blocked ,下面是详细复现步骤。 网站为了安全考虑,避免别人把自己的网站嵌入到其他的网站上,往往会设置不允许非同源网站共享。同源:表示当前网站的 协议、主机名、端口 都完全相同,表示同一个源,在同源的链接是可以任意访问的 yuziyue 5 Aug 2023 · 4 min read
计算机网络 iptables常用扩展模块使用功能 iptables常用扩展模块使用功能 string 用于匹配报文中的字符串。如果是在某一台服务器中转数据流量时运行iptables:无法控制https的包(因为无法解析https包),可以控制http的包。如果在NGINX的后面运行iptables:https与http都能控制。匹配数据包的IP地址范围 connlimit 匹配与服务端的连接数,表示一个客户端IP与服务器的连接数量 yuziyue 5 Aug 2023 · 2 min read