自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hermione Granger的博客

STUDY LIKE GRANGER ———From BestQiang

  • 博客(20)
  • 资源 (9)
  • 论坛 (1)
  • 收藏
  • 关注

原创 我的个人搭建博客,有空来玩!

博客地址:https://bestqiang.github.io/技术的进步来自于不懈的追求!

2019-05-29 21:35:02 16472 5

原创 (二)Netty基础操作案例

Netty网络聊天室:ChatClient 网络聊天室客户端package com.bestqiang.netty.chat;import io.netty.bootstrap.Bootstrap;import io.netty.channel.*;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channe...

2019-05-29 15:05:45 15875 1

原创 (一)Netty之整体设计与核心API

Netty是什么?Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络 IO 程序。Netty 是一个基于 NIO 的网络编程框架,使用 Netty 可以帮助你快速、简单的开发出一个网络应用,相当于简化和流程化了 NIO 的开发过程。作为当前最流行的 NIO 框架,Netty 在互联网领...

2019-05-29 14:50:31 15351 1

原创 (三)NIO之AIO,对比总结

AIO编程JDK 7 引入了 Asynchronous I/O,即 AIO。在进行 I/O 编程中,常用到两种模式:Reactor和 Proactor。Java 的 NIO 就是 Reactor,当有事件触发时,服务器端得到通知,进行相应的处理。AIO 即 NIO2.0,叫做异步不阻塞的 IO。AIO 引入异步通道的概念,采用了 Proactor 模式,简化了程序编写,一个有效的请求才启...

2019-05-28 22:04:12 16223

原创 (二)NIO之网络IO

概述和核心 API前面在进行文件 IO 时用到的 FileChannel 并不支持非阻塞操作,学习 NIO 主要就是进行网络 IO,Java NIO 中的网络通道是非阻塞 IO 的实现,基于事件驱动,非常适用于服务器需要维持大量连接,但是数据交换量不大的情况,例如一些即时通信的服务等等在 Java 中编写 Socket 服务器,通常有以下几种模式:一个客户端连接用一个线程,优点:程序编写简...

2019-05-28 21:45:13 16457

原创 (一)NIO编程之NIO与BIO

BIO编程

2019-05-28 12:08:30 16997

原创 (六)并发编程之Java中的锁

公平锁和非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁类似排队打饭 先来后到非公平锁是指在多线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取到锁,在高并发的情况下,有可能造成优先级反转或者饥饿现象两者的区别:公平锁/非公平锁并发包ReentrantLock的创建可以指定构造函数的boolean类型来得到公平锁或者非公平锁 默认是非公平锁注:...

2019-05-27 21:50:28 17110 1

原创 (五)并发编程之容器类

java.util.ConcurrentModificationException标题的错误是由于多线程并发争抢修改导致的,在并发编程中使用线程不安全的容器导致的下面晒出导致错误的例子:package com.bestqiang.thread.Collections;import java.util.List;import java.util.UUID;import java.ut...

2019-05-27 21:18:22 17289

原创 (四)并发编程之CAS

CAS是什么?CAS ===》 compareAndSet 或者 compareAndSwap ,比较并交换,暂时这样理解,下面会对CAS做具体分析。public class CASDemo { public static void main(String[] args) { AtomicInteger atomicInteger = new AtomicInteger...

2019-05-27 20:26:05 17070

原创 (三)并发编程之线程池

为什么要使用线程池,优势是什么?线程池做的工作主要是控制运行的线程的数量,处理过程中将任务加入队列,然后在线程创建后启动这些任务,如果线程超过了最大数量,超出的数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行.他的主要特点为:线程复用控制最大并发数管理线程.第一:降低资源消耗.通过重复利用自己创建的线程降低线程创建和销毁造成的消耗.第二: 提高响应速度.当任务到达...

2019-05-27 16:31:14 17629

原创 (二)Java中的并发队列和阻塞队列

并发队列在并发队列上JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列非阻塞队列,一个是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue。阻塞队列与非阻塞队1.阻塞队列阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获...

2019-05-17 17:48:33 18455 1

原创 (一)并发包中的(计数器)CountDownLatch,(屏障)CyclicBarrier,(计数信号量)Semaphore

(计数器)CountDownLatchCountDownLatch 类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就...

2019-05-17 16:14:55 17135

原创 多线程之间按顺序调用,实现A->B->C三个线程启动(使用Lock锁)

题目:多线程之间按顺序调用,实现A->B->C三个线程启动,要求如下:AA打印5次,BB打印10次,CC打印15次…来十轮思路:使用Lock锁的多个Condition实现精准唤醒。package com.bestqiang.thread.Queue;/** * @author BestQiang */import java.util.concurrent.loc...

2019-05-17 15:43:34 18520

原创 关于多线程中的虚假唤醒的原因和解决,以及分别用Lock锁和阻塞队列实现消费者生产者案例

虚假唤醒: 有这么一种情况,在一个线程调用wait()进行等待时,被其他线程所唤醒,但是这时同时有另外的线程也被唤醒了,它抢先运行后,使得原来的唤醒条件又不满足了,这时就悲剧了,这个线程就称为被虚假唤醒了。 有人说,它所在的线程是加锁的,唤醒后不是依然不能运行吗,是的,但是它被唤醒了,等到获取锁后,依然会运行。解决: 所以为了避免这种情况,只好用while循环避免虚假唤醒。(因为if只判断一...

2019-05-17 15:21:40 17308 2

原创 关于Java内存可见性的探究实验遇到的意外和happens-before

java内存模型(JMM)学习过后,一直没有找机会进行实践,于是抽时间写了一个程序验证JVM内存模型中常见的线程不可见问题程序如下:package com.bestqiang.thread.JUC;/** * @author BestQiang */public class TestStatic { public static void main(String[] args...

2019-05-15 14:43:25 17069

原创 GC Roots的对象,以及对java类中的成员变量,局部变量,静态变量和常量的不同回收时机的解析

1.作为GC Roots的对象有以下几种虚拟机栈(栈帧中的局部变量区,也叫局部变量表)中引用的对象。方法区中的类静态属性引用的对象。方法区中常量引用的对象。本地方法栈中JNI(Native)方法引用的对象。2.成员变量(实例变量)&局部变量&静态变量(类变量)的区别成员变量(实例变量)&局部变量区别:作用域成员变量:针对整个类有效。局部变量:只在...

2019-05-06 10:16:36 18439

原创 从class文件与JVM加载机制理解final、static、static final

编程过程中经常用的static,final关键字,也经常听到同事谈起这些词,到底他们怎么样呢,JVM中class类文件结构可以找到答案。ConstantValue属性ConstantValue属性的作用是通知虚拟机自动为静态变量赋值,只有被static修饰的变量才可以使用这项属性。非static类型的变量的赋值是在实例构造器方法中进行的;tatic类型变量赋值分两种,在类构造其中赋值,或使用C...

2019-05-05 22:03:43 18064

转载 通过反编译深入理解Java String及intern + JDK1.8关于运行时常量池, 字符串常量池的要点

原作者:liuxiaopeng一、字符串问题  字符串在我们平时的编码工作中其实用的非常多,并且用起来也比较简单,所以很少有人对其做特别深入的研究。倒是面试或者笔试的时候,往往会涉及比较深入和难度大一点的问题。我在招聘的时候也偶尔会问应聘者相关的问题,倒不是说一定要回答的特别正确和深入,通常问这些问题的目的有两个,第一是考察对 JAVA 基础知识的了解程度,第二是考察应聘者对技术的态度。  ...

2019-05-04 21:25:57 17349 2

原创 "init"与"clinit"的区别

在编译生成class文件时,会自动产生两个方法,一个是类的初始化方法<clinit>, 另一个是实例的初始化方法<init>注意:<clinit>:如果没有静态块,静态变量则没有<clinit><init>:类的实例构造器。关于二者的详细对照:<clinit>:在JVM第一次加载class文件时调用,包括静态变量初始...

2019-05-03 17:19:23 17465

原创 JVM之Class文件分析详解

JVM之Class文件分析详解逐个字节分析Class文件。了解Class文件内部结构。原始类文件:这个类直接拿了知乎的一个类,分析是很简单,只是因为重新画图比较麻烦,不想再做重复的苦力工作(地址(https://zhuanlan.zhihu.com/p/23068093)ps:作者仅仅提供了类和图,并无解析。)package com.vonzhou.learn.jvm.klass;p...

2019-05-03 13:43:30 17259

TCP网络聊天室完整源码,用于课程设计。

TCP网络聊天室完整源码。

2019-04-30

李兴华java第一行代码所有PPT+源代码

本来想拆成两部分发送的,这样干脆一起发送了,造福网友,只要10积分,代码教程详细的可怕,请叫我雷锋

2018-05-01

esl-erlang_17.0-1_centos_6_i386.rpm

erlang安装。

2019-04-30

ScrToPic最好用的快速截屏软件

快速定位截屏标识重点,上课或者制作文档必备软件,方便易用

2018-07-13

jdk 1.8 中文版

jdk 1.8 中文版,包含最新1.8新特性。。。。。。。。。。。。。。。。。。。。。。。。。

2018-04-03

尚硅谷Bank项目全部教学视频以及所有源代码

尚硅谷Bank项目全部教学视频以及所有源代码,解压后使用

2018-04-03

SQLyog附注册码解压绿色版

自我感觉最好用的一款sqlyog汉化版本,直接打包发过来了,内附注册码,绿色版,解压即可使用

2018-07-13

超级硬盘数据恢复2.7.1.5破解版

功能强悍,只要五分,这个恢复了很多我无意中删除的东西,u盘页可以哦

2018-04-03

屏幕录制专家破解版

屏幕录制专家破解版,亲测可用。

2019-04-30

Hermione Granger的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

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

TA关注的人 TA的粉丝

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