自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 问答 (1)
  • 收藏
  • 关注

原创 那些你需要掌握的synchronized的实现原理

一、synchronized介绍以及基本使用1.1、synchronized近来的变动JDK1.6之前,一般认为synchronized是重量级锁。JDK1.5之前,能够协调线程间对共享变量的访问的机制只有synchronized和volatile,但是这样存在一些局限性JDK1.5新增了ReentrantLock,它的出现给了我们另外一个选择,当synchronized重量级锁不适用时,可以选择它JDK1.6对synchronized进行了各种优化,有些情况就没有那么重了,整体性能与Reent

2020-07-22 16:09:10 572 1

原创 快速了解GC有这篇文章就够了!

文章目录一、什么是GC二、为什么要了解GC三、对象被判定为垃圾的标准四、判断对象是否为垃圾的算法4.1、引用计数算法4.2、可达性分析算法五、垃圾回收算法5.1、标记-清除算法5.2、复制算法一、什么是GCGC(Garbage Collection)垃圾收集,回收垃圾,释放内存(那Java中的垃圾是什么呢?垃圾一般是没有被任何对象引用的对象),Java 提供的 GC 功能可以自动监测对象是否过...

2020-05-03 11:03:36 4809

原创 JVM内存结构详解

文章目录一、你了解JVM内存模型吗在这之前需要知道JVM内存模型图——JDK1.81.1、程序计数器1.2、Java虚拟机栈(Stack)1.1.1、java.lang.StackOverflowError问题1.3、本地方法栈1.4、元空间(MetaSpace)1.4.1、MetaSpace相比PermGen的优势1.5、Java堆(Heap)二、JVM三大性能调优参数 -Xms -Xmx -X...

2020-05-02 16:27:30 12887 19

原创 Error: A JNI error has occurred, please check your installation and try again

之前用高版本的Eclipse,后来因为系统原因重装了,之后装了几次JDK,虽然每次都删除了,但是eclipse老是报错,最后搜寻各种文章终于解决。解决方法:1.右键项目——>Build Path我们可以把JRE System Library 删除,然后重新 Add Library点击蓝色处,然后next点击第一个,将右边的子菜单打开,选择如下(我的是1.8)最后Finish,...

2019-04-16 15:38:39 22058 30

原创 在docker容器中如何获取宿主机的机器信息?这样做一步到位

容器这样操作就能获取宿主机机器信息,让你的应用飞起来,轰轰轰

2022-02-23 13:26:40 8131 4

原创 查询机器外网ip

使用如下命令:curl cip.cc

2021-10-29 09:45:02 220

原创 docker-ce安装时报Transaction check error

centos下安装docker-ce时报这是因为我在机器上安装了不止一次docker,因版本原因造成一些依赖冲突,需要找到冲突的依赖,将旧依赖删除:# 查看冲突的依赖包yum list installed | grep docker删除后再次安装指定其他版本...

2021-10-28 17:06:48 1650

原创 centos使用yum search docker-ce报No matching Packages to list

今天给虚拟机(centos7.6)装docker-ce,结果报No matching Packages to list,感觉就是机子yum的仓库中找不到相关信息。于是找来了阿里关于docker-ce的仓库,然而新的问题出现了,因为的我的centos是最小化安装,导致没有yum-config-manager,于是执行以下命令:yum install yum-config-manager不出我意外的是,装不了,于是我寻找他的base,yum search yum-config-manager我尝试着

2021-10-28 16:46:58 2297 1

原创 centos7:This system is not registered with an entitlement server. You can use subscription-manager

centos7使用yum install时报This system is not registered with an entitlement server. You can use subscription-manager to register.“此系统未在Subscription Management中注册。您可以使用subscription-manager进行注册”…解决方法:vim /etc/yum/pluginconf.d/subscription-manager.conf[main

2021-10-28 13:29:35 860

原创 idea整合docker快速部署springboot应用

前言容器化一词相信大家已经不陌生了,听到它我们可能会想到docker、k8s、jenkins、rancher等等。那么今天我来说一下idea如何使用docker快速部署springboot应用。环境及工具windows10(开发)centos 7.6 (部署)ideadockerxshell安装docker以及配置远程连接安装docker步骤网上有很多,在这里还是再说一下:+...

2021-10-27 14:31:54 1999

原创 map.get(key)出现NPE问题以及解决方案

  平时使用Map时都会给定里面的元素类型,在拿到数据后用Optional判空处理,比如以下形式:String value = Optional.ofNullable(mapData.get("xxx")).orElse("");  一般情况下没出现问题,但是今天从mongodb拿到数据后,代码走到map.get(key)报了NPE,一开始让人有点懵逼,我做了处理啊,我是谁,我在哪?  后边才发现拿数据的接口返回的是List<Map>类型,Map并没有指定类型,但是我获取其中对应的map

2021-08-16 18:09:20 478

转载 DateTimeFormatter 时间戳与String类型日期/时间互转

/** * 时间戳转日期/时间 * * @param seconds 时间戳 * @param pattern 时间格式 * @return 格式化的时间 */ @RequiresApi(api = Build.VERSION_CODES.O) public static String timeStamp2Date(long seconds, String pattern) { String time = "暂无数.

2021-07-19 14:53:16 4141

原创 Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.

docker下载镜像时报:Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=mysql&tag=latest: dial unix /var/run/docker.sock: connect: perm

2021-04-25 15:55:04 171

原创 XShell连接虚拟机上的ubuntu

博主环境XShell 6VM 16Ubuntu 18.0.4安装sshd.service想要用XShell连接Ubuntu,Ubuntu需要安装sshd服务,命令如下:sudo apt install openssh-server# 启动该服务(任选一种),成功后不会有提示sudo service sshd startsudo /etc/init.d/ssh start# 监测是否启动ps -e | grep ssh成功后如下图,带有sshd字样使用XShell进行连接

2021-04-12 14:45:26 117

原创 oracle数据库还原指标表到某个时间点的数据状态

有时候手贱,数据删错了,想要恢复,却没有闪回,没搞备份,这种小数据量、短时间间隔的就可以恢复到指定时间的数据。脚本如下delete from 表名;insert into 表名 select * from 表名 as of timestamp to_timestamp('2021-03-26 8:00:00', 'yyyy-mm-dd hh24:mi:ss');...

2021-03-26 16:33:05 298

原创 撤回push操作(远程仓库)

很多时候代码push后,才发现代码有问题,需要撤销push,如何做呢,请接着看。一、本地commit回到push前的版本可以使用git log查看历史提交记录,结果如图第一个commit是我们刚刚提交的,现在我们需要回退到之前的版本,则复制下一个commit 版本号,使用git reset --hard <版本号>退回到该版本。注意使用 --hard 参数会放弃当前工作区的修改使用git reset --hard <版本号>同样会回退版本,但是保留当前工作区的修改

2021-03-26 16:28:31 7543

原创 MongoDB的访问控制

windows环境下完成mongodb的访问控制windows环境下安装好的mongodb默认是没有访问控制、管理用户的,这样是有很大的安全风险的。本文通过cmd命令行来完成一、环境win10,MongoDB4.0.2安装路径:E:\Program Files\MongoDB4.0二、没有访问控制的情形没有开启访问控制的情况下,只需要知道ip地址,端口就能连接,并且可以操作数据库。就拿本地来说:1、cmd进入到E:\Program Files\MongoDB4.0\bin,输入mong

2021-01-25 16:32:57 701 1

原创 MongoDB高级查询、聚合查询脚本练习

前言为了巩固前边学习的mongodb聚合、关联查询,模拟一个部门管理的数据库来进行练习一、数据库设计1.1、概念模型员工信息表(employee):唯一id、员工编号、员工姓名、所属部门、职位、入职时间、性别、手机号、邮箱、喜好公司部门表(department):部门编号、部门名称、部门地点、负责人工号、部门人数部门职位表(position):唯一id、职位编号、职位名称工资表(salary):唯一id、员工编号、基本工资、五险一金、绩效奖金、补贴、发放时间、实发工资注:该表设计是按照

2021-01-25 15:48:15 1926 1

原创 记录OOM问题——java.lang.OutOfMemoryError: Java heap space

公司业务复杂,开始的时候并没有注意到该错误,而是按照业务流程去排查,后又去代码中查找,由于我才来公司,只能边排查边了解了。在进行了本地调试、添加log在测试机跑,最后发现日志中有一条数据缺失,于是追溯发现另一个子系统在执行的过程中爆出了OOM,如下:java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown Source) at java.io.ByteArrayOutputStream.grow(Un

2021-01-25 15:17:42 742 2

转载 Typora Emoji图标

该文章转载于他人,仅做记录转载:https://www.cnblogs.com/wangjs-jacky/p/12011208.html???? :smile:???? :laughing:???? :blush:???? :smiley:☺️ :relaxed:???? :smirk:???? :heart_eyes:???? :kissing_heart:???? :kissing_closed_eyes:???? :flushed:???? :rel

2021-01-08 16:29:34 2371

原创 org.apache.catalina.LifecycleException: Failed to start component [Connector[HTTP/1.1-8082]]解决办法

前言今天本地跑项目,竟然没跑起来,报出了上面的错误,甚至导致了一连串的注册中心错误,开始光顾着检查注册中心的问题,转了一大圈,没问题啊,这才看到这句错误——org.apache.catalina.LifecycleException: Failed to start component [Connector[HTTP/1.1-8443]],感情是改端口组件启动失败了,那就很好办了。解决不是要求固定端口的话,就直接配置文件改端口就行否则就把当前占用端口的进程杀死:netstat -aon | fi

2020-12-09 14:05:04 1094

原创 MongoDB基础脚本编写学习

MongoDB脚本编写学习准备环境:win10工具:Robo 3T 1.1.1(自带shell)、cmd一、创建/切换/查看/删除数据库1.1、创建/切换数据库(带例子,下同)> use test1switched to db test1如果数据库不存在,则创建数据库,否则切换到指定数据库。1.2、查看数据库> show dbsadmin 0.000GBconfig 0.000GBlocal 0.000GBtest 0.000GB注:新建的没有数

2020-11-25 13:20:31 1391

原创 快速掌握ThreadLocal

一、ThreadLocal概念ThreadLocal是线程变量,在每个线程中都创建了一个ThreadLocalMap对象,存储当前ThreadLocal副本,该Map是以ThreadLocal对象为key,任意对象为值的存储结构,每个线程都能够访问属于自己的ThreadLocalMap存储的value。而ThreadLocal能够集中管理和操作这些Map。类中定义的ThreadLocal实例一般会被private static修饰,这样可以让ThreadLocal实例的状态和Thread绑定在一起

2020-07-23 21:56:06 130

原创 关于volatile你必须掌握这些,不然5K都没得!

文章目录一、volatile介绍二、JMM(Java内存模型)JMM的主存JMM中的工作内存三、细说volatile的特点3.1、可见性3.2、volatile不能保证原子性3.3、volatile如何禁止重排优化的happens-before八大原则内存屏障(Memory Barrier)3.4、经典问题——单例的双重检测实现四、volatile和synchronized的区别一、volatile介绍volatile牵扯的知识不少,我们慢慢来说。volatile是Java虚拟机提供的轻量级同步机制,

2020-07-23 14:58:14 313

原创 docker一键启动、关闭、删除命令

脚本不会呀(手动滑稽),那就记录一下命令喽一键启动所有docker 容器:docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)一键关闭所有docker 容器:docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)一键删除所有docker 容器:dock...

2020-07-21 20:23:49 751

原创 快速了解Java多线程——Daemon线程(守护线程)

一、什么是Daemon线程Daemon线程也是守护线程,它是一种支持型的线程,主要用在程序的后台调度以及一些支持性(服务性)的工作,常见的例子:JVM中垃圾回收线程就是典型的守护线程二、守护线程和用户线程的区别守护线程与用户线程的区别发生在JVM的离开:可以说JVM想要运行,用户线程也必须运行守护线程是服务于用户线程的,如果用户线程不在了,那么守护线程的存在是没有意义的,此时该程序(进程)就没有运行的必要了,JVM也就退出了守护线程的优先级是低于用户线程的三、用户设置守护线程守护线程并不

2020-07-21 17:32:28 656

原创 快速了解Java多线程——线程的状态

一、什么是线程操作系统在运行一个程序的时候会创建一个进程,进程是资源分配的最小单位,一个进程里面可以创建多个线程,这些线程都拥有自己的程序计数器、堆栈、局部变量等,线程们能够访问共享的内存变量(进程提供共享的资源)。处理器可以在线程之间进行高速切换,一个cpu某一时刻只能执行一个线程,但是高速情况下,给使用者感觉这些线程在同时执行一样。所以,线程是CPU调度的最小单位。二、为什么使用多线程处理器方面:现在的电脑都拥有多个cpu核心,并且cpu的运行速度非常快,所以我们开发程序也要充分利用硬件上的优

2020-07-21 16:35:20 162

原创 快速了解Java多线程——interrupt()方法

如何中断线程?已经抛弃的方法通过调用stop()方法停止线程,该方法有点暴力停止的意思,比如线程A去停止线程B,停止的时候根本不知道线程B的执行情况,还有就是执行stop()之后,线程B会马上释放锁,可能会引发数据不同步的问题类似的被抛弃的还有suspend()和resume()方法目前用的方法调用interrupt(),通知线程应该中断了如果线程处于被阻塞状态,那么线程将立即...

2020-05-08 00:01:13 282 2

原创 快速了解Java多线程——notify和notifyAll的区别

文章目录一、我们先来了解两个概念锁池等待池二、notify和notifyAll的区别2.1、唤醒wait()后的线程测试2.2、测试两个方法的不同点一、我们先来了解两个概念锁池EntryList等待池WaitSet锁池假设线程A已经拥有了某个对象(不是类)的锁,而其它线程B、C想要调用这个对象的某个synchronized方法(或者块),由于B、C线程在进入对象的synchroniz...

2020-05-07 19:46:50 300

原创 快速了解Java多线程——sleep()和wait()的区别

基本的差别sleep是Thread类的方法,wait是Object类中定义的方法sleep()方法可以在任何地方使用wait()方法只能在synchronized方法或者synchronized块中使用本质区别Thread.sleep()只会让出CPU资源,不会导致锁行为的改变Object.wait()不仅让出CPU资源,还会释放已经占有的同步锁我们来看下面两个例子pack...

2020-05-07 17:51:15 189

原创 快速了解Java多线程——start方法和run方法的区别

文章目录一、Thread和Runnable是什么关系二、线程start方法和run方法的区别在进入文章主题之前我们先来说一下Thread和Runnable是什么关系一、Thread和Runnable是什么关系Thread是一个类,Runnable是一个接口public interface Runnable { // 这里面就一个抽象方法 public abstract ...

2020-05-07 16:46:59 400

原创 进程与线程的区别

一、什么是进程和线程进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。简单来说呢,就是一段程序的执行过程线程:一条线程指的是进程中一个单一顺序的控制流。二、进程和线程的由来串行:初期的计算机智能串行执行任务,并且需要长时间等待用户输入批处理:预先将用户的指令集中成清单,批量串行处理用户指令,仍无法并发执行进程:进程独占内存空间,保存各自运行状态,相互间不干扰且...

2020-05-07 16:00:54 146

原创 服务器项目部署——后台启动、关闭、替换踩坑

博主最近在更新自己的项目的时候,打包好jar换下之前的jar,然后准备重启项目,遇到了些问题,网上关于这些说的不是很细节,故写篇博客记录下。我们后台启动项目一般是:nohup java -jar 包名.jar >log.txt &。这种方式会在jar目录下生成log.txt。这里我们先查看当前项目是否还在运行:ps -ef | grep blog-backend-0.0.1-SN...

2020-04-30 12:14:20 1094

原创 Redis——常用配置

ubuntu下使用如下命令进入配置文件(路径根据自己的情况来)sudo vi /etc/redis/redis.conf常用配置配置密码: requirepass 123456本机访问和守护模式:protected-mode改为no,上边的bind注释掉,以保证其他机器能够访问...

2020-04-28 13:22:20 119

原创 服务器docker安装以自定义配置文件my.cnf部署mysql

一、下载mysql命令:docker pull mysql,自动拉取latest版本,下载速度过慢的自行百度更换镜像源二、创建并启动mysql容器后边我们再以配置文件启动命令:docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:latest本地用Navicat for MySQL连接,报1...

2020-04-28 13:22:06 1053

原创 一篇文章搞定JVM如何加载.class文件

一、Java虚拟机JVM是一个内存中的虚拟机,主要运用内存存储,所有类、类型、方法,都是在内存中,这决定着我们的程序运行是否健壮、高效。二、.class文件装载执行流程图Class Loader(类加载器):依据特定格式,加载class文件到内存Execution Engine:(执行引擎)对命令进行解析,解析完毕之后就可以提交到操作系统里面执行了Native Interface:融...

2020-04-27 21:16:47 453

原创 关于Java平台无关性你该知道这些

一、什么是平台无关性Java语言是一款跨平台的语言,不管是在windows还是在Linux又或者是mac os,它都可以支持并在上边运行,秉持着一次编译,随处运行(Compile Once,Run Anywhere)的原则。Java程序可以编译成.class二进制文件,通过ClassLoader装载进系统,然后由各个平台的JVM(Java虚拟机)解析进行连接、初始化等操作,从而达到不改变程序...

2020-04-27 16:26:40 734

原创 数据库之InnoDB可重复读隔离级别下如何避免幻读

文章目录一、先介绍几个概念1、什么是当前读2、什么是快照读3、什么是mvcc二、RR级别下避免幻读的方法三、RC级别下测试快照读和当前读3.1、测试快照读3.2、测试当前读四、RR级别下测试快照读和当前读五、RC、RR级别下的InnoDB的非阻塞读(快照读)如何实现主要undo log是干什么的read view呢六、next-key(行锁+gap锁)6.1、测试sql走唯一索引,并精准命中6.2...

2020-04-24 22:01:15 1348

原创 数据库之事务并发访问引起的问题以及如何避免

事务并发访问引起的问题有如下常见的:更新丢失——mysql所有事务隔离级别在数据库层面上均可避免脏读——脏读就是允许读取其他事务未提交的数据,READ-COMMITTED事务隔离级别以上可避免(RC级别)。不可重复读——不可重复读就是事务A多次读取事务B,过程中事务B有更新操作,导致事务A读取的数据不一样,REPEATABLE-READ事务隔离级别以上可避免(RR级别)。幻读——SERI...

2020-04-24 15:49:26 1739

原创 数据库之事务的四大特性

数据库事务的四大特性(ACID)原子性(Atomic):事务执行的操作要么全部执行,要么事务回滚。一致性(Consistency):事务应该从一个一致状态转变为另一个一致状态。一致性就是数据库中数据应满足完整性约束。比如转账的例子,两个之间进行转账,总金额加起来是五千,不管怎么两人怎么转,总金额都必须是五千隔离性(Isolation):多个事务并发执行时,一个事务的执行不应该影响另一个事务...

2020-04-24 12:16:11 171

空空如也

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

TA关注的人

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