自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(239)
  • 论坛 (3)
  • 收藏
  • 关注

原创 三个线程顺序打印ABC,各打印10次

也是面试被问到的题,通过ReentrantLock实现了下,自己测试了下没有问题,crud几年,对多线程了解太少,有不足的地方请大神们指正,有更好的方法也请大神们指导!实现思路创建3个线程,并且给3个线程编号,通过对3取模来判断是否轮到当前线程打印,且通过线程编号来判断应该打印哪个字母代码实现/** * 三个线程顺序打印ABC,各打印10次 * * @author xxx * @date 2021/4/25 */public class Synchronized...

2021-04-25 16:17:15 9

原创 三个线程顺序打印递增数组12345...直到100

面试被问到的题,回来看了下synchronized,wait(),notifyAll(),自己写了下代码,不知道是不是有问题,多次测试是可以试下,先做下记录,之后完善下,多些几种实现方式。用到的技术synchronized这里就不多做介绍了,相信只要经历过面试这个这个肯定是熟悉的不能再熟悉了。wait()函数简单地说,当我们调用wait()方法时,会强制当前线程等待,直到某个其他线程在同一个对象上调用notify()或notifyAll();notifyAll()函数该方法只是唤

2021-04-25 15:48:04 12

原创 是时候做出改变了

工作5多,真正转开发大概3年多,也是从3年前开始在csdn上写博客,或抄或写,大大小小也有200多篇,有前端,有后端,但是总结来说【使用记录类】的文章居多,这也反映了自己在平常工作中对待技术的态度:能用就行,不求甚解。这也导致年后找工作各种碰壁,各种被怼。其实被怼能接受,估计不少程序员朋友也一样,但是不能每次找工作准备一个月,又开始温水煮青蛙,下次找工作再准备一个月?而且随着年龄越来越大,如果平常没有过硬的技术沉淀,年龄越大,别人要求越高,靠临时抱佛脚?有些东西不是准备然后死记硬背就能解决...

2021-04-02 19:12:56 82 1

原创 Docker-Desktop通过docker-compose安装RocketMQ

1. 准备rocketmq的配置文件broker.conf目录:\data\brokerconf\broker.conf内容:需要注意,brokerIP1配置,改成自己的broker对应ip,我是本地启动,所以配置为127.0.0.1# Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreements. See the NOTICE file dist

2021-03-31 16:52:13 57 1

原创 Docker-Desktop安装RabbitMQ

做记录使用,直接写命令1. 拉取rabbitmq镜像2.docker run启动docker pull rabbitmq:3.7.7docker run -d --name rabbitmq3.7.7 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:3.7.7-management...

2021-03-18 11:15:45 56

转载 原来这就是线程池

看到一篇文章,图文并茂,解释的很透彻转发:https://www.cnblogs.com/flashsun/p/14368520.html

2021-02-05 11:28:37 27

原创 前端判断String字符串是否是JSON格式

没找到直接的方法,只能通过转换json时抛出异常,通过try-catch来处理判断,代码如下:checkIsJsonString(str){ try { //通过JSON将str转换为json对象,如果转换出现异常,进入catch,返回false let obj = JSON.parse(str); if (typeof obj === 'object' && obj) { return true; } else { return false; }

2021-02-03 11:10:40 121

原创 myqsl查询一个表数据,插入到另外一个表中

项目开发中,遇到数据库优化的地方,需要刷数据,将旧表中的数据插入到新表中,直接写sql就可以实现:INSERT INTO a_table( name, age, sex, create_time, update_time) SELECT *FROM ( SELECT b.name, b.age, b.sex, b.create_time, b.update_time FROM b_table b ) tempORDER BY te.

2021-01-26 08:56:34 16

原创 vue服务前端模式使用history,后端通过nginx处理刷新请求问题

直接上nginx配置upstream web { server 10.10.10.10;} server { listen 80; server_name aaa.test.com; proxy_intercept_errors off; ignore_invalid_headers off; client_max_body_size 512M; proxy_s

2021-01-21 10:24:18 39

原创 kubectl常用命令

kubectl常用命令1.获取namespace下的pod列表kubectl get pods -n namespace//查看pod更详细信息kubectl get pods -o wide2.获取pod详细信息kubectl describe pod podname -n namespace3.以yaml格式查看pod信息kubectl get pod podname -n namespace -o yaml4.导出pod基本信息为yaml文件kubectl

2020-12-15 11:41:54 59

原创 springboot服务使用aspect切面实现方法日志打印

项目每次写controller方法,都要在开始和结束打印一行日志表示方法开始和结束,每个方法都要写,太过于麻烦和重复,想到了spring的aop切面,所以使用@Aspect切面和自定义log注解实现了下切面日志打印.AOPAOP (Aspect Orient Programming),直译过来就是 面向切面编程。AOP 是一种编程思想,是面向对象编程(OOP)的一种补充,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等等,这里主要是做一下方法的日志打印。a...

2020-11-30 09:53:25 100

原创 Javascript内存溢出,FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

问题: 在npm run build的时候,提示报错,报错信息如下:TAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memoryFATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory1: node::Abort() [node]2: 0x11e7fec [node]3: ...

2020-11-11 10:26:00 212

原创 win10系统docker安装Mongodb

使用docker-compose,由于我使用的是Docker Desktop,默认安装了docker-compose,否则需要自己安装,可以用下面命令检查是否安装了docker-composedocker-compose -v这里就不介绍安装,直接上docker-compose.yml代码version: '3'services: mongo-db: image: mongo:latest container_name: mongo-db restart: al

2020-11-09 17:33:12 204

原创 win10系统docker安装redis

使用docker-compose,由于我使用的是Docker Desktop,默认安装了docker-compose,否则需要自己安装,可以用下面命令检查是否安装了docker-composedocker-compose -v这里就不介绍安装,直接上docker-compose.yml代码version: '2'services: redis: image: redis container_name: redis restart: always comm

2020-11-09 15:08:03 169

原创 jsch链接sftp,连接未释放,进程一直存在

问题:项目中使用了sftp服务器存储文件和图片,突然有一天sftp的服务器报警,提示机器内存被打满了,赶紧上机器上看看,发现sshd的进程特别多,两万多个。。。都是sftp的连接,这才想到可能sftp建立连接后没有关闭释放;解决方案:添加logout方法,在sftp上传下载逻辑执行完之后,执行sftp的logout方法: /** * 关闭sftp连接 */ public void logout(){ if (sftp != null) { if (sftp.isConne

2020-11-05 18:35:58 364 1

原创 Maven工程获取工程版本号,groupId,artifactId

maven工程编译完后,需要获取版本号,groupId和artifactId做记录,找到两个方法:1. pom.properties 文件 一般在编译完的target目录下,有一个maven-archiver目录,在这个目录下会生成一个pom.properties文件,保存了工程gav坐标信息;./target/maven-archiver/pom.properties#Generated by Apache Maven#Wed Nov 04 11:21:44 CST 2020ve..

2020-11-04 14:32:03 322

原创 Linux系统下设置mvn和java环境变量

项目需要,需要不同的工程使用不同的mvn和java版本,一台机器上可能多个服务需要不同的mvn或者java版本,只能通过 export命令设置工作空间的环境变量,直接上命令:设置mvn版本:export MAVEN_HOME=/home/wy/apache-maven-3.1.0$MAVEN_HOME/bin/mvn clean package -DskipTests设置java版本:export JAVA_HOME=/home/wy/java/jdk1.8.0_151/$JAVA_

2020-11-04 14:09:10 161

原创 unreported exception E; must be caught or declared to be thrown

在本地编译java服务的时候,编译报错:未报告的异常错误E; 必须对其进行捕获或声明以便抛出error: unreported exception E; must be caught or declared to be thrownE extends Exception declared in method rethrowFunction(Function_WithExceptions) 看提示是在报错是在rethrowFunction(Function_Wi...

2020-11-03 10:17:46 678

原创 linux命令实现git代码copy到svn仓库并提交

项目需要,将git仓库master代码copy到svn仓库的主干上,需要在linux上实现,只能老老实实敲命令了。1. 解决方案 非常原始,首先创建/git目录,然后clone git仓库master最新代码,copy到/svn目录下,删除.git文件,然后使用svn add,commit到svn的分支上。2. 直接写命令:#创建git文件夹并进入目录,mkdir -p:递归创建目录,即使上级目录不存在,会按目录层级自动创建目录mkdir -p /code/...

2020-10-21 17:43:02 61

原创 Linux下cp命令复制隐藏文件

在linux机器上clone了一份代码,需要将代码cp复制到另外一个目录下. 因为复制的时候,只需要代码,不需要.git文件夹,所以第一次使用cp -r命令,直接复制过去,发现正好不不会复制.git文件,以为完美。。。cp -r /aaa/* /bbb/ 然后复制过去后发现了问题,因为代码库根目录下存在文件,也是以点[.]开头的,比如前端工程的.babelrc文件。linux认为点开头的为隐藏文件,所以在使用cp -r的时候.babelrc文件也被忽略了,这显...

2020-10-21 17:10:28 946

原创 Java实现写临时文件/脚本,并调用临时脚本执行

项目需求,需要通过java调用shell脚本实现逻辑,但是又不想java服务绑定一个脚本,每次部署都得带着脚本,所以想实现Java写一个临时脚本,执行完就删掉(测试了下,shell脚本可以在自己脚本里删除自己)。遇到的问题:1. 换行问题 使用流在写文件时,一行一行写,需要换行,就在每行后面拼上了\r\n,写出来发现不好使,后来找到System.getProperty("line.separator")方法,会根据系统类型生成系统自己的换行符,完美解决换行问题;...

2020-10-21 15:43:34 103

原创 Git仓库迁移

项目需求,需要把git库从另外一个代码管理平台迁移到 新的代码管理平台,并且要保留原仓库的提交历史,这里用到了git两个命令:git clone --bare 旧仓库地址 / git push --mirror 新仓库地址:1.从原地址克隆一份裸版本库git clone --bare https://username:password@git.old.com/demo.git--bare 创建的克隆版本库不包含工作区,直接就是版本库的内容,这样的版本库称为裸版本库。这里u...

2020-10-21 14:55:35 41

原创 java8根据元素属性进行列表去重

直接上代码//根据name和value去重List<Label> distinctLabels = allLabels.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getName() + ";" + o.getValue()))), ArrayList::new));

2020-10-14 14:43:57 74

原创 npm查看包版本相关命令

1. 查看指定包的版本npm info vue2. 查看指定包版本列表npm info vue versions3. 查看项目中依赖的指定包是哪个版本npm ls vue

2020-09-21 09:46:29 475

原创 语义化版本控制

简单记录一下

2020-09-18 19:08:28 29

原创 package.json中^和~的区别

node项目的package.json 文件列出了项目所依赖的插件和库,同时也给出了对应的版本,但是在版本前面还有符号:'^'(插入符号)和'~'(波浪符号),介绍下两个符号的区别:如下图依赖1.^插入符号 他将会把当前库的版本更新到当前主版本(也就是第一位数字)中最新的版本。放到我们的例子中就是:"axios": "^0.18.0", 这个库会去匹配0.x.x中最新的版本,但是他不会自动更新到1.0.0。2.~波浪符号 他会更新到当前次版...

2020-09-18 14:01:26 411

原创 win10系统docker搭建sinopia NPM私服

项目中需要自己搭建一个npm的私服,用来发布一些项目中公共的小组件,自己在本地使用win10的Docker Desktop容器搭建了个sinopia,自己测试使用;1.npm和node环境这个是第一步也是必须的,网上好多教程,这里不介绍了2.拉取sniopia的镜像这里用到了keyvanfatehi/sinopia:latest,直接pull就行docker pull keyvanfatehi/sinopia3.自己做了一个docker-compose配置,使用do...

2020-09-10 19:47:48 91

原创 localStorage,sessionStorage和cooke的区别

直接上对比:特性 localstorage sessionStorage cookie 生命周期 除非被清除,否则永久保存 仅在当前会话下有效,关闭页面或浏览器后被清除 一般由服务器生成,可设置失效时间。如果在浏览器端生成Cookie,默认是关闭浏览器后失效 存储数据大小 一般为5M 4k左右 与服务端通信 仅在客户端(即浏览器)中保存,不参与和服务器的通信 每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题

2020-09-09 17:20:07 46

原创 SpringBoot内置Tomcat支持多大并发量和连接数

SpringBoot内置Tomcat,再默认设置中,Tomcat的最大线程数是200,最大连接数是10000。支持的并发量是指连接数,200个线程如何处理10000条连接的? Tomcat有两种处理连接的模式,一种是BIO,一个线程只处理一个连接,另一种就是NIO,一个线程处理多个连接。由于HTTP请求不会太耗时,而且多个连接一般不会同时来消息,所以一个线程处理多个连接没有太大问题。...

2020-08-13 15:37:06 2855

原创 https域名连接websocket

问题: 之前项目访问域名是http的,使用80端口,由于安全原因,改成https的域名。改成https后,前端websockt连接出现了了问题,报错:1 Mixed Content: The page at 'https://xxx' was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint 'ws://xxx'. This request has been blocked; ...

2020-08-03 12:42:30 937

原创 dependencies和dependencyManagement以及plugins和pluginManagement的区别

dependencies和dependencyManagement区别 dependencies:子POM会完全继承父POM中声明的dependencies,如果子POM中没有声明某个依赖项,但是父POM中声明了该依赖项,就会直接从父POM中继承该依赖项,如果子POM也声明另外相同依赖包,那么子POM会覆盖父POM中依赖声明。 dependencyManagement:里只是声明依赖,并不实现引入,除非子POM显示声明需要用该依赖项。如果不在子POM中声明依赖,是不会从...

2020-07-30 13:55:56 143

原创 VUE中使用codemirror高亮显示代码

需求: 项目中摇实现在线浏览代码功能,选择使用codemirror,这里使用了一个别人分装的vue-codemirror插件1.安装npm install vue-codemirror --save2.在组件中引用<codemirror :value="fileContent" :options="cmOptions"></codemirror>//引入vue-codemirrorimport { codemirror } from '...

2020-07-29 09:40:18 1291

原创 从linux下获取的文件目录字符串列表,转换成树形结构展示到前端

需求: 需要从linux下获取递归获取指定目录下的所有子目录,然后将数据发送给后端,处理成树形结构数据展示在前端1. 首先在Linux下通过shell脚本获取数据,并通过kafka发送到后端###############################################################################read_dir()#####################################################...

2020-07-20 09:53:30 307 1

原创 埋点--Vue前端通过自定义指令实现埋点功能

需求 项目新版本新功能,需要再新页面添加埋点功能,记录用户的使用情况和使用习惯。因为前端项目使用的是Vue,所以选择使用Vue的自定义指令来实现埋点功能;埋点,主要记录 “谁 什么时候 做了什么事情”,直接上代码:1. 自定义指令import Vue from 'vue'// 自定义埋点指令Vue.directive('track', { //钩子函数,只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置 /* * el:指令所绑定...

2020-07-17 09:43:10 1270

原创 Linux下执行shell脚本,提示 No such file or directory

问题: 在项目中java项目需要调用脚本执行逻辑,但是在调用脚本是提示 “No such file or directory” 脚本不存在,但是进入目录查看,脚本是存在的,vim编辑脚本,可以看到下图:这是因为脚本在windos下编辑的,在linux下无法执行。解决办法:在windows下使用nodepad++打开文件,选择 视图-->显示符号-->显示所有符号可以看到出现CRLF符号然后再选择 编辑-->文档格式转换-->...

2020-07-17 09:31:09 423

原创 mysql版本号xx.xx.xx类型字段排序问题解决

项目开发中mysql有版本号字段,类似于1.0.0,1.0.1这种,需求是按照版本号倒序排列。直接使用字段排会根据字符串进行排序,这样1.10.1和1.2.1进行排序,本来想让1.10.1排在前面,但是字符串排序2比1大,1.2.1就排在了前面,不是我们想要的结果。想到把version版本号拆分成三个字段,分别排序。这里用到了myssl的SUBSTRING_INDEX.SUBS...

2020-04-30 09:41:45 951

原创 前端ES6获取两个数组的差集

直接上代码,用到了filter和somelet arrA = [{id:1,age:21},{id:2,age:22},{id:3,age:23},{id:4,age:24}]let arrB = [{id:1,age:21},{id:2,age:22}]let arrC = arrA.filter(a=>!arrB.some(b=>b.id==a.id))conso...

2020-04-29 09:43:06 1423

原创 win10系统docker安装kafka

由于kafka依赖zookeeper,所以使用到了docker-compose,由于我使用的是Docker Desktop,默认安装了docker-compose,否则需要自己安装,可以用下面命令检查是否安装了docker-composedocker-compose -v这里就不介绍安装,直接上docker-compose.yml代码version: '2'servi...

2020-01-17 15:56:23 1746 1

原创 win10系统docker安装mysql和nginx

自己本地安装了docker desktop,安装mysql,自己本地用,可以方便的切换版本进行测试等;很简单,直接上代码mysql#拉取最新的mysql,也可以在后面指定版本docker pull mysql#查看拉取结果docker images#直接docker run创建启动容器即可docker run -it -v /D/develop/docker/mysql/d...

2020-01-17 09:31:59 292

原创 前端设置dialog弹出框框关闭动画效果

项目前端使用element-ui框架,其提供的dialog弹出框没有过渡动画,比较单调,项目需要实现关闭弹出框时,弹出框逐渐缩小并移动到右上角消失。只能自己手动修改css样式,这里用到了animation 和 transform属性;贴代码:其中.popout-box的class属性是通过befroe-close绑定上去的。模态框打开的时候没有,关闭前设置class,然后通过class...

2020-01-14 15:03:27 2487

空空如也

空空如也

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

TA关注的人 TA的粉丝

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