技术文章

客户端远程调用Feign

戏子无情 提交于 2021-02-19 10:48:11
客户端远程调用 Feign 什么是Feign? Feign是 Netflix 公司开源的声明式HTTP客户端 Github : Feign 源码 为什么需要Feign? 原代码可读性不高 复杂的URL难以维护( https://user-center/s?wd={userId}&rsv_spt=1&rsv_iqid=0x93bff3cd000cf3da&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=4&rsv_sug1=4&rsv_sug7=100&rsv_t=10c2risCimsUZC0RBruMerdnQRN1gRxFI%2BywuD0L3LwGGNd2dR8XE6x%2FyFOjHnR0oEi0&rsv_sug2=0&inputT=1535&rsv_sug4=1535&rsv_sug=2 ) 难以应对需求的快速变化 编码体验和我们写JAVA差异较大 举例重构代码 //替换前 ResponseEntity<UserDTO> userEntity = restTemplate.getForEntity( "http://user-center/users/{userId}", UserDTO.class, userId ); UserDTO userDTO = new

面试官问:你说说Redis的几个过期策略?

这一生的挚爱 提交于 2021-02-19 10:47:41
在使用redis时,一般会设置一个过期时间,当然也有不设置过期时间的,也就是永久不过期。当设置了过期时间,redis是如何判断是否过期,以及根据什么策略来进行删除的。 设置过期时间 expire key time(以秒为单位) 这是最常用的方式 setex(String key, int seconds, String value) 字符串独有的方式 除了字符串自己独有设置过期时间的方法外,其他方法都需要依靠expire方法来设置时间如果没有设置时间,那缓存就是永不过期如果设置了过期时间,之后又想让缓存永不过期,使用persist key 三种过期策略 定时删除 在设置key的过期时间的同时,为该key创建一个定时器,让定时器在key的过期时间来临时,对key进行删除 优点: 保证内存被尽快释放 缺点: 若过期key很多,删除这些key会占用很多的CPU时间,在CPU时间紧张的情况下,CPU不能把所有的时间用来做要紧的事儿,还需要去花时间删除这些key 定时器的创建耗时,若为每一个设置过期时间的key创建一个定时器(将会有大量的定时器产生),性能影响严重 懒汉式式删除 key过期的时候不删除,每次通过key获取值的时候去检查是否过期,若过期,则删除,返回null。 优点: 删除操作只发生在通过key取值的时候发生,而且只删除当前key,所以对CPU时间的占用是比较少的

Debian安装MariaDB

心不动则不痛 提交于 2021-02-19 10:47:07
环境: Debian9 安装 sudo apt update sudo apt install mariadb-server 验证安装是否成功 systemctl status mariadb 配置 进入mysql CLI: use mysql; 建立用户和密码,并授权远程访问: grant all privileges on *.* to root@'%' identified by 'password'; 刷新权限,使之生效 flush privileges; 查看用户信息 select user,host,port from user; 来源: oschina 链接: https://my.oschina.net/u/4416864/blog/3624966

2018/01/01Java基础学习——如何通过dos系统的javadoc命令生成API文档

北城以北 提交于 2021-02-19 10:46:45
通常在Java原程序中插入类似这样的注释,/** ... ... */这样的格式可以通过Javados命令生成doc帮助文档。代码案例如下: 1 import java.util.Arrays; 2 3 /** 4 * Description 5 * <br> this's a test class 6 * Created by test on 2017/2/7. 7 * @author MisJersion 8 * @version 1.8 9 */ 10 public class HelloWorld{ 11 public static void fill( int [][] array) { 12 /** 13 * 执行赋值操作 14 */ 15 for ( int i = 0; i < array.length; i++ ) { 16 for ( int j = 0; j < array[i].length; j++ ) { 17 array[i][j] = ( int ) (Math.random()*100 ); 18 } 19 } 20 } 21 public static void sort( int [][] array) { 22 /** 23 * 先把二维数组使用System.arraycopy进行数组复制到一个一维数组 24 * 然后使用sort进行排序

Docker——网络和存储(数据卷)

元气小坏坏 提交于 2021-02-19 10:46:11
iptables -t nat -vnL |grep docker 查看docker桥接网卡:brctl show 本地端口随机映射到docker容器的80端口上: docker run -d -P nginx 查看日志:docker logs 容器_id nginx 必须放在前台运行 本地端口指定映射到docker容器的80端口上:#81是宿主机端口,80是dokcer容器里面的端口 docker run -d -p 81:80 nginx 存储: 数据卷:所有的docker都能连接到上面 挂载一个 /data0到centos(dokcer容器)上: docker run -it --name volume-test1 -v /data0 centos 相当于nfs挂载一样 查看挂载信息:docker inspect 容器_id 指定目录挂载:docker run -it -v /opt:/opt centos 这是docker容器的/opt目录下内容 这是物理挤/opt下目录内容 挂载到指定目录并且指定权限:docker run -it -v /data0:/data0:rw centos 但是 docker容器那面还是没权限这是因为centos的安全模块seliunx限制 1.在运行容器的时候,给容器加特权,及加上 --privileged=true 参数: docker

Linux中split大文件分割和cat合并文件

扶醉桌前 提交于 2021-02-19 10:44:54
当需要将较大的数据上传到服务器,或从服务器下载较大的日志文件时,往往会因为网络或其它原因而导致传输中断而不得不重新传输。这种情况下,可以先将大文件分割成小文件后分批传输,传完后再合并文件。 1.分割 -- split命令 可以指定按行数分割和按字节大小分割两种模式。 (1) 按行数分割 $ split -l 300 large_file.txt new_file_prefix 加上-d,使用数字后缀;加上--verbose,显示分割进度: $ split -l50000 -d large_file.txt part_ --verbose (2) 按字节大小分割 $ split -b 10m large_file.log new_file_prefix 2.合并 -- cat命令 $ cat part_* > merge_file.txt [注] split命令语法: split --h Usage: split [OPTION]... [FILE [PREFIX]] Output pieces of FILE to PREFIXaa, PREFIXab, ...; default size is 1000 lines, and default PREFIX is 'x'. With no FILE, or when FILE is -, read standard input.

IntelliJ Idea入门教程:如何新建项目

假如想象 提交于 2021-02-19 10:44:05
下载IntelliJ IDEA 创建项目后,就可以开始添加新项目:创建目录和包,添加新类,导入资源以及通过添加更多模块扩展项目。 建立新项目 创建一个新目录 在“项目”工具窗口(Alt+1)中,右键单击要在其中创建新目录的节点,然后选择"New | Directory"。 或者,选择节点,按Alt+Insert,然后单击目录。 命名新目录,然后按Enter。 如果要创建多个嵌套目录,请指定其名称,并用斜杠分隔,例如:folder / new-folder。 创建一个新包 Java中的程序包用于对属于同一类别或提供类似功能的类进行分组,以用于构造和组织具有数百个类的大型应用程序。 在Project工具窗口中(Alt+1),右击Sources Root the Sources root图标或Test Sources Root the Test Sources root中要创建新包的节点,点击New | Package。 或者,选择该节点,按Alt+Insert键,点击Package。 为新包命名,然后按Enter。 用小写字母写程序包名称。您还应遵循Java包的其他一些命名约定。 创建一个新的空文件 在“Project”工具窗口(Alt+1)中,右键单击要在其中创建新文件的节点,然后单击“New | File”。 或者,选择节点,按Alt+Insert,然后单击文件。

geoserver安装

匆匆过客 提交于 2021-02-19 10:43:40
由于GeoServer是基于Java开发的。因此在安装之前,必须确保安装了Java。官方文档说明里,如下: 确保自己已经安装JDK的情况下,访问官网: http://geoserver.org/ 选中对应版本后,可以选择bin版本或者war版本,此次选择bin版本,进入如下界面: 解压后进入目录: 配置环境变量,新增如下: 进入bin目录下,启动startup: 访问地址: http://localhost:8080/geoserver ,页面如下: 修改访问的端口号,修改start.ini里的jetty端口号,修改为8088,重新启动 默认安装后,用户名为“admin”,密码为“ geoserver ”,登陆后页面如下: 来源: oschina 链接: https://my.oschina.net/u/3781537/blog/4955524

品物志

眉间皱痕 提交于 2021-02-19 10:43:14
之前玩过什么值得买和知乎好物,觉得还挺有意思,给自己又弄了一个可以显摆气味的小地方 http://www.dazhekuaibao.com 来源: oschina 链接: https://my.oschina.net/noname11/blog/4955390

🎉 echarts-for-react v3 发布

送分小仙女□ 提交于 2021-02-19 10:43:00
echarts 是什么,不用多说了, 国内最知名的可视化图表库之一。 echarts-for-react 是它的一个极简的 React 封装。 一、前言 🎉 echarts ** v5 发布之后**, echarts-for-react 上已经有很多很多的 issue 请求支持最新版本,所以,过年期间升级了 v3 版本,支持了最新的 echarts v5。 **很尴尬,目前我是在蚂蚁,主要做大数据 BI 产品 + AntV 数据可视化技术栈。理论上来说,echarts 使我们的竞品,哈哈,然而,我居然还在过年给它升级周边,我想这应该就是开源精神吧。**那就顺便一起打个广告吧,欢迎大家支持我现在的工作。 G2 :基于图形语法的数据可视化,提供灵活性、定制性 G2Plot :基于 G2 做的一图已封装,降低大部分简单场景的使用成本 Charts :基于 G2Plot,在 Ant Design 上透出的 React 图表组件库 本文还是重点软一下 echarts 和它的 react 封装吧! 二、起源 在蚂蚁之前,自己在网易游戏入坑前端,当时内部使用 SVG 做代码版本控制,所以自己做了一个类似于 travis(但是没有 GitHub Action) 的面向 SVG 的 ci 工具。这个项目是我初次上手 React(0.14.x 版本)。 然而在 JQuery 技术栈下, echarts