自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 在Windows上搭建Git Server

Git在版本控制方面,相比与SVN有更多的灵活性,对于开源的项目,我们可以托管到Github上面,非常方便,但是闭源的项目就会收取昂贵的费用。 那么私有项目,如何用Git进行代码版本控制呢?我们可以自己构建Git服务器。一般来说,在Linux上搭建Git的教程比较多,但是如何在Windows Server平台下搭建Git服务器呢? 对于很多.NET用户来说,代码编写的工具是Visu...

2019-02-28 00:35:17 160

转载 连接数据库报错:1251-Client does not support authentication protocol requested by server

问题: 使用Navicat连接MySQL的时候,出现了一个问题: 1251-Client does not support authentication protocol requested by server; consider upgrading MySQL client 原因: 经查,出现这种情况的原因是:MySQL8 之前的版本中加密规则是mysql_native_password...

2019-02-27 23:53:17 819

原创 MySQL安装

windows下MySQL 8.0.15的安装和设置 MySQL下载地址:https://dev.mysql.com/downloads/file/?id=484900 不注册下载 我下载的8.0.15版本...

2019-02-27 23:38:12 206

转载 Redis应用场景 redis精髓

Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。 Redis常用数据类型 Redis最为常用的数据类型主要有以下五种: String Hash List Set Sorted set 在具体描述这几种数据类型之前,我们先通过一张...

2019-02-27 00:03:40 112

转载 eclipse中git从远程clone项目报错:cannot open git-upload-pack

当你eclipse中import一个git项目,远程clone时:输入地址 发现提示下面这个错误时:因为通过https访问Git远程仓库,如果服务器的SSL证书没有经过第三方机构签署,就会出现cannot open git-upload-pack这个问题 解决方法:Window >Preferences >Team>Git>User settings点击A...

2019-02-25 23:50:50 624

转载 SVN命令之清理命令(clean up)的功能及使用技巧

SVN的清理命令,我们经常会使用。这个命令的原理,我们还是有必要深究一下的。     当SVN改变你的工作拷贝(或是.svn中的任何信息),它会尽可能的小心。在进行任何修改操作时,SVN都会把日志记录到日志文件中,然后执行log文件中的命令, 并且执行过程中在工作拷贝的相关部分保存一个锁,防止SVN客户端在变更过程中访问工作拷贝。如果SVN的操作中断了(举个例子:进程被杀死了,机器死掉了), 日志...

2019-02-25 20:24:13 4009

原创 Java 学习路线 知识总结

1 基础篇     01  面向对象 → 什么是面向对象 面向对象、面向过程 面向对象的三大基本特征和五大基本原则 → 平台无关性 Java 如何实现的平台无关 JVM 还支持哪些语言(Kotlin、Groovy、JRuby、Jython、Scala) → 值传递 值传递、引用传递 为什么说 Java 中只有值传递 → 封装、继承、多态 什么是多态、方法重写与重载 ...

2019-02-24 16:43:26 481 1

转载 Java多线程21:多线程下的其他组件之CyclicBarrier、Callable、Future和FutureTask

CyclicBarrier 接着讲多线程下的其他组件,第一个要讲的就是CyclicBarrier。CyclicBarrier从字面理解是指循环屏障,它可以协同多个线程,让多个线程在这个屏障前等待,直到所有线程都达到了这个屏障时,再一起继续执行后面的动作。看一下CyclicBarrier的使用实例: public static class CyclicBarrierThread exten...

2019-02-21 23:43:53 84

转载 Java多线程20:多线程下的其他组件之CountDownLatch、Semaphore、Exchanger

前言 在多线程环境下,JDK给开发者提供了许多的组件供用户使用(主要在java.util.concurrent下),使得用户不需要再去关心在具体场景下要如何写出同时兼顾线程安全性与高效率的代码。之前讲过的线程池、BlockingQueue都是在java.util.concurrent下的组件,Timer虽然不在java.util.concurrent下,但也算是。后两篇文章将以例子的形式简单讲解...

2019-02-21 22:35:57 95

转载 Java多线程19:定时器Timer

前言 定时/计划功能在Java应用的各个领域都使用得非常多,比方说Web层面,可能一个项目要定时采集话单、定时更新某些缓存、定时清理一批不活跃用户等等。定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程方式进行处理,所以它和多线程技术关联还是相当大的。那和ThreadLocal一样,还是先讲原理再讲使用,Timer的实现原理不难,就简单扫一下就好了。 Timer...

2019-02-21 22:18:48 102

转载 Java多线程18:线程池

使用线程池与不使用线程池的差别 先来看一下使用线程池与不使用线程池的差别,第一段代码是使用线程池的: public static void main(String[] args) { long startTime = System.currentTimeMillis(); final List<Integer> l = new LinkedList<In...

2019-02-21 22:08:34 97

转载 Java多线程17:中断机制

概述 之前讲解Thread类中方法的时候,interrupt()、interrupted()、isInterrupted()三个方法没有讲得很清楚,只是提了一下。现在把这三个方法同一放到这里来讲,因为这三个方法都涉及到多线程的一个知识点----中断机制。 Java没有提供一种安全、直接的方法来停止某个线程,而是提供了中断机制。中断机制是一种协作机制,也就是说通过中断并不能直接终止另一个线程,而...

2019-02-21 21:57:00 139

转载 Java多线程16:线程组

线程组 可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示: 线程组的作用是:可以批量管理线程或线程组对象,有效地对线程或线程组对象进行组织。 线程关联线程组:1级关联 所谓1级关联就是父对象中有子对象,但并不创建孙对象。这种情况在开发中很常见,比如创建一些线程时,为了有效对这些线程进行阻止管理,通...

2019-02-21 21:45:09 126

转载 Java多线程15:Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型

Queue是什么 队列,是一种数据结构。除了优先级队列和LIFO队列外,队列都是以FIFO(先进先出)的方式对各个元素进行排序的。无论使用哪种排序方式,队列的头都是调用remove()或poll()移除元素的。在FIFO队列中,所有新元素都插入队列的末尾。 Queue中的方法 Queue中的方法不难理解,6个,每2对是一个也就是总共3对。看一下JDK API就知道了: 注意一点就...

2019-02-18 22:43:08 107

转载 Java多线程14:生产者/消费者模型

什么是生产者/消费者模型 一种重要的模型,基于等待/通知机制。生产者/消费者模型描述的是有一块缓冲区作为仓库,生产者可将产品放入仓库,消费者可以从仓库中取出产品,生产者/消费者模型关注的是以下几个点: 生产者生产的时候消费者不能消费 消费者消费的时候生产者不能生产 缓冲区空时消费者不能消费 缓冲区满时生产者不能生产 生产者/模型作为一种重要的模型,它的优点在于: 解耦。因为多了一个缓冲...

2019-02-18 22:31:47 82

转载 Java多线程13:读写锁和两种同步方式的对比

读写锁ReentrantReadWriteLock概述 大型网站中很重要的一块内容就是数据的读写,ReentrantLock虽然具有完全互斥排他的效果(即同一时间只有一个线程正在执行lock后面的任务),但是效率非常低。所以在JDK中提供了一种读写锁ReentrantReadWriteLock,使用它可以加快运行效率。 读写锁表示两个锁,一个是读操作相关的锁,称为共享锁;另一个是写操作相关的锁...

2019-02-18 22:07:35 88

转载 Java多线程12:ReentrantLock中的方法

公平锁与非公平锁 ReentrantLock有一个很大的特点,就是可以指定锁是公平锁还是非公平锁,公平锁表示线程获取锁的顺序是按照线程排队的顺序来分配的,而非公平锁就是一种获取锁的抢占机制,是随机获得锁的,先来的未必就一定能先得到锁,从这个角度讲,synchronized其实就是一种非公平锁。非公平锁的方式可能造成某些线程一直拿不到锁,自然是非公平的了。看一下例子,new ReentrantLo...

2019-02-18 21:42:27 110

转载 Java多线程11:ReentrantLock的使用和Condition

ReentrantLock ReentrantLock,一个可重入的互斥锁,它具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大。 ReentrantLock基本用法 先来看一下ReentrantLock的基本用法: public class ThreadDomain38 { private Lock lock = n...

2019-02-18 21:31:17 94

转载 Java多线程10:ThreadLocal的作用及使用

ThreadLocal的作用 从上一篇对于ThreadLocal的分析来看,可以得出结论:ThreadLocal不是用来解决共享对象的多线程访问问题的,通过ThreadLocal的set()方法设置到线程的ThreadLocal.ThreadLocalMap里的是是线程自己要存储的对象,其他线程不需要去访问,也是访问不到的。各个线程中的ThreadLocal.ThreadLocalMap以及Th...

2019-02-18 21:06:33 201

转载 Java多线程9:ThreadLocal源码剖析

ThreadLocal源码剖析 ThreadLocal其实比较简单,因为类里就三个public方法:set(T value)、get()、remove()。先剖析源码清楚地知道ThreadLocal是干什么用的、再使用、最后总结,讲解ThreadLocal采取这样的思路。 三个理论基础 在剖析ThreadLocal源码前,先讲一下ThreadLocal的三个理论基础: 1、每个线程都...

2019-02-18 20:53:44 121

转载 Java多线程8:wait()和notify()/notifyAll()

轮询 线程本身是操作系统中独立的个体,但是线程与线程之间不是独立的个体,因为它们彼此之间要相互通信和协作。 想像一个场景,A线程做int型变量i的累加操作,B线程等待i到了10000就打印出i,怎么处理?一个办法就是,B线程while(i == 10000),这样两个线程之间就有了通信,B线程不断通过轮训来检测i == 10000这个条件。 这样可以实现我们的需求,但是也带来了问题:CPU把...

2019-02-03 10:37:24 109

转载 Java多线程7:死锁

前言 死锁单独写一篇文章是因为这是一个很严重的、必须要引起重视的问题。这不是夸大死锁的风险,尽管锁被持有的时间通常很短,但是作为商业产品的应用程序每天可能要执行数十亿次获取锁->释放锁的操作,只要在这数十亿次操作中只要有一次发生了错误,就可能导致程序中发生死锁,并且即使通过压力测试也不可能找出所有潜在的死锁。 死锁 一个经典的多线程问题。 当一个线程永远地持有一个锁,并且其他线...

2019-02-03 09:30:39 135

空空如也

空空如也

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

TA关注的人

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