- 博客(99)
- 资源 (35)
- 收藏
- 关注
原创 MySQL duplicate key update 新增修改的脚本
在日常工作中,很多场景下我们需要判断一条记录是新增还是修改。我们通常的做法是先根据主键查询,若存在值就修改,若不存在则新增。首先需要执行两段SQL,增加了数据库开销;其次需要我们人为去确定是否新增;我们可以修改插入脚本,让数据库根据逻辑自己判断是新增还是变更。
2022-09-23 21:29:00 248 1
原创 MySQL主备模式设置
https://www.cnblogs.com/miaocbin/p/13889783.htmlmaster创建用户 repl 密码 GreatSlave@123GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repl'@'172.16.20.125' IDENTIFIED BY 'GreatSlave@123';FLUSH PRIVILEGES;salveCHANGE MASTER TO MASTER_HOST='172.16.20.
2022-03-07 16:37:18 774 1
原创 极简而高效的沟通管理法
为什么沟通那么重要谁都知道在工作中沟通是非常重要的,那大家有没有真正想过为什么沟通这么重要呢?首先我们想想看,在你的日常工作时间分配上,“沟通”所用的时间占比多少呢?日常的会议、在钉钉上的讨论、处理邮件等等,反正我个人是远远超过了50%的。这就和管理学上的一个著名理论很契合了:管理者50%以上的时间用在了沟通上,但同时工作中50%以上的障碍都是在沟通中产生的。这就是“双50%理论”,这直观的反应了不论是在占用时间上,还是对工作的影响程度上,沟通都是至关重要的。为什么团队里开会...
2022-02-10 19:03:40 342
原创 Java 通过OPC UA协议读写OPC
Java读取OPC数据的两个主要协议是 OPC DA,OPC UA 这两个协议。OPC DA 协议是基于dcom配置实现的。需要配置客户端以及服务端的dcom。但是dcom配置失败的概率很高。所以本文章主要介绍OPC UA协议。DA协议的Java连接方案。可以参考文章。Java实现opc通信。OPC UA协议是下一代的opc读取协议。主要是为了统一OPC 读取协议杂乱的问题,由OPC ua 协议基金会发起的。Java读取OPC UA 的开源方案是 eclipse.milo我的实现Demo是..
2021-11-05 16:43:59 2855
原创 go基础理论学习
简单介绍下go语言go语言是谷歌开发的一种编程语言 它具有内置的垃圾回收机制 支持高并发 代码可以编译成单个可执行的二进制文件,不需要运行时环境go接口所有接口的父接口是一个空类,interface{}替代任意类型go泛型go1.7之前的go泛型实现是使用interface{}替代任意类型,需要使用swich做类型断言判断。1.7之后引入了类似java语言的泛型概念,这种反省概念就是模板<K,V>,在程序运行时需要copy一份模板生成对应类型的方法并写入内存中
2021-09-30 16:02:17 135
原创 Go语言中的并发编程
一、并发与并行并发:同一时间段内执行多个任务并行:同一时刻执行多个任务Go语言的并发通过goroutine实现。goroutine类似于线程,属于用户态的线程,我们可以根据需要创建成千上万个goroutine并发工作。goroutine是由Go语言的运行时(runtime)调度完成,而线程是由操作系统调度完成。Go语言还提供channel在多个goroutine间进行通信。goroutine和channel是 Go 语言秉承的 CSP(Communicating Sequential Pro
2021-09-17 23:12:21 212
原创 Spring Security
Spring Security 基础原理目录Spring Security 基础原理Spring Security 执行流程OAuth2 和JWT区别与联系Spring Security是一个企业应用系统提供声明式的安全访问控制解决方案的安全框架。主要作用是:用户认证 用户授权 攻击防护主要的实现原理是 :springIOC (DI) spring aop 过滤器 FilterSpring Security 执行流程1、 首先, 当用户登录时,
2021-09-17 23:08:48 97
原创 OAuth 2.0
标准rfc6749 The OAuth 2.0 Authorization Framework (RFC )https://tools.ietf.org/html/rfc6749是什么OAuth 2.0 授权框架使得第三方可以获取对用户资源的访问(有限访问或者完全访问)。举个例子:通过你的允许,bilibili 可以去微信服务器获取你的头像,昵称,openid 等等。为什么传统授权方式,用户和第三方共享密码。缺点如下:未来可能持续需要访问各种受限资源。所以第三方要存储用户密码,一
2021-09-17 22:58:04 72
原创 JVM基础理论
1.1 JVM的运行机制JVM(Java Virtual Machine)是用于运行Java字节码的虚拟机,包括一套字节码指令集、一组程序寄存器、一个虚拟机栈、一个虚拟机堆、一个方法区和一个垃圾回收器。JVM运行在操作系统之上,不与硬件设备直接交互。Java源文件在通过编译器之后被编译成相应的.Class文件(字节码文件),.Class文件又被JVM中的解释器编译成机器码在不同的操作系统(Windows、Linux、Mac)上运行。每种操作系统的解释器都是不同的,但基于解释器实现的虚拟机是相同的,这也是
2021-09-14 21:18:50 344 1
原创 Go SCP 通信顺序进程模型chan通道
目录channer定义写入 chan读取 chan关闭 chan示例Go语言实现了两种并发模型,一种是我们熟悉的线程与锁并发模型,他是基于共享内存实现的。另一种是Go语言中倡导使用的SCP 通信顺序进程模型,倡导使用通信手段实现共享内存。在Go语言中倡导使用channel作为gorotine之间同步和通信的手段。在go语言中的线程是并发机制而不是并行机制。并发机制和并行机制并发是不同的代码块交替执行,也就是交替可以做不同的事情。并行是不同的代码块同时...
2021-09-07 16:33:29 380
原创 开源日志分析ELK平台介绍
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般
2021-08-16 16:54:19 230
原创 项目部署Supervisor
Supervisor 是业界流行的一个通用的进程管理程序,它能将一个普通的命令行进程变为后台守护进程,并监控该进程的运行状态,当该进程异常退出时能将其自动重启。首先使用 yum 来安装 supervisor:如果你还没有安装过 EPEL,可以通过运行下面的命令来完成安装,如果已安装则跳过此步骤:sudo yum install epel-release安装 supervisorsudo yum install supervisorSupervisor 的配置文件为:/etc/sup
2021-08-16 15:14:08 254
原创 Golang对象切片按照属性分类成Map
在Golang开发中,我们有时候需要实现像Java里面的stram -> group 类似的功能。则可以用如下实例完成。package mainimport ("fmt""reflect")type Student struct { Name string `json:"name"` Age uint `json:"age"`}type Teacher struct { Name string `json:"name"` Gender uint `json
2021-08-12 17:48:17 786
原创 golang并发 goroutine
goroutine是Go并行设计的核心。goroutine说到底其实就是线程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻便。goroutine是通过Go的runtime管理的一个线程管理器。goroutine通过go关键字实现了,其实就
2021-08-10 17:21:08 248
原创 Go语言读取线上文件的内容
在我们实际工作中,我们有直接读取不同云服务机器上的文件内容的需求。通常我们的做法是将云服务器上的文件下载到本地,然后使用io读取文件内容,然后再删掉这个临时文件。但这样做对于我们的直接目的来说是有了额外的消耗。所以,我们的做法是直接使用Http请求该文件,然后直接读取Body流中的数据即可。代码如下func ReadTxtData(filePath string) map[string]interface{}{ resp, err := http.Get(filePath) defer r
2021-07-16 15:16:40 1332
原创 在Java对象中如何重写方法的hashCode()方法
在一个Java对象中,如果要重写这个对象的equals方法,则必须重写这个hashCode方法。例如如下对象import org.springframework.util.StringUtils;public class User { private String id; private String name; private String age; public User(){ } public User(String id, Strin
2021-05-14 18:06:31 1333 4
原创 rsync 处理多服务器之间文件传输
rsync -avlK bugreport wangb-os@10.888.88.888:/home/wangb-os/php
2021-04-07 17:41:24 157
原创 匹配查询Redis所有的Key
在实际工作中,我们有需要获取某一个前缀开头的Redis key的集合若使用 RedisTemplate 的 keys(String prefix); 方法查询时Redis版本不支持时可以使用如下代码查询:import java.io.IOException;import java.nio.charset.StandardCharsets;import java.util.ArrayList;import java.util.List;import java.util.function.Co
2021-01-12 15:36:48 1870
原创 RabbitMQ学习笔记
RabbitMQ学习笔记 编程不良人这里写目录标题RabbitMQ学习笔记 编程不良人 MQ介绍和安装 rabbitmqctl 介绍 "Hello Word 模型" 生产者生产消息 消费者消费消息 RabbitMQ简介工具类封装 RabbitMQ的API细节参数 "Worker"模型 平均消费消息 消息确认机制和能者多劳实现 FanOut(扇出 广播 )模型的使用 "Direct"模型(路由) "topic"模型(可以叫做动态路由) .
2020-12-18 16:33:32 140 1
原创 MySQL查看表占用文件大小脚本
脚本如下:SELECT table_name AS TableName, TRUNCATE ( data_length / 1024 / 1024 / 1024, 2 ) AS DataLength, TRUNCATE ( index_length / 1024 / 1024 / 1024, 2 ) AS DataIndex, TRUNCATE (( data_length + index_length )/ 1024 / 1024 / 1024, 2 ) AS DataSum FROM
2020-10-22 16:33:09 217
原创 SQL语句replace into的用法
REPLACE的运行与INSERT很相似。只有一点例外,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。...
2020-09-14 18:28:11 1423
原创 supervisor 3.3.3配置中遇到的问题
error: <class 'socket.error'>, [Errno 2] No such file or directory: file: <string> line: 1Error: .ini file does not include supervisorctl section后面找了很久,终于找到了解决问题的方法。执行前,请先确认supervisord.conf配置文件所在路径:sudo supervisord -c /etc/supervisor..
2020-09-09 14:35:43 958
原创 linux 多台机器之间文件拷贝
在日常工作中,我们经常需要将一台机器上的文件拷贝到对应实例机器上,集群操作更是要如此。scp就是security copy,用于将文件或者目录从一个Linux系统拷贝到另一个Linux系统下。scp传输数据用的是SSH协议,保证了数据传输的安全,其格式如下:scp 远程用户名@IP地址:文件的绝对路径 本地Linux系统路径 scp 本地Linux系统文件路径 远程用户名@IP地址:远程系统文件绝对路径名scp使用第一种格式是将远程Linux系统上的某个文件或者目录拷贝到本地Linux.
2020-08-18 14:13:09 721
原创 OPC
OPC是工业控制和生产自动化领域中使用的硬件和软件的接口标准,以便有效地在应用和过程控制设备之间读写数据。O代表OLE(对象链接和嵌入),P (process过程),C (control控制)。OPC服务器包括3类对象(Object):服务器对象(Server)、项对象(Item)和组对象(Group)。OPC标准采用C/S模式,OPC服务器负责向OPC客户端不断的提供数据。...
2020-07-27 18:05:50 586
原创 Netty
Netty是Java领域有名的开源网络库,特点是高性能和高扩展性,netty旨在为可维护的高性能、高可扩展性协议服务器和客户端的快速开发提供异步事件驱动的网络应用程序框架和工具。换句话说,Netty是一个NIO客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化并简化了TCP和UDP套接字服务器开发等网络编程。学习netty原理细节,看netty源码是必不可少的,那首先来看下如何编译源码:从github下载netty 4.x源码 如果缺少XxxObjectHashM
2020-07-27 16:17:53 132
原创 Goland提示Delve的版本太旧,无法debug的处理方式
vscode安装go语言的调试插件,按官方给出的方法很简单,在cmd下执行这个命令:go get -ugithub.com/derekparker/delve/cmd/dlv如果下载报如下错误:go get -v -u -x github.com/derekparker/delve/cmd/dlvgithub.com/derekparker/delve (download)cd C:\Users\wangb\go\src\github.com\derekparker\delvegit.
2020-07-09 11:22:56 1860
原创 BIO服务端代码实现
BIO工作机制实现代码如下package com.etrol.bio;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class BIOServer { public static vo
2020-06-16 14:23:29 244
原创 Linux查看日志常用命令笔记
Linux查看日志常用命令1.查看日志常用命令 tail: -n 是显示行号;相当于nl命令;例子如下: tail -100f test.log 实时监控100行日志 tail -n 10 test.log 查询日志尾部最后10行的日志; tail -n +10 test.log 查询10行之后的所有日志; head: 跟tail是相...
2020-06-10 15:26:32 710
原创 Linux下运行SpringBoot项目jar包,并且输出日志
在jar包所在目录下,正常启动一个名为***.jar包标准命令:[root@localhost data]# nohup java -jar ***.jar >nohup.log 2>&1 &启动之后,会在jar所在目录生成一个nuhup.log日志文件,记录控制台的日志输出。其实就是两个要点:输出什么 和 输出到哪 。他们以符号“>”进行划分,符号左边是输出什么,符号右边是输出到哪。1.输出什么输出分为标准输出和错误输出,标准输出就是全输出,输
2020-06-04 16:17:59 5296 2
原创 IDEA删除了 .iml文件之后项目不显示的解决方案
.iml文件内存储的是项目的一些配置信息,所以删除之后会有意想不到的效果产生。解决方法很简单,maven刷新一下就ok。就会生成新的 .iml文件。最好在项目中不要隐藏.iml文件。
2020-05-21 09:18:57 4599 1
原创 SpringMVC执行流程面试这么说
SpringMVC是一个控制层的MVC框架,核心是一个Servlet,也就是和JSF一样面向方法级的MVC框架。核心的DispatcherServlet是一个单例的,所以线程不安全。解决线程不安全的方案是在controller里面不能写字段。执行流程用户发送一个请求到核心控制器DispatcherServlet,DispatcherServlet收到请求后会调用HandlerMapping...
2020-04-27 09:38:45 507
原创 Java设计模式(常见详解)
总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池模...
2020-04-22 20:38:56 159
原创 分布式CAP理论和BASE理论
CAP理论一致性(Consistency):在分布式系统完成某写操作后任何读操作,都应该获取到该写操作写入的那个最新的值。相当于要求分布式系统中的各节点时时刻刻保持数据的一致性。分布式系统完成写操作之后任何节点读取该数据都是哪个最新的写的值,也就是时刻保持数据一致。 可用性(Availability):一直可以正常的做读写操作。简单而言就是客户端一直可以正常访问并得到系统的正常响应。用户...
2020-04-03 21:10:19 186
原创 微服务SpringCloud的常见面试题
微服务SpringCloud的常见面试题目录1、什么是微服务? 2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和SpringCloud的理解5、分布式系统面临的问题6、什么是服务熔断,什么是服务降级8、你所知道的微服务技术栈有哪些?请列举一二10、Eureka的基本架构是什么?...
2020-04-02 23:30:47 1389 1
原创 有关Spring的深层次理解
1、Spring是什么?目录1、Spring是什么?2、Spring 的优点?3、Spring IOC(DI)[面向接口编程]4、Spring AOP[面向切面编程]5、BeanFactory和ApplicationContext的区别6、请解释Spring Bean的生命周期?7、Spring支持的几种bean的作用域。8、Spring框架中的单例Beans...
2020-04-02 14:20:55 293
原创 SpringBoot去除内嵌Tomcat方法
SpringBoot内嵌tomcat,直接run Application即可,那么我们如何去除内嵌的tomcat,使用自己的呢?一、POM(去除内嵌tomcat后,需要添加servlet依赖)<dependency> <groupId>org.springframework.boot</groupId> <artifac...
2020-03-18 22:01:49 2831
原创 SpringBoot的自动装配原理
一句话介绍SpringBoot的自动装配:就是在SpringBoot启动的时候用@EnableAutoConfiguration 注解打开自动装配,Spring会在classpath下装配所有装配的Bean(装配Bean时,会根据若干个 Conditional 定制规则来进行初始化),将其装配到IOC容器中.@EnableAutoConfiguration //启用自动配置,会装载META...
2020-03-18 21:47:35 241
原创 Java SPI 机制学习
一、什么是SPISPI的全名为Service Provider Interface。在java.util.ServiceLoader的文档里有比较详细的介绍。Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。一个已知的接口或者抽象类,有多个对这个接口或者抽象类的实现。按照SPI的标准在资源路径META-INF/services目录下创建一个文件名为...
2020-03-18 14:39:33 119
Java通过UA协议操作OPC的demo和客户端工具
2021-11-05
oracle数据库远程连接方式.zip
2019-12-10
Linux课程讲义(兼顾 大数据 JavaEE Python程序员).pdf
2019-09-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人