自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Java 多线程 Synchronized修饰对象

读书时很少做一些要求较高的多线程项目,导致自身对于锁的认识处于非常浅显的程度。在进入职场后也只是简单的给方法加Synchronized关键字,但是随着项目的完善度越来越高,简单的锁住一个方法已经无法满足复杂的业务需求。这次也并非学习特别厉害的技术,只是深度了解一下Synchronized关键字是如何工作的,尤其是锁住一个对象时。

2022-09-28 16:52:29 274 1

原创 使用JAVA连接Azure Web Pub Sub Service做一个简单的MQ Demo

使用 Azure Web PubSub 开发具有实时消息传递的 Web 应用程序,这是一种支持本机和无服务器 WebSocket 的完全托管服务。使用发布-订阅消息模式创建松散耦合、可扩展的应用程序 - 包括聊天、直播和 IoT 仪表板。当 Web PubSub 管理数据和内容流向您的网页和移动应用程序时,开发者可以专注于功能。...

2022-08-24 12:04:27 273

原创 JAVA复杂对象与JSON的转换

1.背景JSON可以用文本格式存储对象,比如前后端交互过程中传输DTO。现在我的需求是接收到的DTO中除了常见属性外,还有较复杂的List,甚至有多层List嵌套。这个字段除了save和retrieve外不做修改,也不会作为查询时的条件,所以为了方便起见,将整个list作为一个json存入数据库,MySQL5.7开始支持这一类型的栏位2.工具我使用的是阿里巴巴的fastjson作为JSON转换的工具3.代码3.1EntityPersonEntity@Data@AllArgsConstruct

2021-08-18 16:49:33 1616

原创 Quartz入门demo

Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵 活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,EJB作业预构 建,JavaMail及其它,支持cron-like表达式等等。Java实现Maven<dependency> <groupId>org.springframework.boot</groupId> <ar

2021-07-28 11:47:48 73

原创 自定义validator

自定义验证器,保证同一个类中的两个属性不同时为空。以Person类为例,用户post时至少需要输入一种姓名,无论是中文名还是英文名@interfacepackage com.skye.utils;import javax.validation.Constraint;import javax.validation.Payload;import java.lang.annotation.*;/** * @author skye */@Target({ElementType.TYPE})@

2021-07-08 14:19:17 1055

原创 Study_CountDownLatch

CountDownLatch是 Java 5 中作为java.util.concurrent包的一部分引入的同步器。通常,我们使用CountDownLatch来阻塞线程,直到其他线程完成它们的任务。简单地说,我们在latch对象中设置一个count,并将latch对象与一些线程相关联。当我们启动这些线程时,它们将被阻塞,直到latch的计数变为零。另一方面,在其他线程中,我们可以控制在什么情况下我们减少count,让被阻塞的线程恢复,例如,当主线程中的某些任务完成时。方法public CountDo

2021-07-07 09:58:12 69

原创 WebClientd的Block和Subscribe

探究WebClient的block和subscribe call有无return的服务的区别Java代码ServerServer1@RequestMapping("/server1") public void server1(){ for (int i = 0; i < 5; i++) { try { Thread.sleep(1000); } catch (InterruptedExcep

2021-07-05 14:56:43 1688

原创 openTCS常用服务及方法

plantModelService创建model,获取model信息等新建一个modelplantModelService.createPlantModel();获取model属性,比如修改时间plantModelService.getModelProperties();获取model名称plantModelService.getModelName();获取model上的元素:点,车和订单等plantModelService.fetchObjects();transportOrderSe

2021-06-18 10:10:47 683

原创 WebClient和RestTemplate

RestTemplate是阻塞性客户端,每个事件都为一个线程,客户端在收到服务器响应前会一直被阻塞WebClient是非阻塞性客户端,每个事件都为一个任务,Spring Reactive框架对任务进行队列处理,仅在收到响应时才执行对应的任务Java实现服务 @GetMapping("/getAll") public Person server(String name) throws InterruptedException { System.out.println("Ente

2021-06-16 11:25:19 1079

原创 Gradle入门学习

Maven和Gradle区别MavenMaven的配置文件是.pom文件。POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示。其中包含项目的基本信息,构建过程,环境信息,依赖信息等Gradle不使用XML文件进行配置,而是使用Groovy进行配置使用compile函数将groupId, artifactId和version用:连接例子Maven<dependencies> <dependency>

2021-06-10 11:53:25 214

原创 ExecutorService

Java提供四种线程池newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool创建一个定长线程池,支持定时及周期性任务执行。newSingleThreadExecutor创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(

2021-06-08 17:43:51 76

原创 Lamda表达式作为方法的参数

当方法的参数是一个函数式接口时,可以使用Lambda表达式进行简化函数式接口函数式接口是只包含一个方法的接口,Java中的lambda无法单独出现,它需要一个函数式接口来盛放,lambda表达式方法体其实就是函数接口的实现Java Demo@SpringBootTestclass StudyLamdaApplicationTests { @Test void contextLoads() { Demo2 demo2 = new Demo2(); d

2021-06-08 16:46:45 802

原创 下班计时器

功能计算距离下班还有多少秒,今天的工作时间已经过去的比例每秒刷新一次代码import java.text.DecimalFormat;import java.text.SimpleDateFormat;import java.util.Date;public class Calculate { public static void main(String[] args) { Calculate calculate = new Calculate();

2021-06-04 14:44:40 386

原创 JAVA学习笔记(keep updating)

1.JAVA运行JDK(Java SE Development Kit),Java标准开发包,它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行时环境,以及常用的Java类库等。JRE( Java Runtime Environment) 、Java运行环境,用于解释执行Java的字节码文件。普通用户而只需要安装 JRE(Java Runtime Environment)来运行 Java 程序。而程序开发者必须安装JDK来编译、调试程序。JVM(Java Virtu

2021-06-02 16:20:24 300

原创 JAVA8-异步任务:CompletableFuture

CompletableFuture异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法。在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需要等待计算结果。但调用者仍需要取线程的计算结果。CompletableFuture实现了CompletionStage接口和Future接口,前者是对后者的一个扩展,增加了异步回调、流式处理、多个Future组合处理的能力,使Java在处理多任务的协同工作时更加顺畅便利。FutureJDK5新增

2021-06-02 15:58:39 261

原创 ROS学习

Robot Operating SystemROS是机器人操作系统(Robot Operating System)的英文缩写。ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。Roscore运行启动 ros 的主程序。它为通道建立了基本架构,允许节点进行通信。每次启动任何 ROS 节点之前,我们都需要运行 roscore。MasterMaster就是ROS的核心,他會有一個list,上面紀錄著有哪些node正在運行,若沒有這個list,node間無法互相溝通NodeNode是ROS

2021-06-02 15:29:14 175

原创 MQTT学习

MQTT一种物联网数据传输协议,构建在TCP之上,采用发布与订阅的模式进行数据交互,发布与订阅是两个独立的连接通道协议格式MQTT协议控制报文的格式包含以下三个部分:固定报头,可变报头和有效载荷固定报头第一个字节的二进制位7-4无符号整数表示控制报文的类型,具体类型对应的值为第一个字节的二进制位3-0包含每个MQTT控制报文类型特定的标志, 控制报文中的标志为必须按照如下表格进行设置,如果设置有问题,则接收者必须断开连接第二个字节表示当前报文剩余部分的字节数,包括可变报头和有效载荷。可变

2021-06-02 15:17:34 346

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除