- 博客(92)
- 资源 (9)
- 收藏
- 关注
原创 索引的底层实现及应用和失效场景
MySQL 优化器的不同选择可能导致不同的结果,同一条语句,数据量不同、筛选率不同等等原因都可能导致失效。所有简单查询,只要 where 条件列中包含了索引列,且返回值中包含了该索引列,都会用到索引。
2022-12-21 19:44:17 649
原创 位运算与移位运算
位运算按位“与” & 规则: 如果两个相应的二进制形式的对应的位数都为 1,则结果为 1;否则为 0; 4 & 5 4 0000 0100 5 0000 0101 按位与运算 & 4 & 5 = 4 0000 0100 1 * 2^2 = 4
2021-12-22 23:57:10 167
原创 延迟初始化创建对象-基于类初始化的解决方案
在 Java 程序中,有时候需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象的时候才进行初始化。如何采用线程安全的操作来设计这个初始化呢? 答案是基于类初始化来解决,JVM 在类的初始化阶段(即在 class 被加载后,且被线程使用之前),会执行类的初始化,在执行类的初始化期间,JVM 会去获取一个锁。这个锁可以同步多个线程对同一个类的初始化。 实现如下:...
2021-08-29 23:21:58 193
原创 检查链表是否成环之快慢指针
/** * Created by etfox on 2021/03/24 14:43 **/public class Test { public static void main(String[] args) { ListNode listNode = new ListNode(3); ListNode listNode1 = new ListNode(2); listNode.next = listNode1; List.
2021-06-16 15:49:23 78
原创 Java 中 4 种引用的详述
java 中的 4 种引用方式,适用于不同的场景,重点需要理解虚引用,结合文字和代码强引用被强引用的对象,不会被垃圾回收器回收,JVM 宁愿抛出 OOM 也不会去回收被强引用的对象;M m = new M();软引用当堆空间够用时,GC 不会对软引用的对象进行回收,当堆空间不足以分配新的空间时,触发 GC 就会对这部分对象进行回收,通常用在缓存等领域。将缓存对象使用软引用,空间不足的时候释放这部分空间,需要再次使用的时候,重新从 DB 中加载即可。另外软引用可以配合队列(Refer
2021-03-03 14:22:40 84
原创 MySQL 获取 json 字段中指定的值 ( MySQL 5.7 上下两种方式 )
JSON:{ "success": true, "code": 0, "msg": "操作成功", "data": { "access_token": "333d8c09-e522-4585-8cca-1d9c66e5cece", "token_type": "bearer", "refresh_token": "48a3e598-0e3e-4739-9e57-b301c1e3529d", "expire.
2020-08-10 20:06:33 4469
原创 单列设计模式的实现
一、设计模式 ( Design Patterns ) 就是可以解决某一类问题的有效方法是代码设计经验的总结。Java 中共有 23 种设计模式,总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共...
2019-10-31 10:00:04 644
原创 MySQL 导出 Excel 表结构
PG-Export 码云地址介绍MySQL 导出表结构, 通过查询 MySQL 数据库 information_schema, 获取指定 schema 下的表和视图的数据结构, 根据模板, 导出对应 UI 的 Excel 表格, 方便整理出数据库表结构, 节省人力, 简化操作.软件架构基于 SpringBoot + POI安装教程配置 application.x...
2019-10-29 18:46:08 371
原创 git 教程
部分素材来源网络1、软件版本的起点:A 需求总是在不断更新的。 上一次产品经理需求0.1的软件版本刚刚完成后,这不又来了新的版本需求0.2,这次一共两个功能点。幸好我们有Git,让并行开发成为可能。拉取Develop分支准备开干!2、开发的起点:B 两名工程师,两个不同的需求,大师甲和大师乙各自领取一个功能点开干;从Develop拉取属于自己的分支,有单独的分支就不会...
2019-08-13 11:04:48 157
原创 SpringCloud核心原理
什么是微服务?微服务和传统项目的区别? 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务。在所有情况下,每个任务代表着一个小的业务能力。微服务: --优点 单一职责,每个服务只针对一个业务功能 微服务是松耦合的,每个服务都独立开发部署 ...
2019-05-24 13:19:36 969
原创 搭建第一个eureka服务注册中心
Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里。服务注册:在服务治理框架中,通常会有一个注册中心,每个服务单元向注册中心注册登记自己提供的服务,将主机、端口版本号、通信协议等告知服务注册中心,注册中心按服务名分类阻止服务清单。当这些服务提...
2019-02-19 15:21:18 229
原创 SpringCloud 概述
SpringCloud 是一个基于 SpringBoot 实现微服务架构的开发工具。它为微服务中涉及到的配置管理、服务治理、熔断、路由、微代理、消息总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一个简单的开发方式。SpringCloud 包含多个开发的子项目:SpringCloud Config:配置管理工具,支持使用git存储配置内容,可以使用它实现应用配置的外部化存储,并...
2019-02-13 15:09:09 191
原创 什么是微服务?
1.什么是微服务?简单的说微服务是一种架构上的设计风格,它的主旨是将原本独立的系统拆分为一个一个小型服务,这些小型服务在独立的进程中运作,服务之间通过 HTTP 的 RESTful API 进行通信协作。被拆分的小型服务围绕着系统中某一个或者某一耦合度较高的业务功能进行构建,并且每个服务独立维护自己的数据存储、业务开发、自动化测试以及独立部署机制。由于有了轻量级的通信协作,所以这些微服务可以通...
2019-02-13 10:23:00 407
原创 IDEA 之 maven 配置
首选项: Bulid、Execution...OK. 即可, 另外 maven 的安装配置以及阿里云镜像修改,详见 https://blog.csdn.net/qq_29689487/article/details/79780450
2018-11-13 10:49:43 132
原创 Spring Boot 2.0 之 Hello World
Spring Boot 简化了 Spring 的操作, 不需要配置就能运行 Spring 应用. Spring Boot 管理 spring 容器、第三方插件, 并提供很多默认系统级的服务. Spring Boot 通过 Starter 来提供系统级服务. 相比于 Spring, Spring Boot 具有以下的特点: ①: 实现约定大于配置,是一个低配置的应用级框...
2018-10-05 21:04:31 179 2
原创 Spring 4.x 之 Test
测试是开发工作中不可缺少的部分, 单元测试只针对当前开发的类和方法进行测试,可以简单的模拟依赖来实现,对环境没有依赖.但仅仅进行单元测试是不够的,他只能验证当前类或方法是否正常工作,而我们想知道系统的各部分组合在一起是否能正常工作,这就是集成测试存在的意义. Spring 通过 Spring TestContext Framework 对集成测试提供了顶级支持.它不依赖于特定的测试框架,...
2018-09-29 16:34:44 393
原创 Spring 之 Enable* 注解的工作原理
通过简单的@Enable* 来开启一项功能的支持,从而避免自己配置大量的代码降低使用的难度. 通过观察@Enable*注解的源码,发现所有的注解都有一个@Import注解,它是用来导入配置类的,这也就意味着这些自动开启的实现其实是导入了一些自动配置的 bean, 这些导入的配置方式主要分为以下三种类型.第一类:直接导入配置类@Target(ElementType.TYPE)@R...
2018-09-29 14:21:44 1359
原创 组合注解和元注解
从 spring 2.0 开始为了响应 jdk1.5推出的注解功能, spring 开始大量加入注解来替代xml 配置.元注解:即可注解到其他注解的注解.组合注解:即被注解的注解.示例:组合注解:package com.pangu.annotation;import java.lang.annotation.Documented;import java.lang.ann...
2018-09-28 23:53:21 1527
原创 Spring 之条件注解
根据条件注解 @Conditional 在不同条件下创建不同的 bean.判断条件定义:package com.pangu.conditional;import org.springframework.context.annotation.Condition;import org.springframework.context.annotation.Conditio...
2018-09-28 22:43:41 1167
原创 Spring 之多线程
Spring 通过任务执行器 TaskExecutor 来实现多线程和并发编程, 使用 ThreaPoolTaskExector 可实现一个基于线程池的 TaskExecutor. 而实际开发任务一般非阻碍的,即异步.所以我们要在配置类中通过 @EnableAsync 开启对异步任务的支持.并通过在实际执行的 bean 的方法中使用 @Async 注解来声明是一个异步任务.配置类:...
2018-09-11 23:13:53 1065
原创 Oracle 切割字符串
定义类型:create or replace TYPE "SPLIT_TYPE" IS TABLE OF VARCHAR2 (4000)定义分割函数:function func_split(p_str varchar2, p_delimiter varchar2) return split_type ...
2018-09-06 11:19:13 1372
原创 Oracle 之 常用函数
substr: 格式1: substr(string string, int a, int b); 格式2:substr(string string, int a) ;解释: 格式1: 1、string 需要截取的字符串 2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取) 3、b 要截取的字符串的长度...
2018-09-04 13:33:30 108
转载 Java之线程安全问题
什么是进程? 电脑中每个程序有一个独立的进程,而进程之间是相互独立存在的。什么是线程? 进程想要执行任务就需要依赖线程。进程中的最小执行单位就是线程,并且一个进程中至少有一个线程。 那什么是多线程? 提到多线程这里要说两个概念,就是串行和并行,搞清楚这个,我们才能更好地理解多线程。所谓串行,其实是相对于单条线程来执行多个任务来说的,我们...
2018-09-04 13:14:16 260
转载 Oracle 之 创建函数
--创建函数语法create [or replace] function [schema.]function_name(函数参数列表) --参数有IN、OUT、IN OUT三种类型;IN代表需要输入的参数,OUT代表要返回的参数,IN OUT代表即是输入参数也是返回参数。return datetype--返回类型[is | as ]---任选一个,后面跟pLSQL代码块[declare...
2018-09-03 16:56:18 5735 3
原创 Spring 目录帖
Spring 概述 Spring 之 Java 配置 Spring AOP 注解式和方法规则拦截 Spring 之 Bean 的 Scope Spring 之 el 表达式和资源调用 Spring 之 Bean 的初始化和销毁 Spring 之 Profile Spring 之 Event Spring 之 Spring Aware Spring 之多线程 Spring 之条件...
2018-08-23 10:37:21 1813 1
原创 Spring 之 Bean 的 Scope
Bean 的 ScopeScope 描述的是 Spring 容器如何新建 Bean 的实例的. Spring 的 Scope 有以下几种,通过 @Scope 注解来实现.Singleton: 一个 Spring 容器中只有一个 Bena 的实例,此为 Spring 的默认配置,全容器共享一个实例. Prototype: 每次使用新建一个 Bean 的实例. Request: Web...
2018-08-23 10:34:02 346
原创 Spring 概述
Spring 概述Spring 简史:第一阶段: xml 配置第二阶段: 注解配置 //:注解本身是没有功能的,就和 xml 一样.注解和 xml 都是一种元数据,元数据即解释数据的数据,这就是所谓的配置. 注解的功能来自用这个注解的地方.第三阶段: Java 配置从 spring 3.x 到现在, spring 提供了 Java 配置能力,使用 Java 配置可以...
2018-08-23 09:27:03 784 3
原创 Spring 之 Spring Aware
Spring AwareSpring 的依赖注入的最大亮点就是你所有的 Bean 对 Spring 容器的存在都是无意识的.即你可以将你的容器替换成别的容器.但是在实际的项目中,你不可避免要用到 Spring 容器本身的功能资源,这是你的 Bean 必需要意识到 Spring 容器的存在,才能调用 Spring 所提供的资源,这就是所谓的 Spring Aware.其实 Spring ...
2018-08-23 09:24:10 187
原创 Spring 之 Event
Event Spring 事件为 Bean 与 Bean 之间的消息通信提供了支持.当一个 Bean 处理完一个任务之后,希望另外一个 Bean 知道并能做相应的处理,这时我们就需要让另外一个 Bean 监听当前 Bean 所发送的事件. Spring 的事件需要遵循如下流程:自定义事件,继承 ApplicationEvent. 定义事件监听器,实现 Applica...
2018-08-23 09:21:07 184
原创 Spring 之 Profile
Profile为在不同环境下使用不同的配置提供了支持(如开发环境和生产环境下的数据库配置不同). 通过设定 Environment 的 ActiveProfiles 来设定当前 context 需要使用的配置环境.在开发中使用 @Profile 注解类或者方法,达到不同环境下选择实例化不同的 Bean. 通过设定 jvm 的 spring.profiles.active 参数来设...
2018-08-23 09:15:21 196
原创 Spring 之 Bean 的初始化和销毁
在实际开发中经常遇到需要在 Bean 的使用之前或者之后做一些必要的操作,Spring 对 Bean 的生命周期的操作提供了支持.在使用 Java 配置和注解配置下提供如下两种方式:Java 配置:使用 @Bean 的 initMethod 和 destroyMethod (相当于 xml 的配置的 init-method 和 destroy-method) 注解方式: 利用 JSR-250...
2018-08-23 09:11:50 334
原创 Spring 之 el 表达式和资源调用
Spring EL-Spring 表达式语言,支持 xml 和注解中使用表达式,类似于 JSP 和 EL 表达式语言.Spring 开发中,常涉及到各种资源调用的情况,包含普通文件、网址、配置文件、系统环境等,我们可以使用 Spring 的表达式语言实现资源的注入.注入字符 注入系统环境 注入文本( 需配置 PropertySourcesPlaceholderConfigurer B...
2018-08-23 09:07:38 463
原创 Spring AOP 注解式和方法规则拦截
AOP面向切面编程,Spring AOP 的存在是为了解耦, AOP 可以让一组类共享相同的行为.在 OOP 只能通过继承类和实现接口,来使代码的耦合度增加,且类集成只能为单继承,阻碍更多行为添加到同一类上, AOP 弥补了 OOP 的不足.Spring 支持 AspectJ 的注解式切面编程.使用 @AspectJ 声明一个切面 使用 @After 、@Before、@Arou...
2018-08-19 22:05:54 6685 1
原创 Spring 之 Java 配置
Java 配置是通过 @Configuration 和 @Bean 来实现的@Configuration 声明当前类是一个配置类,相当于一个 Spring 配置的 xml 文件. @Bean 注解在方法上,声明当前方法的返回值为一个 Bean.示例:public class FunctionService { public String say(String word)...
2018-08-19 18:18:11 479
原创 冒泡排序详解及优化
冒泡排序是最基础的一种交换排序法. 所谓冒泡,正如我们平时喝的汽水中的气泡一样,因为 CO2 比水轻,所以会一点一点往上冒.之所以打这个比喻,是因为恰好我们的冒泡排序类似于小气泡一般会根据本身的某种比较方式,一点一点的往数轴的右侧移动.如图:依次从 0 开始往右侧比较.详见代码及执行结果:public static void main(String[] args) { ...
2018-08-16 22:42:50 1023 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人