rsocket笔记
#### 前言 最近看websocket 和tcp的一些应用协议定义的时候 看到有个rsocket协议 spring社区、阿里等 都在试水和研究扩展这个协议 干脆自己玩玩 记录一下 方便自己后续查阅 #### 介绍 > 参考文档: > https://docs.spring.io/sprin
#### 前言 最近看websocket 和tcp的一些应用协议定义的时候 看到有个rsocket协议 spring社区、阿里等 都在试水和研究扩展这个协议 干脆自己玩玩 记录一下 方便自己后续查阅 #### 介绍 > 参考文档: > https://docs.spring.io/sprin
#### 前言 ansible 听说过很多次了 一直偷懒 没好好看过一些教程文章 今天抽点时间 把安装和使用command模式记录一下 方便后续使用 #### 安装 此处直接复制 https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html #
分类: 笔记
标签: redis client side caching tracking 多级缓存
创建时间:2023-03-03 11:00:00.0
修改时间:2023-03-03 11:00:00.0
#### 前言 redis+内存做二级缓存是很常见的套路了 但是一直有不太好处理的地方 例如 多客户端下 本地缓存和服务端缓存一致性问题 redis在6.x之后 增加了一个功能 client side caching tracking > https://lettuce.io/core/6.0.0.RC1/api/io/le
####由于有朋友不会这个远程部署又懒的百度、google 于是我写这个maven+tomcat远程部署javaweb项目的教程。以后心情好说不定会继续更新项目管理的一些环境搭建:如jenkins+gitlab+项目管理工具(如禅道)这样自动化部署测试环境 ##工具
#### 前言 postgres数据库用了很久了 也维护过很多次了 今天抽时间将postgres 一些配置文件做一个翻译和记录 方便后续速查 本身postgres官网的文档和配置里面的说明已经很清晰了 这里只是作为一个翻译 对照 和速查 ####
#### 前言 最近遇到需要用java 把markdown解析成html 这个东西 很多工具 比较出名的 有commonmark-java 和他的衍生版本 flexmark-java 从性能上来说 肯定是commonmark-java最快 所以我也选择用这个 > 官网地址: > https://github.co
#### 前言 最近在做网盘的一些需求 需要预览一些奇奇怪怪的文件 先记录下psd文件如何生成预览图 #### 例子 > 由于jdk的ImageIO相关class 无法直接解析psd 所以要另寻方案 ##### 直接解析psd > 参考文档: https://blog.
##创建型模式:提供在创建对象的时候的逻辑,不是直接使用运算符如new这样的形式来实例化对象, 模式名称 | 模式概述 | 备注 -----|:------------|:----- 工厂模式(Factory Pattern) | 就是一个产品加工共厂的套路 负责产生一些大致
#### 前言 最近发现有几个接口响应缓慢 看了下 主要是之前偷懒写法 导致网络io过大 当数据量上来之后速度变慢 现在把部分业务功能 拆分到不同的sql中 进行处理 #### 参考文档 explain浅析: http://mysql.taobao.org/monthly/2018/11/0
#### 前言 db读写分离 是一个优化应用性能 最显著的方式之一 postgres 本身的 主从同步是很好配置的但是 识别读写语句 java中没有什么特么好的方案 那么就只能采用中间件 来识别postgres的路由做到读写分离 #### pgpool 介绍
#### 前言 记录汇总一下 systemd的相关操作和写法 > https://wiki.archlinuxcn.org/wiki/Systemd archWiki中systemd文档 > https://man.archlinux.org/man/systemctl.1 systemctl 详解 > https://man.archlinux.org/man/systemd.unit.5 systemd unit文档 > #### systemctl >
#### 前言 今天突然有个服务 不能是root用户但是要绑定 80端口 看到了capabilities这个功能 顺便记录一下 方便自己速查 #### 描述 >参考文档: > https://www.cnblogs.com/nf01/articles/10418141.html > https://blog.csdn.net/jing_flo
#### 前言 记录一下 arch 自己安装的过程 免得每次都现查 看不到合适的文章 主要参考 arch wiki > https://wiki.archlinux.org/ #### 安装 安装arch系统 也跟其他系统一样 准备启动盘 引导、分区、安装基本系统、安装组
#### 前言 一直在用wsl2-ubuntu 感觉没劲 干脆重装arch 记录一下使用的指令 方便速查 > wsl常用命令: https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands?source=recommendations #### 安装 > wsl2 安装arch大致有两种做法 1-直接下载打包
#### 前言 有时候查询 当前linux的基本属性和某个进程的属性 老是用到/proc这个虚拟目录 但是一直没有做一篇详细的笔记 今天有时间 来记录一下 > linux提供/proc虚拟目录 来 查询系统运行时候计算机信息、调整运行的信息(内
##iptables linux上常用防火墙 参考地址:http://www.cnblogs.com/kevingrace/p/6265113.html #### iptables 和netfilter关系 netfilter 是linux内核中实现的包过滤的函数相关的东西 iptables 是一个管理防火墙的工具 真正实现防火墙的还是netfilter ####
#### 前言 虽然经常写dockerfile 但是老是去官网查询 翻墙慢的一批 干脆 从官网上把常用的dockerfile关键字记录下来方便查询 参考地址: https://docs.docker.com/engine/reference/builder/#parser-directives https://yeasy.gitbooks.io/docker_practice/im
#### 前言 最近跟工行对接对账相关文件的时候 采用工行定时向公司的ftp服务器上投递对账文件 但是公司的ftp服务器 在生产机房 而且只允许指定服务器访问 没得办法 只能用终端使用ftp命令行工具访问 参考资料: htt
#### 前言 记录下抓包工具和相关的查看工具使用方式 tcpdump wireshark 主要记录tcpdump >参考文档: > https://www.runoob.com/linux/linux-comm-tcpdump.html > https://www.cnblogs.com/f-ck-need-u/p/7064286.html #### tcpdump命令详解 ```shell tcpdump [-adeflnNO
#### 前言 令牌桶。。。用到是用到过 不过不是限流 是业务功能中使用的 不过跟限流类似 只不过生成令牌含义变成了某种业务的前置条件了 也记录一下 方便后续查询 #### 算法原理 参考文档: https://baike.baidu.com/item/
#### 前言 用了这么久的jdk8 的stream集合 感觉还是很吊的 特别是作统计计算、集合转化之类的操作 虽然有parallelStream 来进行并行计算 但是 不推荐这么去使用 原因如下 虽然有并行 但是 parallelStream 的并行数量是按照jvm的核
## guava cache工具 #### 示例 ``` /** * 缓存示例 * * @author ming * @date 2017/8/7 */ @Test public void helloWorldTest() throws ExecutionException { LoadingCache<Long, String> strCache = CacheBuilder.newBuilder().maximumSize
#### 前言 个人测试学习 测试使用的k8s集群 部署方案 大致有三种 minikube microk8s kubeadm 前两种 略过 kubeadm 是k8s官方提供的安装部署工具 能够很简单的搭建管理 单体、或者HA的k8s集群 #### 示例 环境: * ubuntu20.04 > 参
#### 前言 公司有个使用spring-boot schedule模块的定时任务偶尔不执行 查看类一些文档和部分源码 发现spring boot schedule模块还是有点坑的 1:如果是单线程执行 当错过执行时间 就不会在执行任务 并不是想象中的阻塞等待执行
####thymeleaf 虽然现在大部分项目 更加倾向于前后端分离 但是有时候身为后端工程师 总想手贱写点小东西 但是jsp 又比较老 而且需要web容器支撑 spring boot 支持性太差 所以还是用spring boot 推荐的thymeleaf 可是 jsp中的siteMesh装
#### 前言 身为闲不住的人,总是想搞事 但是又懒得学vue之类的前端框架技术 只好利用学学后端的一些模板引擎技术 来过过手瘾 在远古时代 可以直接用jsp来做 但是spring boot 2.x 引入webflux 这种非标准java servlet容器
#### 前言 maven gradle java常用的依赖、项目管理工具 在公司 总是需要一个私服 来提供给大家搬砖 nexus 就是一个用的人贼多的 仓库管理工具 #### 安装部署 由于个人比较懒惰 懒得折腾环境 直接采用docker 部署 利用 doc
### 前言 经常要绘制流程图、时序图来做一些讲解和演示 但是绘制简单的图使用比较专业的工具略显麻烦 而且经常需要调整样式 看到markdown 有插件也支持绘图 干脆记录一下做个笔记 ### 安装识别绘图插件 >使用mermaid
#### 前言 一直想找个能够存储比较大的文件 而且又能像git一样操作方便快捷 开始准备自建svn来达到需求的 后来看github的一些文档看到了git lfs (Git Large File Storage)功能 干脆了解了一下 顺便记录下这篇笔记 方便以后
#### 前言 idea 当今java开发第一ide 应该没人反对 jb公司 对于开源有支持 大多数开发者都可以很轻松的申请到jb的正式版本 #### 列表 | 名称 | 功能 | 快捷键 |备注| |:--
#### 前言 用电脑控制安卓手机 很多工具 如收费向日葵等 在同局域网或者干脆可以线连的情况下 使用scrcpy连接也是蛮方便的 > 官网:https://github.com/Genymobile/scrcpy #### scrcpy安装 只记录debian系列的安装 其他平台请查询官网
#### 前言 zsh 的确挺好用的 这里记录一下 方便速查 #### 安装 ##### 安装zsh ubuntu: ```shell script sudo apt install zsh -y ``` ##### 查看/切换shell 查看当前所有安装过的shell ```shell script cat /etc/shells ``` 查看当前shell ```shell scr
###传输案例 #### java oio ``` package com.ming; import java.io.IOException; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.nio.charset.Charset; /** * 基于java 阻塞io的 服务端案例 * * @author ming * @date 2018-04-11
#### 前言 读写分离、、、 降低masterDB的负载 提高查询速度 常规手段 有很多方案可以实现 最近在看sharding share 的jdbc组件 也能很快速的实现 一主多从 定制从节点负载均衡策略 #### 示例 ##### 增加依赖 ```xml <!-- https
#### 前言 一直听说过 Let\`s Encrypt 自动签发证书 一直用的阿里云申请的免费证书 一年换一次 鸡儿痛 最近干脆切换到 certBot 来自动申请管理Let\`s Encrypt 证书 > https://certbot.eff.org/ certbot官网 #### 实例 > 以在d
#### 前言 数据分片 。。。 降低单个数据库节点压力、和处理大量数据的方案 其中 拆分方案 分为 单独的垂直分片、水平分片 和垂直、水平混合分片 数据分片之后 + 读写分离 基本上解决大多数数据的容量、性能问题
#### 前言 在分布式环境中 一般数据id 都是全局唯一 拥有特定的生成规则 一般都是从专门的取号中心 取的 所以jpa中为了全局统一处理 id生成 也提供了扩展方案 > 此处取jpa hibernate实现处理 #### 示例 ##### hibernate 6.5
#### 前言 记录一下常用的shell片段 方便自己速查 #### 示例 >默认基本为bash脚本 其他解释器会特别说明 ##### 获取指定名称的进程并且处理 ```shell NAME="xxxxxx" ID=`ps -ef | grep "$NAME" | grep -v "grep" | awk '{print $2}'` echo The proce
#### 前言 。。。最近漏洞频出 。。 大多是各种依赖的漏洞 例如 fastjson。。 各种注入。。难受 所以找了这个owasp 的依赖检查插件 时刻检查项目中依赖的已经公开的漏洞 进行检测并且进行修复 防患于未然 减少可
###gitflow 代码提交规范 如下图: ![image.png](http://upload-images.jianshu.io/upload_images/3905525-270696a74d45d27a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) master:线上分支 这个分支 就是线上代码所在的分支 每个点就是软件的一个版本 打
####yaml 在学习docker-compose工具中需要用到yaml来做配置 ####yaml语法清晰简洁 适合写配置 但是不适合做数据传输 ####在比较新的技术中 大量应用了yaml去配置 如spring cloud docker-compose等 ######语法规则 * 大小写敏感 * 缩进表示
##在将项目前后端分离的时候,首当其冲的就是跨域问题;此篇笔记 用来记录什么是跨域、如何解决跨域、以及一个实例;免得自己以后忘记了还需要去搜索 ###什么是跨域 http为了提高安全,禁止非同域访问 什么是同域:满足
#### 前言 之前老是用别人的压缩工具类 感觉不太方便 各种各样花式实现 干脆自己完整的了解下 apache commons compressor 工具包 自己封装下 > https://commons.apache.org/proper/commons-compress/examples.html > https://www.jianshu.com/p/14af3aeb6d
#### 前言 在鼓吹云原生的时代 java也在与时俱进 衍生出适合云原生时代的框架技术 quarkus是开源的基于vert.x等框架开发的一种应用层框架 可以利用graalvm来做native image 提升执行效率 > 官网: https://quarkus.io/ > graalVM oracle
#### 前言 想部署一个k8s实验环境 看了很多 minikube kind k3s 发现还是rancher的k3s对资源要求少 > https://rancher.com/docs/k3s/latest/en/ #### 部署 ##### 部署k3s > k3s 本质上就是一个独立的可执行文件 包含整个k8s的manager的组件 >
####由于开放型的短信接口受到不明来源的恶意访问 大佬们紧急对整个项目的接口进行加密 原理:密钥+参数生成 md5 签名 客户端保存好密钥即可 之前对接苏宁易购的那个支付平台的时候 也是选择这种方式进行访问加密 1:
#### 前言 一直切换证书种类 管理证书的时候都是 百度 google 当场搜索 比较麻烦 这次有时间 记录一下 个人经常通过openssl 或者keytool去管理证书的命令 方便自己速查 >openssl介绍:https://baike.baidu.com/item/openssl/5
#编码问题 ##1:各种编码介绍 ###1.1:ascll码 ``` 共128个,用一个字节的低七位表示, 0~31是控制字符换行、回车、删除相关的字符 32~126是输出字符,就是可以同过键盘输入并且输出的 ``` ###1.2:iso-8859-1 ``` 共256个
#### 前言 有时候小项目 直接上ci cd真心划不来 写shell脚本 有不是所有的大哥都是linux mac下开发 然后就找了下插件 找到这个 wagon-maven 插件 这个插件主要功能就是上传下载、远程服务器执行某些命令 插件很简单
####在2.x版本jenkins 中 出现了 pipe 所以决定通过较为新的方式去从新部署一套基于jenkins 的docker 项目 自动化部署 https://dzone.com/refcardz/continuous-delivery-with-jenkins-workflow #### 安装 jenkins docker版本 1:jenkins 默认密码 还是jenkins 容
#### 前言 记录一下redis-module的安装和使用 > 示例在ubuntu20.04版本上操作 #### 安装redis >https://redis.io/download * apt安装 ```shell sudo add-apt-repository ppa:redislabs/redis sudo apt-get update sudo apt-get install redis ``` * 常用
#### 前言 jvm提供关闭时候触发某些操作的钩子 通过钩子取检测触发某些操作 例如实现优雅停机、通知gc等等操作 在做无感发布的时候 必须要用的一项功能 钩子只能在jvm正常关闭 例如System.exit(),或者kill -15 的时候 如果
#### 前言 由于要提升安全性和b格 有些项目 访问的时候 必须要求 https协议来访问 一般 情况下 nginx是外层的入口 或者 直接是tomcat 是入口 只要配置nginx和tomcat 即可 #### 证书获得方式 ##### 证书类型介绍 https://www.wosign.com/f
#### 前言 spring boot 默认打包方式为fatjar 依赖包+源码一起打包 这种方式简单粗暴 不过在一些需要减少更新文件大小的地方 还是需要拆分处 lib和源码 #### 示例 参考网站: 1. https://blog.csdn.net/u013314786/article/details/81120240 2. http
####docker-compose 是docker的一个工具 是用来根据配置联合启动多个docker的工具 特别是在启动一些复杂应用的时候 适合用docker-compose来启动 当然 也可以自己写shell脚本启动 ####docker-compose配置文件 部分字段解释 #####实例 yaml格式
#### 前言 遇到解析微信的 语音文件 需要将amr格式转换为mp3格式 然后搜了一下 基本上就是基于ffmpeg来处理就行 这里记录一下 方便自己速查 #### 示例 ##### ffmpeg ```shell ffmpeg -i xxx.amr -vn -acodec libmp3la
#### 前言 搭建私有化dns 服务 避免dns污染 #### 实战 选择使用容器部署 #### 部署 > https://hub.docker.com/r/jpillora/dnsmasq ```shell docker run \ --name dnsmasq \ -d \ -p 53:53/udp \ -p 5380:18888 \ -v /home/ubuntu/dnsmasq/dnsma
##抽象工厂模式(Abstract Factory Pattern) ####意图 提供一个创建一系列相关或者互相依赖的对象接口,无需指定他们具体类 ####主要解决 解决接口选择问题 ####何时使用 系统产品多于一个产品族,而系统只消费其中某一族产
#### 前言 commit的时候 老是各有各的玩法 千奇百怪 只好找个相对比较合适的规范 来约束大家的提交日志格式 也为了后续方便将commit log 接入到CI/CD流程中 参考资料: http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html
##适配器模式(Adapter Pattern) ####意图 当一个类的接口转换成客户希望的另外一个接口的适合,适配器模式使得原本由于接口不兼容不能一起工作的类可以在一起工作 ####主要解决 在系统中常常要将一些现存的对象放到新环境
##桥接模式(Bridge Pattern) ####意图 将抽象部分和实现部分分离,使他们可以独立变化 ####主要解决 在多种可能变化的情况下,用继承会造成类爆炸的问题,不好扩展 ####何时使用 实现系统可以有多个角度分类,每一个角度都
##建造者模式(builder pattern) ####意图 将一个复杂构建与其标识相分离,使得同样构建过程构建出不一样的标识 ####主要解决 在创建复杂对象过程中,通常是各个部分子对象用一定算法构建而成;由于需求变化,这个复杂对象各
|linux版本|命令|功能描述|实例| |------------|-------|------------|-----| |ubuntu | nautilus | ubuntu下面 从终端打开文件夹 | nautilus .| |*|traceroute|跟踪域名解析|traceroute 域名| |*|hexdump|将文件转换成hex码| hexdump 文件| |*|tcpdump、wireshark|抓包工
## 开闭原则(open close princlple) "对扩展开发,对修改关闭",当程序需要扩展的时候不能去修改源代码,要实现一个热插拔效果。 通过使用接口和抽象类去设计。这样在以后替换方法实现算法的时候只需要实现接口使用这个类就
##工厂模式(factory pattern): ####意图 定义一个创建对象的接口。让其子类决定实例化那一个工程类,工厂模式将其创建过程延迟到子类中 ####主要解决 主要解决接口选择问题。 ####何时使用 在不同条件下创建不同实例。 #
##单例模式(Singleton Pattern) ####注意 1:单例类只能有一个实例 2:单例类必须自己创建自己唯一的实例 3:单例类必须给其他对象提供这个实例 ####意图 保证一个类仅有一个实例。并提供一个访问它的全局访问点 ####主要
##原型模式:(Prototype Pattern) ####意图 用原型实例来指定创建对象的种类,并且通过拷贝这些原型创建新的对象 ####主要解决 在运行期建立和删除原型 ####何时使用 1:当一个系统应该独立于它产品创建构成和表示的时候
###spring boot中 在某些配置的时候肯定是需要自定义配置的 spring boot 默认显示配置覆盖默认配置 所以只需要符合spring boot的配置环境 ###能够覆盖默认配置的配置位置 1:命令行参数(如直接命令行启动某个jar 后面附带的命令) 2:
####前言 linux shell脚本中 获取参数 大致上 有 * 直接 xxx.sh p1 p2 直接通过获取 脚本后面跟着的参数 进行操作 * getopts 获取 脚本后面的选项 * getopt 获取脚本后面的可变选项 * read 从键盘或者文件中读取参数 这几种方案
#### 前言 linux用了很久了 信号量也经常用例如 kill 但是一直没自己记录 信号量及其功能 参考文档: https://blog.csdn.net/baobao8505/article/details/1115820 #### 常用信号量 > kill -l 查看当前linux支持的信号量 |编号|代码|备
#### 前言 之前也用到过 这个漏桶算法实现的限流 但是不是我写的 也没怎么关注 这次看到redis书中提到了 就顺便写一篇笔记记录一下 方便后续查询 #### 算法原理 参考文档: https://baike.baidu.com/item/%E6%BC%8F%E6%A1%B6%E7%AE%97%
#### 前言 容器发展了这么多年 一直在更新变化 也出现了 k8s这种庞然大物 大多数时候用容器 都是用docker 但是docker本身太过于庞大 包含了运行期间不需要的组件 而且也不是直接调用runc 中间还有自己的daemon k8s在1.20
#### 前言 由于公司生产上运行的是为搭建的单机的swarm 业务扩展 需要的资源变多了 需要再加一台机器 参考 {% post_link 综合应用/docker-swarm集群搭建 %} #### 初始化环境 准备两台机器master1,master2 参考 {% post_link 综合
###ribbon负载均衡 必须存在 ``` @Bean @LoadBalanced//通过再restTemplate中添加拦截器 实现负载均衡、重写uri等功能 RestTemplate restTemplate(){ return new RestTemplate(); } ``` #### ServiceInstanceChooser 服务实例选择 choose 根
#### 前言 在需要使用复杂的长命令去解决一些事情的事情 很多时候 需要将标准输出作为参数去使用 而不是当做标准输入去使用 那这个时候 就需要xargs 将标准输出的值重定向到某个命令的参数上去 并且执行这个命令 ####
#### 前言 由于gfw的存在 经常需要翻墙 自己手动搭建 ssServer又麻烦 使用docker 使用现成的image简单方便快捷 docker只能在3.10以上的内核的linux系统或者差不多版本的其他系统中运行 所以在购买vps的时候要看清楚是什么架构 内
#### 前言 查看 命令执行记录 重新执行历史命令 应该也是常规操作 之前都是 cat .bash_history 去看 根本没注意其他信息 现在统一记录一下笔记 #### 历史记录的相关环境变量 |变量名称|变量作用|备注| |:------|:-----|:---| |HIS
#### 前言 linux下面 有时候常用的命令太吉尔长了 命名别名是必须的 #### 使用示例 有时候有些命令常用 例如 'ls -a' 'ps -aux' 这样的 如果每次输入全部 麻烦的很 通过设置别名 可以快速使用 ##### 设定临时 alias 只能在当前
#### 前言 read 接收输入的数据 写脚本经常用的命令 之前都是瞎鸡儿用 从来没考虑仔细看看 文档 这次有时间 看看 记录下这篇笔记 #### 实例 ##### 读取键盘输入 ``` echo ' #!/bin/bash echo "请输入名字:" read name echo "你的名字
#####Linux下 操作文本命令太多了 cat echo tee sed等 ##sed:按行操作文本 ######sed命令是处理文本的工具 属于管道命令 以行为单位 进行操作文本文件 ###### sed [-nefri] ‘command’ ./file ###### command 类似 vim的指令 command ```
##在学ng2的时候接触到npm管理包、插件的方式 但是npm默认的源是国外的如果懒的科学上网 又想快速使用 只能使用国内的镜像站点 例如aliyun ####当安装npm 完成 可以通过如下的方法去修改npm的源 ####1.通过config命令 npm config s
####自己闲的蛋疼 购买了个树莓派3b 由于不太懂这个 买配件 组装运行起来耗费了好久 特此做个笔记 #####树莓派配件组成: 1:板子:就是生产好的树莓派的电子板 2:电源:3b版本需要5v 2.5A的电源 如果外接设备多的话要按需增加
###树莓派开启wifi模块后 想看看树莓派的桌面 然后就开启了vnc服务 玩玩 ####安装vnc服务 ``` sudo apt-get install tightvncserver ``` ####设置vnc链接的密码(最长只能8位 超过的截取前8位) ``` vncpasswd ``` ####添加开机启动 ``` sudo v
#### 前言 在linux中 任何软件、文件、文件夹 都可以看做是一块数据块 每个数据块都拥有自己的inode节点 可以是多个 当一块数据没有inode引用了 那么这个数据块就可以擦除了 那么在linux中 想要在任意地方去访问这个数
####买回来好久 一直都是被舍友拿去垫电脑去了 今天有时间 拿出来把wifi模块启动起来 以后 就算垫桌子 也能用起来 #####前提条件 1:pi能正常启动 2:能链接pi的shell 3:pi的版本必须由无线网卡 pi 3b版本 带了无线网卡了 #####具
#### 前言 由于开发的时候 有个同事当初选择使用的money类型 这里对money类型做一些笔记 方便速查 #### 货币类型存储方案 在只处理RMB的情况下 ×10 ×100 ×1000 来转换为int类型 避免精度丢失是比较简单的方案 如果存在不同
#### 前言 。。。 准备在线上测试环境搞个postgres主从的时候 发现版本竟然是10.3的 果断升级为最新的11.4版本的 之前一直都是直接 dump数据然后卸载重新安装 然后把数据导入进去 不过postgres 提供一个现成的工具 刚好尝试一
#### 前言 linux中 经常使用 终端 一次打开多个终端 很麻烦 不好用 有个很强悍的工具 tmux 很出名的分屏工具 ubuntu安装 ``` sudo apt install tmux ``` 然后 在终端输入 ``` tmux ``` 这个时候 终端已经启动tmux 默认是ctrl+b 是快捷键
#### 前言 journal是systemd的日志系统,journalctl是journal的命令行工具用来查看和管理日志 > [arch-wiki#journal](https://wiki.archlinuxcn.org/wiki/Systemd/Journal?rdfrom=https%3A%2F%2Fwiki.archlinux.org%2Findex.php%3Ftitle%3DSystemd%2FJournal_%28%25E7%25AE%2580%25E4%2
#### 前言 写shell的时候 经常要求执行异常或者中断脚本之后 需要清理现场或者提示用户 之前一直是用if判断命令执行结果来做的 比较麻烦 而且繁琐 小脚本可以 稍微复杂一点的脚本就麻烦了 这个时候 trap 就可以发挥作
#### 前言 mmp redis 由于使用了弱密码 导致被人植入 kworkerds挖矿病毒 稍微看了下 这个病毒 只要清理相关文件 就行了 #### kworkerds病毒 kworkerds挖矿病毒通过redis 6379端口入侵服务器 并且执行挖矿程序 ##### 处理方案 * redis
#### 前言 graalVM oracle搞得 看起来很犀利的VM 作为java 开发 比较喜欢其中的native image 虽然jdk自带有aot编译(jaotc) 但是不怎么好用 很多东西都无法通过jaotc正常使用 > 官网:https://www.graalvm.org/ 由于我只在linux下开发 这里
#### 前言 在使用postgres的时候 经常要用一些扩展的东西 例如 fdw dblink ltree之类的功能 postgres 是通过配置来使用这些功能 #### 安装插件 服务器版本:CentOs7 postgres版本: postgres11.4 postgres安装方式: yum 安装 ##### 安装 contrib
重写eq 必须重写hashCode的原因 之前唆代码 每次都单独重写 eq 方法 hashCode从来不重写 这次遇到一个 Set<T> 的内容比较 一直返回的不是理想的结果 查看源码 发现 其实 最开始是直接使用 == 方式比较 到最后才会用eq方法比较
####最近一直在看 jdk8的书 觉得jdk8和之前的jdk变化还是挺大 ####主要多了如下一些东西 ####1:lambda表达式支持(方法引用 ) jdk8增加lambda表达式的支持 可以通过‘->’ 来传递代码片段 和匿名方法很像 但是有一点细微区别 java.
#### 前言 最近使用了很多io相关操作 一直没记录 今天记录一下 方便速查 #### 示例 |函数名|功能|备注| |:----|:---|:---| |buffer()|将各种in out流 转换为带buffer的 流|| |close()|关闭流|| |closeQuietly()|安全的关闭流|| |contentEquals|
#### 前言 最近研究 一些框架的时候 发现SPI机制 很多地方会用上 之前么没怎么遇到过 每次都是现场百度 这次 写片笔记记录一下 方便后续查询 > 参考文档 >https://my.oschina.net/kipeng/blog/1789849 >https://zhuanlan.zhihu.com/p/28909673
##web service 三要素 soap、wsdl、uddi ###soap(Simple Object Access Protocol) 简单对象访问协议 soap是一种对象访问通信协议 基于xml的协议 用来访问结构化和固化的信息 主要特点 制定程序之间的通信、消息格式; 独立平台、语言;基于xml
#### 前言 有时候线上出问题或者需要对java项目进行优化的时候 需要一些工具对jvm运行状态进行一些查看和分析 jdk自带了很多工具 这里对jvm参数查看分析写一篇笔记 方便查阅 至于在线debug 另外的笔记在记录 > 此文档
###老是有人问我xml和json区别、 特写此篇记录来列出xml和json区别,懒得每次都解释、网络中很多博客都没提到关键的区别点 自述性、规范性;其他什么解析方法、啥啥的都不是最重要的最主要的就是xml能够由很强的自述性、规
#### 前言 没啥好说的 日常复习 想起来juc 发现juc还没记录笔记 每次都是看别人的总结 借着这次机会 对整个juc 做个汇总总结 方便自己速查 > 学习文章地址: https://segmentfault.com/a/1190000015558984 java.util.concurrent包,按照
## guava 集合工具 #### 不可变集合 * 当对象被不可信的库调用时,不可变形式是安全的; * 不可变对象被多个线程调用时,不存在竞态条件问题 * 不可变集合不需要考虑变化,因此可以节省时间和空间。所有不可变的集合
##java定义的4个标准元数据注解: 1. @Target 2. @Retention 3. @Documented 4. @Inherited |名称 | 作用 | 取值 | 备注| |---------|:------|:-------|------| |@target | 用来说明annotation修饰对象范围 描述注解使用范围| 1.CONSTRUCTOR:用于描述构造器 2.FIE
#### 前言 最近 在学习 jvm相关的知识 之前 一直看的一些博客 文章 没有静下心 看看 jvm相关的书籍 干脆买了一本 周志明大佬的jvm的书 #### 内存区域划分 ![内存区域划分图](http://asset.xujiuming.com/private-asset/jvm_runtime_data_ar
#### 前言 自从jdk8之后 新的sdk功能基本没仔细看 最近觉得在不看 就要落伍了 找个时间根据openjdk的发版情况结合大佬们的博客 记录一下 jdk8 主要就是提供了一些语法糖和一些优化功能 极大的减少了一些数据处理和异常处
#### 前言 在一些比较不同的公司中 没有提供java的sdk 需要调用dll so库等 需要用java-jni来调用 需要手动加载对应的lib到 内存中 #### 示例 > 例如linux下加载 xxx.so 库 ##### os中so、dll直接加载 > 直接在os目录中
#### 前言 最近切换 druid 到hikari 要做个sql 统计、审查功能 发现hikari没的 只能用其他的工具拦截datasource 看了一下 各种框架 发现p6spy用的人比较多 热度较高 所以记录一下 使用p6spy 来记录sql 的笔记 #### 示例 >参考
1. [poi和jxl介绍](#m1) 2. [poi和jxl操作excel不同点](#m2) 3. [poi读写excel实例](#m3) 4. [jxl读写excel实例](#m4) 5. [poi读写word实例](#m5) 6. [poi和jxl选择](#m6) <h3 id="m1">1:poi和jxl介绍</h3> #### 1.1:poi poi是对所有office资源进行读
###在做jsp项目中除了一些框架的标签如spring、jstl、shiro等标签 可能还需要自定义一些常用标签 如page等 ###自定义jsp标签有两种方式 1:java bean+ tld ``` 通过tld来调用java中的代码 这种写法 参考http://www.runoob.com/jsp/jsp-custom-tags
#### 前言 写java 特别是在写业务类功能的时候 会产生大量DTO、VO、PO类似的pojo类 而且还经常容易发生变更 每次发生变更 都需要调整相关setter、getter、toString、hashCode、eq等相关基础函数 比较麻烦 而且容易出错 这个时候 l
#### 前言 在jdk8之前 如果要使用date 的类型 就需要把java.util.Date 之类的类组合起来使用 特别是在常用的时间加减、获取特定时间、格式化的时候 都必须要java.util.Calendar 、java.util.TimeZone、java.text.SimpleDateFormat这些类进行封装
##guava basic 基本工具 #### 避免null optional 如果是jdk1.8以上直接使用optional 1.8以下需要使用guava basic工具包 #### 前置检查 Preconditions |方法声明(不包括额外参数)|描述|检查失败时抛出的异常| |----|-----|------| |checkArgument(bo
#### 前言 最近写很多单元测试 一直没记录 今天整理一下 常见的demo 方便后续速查 > https://junit.org/junit5/docs/current/user-guide/#overview #### JUnit5注解汇总 ##### 基础测试控制 | 注解 | 含义 | 使用场景
#### 前言 日志框架经常使用 老是现场查询 最近抽空做个整理 方便自己速查 虽然现在在一些k8s 之类的集群上 日志收集一般是收集 stdout stderr 来采集日志 不过更多的拥有自己的elk集群或者log文件分析集群 所以还是需
#### 前言 对象属性转换 方式有很多 例如 各种beanUtils或者dozer 但是mapstruct 是类似lombok一样 在编译器直接生成性能最高的 直接调用set的方式 在编译器能够提示大多数的映射异常 #### 示例 ##### 依赖和搭配lombok使
#### 前言 最近做一些日志的采集工作 jdk的队列 有点顶不住了 然后看到 很多知名的中间件 工具 都用这个来替代 由于这个东西用的人很多 文档非常丰富 这里只做例子 实际架构图等等 去官网看即可 >参考文档: >美团:ht
#### 前言 jdk自带的一些工具 经常用但是老是现查 很烦 这次找个机会自己记录下 方便自己速查 此处只大概记录 各个工具是干什么的 详细用法 另起笔记记录 > 此处以openjdk-14为例 其他版本jdk可能有自己独有的工具 如
#### 前言 记录日志想通用记录一下用户id 请求id之类的参数方便搜索 找了一些资料 发现mdc最合适 >参考文档: > https://www.jianshu.com/p/1dea7479eb07 > https://logback.qos.ch/xref/chapters/mdc/SimpleMDC.html #### 示例 1. 调整log pattern
#### 前言 前面看了一些位图结构 用处有是有 对于后端来说用处不是很多 这篇 HyperLogLog 看起来做一些粗略统计的时候 还是很合适的 #### HyperLogLog ##### 介绍 * hyperLogLog 是一种近似去重算法 使用少量空间判断数据中不重复元
#### 前言 刚刚把redis 当作队列的几页看完 觉得没啥意思 mq 这个东西 很多成熟的中间件 没必要用redis 看到位图 bitMap 觉得终于到了一个还不错的章节了 虽然我没用过这种 位图 但是在很多地方都看到过有用 只是没深入
#### 前言 最近从公司图书里面找了一本 钱文品大佬写的 《redis深度历险》 准备系统性的看看大佬们是如何使用 redis的 #### 数据类型 ##### 字符串(string) 字符串最常用的数据类型 内部就是一个 字符的数组 > 当字符长
#### 前言 上一个redis应用是做分布式锁 这次看到那个用redis做队列 其实我觉得用处不是很大 毕竟市面上有非常成熟的mq 要求性能的 kafka 要求稳定性的 rabbit redis的mq实在是没办法比 只能在做一些无关紧要的地方做队
#### 前言 看了利用HyperLogLog 来做一些大量数据粗略统计的方案 然后终于看到 自己之前用过 但是并不熟悉的东西 布隆过滤器 #### 布隆过滤器 ##### 介绍 布隆过滤器 在\[允许错误]的情况下 判断某个元素是否在指定大量数
#### 前言 之前复习和记录了一下redis的基础数据类型 今天看了一下 这本书对于redis实现分布式锁的内容 感觉差不多 也是一样的操作 利用redis本身的特性做的单节点分布式锁 和多节点分布式锁的处理 > 分布式锁:在分布
###步骤 1:使用spring boot cli 生成基本项目 2:写dao、controller层代码 3:写thymeleaf 模板 ###1:初始化项目 spring init -dweb,data-jpa,h2,thymeleaf 下载demo.zip解压 改名springboot (任意名称) 刷新maven 下载jar包构建项目 ###2:dao、controller层代码 e
#### 配置mvc相关参数的类 常用的 也就是如下三种方法 如果需要使用spring boot 中默认实现 请选则第三种方式 避免覆盖spring boot 实现 * @EnableWebMvc+extends WebMvcConfigurationAdapter,在扩展的类中重写父类的方法即可,这种方式会屏蔽s
#### 前言 swagger用起来还是很爽的 直接内嵌代码中 前端老师也能看到最新的文档 也能直接测试访问 减少撕b的机会 spring boot1.x 集成swagger2.x 就不用说了 spring boot2.x 由于多了个 webflux swagger在3.x的时候 也做出适配 分别为
#### 前言 最近要调整应用启动的时候做一些功能 例如加载缓存、通知集群服务可用性等 顺手把spring 应用加载相关的事件做个笔记 参考文档: https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/spring-boot-features.html#boot-f
#####jpa扩充jpaRepository接口的方法 1:定义一个接口 继承于 JpaRepository 2:定义接口实现类 3:定义 接口加载工厂方法 4:repository 继承自定义接口 5:启动类使用 自定义加载工厂 ####1:定义扩充方法接口 ``` /** * 基于jpa的默认jpaRep
####全局异常处理 在web中 异常也分为系统异常和业务异常 可以通过增强控制器 来对异常进行全局处理 1:创建业务异常类 ``` import lombok.Data; import java.util.Map; /** * 自定义服务异常 * * @author ming * @date 2017-06-24 */
#### 前言 系统中 定时任务肯定会有 根据项目大小 去正确的选择定时器的相关实现 是非常有必要的 在大型项目中 一般会选择 quartz、elastic job之类的分布式定时框架 或者基于一些环境上的定时功能去实现 如k8s的定时任务、lin
#### 前言 druid连接池 没啥好说的 的确好用 虽然极限性能可能跟 hikari低点 但是功能多啊 各种基本sql监控 、扩展等等 > https://github.com/alibaba/druid > https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 #### 实例 >
##步骤 1:安装spring boot cli 2:利用spring boot cli初始化项目 3:写一个helloworld控制器 ##1:安装spring boot cli spring boot cli是spring boot的一个操作工具 可以直接利用这个工具去生成 管理spribg boot项目 在这里去寻找合适的版本下载解压
#### 前言 在使用swarm编排docker的时候 由于swarm 需要暴露端口需要ingress网络 但是 eureka client 注册的时候 不需要使用 ingress这种网络的网卡 那么这个时候 就需要配置 eureka client 偏向的网络和排除的网卡之类的配置 #### 相关
#### 前言 数据版本管理 很多工具 java主要有 liquibase flyway python的SQLAlchemy liquibase 和flyway 各有侧重点 flyway胜在简单粗暴 直接管理sql脚本 liquibase 胜在可以通过配置去管理db版本 可以不用写单一平台的sql脚本 如果项目用
eureka客户端: * 服务注册相关配置 注册的中心、心跳、注册信息缓存时间 org.springframework.cloud.netflix.eureka.EurekaClientConfigBean * 服务实列配置信息 服务实列的名称、地址、健康检查路径 org.springframework.cloud.netflix.eureka.EurekaInst
#### 前言 spring boot升级到2.x之后 对于request和response的增强方式发生了变化 由于spring boot2.x 不仅仅有servlet标准容器 还有一些其他类型的容器 如netty #### 实例 ##### 增强request 继承ServerHttpRequestDecorator 实现对于 serverHttpRequ
####spring boot 打包成docker image 会更加方便使用 1:配置编译jar选项 2:配置maven docker 插件 3:上传到私服 4:自动化脚本 ####配置编译jar 如果是继承spring boot 的pom 直接如下配置即可 ``` <plugin> <groupId>org.springframework.boot</groupId>
#### 指定前后端传输数据格式 在前后分离项目中 最麻烦的应该就是 前后端工程师对接 后端通过添加mvc消息转换器 返回更加符合前端的数据格式 这个数据格式 不是说返回的格式 而是 某些类型的数据的处理 例如 date 可以
###actuator 是spring boot 提供的一个监控的工具 直接访问 相应端点(rest 接口) 端点分为三种: * 应用配置类 /autoconfig 获取应用的自动配置相关参数 /beans 获取应用的所有bean /configprops 应用中配置的属性信息 设置enable
##1:resource接口 ###### Resource是spring 中加载资源的顶级接口 主要方法有: * boolean exists(); 是否存在资源 * boolean isOpen(); 资源是否打开 是否开启 * URL getURL(); 返回可抽象成url的资源的URL对象 * FIle getFile();返回底层资源的文件流
###在使用spring boot的时候 spring本身会根据springboot的版本引入依赖包 跟maven一样有隐藏依赖会自动引入这个时候如果不需要其中一些工具包 或者需要指定某些包的版本 可以通过maven的功能去排除依赖和覆盖依赖 ##排除依赖 通
####全局处理json数据返回格式 在前后端分离中 前后端为了更好的交互 应该指定一个较为通用的数据返回格式 基本上都是code+data 方式返回 在spring mvc 中通过对controller全局增强 来进行处理 1:制定 返回json数据返回大致格
公司想切换到spring cloud上所以我找了本书看看 大致上知道了spring cloud的各部分组件 也算是用的比较熟练了 但是好记性不如烂笔头 所以写一波笔记 防止遗忘 ####目录 * 综述 * 注册中心(eureka、consul、zk) * 微服务服务端、
在使用spring 中总有地方要求获取bean或者注册bean 所以找了部分资料 抄袭了几波 合并成如下工具类 主要功能 : * 获取bean * 手动注册bean * 删除手工注册的bean ``` package com.ming.utils; import com.google.common.collect.Maps; import org.ap
#### 前言 在spring mvc中 使用@ControllerAdvice + @ExceptionHandler 可以做到mvc级别的异常拦截 但是涉及到容器级别 如tomcat 或者netty构建web容器中 无法拦截filter级别的异常 mvc级别的全局异常拦截笔记: {% post_link spring/springboot-mvc返
#### 前言 在spring boot web项目中 会有一些需求 要求 对 请求之前的信息和返回给请求方信息进行预处理 如 参数、响应信息加密 解密操作 , 记录请求参数和响应信息日志 等操作 原本的httpServletRequest,httpServletResponse 对这些操
#### 前言 spring boot 默认内嵌是tomcat 如果只是想最简单提升一下性能 可以把tomcat 换成 undertow 至于哪里强 可以看看一些web服务器对比 undertow还是很能打的 > https://undertow.io/ #### 示例 ##### 依赖 ```xml <sp