- 博客(29)
- 收藏
- 关注
原创 API设计规范
PATCH---部分更新(从服务器端更新部分资源) 等这些方式来做,也就是说我们使用RESTful规范后,我们的接口就变成了一个了,要执行增删改查操作的话,我们只需要使用不同的请求动作(http method)方式来做就可以了,然后服务器端返回的数据也可以是相同的,只是我们前端会根据状态码来判断请求成功或失败的状态值来判断。如上我们可以看到,在未使用Restful规范之前,接口形式是不固定的,没有统一的规范,下面我们来看下使用RESTful规范的接口如下,两者之间对比下就可以看到各自的优点了。
2023-02-02 15:34:40 363
原创 Redisson Spring - Unexpected exception while processing command
Redisson Spring - Unexpected exception while processing command
2022-10-24 15:28:21 6278
原创 接口返回数据转化问题
请求外部接口返回结果中获取的data,如果直接用对象进行强转,则运行的时候会报错java.lang.ClassCastException: class java.lang.Objectcannot be cast to class...Response<Map<String,Object>> response = deviceClient.downFeature(deviceFeatureDto);ParkingLotDto parkingLotDto = ...
2022-02-17 16:26:44 694
原创 springboot集成flyway
公有云部署项目之外,如果需要频繁的对项目进行本地化部署,每次都手动创建数据库和表,会很影响项目部署时间,对于不熟悉项目的技术人员部署更是难上加难,引入Flyway 这个数据库版本管理工具,可以支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里;不仅支持Command Line和java api ,也支持Build构建工具和Spring boot,也可以在分布式环境下能够安全可靠安全地升级数据库,同时也支持失败恢复。而且在后续开发项目的时候经常会更新数据库...
2021-08-25 11:20:42 1402
原创 linux kafka常用命令
启动:bin/zookeeper-server-start.sh config/zookeeper.properties创建topic: kafka版本 < 2.2:bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test kafka版本 >= 2.2:bin/kafka-topics.sh --create --bo...
2021-01-15 11:32:31 1763 1
原创 Connection pool shut down http请求异常关闭
本人在项目运用中写了一个数据推送的组件,需要多线程频繁调用远程接口进行传输数据,远程请求通过HttpClient 使用CloseableHttpClient 发起连接后,使用CloseableHttpResponse 接受返回结果,一开始每次请求耗时时间都比较长,因此引入了httpClient连接池。 为什么要使用连接池:1、降低延迟:如果不采用连接池,每次连接发起Http请求的时候都会重新建立TCP连接(经历3次握手),用完就会关闭连接(4次挥手),如果采用连接池则减少了这部分...
2021-01-11 16:11:40 24488
原创 SpringCloud feign原理
Feign原理简述启动时,程序会进行包扫描,扫描所有包下所有@FeignClient注解的类,并将这些类注入到spring的IOC容器中。当定义的Feign中的接口被调用时,通过JDK的动态代理来生成RequestTemplate。 RequestTemplate中包含请求的所有信息,如请求参数,请求URL等。 RequestTemplate声明Request,然后将Request交给cl...
2020-03-31 20:00:12 194
原创 dubbo分布式搭建三:客户端
同样,先来贴一下consumer的目录结构1.控制类 StudentController//springMVC是映射路径通过requestMapping配置@RequestMapping("/studentController")@Controllerpublic class StudentController { @Autowired private Stu...
2019-01-18 17:23:38 138
原创 dubbo分布式搭建一模块初建
工作中上个项目用到了分布式,但是在开发过程中只是简单的注册调用,没有深入一点的理解,趁着项目结束,想着自己搭建一个简单的分布式框架试试。为了拾起好久没用过的mybatis,所以我打算在spring+springMVC+mybatis的项目框架整成分布式。那么,首先我们先用maven来搭建一个分模块的项目。SSM项目结构实现分布式SSM项目结构,整体项目结构如下tes...
2019-01-18 16:39:24 142
原创 dubbo分布式搭建二:业务逻辑层
在这章讲下api层和service层这是test-api的项目结构StudentMapper接口public interface StudentMapper { List<Student> listStudent();}StudentMapper.xml<?xml version="1.0" encoding="UTF-8"?>&...
2019-01-09 17:58:02 342
原创 BlockingQueue
昨天研究了下quartz定时任务,在看xml的时候发现下面还配置了邮件的定时发送 <!--++++++++++++++++++++定时邮件发送++++++++++++++++++++++++++--> <bean id="emailService" class="com.***.usercenter.service.queue.EmailQueueSe...
2018-10-17 20:07:45 215
原创 Quartz的使用
挺闲,就研究了下项目,看到个quartz,之前是没怎么接触过的,就想着研究一下,上网查了点资料,总结一下以便记忆。 Quartz主要是一个任务调度框架,设定特定的时间去触发任务。 看了下,在我们项目中Quartz是通过xml文件配置的。 <!--++++++++++++++++++++++++定时执行生成索引任务实体++++++++++++++...
2018-10-16 20:04:56 162
转载 java多线程、线程池及Spring配置线程池详解
1、java中为什么要使用多线程使用多线程,可以把一些大任务分解成多个小任务来执行,多个小任务之间互不影像,同时进行,这样,充分利用了cpu资源。线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。2、java中简单的实现多线程的方式继承Thread类,重写run方法;class MyTread extends Thread...
2018-04-10 14:40:09 1429
原创 实现第一次打开页面右下角弹出消息
在初始化页面的时候弹出消息框,这和后台消息推送是不一样的,只是在加载页面的时候去查询一些数据然后通过弹出框的形式来显示:以达到提示用户注意目的!首先要下载jquery.messager.js插件,引入js<scripttype="text/javascript"src="<%=request.getContextPath()%>/javascript/jquery-1.8.2.j...
2018-04-08 14:11:00 2716
转载 windows系统通过虚拟机安装linux
最近想学linux,网上看了一些在windows系统上装linux的方法,这个应该最适合我。转自 http://blog.csdn.net/wwccgogo/article/details/55670423?locationNum=11&fps=1本文所用资料下载地址为: 链接:http://pan.baidu.com/s/1eSkjKkU 密码:x8eg一、前言前两天从学长那里要来了下学...
2018-03-22 13:20:09 10762 2
转载 java内存区域理解
首先 你要搞清楚 堆和栈 是虚拟出来的概念 他们在内存中都只是一块区域,只是他们的存取规则被人为的限制了,一般来说 把类似指针的地址数据放在同一块内存区域这块区域遵守栈的存取规则我们就称之为栈 然后把主要的数据放在同一块内存区域并遵守堆的存取规则 我们称之为堆 其实他们物理上都是一样的东西 只是我们附加上了一些概念 最后之所以这么做 是为了优化存取速度我说的比较通俗点吧,栈内存
2017-07-18 14:17:04 459
转载 Java 并发编程:volatile的使用及其原理
一、volatile的作用 在《Java并发编程:核心理论》一文中,我们已经提到过可见性、有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果对Synchronized原理有了解的话,应该知道Synchronized是一个比较重量级的操作,对系统的性能有比较大的影响,所以,如果有其他解决方案,我们通常都避免使用Synchronized来解决问题。
2017-07-13 16:07:44 186
转载 Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
一、线程的状态 Java中线程中状态可分为五种:New(新建状态),Runnable(就绪状态),Running(运行状态),Blocked(阻塞状态),Dead(死亡状态)。 New:新建状态,当线程创建完成时为新建状态,即new Thread(...),还没有调用start方法时,线程处于新建状态。 Runnable:就绪状态,当调用线程的的start方法后,线程进入就绪状
2017-07-13 16:06:52 224
转载 Java并发编程:Synchronized底层优化(偏向锁、轻量级锁)
一、重量级锁 上篇文章中向大家介绍了Synchronized的用法及其实现的原理。现在我们应该知道,Synchronized是通过对象内部的一个叫做监视器锁(monitor)来实现的。但是监视器锁本质又是依赖于底层的操作系统的Mutex Lock来实现的。而操作系统实现线程之间的切换这就需要从用户态转换到核心态,这个成本非常高,状态之间的转换需要相对比较长的时间,这就是为什么Synchron
2017-07-13 16:06:03 187
转载 Java并发编程:Synchronized及其实现原理
一、Synchronized的基本使用 Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题。从语法上讲,Synchronized总共有三种用法: (1)修饰普通方法 (2)修饰静态方法 (3)修饰代码块
2017-07-13 16:05:16 209
转载 Java 并发编程:核心理论
并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰、思维缜密,这样才能写出高效、安全、可靠的多线程并发程序。本系列会从线程间协调的方式(wait、notify、notifyAll)、Synchronized及Volatile的本质入手,详细解释JDK为我们提供的每种并发工具和底层实现机制。在此基础上,我们会进一
2017-07-13 16:04:06 236
转载 面试摘要
原文链接:https://user.qzone.qq.com/2489169565/blog/14924893431. 面向对象的特征有哪些方面?抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继
2017-04-24 16:16:30 396
转载 Integer值和int值的比较
所谓装箱,就是把基本类型用它们相对应的引用类型包起来,使它们可以具有对象的特质,如我们可以把int型包装成Integer类的对象,或者把double包装成Double,等等。 所谓拆箱,就是跟装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为值类型的数据 javaSE5.0后提供了自动装箱与拆箱的功能,此功能事实上是编译器来帮您的忙,编译器在编译时期依您所编写
2017-02-28 16:15:19 2441
转载 java数据类型,hibernate数据类型,标准sql数据类型之间的对应表
Hibernate API简介 其接口分为以下几类: l 提供访问数据库的操作的接口; l 用于配置Hibernate的接口; l 回调接口 l 扩展Hibernate的功能的接口。 这些接口大多数位于net
2016-12-22 15:08:08 309
原创 增强for循环不能给集合或者数组赋值
使用foreach循环遍历数组元素无须获得数组长度,也无须根据索引来访问数组元素。foreach循环与普通循环不同的是,它无须循环条件,无须循环迭代语句,自动循环数组中的每个元素,当所有元素都循环一遍后, 自动结束。 当使用foreach循环来迭代输出数组元素或集合元素时,通常不要对循环变量进行复制,虽然这种赋值在语法上是允许的,但没有太大的实际意义,而且极容易引起错误。
2016-11-29 15:32:43 5253
转载 jdbcTemplate的简单使用
让测试个新项目,用到了jdbcTemplate,新手不懂,就上百度翻了翻。JdbcTemplate主要提供以下五类方法:execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;query方法及
2016-11-25 14:14:18 377
原创 用户变量和系统变量的区别
在我们安装了jdk之后,还无法编译和运行java(通过在运行菜单cmd中输入java和javac命令可以测试),这是因为还没有设置环境变量。 windows操作系统根据Path环境变量查找命令,如果能找到,则执行该命令,否则会出现“xxx不是内部或外部命令,也不是可运行的程序或批处理文件”。而Linux操作系统则根据PATH环境变量来查找命令。PATH环境变量的值也是一系列路径。其中
2016-11-25 09:53:11 16430 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人