自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 在Graphviz中画出好看的二叉树、B树、如何使用pos变量

1、前提使用过Graphviz画二叉树的同学都会发现,画出来的东西没有向教材那样规规矩矩,对于有强迫症的同学来说,可以采用以下思路进行完善2、IDEA + Dot@startumldigraph btree { graph [nodesep=0.1, pad=0.02, ranksep=0.5] node [shape=circle, style=bold, fontsize=22, fontname=Consolas, width=0.8, height=0.8] edge

2021-10-23 19:04:33 2758

原创 使用App Ops修改APP隐藏权限(Android)

前言(1) 在早些年智能机快速普及期,即2014、2015年之时,各类APP通过权限爬取用户隐私如流氓无二异(2) 到2016、17、18时,手机一定程度上可适当控制APP的权限,但面对不给权限就不给用之中实则违反人权和法律的情况也别无他法(3) 对于一个刚装的APP,总会跳出"请求地理位置",选择"禁止"作用也不太大,毕竟可以通过网络定位等方式(4) 而去年小米的空白通行证,在意义上是App Ops玩剩下的1、准备(1) 所需APPAndriod:Shizuku、App OpsWin:AD

2021-09-30 10:01:40 7169

原创 在for循环内外定义变量的区别

1、在for循环内定义变量for (int i = 1; i <= num; i++) { Object obj = new Object();}该方式会在内存中创建num个Object对象引用,若num较大,则会消耗大量内存2、在for循环外定义变量Object obj = null;for (int i = 0; i <= count; i++) { obj = new Object();}该方式使得内存中只有1份Object对象引用,每次为obj赋值时,仅是Obje

2021-09-28 04:51:12 2850

原创 Notepad++ 正则表达式的使用

Notepad++正则表达式

2021-09-03 13:17:10 3386

原创 SpringBoot 2.5 整合MongoDB踩坑记录及解决方法

1、连接远程MongoDB失败问题:com.mongodb.MongoSocketOpenException: Exception opening socket原因:由于添加了依赖:spring-boot-starter-data-mongodb,因此,SpringBoot程序启动时会自动配置并连接MongoDB,但自动连接的配置内容与自己定义的不同,因此会导致连接失败,而且当然要连接自己的配置的东西解决:因此要在SpringBoot启动类的@SpringBootApplication后面加上e

2021-08-25 08:47:49 15735 17

原创 Navicat导入、导出MongoDB的集合

1、前期准备(1) 有数据的MongoDB数据库old_db、空数据库new_db(2) 准备好MongoDB Tools前往页面:https://www.mongodb.com/try/download/database-tools选择所需版本下载并解压到自己想要的目录中:2、将数据库old_db中的数据导出(1) 对old_db右键,选择MongoDump(2) 找到MongoDump.exe(从Mongo Tools中解压出来的)(3) 选择自己想要存放数据的路径(假设为E:\T

2021-08-25 08:06:38 10414 3

原创 MongoDB 5.0修改集合名、集合的字段名、字段位置顺序,批量修改单个集合中的字段值

上例子:db.getCollection("user").update({}, {$rename : {"userId" : "uid"}})1、“user"为集合名2、第一个”{}"为查询条件,不需要的话空置即可3、“userId"为旧字段名,“uid"为新字段名4、集合名、字段名要加””...

2021-08-25 06:19:55 4110

原创 Mybatis-Plus的分页查询中,Page与IPage的区别

public IPage<User> findUserByPageAndId(Integer currentPageNum, Integer pageSize, Long userId) { Page<UserInfo> page = new Page<>(currentPageNum, pageSize); return mapper.findUserBySQL(page, userId);}Page用于定义每页的规格IPage以规格和其他内容为

2021-08-21 17:35:54 10617

原创 验证线程之间会出现相互干扰的情况时,不可用普通变量代替成员变量的原因

需求创建5个线程,需在线程的run()中设置"存储数据"、“获取/输出数据”,观察某些线程会不会获取到其他线程的数据一、普通变量(不可行)1、原因​(1) 通过for循环,会给每个线程1个threadData​(2) 而每个线程的threadData的作用域仅限于run()中​(3) 由于自定义普通变量的作用域局限性,并不能通过threadData体现线程之间的相互干扰​(4) 即由于变量的作用域,线程A不能获取到线程B的数据2、MainThreadpublic class MainThr

2021-08-15 13:44:20 253

原创 POJO、DO、DTO、VO的区别

1、概念对象含义作用作用范围DO(Data Object)数据对象与数据库表结构对应,通过DAO层向上传输数据源对象数据库与Dao层,Dao层与Service层DTO(Data Transfer Object)数据传输对象主要用于远程调用等需大量传输对象的地方Sevice层和Web层VO(View Object)视图对象对应页面所显示的数据,将这些数据进行封装并返回Web层与页面POJO(Plain Ordinary Java Object)普

2021-08-08 17:56:30 2330

原创 Token需要缓存到Redis的原因

1、实现单点登录假设:有设备AB、无单点登录限制的某APP、一个账号(用户)设备A在APP第1次登录用户,服务器会给该用户创建1个Token并返回到设备A,设备A会将该Token保存到本地设备B也是在APP第1次登录该用户,服务器也会给该用户创建1个Token并返回到设备B(此处的Token不同于上一个),设备B会将该Token保存到本地那这样的话,2个设备可同时在该APP登录同一个账号,即多点登录,不合理因此需要通过Redis进行限制2、用户修改密码,实现重新登录假设:有个账号在登录后的使用

2021-08-04 22:24:18 7545

原创 在分布式项目中,面对用户登录认证,使用JWT代替Session的原因

1、服务器压力变大使用Session进行用户认证,每增加1个用户进行登录认证,服务器就需分配内存存放Session,随着认证用户的增多,服务端的开销会明显增大2、扩展性变差用户登录认证记录保存在服务器内存中,则该用户下次发送登录请求时,必须在该台服务器上才可获得授权资源;假设在分布式系统中,多数初始用户认证请求被分配到服务器A、一部分到B、少部分到C,明显各服务器的请求数量不均等,限制了负载均衡器的能力,也就意味着限制扩展的能力3、安全性变低由于用户识别是基于Cookie进行的,若Cookie被截

2021-08-04 12:11:08 1038

原创 将Docker中的Java应用容器打包为镜像,并部署到另一个主机上

需求主机A上的a-app:1.0容器(a) => 主机B上的b-app:1.0容器(b)前提A中a-app:1.0原本设置的名称为:aproB中要给b-app:1.0设置的名称为:bpro1、在A上,将a打包为镜像docker commit apro a-app:1.0这里的apro也可为a-app:1.0的id2、将a镜像存到A上(存放目录自己决定即可)在存放命令中,就可以自己重新给这个java应用镜像命名了,我命名为b-app:1.0docker save > /r

2021-08-02 18:54:12 398

原创 @DubboReferece和@Autowired的区别;哪种情况可使用@DubboReference?

@DubboReference与@Autowired相似,但不同在于:@Autowired是从本地IOC中取出注入的对象并使用,@DubboReference是从远程IOC中取出注入的对象并使用若Zookeeper中注册了Dubbo服务,则可通过@DubboReference取出Dubbo服务中的接口等的对象出来使用,而对于没有注册到Zookeeper的模块/服务,则只能使用继承与@Autowired来取出对象进行使用...

2021-08-02 15:06:46 2955 1

原创 Dubbo3.0.1,启动消费者时,解决出现的Failed to check the status of the service

Dubbo3.0.1不像Dubbo2,将提供者服务中的Spring的@Service改为182亿福报马的@Service,而是要改为@DubboService

2021-07-31 18:12:31 669

原创 Zookeeper 3.7.0 zookeeper not connected解决方案(低版本也适用)

前提截止2021-07-29,各帖子文章解决zookeeper not connected的方法仍不全面,特别是面对通过Docker-Compose部署的Zookeeper、高版本的Zookeeper、高版本的Dubbo等情况,完全没有资源,因此我来撰写一篇栈CentOS 8Docker-ComposeZookeeper 3.7.0Dubbo 3.0.1SpringBoot 2.5.2application.yml1、Dubbo Timeout(1) dubbo.config-cente

2021-07-29 21:25:34 3756

原创 父级依赖时,为何Maven的pom.xml中,有的不需添加版本,有的需通过${}指定版本?

在父工程中:1、依赖A没有在dependencyManagement中2、依赖A的版本在properties中3、则无论父工程、子工程,在dependencies中添加依赖A必须通过${}指定版本properties与dependencyManagement的区别:properties: 统一版本;在dependencies中,无论父工程、子工程,需通过${}指定版本dependencyManagement: 管理依赖;在dependencies中,无论父工程、子工程,不需独立指定版本...

2021-07-29 14:26:44 1047

原创 CentOS 8通过Docker-Compose部署RocketMQ 4.8.0(解决Broker启动的Exit 253问题)

1、docker-compose.yml该文件创建在自己想要的目录中version: "3.9" #我的Docker是20.0.+的,因此用最高的3.9services: rmqnamesrv: image: foxiswho/rocketmq:4.8.0 #4.8.0没有区分namesrv和broker container_name: rmqnamesrv restart: always ports: - 9876:9876 volumes:

2021-07-27 14:39:34 3245 5

原创 查看docker-compose.yml所在位置

前提要开启dockerlocate docker-compose.yml

2021-07-26 15:51:41 17214 4

原创 CentOS 7 ifconfig显示的IP被遮挡 / ifconfig不显示IP 的解决方法

1、IP被遮挡cd /etc/sysconfig/network-scriptsifconfig ens332、不显示IPsystemctl stop NetworkManagersystemctl disable NetworkManagerservice network restart

2021-07-26 15:49:47 208

原创 查看Docker拉取的容器为latest的具体版本号

以YApi为例:docker pull mrjin/yapi:latestdocker image inspect mrjin/yapi:latest | grep -i version显示:"DockerVersion": "", "NODE_VERSION=10.22.0", "YARN_VERSION=1.22.4", "VERSION=1.9.2"其中YApi的版本好为:1.9.2..

2021-07-26 15:07:52 3596

原创 解决CentOS 8出现的docker-compose: command not found

1、安装Docker-Compose既然使用了docker-compose那自然得安装了在GitHub上拉取过慢,建议在国内源DaoCloud中拉取:curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/soft/docker-composePS: 其中的/usr/local/soft/docker-co

2021-07-26 11:07:36 3952 2

原创 CentOS 8使用Docker安装容器时,如何确定挂载目录?

以安装MongoDB为例1、拉取docker pull mongo2、创建容器(简化启动)docker run --name mongo -p 27017:27017 -d mongo:latest这个启动方式可多处套用,改一下端口、自定义容器名、镜像名称即可--name mongo #自定义容器名-p 27017:27017 #定义端口-d mongo:latest #镜像名称3、查看可挂载目录其中mongo为自定义的容器名docker inspect mongo下拉发

2021-07-15 18:23:20 292

原创 CentOS 8 Docker安装MongoDB 5.0.0

目前5.0.0是最新版1、拉取docker pull mongo:5.0.02、创建、编写配置文件mongod.confdbPath、path不建议改动,bindIp改为0.0.0.0以方便外部连接MongoDBstorage: dbPath: /var/lib/mongodb journal: enabled: true# engine:# wiredTiger:systemLog: destination: file logAppend: true

2021-07-15 18:14:15 703

原创 对于Docker中已存在的容器,进入方法(以MongoDB为例)

1、查询出MongoDB的ID并复制docker ps -a2、Docker执行容器将此处的id替换为MongoDB的IDdocker exec -it id /bin/bash3、进入MongoDBmongo

2021-07-15 13:49:49 1257

原创 MobaXterm连接VM导入的外部虚拟机(MobaXterm连接不到虚拟机的解决方法)

1、查看虚拟机的子网2、修改虚拟机IPcd /etc/sysconfig/network-scriptsvim ifcfg-ens33修改以下内容:BOOTPROTO=staticONBOOT=yes添加:# 前3段与子网地址一致,'xxx'自己做选择IPADDR=192.168.75.xxxNETMASK=255.255.255.0GATEWAY=192.168.75.2DNS1=114.114.114.114保存3、重启网卡(CentOS 8不适用)servic

2021-07-15 13:32:15 2252 1

原创 较全面版:CentOS 8中Docker安装、启动MySQL 8

1、加速(1) 先配置好镜像加速器,以免拉取MySQL镜像过慢vim /etc/docker/daemon.json(2) 在该JSON文件中添加{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}2、拉取MySQL8的镜像去Docker Hub寻找自己需要的MySQL版本,我找的8.0.25docker pull mysql:8.0.253、添加数据卷(1) 什么是数据卷数据卷是宿主机中的一个目录或文件

2021-07-14 19:12:00 822

原创 CentOS 8中Docker安装Redis 6.2.4

1、拉取去Docker Hub寻找自己需要的Redis版本,我找的6.2.4docker pull redis:6.2.42、创建Redis容器docker run -di --name=redis-6.2.4 -p 6379:6379 redis:6.2.43、进入Redis容器docker exec -it redis-6.2.4 /bin/bash

2021-07-14 16:30:51 333

原创 简易版:CentOS 8中Docker安装、启动MySQL 8(解决Can‘t connect to local MySQL server through socket ‘/var/run/mys)

1、加速(1) 先配置好镜像加速器,以免拉取MySQL镜像过慢vim /etc/docker/daemon.json(2) 在该JSON文件中添加{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}(3) 重启Docker(重启CentOS也行)2、拉取MySQL8的镜像docker pull mysql:8.0.253、创建MySQL容器docker run -di --name=mysql-8.0.25

2021-07-14 15:48:20 771

原创 Docker删除镜像Error response from daemon: conflict: unable to remove repository reference ““解决方案

原因:依赖了Container1、查看Docker中启动了哪些容器docker ps -a在输出内容中看一下需要干掉哪个容器,将其容器ID复制下来2、干掉对应容器docker rm 容器ID3、查看一下是否成功干掉docker ps -a输出内容中无对应容器即可4、删除镜像docker rmi mysql:8.0.25PS:删除容器为rm,删除镜像为rmi...

2021-07-14 12:56:19 3609

原创 在CentOS 8中启动MongoDB、连接客户端

假设将MongoDB安装在CentOS 8中的/usr/local/soft/mongodb中1、先进入MongoDB的bin目录cd /usr/local/soft/mongodb/bin2、启动MongoDB./mongod -f ../mongod.conf出现以下内容则说明启动成功about to fork child process, waiting until server is ready for connections....

2021-07-10 16:11:50 493

原创 CentOS 8 + RocketMQ 4.9.0 双主双从配置(同步)与Broker从(Slave)节点启动失败(闪退、Exit 253 255)解决方案

文章结构:双主双从配置中顺带夹杂着Slave节点启动失败的解决方法闪退问题所在1闪退问题所在2闪退问题所在3闪退问题所在4一、需要2个Linux服务器原本需要4个,但本人电脑太捞了…这2个服务器需先配好JDK8、RocketMQ4的环境二、修改RockeMQ的启动内存闪退问题所在1:服务器性能太捞,而RocketMQ默认的启动所需内存大,服务器蚌埠住就会让RocketMQ滚,这…连NameServer都别想启动了,还说什么Broker从节点呢…1、进入runserver.sh,修改内存

2021-07-07 15:15:31 2467 5

原创 双主双从下RocketMQ-Console的启动

要先启动所有MQ集群的NameServer,RocketMQ-Console才能连接到对应的NameServer地址,才可正常启动

2021-07-03 14:00:43 409

原创 CentOS8安装JDK1.8.0(tar.gz形式)

1、查看系统是否自带JDK,若自带则删除分次执行以下3行命令rpm -qa |grep javarpm -qa |grep jdkrpm -qa |grep gcj执行后只要显示哪怕1条信息,则执行删除JDK操作rpm -qa | grep java | xargs rpm -e --nodeps2、上传JDK压缩包上传jdk-8u291-linux-x64.tar.gz到自己想要的目录中,比如我上传到usr/local/soft解压:[root@localhost~]# cd /u

2021-07-01 23:33:02 306

原创 Mybatis需要通过SqlSessionFactoryBuilder创建SqlSessionFactory的原因(建造者模式)

结论先行简单说来就一个原因:SqlSessionFactory这个对象比较复杂,由多部件组成,直接通过new创建耦合度太高,而使用抽象工厂模式则需要多个工厂来创建SqlSessionFactory的各个部件,之后还得开发者自己手动组装起来,比较麻烦...

2021-06-17 00:03:03 417

原创 IDEA创建SpringBoot时出现initialization failed for ‘https://start.spring.io‘, Connecting time out的解决方法

结论先行:https://start.springboot.io一、https://start.spring.io(不推荐)1、设置中代理改为自动检测,URL为https://start.spring.io2、在Check connection中测试连接https://start.spring.io优点:可用最新版本,最权威缺点:虽该方法运气好可解决燃眉之急,但十有八九下次就不得行了二、https://start.aliyun.com(推荐,但本人不想用)操作与上述方法一样,只是URL不同

2021-06-08 16:02:05 562

原创 通过Redis限制用户对某项服务的使用次数

前提:某服务1s内只能被一个用户调用10次,满足条件后用户会被限制使用该项服务1、用户开始使用该服务,先判断用户是否使用过该服务get user:24(nil) # 说明该用户还未使用过该服务2、开始调用,存入用户数据并设立规矩setex user:24 1 922...797# 922...807为Redis可存储数据的最大值,作为调用1次的标志,1表示user:24在Redis中的生命周期只有1s3、第2次调用(直到调用到第10次,仍为以下操作)incr user:244、第11

2021-05-27 22:10:30 311

原创 Redis面对具有时效性服务的解决方法(使用Sorted_Set)

以VIP服务为例(如去广告VIP…)VIP常具有时效性,可通过Redis的Sorted_Set来保证VIP服务的准时停止:1、将时间作为Sorted_Set的Score,Score最小的(时间/排序为0)会被移除2、不要将整个VIP服务期都放在Redis的Sorted_Set中,只需将VIP服务期最后一小段时间(如最后30分钟)存到Sorted_Set进行排序,以提高处理效率3、被从上述Sorted_Set中移除的数据,对对应的VIP服务进行停用处理...

2021-05-27 22:06:17 267

原创 Redis使用Hash类型的应用场景,提高效率的方法

Hash在购物车上的应用# hmset user_id goods1_id nums1 goods2_id nums2hmset 01 goods_01 1 goods_02 2 # 用户01将一个商品1、两个商品2加入购物车(以Redis形式存储)出现的问题与解决[递进式的,如(3)的方法可解决(2)的问题,但会产生新问题(4)]:​(1)×: 对于商品,由于只将其ID加入Redis,因此用户对于购物车中的商品只看到ID,看不到商品的具体信息​(1)√(2)×: 因此,需要依据商品的ID在对

2021-05-26 21:49:33 534

原创 Dubbo的XML开发的2个问题:端口占用、映射不到Controller、Service等

大前提1、阿Sir,Zookeeper要开啊(Server、Cilent)2、运行之前先在父工程的生命周期中,先clean下再install下(都在Maven中)一、问题1:java.net.BindException: Address already in use: bind1、前提用的IDEA;dubbo有Consumer和Provider,它们有各自的Tomcat,我们应该在各自项目的pom.xml中修改它们的Tomcat端口,使它们不同,但:2、问题出现可能你会困惑,明明修改了两To

2021-05-21 16:52:44 434

空空如也

空空如也

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

TA关注的人

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