自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

寂寞的博客

寂寞是多么无敌!

原创 java免密连接SSH

本文使用2个java库示例如何免密连接ssh执行命令。JSchhttp://www.jcraft.com/ <!-- https://mvnrepository.com/artifact/com.jcraft/jsch --> <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifa

2020-08-03 21:52:45 44

原创 python自动生成数据库设计文档

项目交付了,需要补齐设计文档,对于数据库设计这种,需要写成word文档,懒惰的我们肯定考虑用代码自动生成。下面是使用python读取mysql库,每个表写一个表格,生成word文档。import pymysql.cursorsfrom docx import Documentdoc_path = 'D:\\test.docx'doc = Document()doc.styles['Normal'].font.name = u'宋体'def to_doc_table(rows, table

2020-07-29 20:40:53 37

原创 scala面向对象总结

scala面向对象总结。Java是面向对象语言,但存在着非面向对象内容:基本类型、null,静态方法等;scala是天生面向对象语言,一切皆对象语法总结:scala类默认是public的,不必声明一个源文件可以有多个类的声明类的修饰符查看简单示例:object Demo01 { def main(args: Array[String]): Unit = { var p1 = new Person p1.name = "jimo" p1.age = 18

2020-07-29 07:23:50 36

原创 scala高级函数

scala函数(高级)总结作为参数的函数def plus(x: Int): Int = x + 1println(Array(1, 2, 3, 4).map(plus).mkString(",")) // 2,3,4,5偏函数给定一个列表 List(1,2,3,"abc"), 返回所有数字+1,且过滤掉非数字。方法一:模式匹配,不够优美val list = List(1, 2, 3, "abc")// 模式匹配方式val list1 = list.map { case x: In

2020-07-28 07:34:00 15

原创 scala模式匹配

scala模式匹配总结。基本介绍scala中的match是强大版switch语句。入门案例: val op = "*" val n1 = 10 val n2 = 20 val res = op match { case "+" => n1 + n2 case "-" => n1 - n2 case "*" => n1 * n2 case "/" => n1 / n2 case _ =&

2020-07-27 08:16:36 22

原创 activemq启动报错:Unsupported major.minor version 52.0

使用的activemq版本是 5.15.13, 本来在 JDK 1.8版本下应该正常运行,手动启动没问题,使用crontab脚本检测启动时发现JDK版本不对。INFO: Loading '/software/apache-activemq-5.15.13//bin/env'INFO: Using java '/usr/bin/java'INFO: Loading '/software/apache-activemq-5.15.13//bin/env'INFO: Using java '/usr/bi

2020-07-25 17:17:07 31

原创 windows搭建C++开发环境

在windows上使用CLion搭建C++开发环境。1.安装CLion直接下载安装,购买正版即可。2.安装 mingw 和 makehttp://www.mingw.org/wiki/Getting_Started安装过程简单,先安装基础版,后面根据需要安装其他插件。安装以下几个常用工具:gcc:编译C语言g++:编译C++gdb:调试工具make: 构建工具使用mingw安装:mingw-get install gcc g++ mingw32-make gdb3.安装cma

2020-07-25 10:55:08 32

原创 scala集合

scala集合学习笔记。scala集合基本介绍scala同时支持可变和不可变集合,不可变集合可安全的并发访问2个主要的包:不可变:scala.collection.immutable可变:scala.collection.mutablescala默认采用不可变集合,对于几乎所有集合类,scala都提供了2个版本不可变:集合本身内存地址不可变集合的继承关系图注意scala和java集合体系的不同。

2020-07-22 07:49:53 35

原创 clickhouse导入csv某些列

安装配置清华镜像下载:https://mirrors.tuna.tsinghua.edu.cn/clickhouse/rpm/stable/x86_64/事实上,只需要安装以下3个就可以了:clickhouse-client-20.4.4.18-2.noarch.rpm

2020-07-21 21:06:11 155

原创 JAVA NIO之Selector选择器

实现一个基于JAVA NIO的客户端和服务端, 接收用户输入,服务端接收丢弃。学好Selector,是多路复用的基础。服务端import lombok.extern.slf4j.Slf4j;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.S

2020-07-12 15:25:10 41

原创 java基于NIO的UDP通信

基于java的NIO(DatagramChannel)实现UDP通信的客户端和服务端。UDPServerimport lombok.extern.slf4j.Slf4j;import java.io.IOException;import java.net.InetSocketAddress;import java.net.SocketAddress;import java.nio.ByteBuffer;import java.nio.channels.DatagramChannel;imp

2020-07-12 12:46:56 74

原创 Java NIO文件复制

基于FileChannel复制文件。普通的NIO复制 @Test public void testCopyFile() throws IOException { nioCopyFile("D:\\spark-2.2.3-bin-hadoop2.7.tgz", "D:\\spark-2.2.3-bin-hadoop2.7.tgz.copy"); } /** * @author jimo */ private void nioCop

2020-07-11 15:47:22 21

原创 scala隐式转换

隐式转换笔记问题val num: Int = 3.5 // 转换出错如何使用隐式转换实现?定义是以 implicit 关键字声明的带有单个参数的函数,这种函数会自动应用,将值从一种类型转为另一种类型。implicit def doubleToInt(d: Double): Int = { d.toInt}val num: Int = 3.5 // 转换ok原理: private final int doubleToInt$1(double d) { return (i

2020-07-08 07:16:20 25

原创 spark jobserver加入认证

如何给jobserver加入认证,本文给一些寻找答案的方式。通过官方文档和示例一般就能够解决了。首先启用shiro认证在你的 conf配置文件里加入:shiro { authentication = on # 推荐用绝对路径 config.path = "shiro.ini"}然后在配置同一个目录加入 shiro.ini文件。查看官方给的模板示例:basichttps://github.com/spark-jobserver/spark-jobserver/blob/mast

2020-06-24 20:55:56 67

原创 统计Hive表占用空间大小

首先,Hive的数据是存在HDFS上的,统计Hive表大小就算统计文件的大小。虽然在Hive的管理界面可以看到HDFS文件占用的整体大小,但如何查看每张表占用的空间呢?几经搜索,没有发现hive现成的命令,于是,动手撸一个出来吧。基于python实现下面这部分代码是非常低效的,因为对hive命令不了解,所以走了弯路,但实际上是可行的,20T的文件,共一百多张表,用41个线程跑了2小时才跑完。核心就是:hadoop fs -ls /path# hadoop fs -ls /user/hive/wa

2020-06-20 08:45:42 235

原创 scala惰性函数

scala惰性函数原生支持惰性,懒加载。回复java的懒加载/** * Java懒加载 */public class LayLoad { private String prop; public String getProp() { if (prop == null) { prop = initProp(); } return prop; } private String initProp

2020-06-14 11:51:11 52

原创 10分钟系列-zookeeper入门

10分钟zookeeper总结。安装配置解压修改配置:zoo.cfg, 修改dataDir启动:bin/zkServer.sh start默认是standalone分布式部署同步安装包在zkData数据目录下创建一个myid文件编辑myid,输入唯一标识,比如2,3,4配置zoo.cfg :# server.A=host1:B:C# A: myid编号# B:数据通信端口# C:选举通信的端口server.2=host1:2888:3888server.3=host2:2

2020-06-13 09:28:36 63

原创 python多线程扫描端口

常用的端口扫描工具:netcatnc -z -v -n IP 10-65535如果简单的一台机器,几个端口没问题,很多台机器就麻烦了。下面是一个多线程扫描的python小程序:使用telnet,默认扫TCP端口#!/usr/bin/env pythonimport telnetlibimport threadingimport queueimport loggingloggers = {}server = telnetlib.Telnet()def get_ip_statu

2020-06-12 21:26:17 87

原创 当我想为程序员的生活写本书...

我是一名不知名的作家,全职体验了一年多程序员的生活,于是不忘初心的我想为程序员写本书。陆游曾经说过:“纸上得来终觉浅,绝知此事要躬行”。从我这一年多踏入IT这一行,在国企和互联网企业都干过,这可以算2个极端吧,虽然可以分得很细,比如创业公司、传统转型企业等,但还有大好时光,一定会去体验的。当我气定神闲地打开笔记本,挺直了腰背,深吸一口气,打下了几个大字:这就是程序员的生活还记得小学老师教过一种文体结构吗?--------总分总没错,非常适合本书。列提纲出生活着死去递归拆分形成子结构。

2020-06-09 07:56:05 160

原创 如何检测ActiveMQ的死活

最近为了恢复生产和经济,国家希望人们多多消费,为此出台了一系列补贴政策,简单总结就是:买买买走走走吃吃吃玩玩玩但是本文的议题是:如何使用脚本检测ActiveMQ的死活?然后重启。定义死活的概念死得很彻底:pid都没了进程还在,只是不能正常使用,比如发布消息,这种情况有很多原因,比如内存溢出:2020-06-01 23:37:42,480 | INFO | Ignoring no space left exception, java.io.IOException: Java heap

2020-06-06 13:22:17 887

原创 论战被黑客入侵的MQ
原力计划

来看一下场景:有一个监控系统,需要把日志实时推送到页面上显示,你可能觉得只需要一个消费订阅通道就行了;那再升级一下,这个监控系统同时监控了1000个应用,每个应用看到的日志是不一样的,那一个通道显然不够了。由于历史遗留问题,这里采用的ActiveMQ来做消息中间件,在之前的方案中:前端是直连MQ的,基于Stomp协议,一切都工作得很好,直到有一天发现了MQ里的入侵代码。。。下面来演示这种场景:容易被攻击的ActiveMQ前端 var destination = "该应用的队列名";

2020-05-17 10:34:11 131

原创 ActiveMQ问题与调优

使用ActiveMq的问题。javax.jms.InvalidClientIDException: Broker: localhost - Client: client-id2020-05-13 08:58:53,108 | WARN | Failed to add Connection id=ID:host04-36868-1589330662649-3:7467, clientId=1589290606450 due to {} | org.apache.activemq.broker.Trans

2020-05-14 20:50:38 110

原创 spring应用集成网关代理

记录下java web场景下几个实现网关代理的库。为什么要网关微服务下最基础的部分,唯一入口,用于代理、认证、限流等等即便还没做成微服务的系统,如果涉及多个应用需要用同一个登录才能访问,这时候也需要一个最外层的代理来做;计算机世界里没有加一层解决不了的事。下面是几个探索的方案。基于Spring Cloud Gateway如果基于spring cloud这一套,那么目前gateway一定是首选。用法不多说,只谈一点:由于gateway基于webflux实现,和 starter-web 模

2020-05-08 21:15:28 166

原创 JanusGraph快速入门
原力计划

笔者由于工作中需要用到图数据库,所以花2小时研究了下Janus Graph这个开源项目,下面是一些学习心得,如果后面使用有更多启发再更新,如有错误,欢迎纠正。学习一门技术最标准的方式是从官网入门:https://docs.janusgraph.org/然后搞清楚以下问题即可:是什么?为什么出现?基本原理怎么使用再深入理解原理1.JanusGraph是什么本质问题是图数据库是什么...

2020-04-18 20:32:26 211

原创 作为一名帝都的程序员,我为什么去捡垃圾?
原力计划

自从我在副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?这篇博客评论之后,我回答的评论点赞数飙升到第一:我说的是实话,大学以前,我确实将我所在的小城市都搜罗了一遍,自从读完大学到现在工作,程序员的时间确实很少,且不说剩余价值被压榨的问题,怎么在乱世中求生存才是我们要关注的。笔者也是某著名互联网公司的程序员,996都是常事,即便是疫情期间,007也没停过,不过,今天不谈工作,就谈捡垃圾。...

2020-04-12 16:03:29 13995 106

原创 spring实战代码之解析CRON表达式

spring实战代码之解析CRON表达式如果我们要用spring的定时器功能,那么一般会用CRON表达式,事实上,每个框架实现的CRON解析还不同,所以需要用相应的解析规则:import org.springframework.scheduling.support.CronSequenceGenerator;try { int size = 10; // 每月1号执行 String ...

2020-04-09 19:46:56 168

原创 activemq消息清理

本文讲述activemq的消息清理方法:配置法命令行purge和delete有什么区别呢我们看到管理界面的queue里有purge和delete,而且注意:只有queue有purge。他们的区别很简单:purge: 只是清空队列里的消息,并把消息放入已经出队里delete: 删除这个queue,在列表里会消失为什么要删除过期的queue或topic?因为,如果不删除不仅...

2020-04-07 21:21:01 980

原创 springboot实战代码之如何优雅地返回图片
原力计划

springboot实战代码:【如何优雅地返回图片】本文将会总结返回图片地常用方法:流方式返回:主要是实现方式不一样,基于response和HttpConvertMessagebase64返回说明图片可以来自很多地方,可以是本地文件夹,也可以是网络流,或是数据库二进制,这里为了简单起见,就用本地文件。@RestController@RequestMapping("/")publ...

2020-04-04 11:59:27 499

原创 springboot实战代码系列之【集成mybatis-plus和druid实现多数据源切换】
原力计划

springboot实战代码系列之【集成mybatis-plus和druid实现多数据源切换】为什么要写本文?官方文档给的不够详细,下面是一个能即读即用的版本主要也方便自己以后参考代码,不再重复查找本文使用的springboot版本:2.2.6.RELEASE添加依赖查看一下最新版本的插件:https://mvnrepository.com/artifact/com.baomido...

2020-04-01 20:13:43 223

原创 springboot实战代码之使用JavaMail发送邮件的封装

springboot实战代码之【使用JavaMail发送邮件的封装】,拿来即用。1.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail&lt...

2020-04-01 08:59:17 70

原创 那些年珍藏的linux监控命令

如果只会用个top和ps,岂不是太大材小用了,而且很多参数都没用上。下面是一些实际的解决方案,本文非讲解参数或原理,具体参数含义有兴趣自行查询。查看内存占用最多的进程实际一般只需要知道内存占用,及其进程启动命令,知道是哪个程序就好。ps大法# ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5 9.3 0.1 903117...

2020-03-30 20:59:17 50

原创 推荐一款替换swagger的无侵入文档生成工具-SmartDoc
原力计划

在前后端分离的今天,为了保证进度,前后端一般同步进行开发,所以后端需要先给出接口文档,再写实现。经过笔者不断地寻找写文档的优化方案,至少尝试过以下方式:手写,如果是代码还没开始写,这种方式可以当作思考的过程,但是后面改起来也不方便;如果代码写完了再来写文档,就会很自然感觉有点重复性工作了;基于Swagger的注解,虽然能够自动生成文档,但是侵入性太强,曾经用过;基于Spring Doc,...

2020-03-26 19:06:38 1800 1

原创 springboot如何在静态类中获取配置-配置获取全解
原力计划

springboot如何获取配置文件的配置?springboot如何在静态类中获取配置?以下所有示例都通过验证。1.定义配置文件格式这里主要指常见的配置文件:properties, yaml.当然,json也可以作为配置,不过不是首选。使用的配置文件:application.propertiesapi.key=jimoapi.password=passwordapplic...

2020-03-25 20:09:37 1117

原创 当公司让我写软著...

公司要写软著,让我把项目代码复制到word里。我开始还傻傻的复制了几个java类,然后突然醒悟:能用程序解决的事,绝不动手,因为以后还会经常用到,备份下,虽然及其简单,一个递归+读写文件。再复杂一点,考虑文件编码和自动过滤。如果只是单纯统计代码行数,那IDEA的Statistic插件一定很适合。 import org.junit.jupiter.api.Test; ...

2020-03-23 20:29:57 179

原创 unzip解压大小限制-End-of-central-directory signature not found

unzip 解压大小限制# unzip network.zip Archive: network.zip End-of-central-directory signature not found. Either this file is not a zipfile, or it constitutes one disk of a multi-part archive. In th...

2020-03-19 11:01:55 220

原创 如何自己实现lombok功能-Pluggable Annotation Processing的讲解与实践

如何自己实现一个lombok?lombok具有超级实用简单的注解,减少了很多代码的书写,谁用谁知道。但是具有探索精神的程序员肯定会问他是怎么实现的?凭经验我们知道,其是在编译阶段直接生成了代码,与运行时是无关的,它的github地址:https://github.com/rzwitserloot/lombok下面是一个很简单的基本实现,主要涉及到以下知识点:Pluggable Annot...

2020-03-19 09:05:32 189

原创 The server was not able to produce a timely response to your request

如果使用的jobserver的同步提交任务,像这样:jobserver主机域名/jobs?...&sync=true&timeout=1000虽然这里指定了等待1000秒,但是出现了标题中的超时问题,这时需要修改jobserver的配置文件:位于jobserver目录的yarn.confspray.can.server { # Debug timeouts ...

2020-03-17 20:13:48 118

原创 ActiveMQ同步等待接收消息

需要模拟一个同步接收消息的MQ消费者:场景如下:有2个APP,叫APP1 , APP2和APP3APP1给APP2发送了一个请求,APP2再去请求APP3,计算由APP3完成,APP2我们没法改变,但可以改变APP3APP1要同步等待APP2的结果返回,可以HTTP轮询,但太耗资源,所以想到MQAPP3计算完了发送一个MQ消息APP1接收到MQ消息继续后面的操作要实现APP1如何...

2020-03-17 19:58:27 121

原创 B树详细图解与Java完整实现

本文的目的是从B树的起源讲起,再到多种语言的实现,以达到对B树有一个全面的认识,如果你是一个正常的程序员,那么看完就应该可以实现一个B-Tree了(如果你已经会了,那么也不会看完)。B树的起源在1970年,Bayer&McCreight发表的论文《ORGANIZATION AND MAINTENANCE OF LARGE ORDERED INDICES 》(大型有序索引的组织和维护)中提出...

2018-09-16 17:51:42 6619 5

原创 前后端分离之Springboot后端

这是上一篇博客前后端分离之Java后端的重写. 源码 前后端分离的后端主要解决的就2个问题 : 跨域访问(CORS)和token校验,下面快速说明.1.项目环境使用Intellij IDE. 项目结构: 2.跨域访问解决跨域很简单,翻一下官方文档很容易解决,我们就使用全局的通过注解实现的方式:@Configuration@EnableWebMvcpublic class WebConfi

2017-12-12 18:45:36 21481 10

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