随笔分类 - java
摘要:单例模式概念 1.什么是单例模式? 保证整个系统中一个类只有一个对象的实例,实现这种功能的方式就叫单例模式。 2.实现单例模式的思路 1. 构造私有: 如果要保证一个类不能多次被实例化,那么我肯定要阻止对象被new 出来,所以需要把类的所有构造方法私有化。 2.以静态方法返回实例: 因为外界就不能通
阅读全文
摘要:1.基本数据结构 1. JDK1.7 数组 + 链表 2. JDK1.8 数组 + (链表 | 红黑树) 2.树化与退化 1.树化意义 1.红黑树用来避免Dos攻击,防止链表过长时性能下降,树化应该是偶然情况,是保底策略. 2.hash 表的查找,更新的时间复杂度是 O(1),而红黑树的查找,更新的
阅读全文
摘要:1.扩容机制 1.扩容是懒惰式的,即没有添加元素前,即时指定了容量,也不会真正的创建数组 2. add(Object o) 方法首次扩容为10,再次扩容为上次的1.5倍 3. addAll(Collection c) 方法首次扩容(没有元素)为10,或者添加的元素实际个数,取两者间的最大值 4. a
阅读全文
摘要:1.快速排序描述 1.每一轮排序选择一个基准点(pivot)进行分区 1.让小于基准点的元素进入一个分区,大于基准点的元素进入另一个分区 2.当分区完成时,基准点元素的位置就是其最终位置 2.在子分区重复以上过程,直至子分区元素个数少于等于1,这体现的是分而治之的思想(divide-and-conq
阅读全文
摘要:1.选择排序 1.何为选择排序: 以升序为例: 1.将数组分为两个子集,排序的和未排序的,每一轮从未排序的子集中选出最小的元素,放入排序子集. 2.重复上述步骤,知道数组有序 2.优化方式 1.为减少交换次数,每一轮可以先找到最小的索引,再每轮最后交换元素的位置 3.与冒泡排序比较 1.两者的时间复
阅读全文
摘要:二分查找 何为二分查找 1,前提:有已排序数组 A (假设已经做好) 2.定义左边界 L 、右边界 R ,确定搜索范围,循环执行二分查找(3、4两步) 3.获取中间索引 M = Floor (( L + R )/2) 4.中间索引的值 A [ M ] 与待搜索的值 T 进行比较 ① A [ M ]=
阅读全文
摘要:1、RabbitMQ RabbitMQ各组件的功能 Broker: 一个RabbitMQ实例就是一个Broker Virtual Host: 虚拟主机。相当于Mysql的DataBase, 一个Broker上可以存在多个vhost,vhost之间相互隔离。每个vhost都拥有自己的队列、交换机、绑定
阅读全文
摘要:目录 安装erlang 安装RabbitMQ 启动命令 WEB管理 用户管理 登陆 回到顶部 安装erlang 由于rabbitmq是基于erlang语言开发的,所以必须先安装erlang。 安装依赖 yum -y install gcc glibc-devel make ncurses-devel
阅读全文
摘要:简介: DelayQueue是BlockingQueue的一种,所以它是线程安全的,DelayQueue的特点就是插入Queue中的数据可以按照自定义的delay时间进行排序。只有delay时间小于0的元素才能够被取出。 先看一下DelayQueue的定义: public class DelayQu
阅读全文
摘要:一、事务 事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种。 编程式事务:是指在代码中手动的管理事务的提交、回滚等操作,代码侵入性比较强,如下示例: try { //TODO something transactionManager.co
阅读全文
摘要:一、现状描述 目前java 持久层ORM框架应用最广泛的就是JPA和Mybatis。JPA只是一个ORM框架的规范, 对该规范的实现比较完整就是Spring Data JPA(底层基于Hibernate实现),是基于Spring的数据持久层框架,也就是说它只能用在Spring环境内。Mybatis也
阅读全文
摘要:目录 1. 引言 2. 动态数据源流程说明 3. 实现动态数据源 3.1 说明及数据源配置 3.1.1 包结构说明 3.1.2 数据库连接信息配置 3.1.3 数据源配置 3.2 动态数据源设置 3.2.1 动态数据源配置 3.2.2 动态选择数据源 3.2.3 动态数据源使用 3.3 使用 AOP
阅读全文
摘要:cron表达式用于配置cronTrigger的实例。cron表达式实际上是由七个子表达式组成。这些表达式之间用空格分隔。 1.Seconds (秒)2.Minutes(分)3.Hours(小时)4.Day-of-Month (天)5.Month(月)6.Day-of-Week (周)7.Year(年
阅读全文
摘要:/** * 自定制异常类 * * @author MoCha * @date 2019/5/25 */@Getterpublic class CustomException extends RuntimeException { private int code; private String mes
阅读全文
摘要:说到Git,作为程序员的你,在项目开发中一定会使用到或将来也一定会使用到的,但是我相信,很多在使用Git的人,都只是停留一些简单的操作上,比如提交(commit)、拉取(pull)、推送(push)。 而对于Git的工作原理,如何解决Git的版本冲突以及如何使用Git进行源码管理等问题可能并没有太深
阅读全文
摘要:在过往的Java项目中,充斥着太多不友好的代码:POJO的getter/setter/toString;异常处理;I/O流的关闭操作等等,这些样板代码既没有技术含量,又影响着代码的美观,Lombok应运而生。 首先说明一下:任何技术的出现都是为了解决某一类问题的,如果在此基础上再建立奇技淫巧,不如回
阅读全文
摘要:Apache Commons Apache Commons有很多子项目,常用的项目如下 BeanUtils 提供了一系列对java bean的操作,读取和设置属性值等 map和bean的互相转换 我们将对象放在缓存中通常用redis中的hash,如下 这种场景下map和bean的互相转换的工具类就特
阅读全文
摘要:一、什么是跨域访问 说到跨域访问,必须先解释一个名词:同源策略。所谓同源策略就是在浏览器端出于安全考量,向服务端发起请求必须满足:协议相同、Host(ip)相同、端口相同的条件,否则访问将被禁止,该访问也就被称为跨域访问。虽然跨域访问被禁止之后,可以在一定程度上提高了应用的安全性,但也为开发带来了一
阅读全文
摘要:安装 说到mqtt,首先肯定要安装了,安装什么的地址:http://activemq.apache.org/ap...我本地是Windows的环境,所以装的是Windows版本,这里是第一个注意的地方,因为后面使用的时候windows和linux的有一些不同 下载完成之后就是解压安装了,这里解压完成
阅读全文
摘要:1.基本概念 IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。 2.IO流的分类 图示:(主要IO流) 3.字节流 (1).字节流基类 1).InputStream InputStream:字节输入流基类,抽象类是
阅读全文