自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wzn博客

java知识整理建立系统体系

  • 博客(28)
  • 资源 (2)
  • 收藏
  • 关注

原创 postMan 使用小技巧

1.导入swagger数据选择导入文件地址2.我们使用postman 会遇到本地环境,测试环境,生产环境来回切换所以我们需要指出多环境切换点击齿轮点击添加定义环境变量和环境地址在地址上使用{{}} 来表示环境变量切换接口分类 发送即可这里可以有2套方案1 在切换分类的地方定义3套分类环境变量 参数名称一样 这样切换不用环境分类即可2 就是定义在一个分类中 3套环境不同变量 使用是指定变量名称​​​​​​​...

2021-01-14 18:01:45 200

原创 [疫情期间复习] mybatis源码分析系列(三) SqlSessionFactory之sql执行流程

上节分析我们已经拿到了sqlsessionFactory工厂具体怎么执行sql呢 开始分析通过测试案例 我们看到了 sqlsessionFactory.openSession()private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean...

2020-05-06 14:47:49 363

原创 [疫情期间复习] mybatis源码分析系列(二) SqlSessionFactory创建过程

强调一些分析的mybatis3第一个问题 mybatis是如何加载配置文件的 如果数据源 别名等信息从测试用例我们能看到这一段代码 @BeforeAll static void setUp() throws Exception { // 读取配置文件数据流 try (Reader reader = Resources.getResourceAsReader("org/ap...

2020-04-28 19:15:02 214

原创 [疫情期间复习] mybatis源码分析系列(一) 准备工作

新冠时期互联网公司倒闭,降薪,无薪休假等信息铺天盖地。只会crud的日子让人烦躁与不安疫,随时都将面临失业。大环境再次变好时 注定是大航海时代(海贼王看多了)。如何才能在众多人中脱颖而出?读过源码是我们傲娇的资本。为大航海时代准备着,加油吧少年。看源码之前灵魂的拷问:1.mybatis如何加载配置文件 ?2.mybatis执行sql的工厂如何创建 有几种 ?3.mybatis如何获取ma...

2020-04-28 18:16:20 176

原创 SpringSecurity知识梳理(一)

springsecurity学习1.springsecurity官网介绍Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求...

2020-04-20 23:39:46 223

原创 [每日知识点] Collectors 类API学习

Collectors 类常用API学习averagingDouble/averagingInt/averagingLong 根据不同类型求平均值counting() 统计数量groupingBy()按某个规则分组summarizingDouble/summarizingInt/summarizingLong 返回一个 CollectorsummingLong/summingInt/su...

2019-08-08 18:02:52 334

原创 [每日知识点] lambda表达式map排序

JAVA 8之后添加了lambda表达式一直没有系统学习先记录一下map 利用lambda表达式排序import java.util.Collections;import java.util.HashMap;import java.util.LinkedHashMap;import java.util.Map;import java.util.stream.Collectors;...

2019-08-07 18:05:24 3054

原创 IDEA Command line is too long

修改项目下 .idea\workspace.xml,找到标签<component name="PropertiesComponent"> , 在标签里加一行<property name="dynamic.classpath" value="true" />

2019-07-15 16:30:14 77

原创 springCloud gateway基于apollo配置动态路由

gateway:路由配置我们希望基于配置中心管理路由信息。apollo:配置中心 具体介绍请看apollo官网https://github.com/ctripcorp/apolloapollo动态更新route配置整体思路apollo 相关的业务线我们不需要关系,只需要关心自己的应用接口gateway集成只需加apollo-client的依赖即可<depe...

2019-05-23 10:22:13 6535 5

原创 [每日知识点] Eureka ACP

A 可用性(Availability)C 一致性(Consistency)P 分区容错性(Tolerance of network Partition)zk 保证ap:zk服务宕机会有一段时间选举master 导致整个系统无法使用 所以是apeureka保证 cp:eureka是所有服务平等,只要有一个服务存活存活就能保证 整个网络使用 但不保证是最新的。...

2018-11-14 20:13:35 778 1

原创 SpringCloud之Bibbon源码分析

Ribbon 源码解析Ribbon 运行的时候是创建一个RestTemplate 然后在加一个@LoadBalancer的注解 接口即可完成ribbon的整合那@LoadBalancer 做了那些工作呢 ?看下源码会发现在这个包下有一个LoadBalancerAutoConfiguration的加载类 看下这个类做什么加入loadBalancerClient.class 同...

2018-09-13 16:47:44 242

原创 Ribbon之轮询源码分析

ribbon 负载策略有 今天详细看了下  RoundRobinRule(轮询) 的实现 发现这个理论实现是真的巧妙。核心 是choose() 方法获取 可用servers类别 然后在列表中轮询取出server轮询核心代码是int nextServerIndex = this.incrementAndGetModulo(serverCount);//获取lis...

2018-09-13 11:15:21 1275

原创 SpringCloud【源码分析】之Euraka-Client

​​ SHAPE  \* MERGEFORMAT ​通过流程图我们可以很清晰的看到在服务提供者向Eureka-server是通过注册 续约 下线3部分。下面就针对这3部分看下源码通过根据EnableDiscoveryClient注解 很容易找到DiscoveryClient是我们今天的主要战场。观察下DiscoveryClient.class下的方法其中有几个4个内部类...

2018-09-06 15:58:26 489

原创 RabbitMQ 安装

1. 下载下载地址:http://www.rabbitmq.com/download.html2. windows下安装2.1. 安装Erlang下载:http://www.erlang.org/download/otp_win64_17.3.exe安装:      安装完成。2.2. 安装RabbitMQ    安装完成...

2018-09-06 09:11:25 136

原创 SpringCloud【源码分析】之EurakaServer

 图片来源https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance 从注解开始了解源码继续跟进EurekaServerMarkerConfiguration.class 发现什么都没有做只是执行了一下marker()@EnableEurekaServer 只是做了这点事情,那么猜测一定是在@SpringB...

2018-09-05 16:18:33 310

原创 SpringCloud之Eureka-server原理和搭建

Eureka 主要负责完成服务的治理功能 Eureka 主要流程图1.服务注册服务启动时会把自己注册到Euerka-server,注册信息包括主机,端口号,通讯协议等信息。   为了保证服务正常 作为服务提供者会启动一个定时任务每30秒(默认值可修改)通知server我还活着 同时此请求的超时时间是90  秒(默认值可修改),下线也是同样原来 通知serverserve...

2018-09-04 18:18:20 942 1

原创 springcloud组件简介

Spring Cloud Netflix   是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册(eureka),负载均衡(rabbon)、断路器(Hystrix)、REST客户端、请求路由(zuul)等。 Spring Cloud Config   将配置信息中央化保存, 配置Spring Cloud Bus可以实现动态修改配置文件 Spring ...

2018-09-04 16:22:26 165

原创 Liunx-常用小命令笔记

我们作为开发一定会经常查liunx下的各种日志 由于日志一般的目录结构都比较深,所有我们需要配置别名或是软连接来简化查询日志操作1.配置别名方法vim ~/.bashrc 进入bashrc编写别名aslias log ='cd /data/logs/xxxxx'; 这样我们编写好了一个别名 但是一定要保存source ~/.bashrc 保存我们刚才修改的命令然后就可以使用...

2018-08-28 14:11:54 133

原创 java系统学习之多线程

java 内存模型和线程安全关注点:原子性有序性可见性happen-before线程安全概念原子性:是指操作过程指不可中断有序行:一条指令可以分多个步骤 ...

2018-08-24 14:51:20 108

原创 prometheus之alterManager配置文件详解

global:  smtp_smarthost: 'smtp.qq.com:465'  smtp_from: '[email protected]'  smtp_auth_username: '[email protected]'  smtp_auth_password: 'snfdmoqrshbfbjjj'  smtp_require_tls: falsetemplates:  - '/usr/lo...

2018-05-09 17:05:09 5787 1

原创 prometheus之监控rabbitMQ

监控rabbitmq1.安装相关依赖下载https://github.com/kbudde/rabbitmq_exporter/releases   tar zxvf rabbitmq_exporter-0.20.0.linux-amd64.tar.gzcd  rabbitmq_exporter-0.20.0.linux-amd64.tar.gz 启动 RABBIT_USER=admin RABB...

2018-05-08 15:16:42 10412

原创 prometheus安装配置

prometheus 的特点和其他监控系统相比,Prometheus的特点包括:多维数据模型(时序列数据由metric名和一组key/value组成)在多维度上灵活的查询语言(PromQl)不依赖分布式存储,单主节点工作.通过基于HTTP的pull方式采集时序数据可以通过中间网关进行时序列数据推送(pushing)目标服务器可以通过发现服务或者静态配置实现多种可视化和仪表盘支持prometheus...

2018-04-28 17:31:48 2231

原创 java虚拟机学习记录之类加载(一)加载机制

时隔一年多又重新翻阅了一边j&lt;深入理解java虚拟机&gt; 一书对其写的知识又了更好的认识,所以决定做下笔记。作为java开发者虚拟机好多的技术和理论我们只需要知道皮毛即可,但是个人觉得有些知识作为程序员还是必须要知道的。类加载机就是我们必须掌握之一。类加载时间虚拟机开始加载类开始,到卸载为止,是整个的生命周期。流程包括 类加载-----&gt;验证-----&gt;准备-----&gt;...

2018-04-23 22:56:15 97

原创 SpringBoot系列(一):Springboot 核心注解conditional

ConditionalOnBean:当容器里有指定的bean的条件下ConditionalOnClass:当类路径下有指定的类的条件下ConditionalOnExpression: 基于SpEL表达式作为判断条件ConditionalOnJava:基于java版本作为判断条件ConditionalOnJndi:在JNDI存在的条件下查找指定的位置ConditionalOnMissingBean ...

2018-04-08 16:14:59 489

原创 java线程基础之Semaphore学习

相关APIvoidacquire()           从此信号量获取一个许可,在提供一个许可前一直将线程阻塞,否则线程被中断。 voidacquire(int permits)           从此信号量获取给定数目的许可,在提供这些许可前一直将线程阻塞,或者线程已被中断。 voidacquireUninterruptibly()           从此信号量中获取许可,在有可用的许可前...

2018-03-07 09:44:36 94

原创 java线程基础之CyclicBarrier学习

CyclicBarrier相关APIawait()           在所有参与者都已经在此 barrier 上调用 await 方法之前,将一直等待。 await(long timeout, TimeUnit unit)           在所有参与者都已经在此屏障上调用 await 方法之前将一直等待,或者超出了指定的等待时间。 getNumberWaiting()           返...

2018-03-07 09:39:26 164

原创 java线程基础之CountDownLatch学习

CountDownLatch相关APIJDK相关解释一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置。如果需...

2018-03-02 15:16:57 150

原创 java类初始化笔记

类初始化的时机,在new对象时 也就是说走构造函数的时候 会初始化父类--本类。 当时用反射时,如果类没有初始化那个会对其初始化。注意 静态变量和静态方通过类直接调用不会进行类初始化(如果有静态代码块 会执行静态代码块)。案例:public class Test{public Test(){system.out.println("Test");}public s

2017-06-13 22:00:49 118

erstudio破解版

关闭所有杀毒软件,运行破解即可 先把安装包安装完毕 (ERStudiofree_120244.rar)选择默认路径 不要指定路径 解压 破解包 把exe 放入安装包内运行即可

2018-12-25

Java并发编程实战

对本书的赞誉 译者序 前 言 第1章 简介 1.1 并发简史 1.2 线程的优势 1.2.1 发挥多处理器的强大能力 1.2.2 建模的简单性 1.2.3 异步事件的简化处理 1.2.4 响应更灵敏的用户界面 1.3 线程带来的风险 1.3.1 安全性问题 1.3.2 活跃性问题 1.3.3 性能问题 1.4 线程无处不在 第一部分 基础知识 第2章 线程安全性 2.1 什么是线程安全性 2.2 原子性 2.2.1 竞态条件 2.2.2 示例:延迟初始化中的竞态条件 2.2.3 复合操作 2.3 加锁机制 2.3.1 内置锁 2.3.2 重入 2.4 用锁来保护状态 2.5 活跃性与性能 第3章 对象的共享 3.1 可见性 3.1.1 失效数据 3.1.2 非原子的64位操作 3.1.3 加锁与可见性 3.1.4 Volatile变量 3.2 发布与逸出 3.3 线程封闭 3.3.1 Ad-hoc线程封闭 3.3.2 栈封闭 3.3.3 ThreadLocal类 3.4 不变性 3.4.1 Final域 3.4.2 示例:使用Volatile类型来发布不可变对象 3.5 安全发布 3.5.1 不正确的发布:正确的对象被破坏 3.5.2  不可变对象与初始化安全性 3.5.3 安全发布的常用模式 3.5.4 事实不可变对象 3.5.5 可变对象 3.5.6 安全地共享对象 第4章 对象的组合 4.1 设计线程安全的类 4.1.1 收集同步需求 4.1.2 依赖状态的操作 4.1.3 状态的所有权 4.2 实例封闭 4.2.1 Java监视器模式 4.2.2 示例:车辆追踪 4.3 线程安全性的委托 4.3.1 示例:基于委托的车辆追踪器 4.3.2 独立的状态变量 4.3.3 当委托失效时 4.3.4 发布底层的状态变量 4.3.5 示例:发布状态的车辆追踪器 4.4 在现有的线程安全类中添加功能 4.4.1 客户端加锁机制 4.4.2 组合 4.5 将同步策略文档化 第5章 基础构建模块 5.1 同步容器类 5.1.1 同步容器类的问题 5.1.2 迭代器与Concurrent-ModificationException 5.1.3 隐藏迭代器 5.2 并发容器 5.2.1 ConcurrentHashMap 5.2.2 额外的原子Map操作 5.2.3 CopyOnWriteArrayList 5.3 阻塞队列和生产者-消费者模式 5.3.1 示例:桌面搜索 5.3.2 串行线程封闭 5.3.3 双端队列与工作密取 5.4 阻塞方法与中断方法 5.5 同步工具类 5.5.1 闭锁 5.5.2 FutureTask 5.5.3 信号量 5.5.4 栅栏 5.6 构建高效且可伸缩的结果缓存 第二部分 结构化并发应用程序 第6章 任务执行 6.1 在线程中执行任务 6.1.1 串行地执行任务 6.1.2 显式地为任务创建线程 6.1.3 无限制创建线程的不足 6.2 Executor框架 6.2.1 示例:基于Executor的Web服务器 6.2.2 执行策略 6.2.3 线程池 6.2.4 Executor的生命周期 6.2.5 延迟任务与周期任务 6.3 找出可利用的并行性 6.3.1 示例:串行的页面渲染器 6.3.2 携带结果的任务Callable与Future 6.3.3 示例:使用Future实现页面渲染器 6.3.4 在异构任务并行化中存在的局限 6.3.5 CompletionService:Executor与BlockingQueue 6.3.6 示例:使用CompletionService实现页面渲染器 6.3.7 为任务设置时限 6.3.8 示例:旅行预定门户网站 第7章 取消与关闭 第8章 线程池的使用 第9章 图形用户界面应用程序 第三部分 活跃性、性能与测试 第10章 避免活跃性危险 第11章 性能与可伸缩性 第12章 并发程序的测试 第四部分 高级主题 第13章 显式锁 第14章 构建自定义的同步工具 第15章 原子变量与非阻塞同步机制 第16章 Java内存模型 附录A 并发性标注 参考文献

2017-09-19

空空如也

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

TA关注的人

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