- 博客(45)
- 收藏
- 关注
原创 <事件驱动>基于EventBus的工业自动化软件Ⅰ
文章目录1. 引言1.1 事件本质1.2 发布/订阅模式2. 实现2.1 反射版本实现1. 引言事件总线是对发布-订阅模式的一种实现。它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的。1.1 事件本质当使用 WPF 做 UI 设计的时候,从 Toolbox 拖入一个 Button,双击它,VS会自动生成如下代码: private void Button_Click(object sender, RoutedEventArgs e)
2022-04-09 23:19:33 1196
原创 <每日一题 / 每日刷题>LeetCode题目汇总Ⅳ
文章目录3/4/20221. 子数组范围和3/4/20221. 子数组范围和 public long subArrayRanges(int[] nums) { long res = 0; for (int i = 0; i < nums.length; i++) { int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; fo
2022-03-04 11:11:10 827
原创 <每日一题 / 每日刷题>LeetCode题目汇总Ⅲ
<每日一题 / 每日刷题>LeetCode题目汇总Ⅰ<每日一题 / 每日刷题>LeetCode题目汇总Ⅱ三月份有拉赫玛尼诺夫陪你刷题文章目录2021-03-141.单词搜索2.全排列 II2021-03-141.单词搜索 private int m, n; public boolean exist(char[][] board, String word) { m = board.length; n = board[0].length;
2021-03-14 20:50:19 1684
原创 <物联网>emqx服务器关闭匿名认证并开启ClientId认证
文章目录一、前言二、知识储备三、设置认证1.开启ClientId认证2.关闭匿名认证3.其他认证方式闲谈一、前言EMQX服务器默认情况是允许任意客户端接入的(只要获得服务器IP地址和端口),这也方便开发人员测试。但根据实际需求或者在生产环境中,只允许认证的终端接入,防止一些其他终端恶意接入破坏系统。二、知识储备身份认证是大多数应用的重要组成部分,MQTT 协议支持用户名密码认证,启用身份认证能有效阻止非法客户端的连接。EMQ X 中的认证指的是当一个客户端连接到 EMQ X 的时候,通过服务器端
2021-01-30 01:07:52 2957 4
原创 <物联网>SpringBoot后台客户端获取MQTT消息并保存到数据库(EMQ X Rule Engine规则引擎)
文章目录前言0.事件的上下文信息a.消息发布b.终端连接成功c.终端连接断开1.消息入库a.payload消息入库b.在线状态记录前言当我们接收到了客户端/终端设备发来的信息,一般都需要作相应处理然后存到数据库,再按需在前端页面展示。当然也是可以直接通过WebSocket在前端展示的。那么,怎么把接收到的消息保存到数据库呢?有好几种方案。购买EMQ X Enterprise,省心省力,减少开发难度。在java后台搭建客户端,这样可以在java后台订阅和发布报文,但在非controller层保存数
2021-01-29 16:17:58 3494 1
原创 <物联网>mqtt.js使用
服务端收到了硬件采集的信息,那可以发给后台,同时也可以发回前端。这里讲讲前端的:mqtt.js新建一个目录mqttdemo。然后在命令行打开:接着在项目中引入node_modules\mqtt\dist目录下的mqtt.min.js文件。浏览器打开,直接在控制台调试:连接完看到101状态码,即连接成功。测试发布消息。后台客户端收到了前端客户端发来的消息(当然这是通过服务端转发的)。前端客户端也能收到mqttfx客户端发来的消息。完成测试。注意一点是我们开发人员最好还是用谷歌
2021-01-28 20:56:32 1091
原创 <物联网>MQTT协议学习笔记
MQTT Version 3.1.11.MQTT(Message Queuing Telemetry Transport)MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是受限的环境如机器与机器的通信(M2M)以及物联网环境(IOT)。MQTT协议是一种很轻的通讯协议。与HTTP之类的协议相比,MQTT在通过网络传输数据时表现出众。另一个重要特点是易于在客户端实现。因此,MQTT成为了当今
2021-01-27 17:32:10 1734 1
原创 <IO流>复制文件或文件夹(包括子目录)
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class CopyTest { public static void main(String[] args) { fileCopy("E:\\IO", "E:\\IO2"); } public static void file
2021-01-21 16:02:38 175
原创 <项目记录Ⅰ>jQuery网格插件——jqGrid的使用
OSCHINAjqGrid demos这是我第一次写js代码。一开始不知道怎么下手,看了js、jquery有关的书和参考别人的代码后就大概知道这个开发流程了。我觉得看书比看视频好,这套系列的书我觉得挺适合初学者的。这里简单记录一下,也不整理了。文章目录1.列表页2.详情页3.预览页1.列表页<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtm
2021-01-21 11:23:12 432
原创 <若依开源框架>使用记录
若依官方文档有不会的多看官方文档。1.建表注意:字段注释和表注释都得写上。2.导入运行项目,点击代码生成。导入我们刚才建的表。3.配置点击编辑。基本信息可以保持不变。字段信息一般会改改某些字段的插入编辑列表查询功能,还有查询方式不少都要模糊Like查询。显示类型改为下拉框的话,选上右侧的字典类型。生成信息按需要改包路径和模块名,选上级菜单。等下生成的时候会在这个菜单下生成新菜单。点保存。4.代码生成点击生成代码,然后下载压缩包后解压,得到这些。把main直接复制进
2021-01-20 15:53:13 1317
原创 <网络编程Ⅰ>Socket通信
文章目录1.基于TCP的Socket通信1.1 客户端向服务端传递字符串1.2 服务端向客户端传递字符串1.3 实现服务端与客户端的连续多次的长连接通信1.4 使用Socket传递JPG图片文件1.5 结合多线程Thread实现通信1.6 服务端与客户端互传对象以及I/O
2021-01-19 14:31:26 245
原创 <每日一题 / 每日刷题>LeetCode题目汇总Ⅰ
今天在公司和同事聊起了算法题,首先感到惊讶的是公司里还有每天刷题的人,然后我和他交流了几道链表题的解法,感觉很愉快。我想起了我真正接触到leetcode的那一天起,就迷上了解题,每天都抽出很多时间来学习数据结构与算法并且刷题。然而,后面要准备很多面试的知识,就停止了刷题……刷题的那段时光无疑是快乐的,那时候每天都能学到很多的新知识,专心刷题,进入专注状态,没有分心于简历和面试什么的。看到同事刷了两百多道题,我突然又想重新开始刷题,至少每天一道。文章目录2020-12-161.单词规律(每日一题)
2020-12-16 23:08:01 1312
原创 <面试/笔试问题>汇总
这里不会说原题,只是补充对应知识点。1.Java跨平台性我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件。Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。而这个过程中,我们编写的Java程序没有做任何改变,仅仅是通过JVM这一”中间层“,就能在不同平台上运行,真正实现了”一次编译,到处运行“的目的。JVM是一个”桥梁“,是一个”中间件“,是实现跨平台的关键,J
2020-11-24 16:45:04 907
原创 <运行错误/项目遇坑/配置问题/意外故障等>汇总
今后遇到的小问题会一直在这篇文章更新,方便回来查找。1.idea2020.2卡死在导入maven项目法1:(失败)移除项目下 .mvn/maven-wrapper.properties 文件,重启IDEA。法2:(成功)修改hosts文件,目录在C:\Windows\System32\drivers\etc,把activate那一行注释掉,然后添加127.0.0.1 localhost...
2020-11-16 21:57:30 433
原创 <Spring/SpringBoot实战>学习总结
Spring实战 第5版-源码获取现在在看这本书,虽然评价不是很高,但我觉得还是很适合我这种入门者的。之前写过六七个Spring Boot和Spring的Demo小项目,可那只是抄抄改改别人的代码而已,没有深入理解。 ????我现在的心情还是挺兴奋的,因为我知道Spring的功能很强大,学起来是蛮有成就感的。第1章 Spring起步应用程序都是由很多组件组成的,当应用程序运行时,需要以某种方式创建并引入这些组件。Spring的核心是提供了一个容器(container),称为Spring应用上
2020-11-16 20:50:50 714
原创 <Git>学习笔记
四个很好的学习git网站:git - 简明指南图解GitGit教程-廖雪峰Learn Git Branching.git不算工作区,而是Git的版本库(Repository)。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。readme.txt被修改了,而LICENSE还从来没有被添加过,所以它的状态是Untracked。两次git ad
2020-11-16 00:47:26 440
原创 <SQL语句练习>LeetCode题目汇总 + 文学数据库的实践
1.组合两个表数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 在使用left jion时,on和where条件的区别如下:1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。代码:# Write your MySQL query statement
2020-11-15 00:38:18 709
原创 <数据结构反转/翻转/旋转问题>LeetCode题目汇总
谈论反转/翻转/旋转问题(以下统称旋转)是很有意义的,考验对数据结构的熟悉程度。这也是面试会问到的热门问题,因为它一般会有好几种解决方法。如果之前没有思考过,那么容易在面试的时候想到好几种思路却又实现不了。一、数组1.旋转数组思路1:冒泡法很好理解,其实就是所有元素依次向后移动一位,如果是末尾元素,就移至首位。移动k轮即可。 public void rotate(int[] nums, int k) { int n = nums.length; k %= n
2020-11-14 16:09:42 780
原创 <LRU算法>原理及Java实现
LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。Java实现:(双向链表+HashMap)import java.util.*;/** * Created on 2020/11/12 0012. * * @author lsz */public.
2020-11-13 16:03:48 221
原创 <自由之路>LeetCode每日一题(DFS + 记忆化搜索)
今天在写二叉树路径问题的博客,突然发现每日一题的题目是<自由之路>,一串熟悉的名字,而当时我耳机里播放着的正是Rimsky的<天方夜谭>。巧合的正是:游戏<辐射4>里的一个有趣且烦人的任务叫<自由之路>,而游戏里的古典音乐电台总是会播着Rimsky这首奇妙宏伟的音乐。我不是迷信的人,但我会在乎这些偶合会聚在一起时的反应,让我想到了很多:玩辐射4的快乐、3月份在家里沉迷俄罗斯乐派各种浪漫作品的时光……当然,这道题本质上也是一道最短路径问题,所以为了它写一份博
2020-11-12 00:20:58 243
原创 <二叉树路径问题>LeetCode题目汇总
深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。1.二叉树的最大深度这道题是根基。多写点方案,从不同角度来理解递归总是有好处的。 public int maxDepth(TreeNode root) { int depth = 0; return dfs(root, depth); } private int dfs(TreeNode ro.
2020-11-10 18:22:59 567
原创 <位运算>LeetCode题目汇总
1.位1的个数191.位1的个数法1:String法 public int hammingWeight(int n) { int ret = 0; String str = Integer.toBinaryString(n); for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == '1') { ret++;
2020-11-10 13:53:47 782
原创 <多线程>LeetCode题目汇总
1.按序打印1114.按序打印法1:CountDownLatch用来控制一个或者多个线程等待多个线程。 维护了一个计数器 cnt,每次调用 countDown() 方法会让计数器的值减 1,减到 0 的时候,那些因为调用 await()方法而在等待的线程就会被唤醒。 CountDownLatch stage1 = new CountDownLatch(1); CountDownLatch stage2 = new CountDownLatch(1); publi
2020-11-07 00:26:24 295
原创 <Java核心技术第10版>读书笔记
第3章case标签可以是:● 类型为char、byte、short或int的常量表达式。● 枚举常量。● 从Java SE 7开始,case标签还可以是字符串字面量。当在switch语句中使用枚举常量时,不必在每个标签中指明枚举名,可以由switch的表达式值确定。每一个Java应用程序都有一个带Stringarg[]参数的main方法。这个参数表明main方法将接收一个字符串数组,也就是命令行参数。第4章类之间的关系:在类之间,最常见的关系有● 依赖(“uses-a”)● 聚合
2020-11-06 13:52:39 152 1
原创 <排序>算法笔记(LeetCode75.颜色分类,88.合并两个有序数组)
文章目录1.冒泡排序2.选择排序3.插入排序4.希尔排序5.归并排序6.快速排序面试问了很多问题都不会,其实那些问题我都有看过,都是一些经典问题,那为什么答不出来呢?因为我只是看过,没有深入理解,没有把它们变成我脑子里的东西。要做到高效率理解所有的要点,就要系统学习。碎片化学习虽然时间耗时少,但打的根基不扎实。面试具体问了快速排序,尴尬的是快速排序我基本都忘了,回顾那时候,就用了半天看那些排序算法,照着别人的代码敲了一遍,这怎么能掌握呢?这里有个有趣的可视化视频,对排序算法的运行过程不清楚的话可以看一
2020-11-04 13:08:33 217
原创 <动态规划>算法笔记
文章目录1.爬楼梯2.买卖股票的最佳时机3.买卖股票的最佳时机 II4.最大子序和5.打家劫舍1.爬楼梯70.爬楼梯转移方程:f(x)=f(x−1)+f(x−2)边界条件:f(0) = 1,f(1) = 1 public int climbStairs(int n) { int[] dp = new int[n+1]; dp[0] = 1; dp[1] = 1; for(int i = 2;i < n + 1; i++
2020-11-03 23:40:44 103
原创 力扣LeetBook<哈希表>学习笔记
哈希表哈希表是一种使用哈希函数组织数据,以支持快速插入和搜索的数据结构。本文目录一、概述二、设计哈希表1.哈希表的原理2.设计哈希表的关键3.设计哈希集合4.复杂度分析 - 哈希表三、实际应用 - 哈希集合1.哈希集 - 用法2.使用哈希集查重3.存在重复元素4.只出现一次的数字5.两个数组的交集6.快乐数四、实际应用 - 哈希映射1.哈希映射 - 用法2.场景Ⅰ - 提供更多信息3.两数之和4.同构字符串5.两个列表的最小索引总和6.场景Ⅱ - 按键聚合7.字符串中的第一个唯一字符8.两个数组的交
2020-11-03 15:31:50 649
原创 力扣LeetBook<二叉树>学习笔记
二叉树文章目录概述树的遍历1.二叉树的前序遍历2.二叉树的中序遍历3.二叉树的后序遍历4.二叉树的层序遍历运用递归解决问题1.二叉树的最大深度2.对称二叉树3.路径总和总结1.从中序和后序遍历序列构造二叉树2.从前序和中序遍历序列构造二叉树3.填充每个节点的下一个右侧节点指针4.填充每个节点的下一个右侧节点指针Ⅱ5.二叉树的最近公共祖先6.二叉树的序列化和反序列化概述从图的观点:树是一个拥有N个结点和N-1条边的有向无环图。二叉树:每个节点最多有两个子树。树的遍历前序:根-左-右中序:左-根
2020-10-30 22:24:14 768
原创 力扣LeetBook<队列&栈>学习笔记
队列 & 栈文章目录一、概述二、队列:先入先出的数据结构1.先入先出的数据结构三、队列和广度优先搜索BFS四、栈:后入先出的数据结构五、栈和深度优先搜索六、小结一、概述在数组中,可以通过索引访问随机元素。但是,在某些情况下,可能需要限制处理的顺序。这本LeetBook将介绍两种不同的处理顺序,先入先出和后入先出;以及两个相应的线性数据结构:队列和栈。我们需要:了解FIFO和LIFO处理顺序的原理实现这两个数据结构熟悉内置的队列和栈结构解决基本的队列相关问题,尤其是BFS解决基本
2020-10-29 15:11:06 875 1
原创 力扣LeetBook<链表>学习笔记
一、概述与数组类似,链表也是一种线性数据结构。下面是单链表的例子:链表中的每个元素实际上是一个单独的对象,而所有对象都通过每个元素中的引用字段链接在一起。链表有两种类型:单链表和双链表。下面是双链表的例子:二、单链表单链表中的每个结点不仅包含值,还包含链接到下一个结点的引用字段。通过这种方式,单链表将所有结点按顺序组织起来。结点结构单链表中节点的典型定义:// Definition for singly-linked list.public class SinglyListNode
2020-10-27 09:29:27 1195
原创 Windows Terminal + Ubantu 20.04 LTS 安装
参考:Windows给力!可以扔掉Linux虚拟机了!sudo apt-get update
2020-10-25 12:31:06 264
原创 力扣LeetBook<数组与字符串>学习笔记
本文目录LeetBook地址一、数组简介1、集合、列表和数组1.1、集合1.2、列表1.3、数组2、数组的操作2.1、读取元素2.2、查找元素2.3、插入元素2.4、删除元素3、例题3.1、寻找数组的中心索引3.2、搜索插入位置3.3、合并区间总结LeetBook地址数组和字符串一、数组简介1、集合、列表和数组数组是数据结构中的基本模块之一。因为字符串是由字符数组形成的,所以二者是相似的。大多数面试问题都属于这个范畴。1.1、集合集合一般被定义为:由一个或多个确定的元素所构成的整体。集
2020-10-22 22:36:45 1836
转载 Java初级程序员需要知道的基本Java代码规范
1.【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:1) 左大括号前不换行。2) 左大括号后换行。3) 右大括号前换行。4) 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。2.【强制】 左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格。详见第 5 条下方正例提示。反例:if (空格 a == b 空格)3.【强制】if/for/while/switch/do 等保留字与括号之间都必须加空格。4.【
2020-10-22 12:22:46 253
原创 String类总结/StringBuffer/StringBuilder
本文目录@[TOC](本文目录)方法1.char charAt(int index)2.boolean equals(Object obj)3.boolean equalsIgonoreCase(String string)4.int compareTo(String string)5.int compareToIgnoreCase(String string)6.boolean startsWith(String prefix,int offset)7.boolean startsWith(String
2020-10-20 18:28:46 1344
原创 <2020-09-21自动化转Java开发>从写博客这件事聊起
一、最近写了好几篇博客,发现挺有意思的,听着喜欢的古典音乐敲下属于自己的文字,尽管我创作的不是文学艺术,但也算自己的技术思索,或许还能对别人有一点帮助呢。但写博客要用好多时间啊,比如一下午能刷好多道算法题,但如果为这些题目再写总结的话,估计会刷少一半的题目。还剩四个月就春招了,后面还有一堆东西没学,一向喜欢高效率学习的我,在考虑究竟要不要坚持下去了。二、回想大一下学期,平常上实验课的时候经过别人工作室,看到学长们对着两三个横竖摆放的显示屏敲代码,五颜六色的代码在闪烁不停,似乎弥散着一股浪漫的气息。
2020-10-18 20:38:42 268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人