- 博客(38)
- 收藏
- 关注
原创 Feign源码分析
前言通过对feign的使用,发现@EnableFeignClients和@FeignClient两个注解就实现了Feign的功能,那就从@EnableFeignClients注解开始分析Feign的源码1、EnableFeignClients注解@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE})@Documented@Import({FeignClientsRegistrar.class})public @interf
2020-10-18 18:21:03
191
1
原创 基于feign的服务调用
一、Fegin简介1、Feign可帮助我们更加便捷,优雅的调用HTTP API。2、在SpringCloud中,使用Feign非常简单——创建一个接口,并在接口上添加一些注解,代码就完成了。3、Feign支持多种注解,例如Feign自带的注解或者JAX-RS注解等。4、SpringCloud对Feign进行了增强,使Feign支持了SpringMVC注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便。二、feign的服务调用步骤1、引入依赖 <dependenc
2020-10-14 21:40:57
309
原创 springboot 自动加载源码分析
一、前言因为springcloud的组件都是借助springboot的自动加载创建对象,所以分析springboot自动加载,对springcloud的组件源码学习是很有必要的。二、源码分析1、@SpringBootApplication总所周知,springboot启动类中都有@SpringBootApplication2、@EnableAutoConfiguration进去之后,查看自动加载配置的注解3、AutoConfigurationImportSelector查看@Import
2020-10-06 22:23:19
261
原创 Eureka注册中心的介绍与使用
一、注册中心的主要功能1、服务发现1)、服务注册/反注册:保存服务提供者和服务调用者的信息2)、服务订阅/取消订阅:服务调用者订阅服务提供者的信息,最好有实时推送的功能3)、服务路由(可选):具有筛选整合服务提供者的能力。2、服务配置1)、配置订阅:服务提供者和服务调用者订阅微服务相关的配置2)、配置下发:主动将配置推送给服务提供者和服务调用者3、服务健康监测检测服务提供者的健康情况二、Eureka的基本架构1、 Eureka Server提供服务注册和发现2、Service Pr
2020-10-02 13:37:16
1117
原创 自定义Filter拦截器
这里使用Servlet3.0的注解进行配置一、创建拦截器类@WebFilter(urlPatterns = "/get/api/*", filterName = "loginFilter")public class LoginFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("拦截器init")
2020-08-01 21:37:44
288
原创 springboot框架get访问总结与演示
一、从路径中获取字段以下都通过Postman进行测试@RequestMapping(path = "/{city_id}/{user_id}", method = RequestMethod.GET) public Object findUser(@PathVariable("city_id") String cityId, @PathVariable("user_id") String userId ) { params.clear(); params.put("cityId", ci
2020-07-29 22:28:37
278
原创 vue-cli介绍与使用
vue-cli 是 vue 出来的一个脚手架,可以进行 组件式地开发1、安装 vue-cli在命令窗口输入:npm install -g vue-cli输入vue 能看到下面信息,代表安装成功2、安装项目模板,这里安装webpack前三个是固定的,最后一个项目名称(不能使用大写,否则安装会有提示),安装过程中会有操作选项,vue-router是路由器,不熟悉可以先不安装vue init webpack vuedemo3、下载依赖我理解的是类似在maven中下载jar依赖包,注意:这里网络要
2020-07-05 11:16:36
200
原创 vue的生命周期
1. vue对象的生命周期1). 初始化显示* beforeCreate()* created()* beforeMount()* mounted()2). 更新状态* beforeUpdate()* updated()3). 销毁vue* beforeDestory()* destoryed()2. 常用的生命周期方法created()/mounted(): 发送ajax请求, 启动定时器等异步任务beforeDestory(): 做收尾工作, 如: 清除定时器 实例: vm.
2020-07-05 08:19:17
105
原创 vue计算属性与监视属性
1、html代码准备<div id="demo"> 姓: <input type="text" placehlder="First Name" v-model="firstName"><br> 名: <input type="text" placeholder="Last Name" v-model="lastName"><br> <!--fullName1是根据fistName和lastName计算产生--> 姓名1
2020-06-30 00:01:20
166
原创 mybatis一对多查询演示
一、需求在查询用户与订单基础上查询订单明细,用户与订单关系是一对一,订单与订单明细是一对多关系。二、创建pojo类 public class Orderdetail { private Integer id; private Integer ordersId; private Integer itemsId; private Integer itemsNum; .......set与get方法省略 订单中添加list订单明细,体现订单到订单明细
2020-06-27 21:31:52
111
原创 mybatis一对一查询演示
一、需求查询订单信息,关联查询创建订单的用户信息,需提前创建好订单表和用户表,订单和用户关系是一对一。二、创建pojo类1、订单实体类需在订单类定义用户信息,实现一对一关系。 public class Orders { private Integer id; private Integer userId; private String number; private Date createtime; private String note; //用
2020-06-27 20:51:02
130
原创 mybatis的动态sql
一、什么是动态sqlmybatis中 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接、组装如下,对用户信息查询时,对查询条件进行判断,如果输入参数不为空才进行查询条件拼接。二、定义入参封装类其中User类,在本分类其他博客有说明,是公共的 public class UserCustom extends User{ private static final long serialVersionUID = 1L; } public class UserQ
2020-06-25 22:42:52
101
原创 mybatis输入映射与输出映射
一、输入映射1、定义包装类型pojo,在包装类型的pojo中将复杂的查询条件包装进去。User类为和表对照类,再mybatis其他博客有列出2)为什么使用User的子类UserCustom,不直接使用User,因为User类可以通过逆向工程生成,是不变的,使用子类UserCustom可以方便扩展。public class UserCustom extends User{ private static final long serialVersionUID = 1L;}public cla
2020-06-23 21:41:38
189
原创 mybatis通过mapper代理方法基于mysql实现增删改查
一、mybatis介绍mybatis是一个持久层的框架,让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需要sql语句,mybatis可以将向 preparedStatement中的输入参数自动进行输入映射,将查询结果集灵活映射成java对象。(输出映射)。二、框架介绍1、创建全局配置文件,SqlMapConfig.xml,名称是不固定的,用于配置了数据源、事务,映射文件(配置sql),等mybatis运行环境2、SqlSess
2020-06-21 23:37:25
636
1
原创 Java IO缓存流读写数据代码演示
一、字节流和字符流的弊端以介质是硬盘为例,在每一次读写的时候,都会访问硬盘。 如果读写的频率比较高的时候,其性能表现不佳。为了解决以上弊端,采用缓存流。缓存流在读取的时候,会一次性读较多的数据到缓存中,以后每一次的读取,都是在缓存中访问,直到缓存中的数据读取完毕,再到硬盘中 读取。缓存流在写入数据的时候,会先把数据写入到缓存区,直到缓存区达到一定的量,才把这些数据,一起写入到硬盘中去。按照这种操作模式,就不会像字节流,字符流那样每写一个字节都访问硬盘,从而减少了IO操作二、使用缓存流
2020-06-20 22:38:30
163
原创 Java IO流读取中文
一、使用FileInputStream 字节流正确读取中文1. 必须了解文本是以哪种编码方式保存字符的2. 使用字节流读取了文本后,再使用对应的编码方式去识别这些数字,得到正确的字符 private static void inputStreamChina() { // TODO Auto-generated method stub File f=new File("D:/BugReport.txt"); try (FileInputStream fis=new FileInputStr
2020-06-20 18:24:06
2557
原创 Java字符输入流与字符输出流
一、使用字符流读取文件FileReader 是Reader子类,以FileReader 为例进行文件读取 private static void readerTest() {// 创建文件对象,写入值ABab File f=new File("D:/BugReport.txt");// 创建基于文件的Reader// FileReader放在try创建,是在jdk7开始,可以自动关闭流 try (FileReader fr=new FileReader(f)){// 创建
2020-06-20 16:27:22
224
原创 Java 字节输入流与字节输出流
一、ASCII码概念所有的数据存放在计算机中都是以数字的形式存放的。 所以字母就需要转换为数字才能够存放。比如A就对应的数字65,a对应的数字97. 不同的字母和符号对应不同的数字,就是一张码表。ASCII是这样的一种码表。 只包含简单的英文字母,符号,数字等等二、以字节流的形式读取文件内容InputStream是字节输入流,同时也是抽象类,只提供方法声明,不提供方法的具体实现。FileInputStream 是InputStream子类,以FileInputStream 为例进行文件读取
2020-06-20 15:59:16
272
原创 Java File的总结与常用方法演示
一、创建File文件对象public static void createFileTest() {// 只是创建了java文件对象,并不等于在d盘确实有NewFile这个文件// 第一种方式 File f1=new File("d:/NewFile");// 输出新建文件绝对路径 System.out.println("f1绝对路径:"+f1.getAbsolutePath()); System.out.println("判断是否存在:"+f1.exists());// 第二种
2020-06-15 23:02:16
93
原创 Java ArrayList与LinkedList区别
1、区别ArrayList 插入,删除数据慢LinkedList, 插入,删除数据快ArrayList是顺序结构,所以定位很快,指哪找哪。 就像电影院位置一样,有了电影票,一下就找到位置了。LinkedList 是链表结构,就像手里的一串佛珠,要找出第99个佛珠,必须得一个一个的数过去,所以定位慢2、插入数据private static void insertData() { List<Integer> l; l = new ArrayList<>();
2020-06-12 00:07:38
94
原创 Java Collections总结与代码演示
一、定义Collections是一个类,容器的工具类,就如同Arrays是数组的工具类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,它提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。二、常用的工具方法1、反转 private static void reverseTest() { List<Integer> list = new ArrayList<>(); for (int i = 0; i < 10; i++) {
2020-06-10 22:02:41
140
原创 Java HashSet的总结与代码演示
一、定义HashSet是Java集合Set的一个实现类,Set是一个接口,其实现类除HashSet之外,还有TreeSet public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable二、构造函数1、默认构造器,可以看出,底层实现其实就是HashMap,HashMap在本人其他博客有总结 public Has
2020-06-09 22:27:28
133
原创 HashMap的总结与代码演示
一、定义HashMap实现了Map接口,继承AbstractMap。其中Map接口定义了键映射到值的规则,而AbstractMap类提供 Map 接口主要方法的实现,以最大限度地减少实现此接口所需的工作,AbstractMap类也已经实现了Map。public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {二、构造函数HashM
2020-06-08 22:47:31
164
原创 Java LinkedList基本用法以及代码演示
一、概括LinkedList与ArrayList一样,LinkedList也实现了List接口,诸如add,remove,contains等等方法,这些方法,已经在自己其他博客ArrayList常用方法中进行总结。除了实现了List接口外,LinkedList还实现了双向链表结构Deque,可以很方便的在头尾插入删除数据。链表:与数组相比较,数组中元素的存储位置是连续的,而链表是不连续的,是通过指针将不连续的节点连起来。二、LinkedList构造方法1. public LinkedList():
2020-06-06 18:43:48
285
原创 集合ArrayList的遍历总结
1、在使用for循环遍历集合public static void main(String[] args) { List<User> soldiers=new ArrayList<User>(); for (int i = 1; i <= 5; i++) { soldiers.add(new User("士兵 "+i)); }// 使用for循环遍历集合 for(int i=0;i<soldiers.size();i++) { System
2020-06-04 22:44:26
146
原创 ArrayList集合的常用方法与演示
1、add方法一种是直接add对象,把对象加入最后面,一种是在指定位置加入private static void addTest() {// 创建一个集合,可以存放User类型 List<User> soldiers=new ArrayList<User>();// 循环往集合中插入对象 for (int i = 1; i <= 5; i++) { soldiers.add(new User("士兵 "+i)); } System.out.pr
2020-06-04 21:42:51
418
原创 java集合List接口与泛型Generic
1、List接口ArrayList是List接口的实现类,实现了List接口的所有方法,平常应用中,会定义List的引用声明,指向ArrayList的实现类,这也是多态的体现。 private static void useListSaveData() { List bus=new ArrayList(); bus.add(new User("小强")); System.out.println(bus); }2、泛型Generic不指定泛型的容器,可以存放任何类型的元素。指定了泛型的
2020-06-02 22:12:41
402
原创 java集合框架与数组的区别
1、使用数组的局限性要存放多个对象可以用数组,但是使用数组有局限性,如声明长度为10的数组,没有使用完,就浪费了,长度超过10,又放不下,如下面代码示例:private static void useArraySaveData() { User arrBus[]=new User[10]; arrBus[0]=new User("小强"); System.out.println(arrBus[0]); arrBus[15]=new User("小林"); System.out.println
2020-06-01 23:51:07
229
1
原创 Vue.js循环语句简单总结
首先引入Vue.js文件一、v-for 循环语句1、准备一个数组var data = [ {name:"盖伦",hp:341}, {name:"提莫",hp:225}, {name:"安妮",hp:427}, {name:"死歌",hp:893} ];2、准备css样式和div标签其中heros是数组名,hero是数组中的元素,index是遍历下标table tr td{border:1px solid
2020-05-17 09:33:28
605
原创 Vue条件语句
首先引入vue.js文件一、v-if1、定义div标签,当v-if条件为true时,显示那条数据,为false不显示切换隐藏显示 默认这一条是看得见的2、创建一个vue对象,管理div标签var ifCon=new Vue({ el: '#div1', data: { show:true }, methods:{ toggle: function(){
2020-05-17 00:14:30
242
原创 Vue监听事件总结
**引入Vue.js文件**如下,根据自己的文件目录引入路径<script type="text/javascript" src="../js/vue.js"></script>1、定义监听事件使用v-on或者@监听事件,如下点击加1<button @click=“countSecond”>点击加2通过{{countNumber}}获取vue中的数据点击了几{{countNumber}}2、新建一个vue对象data属性是对数据的获取,最终将数据显示
2020-05-16 18:44:01
538
原创 Cache实现简单工厂模式
简单工厂模式1、概述简单工厂模式属于创建型模式,由一个工厂对象决定创建哪一种产品类的实例,用户在使用时,只需要知道传入工厂对象的参数,而无需关心创建产品类对象的逻辑。2、结构图**3、cache代码实现实例运算类创建一个抽象方法GetResult,让计算类继承运算类,重写这个方法,进而实现相应的功能Class com.dd.SimpleFactory.Operation Extends %RegisteredObject{ Property numberA As %Decimal [
2020-05-14 13:29:03
196
1
原创 将字符串装成base64
前言Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读第一种使用window的函数,但是不支持IE9function encode(str){ // 对字符串进行编码 var encode = encodeURI(str); // 对编码的字符串转化base64 var base64 = btoa(encode); return base64;}// base64转字符串
2020-05-11 21:21:21
1041
原创 Java基本数据类型对象包装类
1、总结为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作2、8种基本类型与包装类型的对照*byte Byte* short Short* int Integer* long Long* float Float* double Double* char Character* boolean Boolean...
2020-05-10 22:09:49
182
2
原创 Elasticsearch的安装,以及Springboot整合Elasticsearch
*一、下载好elasticsearch并解压我这里用的是elasticsearch-5.6.8,下面是下载地址https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.8.tar.gz1、下载后进行解压2、如果想提供外网访问,修改config文件夹里的elasticsearch.yml文件中network.host为0.0.0.0,并去掉注释3、运行bin目录下的elasticsearch.bat文件,如果出
2020-05-09 23:15:34
269
原创 String类常用方法总结与代码演示
一、String类的特点字符串对象一旦初始化就不会被改变,但可以在字符串缓冲区进行共享。 String str1="abc"; str1="def";` System.out.println("str1="+str1);如上、字符串abc值没有变,只是变量str1的引用地址变了String str1=“abc”;String str2=“abc”;System.out....
2020-05-05 17:15:27
252
原创 springboot开启异步任务
1、在启动类里面使用@EnableAsync注解开启功能,自动扫描@SpringBootApplication@EnableAsync //开启多任务public class XdclassApplication { public static void main(String[] args) throws Exception { SpringApplication.run(Xdcl...
2020-05-05 00:30:20
512
1
原创 Java.sql.SQLException: Unknown system variable transaction_isolation
错误信息如下:ava.sql.SQLException: Unknown system variable ‘transaction_isolation’原因主要是springboot依赖的mysql-connector-java的jar包版本高,而mysql版本低,低版本mysql只识别tx_isolation,不识别’transaction_isolation,如下截图,我的mysql是6....
2020-05-04 16:53:11
8288
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人