Spring Cloud OpenFeign 客户端
openfeign的使用导入 openfeign 的相关jar 包
12345678910<!--OpenFeign--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--负载均衡--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>
在启动类使用 @EnableFeignClients
1234567891011121314@EnableFeignClients@MapperScan("c ...
设计模式 原型模式
原型模式介绍定义: 原型模式(Prototype Design Pattern)用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。
原型模式主要解决的问题如果创建对象的成本比较大,比如对象中的数据是经过复杂计算才能得到,或者需要从RPC接口或者数据库等比较慢的IO中获取,这种情况我们就可以使用原型模式,从其他已有的对象中进行拷贝,而不是每次都创建新对象,进行一些耗时的操作.
原型模式的优点性能好,基于内存二进制流拷贝,比直接new 一个对象性能上提升许多。可以使用深克隆方式保存对象的状态 ,使用原型模式将对象复制一份并将其状态保存起来,简化了创建过程
浅克隆浅克隆 通过 clone 创建一个与源对象完全相同的对象信息,对于基本值类型按值信息拷贝过去,对于对象类型采用会指向原有对象信息引用原有内存地址实现了Cloneable接口,以指示Object.clone()方法,该方法对该类的实例进行逐个字段的复制是合法的。在没有实现Cloneable接口的实例上调用Object的clonze方法将导致抛出CloneNotSupportedException异常。按 ...
设计模式 建造者模式
建造者模式介绍
建造者模式 (builder pattern), 也被称为生成器模式 , 是一种创建型设计模式. 定义: 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。
要解决的问题建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。
建造者模式原理建造者(Builder)模式包含以下4个角色 :
抽象建造者类(Builder):这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的部件对象的创建。
具体建造者类(ConcreteBuilder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。在构造过程完成后,提供一个方法,返回创建好的负责产品对象。
产品类(Product):要创建的复杂对象 (包含多个组成部件).
指挥者类(Director):调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建(客户端一般只需要与指挥者进行交互)。
建造者模式的优点包括:
封装性好:将复杂 ...
使用 electron 来实现h5网址包装成 exe 项目
Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台的桌面应用程序。它基于 Node.js 和 Chromium,被 Atom 编辑器和许多其他应用程序使用。Electron 兼容 Mac、Windows 和 Linux,可以构建出三个平台的应用程序。
安装Electron1234# 新建项目需要, 不新建可以忽视npm init -ynpm install electron --save-devnpm install electron-builder --save-dev
安装碰到长时间拉不下来的问题请换源
123registry=https://registry.npmmirror.comelectron_mirror=https://cdn.npmmirror.com/binaries/electron/electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/
在 npm 用户文件夹下 .npmrc 文件中添加, 或者执行 ...
设计模式 单例模式
单例模式的定义单例模式是指确保一个类在任何情况下都只有一个实例,并且提供一个访问该单例的全局访问点。
如何创建一个单例模式构造函数需要是 private 访问权限的,这样才能避免外部通过 new 创建实例;考虑对象创建时的线程安全问题;考虑是否支持延迟加载;考虑 getInstance() 的性能(是否加锁)
单例模式适用的场景J2EE 标准中的 ServletContext 和 ServletContextConfig;Spring 框架应用中的 ApplicationContext、数据库中的连接池等也都是单例模式。
饿汉式(饥渴型)单例模式在类加载的时候就创建对象,不会出现线程安全问题(因为还没有开始加载的时候就创建好了对象,线程都没有机会去争夺)。
1234567891011121314151617181920package SingletonFactoryModel;public class SingletonHungry { //成员变量 在类加载的时候就把对象创建好了 static SingletonHungry s = new SingletonH ...
live2d-wiget 本地化部署, 使用nginx 加 php 部署
大佬们的项目,本篇只做 live2d 本地化api 的 项目部署记录live2d 看板娘 :https://github.com/Ylanw/live2d-widgetlive2d 本地化api: https://github.com/fghrsh/live2d_api
以下采用ubuntu 系统 做 环境部署, 使用 nginx、 php8、 php-fpm 用来搭建环境要在Linux系统上安装PHP 8并支持Nginx部署,你可以按照以下步骤进行操作。这里以Ubuntu 22.04为例进行说明。如果你使用的是其他版本的Ubuntu或Debian,大部分步骤应该是相似的。
更新系统
12sudo apt updatesudo apt upgrade
安装依赖
1sudo apt install -y build-essential zlib1g-dev libssl-dev libxml2-dev libbz2-dev libjpeg-dev libpng-dev libonig-dev libfreetype6-dev libwebp-dev libzip-dev
添加PPA仓库
...
live2d-wiget 本地服务器部署
大佬们的项目,本篇只做 live2d 本地化api 的 项目部署记录live2d 看板娘 :https://github.com/Ylanw/live2d-widgetlive2d 本地化api: https://github.com/fghrsh/live2d_api
以下采用ubuntu 系统 做 环境部署, 使用 nginx、 php8、 php-fpm 用来搭建环境要在Linux系统上安装PHP 8并支持Nginx部署,你可以按照以下步骤进行操作。这里以Ubuntu 22.04为例进行说明。如果你使用的是其他版本的Ubuntu或Debian,大部分步骤应该是相似的。
更新系统
12sudo apt updatesudo apt upgrade
安装依赖
1sudo apt install -y build-essential zlib1g-dev libssl-dev libxml2-dev libbz2-dev libjpeg-dev libpng-dev libonig-dev libfreetype6-dev libwebp-dev libzip-dev
添加PPA仓库
...
DHT11测量温湿度并在手机APP显示
工具
ESP8266核心板
DHT11温湿度检测模块
杜邦线
实验连线将ESP8266核心板的“D4”与DHT11模块的“out”相连,“3V”与“+”相连,“G”与“-”相连。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061#define BLINKER_WIFI#include <Blinker.h>#include <DHT.h>char auth[] = "ecdc2388f56f";char ssid[] = "CMCC-AAA";char pswd[] = "123456789";BlinkerNumber HUMI("humi");BlinkerNumber TEMP("temp");#define DHTPIN D4#define DHTTYPE DHT11 // ...
esp8266通过DHT11测量温湿度并发送至电脑串口端显示,涉及DHT11的驱动和串口通信
工具
esp8266 开发板
DHT 温湿度检测模块
杜邦线
实验连线esp 8266 核心版 的 D4 与 DHT 模块的 out 相连, “ 3v” 与 vcc 相连“G” 与 “GND” 相连
程序代码添加管理库
报Adafruit_Sensor 没有解决方法如下要使用DH11需要先下载DH11的函数库,打开Arduino后,管理库,在搜索 DH11 即可搜索到 DHT_sensor_library。打开示例 DHTtester ,编译上传,会发现一个错误,大致意思是缺少 Adafruit_Sensor.h 这个头文件,可在 https://github.com/adafruit/Adafruit_Sensor 此处下载。将下载后的压缩包解压后,找到 Adafruit_Sensor.h 文件,复制到 库文件夹 DHT_sensor_library 下即可,重新打开 Arduino后,编译就没有错误了。上传之后可以看到 湿度,C温度,F温度,体感C温度,体感F温度。链接:https://www.jianshu.com/p/8c14ee4e4b57
1234567891011121 ...
测量水位并在手机APP显示
工具
esp8266 开发板
水位监测模块
杜邦线
实验连线利用套件附带的杜邦线将ESP8266核心板的“A0”引脚与水位检测模块的“S”引脚相连,“3V”与“+”相连,“G”与“-”相连。安装 Blinker
程序代码12345678910111213141516171819202122232425262728293031323334353637383940#define BLINKER_WIFI//以WiFi方式接入blinker#include <Blinker.h>char auth[] = "06a7ac106c94";//设备密钥char ssid[] = "CMCC-AAA";//WiFi名称char pswd[] = "123456789";//WiFi密码BlinkerNumber WATER("water");// 新建组件对象float water_read = 0;//定义浮点类型变量保存测量值void heartbeat(){ WATER.prin ...
