自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 总有一个适合您的Chrome小技巧

前言谷歌的Chrome浏览器功能尤其强大:它隐藏了不少快捷方式、扩展功能和可能性。让我们花点时间学习这些技巧,看看自己的工作效率会如何提高高效查找收藏夹如果你收藏了很多网页,找到想要的标签页,你首先得打开浏览器的书签管理,再搜索想要的内容。屏幕前的你是否想过,如何能在不查看收藏夹的内容前提下精确快速的搜索到想要的标签页。首先准备想要添加的网页领域驱动设计在互联网业务开发中的实践添加网页值书签添加时切记自定义标签名称(自定义的标签更易被查找;例如:领域驱动设计 开发实践 | DD

2021-07-17 21:06:48 463

原创 TDD实践-购物车

TDD实践-购物车最近几年“TDD已死”的声音不断出现,特别是David Heinemeier Hansson那篇文章——《TDD is dead. Long live testing. (DHH)》引发了大量的讨论。其中最引人注目的是Kent Beck、Martin Fowler、David三人就这个举行的系列对话(辩论)——Is TDD Dead?前言当前国内对TDD的理解十分模糊,大部分人也没有明确和有意识的去实施TDD,因此许多人对此都有着不同的理解。其中最经典的理解就是基于代码的某个单元,

2021-02-08 11:20:07 1811 1

原创 详解Java8新特性

Java8特性文章目录Java8特性1. Lambda 表达式与传统匿名内部类写法的对比lambda表达式的使用方式2. 函数式接口(Functional Interface)Java内置的函数式接口1. FunctionFunction的组合2. ConsumerConsumer的组合3. Predicate4. Supplier5. 其他基于上述4中基本函数式接口的扩展接口3. Stream API3.1 Stream的创建方式3.2 Stream的处理APIStream.map() 转换Stream

2020-06-01 11:05:28 865

原创 IDEA-DeBug

01_Debug简介和意义什么是程序DeBug?Debug,是程序开发人员必会的一项调试程序的技能。企业中程序开发和程序调试的比例为1:1.5,可以说如果你不会调试程序,你就没有办法从事编程工作。Debug能帮助我们做什么?追踪代码的运行流程。程序运行异常定位。线上问题追踪。Debug对于程序学习者的意义通过调试能够更好的查看程序的执行流程。复杂的...

2020-02-21 14:32:51 159

原创 超全面的MySQL优化解析

本文概要概述为什么要优化系统的吞吐量瓶颈往往出现在数据库的访问速度上随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢数据是存放在磁盘上的,读写速度无法和内存相比如何优化设计数据库时:数据库表、字段的设计,存储引擎利用好MySQL自身提供的功能,如索引等横向扩展:MySQL集群、负载均衡、读写分离SQL语句的优化(收效甚微)字段设计字段类型的选择...

2020-02-04 09:37:22 232

原创 Git使用总结

一、基础命令① 初始化Git仓库,使用git init命令② 添加文件到Git仓库,分为两步:使用命令git add,注意,可反复多次使用,添加多个 文件;使用命令git commit -m,完成。使用命令 git status,查看结果使用命令git clone addr,从远程克隆项目(addr指远程仓库项目地址)使用命令 git diff,查看具体修改内容...

2020-01-20 11:56:41 117

原创 浅析Shiro安全框架

浅析Shiro安全框架Shiro功能介绍下面介绍一下各功能点的意思:**Authentication:**身份认证/登录,验证用户是不是拥有相应的身份;**Authorization:**授权,即权限验证,验证某个已认证的用户是否拥有某个权限;就是说判断这个用户是否能做事情,例如:细粒度的验证某个用户对某个资源是否具有某个权限。**Session Management:**回话管理,即...

2020-01-15 13:31:23 332

原创 Java核心 —— 浅析接口&抽象类

一、抽象类在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的。如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类。比如new Animal(),我们都知道这个是产生一个动物Animal对象,但是这个Animal具体长成什么样子我们并不知道,它没有一个具体动物的概念,所以他就是一个抽象类,需要一个具...

2019-11-06 10:05:29 109

原创 Java核心 —— 浅析浅拷贝&深拷贝

一、什么是拷贝在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是在内存中进行,在性能方面比我们直接通过new生成对象来的快,特别是在大对象的生成上,使得性能的提升非常明显。然而我们知道拷贝分为深拷贝和浅拷贝之分,但是浅拷贝存在对象属性拷贝不彻底问题。浅拷贝深拷贝使用一个已知实例对新创建实例的成员变量逐个赋值,这个方式被称为浅拷贝当一...

2019-11-04 09:54:20 182

原创 深入理解Java集合之ConcurrentHashMap

一、出现背景1、线程不安全的HashMap因为多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。...

2019-09-29 16:53:44 151

原创 深入理解Java集合之HashMap死循环

一、问题由于HashMap并非是线程安全的,所以在高并发的情况下必然会出现问题,如果是在单线程下使用HashMap,自然是没有问题的,如果后期由于代码优化,这段逻辑引入了多线程并发执行,在一个未知的时间点,会发现CPU占用100%,居高不下,通过查看堆栈,你会惊讶的发现,线程都Hang在hashMap的get()方法上,服务重启之后,问题消失,过段时间可能又复现了。二、原因分析HashMa...

2019-09-29 11:46:35 640

原创 树的基本概念以及java实现二叉树

一、树eg:二叉树实现代码在文末什么是树树是具有n个结点的有限集合当n=0时,有且仅存在一个结点,该结点称为根结点当n>0时,其余结点分为m个互斥的有限集合T1,T2,T3,每个集合分别称为子树由此可知,树的定义是一个递归的定义,即树的定义中又用到了树的概念。树的结构/** * 构造函数 * * @param <T> */...

2019-09-27 13:41:11 416

原创 Java多线程 —— 线程等待与唤醒

一、wait()、notify()、notifyAll()等方法介绍在Object.java中,定义了wait(), notify()和notifyAll()等接口。wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。而notify()和notifyAll()的作用,则是唤醒当前对象上的等待线程;notify()是唤醒单个线程,而notifyAll()是...

2019-09-25 11:01:28 249

原创 Java多线程 —— synchronized关键字详解

一、多线程的同步1、为什么要引入同步机制在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个有限的资源。必须对这种潜在资源冲突进行预防。解决方法:在线程使用一个资源时为其加锁即可。访问资源的第一个线程为其加上锁以后,其他线程便不能再使用那个资源,除非被解锁。2、实例用一个取钱的程序例子,来说明为什么需要引入同步。在使用同步机制前,整体程序如下:package com.demo;...

2019-09-24 17:19:08 272

原创 Java多线程 —— 常用的实现多线程的四种方式

一、继承Thread类创建线程类Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码。Java使用线程执行体来代表这段程序流。Thread类的声明如下:public class Thread implements Runnable {}可以看到,Thread本身就实现了Runn...

2019-09-24 16:46:15 166

原创 Java多线程 —— 多线程基础

一、进程进程是操作系统结构的基础;是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动。操作系统中,几乎所有运行中的任务对应一条进程(Process)。一个程序进入内存运行,即变成一个进程。进程是处于运行过程中的程序,并且具有一定独立功能。描述进程的有一句话非常经典——进程是系统进行资源分配和调度的一个独立单位。进程是系统中独立存在的实体,拥有自己独立的资源,拥有自己私有的地址...

2019-09-24 16:18:31 105

原创 深入理解Java集合之LinkedHashMap

一、初识LinkedHashMapHashMap是一种非常常见、非常有用的集合,但在多线程情况下使用不当会有线程安全问题。大多数情况下,只要不涉及线程安全问题,Map基本都可以使用HashMap,不过HashMap有一个问题,就是迭代HashMap的顺序并不是HashMap放置的顺序,也就是无序。HashMap的这一缺点往往会带来困扰,因为有些场景,我们期待一个有序的Map。这个时候,Lin...

2019-09-23 11:20:54 293

原创 深入理解Java集合之HashMap

1. HashMap概述:HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的方法是线程安全的,也就是同步的)。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。...

2019-09-22 19:54:02 336

原创 深入理解Java集合之LinkedList

一、LinkedList概述1.初识LinkedListLinkedList是基于链表实现的(双向链表)什么是链表?链表原先是C/C++的概念,是一种线性的存储结构,意思是将要存储的数据存在一个存储单元里面,这个存储单元里面除了存放有待存储的数据以外,还存储有其下一个存储单元的地址(下一个存储单元的地址是必要的,有些存储结构还存放有其前一个存储单元的地址),每次查找数据的时候,通过某个存储...

2019-09-22 16:59:27 316

原创 深入理解Java集合之ArrayList

ArrayListArrayList是最常见以及每个Java开发者最熟悉的集合类了,顾名思义,ArrayList就是一个以数组形式实现的集合,以一张表格来看一下ArrayList里面有哪些基本的元素:元素作用private transient Object[] elementData;ArrayList是基于数组的一个实现,elementData就是底层的数组。pr...

2019-09-22 15:13:08 177

空空如也

空空如也

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

TA关注的人

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