自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mybatis generator 自动生成代码

一、pom文件引入依赖<!--mybatis 代码自动生成 --><plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <versi...

2019-09-16 14:52:38 96

原创 线程交替输出A、B、C

解题思路:1.ReentranLock 可重入锁的应用。2.try {} finally{} 解决,lock.lock() 之后的 lock.unlock()。try 里面会对当前线程条件判断做业务处理,无论条件成立不成立最终都会释放锁,但 try 里面必须设置一个递增的状态package com.overcome.thread.demo;import java.util.c...

2019-08-26 17:47:45 239 1

原创 JVM之GC算法

一、引用计数算法给对象添加一个引用计数器,每当被其它对象引用的时候,计数器+1,引用失效的时候 -1但这种算法可能会造成循环依赖的问题二、可达性分析算法GC Roots 引用的对象不能被回收,如虚拟机栈、常量、静态变量、Native方法引用的对象等。三、Java堆也称GC堆,GC堆可分为新生代和老年代。新生代是一个 8:1:1 的比例,分配的对象先会分配 8M...

2019-08-26 11:49:34 126

原创 JVM之内存模型

模型结构方法区:Class 文件信息、常量、静态变量。堆:线程共享的一块区域,存放对象实例。Java堆也称为GC堆,可以再细分为新声代和老年代程序计数器:执行程序指令。虚拟机栈:它是线程私有的,生命周期和栈一样,每个方法在执行的同时都会创建一个栈帧,栈帧包含局部变量表、操作数栈、动态链接、方法出口等信息。本地方法栈:调用本地 Native 方法。...

2019-08-26 10:45:42 114

原创 初识dubbo

模拟dubbo远程调用,分别创建三个工程 dubbo-provider、dubbo-consumer、dubbo-apidubbo 依赖<dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <v...

2019-08-16 11:26:32 91

原创 网络通信 SCOKET -- 初识

ServerSocket 监听端口,通过accept 方法返回一个 Socket实例,通过socket 拿到输入输出流,输入流用来读客户端发送过来的流数据,输出流用来把服务端数据返回到客户端的。思考:服务端的socket 和客户端的socket 不是同一个,却能从同一个流里面写数据、拿数据,是怎么样做到的。编写服务端代码:import java.io.BufferedReader;...

2019-06-13 18:19:09 129

原创 19年五月

2019/05/16 星期四volatile: 轻量级锁 变量在线程之间可见,变量改变会回写到主缓存,保持变量一致Synchronized: 无锁状态 —-> 偏向锁 ——> 轻量级锁 ——->重量级锁多数情况下,锁不存在竞争状态,大多由同一线程访问,当一个线程访问同步块并且获取锁时,会在对象头和栈帧中记录存储偏向锁的线程ID,以后该线程进入和退...

2019-05-16 16:11:43 85

原创 mybatis (一) 缓存技术

mybatis 默认开启一级缓存,sqlSession 级别的,它会出现脏读的情况,比如说你在一个service 方法中执行了三个SQL语句,第一个查询SQL语句,第二个更新SQL语句,第三个查询SQL语句,第一次执行查询SQL语句的时候会将SQL和对应的结果集保存在一个HashMap中,但是更新SQL语句的时候并没有更新缓存的结果集,所以在第三次查询的时候很可能会出现脏读的情况...

2019-05-05 11:55:34 102

原创 走进LINUX

1.日志文件中查找关键字,并显示上下行的内容grep -C3 “key” fileName 注意 C 是大写字母,显示key的上下3行的内容2.根据行号查看上下文内容sed -n “开始行,结束行p” fileName 注意 p 代码段落...

2019-04-26 10:12:05 166

原创 JVM (一) 初识

计算机是通过 数据 + 指令 来工作的。程序计数器:指向当前线程所执行的字节码的行号指示器。虚拟机栈(线程私有):存储当前线程运行方法所需要的数据、指令和返回地址。每个方法被执行的时候都会同时创建一个栈帧(stack frame) 用户存储局部变量表、操作栈、动态链接、方法出口信息等;每一个方法被调用执行到完成的过程就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。...

2019-04-25 17:31:42 102

原创 多线程的实现原理(二)

1.JVM内存模型2.JVM如何解决原子性、可见性、有序性的问题3.volatie 和 synchronizedsynchronized 的实现原理和应用synchronized有三种方式来加锁:1.修饰实例方法,两个线程同时访问同一个实例对象中的方法 synchronized(this) 时候会发生有一个会被阻塞。public class Demo extends ...

2019-04-17 16:54:02 210

原创 线程基础(一)

什么时候用到线程? 1.通过并行计算提高程序性能。 2.等待网络、IO响应导致的耗时问题。线程的状态? 1.初始状态 NEW 线程被构建还没有执行start()方法 2.就绪状态 READY 3.运行状态 RUNABLE 4.等待状态 WAITING 需要等其它线程作一些唤醒的操作如 notify ,...

2019-04-17 16:27:51 84

原创 mysql查询优化

阶段一、mysql客户端/服务通信mysql客户端与服务端的通信方式是 “半双工”;mysql通讯特点和限制: a)客户端一点开始发送消息另一端要接收完整个消息才能响应; b)客户端一旦开始接收数据没法停下来发送指令查看命令 show processlist a) sleep 正在等待客户端发送数据 b)Query 连接线程正在执行查询...

2019-04-08 17:58:25 73

原创 索引

一、什么是索引 如果你对索引的认识还停留在目录这一层面上是还不够的,索引是什么呢,索引是一种存储数据的数据结构,在mysql中 Innodb引擎使用 B + tree 作为索引的数据结构。二、为什么是 B + tree 关键字 = 路数 - 1 , 这里有3路(箭头代表),关键字存在磁盘块里面的键值一般是主键关键字等;数据data只存放在最后一层叶子节点中,...

2019-04-08 11:15:48 85

原创 面试心得

2019.7.31 陆金所一面:线程的几种状态,实现一个按顺序打印ABC的程序(多线程实现),这个问题答的不好,因为不会,但小哥很乐意开导,会提示你用其它的方式来实现,说出自己的想法。其它一些基础问题就不在此列举了。二面:面试官没摆架子很好,话不多说,一番简单自我介绍之后,直接进入myqsl专题,讲mysql肯定缺少不了索引 B tree 的实现,先讲mysql 支持的引擎比较优缺点,再把...

2019-04-02 14:30:15 315

原创 将一个Java对象序列化到文件中

public class DomainObject implements Serializable { private static final long serialVersionUID = -6960820659912840745L; private String objName; /** 不参加序列化 */ private transient Stri...

2019-04-02 13:50:47 1177

原创 理解浅克隆和深克隆

浅克隆如下图所示,浅克隆会复制基本类型的数据,原有对象和克隆对象会持有一个对引用类型的引用。代码表现: public class Email { /** 邮件内容 */ private String content; public Email(String content) { this.content = cont...

2019-04-02 10:56:20 178

原创 MYSQL事务

事务是访问数据库的一个操作序列,ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)1. 脏读:银行卡有100块,A在某行查看卡上余额有100,此时B在某行也在对这张卡操作,并取走了这100块,这个时候,A看到的是卡上还有100块,如果这样的话,谁开银行谁破产。2. 不可重复读:A查卡上余额1000,此时B取出1...

2019-03-20 17:05:25 120

原创 TCP的三次握手、四次挥手

SYN: 代表创建连接ACK:代表确认接收ack:代表下一个数据包的编号,注意是小写seq:序列号,发送过程中产生的随机数

2019-03-18 16:10:18 102

原创 幂等

数学: 1. 什么是幂等?什么情况下需要考虑幂等?怎么来解决幂等问题? 幂等是执行多次请求与执行一次相同; 网络连接超时需要考虑异常,具体参照订单上报(Http调第三方接口的时候可能会出现网络异常等情况),这个时候需要重新上报订单信息,所以后台必须要有重试机制来解决这种由于网络问题造成订单未创建成功的清苦。 解决方案: ...

2019-03-14 16:56:47 148

原创 简单工厂模式、工厂方法模式、抽象工厂模式总结

简单工厂模式 简单工厂类似于小作坊,你要什么我给你什么,俗称万能的作坊。假设,我们现在要从作坊中获得衣服、鞋子 用户可以直接通过 factory.produce()方法获取物品package com.overcome.mode.factory.simpleFactory;/** * 生产衣服、鞋子 */public class LifeFactory ...

2019-03-09 18:52:33 150

原创 JDK动态代理原理实现

持有被代理类对象的类称为代理类。JDK实现动态代理的对象必须实现接口,为什么一定要实现接口?## 创建接口类public interface Human { void createHourse();}## 创建被代理对象public ITHuman implements Human { @Override public void cereate...

2019-03-02 13:04:41 103

原创 工厂模式

工厂模式分简单工厂模式、抽象工厂模式。模式来源于生活,简单工厂如小作坊,可以制作奶茶、甜点、咖啡等;抽象工厂如工厂中的流水线专心只做一件事,提高效率。public class SimpleFactory { public static Milk getMilk(String milkName) { if (milkName.equals("yiLi") {...

2019-03-02 11:16:03 82

原创 单链表反转

有如下链表  反转之后解题思路:              1)链表头节点保持不动,第一个节点要变成链表的最后一个节点;                                  2)着重分析第一个节点,在 1 节点的指针域设为NULL 的时候,先保存 1节点的NEXT 节点,然后用 priorNode节点指                        向 1...

2019-01-16 15:04:08 143

原创 走进Git

git rm -r --cached 显神威 .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。这个时候需要执行:  git rm -r --cached filename  ## 查看Git 关联的远程仓库名称     git reomote ## 查看Git 关联的远程仓库信息    ...

2018-09-07 15:41:03 101

原创 创建Maven父子工程

先了解下坐标 groupId 、artifactId 代表啥意思1.举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org,公司名称是apache,artifactId是tomcat。2.对于项目中的包结构最好是以groupId.artifactId打头的,如 org.apache.tomcat--------------------...

2018-08-02 16:06:37 721

原创 聊聊hashCode

首先,我们要知道hashCode是干嘛的?Set 中不允许出现重复元素,如果Set中已经存在1000个元素,那当我们往里再添加一个元素的时候就需要通过equals() 比较1000次这将是开销很大的一件事情.Java中采用了哈希表的原理,通过哈希算法计算对象存储的内存地址,这样就不需要再去一个个比较了,这也是为什么我们在重写equals()的时候应当重写hashCode.那有人会问,当两个或多个对...

2018-03-22 17:01:36 192

原创 java - 单例模式

双锁模式 synchronizepublic class Singleton{ volatile private static Singleton instance= null; private Singleton() {} public static Singleton getSingleton () { if (instance!= null) {

2018-02-28 11:50:58 113

原创 排序算法学习

快速选择排序算法 /** * 快速排序算法 * 通过一趟排序将数据分成两部分 , 其中一部分的数据要比 * 另外一部分小或大 , 利用递归进行 , 直至数据有序 * 算法步骤 : * 1.定义两个指针分别指向低位和高位 * 2.将数组第一个元素作为基数 * 3.从后往前遍

2018-02-24 10:28:38 125

空空如也

空空如也

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

TA关注的人

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