- 博客(43)
- 资源 (4)
- 收藏
- 关注
原创 JAVA中高级程序员必备技能----看看你掌握了多少
最近很多在厂里面的同学每天干着增删改查的工作,对外面的世界已经全然不知了。今天整理一下,望需要补充的童鞋留言评论!!
2021-05-10 23:06:20
425
5
原创 从Spring源码解析事务失效问题-调用同一个类方法失效
在讨论Spring中事务失效问题前请参考Spring代理文章Spring设计模式-代理模式1,首先明确一点在开启事务后,从Spring中获取的对象是代理对象ProxyFactory并不是UserService对象public class ProxyFactory{ private UserService target; public ProxyFactory(Object target){ this.target=target; }
2021-04-25 23:17:33
207
原创 SpringCloud搭建完整项目的过程四
第三章:Eureka集群路由器Zuul1,为何需要Zuul(路由)在微服务架构中,通常会有多个服务提供者。假设一个电商系统,可能会有商品、订单、支付、用户等多个类型的服务,如果前端一个接口需要调用多个服务,可能面临着一些问题:1,接口服务全部暴露给前端2,每个服务是否都要鉴权?3,跨域问题。。。为了解决这些问题,当然不只是这些问题需要给服务一个统一的守门员Zuul。你可以完全把他理解成一个守门员。2,新建module:eureka-gateway不知道如何创建可以参考上篇
2021-04-25 22:50:20
324
原创 Nacos 基础项目创建
一。运行Nacos1。下载Nacos链接: https://pan.baidu.com/s/1iDZVnkmLptamcBEwf_CwJA 提取码: fv712。window下运行nacos//单机模式startup.cmd -m standalone3。访问Nacos管理页面http://localhost:8848/nacos/index.html账号密码 nacos nacos4.新建dubbo-order 服务提供者添加pom依赖,注意版本号<.
2021-04-16 16:52:03
422
原创 SpringCloud搭建完整项目的过程三
第三章:Eureka集群的保护器Hystrix1,为何需要Hystrix(断路器)模拟这么一个场景,假设EurekaOrder.method1() 调用EurekaUser.method1() 调用EurekaOrder.method2()。此时EurekaOrder.method2()无法访问,或者网络延迟高,将会导致整个调用过程进入等待状态,整个调用的线程都将进入占用状态,一旦QPS升高,那么整条链路上的服务资源会被快速消耗完毕,直至应用死掉,引发雪崩。2,...
2021-04-12 22:03:06
177
1
原创 SpringCloud搭建完整项目的过程二
第二章:搭建Eureka集群但应用面临着随时宕机的风险,Eureka Server可以通过互相注册的方式来实现高可用的部署。1,修改EurekaServer yml配置文件server: port: 10086spring: application: name: eurekaServereureka: client: service-url: defaultZone: http://localhost:10086/server/,http://l
2021-04-11 21:13:01
185
原创 SpringCloud搭建完整项目的过程一
第一步:创建EurekaServer 注册中心1,使用String Initializr 创建一个空项目,用来统一管理EurekaServer,EurekaClient2,右键创建EurekaServer 子模块module选择EurekaServer 组件删除没用的文件3,配置pom 让store统一管理子模块store.pom<?xml version="1.0" encoding="UTF-8"?><project xmlns.
2021-04-07 22:19:03
734
1
转载 NIO相关基础篇三
说在前面上篇NIO相关基础篇二,主要介绍了文件锁、以及比较关键的Selector,本篇继续NIO相关话题内容,主要谈谈一些Linux 网络 I/O模型、零拷贝等一些内容,目前能理解到的就这些了,后续还会继续有一到二篇左右与NIO内容相关,估计在后续netty等一些学习完成之后,在回过头来看看NIO系列,再补充补充。用户空间以及内核空间概念我们知道现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操心系统的核心是内核,独立于普通的应用程
2020-08-04 11:52:30
176
转载 NIO相关基础篇二
上篇NIO相关基础篇一,主要介绍了一些基本的概念以及缓冲区(Buffer)和通道(Channel),本篇继续NIO相关话题内容,主要就是文件锁、以及比较关键的Selector,后续还会继续有一到二篇左右与NIO内容相关。文件锁(FileLock)在看RocketMQ源码中,发现有关于文件锁的import,但是具体使用代码里面注释调了[回头看看为什么,理解下,到时候会在某篇文章里进行说明](实现一个事情的方法很多,所以不一定就一种),但是为了知识的完整性,还是准备讲下文件锁,可能以后或者那个地...
2020-08-04 11:50:40
119
转载 NIO相关基础篇一
说在前面NIO相关知识是很多后续的一些基础知识,所以今天这篇文章仅仅是简单介绍,后续会继续有一到二篇相关NIO内容。什么是NIOJava NIO( New IO) 是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同, NIO支持面向缓冲区的、基于通道的IO操作。 NIO将以更加高效的方式进行文件的读写操作。NIO与普通IO的主要区别IO NIO 面向流(Stream Orie
2020-08-04 11:45:42
127
转载 Redis是什么?看这一篇就够了
本文由葡萄城技术团队编撰并首发转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。引言在Web应用发展的初期,那时关系型数据库受到了较为广泛的关注和应用,原因是因为那时候Web站点基本上访问和并发不高、交互也较少。而在后来,随着访问量的提升,使用关系型数据库的Web站点多多少少都开始在性能上出现了一些瓶颈,而瓶颈的源头一般是在磁盘的I/O上。而随着互联网技术的进一步发展,各种类型的应用层出不穷,这导致在当今云计算、大数据盛行的时代,对性能有了更多的需求,.
2020-08-04 11:24:05
201
原创 Redis从入门到精通一
redis是什么redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。redis数据结构 字符串(strings) 字符串列表(lists) 字符串集合(sets) 有序字符串集合(sorted sets) 哈希(hashes) strings 常用指令set key value 设置键值对get key 根据键获取值127.0.0.1:6379> set user:100.
2020-08-04 10:59:39
96
原创 SpringBoot源码阅读记录二 - SpringbootApplication注解
启动类@SpringBootApplicationpublic class SpringbootApplication { public static void main(String[] args) { SpringApplication.run(SpringbootApplication.class, args); }}1 SpringBootApplication注解@SpringBootConfiguration@EnableAutoConfig
2020-08-03 17:23:21
113
原创 SpringBoot源码阅读记录一 - 手写一个简单的Springboot
引言在以往的spring项目中,我们的应用程序需要部署在Tomcat容器内部运行。现在Springboot将Tomcat嵌入到程序中运行,增加了应用程序的灵活性。为以后的微服务分布式打下基础。现在来看下如何嵌入Tomcat创建项目创建一个简单的POM项目引入Tomcat依赖 <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactI
2020-08-03 10:47:32
238
原创 Spring5.1源码阅读记录七 - Spring AOP源码分析
在上篇文章中学习了如何实现一个切面,https://blog.csdn.net/u014533485/article/details/107536422下面走进代码中看看Spring是如何实现AOP代理功能的。一、@EnableAspectJAutoProxy注解想要使用AOP的功能需要在配置类中启用这个注解@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(AspectJAutoPro
2020-07-23 16:01:37
133
原创 Spring5.1源码阅读记录六 - Spring AOP
在阅读AOP代码之前先熟悉下代理模式!对代理模式不熟的话可以看看:https://blog.csdn.net/u014533485/article/details/107529445在Spring AOP中使用的代理模式有两种:JDK动态代理Cglib当实例化的Bean 实现了接口 就选择使用JDK 动态代理,否则就使用Cglib。当然可以全局指定使用的代理。一、AOP的基本概念:1、什么是aopAOP(Aspect OrientedProgramming)称为面向切面编程,在程序开
2020-07-23 15:08:40
78
原创 Spring设计模式-代理模式
java的三种代理模式:静态代理动态代理Cglib代理静态代理定义接口public interface Vehicle { void run();}定义委托类public class Bicycle implements Vehicle { @Override public void run() { System.out.println("自行车在跑...."); }}定义代理类/** * 代驾 代理对象 * 使用聚合方式 生成代理对象 */public
2020-07-23 10:26:44
107
原创 Spring5.1源码阅读记录四 - Spring中的Aware
什么是Aware?Aware的意思是可感知的,有意识的。在Spring容器中bean在创建过程中对Spring是毫无感知的。就像幼儿园里面的小孩子一样,老师让我干啥我干啥,老师让我去哪我去哪。但是在实际开发过程中我们不可避免的可能需要使用比如Spring容器的一些资源,就比如某个同学需要去教务处申请奖学金,那此时只要将教务处的电话地址交给这个同学他就可以去找到教务处。相应的Spring也提供了类似的“电话地址”的方法,帮助Bean获取Spring的资源。常见的Aware这里仅列举几个简单的Awa
2020-07-21 15:06:18
117
原创 Spring5.1源码阅读记录三 - BeanFactory 和FactoryBean的区别
什么是BeanFactory?从名字就可以看出来,BeanFactory是一个Bean的模板工厂,负责Bean的管理、创建、销毁。他是spring容器的顶级抽象,比如我们常用的AnnotationConfigApplicationContext、ClassPathXmlApplicationContext等就是实现了这个接口。什么是FactoryBean?从名字来看FactoryBean是一个Bean,是一个工厂Bean,如何理解?用在什么地方?在我们日常的开发中,比如我们常用的Contro
2020-07-21 11:42:25
128
原创 Spring5.1源码阅读记录二 - 一步步看bean是如何被创建起来的
DefaultListableBeanFactoryDefaultListableBeanFactory继承图如下所示:其中AliasRegistry:定义对alias的简单增删改等操作SimpleAliasRegistry:缓存别名bean名称到Map中SingletonBeanRegistry:单例Bean的注册于获取方法BeanFactory:定义获取bean和bean的各种属性DefaultSingetonBeanRegistry:SingletonBeanRegis
2020-07-10 17:38:12
299
原创 JAVA线程-线程池
1、线程池的优势(1)降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;(2)提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;(3)方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切换线程是有时间成本的(需要保持当前执行线程的现场,并恢复要执行线程的现场))。(4)提供更强大的功能,延时定时线程池2、java中提供的线程池public static...
2020-07-07 17:30:25
87
原创 java线程--基础篇
一:为什么要学多线程 如果是单线程,所有的任务顺序执行,非常浪费时间,而且处理量有限,比如下课去食堂打饭,只有一个窗口所有同学排队等着阿姨打饭。多线程可以理解为食堂又开通了多个窗口,多个窗口同时排队打饭效率是不是就大大提升了。同样当开通了多个窗口就会引发多个问题。比如A窗口的同学都喜欢吃红烧肉,结果A窗口那边红烧肉卖的很快,一会就卖光了,B窗口阿姨刚收完同学红烧肉的钱 结果去看才知道卖光了。这个仅仅是生活中简单处理的情况。二:进程与线程1. 进程进程是资源(CPU、内存等)分配的基本单...
2020-07-06 16:55:50
171
原创 JAVA基础-注解
想必在项目中大家一定接触过不少注解,特别是在Spring项目中,那注解的作用是什么,有何意义?什么是注解?注解可以理解为一个标签,这个标签可以贴在类上,方法上,成员变量上。注解用来标识某些特征,类似的可理解为Interface接口。public @interface Table { String name() default "";}元注解@RetentionRetention 的英文意为保留期的意思。当 @Retention 应用到一个注解上的时候,它解释说明了这
2020-06-29 11:19:49
91
原创 JAVA基础-反射
反射是什么,它能做什么,它比原有知识强在哪里,我们该怎么使用它?一、是什么 Java Reflaction in Action有这么一句话,可以解释。反射是运行中的程序检查自己和软件运行环境的能力,它可以根据它发现的进行改变。通俗的讲就是反射可以在运行时根据指定的类名获得类的信息。二、为什么 我们为什么要使用反射,它的作用是什么,它在实际的编程中有什么应用。 首先我们先明确两个概念,静态编译和动态编译。 静态编译:在编译时确定类型,绑定对象,即通过。 动态编译:运行时确.
2020-06-29 09:03:40
86
原创 Spring5.1源码阅读记录一 - 初次见面
首先阅读源码是件很痛苦的事情。第一步整合源码更痛苦,参考:https://blog.csdn.net/qq_40088250/article/details/104219666人家确实写的不错,可以拿来避避坑!!!整合完成之后,新建项目进行测试。一,Spring启动的两种方式1.1 基于注解:import com.learn.day1.AppConfig;import com.learn.day1.AppService;import org.springframework.co
2020-06-09 11:57:47
190
原创 quartz 项目整合Springboot
quartz 项目整合Springboot首先在项目中定时器是用的比较多的需求,如果不希望整合太多的第三方组件或者是项目中任务比较少完全可以使用spring自带的任务Scheduled。1,首先需要整合quartz在POM文件中添加 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring
2020-06-02 17:11:45
1945
3
原创 Joda_Time日期操作-DateTime
官方网站:https://www.joda.org/joda-time/如果在JDK1.8之前使用DateTime实则万金油的日期操作,但是在之后的版本官方意识到这个问题,重新设计了time包。作为jdk1.8的开发者为之前的版本提供了这种方式。Joda-Time 令时间和日期值变得易于管理、操作和理解。事实上,易于使用是 Joda 的主要设计目标。其他目标包括可扩展性、完整的特性集以及对多种日历系统的支持。并且 Joda 与 JDK 是百分之百可互操作的,因此您无需替换所有 Java 代码,只需要替换
2020-05-29 14:57:35
1104
原创 JAVA数据结构-HashMap
在工程中HashMap使用的非常频繁,甚至有人说如果只能选择一个的话我选HashMap。那今天来回顾一下HashMap.HashMap什么首先HashMap继承自Map<>接口,Map接口的定义了一些方法,比较简单,不说了先来看HashMap是如何实现的:简单点说HashMap就是一个数组,数组的元素对应着一个链表,当链表足够长时转换为二叉树。首先由几个很重要的属性:static final int DEFAULT_INITIAL_CAPACITY = 1 &.
2020-05-20 18:02:14
106
原创 JAVA是如何运行的四-对象布局
首先说明为什么要学习java的对象布局?当对一个代码块加锁的时候,刚学习java的时候认为是锁的代码,其实这样理解是不对的。看下面代码其实锁的是一个LayoutClass对象!那底层是怎么实现的呢? public static void add(){ synchronized (LayoutClass.class){ i++; } }首先需要一个工具:看对象布局的依赖文件 <dependency&g
2020-05-11 17:59:13
135
原创 JAVA是如何运行的四-voliate
综合上篇文章的代码一的说明如果我们使用voliate关键字修饰flag会出现什么效果public static volatile boolean flag = false; public static void main(String[] args) throws InterruptedException { new Thread(new Runnable() { @Override public void run() {
2020-05-09 15:47:34
320
原创 JAVA是如何运行的三线程模型
JVM线程模型根据上述两篇文章的说明,大概知道jvm是如何分配内存并且运行起来的。现在我们来看既然对于JVM的内存模型来说,方法区和堆是线程共享的 但是对于jvm栈,栈帧,计数器等是线程独享的,很显然,当两个线程如果同时操作方法区中的静态变量n,为什么会产生并发问题?那如何解决并发问题?首先来看下JVM的线程模型首先为什么线程模型会长这个样子?...
2020-05-08 17:37:37
222
原创 JAVA是如何运行的二JVM模型
综上篇介绍,下面来详细讲解java代码的执行结果首先看源代码 ,通常当我们运行下面代码时,我们会认为虚拟器会创建一个线程,从main方法开始执行。然后计算abc的值后开始调用getN()方法。package com.company; public class Test1 { static int n = 5; public static void main(S...
2020-05-07 11:17:01
423
1
原创 JAVA是如何运行的一JVM模型
关于JAVA是如何运行的一直很模糊 今天来总结下一,首先先理解几个基本概念:JDK(Java Development Kit),Java开发工具包,主要用于开发 JRE(Java Runtime Environment),Java程序运行的核心环境,包括JVM和一些核心库 JVM(Java Virtual Machine),VM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过...
2020-04-30 09:17:22
186
1
原创 Spring随笔之bean的注入方式
Spring最大的功能就是一个bean的管理,通过我们配置bean的方式将bean的创建和销毁权交给Spring容器处理。什么是IOC?IOC就是原本需要我们主动创建(new出来)的对象交给容器去创建。一,set方式注入首先准备个bean;package com.oldma.spring.bean;public class Car { private String ...
2019-03-15 14:36:31
146
原创 Spring随笔之使用Idea创建SpringMvc项目Hello World
首先我们先使用配置文件的方式创建一个Spring项目。大家在学习的时候不要图一时方便直接使用idea依赖maven一键式创建,那样其中的很多配置细节可能会注意不到,特别是对spring配置不熟悉的朋友,很不利于学习。而且希望在一次次创建spring的过程中希望每次都能提升对spring的认识。好的言归正传,我这里使用的intellij idea创建spring项目。intellij ide...
2019-03-11 17:30:21
368
原创 Java随笔之Spring
1,Spring类似一个容器,可以将所有对象创建和依赖关系维护。2,IOC控制反转: 一般的开发中如果我们需要一个对象,则需要将这个对象new出来,随着代码量的增加,项目的耦合度就会越来越大,维护也会变得相当的麻烦。因此如果有这么一个容器,我把所有的对象定义都给他,当我需要的用哪个对象的时候给我返回就好了。Spring的IOC就是做着这么一个事情。 为什么叫做...
2019-02-28 13:50:48
134
转载 Redis学习总结
转自:https://www.cnblogs.com/luoxn28/p/5790313.html Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,其实当前最热门的NoSQL数据库之一,NoSQL还包括了Memcached和mongodb。关于Redis和Memcached的比较请点击:Redis 和 ...
2019-02-21 10:38:41
114
原创 JAVA随笔之我要掌握什么???
以此共勉!!!! 一:Java开发介绍基础还是重要的!!代码规范也很重要!!1. DOS常用命令2. JVM、JRE、JDK之间的关系3. Java开发环境的搭建:安装JDK,配置环境变量4. Java入门程序(Java的开发流程)5. Java的注释,标识符、标识符的命名规范6. Java基本数据类型7. 变量和常量的定义及初始化8. Java的运算符9. 运算符的优先级10. ...
2019-02-20 11:29:06
306
原创 JAVA基础随笔之for循环
今天正在看java8新特性的lamada函数式编程,网上很多人都在聊函数式编程怎么样的效率低,我也找了一些相关资料在对比两者的差异到底有多大。直到我看到下面一句代码时,我有点陌生了!!!! for(Iterator<String> it = lists.iterator();it.hasNext();) { Syste...
2019-02-20 11:01:48
225
pdfconverter.rar
2020-07-09
classpy-master.zip
2020-05-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人