work hard work smart

专注于Java后端开发。 不断总结,举一反三。
随笔 - 1158, 文章 - 0, 评论 - 153, 阅读 - 186万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

02 2021 档案

摘要:利用Executors创建不同的线程池满足不同场景的需求 线程池的创建方式: Java基础二、多线程 1、Fork/Join框架 把大任务分割成若干小任务并行执行,最终汇总每个小任务结果后得到大任务结果的框架。 2、Work-Stealing算法: 某个线程从其他队列里窃取任务来执行。 当某个线程闲 阅读全文

posted @ 2021-02-28 14:17 work hard work smart 阅读(61) 评论(0) 推荐(0) 编辑

摘要:数据库Group by语句调优 松散索引扫描(Loose Index Scan):性能最好 explain中会有Using index for group-by 紧凑索引扫描(Tight Index Scan): 性能第二 explain中无明显标识 临时表(Temporary table): 性能 阅读全文

posted @ 2021-02-27 17:41 work hard work smart 阅读(239) 评论(0) 推荐(0) 编辑

摘要:Order By语句优化最好的做法是: 利用索引避免排序 哪些情况下Order by字句能用索引 MySQL排序原理 Order by调优原则与技巧 Order by调优实战 1、哪些情况下Order by字句能用索引 下图是B+Tree 利用索引本身的有序性,让MySQL跳过排序过程。 测试数据准 阅读全文

posted @ 2021-02-27 16:17 work hard work smart 阅读(173) 评论(0) 推荐(0) 编辑

摘要:一、count实验和结论 1、测试数据准备 create table user_test_count ( id int primary key not null auto_increment, name varchar(45), age int, email varchar(60), birthda 阅读全文

posted @ 2021-02-27 16:16 work hard work smart 阅读(409) 评论(0) 推荐(0) 编辑

摘要:-- 查询第一页(前10条),花费102msselect * from employees limit 0,10; -- 查询300001~300010,花费230msselect * from employees limit 300000,10; explain select * from emp 阅读全文

posted @ 2021-02-27 16:12 work hard work smart 阅读(150) 评论(0) 推荐(0) 编辑

摘要:1、第一范式(1NF) 字段具有原子性,即数据库表的每一个字段都是不可分割的原子数据项,不能是集合、数组、记录等非原子数据项。 当实体中的某个属性有多个值时,必须拆分为不同的属性。 如地址address字段,可以拆分成省市区 2、第二范式(2NF) 满足1NF的基础上,要求每一行数据具有唯一性,并且 阅读全文

posted @ 2021-02-27 13:47 work hard work smart 阅读(203) 评论(0) 推荐(0) 编辑

摘要:一、JOIN语句优化 join的种类有哪些? 彼此的区别? join有哪些算法? join语句如何优化 1、join的种类有哪些? 彼此的区别? 还有一种join select * from A a corss join B b; 笛卡尔积连接。行数是A表和B表的乘积。 如果corss join带有 阅读全文

posted @ 2021-02-27 13:44 work hard work smart 阅读(375) 评论(0) 推荐(0) 编辑

摘要:在Windows下搭建Scala开发环境,需要做以下几个步骤 1) 安装JDK 2) 安装Scala,并配置环境变量 3) Idea安装并创建Scala 类 1、安装JDK JDK安装,这里不再介绍,如下图,可以查看安装后的版本。 2、下载Scala 下载scala-2.11.7.zip,解压到D: 阅读全文

posted @ 2021-02-22 13:28 work hard work smart 阅读(283) 评论(0) 推荐(0) 编辑

摘要:Kibana版本为7.4.2,与ElasticSerach 7.4.2 保持一致。 1、解压 cd /home/tools tar -zxvf kibana-7.4.2-linux-x86_64.tar.gz mv kibana-7.4.2-linux-x86_64 /usr/local/ 2、修改 阅读全文

posted @ 2021-02-20 16:39 work hard work smart 阅读(286) 评论(0) 推荐(0) 编辑

摘要:ElasticSearch安装请参考: Linux 下ElasticSearch安装 登录Kibana, 点击Manage, 点击Index Patterns, 然后创建index pattern。 输入app-log-*, 点击Next step 点击创建 点击搜索,点击索引app-log-* 可 阅读全文

posted @ 2021-02-20 16:37 work hard work smart 阅读(128) 评论(0) 推荐(0) 编辑

摘要:一、应用场景 1、消息队列 2、行为跟踪 3、元信息监控 4、日志收集 5、流处理 6、事件源 7、持久性日志 commit log 二、案例 1.下载与安装 1)Zookeeper下载 http://zookeeper.apache.org/releases.html#download 2)Kaf 阅读全文

posted @ 2021-02-20 16:35 work hard work smart 阅读(103) 评论(0) 推荐(0) 编辑

摘要:分布式消息队列(MQ)应用场景 服务解耦 削峰填谷 异步化缓冲 分布式消息队列(MQ)应用思考点? 生产端可靠性投递 消费端幂等 高可用 低延迟 消息可靠性 扩展性 堆积能力 分布式消息队列(MQ)与技术选型 主流的分布式消息中间件 ActiveMQ: 传统行业,中小型公司,并发和消息的承载能力不是 阅读全文

posted @ 2021-02-20 16:33 work hard work smart 阅读(92) 评论(0) 推荐(0) 编辑

摘要:一、算法导论中的红黑树 1、每个节点或者是红色的,或者是黑色的 2、根节点是黑色的 3、每一个叶子节点(最后的空节点)是黑色的 4、如果一个节点是红色的,那么他的孩子节点都是黑色的 5、从任意一个节点到叶子节点,经过的黑色节点是一样的 二、2-3树 满足二分搜索树的基本性质 节点可以存放一个元素或者 阅读全文

posted @ 2021-02-17 20:37 work hard work smart 阅读(77) 评论(0) 推荐(0) 编辑

摘要:基于平衡二叉树实现Set public class AVLTreeSet<E extends Comparable<E>> implements ISet<E> { private AVLTree<E,Object> avl; public AVLTreeSet(){ avl = new AVLTr 阅读全文

posted @ 2021-02-14 21:56 work hard work smart 阅读(140) 评论(0) 推荐(0) 编辑

摘要:基于平衡二叉树实现Map public class AVLTreeMap<K extends Comparable<K>,V> implements IMap<K,V> { private AVLTree<K,V> avl; public AVLTreeMap(){ avl = new AVLTre 阅读全文

posted @ 2021-02-14 21:53 work hard work smart 阅读(146) 评论(0) 推荐(0) 编辑

摘要:平衡树与AVL 1、二分搜索树存在的问题 如果数据是顺序添加到二分搜索树,二分搜索树会退化成一个链表,这就好大大降低二分搜索树的效率。 如何解决这个问题呢? 需要添加一种机制,使得二分搜索树维持平衡二叉树的性质。AVL树就是一种经典的平衡二叉树。 2、AVL树介绍 AVL的名称来自俄罗斯两位科学的名 阅读全文

posted @ 2021-02-14 21:42 work hard work smart 阅读(335) 评论(0) 推荐(0) 编辑

摘要:一、优先队列场景:1、系统中动态选择优先级最高的任务执行2、医院根据患者的患病情况,选择哪个患者最先做手术。3、游戏中,士兵去攻击优先级最高的那个敌人。 二、优先队列底层数据结构复杂度对比 三、堆 1、二叉堆Binary Heap 使用二叉树表示的堆,二叉堆是一棵完全二叉树 完全二叉树: 把元素顺序 阅读全文

posted @ 2021-02-13 22:28 work hard work smart 阅读(146) 评论(0) 推荐(0) 编辑

摘要:1、什么是Map(映射) 存储( 键,值) 数据对的数据结构(Key,Value) 根据键(Key),寻找值(Value) 非常容易使用链表或者二分搜索树实现。 2、基于链表实现Map public class LinkedListMap<K,V> implements IMap<K,V>{ pri 阅读全文

posted @ 2021-02-12 22:46 work hard work smart 阅读(257) 评论(0) 推荐(0) 编辑

摘要:集合的典型应用: 客户统计 词汇量统计 1、基于二分搜索树的集合 定义接口ISet public interface ISet<E> { void add(E e); void remove(E e); boolean contains(E e); int getSize(); boolean is 阅读全文

posted @ 2021-02-12 13:58 work hard work smart 阅读(127) 评论(0) 推荐(0) 编辑

摘要:1、为什么要使用树结构 将数据使用树结构存储后,出奇的高效。 2、常用的数结构 二分搜索树(Binary Search Tree) 平衡二叉树: AVL; 红黑树 堆; 并查集 线段树; Trie(字典树,前缀树) 3、二叉树 和链表一样,动态数据结构 对于每一个节点,最多有两个孩子。 二叉树具有唯 阅读全文

posted @ 2021-02-11 21:17 work hard work smart 阅读(91) 评论(0) 推荐(0) 编辑

摘要:一、Leetcode中与链表向操作 203. 移除链表元素 删除链表中等于给定值 val 的所有节点。 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5 https://leetcode-cn.com/problems/remove-lin 阅读全文

posted @ 2021-02-11 10:41 work hard work smart 阅读(61) 评论(0) 推荐(0) 编辑

摘要:1、改进的链表(增加tail) 增加tail,指向链表尾部节点。这样在head和tail添加节点都很容易。 从tail端删除节点并不容易,因为无法找到tail之前的那个节点。在head端删除节点容易。 根据以上特性, head端作为队首, tail端最为队尾。 从head端删除元素,从tail端插入 阅读全文

posted @ 2021-02-09 10:57 work hard work smart 阅读(175) 评论(0) 推荐(0) 编辑

摘要:从上一篇博客链表( 自定义链表)知道,链表如果增删只对链表头操作O(1), 查找链表头元素O(1) ,这样的操作符合栈这个数据结构。 下面我们使用自定义链表实现自定义栈 1、前面定义的栈接口 public interface IStack<E> { int getSize(); boolean is 阅读全文

posted @ 2021-02-08 23:33 work hard work smart 阅读(133) 评论(0) 推荐(0) 编辑

摘要:1、什么是链表? 数据存储在“节点”(Node)中 Class Node{ E e; Node next; } 有点: 真正的动态,不需要处理固定容量的问题。 缺点: 和数组相比,丧失了随机访问的能力。 2、数组和链表的对比 数组最好用于索引有语义的情况,如scores[101], 学号为101的学 阅读全文

posted @ 2021-02-08 22:59 work hard work smart 阅读(279) 评论(0) 推荐(0) 编辑

摘要:1、什么是队列 队列也是一种线性结构 相比数组,队列对应的操作是数组的子集 只能从一端(队尾)添加元素,只能从另一端(队首)取出元素。 队列是一种先进先出的数据结构( 先到先得) First In First Out(FIFO) 2、自定义队列 1) 定义接口 public interface IQ 阅读全文

posted @ 2021-02-07 22:18 work hard work smart 阅读(173) 评论(0) 推荐(0) 编辑

摘要:1、什么是栈 栈也是一种线性结构, 相比数组,栈对应的操作是数组的子集 只能从一端添加元素,也只能从一端取出元素 这一端称为栈顶 栈是一种后进先出的数据结构。 2、栈的应用 1) 编辑器无处不在的Undo操作(撤销) 2) 程序调用的系统栈 函数A中调用函数B,函数B中调用函数C。 如果C函数执行完 阅读全文

posted @ 2021-02-07 13:50 work hard work smart 阅读(108) 评论(0) 推荐(0) 编辑

摘要:数组的定义,参考Java 数组 数组的使用 1、定义一个数组 //必须初始化数组的长度,这里为10 int[] arr = new int[10]; for(int i = 0;i < arr.length; i++){ arr[i] = i; } //设置初始值 int[] score = new 阅读全文

posted @ 2021-02-07 09:26 work hard work smart 阅读(322) 评论(0) 推荐(0) 编辑

摘要:一、Spark下载 进入官网下载需要的版本: http://archive.apache.org/dist/spark/ 官网下载地址太慢,建议在Apache国内镜像下载 地址1:http://mirror.bit.edu.cn/apache/ 地址2:https://mirrors.tuna.ts 阅读全文

posted @ 2021-02-04 15:38 work hard work smart 阅读(150) 评论(0) 推荐(0) 编辑

摘要:一、Spark SQL介绍 1、为什么需要SQL 1) 事实上的标准 2) 易学易用 3) 受众面大 2、Shark(已经停止维护,不建议在生产上使用。) Shark产生的目的就是为了让hive跑在spark之上。 Hive: 类似于sql的Hive QL语言, sql 翻译成 mapreduce 阅读全文

posted @ 2021-02-03 16:29 work hard work smart 阅读(140) 评论(0) 推荐(0) 编辑

摘要:Spark是一个快速且通用的集群计算平台 1、Spark概述及特点 1) Speed: 速度。执行速度快,开发速度提高了很多。 Spark扩充了流行的MapReduce计算模型 Spark是基于内存的计算。 2) Ease of User: 易用。支持多种语言,如Python,Java,Scala等 阅读全文

posted @ 2021-02-03 13:37 work hard work smart 阅读(316) 评论(0) 推荐(0) 编辑

摘要:1、创建表 create table hive_wordcount(context string); 2、查看表 show tables; 3、查询表数据 4、查看刚才创建的Mysql数据库sparksql的表TBLS,可以发现已经有1条记录了,TBL_NAME 为hive_wordcount 从C 阅读全文

posted @ 2021-02-02 23:12 work hard work smart 阅读(167) 评论(0) 推荐(0) 编辑

摘要:1、Hive是什么 由Facebook开源,最初用于解决海量结构化的日志数据统计问题。 构建在Hadoop之上的数据仓库 Hive定义了一种类SQL查询语言: HQL(类似SQL但不完全相同) 通常用于进行离线数据处理(采用MapReduce) 底层支持多种不同的执行引擎(包括MapReduce、T 阅读全文

posted @ 2021-02-02 21:12 work hard work smart 阅读(178) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示