- 博客(71)
- 资源 (4)
- 收藏
- 关注
原创 获取注解里面对应的信息
public class Test1 { public static void main(String[] args) { //通过反射获取到对应的注解信息 Class<DemoAction> clazz = DemoAction.class; //判断该DemoAction类是否有@GPRequestMapping注解信息 boolean annotationPresent = clazz.isAnnotationPr.
2020-10-30 20:38:05 321
原创 通过修改idea的workpace.xml的方式来快速打开Run DashBoard窗口
Run DashBoard窗口:在有多个服务之间通信的时候,如果要开启多个服务,需要一个一个的去找启动类,比较麻烦,IDEA提供了Run DashBoard窗口。这样在这里可以开启单个服务,也可以开启多个服务。开启的步骤:1、在自己项目的路径下找到workspace文件:2、在RunDashboard下面添加代码: <component name="RunDashboard"> <option name="ruleStates"> &l
2020-09-10 10:35:26 686
原创 SpringBoot实现热部署
我们在调试项目的时候,如果修改好之后马上重启特别的浪费时间,SpringBoot支持热启动,我们修改之后不用重启也可以生效。步骤:1、在项目的pom.xml里面加入maven坐标:<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools --><dependency> <groupId>org.springframework.boot&
2020-09-10 09:54:39 234
原创 设计模式的七大原则
设计模式的目的:在编写软件的过程中,程序员面临着来之耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式的好处是为了让程序具有如下特点:代码重用性(即:相同功能的代码,不用多次编写) 可读性(即:程序规范性,便于其他程序员的阅读和理解) 可扩展性(即:当需要增加新的功能时,非常的方便) 可靠性(即:我们对程序增加新的功能的时候,对原来的功能没有影响) 可维护性(即:我们转让项目的时候,别人能很快的上手自己的项目) 最终目的是使程序呈现高内聚,低耦合的特性。设计模式的七
2020-08-31 23:33:13 406
原创 设计模式之代理模式
代理模式的基本介绍:代理模式:为一个对象提供一个替身,以控制这个对象的访问。即通过代理对象访问目标对象,这样做的好处是可以在目标对象实现的基础上,增强额外功能的操作,即扩展目标对象的功能。 被代理的对象可以是远程对象,创建开销大的对象或需要安全控制的对象。 代理模式由不同的形式,主要有三种静态代理、动态代理(JDK代理,接口代理)、Cglib代理(可以在内存动态的创建对象,而不需要实现接口,属于动态代理的一种)。 代理模式示意图:静态代理:静态代理在使用时,需要定义接口或者父类,被代理对象(
2020-08-30 21:47:39 129
原创 设计模式之享元模式
需求,一个给A客户做的前台展示的外包项目,客户B看了之后觉得不错耶想给自己公司做一个类似的网址网址,但是有的部分需求不一致,A客户端需要信息已新闻的形式发布,B客户希望以公众号的形式发布需求,但是后台的功能大致一样。需要我们改进改项目,如果我们直接复制A项目来进行更改,更改的内容不算多。更改完毕之后需要部署到同一个服务器,对应的增加了服务器的压力,相同的类实列化对象更多,这样变相的耗费系统的资源。如果我们在一份代码里面更改,增加对于不同的请求路径,发布的时候以不同的域名来发布,这样就可以大大的节省服务器的空
2020-08-30 17:19:00 167 1
原创 设计模式之组合模式
需求:在一个页面展示学校下面的学院,学院下面所有的专业信息。如果我们按时学校->学院->专业这样一层一层的划分,然后分别写出对应的类信息,这样写出来的代码类比较多且大,而且也不能很好的展示学校的新,如果我们把这样结构划分为一棵树结果,学校是根节点,然后一层一层的划分,最下面的专业是叶子节点,这样我们就能很友好的管理树信息。====》组合模式来解决该问题。组合模式:组合模式又叫部分和整体的模式,他创建对象组的树形结构,将对象组合树形结构已整体-部分的层次关系来展示。组合模式依据树形
2020-08-30 16:06:03 113
原创 设计模式之装饰者模式
由咖啡订单项目项目来分析装饰者模式模式的好处:1、单点咖啡,咖啡的种类有黑咖啡,无因咖啡,意大利咖啡,纯咖啡。2、咖啡的调料有多种,有巧克力,牛奶,奶茶等调料。3、我们如果单点咖啡,这样的订单很简单,如果需要加巧克力,则需要咖啡+巧克力,如果另外的订单是咖啡+巧克力+牛奶。4、如果是这样的设计模式,我们的组合模式由多种,这样设计下来我们的类非常大,增加一个咖啡种类就会增加对象的调料类,这样无限制的增加会类保证。装饰者模式:动态的的将新功能附加到对象上。在对象功能扩展方面,它比继承更具
2020-08-30 15:12:02 164
原创 设计模式之桥接模式
通过手机的设计模式来引出桥接模式,现在不同的手机有不用的品牌,但是功能都是类似的,而且手机有不同的样式,比如折叠手机,直立手机,如果我们我们要生产一款直立的华为手机,一款折叠的华为手机,各个品牌和样式相互组合会变成类爆炸。显然这样的设计肯定不友好,代码量非常大而且非常难以维护,我们需要增加一个样式的时候对于的类也需要改变,显然违背了单一职责原则,如果我们用桥接模式可以很友好的解决此问题。桥接模式:将实现和抽象放在两个不同的类层次中,使两个层次可以独立改变,桥接模式是一种结构型设计模式。桥接模式基
2020-08-28 15:29:28 111
原创 设计模式之建造者模式
1、建造者模式又叫生成器模式,是一种对象构建模式,它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构建出不同的表现(属性)的对象。2、建造者模式是一步一步创建一个复杂对象,它允许用户只通过指定复杂对象的类型和内容就可以构建他们,用户不需要知道内部的具体构建细节。构建中的四个角色:Product(产品角色):一个具体的产品对象。 Buider(抽象建造者):创建一个Product对象的各个部件指定的接口/抽象类。 ConcreteBuilder(具体建造者):实现接口,构建
2020-08-28 10:23:04 124
原创 设计模式之原型模式
原型模式:指定创建对象的种类,并且通过拷贝这些原型来创建新的对象,原型模式是一种创建型的设计模式,允许一个对象再创建另外一个可定制的对象,无需知道创建的细节。工作原理:通过一个原型对象传给那个要创建的对象,这个要创建的对象通过请求原型对象拷贝他们自己来实施创建,即对象.clone()。原理图形:原理图结构说明:Prototype:原型类,声明一个克隆自己的接口。ConcretePrototype:具体的原型类,实现一个克隆自己的操作。Client:让一个原型对象来克隆自己,从而创
2020-08-28 09:27:27 101
原创 设计模式之工厂模式
工厂模式就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。1、简单工厂模式属于创建型模式,是工厂模式的一种,简单工厂模式由一个工厂对象创建出哪一种产品的实列,简单工厂模式是工厂模式里面最简单实用的模式。在简单工厂模式里面定义了一个创建对象的类,由这个类来封装实例化对象的行为。我们通过制作手机的代码演示简单工厂模式: 1、定义制作手机规范: /** * 定义制作手机的规范 * @autho..
2020-08-10 17:46:39 176
原创 设计模式之单列模式
单列模式:采用一定的方法保证整个软件系统中,对某个类只能存在一个实列,并且该实列只提供一个取到该对象实例的方法,该方法为静态方法。单列模式常见的几种写法以及其优缺点:1、饿汉式(静态常量) public class SingletonTest1 { public static void main(String[] args) { SingleTonDemo1 instance = SingleTonDemo1.getInstance(); ...
2020-08-10 17:01:48 225
原创 netty对应的TCP粘包和拆包和解决方案
1、TCP是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流的通信是无消息保护边界的2、由于TCP无消息保护边界, 需要在接收端处理消息边界问题,也就是我们所说的粘包、拆包问题, 看一张图2.1、假设客户端分别发送了两个数据
2020-07-29 20:19:54 307
原创 netty编码与解码
1、编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码 ,codec(编解码器) 的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据。2、netty提供的编码器和解码器有: StringEncoder,对字符串数据进行编码 ObjectEncoder,对 Java 对象进行编码 StringDecoder,
2020-07-29 20:11:19 1091
原创 netty简单入门案例
Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。我们在网络编程的时候一般都会使用该框架作为基础框架,下面使用netty来实现简单的群聊系统来认识netty的基本使用方法。服务端: public class GroupChatServer { private int port;//定义端口信息 private GroupChatServer(int port){ this.port = port;
2020-07-29 17:39:12 308
原创 使用nio编写一个简单群聊系统,实现服务器端和客户端的数据通信
使用NIO技术编写一个简单的群聊技术来了解ServerSocketChannel,SocketChannel,Selector,SelectionKey等技术的使用技巧与方法。服务器端的代码:服务器端代码 package com.yu.nio;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.*;import java.util.Iterator;impo
2020-07-03 16:56:27 553 1
原创 NIO通过transferFrom或者transferTo来复制文件
NIO通过transferFrom或者transferTo来复制文件: public static void main(String[] args) throws Exception { //输入管道 FileInputStream fileInputStream = new FileInputStream("E:\\file\\1.jpg"); FileChannel inChannel = fileInputStream.getChannel(); //输出管
2020-06-21 21:38:20 2020
原创 NIO通过FileChannel完成文件复制
nio是bio的升级版本,能更好的完成文件的输入输出功能,本列子通过FileChannel来完成文件的复制: public class NIOFileChannelDemo03 { public static void main(String[] args) throws Exception { //输入管道 File file = new File("E:\\file\\1.jpg"); FileInputStream fileInput
2020-06-21 21:28:52 276
原创 kafka集群安装
Kafka是一个分布式的基于发布/订阅模式的消息队列(MessageQueue),主要应用于大数据实时处理领域。安装步骤很简单,下载-》解压缩-》配置环境变量-》启动。kafka依赖于zookeeper,需要准备安装好zookeeper环境。1、安装包的下载:http://kafka.apache.org/downloads.html。2、解压安装包,解压到/usr/local下面:tar -zxvf kafka_2.11-0.11.0.0.tgz -C /usr/local 解压之...
2020-06-09 20:35:13 186
原创 centos配置固定的ip地址
1、安装好的centos需要给他一个固定的ip地址,不然每次启动之后ip可能会发生改变,通过xsheel连接的时候需要重新去虚拟机里面拿最新的ip地址,很麻烦,所以需要配置一个固定的ip地址。2、进入存入ip地址的目录:vim /etc/sysconfig/network-scripts/ifcfg-eth0,然后开始配置固定的位置 获取网关的方法:配置之后想要立即生效:service network restart // 重启网络服务3、修改主机名称:查看当前主机名称的名字:h..
2020-06-06 23:52:49 3268
原创 数据排序之堆排序
package com.yu.tree; import java.util.Arrays; /** * 堆排序 * @author Administrator * */ public class HeapSortDemo { public static void main(String[] args) { ...
2020-04-01 20:04:38 116
原创 数据排序之堆排序
package com.yu.tree; import java.util.Arrays; /** * 堆排序 * @author Administrator * */ public class HeapSortDemo { public static void main(String[] args) { ...
2020-04-01 20:03:55 146
原创 数据查找之插值查找
package com.yu.search; import java.util.ArrayList; import java.util.List; /** * 插值查找算法 * @author Administrator * */ public class InsertValueSearchDemo { ...
2020-03-24 20:17:49 200
原创 数据查找之二分查找
package com.yu.search; import java.util.ArrayList; import java.util.List; /** * 二分查找算法 * @author Administrator * */ public class BinarySearch { public stati...
2020-03-24 20:14:37 146
原创 快速排序的实现代码
package com.yu.sort; import java.util.Arrays; /** * 快速排序的实现 * @author Administrator * */ public class QuickSortDemo { public static void main(String[] args) {...
2020-03-23 11:48:00 276
原创 实现双向链表的增删改查功能。
实现双向链表的增删改查功能,增加功能分为无序增加和有序增加。 package com.yu.linkedlist; /** * 双向链表增删改查询 * @author Administrator * */ public class DoubleLinkedListDemo { public static void main(St...
2020-03-20 21:55:55 538
原创 堆排序的代码
package com.yu.datastructure.sort;import java.util.Arrays;/*** 堆排序* 将待排序序列构造成一个大顶堆*此时,整个序列的最大值就是堆顶的根节点。*将其与末尾元素进行交换,此时末尾就为最大值。*然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了。* @au...
2019-12-04 11:33:17 139
原创 散列表的实际应用
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。图: 通过题目练习哈希表:题:有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址..),当输入该员工的id时,要求查找到该...
2019-12-01 13:38:57 760
原创 用栈的技术来实现计算器的功能
使用栈实现一个综合的计算器的功能,用户输入想要计算的表达式,然后进行计算,主要用到的技术是栈先进后出的特点。 package com.yu.datastructure.stack; import java.util.ArrayList; import java.util.List; import java.util.Stack; import java.u...
2019-11-15 17:27:02 299
原创 java去除表达式里面的空格
直接上代码,详情在代码里面看: public static void main(String[] args) { String exepression = " 10 * 30 + 4-5+60"; String replaceAllBlank = replaceAllBlank(exepression); System.o...
2019-11-15 15:12:19 142
原创 使用数组实现队列
队列是一种有序列表,可以实现数据或链表来实现,队列遵循先入先出的原则,先存入的数据先取出,后存入的数据后取出。队列的图形:maxSize代表数据的最大容量,front代表数组头部,rear代表数组的尾部。1、下面直接通过代码来实现: public static void main(String[] args) { //操作队列数据 ...
2019-10-24 14:44:48 911
原创 稀疏数组的操作
直接上代码,注释在代码里面。稀疏数组的操作 package com.hera.test; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; /** * 普通数组转稀疏数组并且保存到内...
2019-10-21 14:45:30 127
原创 JAVA里面利用Map去除集合里面重复的数据
public static void main(String[] args) { //map去重 第一种是前端输入很多数据,找出里面重复的数据 //通过map的key是不能有重复值的特性 Map<String,String> dataMap = new HashMap<>(); data...
2019-09-30 09:22:18 14082 2
原创 List的批量处理
有时候我们会把数据封装到list,然后在把数据插入(更新)到数据库,但是数据量过大的时候会报错,这个时候我们会把数据分割进行批量处理。处理代码: // 分配处理 int batchDataSize = 50;// 分批限制条数 Integer size = entrustDetails.size();//entrustDetails是自...
2019-08-23 10:11:27 2149
原创 FastJson的工具类
package com.etc.bank.util;import com.alibaba.fastjson.JSON;import java.lang.reflect.Type;import java.util.Map;/** * json公共方法 */public class JSONUtils { /** * 对象转换为json */ public s...
2019-07-24 15:19:55 155
原创 RestTemplate封装方法
在使用spring的RestTemplate方法远程调用接口的时候需要自己拼接链接,这样封装一大串数据不美观,阅读性也不强,如果封装一个方法,把参数封装在Map集合里面,然后传入url和Map得到自己想要的接口。 @Autowired private RestTemplate restTemplate; public String getForObject(String ...
2019-07-19 15:15:44 3364
原创 JAVA根据条件查询出树结构的数据
需求是根据调度中心的id一层一层的查询出最顶层的数据。表结构有层级关系,parentId:这个地方查询的时候涉及到动态sql,每次查询都需要更改sql的查询信息》server:代码:public List<Function> findByRoleId(String roleId) { List<Function> functio...
2019-06-15 13:13:20 3775
原创 java解析json数据
1、远程调用第三方项目,获取json数据之后进行解析。 第三方数据: 2、直接上代码: package com.hera.test; import java.util.HashMap; import java.util.Map; import org.json.JSONArray; import org.json.JSONObject; ...
2019-06-04 15:55:03 11328 4
原创 dubbo的打包插件Assembly
Assembly可以在linux运行,也可以在windows里面运行,打成包之后独立运行。使用方法:1、在生产者的实现类的pom文件里面添加assembly插件信息。<!-- 指定项目的打包插件信息 --> <build> <plugins> <plugin> ...
2019-05-24 11:25:10 634
maven构造spring+springmvc+mybatisplus的web项目
2019-04-02
MyBatis-Plus代码生成器
2019-04-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人