自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 杂谈:内核同步的机制

内核同步的机制一、关于同步理论的一些基本概念二、内核同步的常用方法(保证原子性、有序性、可见性)三级目一、关于同步理论的一些基本概念临界区:访问或操作共享数据的代码段,比如synchronize大括号中的部分竞争条件:两个线程同时拥有临界区的执行权数据不一致:data unconsistency 由竞争条件引起的数据破坏同步:避免 race conditions锁:完成同步的手段,上锁解锁必须具备原子性原子性:要么全部发生,要么不发生,像原子一样不可分割有序性:禁止指令重排序可见性:一个

2021-06-16 22:01:17 219

原创 杂谈:内存管理

内存管理1、内存管理的发展历程1、内存管理的发展历程  DOS时代 —— 同一时间只能有一个进程运行(也有一些特殊的算法可以支持多进程)  Windows9x —— 多个进程装入内存。存在问题 :1、内存不够用 2、相互打扰  为了解决这两个问题,诞生了现在的内存管理系统:(虚拟地址、分页装入、软硬结合寻址)1、分页(解决内存不够用)  内存中分成固定大小的页框(4K),把 程序分成固定大小的快,用到哪一块,加载哪一块。加载过程中,如果内存已经满了,会把最不长用到的一块放到swap分区,把最新的

2021-06-13 14:13:42 242 1

原创 杂谈:进程、线程、纤程

进程、线程、纤程进程和线程有什么区别?线程的实现linux中的实现:其他操作系统:纤程进程调度调度的方式进程调度的基本概念其他概念僵尸进程:孤儿进程:进程和线程有什么区别?  进程是一个程序运行起来的状态,线程是一个进程中的不同执行路径。  专业角度:进程是操作系统分配资源的基本单位,线程是执行调度的基本单位(线程共享进程的内存空间,不会分配自己独立的内存空间)线程的实现linux中的实现:就是一个普通的进程,只不过和其他进程共享资源(内存空间、全局数据等)。其他操作系统:纤程  纤程:

2021-06-13 12:48:38 206

原创 05、java GC基础知识(一)

GCCollector三色标记一、基础知识1.1、java垃圾是什么?1.2、怎样找到垃圾?1.3、垃圾回收的算法1.3.1、标记清除法1.3.2、标记压缩1.3.3、拷贝二、JVM内存分代模型2.1、堆内存逻辑分区2.2、一个对象的从出生到消亡。2.3、GC的分类2.4、对象什么时候进入老年代三、常见的垃圾回收器一、基础知识1.1、java垃圾是什么?没有引用指向的所有对象都是垃圾1.2、怎样找到垃圾?引用计数法和可达性分析法。引用计数法:当指向该对象的引用数为0时,该对象成为垃圾。但是无

2021-03-25 10:36:16 258

转载 04、JVM运行时数据区

JVM运行时数据区运行时五大数据区一、JVM虚拟机栈(Java Virtual Machine Stacks)1.1、栈帧1.1.1局部变量表1.1.2操作数栈1.1.3动态链接:符号引用转化为直接引用1.1.4返回地址二、本地方法栈(Native Method Stacks)三、程序计数器(The pc Register)3.1、程序计数器是线程私有的3.2、JVM 规范中唯一没有规定 OutOfMemoryError 情况的区域3.3、执行 Native 方法时计数器值为空3.4、Native 方法的实

2021-03-23 15:25:46 433

原创 03、关于对象的知识点

1、java对象的创建过程2、对象在内存中的存储布局3、对象头具体包括哪些类容4、对象怎么定位5、对象怎么分配6、Object o = new Object()一、java对象的创建过程分为类的初始化和类的实例化阶段:类的初始化:类的初始化阶段会触发静态变量的初始化和静态代码块的执行class loadingclass linking(verification,preparation,resolution)class initializing类的实例化:申请对象内存成

2021-03-23 10:49:44 129

转载 02、java内存模型(JMM)

一、java内存模型的定义JMM规定了所有的变量都存储在主内存(Main Memory)中。每个线程还有自己的工作内存(Working Memory),线程的工作内存中保存了该线程使用到的变量的主内存的副本拷贝,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量(volatile变量仍然有工作内存的拷贝,但是由于它特殊的操作顺序性规定,所以看起来如同直接在主内存中读写访问一般)。不同的线程之间也无法直接访问对方工作内存中的变量,线程之间值的传递都需要通过主内存来完成。

2021-03-16 20:21:11 132

转载 08、线程池

一、优点降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切换线程是有时间成本的(需要保持当前执行线程的现场,并恢复要执行线程的现场))。延时定时线程池,可以支持定时任务。二、线程池的运行策略线程池流程判断核心线程池是否已满,没满则创建一个新的工作线程来执行任务。

2021-03-15 19:51:06 132

转载 01、类的加载过程(双亲委派)

一、类的完整加载过程其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定)。另外注意这里的几个阶段是按顺序开始,而不是按顺序进行或完成,因为这些阶段通常都是互相交叉地混合进行的,通常在一个阶段执行的过程中调用或激活另一个阶段。1. Loading 加载加载是类加载过程的第一个阶段,在加载阶段,虚拟机需

2021-03-15 19:48:03 178

原创 00、java多线程高并发知识图谱

2021-03-11 11:02:43 139

原创 07、容器

一、数据结构分类物理结构:数组链表逻辑结构:由数组跟链表组成的8种数据结构(数组、队列、链表、散列表、栈、树、图)java的数据结构如下,其中Queue为后面加入,专为高并发设计二、多线程环境下容器衍化的过程Map角度:Hashtable是jdk1.0遗留下来的产物,所有方法都带了synchronize,采用的this锁。目前很少使用HashMap和SynchronizedHashMapMap<UUID, UUID> m = Collections.synchro

2021-03-01 23:01:26 249 6

原创 06、java中的引用(强、软、弱、虚)

1、java中的引用强、软、弱、虚(1)、强引用M m = new M();是强引用,调用GC时,对象不会被回收(2)、软引用

2021-03-01 11:26:23 110 1

原创 05、ThreadLocal

1、概述2、注意内存泄露问题2、使用spring 声明式事物,保证同一个Connection3、源码set方法:是set到Thread.currentThread.map(ThreadLocal,Value)设置到了当前线程的map中

2021-03-01 10:55:55 89

转载 04、AQS

1、概述2、使用3、源码JDK9新引入了VarHandle实现VarHandle的操作可以保证原子性,有cpu原语的支持

2021-03-01 10:02:27 125

原创 03、生产者消费者问题

1、问题写一个固定容量同步容器,拥有put和get方法,以及getCount方法,能够支持2个生产者线程以及10个消费者线程的阻塞调用2、解决方案object.wait()+object.notify()解决 final private LinkedList<T> lists = new LinkedList<>(); final private int MAX = 10; //最多10个元素 private int count = 0; public sync

2021-02-26 11:24:49 77

原创 02、多线程之间执行流程的控制

1、概述谈到多线程编程,在工作中往往会遇到线程之间执行的流程控制问题。我将通过如下问题来讲解线程之间流程控制的方式。2、问题有一个容器,一个线程不断往里面装元素,另一个线程负责检测容器中的个数,当容器中元素的个数刚好为5时,第二个线程退出。3、解决方案使用object.wait()+object.notify()解决 List lists = new ArrayList(); public void add(Object o) { lists.add(o); } public

2021-02-26 10:49:25 144

原创 01、多线程基础

01、进程、线程的概念进程是程序运行的最小单位 线程由多个进程组成 线程是一条程序的执行路径02、启动线程的三种方式继承Thread类 实现Runable接口 通过线程池获取线程Executors.newCachedThread()03、线程的基本方法Thread.sleep(500) 睡眠500ms,不会释放lock,不依赖于同步器synchronized,sleep不需要被唤醒 Object.wait() 释放锁,而且会加入等待队列,需要依赖synchroniz...

2021-02-24 23:02:03 104

原创 redhat7.7安装zookeeper(单机版)

1、将按安装包传入/usr/local/目录下并解压#或者直接在线下载 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gztar -zxvf zookeeper-3.4.6.tar.gz2、进入zookeeper-3.4.6目录,创建logs,data目录并赋权mkdir logsmkdir datachmod -R 777 logschmod -R 777 data

2020-11-20 13:26:59 255

原创 redhat7.5配置本地centos7yum源

1、准备下载CentOS-7-x86_64-Everything-2003.iso镜像。注意:下载everything版本2、创建iso存放目录和挂载目录cd /mnt/mkdir iso cdrom3、将iso镜像文件上传到/mnt/iso文件夹下,并将/mnt/iso下的iso文件挂载到/mnt/cdrom目录mount -o loop /mnt/iso/CentOS-7-x86_64-Everything-2003.iso /mnt/cdrom/mount: /dev/loop0 写

2020-11-10 11:53:11 979

原创 linux7配置网络

1、查看网卡#redhatip addr#其他ifconfig2、编写网卡配置信息vi /etc/sysconfig/network-scripts/ifcfg-enp2s0 #修改为以下内容TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=no#改为staticBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFRO

2020-11-09 19:27:34 412

原创 redhat7.7安装redis

1、创建文件夹,解压#mkdir /usr/local/devlop/redistar -zxvf tar -zxvf redis-5.0.5.tar.gz2.安装#进入目录cd redis-5.0.5#安装makemake install导入配置文件myredis.conf或者根据需要自己配置redis.conf3.启动#默认安装目录/usr/local/bincd /usr/local/bin#启动 /usr/local/bin/redis-server /usr/lo

2020-10-23 14:44:51 1059

原创 redhat7.7安装docker

1、准备官网有二进制文件安装的详细过程可参阅:https://docs.docker.com/engine/install/binaries/下载二进制安装包:转到 https://download.docker.com/linux/static/stable/ (或更改stable为nightly或test),选择您的硬件平台,然后下载.tgz与要安装的Docker Engine版本有关的文件。2、安装2.1. 上传文件到/usr/local/devlop/docker,并解压#创建文件夹m

2020-10-21 16:21:33 2061

原创 redhat使用centos的yum源(采用U盘挂载安装)

1、下载镜像选择合适的镜像之后手动下载或者wget下载:https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/2、创建文件夹

2020-10-21 15:03:56 745 1

原创 Centos按装python3.6.5运行环境

1、安装环境yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-develyum install gcc-c++ gcc make cmake zlib-devel bzip2-devel openssl-devel ncurse-devel -y

2020-10-21 10:05:13 227

原创 Centos7安装mysql8、mycat1.6

一、前提mycat是基于java开发,所以在安装mycat之前需要先安装好jdk1.8环境二、安装mysql8.01、创建/usr/local/devlop/mysql8,将mysql8压缩包放入该路径下,解压#创建文件夹mkdir -p /usr/local/devlop/mysql8#解压tar -xvf mysql-8.0.21-1.el7.x86_64.rpm-bundle.tar2、安装#安装commonrpm -ivh mysql-community-common-8.0

2020-10-20 20:14:02 352 1

原创 运维篇2020.10.20(Centos7安装jdk)

一、背景最近接收手了一个项目的现场部署。项目主要由应用后台code(java)、项目安全模块codeapi(java)、项目前端模块codevue(vue)、数据分析模块code(python)、数据处理模块codec++(组成)。然后采用了mycat做分库分表、采用mysql做数据持久化、采用redis做数据缓存。后序为整个项目环境的搭建过程二、Centos安装jdk8(为mycat提供环境)1、创建文件件/home/java,并将jdk压缩包放入该目录下,解压mkdir javacd java

2020-10-20 15:07:41 217

原创 Centos7.3部署SpringBoot项目(从0开始)

文章参考Linux下安装Java运行环境一、安装JDK准备工作新建安装目录,我是放在/usr/local/develop/jdk目录下[root@izwz93dj8i3kf6kdyy69d6z /]# mkdir /usr/local/develop[root@izwz93dj8i3kf6kdyy69d6z /]# mkdir /usr/local/develop/jdk配置jdk理解wget命令wget命令是一个从网络上下载文件的自由工具,它支持http协议,https协议和ftp协议

2020-06-21 19:40:07 365

转载 mysql用户创建与权限管理

一、创建用户CREATE USER 'username'@'host' IDENTIFIED BY 'password';参数说明:username:你将创建的用户名host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器实例:CREATE USER ‘dog’@‘localhost’ IDENTIFIED BY ‘1234

2020-06-21 19:02:27 125

转载 centos下操作文件夹

一、创建文件夹1、创建本目录下文件夹mkdir dir2、创建其他目录下文件夹mkdir dir/file3、创建多级目录文件夹mkdir -p tmp/dir4、创建file.txt文件mkdir dir/file.txt二、修改文件夹名1、文件夹重命名mv dir dir12、文件重命名mv dir/file.txt dir/files.txt三、查看文件夹/文件1、cd dir2、cd dir/dir13、回到主目录 cd ~4、查看目录下内容 ll (或者ls)

2020-06-19 09:32:31 358

原创 配置xshell链接阿里云服务器ESC

       之前一直尝试使用VMware搭建虚拟机来学习linux、redis、Nginx、MQ。但VM在桥接模式下与Windows(主机)的链接配置实在不友好(好像要配死IP然后主机IP改变后又要更改配置——关键是按百度教程配完后我虚拟机实在ping不通主机)。最后决定购买aliyun服务器来完成相关技术的学习配置步骤1、登陆自己账号,进入如下页面2、进入实例点击更多3、重置实例密码,并根据引导完成重置操作4、在安全组配置中开放相关(xshell默

2020-06-19 00:52:36 347

原创 java调用远程服务或者shell脚本

//使用HashMap入参 Map<String, Object> sendMap = new HashMap<>(); sendMap.put("cmd_line", codecSvrPath); sendMap.put("video_id", video_id); sendMap.put("out_pa...

2020-04-23 09:48:18 189

原创 数据库增量导入

以mysql为例增量导入到另一个库一、在同一个服务器上insert into job_hr (库1.m_address) values select companyaddr from 库2.jobinfo二、在不同服务器上1、建一个一样的临时表,导入增量INSERT INTO video_source_info20200408SELECT * FROM video_source_...

2020-04-09 16:39:21 687

原创 Mybatis 返回结果多重嵌套List

实际开发中,在定义接口的返回格式时往往会遇到返回json多重嵌套的情况:返回数据结构定义我们可以在service层处理数据得到想要的格式。也可以在.xml文件中通过sql来做简单处理。比如想得到上图格式(四层嵌套)1、创建相关Vo实体类PersonDataVoPersonPosGroupVoVideoDataVoPersonDetailsDVo2、编写< resu...

2020-03-17 16:24:12 4656 1

原创 AES算法加密解密工具类

package com.debug.auth.server.utils;import com.debug.auth.server.dto.AccessTokenDto;import com.fasterxml.jackson.databind.ObjectMapper;import org.apache.commons.codec.binary.Base64;import javax....

2020-03-10 21:44:19 552

原创 雪花算法—分布式唯一id算法

package com.debug.auth.server.utils;/** * 雪花算法~分布式全局唯一ID算法 */public class SnowFlake { /** * 起始的时间戳 */ private final static long START_STAMP = 1480166465631L; /** * 每一...

2020-03-10 21:22:22 106

转载 IDear配置热部署

参考 SpringBoot系列(三):不要告诉我你还不会使用IDEA热部署功能

2020-03-06 17:21:47 360

原创 springboot前后端分离构建统一消息响应模型

统一的接口响应规范可以方便前后端开发人员的沟通。使代码更工整1、创建消息枚举类,统一状态码定义package com.example.goshopping.common.enums;/** * 统一的状态码定义 **/public enum StatusCode { Success(0,"成功"), Fail(-1,"失败"), InvalidParams(...

2020-03-06 16:52:34 490

原创 springboot整合mybatis(傻瓜式教学)

本文主要介绍mybatis与springboot的整合。关于整合druid数据源连接池的操作请参考上篇博文,这里不再赘述1、导入maven依赖 <!--引入jdbc--> <dependency> <groupId>org.springframework.boot</groupId> ...

2020-03-06 14:18:34 148

原创 springboot整合druid数据源并实现实时查询

1、导入maven依赖 <!--引入web模块--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifa...

2020-03-05 22:08:29 422

原创 springboot使用spring-Data-Redis连接redis数据库(项目搭建整合redis完整步骤)

一、spring-Data-Redis简介spring-data-redis针对jedis提供了如下功能:1、 连接池自动管理,提供了一个高度封装的“RedisTemplate”类2、针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口ValueOperations:简单K-V操作SetOperations:set类型数据操作ZSet...

2020-02-28 22:40:11 1468

空空如也

空空如也

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

TA关注的人

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