自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C#】深拷贝和浅拷贝

深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是在复制对象时涉及的两个不同概念。

2023-12-27 09:06:21 1039

原创 【WPF】使用Behavior以及ValidationRule实现表单校验

校验异常可以有多种展现形式和方法。可以在提交按钮时候,判断异常字符串是否为空,不为空弹窗。可以行为中使用GalaSoft.MvvmLight中的Messenger进行发布订阅(注册消费)。例如下面这样当ErrorMsg被赋值时,会触发 Messenger.Default.SendViewModol中setif (!// 发送消息stringget {} set {if(!

2023-12-26 16:46:32 1515

原创 WPF 全局异常处理

在Application中存在三种异常事件EventHandler其中是在异常由应用程序引发但未进行处理时发生,但无法捕获多线程异常专门捕获所有线程中的异常(不包括Task)捕获Task中的异常这些异常Handler可以在应用程序出现异常是记录日志,或者挽回应用程序奔溃的问题。

2023-12-19 16:04:33 913

原创 C# UDP

UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。这样就极大地减少了系统开销,降低了流媒体的误码率和丢包率,并保证了流媒体播放的平滑性。

2023-12-11 14:38:58 550

原创 Modbus入门

Modbus是典型的半双工模式,有且只有一个master,请求由master发出,slave响应。其中 Slave相当于服务器(Modbus Slave),Poll相当于客户端(Modbus Master)。Modbus的存储区有:输入线圈(布尔,只读,代号1区),输入寄存器(寄存器,只读,代号3区),输出线圈(读写,布尔,代号0区),输出寄存器(寄存器,读写,代号4区)modbus使用范围广泛,广泛应用于各类仪表,PLC等。基本配置,配置完选择ok,接下来只要配置要使用的接口方式(网卡,串口等)

2023-11-07 10:31:13 216

原创 S7 PLC SIM (TIA Portal) v15.1安装不了,一直要求重启

S7 PLC SIM (TIA Portal) v15.1安装不了,一直要求重启

2023-10-20 08:37:57 1546 1

原创 RestSharp使用

应该是.Net目前最流行的Restful Api 客户端库。

2023-09-26 17:05:18 597

原创 Asp.Net 6.0 集成 AutoMapper 初入

在后端开发中,对外接口时通常使用的实体是DTO,用于数据传输使用。在DTO到数据访问层的时候,需要进行DTO实体到DAO实体类的转换。这时,我们使用AutoMapper可以简化这个转换对象的过程。

2023-09-14 12:02:52 377

原创 Asp.Net 6.0集成 Log4Net

Asp.Net 6.0 集成 Log4Net

2023-09-11 17:59:41 405

原创 【WPF】数据绑定,资源字典

将数据与视图分开,创建MainViewModel .cs 作为数据源的处理MainWindow.xaml,MainWindow.xaml.cs是UI文件

2023-05-26 09:17:30 1042

原创 【C#】JSON转DataTable存入数据库

由于JSON直接转DataTable可能会存在类型丢失。

2023-05-22 21:47:07 874

原创 使用VS2022打包C#项目生成setup文件并部署

winform打包发布

2023-04-17 19:35:37 3987 1

原创 【声卡驱动】安装realtek high definition audio后重启电脑被自动卸载替换成系统自带的realtek auto

安装realtek high definition audio后重启电脑被自动卸载替换成系统自带的realtek auto

2022-10-27 22:02:58 3043

原创 动态定时任务与动态生成class代码

动态定时任务原理采用定时任务线程池ThreadPoolTaskScheduler来实现定时任务。动态定时任务就是可以配置的,而不是写死在代码中。所以我们要将其写入到数据库中,然后暴露接口就可以进行配置比如创建、启动、结束任务。数据库脚本DROP TABLE IF EXISTS `tb_task`;CREATE TABLE `tb_task` ( `task_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT N

2022-05-16 14:58:28 386

原创 nginx配置https

从腾讯云下载nginx版本证书由于nginx在docker中安装的,所以我们需要开启80端口和443端口映射。docker nginx 安装# 拉取镜像docker pull nginx# 启动一个默认容器 --rm 即停止容器中自动删除容器docker run --rm --name nginx1 -p 80:80 -d nginx# 拷贝default.conf 到宿主机目录 方便日后修改conf # 在镜像中 /etc/nginx/nginx.conf 中 include了 def

2022-05-09 14:02:38 577

原创 安装minikube

下载minikubecurl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64sudo install minikube-linux-amd64 /usr/local/bin/minikube依赖环境minikube需要VirtualBox环境安装 VirtualBox# 下载地址https://download.virtualbox.org/virtualbox/6.1.34/

2022-05-04 01:13:50 2358

原创 ssh-copy-id 命令快速实现ssh远程免密登录

用ssh-copy-id将公钥复制到远程机器中将本地公钥拷贝至 用户名为root的远程主机上ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/var/jenkins_home/.ssh/id_rsa.pub"/usr/bin/ssh-copy-id: INFO: attempting to log in with

2022-04-29 11:09:43 2575 1

原创 使用Jenkins从gitlab拉取代码并部署以及gitlab更新代码后自动构建

使用Jenkins从gitlab上拉取代码,使用ssh。创建Jenkins服务器的SSH密钥对;为相应的Gitlab用户添加密钥对的公钥,相当于Jenkins拉取代码时,使用的是该Gitlab用户,拥有其相应的代码克隆权限;Jenkins添加密钥对的私钥,实现基于key的连接;将Gitlab项目的SSH克隆地址配置到相应的Jenkins任务中,在构建时将代码拉取到Jenkins服务器的相应目录,为接下来的测试、部署等操作做好准备。首先进入Jenkins 容器中docker exec -it

2022-04-29 10:49:47 7139 3

原创 服务器改用ssh文件登录

首先在服务器生成密钥ssh-keygen -t rsa -b 4096将 id_rsa.pub的内容导入到 authorized_keys文件中,这样远程登录时用id_rsa文件登录会与authorized_keys中的文件进行验证。cat id_rsa.pub >> authorized_keys关闭ssh密码登录在 /etc/ssh 下的sshd_config 配置以下两个为noPasswordAuthenticationChallengeResponseAuthe

2022-03-09 22:04:28 718

原创 Maven多模块打包

在类似如下的场景中进行打包 lottery-rpc 将出现报错,原因是没办法将 lottery-common 一起打包进去。<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ht

2022-02-18 23:43:31 1578

原创 在maven本地仓库导入jar包

# Dfile jar包所在位置 DgroupId 指定groupId DartifactId 指定artifactId Dversion 指定版本 mvn install:install-file -Dfile=C:\Users\zlf\Desktop\mybatis-main\target\mybatis.jar -DgroupId="cn.bugstack.middleware" -DartifactId=mybatis -Dversion="1.0.0" -Dpackaging=jar

2021-11-13 22:32:19 550

原创 docker 安装 redis

安装 redis通过docker search redis和docker pull redis下载redis镜像创建挂载配置文件夹mkdir -p /usr/local/java/redis/confmkdir -p /usr/local/java/redis/data配置在创建的conf目录下,创建一个redis.conf文件,并将下面内容写入# 配置保护protected-mode no# 持久化appendonly yes# 密码requirepass 123456

2021-11-07 21:03:05 507

原创 CAS实现原子操作的三大问题

在Java中可以通过锁和CAS的方式实现原子操作。CAS实现原子操作的三大问题1.ABA问题CAS需要在操作值的时候,检测值有没有发生变化,如果没有发生变化则更新。但是如果一个值原来是A,变成B,又变成A,那么使用CAS进行检查时会发现它的值没有发生变化,但实际上却发生了变化了。ABA问题的解决思路是使用版本号。在变量前面追加上版本号,每次变量更新的时候把版本号加1,那么A-》B-》A 就会变成 1A-》2B-》3A。从Java1.5 开始,JDK的Atomic 包里提供了一个类 AtomicSt

2021-09-28 11:44:01 91

原创 多线程分段下载文件

原理先获取文件大小,然后分段分配任务给线程下载在开始多线程下载前得先得知下载文件的大小,如果在之前的流程中并没有告知文件大小则可以使用HTTP请求方法 HEAD,这个请求方法类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头,在头部中可以找到字段content-length就是文件大小了。得知文件长度后应分割需要下载的起止位置以便之后使用。有具体位置后就可以启动多线程发送网络请求,在网络请求中使用HTTP协议的头部标志Range,这个标志的使用方法是Range:bytes=star

2021-09-14 01:21:08 505

原创 GC 基础

如何定位垃圾1. 引用计数法为对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。在两个对象出现循环引用的情况下,此时引用计数器永远不为 0,导致无法对它们进行回收。正是因为循环引用的存在,因此 Java 虚拟机不使用引用计数算法。2. 根可达算法(可达性分析算法)以 GC Roots 为起始点进行搜索,可达的对象都是存活的,不可达的对象可被回收。Java 虚拟机使用该算法来判断对象是否可被回收,GC Roots 一般包含以下内容:

2021-08-27 15:19:34 121

原创 volatile

volatile 如何来保证可见性?当有 volatile 变量修饰的共享变量进行写操作时会多出一行汇编代码。lock add1 .. ...通过查 IA-32 架构软件开发者手册可以知道,lock 前缀的指令在多核处理器下会发生 两件事。将当前处理器缓存行的数据写回到系统内存。这个写回内存的操作会使其他cpu里缓存了该内存地址的数据无效。为了提高处理速度,处理器不直接和内存进行通信,而是先将系统内存的数据读到内部缓存(L1、L2 或其他)后再进行操作,但操作完不知道何时会写到内存。如果声

2021-08-17 09:54:14 99

原创 docker-conpose 入门

docker-compose 安装官方地址githubLinux 下安装sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose要安装其他版本的 Compose,请替换 1.29.1将可执行权限应用给docker-composesudo chmod +x /usr

2021-08-12 14:35:12 638

原创 filebeat + logstash 发送日志至kafka 入门

filebeat官方文档配置文件 filebeat.ymlfilebeat.inputs:# Each - is an input. Most options can be set at the input level, so# you can use different inputs for various configurations.# Below are the input specific configurations.- type: log # Change to tru

2021-07-27 15:34:36 888

原创 mysql集群搭建(使用docker 一主一从)

mysql集群搭建my.cnf 配置文件配置在 /etc/mysql/my.cnf 中 (拿一个举例)(docker中需要先进入开启的容器,docker exec -it 容器名称 /bin/bash)[mysqld]#启用二进制日志log-bin=mysql-bin#服务器唯一ID,一般取IP最后一段server-id=131重启mysql ,这边我使用docker,所以先退出 容器 执行 exit执行 docker restart 容器名称 重启容器建立帐户并授权slave

2021-07-19 21:17:08 192 1

原创 使用mysqldump 导出sql数据

mysqldump -uusername -ppassword --databases 数据库名 --tables 表名 --where "add_time >= '2021-07-15 00:00:00'" > ~/temp/IpcOrderConsumption/t_order_7_15.sql# --where 是要导出数据的条件

2021-07-16 15:10:30 3900

原创 一个定时demo

import lombok.SneakyThrows;import java.util.concurrent.*;import java.util.concurrent.atomic.AtomicInteger;/** * Created with IntelliJ IDEA. * * @Auther: zlf * @Date: 2021/07/10/18:18 * @Description: */public class main { public static Sche

2021-07-10 21:09:20 73

原创 Vue.js使用矢量图

安装依赖npm i svg-sprite-loader --save目录结构创建 svg-icon 组件<template> <svg :class="svgClass" aria-hidden="true"> <use :xlink:href="iconName"/> </svg></template><script>export default { name: 'SvgIcon', pro

2021-06-02 21:40:41 636 1

原创 CIDR 计算网络地址、子网掩码、广播地址

题干16.158.165.91/22 这个 CIDR 求一下这个网络的第一个地址、子网掩码和广播地址。首先我们先计算网络号/22 可知 前22位为网络位,后10位为主机位。网络号就是 主机位为0,即 16.158.<101001><01>.91 => 16.158.<101001><00>.0 => 16.158.164.0第一个地址就是 16.158.<101001><00>.1 ,即 16.158.164.1

2021-05-12 18:13:19 3824

原创 maven识别包下的xml

<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes

2021-05-06 10:10:33 121

原创 SpringBoot 集成WebSocket

什么是WebSocketWebSocket 是一种网络通信协议,很多高级功能都需要它。我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处?因为 HTTP 协议有一个缺陷:通信只能由客户端发起。如果我们想要服务器给客户端发信息,只能由客户端建立长连接这种消耗性能的操作。WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技

2021-05-02 00:25:28 233 2

原创 docker 创建容器报: Error response from daemon: C: drive is not shared.

报错C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: C: drive is not shared. Please share it in Docker for Windows Settings.See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.这时候我们需要绑定盘符效果...

2021-04-27 21:16:44 356

原创 三行代码生成验证码并转换成base64

使用 Hutool 工具类import cn.hutool.captcha.CaptchaUtil;import cn.hutool.captcha.LineCaptcha;import cn.hutool.core.io.FileUtil;import cn.hutool.core.lang.Console;import sun.misc.BASE64Encoder;import java.io.File;import java.io.FileInputStream;import jav

2021-04-26 23:27:43 733 1

原创 求最大公约数和最小公倍数

// 求两数的最大公约数 默认 a>b public static int func(int a,int b){ return a % b==0?b:func(b,a%b); } // 求两数的最小公倍数 默认 a>b public static int func2(int a,int b){ int m = a * b; return m / func(a,b); }...

2021-04-21 00:33:14 47

原创 堆排序

输入一个长度为 n 的整数数列,从小到大输出前 m 小的数。输入格式第一行包含整数 n 和 m。第二行包含 n 个整数,表示整数数列。输出格式共一行,包含 m 个整数,表示整数数列中前 m 小的数。数据范围1≤m≤n≤105,1≤数列中元素≤109输入样例:5 34 5 1 3 2输出样例:1 2 3import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader

2021-04-17 21:18:01 77 1

原创 Element Tree型控件

效果前端<template> <div class="app-container"> <el-input placeholder="输入关键字进行过滤"、 <! -- 双向绑定-- > v-model="filterText"> </el-input> <el-tree ref="tr

2021-04-12 17:10:27 332

空空如也

空空如也

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

TA关注的人

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