- 博客(10)
- 收藏
- 关注
原创 停止线程都有哪些方法?
停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要用它。虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且是已被废弃的方法。在java中有以下3种方法可以终止正在运行的线程:使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。使用stop方法强行终止,但是不推荐这个方法,因为stop和suspend及resume一样都是过期作废的方法。使用interrupt方法中断线程。停止不了的线程
2021-02-01 17:12:20
1967
原创 重学数据结构 - 二分搜索树
为什么要有树结构树结构本身是一种天然的组织,比如公司的组织架构,比如我们的代码结构,图书的索引等。都是一种数结构。树最强大的功能是进行储存查询,为此计算机科学家们创造了诸如红黑树,AVL树,B+树,字典树,堆,并查集等数据结构,它们被广泛地运用于计算机的各个方面。- 一颗较均匀的树其高度∼Θ(log|V|),查询十分高效- 树的空间复杂度为Θ(|V|),利于储存- 树的性质可以一直被维护,能设计出持久化储存管理数据的结构- 树可以递归定义,其子树也满足定义,便于在增删的时候调整结构以维护树的定义
2020-09-25 18:32:12
174
原创 重学数据结构 - 链表与递归
递归基础递归的本质是将一个大的问题转化为更小的问题来处理,假设现在又一个计算的场景如数组求和Sum(array[0 … n-1]) = Sum(array[0]) + Sum(array[1 … n-1]),这条语句实际上是在处理同一个问题,但是等号后面的语句实际上是将前面的一个大的问题拆分成更小的问题来解并且根据这些小问题的解构建出愿问题的答案。是分治算法的核心思想。宏观语义...
2020-08-13 11:41:59
661
原创 重学数据结构 - 链表
链表的基本概念最基本的动态数据结构,与数组,栈,队列依赖于静态数组封装而来的实现不同,链表底层实现了真正的动态数组。链表一种线性的数据结构,通过指针将一个个零散的内存块连接起来,链表的每个内存块称为结点。最简单的动态数据结构链表更重要的作用(引用/指针) - 涉及到内存管理有清晰的递归结构和性质链表 Linked List数据存储在节点中(Node) //一个Node节点中一般来说只包含两个属性 class Node { //当前位置的实际数据
2020-08-04 11:11:39
568
原创 重学数据结构 - 栈和队列
栈的特性栈,一种特殊的数组结构,是一种后进先出的数据结构,对栈的操作通常分为入栈和出栈两种操作。- 在计算机的世界中,栈是一种非常重要的数据结构栈的应用程序调用系统栈比如一个程序在执行时,需要按照一定的条件跳到另外的程序执行,也就是所谓的子函数调用,在这个过程中,计算机就需要一个名称为系统栈的栈结构来记录程序的调用过程。示例Java Demopublic class Func { public void FuncA() { System.out.pr
2020-07-24 01:13:18
586
原创 重学数据结构 - 数组
前言数组虽然是一种简单的数据结构,如果我们从研究数据结构的角度来看这个问题,数据的可挖掘性实际上是很强的。概念把数据码成一排进行存放,Java存储类型固定,如String,Integer等。某些语言是可以存储不同类型的如C或者C++。#include <stdio.h>#include <stdlib.h>typedef union { int intType; char charType; float
2020-07-23 12:48:13
636
原创 如何保证T1,T2,T3三个线程顺序执行
在实际业务场景中,经常会遇到多个线程调用不同的子系统,某些子系统之间的调用需要通过顺序性来保证数据的一致性。也是一个比较经典的多线程面试题。不说废话。直接上方案。使用Join保证线程的顺序执行join的作用Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行执行。当我们调用某个线程的这个方法时,这个方法会挂起调用线程,直到被调用线程结束执行,调用线程才会继续执行。join源代码分析public final synchronized void join(long
2020-07-22 17:10:46
1628
原创 如何实现一个分布式锁?
为什么需要分布式锁?在互联网的发展初期,用户体量较小,架构简单,单体应用可以满足用户需求,当用户量增加到一定程度时,不可避免的出现了竞争关系,所以产生了单机锁来协调资源竞争。但随着业务量和用户量骤增,单体架构已经无法满足现阶段的需求,此时出现了集群,简单的锁机制已经无法满足集群间资源竞争的问题,基于这种场景,出现了分布式锁。锁应该满足的必要条件互斥性可重入高效的加解锁性能公平/非公平/阻塞/非阻塞互斥性共享资源的锁在同一时间只能被一个对象获取可重入为了避免死锁,必须支持可重入,支持
2020-07-17 11:34:14
1303
原创 Centos7下安装ELK日志中心
Centos7下安装ELK日志中心安装jdk安装jdk1.8版本即可,这里不做过多描述安装elasticsearch下载elasticsearchmkdir usr/local/elkwget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.1.tar.gztar -zxvf elasticsearch-6.6.1.tar.gzrm elasticsearch-6.6.1.tar.gzmv ela
2020-07-06 17:45:10
887
原创 使用mysql event解决亿级别数据多表JOIN统计的需求
使用mysql event解决千万级别数据多表JOIN统计的需求背景公司某条业务线存在大量的统计汇总需求,统计范围涉及到十几张表,表数据从200万到1亿不等。里面没个字段都涉及到各种条件查询,排序和分页。由于是接手其他人的代码,所以最初思路还是从MySql逻辑和索引结构上去调整。原始SQL示例SELECT smallCar.device_id, smallCar.device_name, bigCar.bigCarTotal, smallCar.smallCarTotal, hcCar.h
2020-07-06 14:22:32
1431
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人