自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

bobozai86的博客

生活与技术

  • 博客(634)
  • 资源 (5)
  • 问答 (6)
  • 收藏
  • 关注

转载 Centos防火墙开放端口

首先查看下服务器上开放的端口:# firewall-cmd --zone=public --list-ports5902/tcp 5903/tcp 5901/tcp 5900/tcp 10191/tcp可以看到确实没有开放我绑定的9706端口,于是将该端口加入到开放端口中:# firewall-cmd --zone=public --add-port=9706/tcp --permanentsuccess# firewall-cmd --reloadsuccess再来看一下,

2022-04-23 21:20:50 5163

转载 ThingsBoard单体架构的项目构建逻辑

ThingsBoard的项目用一个工程实现了单体和微服务两种架构,能做到重用大量的代码同时又具有横向扩展能力。而本文研究的重点是:ThingsBoard单体架构的应用是怎么构建打包出来的?1. 工程构建的交付物首先了解一下工程的结构,通过tree命令可以查看项目结构:tree -I "node_modules|target|src|pom.xml" -P "pom.xml" ./thingsboard/ > tree.txt对一些与分析无关的子目录再手工删除一下,大致看了一下每个

2022-04-15 22:35:23 3420 2

转载 modbus tcp通讯modbus4j使用说明

ava编程中,使用modbus4j实现Java中的modbus协议通讯modbus4j实现了Java与modbus协议的以下几种通讯方式:modbus TCP/IP通讯modubs UDP/IP通讯modbus RTU/IP通讯Java读取工具类package com.leftso.project.demo.modbus4j; import com.serotonin.modbus4j.BatchRead;import com.serotonin.modbus4j.BatchR

2022-04-10 21:57:30 4177

转载 modbus slave和modbus poll使用说明

modbus slave和modbus poll使用说明1.使用环境:win7/win10 32/64位系统Virtual Serial Port Driver 9.0 虚拟com端口工具2.说明:最近项目开发使用到了modbus协议,由于刚接触这个协议,在使用第三方工具进行调试的时候使用到了modbus poll和modbus slave工具,以下是简单的使用记录,希望以后对需要者有所帮助。3.modbus poll和modbus slave是一款实用的modbus开发和调试工具,可...

2022-04-10 17:02:49 1922

转载 JAVA Future类详解

1. Future的应用场景 在并发编程中,我们经常用到非阻塞的模型,在之前的多线程的三种实现中,不管是继承thread类还是实现runnable接口,都无法保证获取到之前的执行结果。通过实现Callback接口,并用Future可以来接收多线程的执行结果。Future表示一个可能还没有完成的异步任务的结果,针对这个结果可以添加Callback以便在任务执行成功或失败后作出相应的操作。 举个例子:比如去吃早点时,点了包子和凉菜,包子需要等3分钟,凉菜只需1分钟,如果...

2022-04-05 21:53:03 30681 2

转载 一文了解JPA、Hibernate、Spring Data JPA之间的爱恨情仇

前言 我们都知道Java 持久层框架访问数据库的方式大致分为两种。一种以 SQL 核心,封装一定程度的 JDBC 操作,比如: MyBatis。另一种是以 Java 实体类为核心,将实体类的和数据库表之间建立映射关系,也就是我们说的ORM框架,如:Hibernate、Spring Data JPA。今天咱们就先来了解一下什么是Spring Data JPA?JPA是啥 在开始学习Spring Data JPA之前我们首先还是要先了解下什么是JPA,因为Spring Da...

2022-04-05 21:17:07 506

转载 linux五种IO模型

为了更好的理解五种IO模型,我们先来说一下几个概念:同步,异步,阻塞和非阻塞。同步和异步  这两个概念与消息的通知机制有关。同步  所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。比如,调用readfrom系统调用时,必须等待IO操作完成才返回。异步  异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。比如:调用aio_read系统调用时,不必等IO操作完成就直接返回,调用

2022-03-27 21:13:13 4143

转载 quartz.properties配置文件详解

我们通常是通过quartz.properties属性配置文件(默认情况下均使用该文件)结合StdSchedulerFactory来使用Quartz的。StdSchedulerFactory会加载属性配置文件并实例化一个Scheduler。默认情况下,Quartz会加载classpath下的”quartz.properties”文件作为配置属性,如果找不到则会使用quartz框架自己jar下org/quartz包底下的”quartz.properties”文件。当然你也可以指定”org.quartz...

2022-03-27 17:19:10 5936 1

转载 netty源码之ByteBuf详解

一、背景简介ByteBuf,顾名思义,就是字节缓冲区,是Netty中非常重要的一个组件。熟悉jdk NIO的同学应该知道ByteBuffer,正是因为jdk原生ByteBuffer使用比较复杂,某些场景下性能不是太好,netty开发团队重新设计了ByteBuf用以替代原生ByteBuffer。二、ByteBuf和ByteBuffer对比下面用图示来展示ByteBuf和ByteBuffer工作原理:①、ByteBufferByteBuffer依靠flip()来切换模式,在读模式下..

2022-03-23 23:06:49 9291

转载 Socket缓冲区

一、什么是socket缓冲区编程的时候,如果要跟某个IP建立连接,我们需要调用操作系统提供的socket API。socket在操作系统层面,可以理解为一个文件。我们可以对这个文件进行一些方法操作。用listen方法,可以让程序作为服务器监听其他客户端的连接。 用connect,可以作为客户端连接服务器。 用send或write可以发送数据,recv或read可以接收数据。在建立好连接之后,这个socket文件就像是远端机器的"代理人"一样。比如,如果我们想给远端服务发点什...

2022-03-23 22:33:12 4920 2

转载 怎样去理解Linux用户态和内核态?

在Linux技术讨论中经常会用户态和内核态术语脱口而出,可你们想过吗?用户态和内核态代表是什么?本片文章,就来谈一谈这个话题。我们先来看一张Linux整体架构图。从图上我们可以看出来通过系统调用将Linux整个体系分为用户态和内核态(或者说内核空间和用户空间)。那内核态到底是什么呢?其实从本质上说就是我们所说的内核,它是一种特殊的软件程序,特殊在哪儿呢?控制计算机的硬件资源,例如协调CPU资源,分配内存资源,并且提供稳定的环境供应用程序运行。用户态就是提供应用程序运行的空间,为了使应用程

2022-03-22 23:07:53 430

转载 什么是SpringData

Spring Data 是Spring 的一个子项目, 旨在统一和简化对各类型持久化存储, 而不拘泥于是关系型数据库还是NoSQL 数据存储。无论是哪种持久化存储, 数据访问对象(或称作为DAO,即Data Access Objects)通常都会提供对单一域对象的CRUD (创建、读取、更新、删除)操作、查询方法、排序和分页方法等。Spring Data则提供了基于这些层面的统一接口(CrudRepository,PagingAndSortingRepository)以及对持久化存储的实现。一: Spr

2022-03-21 21:38:36 8733

转载 Reactor模型

Reactor是一种设计模式。基于事件驱动,然后通过事件分发器,将事件分发给对应的处理器进行处理。该设计模式可以分三个角色:  Acceptor:负责接收Accep事件,然后将连接注册成读事件,传递给dispatch;  Dispatch:负责分发事件,如果是接收到Accept事件,则分发给Acceptor。如果是Read事件,将请求交给ReadHandler处理;  Handler:负责处理具体事件;Reactor有三种模型:  第一种:单Reactor单线程模型第二种

2022-03-20 23:02:13 600

转载 SpringBoot开发笔记- 属性文件读取1: @ConfigurationProperties读取yml配置文件

ConfigurationProperties使用方式步骤@Component+@ConfigurationProperties(prefix="person")person是在yml中配置的前缀: person: ...3.1.2. 样例1、maven依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:

2022-03-20 10:53:51 926

转载 @ConditionalOnProperty的作用和用法

@ConditionalOnProperty的作用和用法在spring boot中有时候需要控制配置类是否生效,可以使用@ConditionalOnProperty注解来控制@Configuration是否生效.配置类代码:@Configuration@ConditionalOnProperty(prefix = "filter",name = "loginFilter",havingValue = "true")public class FilterConfig { //prefix为

2022-03-20 10:24:53 546

转载 Quartz-整体设计思路分析

quartz概述quartz是一个用java实现的开源任务调度框架,可以用来创建简单或者复杂的任务调度,并且可以提供许多企业级的功能,比如JTA以及集群等,是当今比较流行的JAVA任务调度框架。1. 可以用来做什么Quartz是一个任务调度框架,当遇到以下问题时: 想在每月25号,自动还款; 想在每年4月1日给当年自己暗恋的女神发一封匿名贺卡; 想每隔1小时,备份一下自己的各种资料。 那么总结起来就是,在一个有规律的时间点做一些事情,并且这个规律可以非常复杂,复杂到

2022-03-19 21:33:40 512

转载 java并发编程:线程池使用

我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:  如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。  那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?  在Java中可以通过线程池来达到这样的效果。今天我们就来详细讲解一下Java的线程池,首先我们从最核心的ThreadPoolExecutor类中的方法讲起,然后再讲述

2022-03-18 22:10:15 263

原创 ETL工具之Kettle

一、ETL简介ETL(Extract-Transform-Load 的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种 ETL 工具的使用,必不可少。市面上常用的 ETL 工具有很多,比如 Sqoop, DataX, Kettle, Talend 等,作为一个大数据工程师,我们最好要掌握其中的两到三种。二、KettleKettle 是一款国外开源的 ETL 工具, 纯 java 编写,可以在 Window、 .

2022-01-05 22:39:05 4555

转载 数据中台与数据仓库的区别

“中台”这个概念,是相对于前台和后台而生,是前台和后台的链接点,将业务共同的工具和技术予以沉淀。相对于业务中台来讲,数据中台跟企业的业务有较强的关联性,是企业业务和数据的沉淀,如果在烟囱林立的各财务业务系统之上搭建共享的数据中台,其不仅能降低重复建设和减少烟囱式协作的成本,也是企业差异化竞争优势所在。然而,当说到数据中台这里,很多人就有了疑问,以前没有数据中台这个概念时,企业不是也建设了数据仓库、商业分析之类的东西吗?对比这个有什么区别?不就是换了个概念和马甲吗?一、数据中台与数仓的区别首先可以

2022-01-05 21:54:36 884

转载 Google Earth、百度地图、高德地图数据原来是这么来的

对于刚入行或者入行不深的同志时常困惑,手上搞来的地图数据到底是地面采的还是天上飞来的,近期整理一些地图数据来源相关的常识普及普及,希望能够对老少爷们有点帮助。Part 1谈到数据来源,首先得对地图数据做分类,因为不同分类数据,其来源,采集方法大不同。要明白地图的数据分类,必须先理解一个概念,就是地图图层的概念:地图图层电子地图对我们实际空间的表达,事实上是通过不同的图层描述,然后通过图层叠加显示来进行表达的过程。对于我们地图应用目标的不同,叠加的图层也是不同的,用以展示我们针对目标所

2022-01-03 17:38:17 9267

转载 使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务

在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端。我们可以使用JDK原生的URLConnection、Apache的Http Client、Netty的异步HTTP Client, Spring的RestTemplate。但是,用起来最方便、最优雅的还是要属Feign了。Feign简介Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign, 我们可以做到使用HTTP请.

2021-12-28 22:53:29 531

转载 Spring Cloud Eureka配置文件详解

以下配置都是以eureka.server开头:参数 描述 备注 eureka.server.eviction-interval-timer-in-ms server清理无效节点的时间间隔 默认60秒 eureka.server.enable-self-preservation 是否开启自我保护,默认true true false eureka.server.renewal-percent-threshold 开启自我保护的系数 默认:0.8..

2021-12-26 17:14:39 434

转载 Eureka 中的 region 和 Zone

背景像亚马逊这种大型的跨境电商平台,会有很多个机房。这时如果上线一个服务的话,我们希望一个机房内的服务优先调用同一个机房内的服务,当同一个机房的服务不可用的时候,再去调用其它机房的服务,以达到减少延时的作用。于是亚马逊的 AWS 提供了 region 和 zone 两个概念概念region:可以简单理解为地理上的分区。比如亚洲地区,或者华北地区,再或者北京地区等等,没有具体大小的限制,根据项目具体的情况,可以自行划分region。 zone:可以简单理解为 region 内的具体机房,比如

2021-12-26 16:43:45 2833

转载 MQTT协议

mqtt协议

2021-12-05 22:10:37 342

原创 postgres配置允许远程连接

无封面

2021-12-05 19:00:31 3919 1

转载 使用小乌龟TortoiseGit快速解决代码冲突问题

最近在做项目时,本地comit完代码后,从远程库拉取代码后,发现出现很多冲突,有点慌不知如何快速解决,一个个改效率太低,小乌龟这个之前看过一点点,但没有在实际项目中用过,这次用小乌龟快速解决了这个问题.小乌龟下载地址场景:在公司做项目时,多个同事可能会同时修改了同一文件的同一行的代码,其中一个已提交了代码,但你又在本地修改了,拉取代码时势必会造成冲突,如果少量冲突,手动改一下还好,但是出现大量冲突,势必要借助一些工具,提高工作效率.案例:首先,我直接在远程代码仓库直接添加测试代码,模拟同事已

2021-09-24 09:31:31 3871

转载 MockMVC

MockMVC基于RESTful风格的SpringMVC的测试对于前后端分离的项目而言,无法直接从前端静态代码中测试接口的正确性,因此可以通过MockMVC来模拟HTTP请求。基于RESTful风格的SpringMVC的测试,我们可以测试完整的Spring MVC流程,即从URL请求到控制器处理,再到视图渲染都可以测试。入门示例@RunWith(SpringRunner.class) @SpringBootTest @AutoConfigureMockMvc pub

2021-09-16 10:41:05 2012

转载 @Mock与@InjectMocks的区别

@Mock: 创建一个Mock.@InjectMocks: 创建一个实例,简单的说是这个Mock可以调用真实代码的方法,其余用@Mock(或@Spy)注解创建的mock将被注入到用该实例中。注意:必须使用@RunWith(MockitoJUnitRunner.class)或Mockito.initMocks(this)进行mocks的初始化和注入。@RunWith(MockitoJUnitRunner.class) public class Test { @Injec..

2021-09-16 09:00:58 597

转载 Jenkins修改插件下载地址

Jenkins本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用Maven构建项目等功能需要依靠插件完成。jenkins默认采用官网的插件下载地址,下载速度非常慢,这里把下载地址改为国内的插件下载地址。jenkins国内插件下载地址清华大学:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/阿里云:https://mirrors.aliyun.com/jenkins/updates/华为云:ht.

2021-09-07 22:43:55 2176

转载 有了docsify神器,从此爱上看文档

简介我们在做完项目的时候经常会写一些项目手册,来记录我们在项目开发过程中的一些开发流程、使用方式以及注意事项,分享给将会使用到这个项目的人,方便大家快速上手,让程序顺利运行。目前比较好的方式就是写成Markdown格式的技术文档,方便我们发布在github上,同时也可以发布到博客分享平台。除此之外我们还可以借助docsify这个工具,来帮助我们快速的搭建一个小型的文档网站,它可以自动将我们写在Markdown中的标题生成目录,整个页面的配色和布局也十分舒适易读,让整个阅读体验提升了好几个level,

2021-09-06 11:42:17 511 1

转载 一文带您了解软件多租户技术架构

1. 多租户技术概述随着近几年云计算技术的不断发展和成熟。云计算多租户技术在 SaaS 服务领域获得得快速的发展和广泛的应用。基于多租户技术的业务平台首先要保证不同租户业务的隔离,业务隔离主要包括下面 2 个方面:❶ 物理隔离,租户开展业务所依赖的全部计算资源全然独立;❷ 逻辑隔离,通过技术手段,隔离租户业务流程和业务数据。一个租户仅仅能访问自身的数据。业务平台在设计时,需要能够依据客户需求提供不同形式的服务,即支持计算资源共享模式,也可支持计算资源独享模式。所以在业务设计时,从

2021-09-01 15:44:50 1649

转载 MySQL中的any_value()函数

MySQL5.7之后,sql_mode中ONLY_FULL_GROUP_BY模式默认设置为打开状态。ONLY_FULL_GROUP_BY的语义就是确定select target list中的所有列的值都是明确语义,简单的说来,在此模式下,target list中的值要么是来自于聚合函数(sum、avg、max等)的结果,要么是来自于group by list中的表达式的值。网上有很多通过修改sql_mode的方式来解决此问题。但除此方法,MySQL也提供了any_value()函数来抑制

2021-08-22 21:32:00 1079

转载 mysql之group_concat函数详解

函数语法:group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] )下面举例说明:select id,price from goods; 以id分组,把price字段的值在同一行打印出来,逗号分隔(默认)select id, group_concat(price) from goods group by id; 以id分组,把price字段的值在一行打印出来,分号分隔..

2021-08-22 21:26:35 475

转载 git分支管理策略

1 总览git的分支整体预览图如下:从上图可以看到主要包含下面几个分支: master:git默认主分支(这里不作操作)。 stable:稳定分支,替代master,主要用来版本发布。 develop:日常开发分支,该分支正常保存了开发的最新代码。 feature:具体的功能开发分支,只与 develop 分支交互。 release:release 分支可以认为是 stable分支的未测...

2021-08-08 22:08:40 1584

转载 java类加载器—ContextClassLoader类加载器

ContextClassLoader是一种与线程相关的类加载器,类似ThreadLocal,每个线程对应一个上下文类加载器.在实际使用时一般都用下面的经典结构:ClassLoader targetClassLoader = null;// 外部参数ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();try { Thread.currentThread().setContextCla

2021-08-08 21:28:47 913

转载 nginx重写与重定向

nginx重写与重定向应用:使用重写或者重定向,避免网站结构或者域名修改后,网站中原有链接失效************************rewrite命令格式:rewrite old_url new_url [flag]old_url:原有访问路径,使用正则表达式进行匹配new_url:新的访问路径flag:参数可选,可设置的值last:重写,地址栏中url地址不变,匹配后重新发起请求(服务端跳转)break:重写,地址栏中url地址不变,匹配后直接输出.

2021-07-18 10:35:02 960

转载 nginx location语法

URL地址匹配是Nginx配置中最灵活的部分 Location 支持正则表达式匹配,也支持条件匹配,用户可以通过location指令实现Nginx对动丶静态网页的过滤处理。Nginx location 配置语法  location [ = | ~ | ~* | ^~ ] uri { ... }  location @name { ... }location 配置可以有两种配置方法前缀 + uri(字符串/正则表达式)@ + name前缀含义=:精确匹配(必须全部相等)~:

2021-07-01 23:27:09 192

原创 Nginx访问控制

访问控制时网络安全防范和保护的主要策略,其任务是保证网络资源不被非法访问。Nginx作为web服务器的后期之秀,也提供了访问控制的功能。1、权限控制指令Nginx中提供了两个用于配置访问权限控制的指令,分别为allow和deny。从其名称就可以看出,allow用于设置允许访问的权限、deny用于设置禁止访问的权限。在使用时,权限指令后只需要跟上允许或禁止的ip、ip段或all即可。其中,all表示所有的。单个ip指定的范围最小,all指定的范围最大 同一块下,若同时存在多个权限指令(deny、

2021-07-01 23:16:52 868

原创 Nginx负载均衡

Nginx不仅可作为一个Web服务器或反向代理服务器,还可以按照权重、轮询、ip_hash、URL hash等多种方式实现对后端服务器的负载均衡。1、什么是负载均衡负载均衡就是将负载分摊到多个操作单元上执行,从而提高服务的可用性和响应速度,带给用户更好的体验。客户端向反向代理发送请求,接着反向代理根据某种负载机制转发请求至目标服务器(这些服务器都运行着相同的应用),并把获得的内容返回给客户端,期中,代理请求可能根据配置被发往不同的服务器。2、负载均衡配置通过Nginx中的upstre

2021-07-01 22:52:49 146

转载 Nginx配置反向代理

一、前言反向代理作用隐藏服务器信息 -> 保证内网的安全,通常将反向代理作为公网访问地址,web服务器是内网,即通过nginx配置外网访问web服务器内网举例比如小编的码云个人博客地址为:http://zhengqingya.gitee.io/blog/,现在小编想通过自己的服务器地址http://www.zhengqing520.com/blog/来访问到码云上面个人博客的地址,并且访问地址是自己的服务器ip或者域名地址,这时候我们就可以通过Nginx配置反向代理来实现 ~...

2021-07-01 22:14:39 646

TCP/IP详解

这是tcp、ip实现的代码,希望能给网络爱好者带来帮助,大家一起学习。

2013-05-18

数据结构试验报告

数据结构试验报告,里面有线性表,树的遍历,图的遍历,排序等代码

2013-01-10

基于VC++的MP3

这是基于MFC做的MP3,希望能能给初学者带来好处,大家一起进步

2013-01-10

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

TA关注的人

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