自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《操作系统导论》走读 - 不定期更新

按照先进先出调度、假设A、B、C同时到达系统、且A比B早一点点、B比C早一点点 他们的运行时间都是10m 那么平均周转时间就是T周转时间 = (10+20+30)/3 = 20 (因为程序串行执行需要等上一个进程执行完成)。内存就是一个字节数组、要读取内存、必须制定一个地址、才可以访问到内存中的数据、程序运行时、要一直访问内存、将所有的数据结构保存在内存中,并通过各种指令来访问他们,程序的每个指令也在内存中、因此每次读取指令也需要访问内存。显式方式,用虚拟地址开头的几位标识不同的段。降低权限回到用户指令。

2023-11-09 16:21:19 72 1

原创 数据结构:二叉树及相关算法

二叉树class Tree { Node left; Node right; int value; //递归 public static void f(Tree head) { if(head == null) { reutrn; } f(head.left); f(head.right); } //遍历结果 //1,2,4,4,4,2,5,5,5,2,1,3,6,6,6,3,7,7,7,3,1}遍历先序遍历先序遍历指的是所有子树中先打印头节点、在左节点、最

2021-12-25 21:27:00 216

原创 算法学习:堆排序

一、时间复杂度数组:查询 O(1)删除、插入O(n) 原因因为删除插入需要移动后续数组下标、理想情况为 O(1)、如果最后一位则为 O(n)链表查询 O(n)删除、插入O(1) 只需要找到对应位置两次next指针移动即可...

2021-12-12 23:56:28 175

原创 docker 学习 mysql安装及本地连接docker内数据库

一、下载docker容器mac安装:1.第一种 brew命令 brew cask install docker2.官网安装 https://hub.docker.com/editions/community/docker-ce-desktop-macwindows地址:https://get.daocloud.io/toolbox/二、mysql 容器安装输入命令 docker pull mysql映射好端口号,设置好容器名字docker run -d -p 3307:

2021-06-01 14:01:00 655

转载 java 手写简化版线程池

线程池第一步:设置线程池基本变量 //给定一个初始池大小 private static int workNum = 5; //完成线程池数量 private static volatile int finished_task = 0; private WorkThread[] workThreads; //用于放置线程的池子 private List&...

2019-03-01 14:41:45 199

原创 java 常见排序总结

几种常见排序总结冒泡排序冒泡排序可以说是所有排序中最简单的排序,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。/** * 冒泡法排序 * 需要排序的整型数组 */ public static void bubbleSort...

2019-02-18 14:42:57 266

原创 java 常见的数据结构

抽象数据类型ADT 是带有一组操作的一些对象的集合。诸如表、集合、图以及与他们各自的操作一起形成的这些对象都可以被看作是抽象数据类型。表、栈、队列表表:表的第一种实现方式:数组来实现。虽然数组是由固定容器创建的,但需要的时候可以用双倍的容量创建一个不同的数组,这样的缺点在于事先要对表的大小进行估计,并且当插入删除的时间开销也非常巨大。表的第二种实现方式:简单链表。为了避免插入和删...

2019-02-13 16:22:40 196

原创 java 线程下常用的几种锁机制以及CAS无锁

常见锁使用、信号量、无锁简介在日常开发中,多线程并发使用为了保证数据的一致性,jdk下引入了锁的机制,如我们常见的synchronized关键字和Java.util.concurrent包中的lock接口和ReentrantLock都可以实现锁的功能。一.synchronized关键字(独享,非公平锁)synchronized主要作用是对同步的代码加锁,使每次只有一个线程可以进入同步块。从...

2018-12-28 16:36:35 595

原创 java 线程并发之线程池与拒绝策略

什么是线程池java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池,通俗来说,线程池是为了避免系统频繁的创建和销毁线程,使创建出来的线程可以进行复用的一个保存线程的容器,当线程工作完成,并不直接销毁,而是放入池中等待复用常见的线程池本文着重介绍Executor框架中的5中常用线程池newF...

2018-12-26 16:14:05 328

原创 线程中常用方法总结与对比

线程中常用方法总结与对比(一)在介绍线程之前我们先了解一下线程的五大状态,如图所示:从上图可以看出线程从创建到死亡的全部状态以及相应过程。接下来我们了解一下线程中常用的方法以及区别1.Thread.stop()当我们想关闭当前正在执行的线程时,你会发现,Thread类中有stop(),可能你会直接使用这个方法去关闭线程,的确这是关闭线程最简单的方法,但是你的IDE可能会将这个方法标注为废...

2018-12-24 17:01:55 223

原创 jedisCluster中分布式锁遇到的坑总结篇

不知道大家有没有遇到过jedisCluster.set()方法上锁时出现上锁成功但返回结果并不是OK,具体需求如下:1.跑批量订单,需要对每个订单进行操作。2.其他地方可能操作这些订单。3.为了只有一个地方操作,将所有的订单逐一上锁出现问题,之后我对jedisCluster进行测试 代码如下我们做三次测试以确保实验的准确性:测试1:结果如下redis中查看...

2018-12-20 15:21:59 6082 1

原创 浅谈java内存区域(一)

 一. Java内存区域 Java虚拟机在运行程序时会把其自动管理的内存划分为以上几个区域,每个区域都有其用途以及创建销毁的时机,其中蓝色部分代表的是所有线程共享的数据区域,而绿色部分代表的是每个线程的私有数据区域。 1.程序计数器      程序计数器是一块较小的内存空间,是当前线程执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选区下一条需要执行的字节码...

2018-12-20 11:29:09 133

空空如也

空空如也

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

TA关注的人

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