自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

搬砖人的博客

没有对比就没有伤害,此博客仅作为平时学习的笔记,归纳总结,错误的地方还敬请各位大佬指出,谢谢

  • 博客(35)
  • 收藏
  • 关注

原创 equals() 和 == 的区别

对于byte,short,int,long,float,double,boolean,char这8种基本数据类型,== 比较的是值是否相同;对于类对象,== 比较的是2个对象的内存地址是否相同(也就是是否是同一对象)。equals()其实是Object类里的方法源码:public boolean equals(Object obj) { return (this == ...

2019-08-13 12:11:45 143

转载 MySQL的四种事务隔离级别

数据库事务的四大特性(ACID):原子性(Atomicity):所有操作要么全部成功,要么全部失败; 一致性(Consistency):数据库从一个一致性状态变换到另一个一致性状态; 隔离性(Isolation):当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间相互隔离;(四种事务隔离级别) 持久性(Durability):事务一旦提...

2019-07-15 17:33:29 132

原创 HashMap 源码笔记

put函数简述:put函数有两个参数,key和value,实际上还有一个int类型的hash值,是通过key的hashCode与其高16位进行异或运算得到的,首先判断table数组是否存在,如果不存在的化就初始化,默认容量为16,加载因子为0.75(也就是说当达到12时,就会扩容,扩容方法单独说),数组长度减一与运算hash值,得到当前节点应该table数组中的哪个位置,如果为空,就new一个...

2019-06-14 15:37:07 143

原创 TCP/IP 学习笔记

TCP/IP模型的协议层:自上而下分为:应用层,传输层,网际层,网络访问层应用层:为网络排错,文件传输,远程控制和Internet操作提供了应用程序,还支持应用编程接口(API),从而使得针对特定操作系统编写的程序能够访问网络;传输层:为网络提供了流量控制、错误控制和确认服务。充当网络应用程序的接口;网际层:提供独立于硬件的逻辑寻址;提供路由功能来降低流量;实现物理地址(网络访问层使用的...

2019-06-01 18:57:16 140

原创 springboot 中基于注解开启mybatis二级缓存

只需要加入注解@CacheNamespace即可@Mapper@Repository@CacheNamespacepublic interface UserMapper { @Select("SELECT ID,NAME,AGE,PASSWORD FROM USER WHERE ID = #{id}") User selectById(String id);}...

2019-05-10 10:34:45 2925 1

原创 在SpringBoot中使用MongoDB

application.yml配置文件:spring: datasource: name: springboot url: jdbc:mysql://127.0.0.1:3306/springboot?serverTimezone=UTC&characterEncoding=utf-8 username: root password: root ...

2019-05-05 15:56:06 219

原创 Java 反射用法总结

什么是反射简单的来说,就是在程序运行时,获取类所有属性和方法信息成员变量的名称是什么,修饰符是什么,类型是什么 方法的返回类型是什么,方法名是什么,抛出了哪些异常,修饰它的注解是什么等等还可以动态创建一个对象,并且调用它的任意一个方法、访问和修改任意一个属性,包括private修饰的方法和属性。获得Class对象的三种方法Child child = new Child();...

2019-04-28 11:01:32 124

转载 避免索引失效

内容参考:https://langgufu.iteye.com/blog/2009952 1. 没有 WHERE 子句  2. 使用 IS NULL 和 IS NOT NULL  SELECT ... FROM emp WHERE comm IS NULL; comm 列的索引会失效  3. WHERE 子句中使用函数  如果没有使用基于函数的索引,那么 where...

2019-04-25 16:29:45 125

原创 BlockingQueue 使用

抛出异常 特殊值 阻塞 超时 插入 add(e) offer(e) put(e) offer(e,time,unit) 移除 remove() poll() take() poll(time,unit) 检查 element() peek() 不可用 不可用 ...

2019-04-15 19:12:23 133

转载 Spring 面试题

Spring概述1.什么是spring?Spring是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。2.使用Spring框架的好处是什么?轻量:Spring是轻量的,基本的版本大约2MB。...

2019-04-13 15:03:39 134

转载 Java 基础面试题总结

构造器Constructor是否可被override  在讲继承的时候我们就知道父类的私有属性和构造方法并不能被继承,所以Constructor也就不能被override,但是可以overload,所以你可以看到一个类中有多个构造函数的情况。重载和重写的区别  重载:发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。   ...

2019-04-13 14:56:26 104

原创 Java的8种基本数据类型

public class Test3 { public static void main(String[] args) { System.out.println("byte 最大值:" + Byte.MAX_VALUE + ",2的7次方-1,占用1个字节"); System.out.println("byte 最小值:" + Byte.MIN_VALU...

2019-04-08 14:03:01 244

转载 ThreadPoolExecutor 使用

public class ThreadPoolExecutorTest implements Runnable { @Override public void run() { // TODO Auto-generated method stub System.out.println(Thread.currentThread().getName()...

2019-04-08 09:49:04 986

转载 SQL 优化总结

尽量避免全表扫描,考虑在where及order by 涉及的列上建立索引; 最好不要给数据库留null,尽可能使用not null约束填充数据库,避免在where子句中对字段进行null判断,否则将导致引擎放弃使用索引而进行全表扫描;如: select * from user where name is null; 应该尽量避免在where子句中使用!=或<>操作符,否则将...

2019-04-06 13:29:37 129

转载 SQL JOIN连接

转载自:https://www.w3cschool.cn/sql/2nmo1oyt.html内连接(INNER JOIN):当两个表中都存在匹配时,才返回行。 左连接(LEFT JOIN):返回左表中的所有行,即使右表中没有匹配的行。 右连接(RIGHT JOIN):返回右表中的所有行,即使左表中没有匹配的行。 全连接(FULL JOIN):只要某一个表存在匹配,就返回行。...

2019-04-05 16:12:12 67

原创 常用SQL 学习笔记

-- SELECT --SELECT * FROM user ;SELECT name, age FROM user ;SELECT DISTINCT name FROM user ;SELECT * FROM user WHERE name = 'chisaki' ;SELECT * FROM user WHERE name = 'chisaki' AND age = 24 ...

2019-04-05 15:48:23 97

转载 MongoDB的使用场景

转载自:https://blog.csdn.net/bigtree_3721/article/details/72965458(对方也是转载的)案例1用在应用服务器的日志记录,查找起来比文本灵活,导出也很方便。也是给应用练手,从外围系统开始使用MongoDB。 用在一些第三方信息的获取或者抓取,因为MongoDB的schema-less,所有格式灵活,不用为了各种格式不一样的信息...

2019-03-28 16:27:38 225

原创 深入理解Java虚拟机——虚拟机类加载机制

类加载的时机类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用、卸载 七个阶段。其中验证、准备、解析三个部分统称为连接。加载、验证、准备、初始化、卸载这5个阶段的顺序是确定的,类加载过程必须按照这中顺序开始,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,注意,这里是按部就班地“开始”,并不是“进行”或者“完成”,强调...

2019-03-27 22:47:48 136

原创 Effective Java学习笔记一:创建和销毁对象(二)

第三条:用私有构造器或者枚举类型强化Singleton属性Singleton指仅仅被实例化一次的类,通常被用来代表那些本质上唯一的系统组件public class SingletonTest { public static final SingletonTest INSTANCE = new SingletonTest(); private SingletonTest() {}}...

2019-03-18 15:37:02 113

原创 Effective Java学习笔记一:创建和销毁对象(一)

第一条:考虑用静态工厂方法代替构造器静态工厂方法的优点:1.它们有名称2.不必在每次调用它们的时候都创建一个新对象(比如单例模式)3.它们可以返回原返回类型的任何子类型的对象4.在创建参数化类型实例的时候,它们使代码变得更加简洁静态工厂方法的缺点:1.类如果不含公有的或者受保护的构造器,就不能被子类化2.它们与其他静态方法实际上没有任何区别静态工厂方法常用...

2019-03-18 15:36:52 169

原创 Java常用设计模式详解及其优缺点

本文将介绍:简单工厂模式、工厂方法模式、抽象工厂模式、静态代理模式、JDK动态代理模式、cglib动态代理模式、策略模式、模板模式、装饰器模式、观察者模式简单工厂模式简单工厂模式又称为静态工厂方法模式,涉及到三个角色: 1.工厂类角色:工厂方法模式的核心,工厂类在客户端的直接调用下创建产品对象; 2.抽象产品角色:由工厂方法模式所创建的对象的父类,或者它们共有的接...

2019-03-18 10:17:57 9423

原创 深入理解Java虚拟机——垃圾收集器与内存分配策略

在Java堆里面存放着几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”着,哪些已经“死去”。下面3点参考:https://www.cnblogs.com/parryyang/p/5748711.html整个JVM内存总共划分为三代:新生代(Young Generation)、老年代(Old Generation)、持久代(Permanent Ge...

2019-03-11 21:16:07 670

原创 了解Java 哈希码(HashCode),理解 == 和 equals(),String创建在内存中的分配

/** * 哈希码是可以根据的自己的需求,采用不同的算法产生的一个Int型数字。 * Object的hashCode()方法返回的哈希码是根据对象的内存地址来生成的, * 所以每个对象的哈希码是不相同的 * */public class Test1 { public static void main(String[] args) { /** ...

2019-03-06 21:21:50 550 1

原创 深入理解Java虚拟机——Java内存区域与内存溢出异常

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域:方法区、堆、虚拟机栈、本地方法栈、程序计数器,其中方法区和堆是所有线程共享的数据区,虚拟机栈、本地方法栈和程序计数器是线程私有的内存区域。程序计数器:是一块较小的内存空间,他可以看作是当前线程所执行的字节码的行号指示器,Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,为了线程切换后能恢...

2019-03-06 21:08:47 1062

原创 Freemarker中遍历List,Map,以及显示时间的问题

返回:List<Article>正确写法:<#list list as article><tr> <td>${article.id}</td> <td>${article.name}</td> <td>${article.createTime?string('yyyy-...

2019-03-04 10:49:08 803

原创 使用IDEA搭建SpringBoot项目整合Mybatis踩的坑。。。。

1.application.yml忘记配置mybatis,或者mybatis配置错误,启动不会报错,运行报错:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.ap...

2019-03-01 14:59:33 720

原创 Spring 注解的理解

@Autowired:自动注入,从Spring上下文找到合适的bean来注入,默认按照类型来装配bean,bean必须存在,如果为null,使用required属性为false,@Autowired(required=false),如果想按照名字来装配,使用:@Autowired @Qualifier("beanName");特殊使用:当@Autowired注解用来注入map或者list的时候:...

2019-02-28 11:11:12 638

原创 Spring Boot 整合Freemarker

pom.xml中添加依赖:&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-freemarker&lt;/artifactId&gt;&lt;/dependency&g...

2019-02-27 16:38:47 254

原创 Windows下启动redis服务

Redis官网:https://github.com/MSOpenTech/redis下载解压后进入Redis根目录的cmd,执行命令redis-server.exe redis.windows.conf服务启动成功,默认没有密码(可在redis.windows.conf中配置修改)...

2019-02-27 09:26:49 2288

原创 Java 锁

公平锁/非公平锁:公平锁是指多个线程按照申请锁的顺序来获取锁,非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程优先获取锁。非公平锁的优点:在于可以减少唤起线程的开销,吞吐量比公平锁大,因为线程有几率不阻塞直接获得锁,CPU不必唤醒所有线程;公平锁的优点是等待锁非公平锁的缺点:可能会造成优先级反转或者饥饿现象,或者等很久才会获得锁ReentrantLock通过构造函数...

2019-02-14 21:35:34 101

原创 Java关键字解析(一):static final

参考资料:http://www.cnblogs.com/dolphin0520/p/3799052.htmlhttps://www.cnblogs.com/chihirotan/p/6044056.htmlstatic:“static方法就是没有this的方法。在static方法内部不用调用非静态方法,反过来是可以的,而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static...

2019-02-13 22:46:28 164

原创 单例模式

1.饿汉式(静态常量)【可用】public class Singleton1 { private final static Singleton1 INSTANCE = new Singleton1(); private Singleton1() {} public static Singleton1 getInstance() { return INSTANCE; }...

2019-02-12 23:08:04 141

原创 Java多线程-synchronized使用

首先来看典型的多窗口售票的例子:package com.thread.syn;import java.util.concurrent.TimeUnit;public class RunnableImpl implements Runnable{ private int tickets = 100; @Override public void run() { // TODO ...

2019-02-02 15:10:54 255

原创 线程基础

 线程是程序执行的一个路径,每一个线程都有自己的局部变量表、程序计数器(指向正在执行的指令指针)以及各自的生命周期,当启动一个Java虚拟机(JVM)时,从操作系统开始就会创建一个新的进程(JVM)进程,JVM进程中将会派生或者创建很多线程。       启动新的线程,只有调用了Thread的start方法,才派生了一个新的线程。       线程的生命周期:NEW、RUNNABLE、RU...

2019-02-01 13:15:23 141

原创 Java内存模型

JVM内存模型在Java中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。线程之间通过共享程序公共的状态,通过读-写内存中公共状态的方式来进行隐式的通信,同步指的是程序在控制多个线程之间执行程序的相对顺序的机制,在共享内存模型中,同步是显式的,程序员必须显式指定某个方法/代码块需要在多线程之间互斥执行。Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干...

2019-01-31 20:54:35 140

空空如也

空空如也

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

TA关注的人

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