自定义博客皮肤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)
  • 资源 (1)
  • 收藏
  • 关注

原创 Confluence使用教程

目录一、Confluence简介1、基础概念1.1、空间(Space)1.2、Dashboard1.3、页面(Page)1.4、模板(template)1.5、权限(Permission)二、常见操作2.1、创建空间(Space)2.2、配置空间权限2.3、文档查看与操作2.4、添加文档2.5、编写文档2.6、移动文档2.7、创建目录三、发表评论四、上传文档附件五、导出六、文档权限管理一、Confluence简介  C.

2021-06-10 11:22:34 12304

原创 Linux 系统下安装JDK1.8和Tomcat

Linux 系统下安装JDK1.8的教程详解 一,安装前的清理工作rpm -qa | grep jdkrpm -qa | grep gcjyum -y remove java-xxx-xxx二 , 在线下载JDK命令:wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-p

2021-05-12 23:06:43 419

转载 MyBatis基本工作原理介绍

1、史上最透彻的MyBatis基本工作原理介绍计算机的基本工作就是存储和计算,而MyBatis是存储领域的利器。MyBatis的基本工作原理就是:先封装SQL,接着调用JDBC操作数据库,最后把数据库返回的表结果封装成Java类。2、MyBatis的核心流程介绍mybatis应用程序通过SqlSessionFactoryBuilder从mybatis-config.xml配置文件中构建出SqlSessionFactory,然后,SqlSessionFactory的实例直接开启一个SqlSessi

2021-05-11 13:54:56 178

原创 关键路径算法

package com.example.demo.util;import java.util.*;/** * 应用模块名称<p> * 代码描述<p> * Created by 002736 on 2021/3/23. * * @author 002736 * @version V1.0.0 * @since 2021/3/23 18:28 */public class Test { static Side[] lu; static int.

2021-05-11 13:51:39 66

原创 lock锁的condition原理

Condition维护了一个AQS单向链表,当调用await()时将当前线程加入到链表中,然后调用signal()会从链表头部拿出一个节点放到ReenTranLock维护的双向链表中,去抢锁,如果抢锁成功就执行,如果调用signalAll就是把所有的Condition链表节点都加入到ReenTranLock维护的双向链表中去抢锁。在并发编程中,每个Java对象都存在一组监视器方法,如wait()、notify()以及notifyAll()方法,通过这些方法,我们可以实现线程间通信与协作(也称为等待唤醒机

2021-03-15 17:24:05 765

原创 synchronized和lock的区别

synchronized实现原理见:https://mp.csdn.net/editor/html/114829524区别如下: 来源: lock是一个接口,而synchronized是java的一个关键字,synchronized是内置的语言实现; 异常是否释放锁: synchronized在发生异常时候会自动释放占有的锁,因此不会出现死锁;而lock发生异常时候,不会主动释放占有的锁,必须手动unlock来释放锁,可能引起死锁的发生。(所以最好将同步代码块用try catch包

2021-03-15 16:33:21 104

原创 怎么实现所有线程在等待某个事件的发生才会去执行

一、CountDownLatch用来解决线程之间通信的。CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成了任务,然后在CountDownLatch上等待的线程就可以恢复执行任务。(一般是主线程等待子线程执行完毕)CounDownLatch的不足是设置的计时器的数值只能在构造方法中初始化一次。package co

2021-03-15 15:54:24 589

转载 Volatile的作用以及底层实现原理

Volatile的作用以及底层实现原理先来看一段demo的代码:你会发现,永远都不会输出有点东西这一段代码,按道理线程改了flag变量,主线程也能访问到的呀?为会出现这个情况呢?那我们就需要聊一下另外一个东西了。JMM(JavaMemoryModel)JMM:Java内存模型,是java虚拟机规范中所定义的一种内存模型,Java内存模型是标准化的,屏蔽掉了底层不同计算机的区别(注意这个跟JVM完全不是一个东西,只有还有小伙伴搞错的)。那正式聊之前,丙丙先大概科普一下现代计算机的内

2021-03-15 15:11:28 192

原创 synchronized底层实现原理及锁优化

一、简述synchronized的作用①原子性:synchronized 保证语句块内操作是原子的。②可见性:synchronized 保证可见性(通过“在执行unlock之前,必须先把此变量同步回主内存”实现)。③有序性:synchronized 保证有序性(通过“一个变量在同一时刻只允许一条线程对其进行lock操作”)。synchronized的使用①修饰实例方法,对当前实例对象加锁。②修饰静态方法,对当前类的Class对象加锁。③修饰代码块,对 synchronized 括号内的对..

2021-03-15 13:58:07 234

原创 Java基础知识(一)

1、List和Set的区别List有两种List,一种是基本的ArrayList,其优点在于随机访问元素,另一种是更强大的LinkedList,它并不是为快熟访问十五级的,而是具有一套更通用的方法。SetSet具有与Collection完全一样的接口,因此没有任何额外的功能。实际上Set就是Collection,只 是行为不同。这是继承与多态思想的典型应用:表现不同的行为。Set不保存重复的元素(至于如何判断元素相同则较为负责)List和Set的区别1.List,Set都是继承自Co

2021-03-15 13:21:21 102

原创 SpringMVC 异步调用@Aysnc踩坑笔记

异步调用1、配置文件 applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/sc

2021-03-14 16:02:48 513

原创 JAVA实战-CPU占用过高问题排查

JAVA实战-CPU占用过高问题排查排查步骤1.使用top 定位到占用CPU高的进程PIDtop2.通过ps aux | grep PID命令获取线程信息,并找到占用CPU高的线程ps -mp pid -o THREAD,tid,time | sort -rn3.将需要的线程ID转换为16进制格式printf "%x\n" tid4.jvm打印线程的堆栈信息jstack pid |grep tid-A 30 -- 此处tid为16进制5.根据堆栈日志中的报错,...

2020-10-28 14:37:07 122

第五章 函数习题参考解答

C++程序设计教程第五章 函数习题参考解答

2014-09-15

空空如也

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

TA关注的人

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