使用Java将List<String>元素按指定分隔符连接成字符串
在日常开发工作中,经常会遇到需要将 List<String> 转换为使用某个符号连接的字符串。如将 List<String> 转换为按英文逗号(,)分隔的字符串: 123456789101112List<String> weekList = Arrays.asList( "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" );// 将 weekList 输出转换为按英文逗号(,)分隔的字符串://...
在macOS编译JDK14
一、系统环境操作系统:macOS 10.15.4(Catalina) 处理器:2.6 GHz 双核Intel Core i5 内存:8G 硬盘:512G NOTE: 在 macOS 平台编译 OpenJDK 14,操作系统版本官方建议至少使用 Mac OS X 10.13(High Sierra),可用磁盘空间建议至少 6 GB。 二、准备工作2.1 Boot JDK矛盾的是,为了编译 OpenJDK,我们需要预先安装一个版本的 JDK,官方称这个 JDK 为 Boot JDK,即引导 JDK。 何为 Boot JDK我们知道,OpenJDK 源码由多个部分组成,包括 HotSpot、JDK 类库、JAXP 等。其中一部分的代码是使用 C/C++ 编写的,如 HotSpot;而更多的代码其实是使用 Java 实现的,如我们熟知的 JDK 类库。编译这些 Java 代码就需要用到另一个已经编译的 JDK,官方称这个 JDK 为 Bootstrap JDK,即引导 JDK,作用是编译 OpenJDK 源码中 Java 代码。 如何选择 Boot JDK...
CentOS7 系统中,如何禁止Linux系统用户通过SSH登录服务器?
出于安全考虑,有时候我们会禁止系统上的某些用户使用 ssh 命令登录服务器。例如,用于启动 MongoDB 服务的用户 mongod,就不允许通过 ssh 命令进行登录。在 CentOS 7 系统中,可以通过修改配置文件 /etc/ssh/sshd_config 达到禁用的目的。 一、单个用户这里以禁用 mongod 用户为例,具体步骤如下: 打开配置文件 /etc/ssh/sshd_config, 1vim /etc/ssh/sshd_config 在文件末尾加入以下内容,只允许后面的用户使用 ssh 命令登陆, 1DenyUsers mongod 保存文件修改,并退出,重启 ssh 服务,即可禁用 mongod 用户通过 ssh 命令登陆。 1service sshd restart 二、多个用户若需要禁用多个系统帐户使用 ssh 命令登陆服务器,只需把系统账户名追加在 DenyUsers 行尾,并以空格隔开即可,如禁用 mongod、kafka、robbot 三个用户: 1DenyUsers mongod kafka...
Apache Kafka(二):CentOS 7下安装Apache Kafka
系统要求Kafka 服务端代码是用 Scala 开发语言编写的,Scala 是 JVM 系语言中的一种,这意味着用 Scala 编写的源代码编译之后也是 Java 字节码,并运行在 Java 虚拟机上。因此,在开始安装 Kafka 之前,我们需要先在系统上安装 JDK(Java SE Development Kit, Java SE开发套件),JDK 包含的 JRE(Java SE Runtime Environment,Java 运行时环境)是运行 Java 应用程序所必需的。 多数情况下,推荐安装 JDK 8 及以上的版本,因为 Kafka 自 2.0.0 版本开始,就已经正式摒弃对 Java 7 的支持了。本文安装示例采用的是 JDK 8 版本。 在 CentOS 7 安装 JDK 可参考这篇博文—— CentOS7下安装JDK1.8 另外,运行 Kafka 还需要安装 Apache ZooKeeper 服务,该服务是用来同步分布式进程。ZooKeeper 安装可参考这篇博文——在CentOS7系统安装和配置ZooKeeper。 安装Kafka推荐将 Kafka 安装在...
Apache Kafka(一):简介
Kafka简介Kafka 最早是由 LinkedIn 公司开发的一套分布式的高性能消息引擎服务,于 2011 年初开源,并于 2012 年 10 月 23 日从 Apache 孵化器毕业,成为 Apache 的顶级项目。 Kafka 最初的设计目的是用于处理海量的日志,后来历经多年发展和完善,如今的 Kafka 集消息系统、存储系统和流式处理平台于一身,在消息引擎领域是执牛耳者,在大数据工程领域、流计算领域也起着举足轻重的作用,具有非常广阔的应用场景。 为什么要掌握Kafka因为掌握了 Kafka,手上就多了一份拿高薪的筹码。 援引美国 2019 年 Dice 技术薪资报告中的数据,在十大薪资最高的技术技能中,掌握 Kafka 以平均每年 12.7554 万美元排名第二!虽然这是美国人才市场的数据,但从国内互联网公司的技术招聘需求中,我们也可以看出 Kafka...
通过yum方式在CentOS7系统安装MySQL8
一、添加 MySQL YUM 源根据自己的操作系统版本选择合适的安装源(https://dev.mysql.com/downloads/repo/yum/),这里选择的是 CentOS 7,MySQL 8。点击 Download 按钮,进入下载页。可以直接下载 rpm 文件,再上传到 CentOS 7 系统,也可以通过复制链接地址(地址为:https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm),进入 CentOS 7 系统,通过 wget 命令下载。 这里以进入 CentOS 7 系统,通过 wget 命令下载为例,展示如何添加 MySQL yum 源,相关命令如下: 12345678# 进入存放 rpm 文件的目录$ cd /homw/software# 下载 rpm 文件$ wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm# 通过 rpm -Uvh 安装$ sudo rpm -Uvh...
Spring Boot 2.x 集成Jpa示例
一、如何集成首先,在 pom 文件新增 redis 依赖: 1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency> 接着修改项目配置文件 application.properties,增加 redis 配置 1234# redis hostspring.redis.host=172.24.58.226# redis portspring.redis.port=6379 经过上面简单的两步,即可在项目中使用 StringRedisTemplate 和 RedisTemplate<Object,Object>,因为从 Spring Boot 2.0 开始,Spring...
Spring Boot 2.x 集成Redis示例
一、如何集成首先,在 pom 文件新增 redis 依赖: 1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency> 接着修改项目配置文件 application.properties,增加 redis 配置 1234# redis hostspring.redis.host=172.24.58.226# redis portspring.redis.port=6379 经过上面简单的两步,即可在项目中使用 StringRedisTemplate 和 RedisTemplate<Object,Object>,因为从 Spring Boot 2.0 开始,Spring...
在CentOS7系统安装和配置ZooKeeper
安装步骤 下载安装包,命令如下, 1wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.6/apache-zookeeper-3.5.6-bin.tar.gz 输出结果: 12345678910111213# 当前目录为 /home/software[jump@205 software]$ wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.6/apache-zookeeper-3.5.6-bin.tar.gz--2019-12-12 16:43:27-- http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.6/apache-zookeeper-3.5.6-bin.tar.gzResolving mirror.bit.edu.cn (mirror.bit.edu.cn)... 219.143.204.117, 202.204.80.77,...
【ZooKeeper启动失败】Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain
在 CentOS 7 系统中安装好 ZooKeeper 后,进入安装目录 /usr/local/zookeeper/apache-zookeeper-3.5.6/bin/,使用命令 ./zkServer.sh start 启动,发现启动失败: 1234[zookeeperu@202 bin]$ ./zkServer.sh startZooKeeper JMX enabled by defaultUsing config: /usr/local/zookeeper/apache-zookeeper-3.5.6/bin/../conf/zoo.cfgStarting zookeeper ... FAILED TO START 进入目录 /usr/local/zookeeper/apache-zookeeper-3.5.6/logs,查看日志文件: 12[zookeeperu@202 bin]$ cd /usr/local/zookeeper/apache-zookeeper-3.5.6/logs[zookeeperu@202 bin]$ vim...
关于MySQL数据库自增主键,说几个容易被忽略的点
自增主键是什么自增主键是指在自增列上定义的主键。自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,索引也更紧凑。 在建表语句中一般是这么定义的: 1NOT NULL PRIMARY KEY AUTO_INCREMENT 如: 12345CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `step` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB; 自增值保存在哪里不同的数据库引擎对于自增值的保存策略不同: MyISAM 引擎:自增值保存在数据文件中; InnoDB引擎: 在 MySQL 5.7 及之前的版本,自增值保存在内存里,并没有持久化。每次重启后,第一次打开表的时候,都会去找自增值的最大值 max(id),然后将 max(id)+1 作为这个表当前的自增值。 在 MySQL 8.0 版本,将自增值的变更记录在了 redo log 中,重启的时候依靠 redo log...
【Git常用命令】查看/修改远程仓库地址
Git查看远程仓库地址命令: 1git remote -v e.g. 1234# 查看远程仓库地址git remote -vorigin http://gogs.linjiangxiong.com/ljx/devops-doc.git (fetch)origin http://gogs.linjiangxiong.com/ljx/devops-doc.git (push) Git修改远程仓库地址命令: 1git remote set-url origin new.git.url/here e.g. 1234567# 将远程仓库地址改为 HTTPS 协议git remote set-url origin https://gogs.linjiangxiong.com/ljx/devops-doc.git# 查看修改后的地址git remote -vorigin https://gogs.linjiangxiong.com/ljx/devops-doc.git...
Redis根据通配符批量删除Key
Redis 目前还不支持根据通配符批量删除 Key 的命令,但我们可以借助 Redis 的 del 命令、Linux 管道和 xargs 指令来完成。 Redis的 del 命令支持删除给定的一个或多个 key,并返回被删除 key 的数量。如命令 del key1 key2 key3。 比如要删除所有以 WxMpSessionKey 开头的 Key,可以使用如下命令: 12[redis@iztz9ploifbvce ~]# redis-cli -h 192.168.182.227 -p 1379 keys "WxMpSessionKey*" |xargs redis-cli -h 192.168.182.227 -p 1379 del(integer) 2674 如果连接 Redis 的 HOST 为 127.0.0.1,端口号也为默认的 6379,则以上的命令可以简写为: 1redis-cli keys "WxMpSessionKey*" |xargs redis-cli del (END)
CentOS7下安装JDK1.8
安装Java 幵发工具包(JDK) 从 Oracle 官网下载 1.8 版本的安装包 (网速慢的同学请移步国内镜像,提取码为 rjqx),本次安装的JDK版本为 jdk-8u221-linux-x64.tar.gz; 上传至服务器(系统为 CentOS7.3),存放目录为 /home; 1scp ~/Downloads/jdk-8u221-linux-x64.tar.gz root@192.168.3.67:/home 新建JDK安装目录 /usr/local/java, 1mkdir /usr/local/java 解压文件 jdk-8u221-linux-x64.tar.gz 至安装目录 /usr/local/java, 1tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local/java/ 安装完成之后需要配置环境变量,将以下代码追加到文件 profile 末尾; 12345# JAVA_HOME为JDK安装目录export JAVA_HOME=/usr/local/java/jdk1.8.0_221export...
MySQL多表更新(关联表更新)
在开发过程中,有时会遇到需要将某张表的字段值根据条件动态地更新到另一张表字段的问题,即通过一张表的字段修改另一张关联表中的内容。比如,存在两张表A(表名:test_a)、B(表名:test_b),他们的表结构如下: 表A(test_a): id user_id dept_id update_time 1 34242 313 2 35322 320 3 35639 321 表B(test_b): id user_id patient_id dept_id create_time 1 34242 342 0 2018-05-23 09:33:45 2 35322 365 0 2018-05-24 00:13:05 3 35639 398 0 2018-05-24 00:43:18 现在我们需要将表A的 dept_id 字段值根据 user_id 字段同步到表B的 dept_id 字段中,即用表A中的 dept_id 字段数据去更新表B中的 dept_id 字段,条件是表A的 user_id 字段值与表B的...
用Markdown优雅地编写接口文档(排版示例)
本排版示例整理于两年前,当时是用来在公司推广使用 Markdown 编写开发文档的,现在稍微作了些修改,去掉一些与公司接口相关的信息。希望该示例能够对小伙伴们在以后编写文档时有所帮助,也希望能够得到大家关于文档排版方面的建议。使用 Markdown 编写接口文档最主要的好处,一个是可以让你更专注于内容本身,另外一个是 Markdown编写的文档能用代码管理工具(Git、SVN等)进行有效的版本管理(如版本对比)。 本示例显示效果如下:(源文件链接:https://github.com/iuiuu/markdown-api-document) AA公司BC平台接口文档 v3.2.01 规范说明1.1 通信协议HTTPS协议 1.2 请求方法所有接口只支持POST方法发起请求。 1.3 字符编码HTTP通讯及报文BASE64编码均采用UTF-8字符集编码格式。 1.4...
罗马数字(下)——对照表 1-1000
罗马数字 1-1000 对照表 PDF 版本下载: roman numerals 1-1000.pdf Excel 版本下载: roman numerals...
罗马数字(中)——起源与用途
一、罗马数字的诞生与进化罗马数字起源于古罗马帝国,拥有一个漫长而复杂的历史,始于公元前 8 世纪至 9 世纪,与古罗马帝国在帕兰丁山(Palantine Hill)周围建立的时间大致相同。不过,罗马数字的盛行时间比帝国本身还要长,直到 14 世纪前仍被广泛使用。 在设计上,罗马数字存在一些缺陷: 1) 没有表示零(0)的符号; 2) 也没有用于计数超过几千数值的实际方法,只有通过在数字符号上方添加横线来表示它们的值的倍数来修正。 复杂的社会、经济管理,建造像斗兽场和君士坦丁大拱门这样的大型纪念碑,都离不开大量的数学技能。而罗马数字的这些缺陷并没有阻止古罗马的学者和建筑师们建立一个伟大的帝国。 在公元 11 世纪时,阿拉伯数字传入欧洲。阿拉伯数字始创于印度,采用 0、1、2、3、4、5、6、7、8、9 共 10...
罗马数字(上)——拼写规则
罗马数字符号罗马数字是总共由 7 个字母符号表示:I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和 M(1000)。 表一:罗马数字对应的阿拉伯数字 罗马数字 阿拉伯数字 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 他们按照以下 4 个规则可以组合成表示任意的正整数。 规则 1一个罗马数字重复多少次,就表示这个数多少倍,比如罗马数字 I 表示的是数字 1,重复两次,即 II,表示的数字是 2,同理,III 表示数字 3,XX 表示数字 20,CC 表示数字 200 等; 需要注意的是,同一个罗马数字最多只能连续重复 3 次,如数字 400 就不能表示为 CCCC(重复了 4 次),而是要用 CD 来表示,数字40不能表示为 XXXX(同样重复了 4 次),而要表示为 XL 等。 但有一种特殊情况,因为古罗马人用 IV 作为古罗马神话主神朱庇特(IVPITER,古罗马字母里没有 J 和 U)名字的简写,他们不希望神的名字看上去像个数字,因此有时用 IIII 代替...