自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 资源 (1)
  • 收藏
  • 关注

原创 java资源锁-Semaphore

概念一个计数信号量。从概念上讲,信号量维护了一个许可集合。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。Semaphore 通常用于限制可以访问某些资源(物理或逻辑的)的线程数目。主要方法1、构造...

2019-03-31 15:23:18 698

原创 Java线程池的7个参数

java.uitl.concurrent.ThreadPoolExecutor类是线程池中核心的一个类,在ThreadPoolExecutor中提供了四个构造方法。通过源码可以发现,前面三个的构造器最后都是调用了第四个构造器进行初始化。public class ThreadPoolExecutor extends AbstractExecutorService {public ThreadPo...

2019-03-31 15:19:37 967

原创 java线程池

基础的线程池线程池主要有4类,如下package com.ydh.test.pool;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util...

2019-03-31 15:16:16 68

原创 java线程

implements Runnablea.定义一个类实现Runnable接口,重写接口中的run()方法。在run()方法中加入具体的任务代码或处理逻辑。b.创建实现Runnable接口的类的对象。c.创建一个Thread类的对象,需要封装前面Runnable接口实现类的对象。(接口可以实现多继承)d.调用Thread对象的start()方法,启动线程。extends Threada....

2019-03-31 15:10:26 77

原创 wait()和sleep()区别

1、wait是object的方法,sleep是thread的方法2、wait会释放线程,sleep不会3、wait需要notify唤醒

2019-03-31 15:08:56 210

原创 分布式锁

rediszookeeper

2019-03-31 09:48:50 77

原创 volatile 和cas

volatile1、保证线程间变量的可见性简单地说就是当线程A对变量X进行了修改后,在线程A后面执行的其他线程能看到变量X的变动,更详细地说是要符合以下两个规则:a、线程对变量进行修改之后,要立刻回写到主内存。b、线程对变量读取的时候,要从主内存中读,而不是缓存。2、禁止指令重排(有例外)什么是指令重排序?有两个层面:在虚拟机层面,为了尽可能减少内存操作速度远慢于CPU运行速度所带来...

2019-03-31 09:48:32 837

原创 偏向锁,轻量级锁,重量级锁

markword在介绍java锁之前,先说下什么是markword,markword是java对象数据结构中的一部分,要详细了解java对象的结构可以点击这里,这里只做markword的详细介绍,因为对象的markword和java各种类型的锁密切相关;markword数据的长度在32位和64位的虚拟机(未开启压缩指针)中分别为32bit和64bit,它的最后2bit是锁状态标志位,用来标记当...

2019-03-31 09:48:24 347

原创 锁分类-自旋锁

1、来由Java的线程是映射到操作系统的原生线程之上的,如果要阻塞或唤醒一个线程,都需要操作系统来帮忙完成,这就需要从用户态转换到核心态中,因此状态装换需要耗费很多的处理器时间,对于代码简单的同步块(如被synchronized修饰的getter()和setter()方法),状态转换消耗的时间有可能比用户代码执行的时间还要长。虚拟机的开发团队注意到在许多应用上,共享数据的锁定状态只会持续很短的...

2019-03-31 09:46:35 329

原创 Synchronized的原理

在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。1、阻塞代价java的线程是映射到操作系统原生线程之上的,如果要阻塞或唤醒一个线程就需要操作系统...

2019-03-31 09:46:26 254

原创 锁分类

公平锁和非公平锁公平锁是指多个线程在等待同一个锁时,必须按照申请锁的先后顺序来一次获得锁。公平锁的好处是等待锁的线程不会饿死,但是整体效率相对低一些;非公平锁的好处是整体效率相对高一些,但是有些线程可能会饿死或者说很早就在等待锁,但要等很久才会获得锁。其中的原因是公平锁是严格按照请求所的顺序来排队获得锁的,而非公平锁时可以抢占的,即如果在某个时刻有线程需要获取锁,而这个时候刚好锁可用,那么这个线...

2019-03-30 22:16:13 98

原创 lock 和 synchronized

死锁四要素,如何避免1、产生死锁的四个必要条件?a.互斥条件:进程对所分配到的资源不允许其他进程进行访问,若其他进程访问该资源,只能等待,直至占有该资源的进程使用完成后释放该资源b.请求和保持条件:进程获得一定的资源之后,又对其他资源发出请求,但是该资源可能被其他进程占有,此事请求阻塞,但又对自己获得的资源保持不放c.不可剥夺条件:是指进程已获得的资源,在未完成使用之前,不可被剥夺,只能在...

2019-03-30 22:13:59 118

原创 jenkins远程传输启动

1、安装插件 Publish Over SSH2、配置SSH需要配置ssh的key

2019-03-30 21:37:08 442

原创 jenkins新建maven项目

安装https://blog.csdn.net/u014803081/article/details/88919242新建项目-f mytest/pom.xml clean package -Dmaven.test.skip=true -Pdevexport BUILD_ID=mytestsh $WORKSPACE/build.sh tomcat_test mytest myte...

2019-03-30 21:26:52 1296

原创 docker安装jenkins

// 官方有两个镜像,一个jenkins,一个jenkins/jenkins 前者在使用安装插件的时候一直失败,建议使用后者docker pull jenkins/jenkinsdocker run --name jenkins -p 8080:8080 -p 50000:50000 -d jenkins/jenkins初始化进入需要密码查找下密码位置:initialAdminPasswo...

2019-03-30 21:15:22 336

原创 CentOS7关闭SELinux

查看[root@dev-server ~]# getenforceDisabled[root@dev-server ~]# /usr/sbin/sestatus -vSELinux status: disabled临时关闭##设置SELinux 成为permissive模式##setenforce 1 设置SELinux 成为enforcing模式s...

2019-03-30 12:22:57 189

原创 nginx配置

基础配置location / {root /home/admin/draw_lottery_admin_web/pages;index login.html login.htm;}location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {expires 30d;root /home/admin/draw_lottery_admin_...

2019-03-30 10:20:59 367

原创 centos安装jdk和tomcat

1、到oracle官网找到需要的jdk下载地址[tomcat@localhost data]$ cd src[tomcat@localhost src]$ sudo wget http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar...

2019-03-30 09:30:02 74

原创 JVM工具

jps(Java Virtual Machine Process Status Tool)查看jvm进程,包括进程ID,进程启动的路径等等jstack(Java Stack Trace)查看Java线程的调用堆栈的,可以用来分析线程问题;可以查看运行的java程序的java stack和native stack的信息。1、针对活着的进程做本地的或远程的线程dump(jvm的dump文件)...

2019-03-30 09:29:45 151

原创 JVM的参数

默认配置:对内存最大值是物理内存的1/4,堆内young:old=1:2,young中一个s:e=1:6,元数据空间12m-20m,年轻代默认拷贝次数15次,官方建议:young:old=3:5。参数-Xmx1024 Java Heap最大值,最佳设值应该视物理内存大小及计算机内其他内存开销而定;-Xms1024 Java Heap初始值,Server端JVM最好将-Xms和-Xm...

2019-03-30 09:29:35 362

原创 JVM垃圾收集器

串行收集器1、serial收集器(JDK1.7之前默认)使用单线程处理所有垃圾回收工作,因为无需多线程交互,所以效率比较高,在进行垃圾收集时候,必须暂停其他所有的工作线程直到它收集结束。无法使用多处理器的优势,所以此收集器适合单处理器机器。当然,此收集器也可以用在小数据量(100M左右)情况下的多处理器机器上。特点:CPU利用率最高,停顿时间即用户等待时间比较长。使用场景:小型应用JVM...

2019-03-29 22:23:38 221

原创 JVMGC算法

引用计数(Reference Counting)比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。缺点:此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep)此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。缺点:此算法需要暂停整个应用,同...

2019-03-29 22:17:54 497

原创 java使用javamail发送

163/qq邮箱设置POP3/IMAP/SMTP服务:http://blog.csdn.net/u014803081/article/details/73176082如果是使用maven的,pox.xml<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7

2019-03-29 15:19:57 490

原创 163/qq邮箱设置POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

很多邮箱第三方使用POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务登录都是需要授权码的,这个授权码就是第三方登录时候的密码。下面已qq邮箱和163邮箱为例子讲解下。qq邮箱: 163邮箱:

2019-03-29 15:19:44 28628

原创 JVM内存模型以及GC

1、堆保存局部变量的值包括:new产生的对象,数组a、堆是被所有线程共享的一块内存区域,在虚拟机启动的时候被创建。b、堆是垃圾收集的主要区域,因此很多时候被称为"GC"堆,现在垃圾收集一般是按照分代收集的的所以java堆还可以细分为:新生代、老年代;再细分就是Eden空间 、From Survivor 空间、ToSurvivor 空间。c、PermGen(永久区,1.8以后就没有了改成了M...

2019-03-29 15:13:15 460

原创 JVM介绍和类加载机制

JVM什么是JVMJVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节...

2019-03-29 15:03:00 134

原创 java创建对象的几种方式

先创建一个空的对象,空对象里面是有一个默认的构造函数。public class MyObject { }通过new方法,这个最简单也是最常用的。MyObject myObject = new MyObject();反射,通过Class。Class clazz = Class.forName(“com.ydh.sington.MyObject”);MyObject cobj = (MyO...

2019-03-29 00:04:29 129

原创 java集合详解

Vector,ArrayList, LinkedList的区别是什么?1、Vector、ArrayList都是以类似数组的形式存储在内存中,LinkedList则以链表的形式进行存储。2、List中的元素有序、允许有重复的元素,Set中的元素无序、不允许有重复元素。3、Vector线程同步,ArrayList、LinkedList线程不同步。4、LinkedList适合指定位置插入、删除操...

2019-03-29 00:03:35 73

原创 二进制

概念1、现代的电子计算机技术全部采用的是二进制,因为它只使用0、1两个数字符号,非常简单方便,易于用电子方式实现。计算机内部处理的信息,都是采用二进制数来表示的。二进制(Binary)数用0和1两个数字及其组合来表示任何数。进位规则是“逢2进1”,数字1在不同的位上代表不同的值,按从右至左的次序,这个值以二倍递增。计算机最小单位是byte二进制表示是8位,最高位是符号位0代表正数,1代表负数。...

2019-03-29 00:01:38 1427

原创 String详解

String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?1、String是字符串常量,StringBuffer和StringBuilder都是字符串变量。后两者的字符内容可变,而前者创建后内容不可变。2、String不可变是因为在JDK中String类被声明为一个final类。3、StringBuffer是线程安全的,而StringB...

2019-03-28 23:56:54 223

原创 docker安装nginx

// 获取官网镜像docker pull nginx// 静态文件位置docker run --name nginx -p 80:80 -v /docker/nginx/html:/usr/share/nginx/html:ro -d nginx// 拷贝镜像里面的配置文件出来docker cp nginx:/etc/nginx/nginx.conf /docker/nginx/ng...

2019-03-28 23:46:50 81

原创 docker安装mongo

// 获取官网镜像docker pull mongo// 运行docker run --name mongo -dit --restart=always -p 27017:27017 -v /root/docker/mongo/datadir:/data/db -v /home/tomcat/docker/mongo/conf:/etc/mongo -e MONGO_INITDB_ROOT...

2019-03-27 10:10:00 196

原创 docker安装redis

// 获取官网镜像docker pull redis下载redis.conf,然后拷贝到/docker/redis/conf// 启动 —appendonly 开启AOF模式docker run --name redis -dit --restart=always -p 6379:6379 -v /docker/redis/conf:/etc/redis redis:4.0 redi...

2019-03-27 10:09:53 76

原创 docker安装mysql5.7

// 获取官网镜像docker pull mysql:5.7// 创建docker run --name mysql -v /root/docker/mysql/conf:/etc/mysql/conf.d -v /root/docker/mysql/data:/var/lib/mysql -v /root/docker/mysql/log:/var/log/mysql -p 3306:33...

2019-03-26 21:49:19 107

原创 docker-安装tomcat

// 获取官网镜像docker pull tomcat:8.0// 创建docker run --name tomcat -d -p 8080:8080 -v /root/docker/tomcat/tomcat8888:/usr/local/tomcat/webapps/ tomcat:8.0

2019-03-26 19:59:12 136

原创 docker-compose详解

安装yum -y install epel-releaseyum -y install python-pippip --versionpip install docker-composeyml文件imageimage 是指定服务的镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。例如下面这些格式都是可以的:image: redisimage: ...

2019-03-26 19:42:59 437

原创 docker容器重启策略

重启参数–restart重启策略no默认策略,在容器退出时不重启容器on-failure在容器非正常退出时(退出状态非0),才会重启容器on-failure:3在容器非正常退出时重启容器,最多重启3次always在容器退出时总是重启容器unless-stopped在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器例子docker run ...

2019-03-26 19:41:05 599

原创 dockerfile 详解

运行dockerfile-f Dockerfile位置-t 重命名的镜像名字docker build -f Dockerfile -t=“yangdehong/test” .Dockerfile参数FROM 必须为第一个命令,指定基础镜像命令FROM <image>FROM <image>:<tag>FROM <image>@&lt...

2019-03-26 19:21:50 173

原创 docker创建镜像 commit

先登陆docker login阿里登陆docker login registry.cn-hangzhou.aliyuncs.com启动一个docker,并且可以做一些修改docker run -it --name mysql centos /bin/bash提交到本地仓库-a 作者信息-m 镜像信息docker commit -m="add mysql" -a="yang...

2019-03-26 19:13:34 111

原创 docker仓库和镜像

查看docker镜像,位置在/var/lib/docker[root@localhost ~]# docker info镜像列表-a 列出所有-f=[] 过略条件–no-trunc 显示完整唯一ID-q 只显示唯一IDdocker images [opt] [name]例子docker images -a centos删除镜像-f 强制删除镜像–no-prune 保留被...

2019-03-26 19:10:42 85

freeswitch权威指南

freeswitch权威指南,扫描版

2019-01-31

空空如也

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

TA关注的人

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