自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第3章 对象的共享

可见性eg.1 重排序现象public class NoVisibility { private static boolean ready; private static int number; private static class ReaderThread extends Thread { public void run() { ...

2019-06-13 18:17:20 563

原创 第2章 线程安全性

定义:当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的.无状态对象一定是线程安全的竞态条件当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。导致竞态条件发生的代码区称作临界区eg.1 一个计数器类Counter 来源public class Counter { protected long count = 0; pu...

2019-06-13 16:44:02 199

原创 Java并发编程实战阅读笔记目录

第2章 线程安全性第3章 对象的共享

2019-06-13 16:42:59 241

原创 给Java开发者的RocketMQ详解(发送与高可用设计)

前言本文的目的:1.同步发送和异步发送原理解析2.浅谈RocketMQ的架构设计目录RocketMQ是什么?RocketMQ好在哪?原理简析和API介绍(发送篇)producer.start启动都做了哪些重要的事情流程图启动机制小结同步发送流程图tryToFindTopicPublishInfo 查找消息路由selectOneMessageQueue选择...

2019-04-26 13:57:45 3285

原创 面试流程看明白啥是线程等待通知机制

先看定义notify 通知一个在对象上等待的线程,使其从wait()方法返回,而返回的前提是该线程获取到了对象的锁notifyAll 通知所有在该对象上的线程wait 调用该方法线程进入WAITING的状态,只有等待另外线程的通知或被中断才会返回,需要注意,调用wait()后,会释放对象的锁看一段示例代码场景是这样的wait同学跟notify同学一起去面试,他俩在一个同步队列里面,w...

2019-02-16 15:44:43 229

转载 面试流程看明白啥是线程等待通知机制

先看定义notify 通知一个在对象上等待的线程,使其从wait()方法返回,而返回的前提是该线程获取到了对象的锁notifyAll 通知所有在该对象上的线程wait 调用该方法线程进入WAITING的状态,只有等待另外线程的通知或被中断才会返回,需要注意,调用wait()后,会释放对象的锁看一段示例代码场景是这样的wait同学跟notify同学一起去面试,他俩在一个同步队列里面,w...

2019-02-16 08:01:04 125

原创 String.valueOf引发的血案

1.String.valueOf(null) 会报错吗感觉jdk做了容错处理不信你看源码public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString();}点进去报错的地方看看public static String valueOf(char data[]) {...

2019-01-31 17:21:01 610

原创 Spring框架IOC的源码阅读[上]

写在前面的话,之前对Spring也仅仅会用的程度,偶然朋友提到过想实现Spring的IOC和AOP功能,看了git上面tiny-spring的实现,前辈的思路很清晰,于是便有了基于当前Spring最新版本Spring-5.1.4.RELEASE源码阅读和仿写的想法。首先我们看看使用官方框架IOC如何使用// 1.读取配置ApplicationContext applicationCont...

2019-01-31 16:56:52 307

转载 Optional类(不讲废话)

1.创建Optional对象方式1.1 Optional.of(T value)User orginalUser1 = new User("1", "user1");Optional<User> user1 = Optional.of(orginalUser1);复制代码说明: Optional只能接受非null的对象,源码追踪如下...public static <...

2018-11-21 08:29:15 144

原创 Optional类

1.创建Optional对象方式1.1 Optional.of(T value)User orginalUser1 = new User("1", "user1");Optional&lt;User&gt; user1 = Optional.of(orginalUser1);说明: Optional只能接受非null的对象,源码追踪如下...public static &lt;T&g...

2018-11-09 17:49:52 261 2

原创 一次性搞懂覆写和重载

覆写子类重新实现方法覆盖父类的实现只能针对非静态、非final、非构造方法口诀 “一大两小两同”一大: 子类的方法访问权限控制符只能 &gt;= 父类一小: 抛出异常的返回值只能 &lt; 父类,能够转型成父类对象;子类的返回值抛出的异常类型必须与父类的返回值、抛出异常类型存在继承关系.两同: 方法名和参数必须完全相同.示例public class Father { ...

2018-10-19 11:32:20 244

原创 java7新特性

1.二进制数字表达方式原本整数(以60为例)能够用十进制(60)、八进制(074)、十六进制(0x3c)表示,唯独不能用二进制表示(111100),Java 7 弥补了这点。示例int a = 0b111100;log("二进制数 -&gt; " + a);// 输出二进制数 -&gt; 602.使用下划线对数字进行分隔表达原本表示一个很长的数字时,会看的眼花缭乱(比如12...

2018-09-20 11:00:58 228

原创 PECS规则

1.规则集合中读取类型T的数据, ? extends T 或者 ?集合中添加数据 ? super T? 和 ? extends T不能添加数据生产者使用“? extends T”通配符,消费者使用“? super T”通配符2.示例List&amp;lt;String&amp;gt; namesOri = new ArrayList&amp;lt;&amp;gt;();namesOri.add(&quot;A&quot;);...

2018-09-20 10:59:55 848 1

原创 Effective笔记(未完待续)

第1章 (略)第2章 创建和销毁对象第1条 考虑用静态工厂方法代替构造器第2条 遇到多个构造器参数时考虑使用构造器# 重叠构造器模式 编写繁琐、难以阅读# 无参构造器模式 易于阅读、阻止了类不可变 # Builder方式兼顾阅读和安全的问题第3条 用私有构造器或者枚举类型强化Singleton属性# 公有成员是个final域# 公有成员是个静态工厂方法# 公有成员是个...

2018-09-20 10:57:46 204

原创 Java8新特性

1.Lambda 表达式语法(parameters) -&gt; expression或(parameters) -&gt;{ statements; }特征可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。可选的大括号:如果主体包含了一个语句,就不需要使用大括号。可选的返回关键...

2018-08-29 10:19:43 255

原创 Jrebel & Jet Brains License Server for Java 激活神器

1.下载代码git clone https://gitee.com/gsls200808/JrebelLicenseServerforJava.git2.编译mvn compile 3.执行mvn exec:java -Dexec.mainClass="com.vvvtimes.server.MainServer" -Dexec.args="-p 8081"...

2018-08-29 10:18:24 2967

原创 git-flow 入门

0 准备工作 –&gt; git init repo 主分支(master)初始化一个仓库1 git flow init –&gt; 初始化gitflow工作流 PS: gitflow init 成功后本地直接切到 develop分支,也就是我们通常说的开发分支,后续的所有分支都会finish后合并至develop分支,并且由develop分支合并到master分支(用于发...

2018-07-23 10:48:08 750

转载 常见排序算法及对应的时间复杂度和空间复杂度

常见排序算法及对应的时间复杂度和空间复杂度 原贴 http://blog.csdn.net/gane_cheng/article/details/52652705排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法...

2018-06-09 17:01:58 271

原创 java 异常处理机制

Error 和Excetion 都是继承于Throwable Error是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError...

2018-06-09 16:27:31 277

原创 Java单例模式 (懒汉、饿汉)

饿汉单例(本身线程安全、推荐使用)//饿汉单例模式public class Singleton1 { private Singleton1() { } private static final Singleton1 single = new Singleton1(); public static Singleton1 getInstance() { ...

2018-05-23 11:00:52 193

原创 JsonUtils 工具类

public class JsonUtils { // 定义jackson对象 private static final ObjectMapper MAPPER = new ObjectMapper(); /** * 将对象转换成json字符串。 * &lt;p&gt;Title: pojoToJson&lt;/p&gt; * &lt;p&...

2018-05-20 17:42:08 248

原创 Jedis 工具类

通用接口 JedisClientimport java.util.List;public interface JedisClient { String set(String key, String value); String get(String key); Boolean exists(String key); Long expire(String...

2018-05-20 17:38:24 429 1

原创 Java Redis集群

redis-cluster架构图redis-cluster投票:容错小结(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可...

2018-05-20 15:07:23 177

原创 Java集合框架之 List

LinkedList 读写和 ArrayList对比(01) 对于需要快速插入,删除元素,应该使用LinkedList。 (02) 对于需要快速随机访问元素,应该使用ArrayList。 (03) 对于“单线程环境” 或者 “多线程环境,但List仅仅只会被单个线程操作”,此时应该使用非同步的类(如ArrayList)。 对于“多线程环境,且List可能同时被多个线程操作”,此时,应...

2018-05-17 17:39:57 157

原创 java 多线程并发之死锁

当多个线程相互等待已经被对方占用的资源时,就会产生死锁。举例public class DeadLock { public static void main(String[] args) { // 锁A Object lockA = new Object(); // 锁B Object lockB = ne...

2018-04-30 21:13:17 234

原创 java 多线程内存模型

多线程内存模型 所有线程都共享一片内存,用于存储共享变量; 此外,每条线程都有各自的存储空间,存储各自的局部变量、方法参数、异常对象。图解 当开启线程时,系统会将共享内存中的所有共享变量拷贝一份到线程专属的存储空间中。接下来该线程在结束前的所有操作都是基于自己的存储空间进行的。因此,若一条线程改变了一个共享变量,仅仅改变的是这条线程专属存储空间中的变量值...

2018-04-30 20:54:48 261

原创 nginx 实现反向代理 && 负载均衡了解

实现负载均衡举例两个域名指向同一台nginx服务器,用户访问不同的域名显示不同的网页内容。 两个域名是www.tomcata.com和www.tomcatb.com nginx服务器使用虚拟机192.168.157.129 直接上配置 nginx.confupstream tomcata{ server 192.168.157.129:8081;}server {...

2018-04-19 22:30:55 160

原创 nginx 正向代理和反向代理

正向代理 ==&gt; 客户端局域网去请求 代理服务器 代理服务器转发去上网 达到我们自己在上网的目的反向代理 ==&gt; 服务端 反向代理服务器决定哪台服务器提供服务。 反向代理服务器不提供服务器。也是请求的转发。...

2018-04-19 21:28:11 247

原创 centos7 安装jdk8 并配置环境

1.下载压缩包jdk-8u161-linux-x64.tar.gz2.拷贝到 /home/ 目录下3.执行解压命令tar –xvf jjdk-8u161-linux-x64.tar.gz –C /usr/local4.配置jdk 环境变量 vi /etc/profile#set java environmentJAVA_HOME=/usr/local/jdk1...

2018-04-14 23:07:02 351

原创 vm 虚拟机搭建的centos 7通过xhell连接

1.系统安装不再赘述安装参考连接2.配置网络参数2.1 网络适配器选择NAT模式2.2 在VM中菜单栏点击编辑–&gt;虚拟网络编辑,如图配置。需要主机子网ip的网段需要跟主机的的网段一样2.3 在CentOS中 打开终端关闭防火墙centos7 命令如下systemctl start firewalld.service#启动firewall systemc...

2018-04-14 18:22:37 412

原创 VmWare 12 Pro 安装

下载地址秘钥5A02H-AU243-TZJ49-GTC7K-3C61N

2018-04-14 12:33:28 328

原创 Java aop 实战 Token鉴权

自定义注解Authorization.javapackage cn.zdfy.blogsystem.authorization.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPol...

2018-04-02 22:41:44 2336

原创 mybatis 中 #{}带来的困惑

先看 xml 结构 &lt;?xml version="1.0" encoding="UTF-8" ?&gt;&lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" &gt;&lt;mapper namespace=&q

2018-04-02 20:33:00 1778

原创 Java 多线程四之常用函数

sleep(long millis) 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)例子SleepThread.javapackage cn.zdfy.thread.funsThread;public class SleepThread implements Runnable { private String name; private in...

2018-03-21 17:32:30 353

原创 Java SpringMvc架构

SpringMvc架构1.1 框架架构1.2 架构流程1、用户发送请求至前端控制器DispatcherServlet 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 4、DispatcherS...

2018-03-16 14:48:26 237

原创 Java Spring Mvc入门

1 Spring入门1.1 Springmvc是什么Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来,如下图: 1.2 Springmvc处理流程1.3 入门程序需求:使用浏览器显示商品列表1.3.1 导包说明1.3.2 springmvc.xml配置&lt;?...

2018-03-16 11:20:21 704

原创 Java MyBatis高级玩法

2.2.parameterType(输入类型)2.2.1.传递简单类型使用#{}占位符,或者${}进行sql拼接。2.2.2.传递pojo对象Mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称。2.2.3.传递pojo包装对象开发中通过可以使用pojo传递查询条件。查询条件可能是综合的查询条件,不仅包括用户查询条...

2018-03-16 11:00:03 446

原创 Java MyBatis开发模式

Dao类开发 [不使用]Mapper动态代理方式 Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。Mapper接口开发需要遵循以下规范: 1、Mapper.xml文件中的namespace与mapper接口的类路径相同。 2、Mapper接口方...

2018-03-13 21:37:07 210

原创 Java Mybatis好在哪里

Mybatis解决jdbc编程的问题1、数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题。 解决:在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库链接。 2、Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。 解决:将Sql语句配置在XXXXmapper.xml文件中与ja...

2018-03-12 22:52:36 391

原创 Java MyBatis增删改查

增User.xml配置文件 &lt;!-- 添加用户 --&gt; &lt;insert id="saveUser" parameterType="cn.zdfy.User"&gt; &lt;!-- selectKey 标签实现主键返回 --&gt; &lt;!-- keyColumn:主键对应的表中的哪一列 --&gt; &l

2018-03-12 22:48:58 218

空空如也

空空如也

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

TA关注的人

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