java基础
文章平均质量分 94
i爱编码
微信公众号:爱编码
展开
-
Feign源码解析
Feign是什么Feign是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求。Spring Cloud引入 Feign并且集成了Ribbon实现客户端负载均衡调用。封装了Http调用流程,更适合面向接口化的变成习惯Feign基本流程核心就是通过一系列的封装和处理,将以JAVA注解的方式定义的远程调用API接口,最终转换成HTTP的请求形式,然后将HTTP的请求的响应结果,解码成JAVA Bean,放回给调用者。Feign源码实现1. 基于面向接口的动态代理方式.原创 2021-07-25 21:50:47 · 450 阅读 · 0 评论 -
Spring多数据源事务
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hKZLbDIJ-1578488684795)(https://upload-images.jianshu.io/upload_images/13150128-209c59ce4b078974.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]前言接着上一...原创 2020-01-08 21:05:21 · 184 阅读 · 0 评论 -
Spring事务基础
前言我猜大概50%的Java程序员(别问我怎么知道的,反正我就是,太失败了!!!)现在仅仅局限于一个@Transactional注解或者在XML中配置事务相关的东西,然后除了事务级别之外,其他的事务知识可能是空白的。为了更加全面地学习,所以我就汇总一下Spring事务的知识点,有什么不对或者补充的,大家记得留言告诉我哈。为什么要事务关于事务的由来,我就不举例子了,很多人第一反应就是去银行存...原创 2019-12-31 21:10:37 · 644 阅读 · 1 评论 -
mybatis统计每条SQL的执行时间
背景最近面试经常被问到关于数据库的事务的问题,可能平时我就知道加个注解@Transactional之后就一脸懵逼的。现在发现这一块真的是常常被忽略了,然而面试官就是最喜欢这种看是不常用,但是非常重要的问题,进而达到出其不意攻其不备。不吹水了,开始正文。方案一:切面编程@Aspect此方案主要是通过环绕切面的方式将mapper包下的接口方法,然后前后计算时间差即可。这就是典型的AOP知识,不...原创 2019-12-31 21:10:03 · 532 阅读 · 0 评论 -
经典排序算法
1,冒泡排序思想:相邻元素两两比较大的往下沉,小的往上浮.(具体点说就是两相邻元素相互比较,如果前面的元素比后面的大就换位置,否则继续比较.)举个例子吧:将数组arr[]={21,65,13,42,68};排序冒泡排序的处理步骤: 1,将21和65比较,由于65>21则不需要交换.2,将65 和 13比较,由于 13<65则交换位置.3,将第2步交换位置后的,即65和42比较,由于65>42原创 2016-12-20 19:33:58 · 262 阅读 · 0 评论 -
java 之static关键字
static的作用修饰成员变量时,其实是直接加载到内存的方法区的.(换句话说就是随着类的字节码一起加载的.),这就是为了节约内存,共享内存.static关键字的特点随着类的加载而加载优先于对象存在被类的所有对象共享 举例:咱们班级的学生应该共用同一个班级编号。其实这个特点也是在告诉我们什么时候使用静态?如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。举例: 饮水机(转载 2016-12-18 16:22:08 · 230 阅读 · 0 评论 -
java之类
类和对象的概念: 类:是一组相关的属性和行为的集合 对象:是该类事物的具体体现 举例: 类 学生 对象 具体的某个学生.成员变量和成员方法 成员变量----->属性 成员方法----->行为命名规则 类名:首字母大写 方法:第一个单词除外,其余首字母大写 变量:和方法一样原创 2016-12-18 16:17:39 · 238 阅读 · 0 评论 -
java之this和super,final
this和super的区别和应用this和super都代表什么 this:代表当前对象的引用,谁来调用我,我就代表谁super:代表当前对象父类的引用this和super的使用区别 a:调用成员变量 this.成员变量 调用本类的成员变量,也可以调用父类的成员变量super.成员变量 调用父类的成员变量b:调用构造方法 this(…) 调用本类的构造方法super(…) 调原创 2016-12-18 16:05:00 · 265 阅读 · 0 评论 -
java之三种代码块
代码块:在Java中,使用{}括起来的代码被称为代码块。常见代码块的应用a:局部代码块 在方法中出现;限定变量生命周期,及早释放,提高内存利用率.b:构造代码块 (初始化块)(一般出现在面试中)在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行c:静态代码块 在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只原创 2016-12-18 15:56:31 · 260 阅读 · 0 评论 -
java基本常识(二)
一,数组数组(容器)可以存储基本数据类型,也可以存储引用数据类型 数组是开辟连续的内存空间,并为每个数组元素赋予值.静态初始化格式: 格式:数据类型[] 数组名={元素1,元素2,….}; 数据类型[] 数组名=new 数据类型[]{元素1,元素2,….};数组操作常出现的异常: java.lang.ArrayIndexOutOfBoundsExc原创 2016-12-18 15:46:39 · 298 阅读 · 0 评论 -
java之基础常识(一)
一,基本知识.1、jre和jdk的用途jre:JVM+类库JDK:jre+java的开发工具2、jdk的bin目录:java编译器javac.exe,java运行工具java.exe,打包工具jar.exe,文档生成工具javadoc.exe3、控制台运行java文件: 1、javac Hello.java(编译后生成.class) 2、java Hello原创 2016-12-18 15:41:43 · 281 阅读 · 0 评论 -
面向对象之接口
概述:从狭义来说就是java中的interface从广义来说就是对外提供规则的都是接口(USB接口)接口的特点:1,接口用关键字interfaceinterface 接口名 { }2,类实现接口用implements表示class 类名 implements 接口名 { }3,接口不能实例化,所以一般是按照多态方式来实例化4,接口的子类一般是具体的类,重写接口中的所有抽象方法.接口中的原创 2016-12-18 15:15:21 · 242 阅读 · 0 评论 -
面向对象(一)
一、面向过程和面向对象。面向过程思想:就是所有过程都是需要自己完成,每个细节都需要完成。面向对象思想:就是在一个对象中已经有相应的方法和实现过程,而我们只需要获取到对象就可以了,具体过程无需自己实现。 还是举个例子解析一下 例如:洗衣服这件事。 面向过程就是如下:先放水,然后就是放洗衣液,接着手洗衣服,最后晾起来。 而面向对象的思想的做法就是:找个女朋友(对象),将衣服给她(对象里有洗衣服的原创 2016-12-18 11:26:24 · 239 阅读 · 0 评论 -
Java之常用API
一,java中万物皆对象,所以Object类官方文档说明: 类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。1,equals方法boolean equals(Object obj); //指示其他某个对象是否与此对象“相等”。 默认是object中的比较地址值特别地: == 与equals的区别: ==原创 2016-12-19 14:14:30 · 332 阅读 · 0 评论 -
java之常用API(二)
一,StringBuffer类1,String和StringBuffer的区别:String是一个不可变的字符序列StringBuffer是一个可变的字符序列 2,StringBuffer,String和StringBuilder的区别:StringBuffer和StringBuilder的区别StringBuffer是jdk1.0版本的,是线程安全的,效率低(因为要检验锁)StringB原创 2016-12-20 12:26:17 · 224 阅读 · 0 评论 -
重构
背景最近公司做了个项目,深深体会到架构设计以及代码优化有多么的重要。回头看自己的代码都觉得特别混乱,有时候还要看很久才能看懂,可扩展性特别差,完全是为了完成需求而编码的。说得形象一点就像修水管,最后全部都漏水了。个人觉得代码重构非常有必要,写程序不但要给机器运行,更让人看的明白。写代码如写诗一样才行。实例一个图书馆出租书的程序。计算每一个读者的消费金额并且打印详情清单。打印信息...原创 2019-04-05 21:51:52 · 133 阅读 · 0 评论 -
SpringCloud之Hystrix
简介在分布式环境中,许多服务依赖关系中的一些必然会失败。Hystrix是一个库,它通过添加延迟容忍和容错逻辑来帮助您控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点、停止跨服务的级联故障并提供回退选项来实现这一点,所有这些选项都提高了系统的总体弹性。目标Hystrix的设计目的如下:为通过第三方客户端库访问的依赖项(通常通过网络)提供保护和控制延迟和故障。停止复杂...原创 2019-04-07 11:16:56 · 200 阅读 · 0 评论 -
【Netty】学习NioEventLoop
欢迎关注公众号:【爱编程】如果有需要后台回复2019赠送1T的学习资料哦!!简介Netty框架的主要线程就是I/O线程,线程模型的设计决定了系统的吞吐量、并发性和安全性等架构质量属性。所以了解一下NioEventLoop。Reactor线程模型基本上所有的网络处理程序都有以下基本的处理过程:Read requestDecode requestProcess serviceE...原创 2019-06-06 07:24:27 · 258 阅读 · 0 评论 -
【Netty】Netty如何接入新连接
欢迎关注公众号:【爱编程】如果有需要后台回复2019赠送1T的学习资料哦!!前文再续,书接上一回【NioEventLoop】。在研究NioEventLoop执行过程的时候,检测IO事件(包括新连接),处理IO事件,执行所有任务三个过程。其中检测IO事件中通过持有的selector去轮询事件,检测出新连接。这里复用同一段代码。Channel的设计在开始分析前,先了解一下Channel的...原创 2019-06-07 17:37:38 · 881 阅读 · 0 评论 -
面向对象之抽象类
抽象类:在java中,含有抽象方法的类称为抽象类,同样不能生成对象.特点:1,抽象类和抽象方法必须用abstract关键字修饰 abstract class 类名 {}2,抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者接口3,抽象类不能实例化,一般是由子类继承,然后由子类实例化(运用了多态)4,抽象类的子类,必须重写抽象类的所有的抽象方法或者该子类也是抽象的.抽象类成员抽象类成员原创 2016-12-18 14:13:19 · 234 阅读 · 0 评论 -
面向对象(二)
面向对象之多态多态(polymorphic)概述:事物存在的多种形态.多态的前提:* 1,事物存在的多种形态.* 2,要有方法重写* 3,要有父类引用指向子类对象.多态的前提解析:1,多种形态:例如狗在吃骨头.(也可以说一个动物在吃骨头.)这就是多种形态.2,方法的重写(override)方法重写:子类中出现了和父类中方法声明一模一样的方法。与返回值类型有关,返回值是一致(或者是子父类)的.原创 2016-12-18 13:05:18 · 196 阅读 · 0 评论 -
javaIO流之常用IO流
一、IO流(序列流)1.什么是序列流 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推.2.使用方式 整合两个: SequenceInputStream(InputStream, InputStream) //创建输入流对象,关联a.txt FileInputStream fis1 = new原创 2016-12-04 22:53:02 · 543 阅读 · 0 评论 -
Java的IO之字符流(Reader)
IO流(字符流FileReader)特别地,字符流一般只用于处理字符数据,文本文件,键盘输入的中文字符 * 1.字符流是什么 * 字符流是可以直接读写字符的IO流 * 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出. * 2.FileReader * FileReader类的read()方法可以按照字符大小读取原创 2016-12-04 21:31:41 · 430 阅读 · 0 评论 -
Java的IO之字节流(stream)
IO流(IO流概述及其分类)1.概念IO流用来处理设备之间的数据传输Java对数据的操作是通过流的方式Java用于操作流的类都在IO包中流按流向分为两种:输入流,输出流。流按操作类型分为两种: 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的字符流 : 字符流只能操作纯字符数据,比较方便。2.IO流常用父类字节流的抽象父类: InputStream原创 2016-12-04 20:54:39 · 319 阅读 · 0 评论 -
java多线程(下)
多线程(单例设计模式)单例设计模式:保证类在内存中只有一个对象。如何保证类在内存中只有一个对象呢?(1)控制类的创建,不让其他类来创建本类的对象。private(2)在本类中定义一个本类的对象。Singleton s;(3)提供公共的访问方式。 public static Singleton getInstance(){return s}主要优点:1、提供了对唯一实例的受控访问。2、由原创 2016-12-04 20:26:44 · 276 阅读 · 0 评论 -
java多线程(中)
常用API 21、守护线程 setDaemon(), 设置一个线程为守护线程, 该线程不会单独执行, 当其他非守护线程都执行结束后, 自动退出。该方法必须在启动线程(start)前调用。 2、加入线程join(), 当前线程暂停, 等待指定的线程执行结束后, 当前线程再继续join(int), 可以等待指定的毫秒之后继续3、多线程(礼让线程)(了解)yield让出cpu4、多线程(设置原创 2016-12-04 19:46:43 · 219 阅读 · 0 评论 -
java多线程(上)
多线程(多线程并行和并发的区别)并行就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行。(需要多核CPU)并发是指两个任务都请求运行,而处理器只能按受一个任务,就把这两个任务安排轮流进行,由于时间间隔较短,使人感觉两个任务都在运行。比如我跟两个网友聊天,左手操作一个电脑跟甲聊,同时右手用另一台电脑跟乙聊天,这就叫并行。如果用一台电脑我先给甲发个消息,然后立刻再给乙发消息,然后再跟甲聊原创 2016-12-04 14:22:12 · 207 阅读 · 0 评论 -
java网络编程(下)上传文件
上传文件到服务器客户端代码:public class Test2_UpdateClient { /** * @param args * @throws IOException * @throws UnknownHostException */ public static void main(String[] args) throws Unk原创 2016-12-04 13:40:06 · 249 阅读 · 0 评论 -
java网络编程(上)
网络编程(网络编程概述)A:计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。B:网络编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。网络编程1、IP每个设备在网络中的唯一标识每台网络终端在网络中都有一个独立的地址,我们在网络中传原创 2016-12-04 12:32:27 · 222 阅读 · 0 评论 -
JDK1.5-JDK1.8的新特性
JDK5新特性1,自动拆装箱2,泛型3,可变参数4,静态导入5,增强for循环6,互斥锁7,枚举7、枚举A:枚举概述 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。举例:一周只有7天,一年只有12个月等。B:回想单例设计模式:单例类是一个类只有一个实例 那么多例类就是一个类有多个实例,但不是无限个数的实例,而是有限个数的实例。这才能是枚举类。C:案例演示原创 2016-12-04 11:48:06 · 290 阅读 · 0 评论 -
JDBC编程
最简单的格式如下: private static void learnJdbc() throws SQLException { // 注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //获取连接 Connection conn=DriverManager原创 2016-12-08 22:28:50 · 299 阅读 · 0 评论 -
java之泛型
泛型(Generic type 或者 generics)对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。泛型的好处1,提高安全性(将运行期的错误转换到编译期)2,省去强转的麻烦没看出来?举个栗子吧: List list= new ArrayLis原创 2016-12-22 12:06:57 · 230 阅读 · 0 评论 -
Java的文件类File和递归(笔试的常见题)
File类(递归)5的阶乘递归调用的弊端:不能调用的次数过多(7000次左右),容易导致栈内存溢出递归调用的好处:不用知道循环的次数构造方法是不可使用递归的。递归不一定需要返回值(类似文件夹查找不需要返回值)File类(练习)需求:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名 分析: 从键盘接收一个文件夹路径1,如果录入的是不存在,给与提示2,如果录入的原创 2016-12-08 19:28:43 · 2423 阅读 · 0 评论 -
java的异常
异常异常就是Java程序在运行过程中出现的错误。异常的分类Error (服务器挂了,数据库挂了)ExceptionException继承体系:Throwable ErrorException RuntimeException异常的处理方式1,自己将该问题处理,然后继续运行( try…catch….finally ).(如果处理异常后还需要执行其他语句的,则用这种方法.)2,自己没处理原创 2016-12-23 13:16:19 · 365 阅读 · 0 评论 -
java的数组以及集合工具类
以下介绍的两个工具类是用了单例模式以及方法都是静态的.数组工具类ArraysArrays类概述针对数组进行操作的工具类。提供了排序,查找等功能。成员方法 * public static String toString(int[] a) * public static void sort(int[] a) * public static int binarySear原创 2016-12-22 21:53:55 · 254 阅读 · 0 评论 -
java容器之Map
Map接口特点:将键映射到值的对象一个映射不能包含重复的键每个键最多只能映射到一个值Map接口和Collection接口的不同 Map是双列的,Collection是单列的Map的键唯一,Collection的子体系Set是唯一的Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效 (HashSet的底层是用Map的put方法实现add的.)原创 2016-12-22 21:47:53 · 217 阅读 · 0 评论 -
java集合类之Set
Set 集合与list一样都是继承Collection 接口的.但底层呢有些子类是双列集合实现的.只不过是将第二列固定死了不显示罢了.实现Set接口的子类的特点1,HashSet类(哈希算法) ——无索引,不可重复,无序(存储不一致) HashSet<String> hs = new HashSet<>(); boolean b1 = hs.add("a原创 2016-12-22 21:34:58 · 286 阅读 · 0 评论 -
java的集合类List系列(一)
Collection 类本文主要是讲基础,大神们就不用在此浪费时间了,应该也没有大神看这些吧..首先就先上图吧为啥需要集合呢?由于数组的长度是固定的,当添加元素超过数组长度时,那么我们就要重新定义更大的数组.而java提供的集合类就是为了这个问题而设计的.集合与数组的区别1,数组可以存储基本数据类型和引用数据类型(也就是对象的地址值),而集合只能存储引用数据类型(对象),但你会发现基本数据类型也可原创 2016-12-21 16:13:16 · 280 阅读 · 0 评论 -
java 集合类List系列(二)
集合类ArrayList现讨论一下以下的问题 如果需要删除 重复的元素那该如何处理? list.add(new Student("张三",23)); list.add(new Student("张三",23)); list.add(new Student("李四",24)); list.add(new Student("张三",23))原创 2016-12-22 11:07:10 · 250 阅读 · 0 评论 -
java集合类List系列(三)
集合类与数组的关系1,数组转为集合类的注意事项.首先数组转为集合类的方式:// String[] arr = {"a","b","c","d"};/* 此处由于集合存储的是引用类型.所以.... */// int[] arr ={1,3,3,4,5,67,5}; Integer[] arr={1,2,3,4,56,7}; List<Intege原创 2016-12-22 14:09:25 · 311 阅读 · 0 评论