
Java
文章平均质量分 52
张大佛爷__zhang
写代码是一定会写代码的,这辈子都会写代码
展开
-
第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 · 761 阅读 · 0 评论 -
JsonUtils 工具类
public class JsonUtils { // 定义jackson对象 private static final ObjectMapper MAPPER = new ObjectMapper(); /** * 将对象转换成json字符串。 * <p>Title: pojoToJson</p> * <p&...原创 2018-05-20 17:42:08 · 291 阅读 · 0 评论 -
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 · 505 阅读 · 1 评论 -
Java Redis集群
redis-cluster架构图redis-cluster投票:容错小结(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可...原创 2018-05-20 15:07:23 · 229 阅读 · 0 评论 -
Java集合框架之 List
LinkedList 读写和 ArrayList对比(01) 对于需要快速插入,删除元素,应该使用LinkedList。 (02) 对于需要快速随机访问元素,应该使用ArrayList。 (03) 对于“单线程环境” 或者 “多线程环境,但List仅仅只会被单个线程操作”,此时应该使用非同步的类(如ArrayList)。 对于“多线程环境,且List可能同时被多个线程操作”,此时,应...原创 2018-05-17 17:39:57 · 187 阅读 · 0 评论 -
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 · 195 阅读 · 0 评论 -
nginx 正向代理和反向代理
正向代理 ==> 客户端局域网去请求 代理服务器 代理服务器转发去上网 达到我们自己在上网的目的反向代理 ==> 服务端 反向代理服务器决定哪台服务器提供服务。 反向代理服务器不提供服务器。也是请求的转发。...原创 2018-04-19 21:28:11 · 280 阅读 · 0 评论 -
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 · 270 阅读 · 0 评论 -
java 多线程内存模型
多线程内存模型 所有线程都共享一片内存,用于存储共享变量; 此外,每条线程都有各自的存储空间,存储各自的局部变量、方法参数、异常对象。图解 当开启线程时,系统会将共享内存中的所有共享变量拷贝一份到线程专属的存储空间中。接下来该线程在结束前的所有操作都是基于自己的存储空间进行的。因此,若一条线程改变了一个共享变量,仅仅改变的是这条线程专属存储空间中的变量值...原创 2018-04-30 20:54:48 · 304 阅读 · 0 评论 -
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 · 388 阅读 · 0 评论 -
vm 虚拟机搭建的centos 7通过xhell连接
1.系统安装不再赘述安装参考连接2.配置网络参数2.1 网络适配器选择NAT模式2.2 在VM中菜单栏点击编辑–>虚拟网络编辑,如图配置。需要主机子网ip的网段需要跟主机的的网段一样2.3 在CentOS中 打开终端关闭防火墙centos7 命令如下systemctl start firewalld.service#启动firewall systemc...原创 2018-04-14 18:22:37 · 456 阅读 · 0 评论 -
VmWare 12 Pro 安装
下载地址秘钥5A02H-AU243-TZJ49-GTC7K-3C61N原创 2018-04-14 12:33:28 · 379 阅读 · 0 评论 -
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 · 435 阅读 · 0 评论 -
Java MyBatis开发模式
Dao类开发 [不使用]Mapper动态代理方式 Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。Mapper接口开发需要遵循以下规范: 1、Mapper.xml文件中的namespace与mapper接口的类路径相同。 2、Mapper接口方...原创 2018-03-13 21:37:07 · 250 阅读 · 0 评论 -
Java Mybatis好在哪里
Mybatis解决jdbc编程的问题1、数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题。 解决:在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库链接。 2、Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。 解决:将Sql语句配置在XXXXmapper.xml文件中与ja...原创 2018-03-12 22:52:36 · 424 阅读 · 0 评论 -
Java单例模式 (懒汉、饿汉)
饿汉单例(本身线程安全、推荐使用)//饿汉单例模式public class Singleton1 { private Singleton1() { } private static final Singleton1 single = new Singleton1(); public static Singleton1 getInstance() { ...原创 2018-05-23 11:00:52 · 241 阅读 · 0 评论 -
java 异常处理机制
Error 和Excetion 都是继承于Throwable Error是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError...原创 2018-06-09 16:27:31 · 321 阅读 · 0 评论 -
第2章 线程安全性
定义:当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的.无状态对象一定是线程安全的竞态条件当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。导致竞态条件发生的代码区称作临界区eg.1 一个计数器类Counter 来源public class Counter { protected long count = 0; pu...原创 2019-06-13 16:44:02 · 261 阅读 · 0 评论 -
Java并发编程实战阅读笔记目录
第2章 线程安全性第3章 对象的共享原创 2019-06-13 16:42:59 · 312 阅读 · 0 评论 -
给Java开发者的RocketMQ详解(发送与高可用设计)
前言本文的目的:1.同步发送和异步发送原理解析2.浅谈RocketMQ的架构设计目录RocketMQ是什么?RocketMQ好在哪?原理简析和API介绍(发送篇)producer.start启动都做了哪些重要的事情流程图启动机制小结同步发送流程图tryToFindTopicPublishInfo 查找消息路由selectOneMessageQueue选择...原创 2019-04-26 13:57:45 · 3498 阅读 · 0 评论 -
面试流程看明白啥是线程等待通知机制
先看定义notify 通知一个在对象上等待的线程,使其从wait()方法返回,而返回的前提是该线程获取到了对象的锁notifyAll 通知所有在该对象上的线程wait 调用该方法线程进入WAITING的状态,只有等待另外线程的通知或被中断才会返回,需要注意,调用wait()后,会释放对象的锁看一段示例代码场景是这样的wait同学跟notify同学一起去面试,他俩在一个同步队列里面,w...原创 2019-02-16 15:44:43 · 275 阅读 · 0 评论 -
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 · 660 阅读 · 0 评论 -
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 · 462 阅读 · 0 评论 -
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 <T&g...原创 2018-11-09 17:49:52 · 380 阅读 · 2 评论 -
一次性搞懂覆写和重载
覆写子类重新实现方法覆盖父类的实现只能针对非静态、非final、非构造方法口诀 “一大两小两同”一大: 子类的方法访问权限控制符只能 >= 父类一小: 抛出异常的返回值只能 < 父类,能够转型成父类对象;子类的返回值抛出的异常类型必须与父类的返回值、抛出异常类型存在继承关系.两同: 方法名和参数必须完全相同.示例public class Father { ...原创 2018-10-19 11:32:20 · 296 阅读 · 0 评论 -
java7新特性
1.二进制数字表达方式原本整数(以60为例)能够用十进制(60)、八进制(074)、十六进制(0x3c)表示,唯独不能用二进制表示(111100),Java 7 弥补了这点。示例int a = 0b111100;log("二进制数 -> " + a);// 输出二进制数 -> 602.使用下划线对数字进行分隔表达原本表示一个很长的数字时,会看的眼花缭乱(比如12...原创 2018-09-20 11:00:58 · 296 阅读 · 0 评论 -
PECS规则
1.规则集合中读取类型T的数据, ? extends T 或者 ?集合中添加数据 ? super T? 和 ? extends T不能添加数据生产者使用“? extends T”通配符,消费者使用“? super T”通配符2.示例List&lt;String&gt; namesOri = new ArrayList&lt;&gt;();namesOri.add("A");...原创 2018-09-20 10:59:55 · 897 阅读 · 1 评论 -
Effective笔记(未完待续)
第1章 (略)第2章 创建和销毁对象第1条 考虑用静态工厂方法代替构造器第2条 遇到多个构造器参数时考虑使用构造器# 重叠构造器模式 编写繁琐、难以阅读# 无参构造器模式 易于阅读、阻止了类不可变 # Builder方式兼顾阅读和安全的问题第3条 用私有构造器或者枚举类型强化Singleton属性# 公有成员是个final域# 公有成员是个静态工厂方法# 公有成员是个...原创 2018-09-20 10:57:46 · 348 阅读 · 0 评论 -
Java8新特性
1.Lambda 表达式语法(parameters) -> expression或(parameters) ->{ statements; }特征可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。可选的大括号:如果主体包含了一个语句,就不需要使用大括号。可选的返回关键...原创 2018-08-29 10:19:43 · 321 阅读 · 0 评论 -
常见排序算法及对应的时间复杂度和空间复杂度
常见排序算法及对应的时间复杂度和空间复杂度 原贴 http://blog.youkuaiyun.com/gane_cheng/article/details/52652705排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法...转载 2018-06-09 17:01:58 · 305 阅读 · 0 评论 -
Java MyBatis增删改查
增User.xml配置文件 <!-- 添加用户 --> <insert id="saveUser" parameterType="cn.zdfy.User"> <!-- selectKey 标签实现主键返回 --> <!-- keyColumn:主键对应的表中的哪一列 --> &l原创 2018-03-12 22:48:58 · 265 阅读 · 0 评论 -
Java 整合SSH三大框架(完整详解)
三大框架架构(整合原理) 链接: https://pan.baidu.com/s/1QFXZ1oAfUJSHno5wON1Ybg 密码: jdst导包(41个)hibernatehibernate/lib/requiredhibernate/lib/jpa | java persist api java的持久化规范(接口)数据库驱动struts...原创 2018-03-12 16:30:08 · 1079 阅读 · 0 评论 -
Java Spring中aop事务
事务事务特性:acid事务并发问题脏读不可重复读幻读事务的隔离级别1 读未提交2 读已提交4 可重复读8 串行化spring封装了事务管理代码事务操作打开事务提交事务回滚事务事务操作对象因为在不同平台,操作事务的代码各不相同.spring提供了一个接口PlatformTransa...原创 2018-03-08 16:31:15 · 384 阅读 · 0 评论 -
Java 代理模式
代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法 举例用户A要找目标对象C办事情,但是A不能直接联系到C,只能联系他的原创 2018-02-01 16:26:47 · 217 阅读 · 0 评论 -
Java 设计模式之观察者模式(发布/订阅模式)
观察者模式(发布/订阅模式) 观察者模式(Observer Pattern)也叫做发布订阅模式(Publish/subscribe),它是一个在项 目中经常使用的模式,其定义如下: Define a one-to-many dependency between objects so that when one object changes state,all its de...原创 2018-02-27 17:56:46 · 718 阅读 · 0 评论 -
Java 多线程之三线程调度
1、调整线程优先级 Java线程有优先级,优先级高的线程会获得较多的运行机会。Java线程的优先级用整数表示,取值范围是1~10,Thread类有以下三个静态常量:static int MAX_PRIORITY //线程可以具有的最高优先级,取值为10。 static int MIN_PRIORITY //线程可以具有的最低优先级,取值为1。 static int N...原创 2018-03-07 10:19:45 · 220 阅读 · 0 评论 -
Java 多线程一之两种实现方式
一.继承 java.lang.Thread类package cn.zdfy.thread;public class Thread1 extends Thread { private String name; public Thread1(String name) { this.name = name; } @Override pu...原创 2018-03-07 09:54:18 · 178 阅读 · 0 评论 -
Java 使用注解配置spring
步骤0.导包(4+2+spring-aop)1.为主配置文件引入新的命名空间(约束)2.开启使用注解代理配置文件<!-- 指定扫描cn.zdfy.bean报下的所有类中的注解. 注意:扫描包时.会扫描指定报下的所有子孙包 --><context:component-scan base-package="cn.zdfy.bean">...原创 2018-02-27 13:40:06 · 218 阅读 · 0 评论 -
Java Hibernate中的事务
事务事务特性 a 原子性 c 一致性 i 隔离性 d 持久性事务并发问题 1.脏读 2.不可重复度 3.幻|虚读 事务的隔离级别 读未提交- 123 读已提交 - 23 可重复读(mysql默认级别)-3 串行化 - 没有问题 如何在hibernate中指定数据库的隔离级别 ...原创 2018-02-13 16:22:20 · 263 阅读 · 0 评论 -
Java Spring整合JDBC
导包db.properties 数据库配置jdbc.jdbcUrl=jdbc:mysql:///hibernate_32jdbc.driverClass=com.mysql.jdbc.Driverjdbc.user=rootjdbc.password=rootapplicationContext.xml 配置<?xml version="1.0" encodi...原创 2018-03-06 20:11:24 · 181 阅读 · 0 评论