自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 K8s之Rancher实用篇-使用rancher集群,部署微服务应用

Kubernetes(通常简写为 K8s)是一个开源的容器管理系统,由Google于2014年发起,并在2015年贡献给Cloud Native Computing Foundation (CNCF)进行维护。它基于Borg项目的经验开发而来,旨在自动化部署、扩展和管理容器化应用程序。容器编排:Kubernetes 可以跨多台主机集群高效地管理和调度容器化的应用服务。弹性伸缩:根据预定义的策略自动调整应用实例的数量,确保服务在高负载时有足够的资源处理请求,在低负载时释放资源以节省成本。服务发现与负载均衡。

2024-02-20 22:00:00 1645

原创 实现线程的多种方式&锁的介绍&ThreadLocal&线程池 详细总结(下)

线程池的基本使用,CPU密集型也是指计算密集型,大部分时间用来做计算逻辑判断等CPU动作的程序称为CPU密集型任务。该类型的任务需要进行大量的计算,主要消耗CPU资源。这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。

2023-11-14 14:42:19 248

原创 实现线程的多种方式&锁的介绍&ThreadLocal&线程池 详细总结(上)

实现线程的多种方式&锁的介绍&ThreadLocal&线程池,锁不仅不存在多线程竞争,而且总是由同一线程多次获得,因此为了减少同一线程获取锁。乐观锁是不加锁的,只是在修改数据的时候先做判断,如果数据没被别人修改即可提交修改,否则不做修改,做出重试或其他的补偿行为,在。的相关数据存储在永久代元空间,元空间是全局共享的,因此静态方法锁相当于类的一个全局锁,会锁住所有调用该方法的线程。到轻量级锁,再升级的重量级锁,但是锁的升级是单向的,也就是说只能从低到高升级,不会出现锁的。

2023-11-14 14:13:56 245

原创 程序员的护城河是什么?是技术?还是沟通?

除了技术技能,程序员的护城河还包括他们的团队协作能力、解决问题的能力、持续学习的态度等。这些软技能使得程序员能够在不断变化的技术环境中保持竞争力,为组织和社会创造更大的价值。程序员的护城河主要是他们的技术能力和专业知识。这些技能和知识包括但不限于编程语言、算法和数据结构、系统设计和架构、网络安全和隐私保护等。综上所述,技术能力的深度、对创新的追求以及沟通协作等软实力都是程序员的护城河,三者相辅相成,共同构成了程序员的核心竞争力。技术能力的深度、对创新的追求以及沟通协作等软实力也是程序员的护城河。

2023-11-10 11:33:40 165

原创 大数据量表如何进行优化,详细方法以及个人实测结果,大家可以一定程度的进行参考

经过这次大数据量的分页查询,我们知道了在真实开发中,如何有效的利用索引帮助我们提高查询效率1、延迟关联select t1.* from (select id from t_user where sex = '男' limit 900000, 50) t2, t_user t1 where t2.id = t1.id2、书签方式。

2023-11-08 15:00:58 269 1

原创 JAVA基础知识的梳理,面试的小伙伴可以先复习一下。纯纯的八股文

1、一个基类的引用类型变量可以“指向”其子类的对象;2、一个基类的引用不可以访问其子类对象新增加的成员(属性和方法);3、可以使用 “引用变量 instanceof 类名” 来判断该引用型变量所”指向“的对象是否属于该类或该类的子类;4、子类的对象可以当做基类的对象来使用称为向上转型(upcasting),反之称为向下转型(downcasting)或强制转换。ps:祥见马士兵—》第03章_面向对象—》p37。

2023-11-08 14:39:18 220

原创 springboot基础了解,精华知识总结,详细介绍,不太了解springboot的可以看过来了!

在我们编写代码的过程中,有时候即使修改输出内容也需要重启系统非常的麻烦,可以使用spring-boot-devtools来实现热部署​spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。​。

2023-11-08 14:38:12 61

原创 在oracle环境下,powerjob-server重启失败的情况。Error accessing index information: POWERJOB-PRODUCT.APP_INFO

我在oracle数据库里面新建了一个名为POWERJOB-PRODUCT的角色,在第一次启动的时候自动建表,重启服务的时候,发现启动不了,报错在上面了。调度服务器(powerjob-server)的持久化层基于Spring Data Jpa实现,对于能够直连数据库的应用,开发者仅需完成数据库的创建,即运行SQL:CREATE DATABASE IF NOT EXISTS。再到这里,发现了一个正则表达式。于是可以看到,官网提到的初始化数据库的名称,在oracle的环境下,不符合jdbc的规则。

2023-10-20 20:30:00 280 1

原创 sql索引失效?详细介绍常见原因和如何用好索引

sql索引失效?详细介绍常见原因和如何用好索引。EXPLAIN select * from test where code = '001' and age > 18 and name = '张三'执行结果:从上图中看出索引长度变成: 96 , 96 = 30*3 + 2 + 4 ,只用到了两个索引字段 code 和age ,而 name 字段的索引失效了。

2023-10-16 22:15:00 1431

原创 什么是mysql索引?索引的数据结构?索引的类型,如何正确的使用索引?

尽管索引能帮助我们提升查询效率,并不意味着它一定很好,或者什么时候都需要用索引,因此我们要明确它的优缺点。优点:可以大大加快数据的检索速度缺点:时间方面:创建索引和维护索引需要消耗时间空间方面:索引需要占物理空间哪些情况下需要创建索引主键自动建立唯一索引频繁作为查询条件的字段多表关联查询中的关联字段排序的字段频繁查找的字段,可以建立联合索引,进行覆盖索引查询中统计或者分组字段哪些情况下不需要创建索引表记录太少经常进行增删改查操作的字段。

2023-10-16 21:00:00 160

原创 ERROR: column “*****“ of relation “*****“ contains null values

但是,如果你想将字段的默认值设置为 NOT NULL 约束,并且字段中已经存在 NULL 值,则需要进行一些额外的步骤来处理现有的 NULL 值。这个sql语句,在数据库有数据的时候,如果对应的字段为null,那么你再使用此sql语句去修改为not null 并且设置默认值,就会出现上述错误,如果是空表,就没问题的。但是,请谨慎操作,确保在执行任何修改之前备份数据或进行必要的测试。在项目中有对于数据库的字段规范,要求数据库的一些字段要设置默认值且为not null状态,我很理所当然的写了如下的sql。

2023-10-16 19:45:00 872 1

原创 Linux虚拟机的安装步骤,Linux环境下安装jdk等软件以及的常用的Linux指令

Linux虚拟机的安装步骤,Linux环境下安装jdk等软件以及的常用的Linux指令,Linux是一套性能稳定的多用户网络操作系统Nat网络地址转换模式Bridged Adapter 桥接模式Host-only Adapter 主机模式1、Nat网络地址转换模式(1) 只能单向访问,虚拟机可以通过网络访问到宿主机,宿主机无法通过网络访问到虚拟机;(2) 如果linux上的ip地址是自动获取的,是可以通过宿主机访问虚拟机的,但是要保证linux的ip地址网段和宿主机的虚拟网卡的网段一致;

2023-10-16 19:00:00 346 1

原创 我的创作纪念日

我曾经写了一个二次验证的代码,主要的内容是系统登录需要将二次验证,图片验证,滑块验证全部结合在一起。比较复杂,有机会再分享。实际上在创作的时候,大多数都是在想,我碰到了这个问题,希望以后碰到同样问题的小伙伴们都能有个参考资料,不至于毫无头绪。继续工作,努力工作,工作好了才能写好文章。

2023-10-07 10:07:25 47 1

原创 使用docker容器部署powerjob-server,发现powerjob-server读取的ip地址不正确。导致我的worker无法注册进去

我在本地做测试完全没有问题,但是当我把powerjob移到虚拟机的容器里面去部署,发现我的worker无法访问进去。再去查看日志,可以看到日志出现了变化, 现在7700/10010/10086这三个端口都是绑定在正确的虚拟机上面,然后访问网页,可以注册进去了!,把ip换成你的ip地址,神奇的出现了,我本来server是192.168开头的,访问这个ur,赫然发现成了172.19。这里我就感觉非常奇怪了,我本地没问题,并且我部署了server之后,我在网页上也能访问到,但是为什么就是注册不进去呢?

2023-09-21 09:52:29 1932 12

原创 使用docker-compose部署mysql版本的powerjob-server服务

最近想要在项目中集成powerjob,这个在worker端就比较好弄了,在你的yml里面配置连接参数就行了,但是有了worker,必须得有server才能进行正常的定时任务的调度呀。今天就给大家分享一下,怎么将powerjob-server服务部署到服务器上面的。如果你有mysql,就可以直接看第二步了。

2023-09-20 22:00:00 466 1

原创 powerjob-server使用postgres数据库运行,出现job-params这个列是oid字段,导致不能新建任务

因为使用者只需要创建数据库,powerjob-server是在运行时自动创建表,所以建表模块基本上是一样的。用mysql没有问题,但是切换成postgres数据库,会导致字段不一致出现错误。按照官方的解决方法,可以仿照类似的操作,在系统中新建一个配置类。用来在建表的时候将oid类型替换成postgres中的text类型。=号后面是你的类的全限定名,视个人情况改变。我按照这个步骤来进行操作后,发现还是不能完全解决问题,新建任务的时候还是报错。建议: You will need。

2023-09-20 21:45:00 558 1

原创 redis stream消息队列的使用

redis stream是redis5.0以后出现的新的数据类型,它主要是一个可以附加的数据结构可以在一定程度上完善之前redis的订阅发布功能存在的缺陷。

2023-09-01 19:15:00 649 2

原创 docker从安装到部署项目,一篇文章教会你

使用的分层存储以及镜像技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得十分简单。容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级,甚至毫秒级的启动时间,大大节约了开发测试,部署的时间。我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。

2023-07-25 19:30:00 16439 5

原创 重写HashCode和equals方法为什么要一起重写

两个一样属性的对象,用equals比较是true,那么它们的hash值肯定是一样的。但是如果是hash值一样,不代表这两个对象就是一样的,因为hash计算的是在内存中的地址值,而不是对象本身的属性值。所以你看到我重写后的方法是这样的。当我们重写了hashCode和quals后,你可以看下面的结果,只要是相同的主键id,哈希值就是一样的,equals对比的结果也是true。这里可以看到,重写前,就算你创建的对象的主键id是设置的一样的,但是输出的值是false,并且哈希值并不一样。不明白我再通俗一点来讲。

2023-07-20 20:45:00 80

原创 Window上学习使用rust语言碰到linker `link.exe` not found | = note: program not foundnote: the msvc targe

按照rust的官方网站的指令开始学习rust,程序运行就会报错linker `link.exe` notfound | = note: program not foundnote: the msvc targe这个错误表明编译Rust程序时没有找到MSVC linker,需要通过安装Visual Studio 2017或更高版本或Visual Studio Build Tools解决该问题。这是因为Rust编译器通常使用Microsoft的C++编译器来编译Rust程序。

2023-07-20 20:00:00 4361 3

原创 ES6以及vue入门知识梳理

ECMAScript是浏览器脚本语言的规范,可以狭义理解是javascript的规范。为什么会出现这个规范呢?Promise是ES6异步编程的一种解决方案(目前最先进的解决方案是async和await的搭配(ES8),但是它们是基于promise的),从语法上讲,Promise是一个对象或者说是构造函数,用来封装异步操作并可以获取其成功或失败的结果官方解释:Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动。

2023-07-19 20:00:00 902

原创 Spring Cloud Alibaba的微服务组件学习,一文带你学会

下面是Spring Cloud 官方对Spring Cloud Alibaba的介绍:Spring Cloud Alibaba旨在为微服务开发提供一站式解决方案。该项目包括开发分布式应用程序和服务所需的组件,以便开发人员可以使用Spring Cloud编程模型轻松开发分布式应用程序。使用Spring Cloud Alibaba,您只需要添加一些注释和配置,就可以为您的应用程序使用Alibaba的分布式解决方案,并使用Alibaba中间件构建自己的分布式系统。

2023-07-19 19:30:00 2580 1

原创 JAVA代码实现登录界面滑块图片验证------超详细

在做登录功能的时候,有一个需求,就是做一下登录验证,并且这些登录验证在系统中都是可以做可视化配置,什么意思呢,就是比如你在系统中做了一个功能,又做了一个,还有一个滑块图片验证。这几个功能在你的系统同时存在,在你的系统中要配置一个超级管理员界面来控制此系统当前的登录验证方式。这是一个比较复杂的配置,在系统不停机的情况下,更改系统的登录方式,那就是意味着要把系统验证方式的参数读取方式从配置文件里面解放出来,存入到数据库中,然后来读取数据库的数据进行改变。

2023-07-13 15:43:27 3273 6

原创 在使用docker以及docker-compose部署项目时需要用到的操作命令

这些都是已经运行起来的容器信息,在大多数情况下,项目部署的时候,需要将数据库的数据拷贝过去,我这里是使用的pg数据库,数据库的文件是公司的DBA提供,当然你也可以自己提取出来,我们做到责任分离嘛。接下来给大家说说,下载完镜像之后,我们要进行系统的部署,这个过程中可能需要用到的部署指令和验证部署容器状态的一些命令。如果你要删除容器,可能会出现容器正在运行的错误,所以需要你停止容器的运行,然后再进行删除 ,停止运行的命令。如果你再部署的时候,修改了配置文件里面的信息,记得使用下面的命令来重启服务。

2023-07-12 17:55:09 97 1

原创 conflict: unable to delete 7a3b64fc6dae (must be forced) - image is referenced in multiple repositor

因为你要删除的镜像id对另一个镜像有依赖关系,所有你删除的时候并不能删除掉。当你使用docker rmi 镜像id 来删除镜像时,可能会出现这样的错误。查看一下自己的镜像 docker images。那么这个时候可以使用这个指令来进行删除。

2023-07-07 17:10:20 106 1

原创 安装docker和docker-compose,拉取docker镜像的步骤

ubuntu安装docker与centos有一定的不同,centos中使用yum来进行下载安装,而ubuntu使用apt来进行安装。这个时候需要部署用到的镜像都已经拉取完毕,可以编写docker-compose.yml文件进行容器化部署了。docker-compose.yml文件的介绍再另外一篇文章给大家介绍了,可以去看一下。使用apt命令安装docker以及docker-compose。这个时候docker和docker-compose已经安装好了。根据镜像地址拉取对应版本的镜像。验证docker版本。

2023-06-29 17:13:12 1107 1

原创 使用docker-compose容器编排工具,编写docker-compose.yml文件进行容器化部署

现在的spring cloud 项目在部署的时候基本上都是使用docker容器来进行部署,所以这里给大家介绍一下日常使用dokcer的一些命令,还有现在流行的docker-composedocker-compose是一个容器编排工具,它用来在单台Linux服务器上运行多个Docker容器。docker-compose使用YAML文件来配置所有需要运行的Docker容器(称之为服务),该YAML文件的默认名称为docker-compose.yml,内容为YAML格式的UTF-8文本。

2023-06-29 16:53:16 3106 2

原创 Linux常用的cd,mv,cp,ls命令

表示进入data文件夹下面的docker-compose文件夹,这个是绝对路径。是change directory的缩写,用于切换当前工作目录。这个时候已经进入了docker-compose目录下。也可以使用相对路径,记住不要加 /ls命令表示显示目录下面的所有文件。cd可后跟目录名,目录可以是绝对。然后显示test 下面的所有文件。我们常用的cd 命令如下。想要返回上一级父目录。

2023-06-29 16:22:33 250 1

原创 【图片验证码】Java实现图片验证工具类

图片验证码的实现原理是,当用户访问网站时,网站会生成一张随机的图片,并要求用户输入图片中的文字或字符,然后将用户输入的文字或字符与图片中的文字或字符进行比较,如果相同,则表示用户身份验证通过,可以继续访问网站,否则则表示用户身份验证失败,无法继续访问网站。它的原理是,在用户登录或注册时,系统会生成一个随机的图片验证码,用户需要输入正确的验证码才能继续操作。图片验证码是一种常见的安全验证技术,它通过在用户访问网站时显示一张图片,要求用户输入图片中的文字或字符,以确认用户的身份。我的对象是这样定义的。

2023-06-06 11:20:09 1643

原创 使用Microsoft-Authenticator做系统登录的二次身份验证(双因素认证)

(时间、事件)和同样的算法计算了认证的动态密码,从而确保密码的一致性,从而实现了用户的认证。我最近在项目中遇到需要在登录的时候加入双因素验证系统的功能需求, 整体步骤感觉还是有必要写下来,方便做类似功能的同学能够借鉴。10:10:30-10:11:00 之间生成的TOTP 能校验通过,以此类推。这个是策略类的接口,除了使用微软的验证器,你还可以实现这个接口来使用其他品牌的验证器。这个工具类就放在你的项目中,就代表你的这个功能做了有一半了。,每次认证时动态密码卡与服务器分别根据同样的密钥,同样的。

2023-05-30 17:39:19 4227

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