自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 jvm系列

虚拟机分为两种:程序虚拟机:jvm等 系统虚拟机:VMware等jvm的位置程序虚拟机(jvm)需要运行在操作系统之上,和硬件没有直接的交互。在安装虚拟机时要关注是安装在哪个操作系统上,不同操作系统的虚拟机是不一样的。而系统虚拟机用来模仿硬件。jdk、jre、jvm三者的关系...

2020-08-25 10:15:45 120

原创 设计模式

单例:1、饿汉式:类加载到内存后,就实例化一个单例,JVM保证线程安全,简单实用,推荐使用唯一缺点:不管用到与否,类装载时就完成实例化public class Singleton1 { private static final Singleton1 INSTANCE = new Singleton1(); private Singleton1() { } public static Singleton1 getInstance(){ ret

2020-07-21 22:59:54 113

原创 客户端&服务器访问方式的演进

前言:1、网络模型: a.编程模型:TCP、UDP i. TCP : 可靠连接,使命必达,速度慢 ii. UDP : 不可靠,速度快 b. BIO / OIO i. Blocking IO / Old IO c. NIO(linux支持) i. New IO : Non-Blocking IO d. AIO(仅仅windows支持) i. Asynchronous IO...

2020-07-15 14:38:11 413

原创 java之Lambda表达式

目录一、简单实例:二、Lambda表达式的使用三、方法引用一、简单实例: Runnable r1 = new Runnable() { @Override public void run() { System.out.println("我爱你中国"); } }; r1.run(); System.out.println("

2020-07-13 17:58:36 122

原创 集合

List:ArrayList: jdk1.2, 线程不安全 底层使用数组:Object[ ] ,如果非要使用线程安全的ArrayList可以使用Collections工具类中的某个方法。 LinkList: jdk1.2, 线程不安全 底层使用双向链表 Vector: jdk1.1, 线程安全 底层使用数组:Object[ ] 很少用了一、ArrayList源码分析:1、jdk1.7情况下:ArrayList list = n...

2020-07-08 17:13:30 96

原创 枚举

自定义枚举类:public class test01 { public static void main(String[] args) { System.out.println(Session.AUTOMN.getAge()); System.out.println(Session.AUTOMN.getName()); }}class Session{ private final String name; private final

2020-07-07 17:29:52 69

原创 String类

目录创建String实例的方式:String 、StringBuilder、StringBuffer对比创建String实例的方式: // 在方法区的常量池生成一个字符串abc,如果 String str1 = "abc"; // str2 和str1引用的是同一个字符串,也就是说在常量池中只有一个abc String str2 = "abc"; // 本质上 this.value = new char[0];

2020-07-05 17:24:49 88

原创 java多线程学习总结

大纲:基本概念:程序、进程、线程 线程的创建和使用 线程的生命周期 线程的同步 线程的通信 JDK5.0新增线程创建方式一、基本概念:1、程序:一段静态的代码2、进程:是程序的一次执行过程,或者是正在运行的一个程序,是一个动态的过程。有它自身的产生、存在、和消亡的过程——生命周期进程作为资源分配的单位,系统会在运行时为每个进程分配不同的内存区域3、线程:进程可以进一步细化为线程,是一个程序内部的一条执行路径。线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器(p

2020-07-04 19:10:04 181

原创 java之多态

2020-06-16 08:58:20 51

原创 java之类的构造器

super调用构造器:我们可以在子类的构造器中显示的使用“super(形参列表)”的方式,调用父类中声明的指定的构造器 “super(形参列表)”的使用,必须声明在子类构造器的首行! 我们在类的构造器中,针对于“this(形参列表)”或"super(形参列表)"只能二选一,不能同时出现 在构造器的首行,没有显示的声明“this(形参列表)”或"super(形参列表)",则默认调用的事父类中空参的构造器 在类的多个构造器中,至少有一个类的构造器中使用了“super(形参列表)”,调用父类中的构造器

2020-06-15 23:11:24 109

原创 java方法重写的规定

重写的规定: 方法的声明:权限修饰符 返回值类型 方法名(形参列表){ // 方法体 }约定俗称:子类中的叫重写的方法,父类中的叫被重写的方法子类重写的方法的方法名和形参列表与父类被重写方法的方法名和形参列表相同 子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符 特殊情况:子类不能重写父类中声明为private权限的方法返回值类型父类被重写的方...

2020-06-15 15:09:36 222

原创 java之日期时间类

JDK1.8之前java.util.Date构造方法:new Date()new Date(long date)经常使用的方法:// 测试此日起是否在指定日期之后boolean after(Date when)// 测试此日期是否在指定日期之前boolean before(Date when)// 比较两个日期的相等性boolean equals(Object ...

2020-03-30 00:00:47 120

原创 java之IO

目录一、文件基本信息:(1) 获取文件或目录的详细信息 (2) 获取文件或目录的路径 (3) 创建、删除、重命名 (4) 判断是文件还是目录 (5) 不存在的一个文件或目录获取文件下一级求一个目录的总大小删除一个包含子目录,子文件的文件夹一、文件基本信息:(1) 获取文件或目录的详细信息 getName() len...

2020-03-28 15:41:17 142

原创 maven隔离

使用maven隔离的必要性为什么引入maven隔离 代码开发、代码测试、发布版本是我们开发过程中必不可少的三个环节,以数据库为例,生产环境所使用的数据库与测试环境所使用的定不相同, 为解决地址不同的问题,我们一般在同一个配置文件中写好两套环境地址,在使用开发环境时,将生产环境配置注释掉;而在发布正式版本前, 需要将开发环境配置注释掉,使用生产环境地址; 这样的来回切换,就很容易导...

2020-03-26 23:40:59 220

原创 log

log4j.rootLogger = debug,stdout,D,E### 输出信息到控制抬 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4...

2020-03-22 10:15:56 86

原创 java异常

所有类的根父类是Object。 枚举的公共父类是Enum,根父类仍然是Object 异常的公共父类是Throwable,根父类仍然是Object 1、异常的公共父类:java.lang.Throwable (1)只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句“抛”出。 (2)只有此类或其子类之一才可以是 ca...

2020-03-21 15:00:56 510

原创 git命令总结

创建git仓库:git init添加文件到git仓库分两步把文件添加到仓库:git add 文件名(git add 后可以接多个文件名,如:git add file1.txt file2.txt) 把文件提交到仓库:git commit -m + 注释 (针对add多个文件,git commit命令可以一次性提交)显示当前仓库的状态:git statusadd之前使用gi...

2020-02-04 23:41:24 73

原创 RDD转换算子

value类型1maprdd.map:调用map方法的源码如下:def map[U: ClassTag](f: T => U): RDD[U] = withScope { val cleanF = sc.clean(f) new MapPartitionsRDD[U, T](this, (context, pid, iter) => iter.map(cl...

2020-02-03 00:04:02 204

原创 RDD的创建

RDD有三种创建方式1、从内存/集合中创建val conf: SparkConf = new SparkConf().setAppName("test01").setMaster("local[*]")val sc = new SparkContext(conf) val rdd1: RDD[Int] = sc.parallelize(List(1, 2, 3, 4))v...

2020-01-21 17:41:56 299

原创 隐式转换之reduceByKey

下面代码中,wordToOne是RDD类型,调用了reduceByKey方法,但是reduceByKey是PairRDD类型的方法,那不属于一个类型,为什么可以调用呢? 或者说RDD类中不存在reduceByKey方法原因是RDD类中有隐式转换,将RDD通过隐式转换是的可以使用PairRDD的方法package com.aiyunxiao.test01import org.apach...

2020-01-19 00:07:38 184

原创 idea编写第一个spark代码

idea中编写好代码,称之为源码。经过编译后会产生一个target包,里面有一个classes包,里面是存放的编译后的代码,此路径称之为classpath。并且resource目录底下的文件也会放入classpath中java要想从classpath中查找文件(配置文件,XML文件)一般使用如下方式(是指从resource文件底下读取配置文件):// 当前环境的类加载器中,...

2020-01-19 00:07:01 148

原创 spark-shell

进入spark目录,运行 "bin/spark-shell",就进入spark-shell环境Spark context Web UI available at http://192.168.1.102:4040Spark context available as 'sc' (master = local[*], app id = local-1579337250011).Spark s...

2020-01-18 21:41:45 180

原创 Node.js之函数

Node.js 函数在 JavaScript 中,一个函数可以作为另一个函数的参数。可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数。function say(word){ console.log(word);}function execute(someFunction,value){ someFunction(value);}execute(s...

2019-12-18 18:34:10 85

原创 Node.js模块系统

模块系统模块系统实现 Node.js 文件可以相互调用。模块是 Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块。这个文件可能是 JavaScript 代码、JSON或者编译过的 C/C++ 扩展。创建模块Node.js 提供了 exports 和 require 两个对象:exports 是模块公开的接口, re...

2019-12-18 18:00:18 91

原创 Node.js之Stream

Stream 流类型Readable - 可读操作 Writable - 可写操作 Duplex - 可读可写操作 Transform - 操作被写入数据,然后读出结果。所有的 Stream 对象都是 EventEmitter 的实例。常用的事件有:data - 当有数据可读时触发 end - 没有更多的数据可读时触发 error - ...

2019-12-18 17:15:15 66

原创 Node.js之EventEmitter

Node.js 之 EventEmitterNode.js 所有的异步 IO 操作在完成时都会发送一个事件到事件队列EventEmitter类events 模块只提供了一个对象:events.EventEmitter 的核心就是事件触发与事件监听功能的封装var EventEmitter = require('events').EventEmitter;var event = ...

2019-12-18 16:23:58 101

原创 Node.js之事件

Node.js 事件循环Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高 Node.js 几乎每一个API都支持回调函数 Node.js 基本上所有的事件机制都是用设计模式中的观察者模式实现。 Node.js 单线程类似进入一个 while(true) 的事件循环,直到没有事件观察者退出,每个已被时间都生成一...

2019-12-18 14:40:02 93

原创 Node.js之回调函数、阻塞、非阻塞、异步、同步

回调函数Node.js异步变成的直接体现就是回调函数异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。回调函数在完成任务后就会被调用,Node使用了大量的对调函数,Node所有API都支持回调函数。我们可以一边读取文件,一边执行其他命令,在文件读取完成之后,将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件I/O操作。这就大大提高了Node.js的性...

2019-12-18 14:08:06 239

原创 Node.js之NPM

npm 安装 Node.js <module name># 如安装 Node.js 常用的 Web 框架模块npm install express # 本地安装npm install express -g # 全局安装 本地安装将安装包放在 ./node_modiles 下(运行npm命令所在目录)(本人是在/usr/local/lib/node_...

2019-12-18 11:45:27 118

原创 node.js小事例

第一步:在mac本上默认安装node就行第二部:编写代码使用 required 模块引入 Node.js模块 创建服务器:服务器用来监听客户端的请求,类似于Apache、Nginx等HTTP服务器 接收请求与相应请求:服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据// 引入第三方模块var http = require('http'...

2019-12-18 10:44:26 89

原创 Python操作MongoDB

插入一条数据import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/")mydb = myclient["runoobdb"]mycol = mydb["sites"] mydict = { "name": "RUNOOB", "alexa": "10000", "url": "https:...

2019-12-18 10:01:36 103

原创 Spark读取mongoDB

此处使用的Spark版本是2.3.2,Scala版本是2.11.12添加的依赖是<dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11&l...

2019-12-16 15:30:44 199

原创 MongoDB之java操作

添加依赖 <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.2.2</version> </dependency>...

2019-12-13 18:25:16 122

原创 MongoDB之排序、索引

sort()方法sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。 基本语法:db.COLLECTION_NAME.find().sort({KEY:1})// 按照字段 likes 讲叙排列db.col.find({},{"title":1,_id:0}).sort({"likes":-1})...

2019-12-12 16:33:22 166

原创 MongoDB之文档操作

MongoDB插入文档文档的数据结构和JSON基本一样 所有存储在集合中的数据都是BSON格式(一种类似JSON的二进制形式的存储格式,Binary JSON)MongoDB使用insert()或者save()方式插入文档// 插入文档db.collection_name.insert(document)// 查看文档db.collection_name.find()// ...

2019-12-12 15:39:02 115

原创 MongoDB简单语法

基本概念SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table collection 数据库表/集合 row document 数据记录行/文档 column field 数据字段/域 index index 索引 table joins ...

2019-12-12 10:55:36 85

原创 集合

Vector 和 ArrayList的比较: vector是最早版本的动态数组,线程安全,不够扩容为原来的2倍,初始容量为10 支持遍历的集合方式有:(1)foreach (2)Iterator (3)支持旧版的Enumeration迭代器 ArrayList相对于vector新一点,线程不安全的,不够扩容为原来的1.5倍,初始容量为10 支持遍历的集合方...

2019-12-04 00:14:02 88

原创 concurrentHashMap

HashMap线程不安全 concurrentHashMap是线程安全的,HashMap默认是数组(16个)+链表,concurrentHashMap有一个分段锁的概念,即对数组的每一个格子进行加锁,这样同时可以有16个线程访问,并且各自加锁后是线程安全的。...

2019-12-03 20:41:29 70

原创 排序算法

冒泡排序public static void bubbleSort(int[] arr){ // 冒泡排序 时间复杂度为O(n^2) int temp = 0; // 临时变量 boolean flag = false; // 标识变量,表示是否进行过较换 for (int i = 0; i < arr.length - 1; i++) { ...

2019-12-03 19:28:38 57

原创 spark离线数仓优化

select方法:当业务需求只取DataFrame的某几列时可以使用select方法来获取其中几列,DataFrame.select(“字段1”,“字段2”,“字段3”) 方法返回值为DataframeDataFrame join的两种方式DataFrameA.join(DataFrameB,DataFrameA(“字段名”)===DataFrameB(“字段名”)) DataF...

2019-12-03 12:44:53 1137

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除