技术

分类:技术

← 分类总览
ImageIO.read() 读取webp图片报null异常技术

ImageIO.read() 读取webp图片报null异常

1、有些图片后缀虽然是png的,但是实质上是其他的格式。 样例图片 用记事本可以打开看到他真实的格式 2、这种格式ImageIO.read() 读取 图片的时候返回的是null 3、解决办法 只需要增加如下依赖,代码不用动 webp-imageio-core-0.1.0.jar

2024-02-05技术
Bean Copy使用分析技术

Bean Copy使用分析

在实际的开发过程中,会出现一种开发的需求,就是进行bean的拷贝,最笨的方法就是通过get,set来处理。这种方法虽然简单明了,但是会增加很大的代码量。 很多组件提供了bean拷贝的工具 1. Bean Copy原理 对象拷贝技术模式一般分为: 注解处理器技术,是在编译期处理注解

2023-03-14技术
面试中关于博客评论接口防刷的一些后续思考技术

面试中关于博客评论接口防刷的一些后续思考

接口防刷 接原文: https://www.fengpt.cn/archives/%E5%8D%9A%E5%AE%A2%E8%AF%84%E8%AE%BA%E6%8E%A5%E5%8F%A3%E8%A2%AB%E6%81%B6%E6%84%8F%E5%88%B7%E8%AF%84

2021-05-31技术
docker 安装ElasticSearch、springboot使用es技术

docker 安装ElasticSearch、springboot使用es

一、docker安装es docker run -it --name elasticsearch -d -p 9200:9200 -p 9300:9300 -p 5601:5601 -e "discovery.type=single-node" docker.elastic.co

2020-12-25技术
docker安装elasticsearch head插件监控管理技术

docker安装elasticsearch head插件监控管理

1、安装 docker pull mobz/elasticsearch-head:5 docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5 2、访问 在浏览器中打开elasticsearch-head页面,填

2020-12-25技术
docker快速部署elk、SpringBoot收集日志到elk技术

docker快速部署elk、SpringBoot收集日志到elk

一、前言 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Lo

2020-12-21技术
docker容器与宿主机互相拷贝文件技术

docker容器与宿主机互相拷贝文件

一、从容器里面拷文件到宿主机? docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径 二、从宿主机拷文件到容器里面 docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径

2020-11-03技术
liunx 安装 Docker Private Registry 和 Web UI技术

liunx 安装 Docker Private Registry 和 Web UI

一、环境信息: 操作系统:liunx Docker版本:19.03.5 (其他版本应该类似)、下载docker-compose registry:latest registry-web: hyper/docker-registry-web:latest ip:10.10.10.1

2020-10-30技术
Java后端相关技术栈一些思维导图技术
MySQL如何存储表情技术

MySQL如何存储表情

前言: DBA经常性会遇到RD小伙伴询问,为什么我的数据库无法存储emoj的表情?为什么我的数据库都设置成了utf8mb4插入emoj表情还是报错?为什么我的emoj表情插入到数据库里面了,可是显示的是问号? 如: Caused by: java.sql.SQLException

2020-09-30技术
如何设置合理的mysql连接池数技术

如何设置合理的mysql连接池数

目的 鉴于目前数据库连接数管理混乱,RD申请资源设定连接池没有进行精确考量,造成数据库连接数资源紧张的问题。 在此文档中将详细介绍连接池的由来,作用以及MySQL针对连接的处理,帮助RD能够设定合理的连接数,避免资源浪费和异常发生。 什么是连接池 在系统设计中,我们常常会使用到池

2020-09-30技术
PostgreSql 关系型数据库入门技术

PostgreSql 关系型数据库入门

前言 https://db-engines.com/en/ranking 根据这个数据库使用排名,可以看出PostgreSql不断在处于上升的趋势。 自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选。 基本介绍 官网: https://ww

2020-09-08技术
从kafka到磁盘读写顺序技术

从kafka到磁盘读写顺序

今天看kafka官网的文档,关于性能方面的讨论时,又提到了磁盘随机读写和顺序读写性能方面的事,借此机会整理一下。 现在的大数据工具一般都会设计为append only的形式,既文件只能追加写,其它的删、改都只能建立在append only的基础上,如删一条数据只能append一个

2020-08-03技术
Springboot 整合RabbitMq技术

Springboot 整合RabbitMq

这个还是挺全面的,所以转载下。 原文链接: https://blog.csdn.net/qq_35387940/java/article/details/100514134 先简单的一个消息推送到接收的流程,提供一个简单的图 黄色的圈圈就是我们的消息推送服务,将消息推送到 中间方

2020-05-16技术
阿里新版《Java 开发手册(泰山版)》技术

阿里新版《Java 开发手册(泰山版)》

阿里的《Java开发手册》距离上次发布已经过去了 10 个月了,而这次发布也增加了很多干货内容,比如:新增 34 条规约,修改描述 90 处,其中错误码规则更是第一次提出完整的解决方案,发布日志如下图所示: 下载地址: https://fengpt.oss-cn-beijing.

2020-05-02技术
Java开发中的po,dto,vo都是什么意思技术

Java开发中的po,dto,vo都是什么意思

PO 翻译过来就是持久层对象,一般来说数据库中单表一条记录对应一个PO,可以把一个PO转换为其他类型对象。好处是简单。 VO 与页面交互对象,如页面显示以及Excel中导入导出,在控制层这种与视图层中传输,可以隐藏数据库中不想显示的字段显示。 DTO 代表数据传输对象的意思 是一

2020-04-22技术
Docker全自动搭建zdir服务器文件目录列表和KodExplorer可道云技术

Docker全自动搭建zdir服务器文件目录列表和KodExplorer可道云

前言 zdir服务器文件 主要功能:目录浏览 、MarkDown文件预览、CSS/JavaScript一键复制 、查看文件HASH、图片预览、文件索引、显示二维码、文件删除。 KodExplorer可道云,原名芒果云,是基于Web技术的私有云和在线文件管理系统。致力于为用户提供安

2020-04-20技术
docker+nextcloud搭建个人云存储系统技术

docker+nextcloud搭建个人云存储系统

前言 Nextcloud 是一个免费专业的私有云存储网盘「开源」项目,可以让你简单快速地在个人/公司电脑、服务器甚至是树莓派等设备上架设一套属于自己或团队专属的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作等功能。 OnlyOffice是一款强大的在线offi

2020-04-19技术
写一个迷你版的Tomcat技术

写一个迷你版的Tomcat

一、前言 当我们的Web运行的时候,从浏览器发出的请求,必然首先到达tomcat中,之后由tomcat进行处理,由此要考虑tomcat要进行哪些处理,首先便是提供Socket服务,之后对于请求进行分发,把请求和产生的响应封装成request和response (1)提供Socke

2020-04-17技术
Intellij Idea远程调试 Java代码技术

Intellij Idea远程调试 Java代码

一、前言 线上代码出了问题,总是要在本地复现,然后debug,这个过程是在是不太友好,而且线上的很多数据本地没有,经常耽误好久的时间来同步数据. 当然有解决方案,这就是远程调试(Remote debugging)。远程调试使开发人员能够直接诊断服务器或其它线上进程上的问题,它提供

2020-04-12技术
docker 安装wiki_confluence 和研发项目管理平台--禅道技术

docker 安装wiki_confluence 和研发项目管理平台--禅道

前言: Wiki 是一个协同著作平台或称开放编辑系统。我们可以用Wiki来建设帮助系统,知识库系统。Confluence是一个专业的wiki程序。它是一个知识管理的工具,通过它可以实现团队成员之间的协作和知识共享。Confluence使用简单,但它强大的编辑和站点管理特征能够帮助

2020-04-11技术
springboot 打出来的jar包如何将class文件和依赖的jar分离?如何提高docker构建效率?技术

springboot 打出来的jar包如何将class文件和依赖的jar分离?如何提高docker构建效率?

一、背景介绍 一般 SpringBoot 的项目依赖 Jar 大小维持在 40MB ~ 160MB。SpringBoot 程序 Jar 包就是这些 Classes 文件和依赖的 Jar 组成,这些依赖 Jar几乎占了这个应用 Jar 包的全部大小。 当我们写一个程序的时候,常常所

2020-04-09技术
docker-compose一键搭建gitlab技术

docker-compose一键搭建gitlab

1、编写docker-compose.yml文件 version: "3" services: gitlab: image: gitlab/gitlab-ce container_name: gitlab restart: always hostname: '192.168.31

2020-04-09技术
docker-compose安装reids技术

docker-compose安装reids

一、编写docker-compse.yml文件 version: '3' services: redis: hostname: redis image: redis:5.0.4 container_name: redis restart: unless-stopped comma

2020-04-08技术
jenkins 安装和使用中的几个坑技术

jenkins 安装和使用中的几个坑

一、docker部署时,权限问题 docker run -itd -p 9090:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/jenkins:/var/jenkins_home jenkins/jen

2020-04-07技术
分布式配置中心-Apollo安装与简单使用技术

分布式配置中心-Apollo安装与简单使用

一、简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。 二、安装 1、环境要求 jdk1.8 mysql 5.6+ 2、首先在

2020-04-06技术
Java实时读取日志文件技术

Java实时读取日志文件

RandomAccessFile类中seek方法可以从指定位置读取文件,可以用来实现文件实时读取。 一、实现步骤: 1.首先,要有服务器上日志文件的路径。 String url="/logpath/logFile.log"; 2.根据路径生成文件对象。 File file = n

2020-04-05技术
if/else问题解决(一)函数式编程技术

if/else问题解决(一)函数式编程

一、案例 public static Integer add(Integer a1, Integer b1, Integer c1) { return a1 + b1 + c1; } public static Integer sub(Integer a1, Integer b1

2020-04-04技术
spring boot  Sharding-jdbc 分表分库技术

spring boot Sharding-jdbc 分表分库

之前我们介绍了Sharding-jdbc的读写分离,这一文,我们实现分表分库。 官方文档地址: https://shardingsphere.apache.org/document/current/cn/overview/ 一、首先创建一个一般的Spring boot项目,加入p

2020-04-02技术
springboot +Sharding-JDBC 读写分离技术

springboot +Sharding-JDBC 读写分离

Sharding-JDBC是当当网的一个开源项目,只需引入jar即可轻松实现读写分离与分库分表。 读写分离,简单来说,就是将DML交给主数据库去执行,将更新结果同步至各个从数据库保持主从数据一致,DQL分发给从数据库去查询,从数据库只提供读取查询操作。读写分离特别适用于读多写少的

2020-03-30技术
Kafka的开源Web UI可视化界面 Kafdrop技术

Kafka的开源Web UI可视化界面 Kafdrop

Kafdrop是Apache Kafka的开源Web UI可视化界面 。 主要功能 查看Kafka代理 -主题和分区分配以及控制器状态 查看主题 -分区数,复制状态和自定义配置 浏览消息 -JSON,纯文本和Avro编码 查看消费者组 -每个分区的停放偏移量,合并延迟和每个分区滞

2020-03-29技术
mysql、canal、kafka、数据同步系列(五)canal整合kafka技术

mysql、canal、kafka、数据同步系列(五)canal整合kafka

终于到最后一步了。我们依然采用docker-compose部署。 1、我们修改之前的docker-compose.yml文件 version: '3' services: canal-server: image: canal/canal-server:v1.1.3 contain

2020-03-29技术
mysql、canal、kafka、数据同步系列(四)canal的安装和配置技术

mysql、canal、kafka、数据同步系列(四)canal的安装和配置

历经了前面的各种安装,终于到canal的安装和配置了。这里依然采用docker-compose安装. 1、编写docker-compose.yml文件 version: '3' services: canal-server: image: canal/canal-server:v

2020-03-29技术
mysql、canal、kafka、数据同步系列(二)zookeeper安装技术

mysql、canal、kafka、数据同步系列(二)zookeeper安装

因为kafka依赖zookeeper,所以本文来说明下zookeeper和配置。采用docker-compose安装 1、编写docker-compose.yml version: '3' services: zookeeper: image: wurstmeister/zook

2020-03-28技术
mysql、canal、kafka、数据同步系列(三)kafka安装和配置技术

mysql、canal、kafka、数据同步系列(三)kafka安装和配置

kafka安装采用docker-compose安装 1、编写docker-compose.yml version: '3' services: kafka: image: wurstmeister/kafka ## 镜像 volumes: - /etc/localtime:/et

2020-03-28技术
mysql、canal、kafka、数据同步系列(一)mysql安装和配置技术

mysql、canal、kafka、数据同步系列(一)mysql安装和配置

canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。 本文主要说明mysql的相关配置。采用docker-compose部署 1、docker-compose.yml versi

2020-03-28技术
手写一个简单的线程池技术

手写一个简单的线程池

线程池核心代码 package com.app.lock.app; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; import java.util.concurre

2020-03-27技术
极简理解二叉树、红黑树、B Tree,B+Tree技术

极简理解二叉树、红黑树、B Tree,B+Tree

一、二叉树 1、例子 2、缺点 当数据是自增顺序的,查找就很慢,和链表一样了 突然发现,链表也是二叉树。。。 二、红黑树 1、例子 可以看出,数据是自增顺序的,他会自己调整,这样查找也是方便。 2、缺点 例如数据量特别大,这样他的树的深度,很深,如果要查找的数据,在最底层叶子节点

2020-03-27技术
if/else问题解决(二)策略模式+工厂方法消除技术

if/else问题解决(二)策略模式+工厂方法消除

一、案例 假设需求为,根据类型,处理相对应的操作,优化前有以下代码: public void operation(String type){ if("add".equals(type)){ //执行加法 }else if("sub".equals(type)){ //执行减法 }

2020-03-25技术
if/else问题解决(一)函数式编程技术

if/else问题解决(一)函数式编程

一、案例 public static Integer add(Integer a1, Integer b1, Integer c1) { return a1 + b1 + c1; } public static Integer sub(Integer a1, Integer b1

2020-03-24技术
Markdown内嵌视频技术

Markdown内嵌视频

第一种 <video id="video" controls="controls" preload="none" poster="视频封面"> <source id="mp4" src="视频链接"> </video> 第二种 <iframe height=768 width=1

2020-03-19技术
手写一个简单的HashMap技术

手写一个简单的HashMap

public class MyHashMap<K,V> { private static final int DEFAULT_CAPTIY=16; private static final float DEFAULT_FACOTR=0.75f; private float loa

2020-03-18技术
手动实现J.U.C下面的Lock锁技术

手动实现J.U.C下面的Lock锁

package com.app.lock.app; import sun.misc.Unsafe; import java.lang.reflect.Field; public class MyLock { private volatile int state; private

2020-03-14技术
Java程序员必备的一些流程图技术

Java程序员必备的一些流程图

作者:Jay_huaxiao 原文:juejin.im/post/5d214639e51d4550bf1ae8df 1. spring的生命周期 Spring作为当前Java最流行、最强大的轻量级容器框架,了解熟悉spring的生命周期非常有必要; 首先容器启动后,对bean进行

2020-03-12技术
表达式1.0 / 0.0将返回什么?它会抛出异常吗?任何编译时错误?技术

表达式1.0 / 0.0将返回什么?它会抛出异常吗?任何编译时错误?

这个问题,我还之前没想过,刚才实验了下... 我们来分析下: 我们知道,在整型运算中,除数是不能为0的,否则直接运行异常。但是在浮点数运算中,引入了无限这个概念,我们来看一下Double和Float中的定义。 Double: public static final double

2020-03-04技术
除了负载均衡,Nginx还可以做很多,限流、缓存、黑白名单等技术

除了负载均衡,Nginx还可以做很多,限流、缓存、黑白名单等

一、静态代理 Nginx擅长处理静态文件,是非常好的图片、文件服务器。把所有的静态资源的放到nginx上,可以使应用动静分离,性能更好。 二、负载均衡 Nginx通过反向代理可以实现服务的负载均衡,避免了服务器单节点故障,把请求按照一定的策略转发到不同的服务器上,达到负载的效果。

2020-03-04技术
i == i + 1  什么时候返回true?技术

i == i + 1 什么时候返回true?

i == i + 1;这个一般来说是返回false吧,一个数字永远不会等于它自己加1,这是正常的思维,但是我们知道无穷大加一还是无穷大。这也验证了上述的小总结。 事实上,你不必将i 初始化为无穷大以确保返回true。任何足够大的浮点数都可以实现这一目的, 代码实验: double

2020-03-04技术
Java 四种线程池的用法分析技术

Java 四种线程池的用法分析

1、new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }

2020-03-03技术
ClassNotFoundException 和 NoClassDefFoundError 有什么区别技术

ClassNotFoundException 和 NoClassDefFoundError 有什么区别

在写Java程序的时候,当一个类找不到的时候,JVM有时候会抛出ClassNotFoundException异常,而有时候又会抛出NoClassDefFoundError。看两个异常的字面意思,好像都是类找不到,但是JVM为什么要用两个异常去区分类找不到的情况呢?这个两个异常有什

2020-03-03技术
SpringMVC的控制器是单例的吗?技术

SpringMVC的控制器是单例的吗?

对于SpringMVC Controller单例和多例,下面举了个例子说明下. 第一次:类是多例,一个普通属性和一个静态属性。 @RestController @Scope(value = "prototype") public class TestController { pr

2020-03-03技术
超级全面的Java面试题集及参考答案技术

超级全面的Java面试题集及参考答案

相关概念 面向对象的三个特征 封装,继承,多态.这个应该是人人皆知.有时候也会加上抽象. 多态的好处 允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用).主要有以下优点: 可替换性:多态对已存在代码具有可替换性. 可

2020-03-03技术
ThreadLocal(二)-内存泄漏问题技术

ThreadLocal(二)-内存泄漏问题

一、原因 实际上 ThreadLocalMap 中使用的 key 为 ThreadLocal 的弱引用,弱引用的特点是,如果这个对象只存在弱引用,那么在下一次垃圾回收的时候必然会被清理掉。 所以如果 ThreadLocal 没有被外部强引用的情况下,在垃圾回收的时候会被清理掉的,

2020-03-02技术
ThreadLocal(一)技术

ThreadLocal(一)

1、简介 ThreadLocal是解决线程安全问题一个很好的思路,它通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题。在很多情况下,ThreadLocal比直接使用synchronized同步机制解决线程安全问题更简单,更方便,且结果程序拥有更高的并发性。 Thr

2020-03-01技术
undertow简单入门技术

undertow简单入门

一、概述 Undertow 是红帽公司开发的一款基于 NIO 的高性能 Web 嵌入式服务器 二、特点 轻量级:它是一个 Web 服务器,但不像传统的 Web 服务器有容器概念,它由两个核心 Jar 包组成,加载一个 Web 应用可以小于 10MB 内存 Servlet3.1 支

2020-02-29技术
8种幂等性解决重复提交的方案技术

8种幂等性解决重复提交的方案

作者:锦成同学 来源:juejin.im/post/5d31928c51882564c966a71c 1.什么是幂等 在我们编程中常见幂等 1)select查询天然幂等 2)delete删除也是幂等,删除同一个多次效果一样 3)update直接更新某个值的,幂等 4)update

2020-02-28技术
Java 中关于 try、catch、finally 中的细节分析技术

Java 中关于 try、catch、finally 中的细节分析

看了一位博友的一篇文章,讲解的是关于java中关于try、catch、finally中一些问题 下面看一个例子(例1),来讲解java里面中try、catch、finally的处理流程 public class TryCatchFinally { @SuppressWarning

2020-02-26技术
JVM 常见十大配置参数技术

JVM 常见十大配置参数

1.-Xms:初始堆大小。只要启动,就占用的堆大小。 2.-Xmx:最大堆大小。java.lang.OutOfMemoryError:Java heap这个错误可以通过配置-Xms和-Xmx参数来设置。 3.-Xss:栈大小分配。栈是每个线程私有的区域,通常只有几百K大小,决定了

2020-02-18技术
mybatis中sql写法技巧小总结技术

mybatis中sql写法技巧小总结

官方说了 mybatis 的动态sql语句是基于OGNL表达式的。可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: if 语句 (简单的条件判断) choose (when,otherwize) ,相当于java 语言中的 sw

2020-02-13技术
100多个免费API接口分享技术

100多个免费API接口分享

各类无次数限制的免费API接口整理,主要是聚合数据上和API Store上的一些,还有一些其他的。 聚合数据提供30大类,160种以上基础数据API服务,国内最大的基础数据API服务,下面就罗列一些免费的各类API接口。 手机号码归属地API接口: https://www.juh

2020-02-10技术
MySQL binlog 增量订阅&消费组件---canal(一)技术

MySQL binlog 增量订阅&消费组件---canal(一)

canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数

2020-02-08技术
java同步系列-Unsafe解析技术

java同步系列-Unsafe解析

问题 (1)Unsafe是什么? (2)Unsafe只有CAS的功能吗? (3)Unsafe为什么是不安全的? (4)怎么使用Unsafe? 简介 本章是java并发包专题的第一章,但是第一篇写的却不是java并发包中类,而是java中的魔法类sun.misc.Unsafe。 U

2020-02-07技术
java同步系列-锁分类以及特点技术

java同步系列-锁分类以及特点

(1)公平锁/非公平锁 公平锁,是指按照线程申请的顺序获取锁。 非公平锁,是指不是按照线程申请的顺序获取锁,有可能后申请的线程反而先获取到锁,假如先来的线程一直获取不到锁,会造成锁饥饿现象。 ReentrantLock中可以通过构造方法指定是否为公平锁,默认为非公平锁,非公平锁的

2020-02-03技术
JDK源码系列(集合)--LinkedHashMap源码分析技术

JDK源码系列(集合)--LinkedHashMap源码分析

简介 LinkedHashMap内部维护了一个双向链表,能保证元素按插入的顺序访问,也能以访问顺序访问,可以用来实现LRU缓存策略。 LinkedHashMap可以看成是 LinkedList + HashMap。 继承体系 LinkedHashMap继承HashMap,拥有Ha

2020-01-25技术
JAVA正则表达式绝对常用的(二)技术

JAVA正则表达式绝对常用的(二)

1、验证IP地址 /** * 验证IP地址 * * @param 待验证的字符串 * @return 如果是符合格式的字符串,返回 <b>true </b>,否则为 <b>false </b> */ public static boolean isIP(String str) {

2020-01-23技术
设计模式-职责链模式技术

设计模式-职责链模式

1、简单介绍 职责链模式(称责任链模式)将请求的处理对象像一条长链一般组合起来,形成一条对象链。请求并不知道具体执行请求的对象是哪一个,这样就实现了请求与处理对象之间的解耦。 2、主要涉及到的角色 抽象处理者(Handler)角色:抽象处理者用于定义出一个处理请求的接口,如果需要

2020-01-22技术
设计模式-策略模式技术

设计模式-策略模式

1、简单介绍 策略模式(Strategy Pattern)属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 2、策略模式主要由这三个角色组成,环境角色(Conte

2020-01-21技术
JAVA正则表达式绝对常用的(一)技术

JAVA正则表达式绝对常用的(一)

1、校验手机号是否正确 public class Main { public static void main(String args[]) { String tel="15800001123"; //第一位1,第二位3或者5或者8,\\d{9}代表0-9出现了9次 String

2020-01-20技术
设计模式-适配器模式技术

设计模式-适配器模式

1、简单介绍 适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原来接口不兼容的类可以合作无间。适配器模式有两种:“对象”适配器和“类”适配器。 2、适配器模式组成结构 客户 (Client):客户类。 目标接口(Target):客户所期待的接口。目标可以是具体的或抽

2020-01-20技术
彻底解决Docker日志过大问题技术

彻底解决Docker日志过大问题

这个问题我已经被坑过了。。。。。 docker日志一般存储在/var/lib/docker/containers/<container_id>下,文件名为<container_id>-json.log,docker中的日志全部由这个文件负责记录,如果业务量大的话,这个文件大小增长

2020-01-19技术
设计模式-观察者模式技术

设计模式-观察者模式

1、简单了解 在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新,成为观察者模式。 观察者模式又称为发布/订阅(Publish/Subscribe)模式。 2、该模式包含四个角色 抽象被观察者角色:也就是一个抽象主题,它把所有对观察者对象

2020-01-19技术
java同步系列-redis分布式锁进化史技术

java同步系列-redis分布式锁进化史

问题 (1)redis如何实现分布式锁? (2)redis分布式锁有哪些优点? (3)redis分布式锁有哪些缺点? (4)redis实现分布式锁有没有现成的轮子可以使用? 简介 Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用A

2020-01-17技术
Linux进程间通信-IPC&TCP协议技术

Linux进程间通信-IPC&TCP协议

IPC 三次握手过程 TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; SYN:同步序列编号(Synchronize Se

2020-01-17技术
压缩 20M 文件从 30 秒到 1 秒的优化过程技术

压缩 20M 文件从 30 秒到 1 秒的优化过程

第一次优化过程-从30秒到2秒 第二次优化过程-从2秒到1秒 使用Channel 使用内存映射文件 使用Pipe 案例:有一个需求需要将前端传过来的10张照片,然后后端进行处理以后压缩成一个压缩包通过网络流传输出去。之前没有接触过用Java压缩文件的,所以就直接上网找了一个例子改

2020-01-17技术
手写RPC远程调用技术

手写RPC远程调用

RPC 的全称是 Remote Procedure Call 是一种进程间通信方式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。 远程调用原理 比如 A (client) 调用 B (server) 提供的方法

2020-01-16技术
设计模式-工厂模式-简单工厂模式技术

设计模式-工厂模式-简单工厂模式

实例化对象的时候不再使用 new Object()形式,可以根据用户的选择条件来实例化相关的类。对于客户端来说,去除了具体的类的依赖。只需要给出具体实例的描述给工厂,工厂就会自动返回具体的实例对象 1、定义一个接口: public interface Runner { //行驶

2020-01-16技术
设计模式-手写jdk动态代理技术

设计模式-手写jdk动态代理

话不多说,直接看代码。 注意我们没用jdk的。 1、首先创建一个代理接口 public interface InvocationHandler { Object invoke(Object proxy, Method method, Object[] args) throws T

2020-01-16技术
JDK源码系列(集合)--ArrayList源码分析技术

JDK源码系列(集合)--ArrayList源码分析

简介 ArrayList是一种以数组实现的List,与数组相比,它具有动态扩展的能力,因此也可称之为动态数组。 继承体系 ArrayList实现了List, RandomAccess, Cloneable, java.io.Serializable等接口。 ArrayList实现

2020-01-14技术
手写Mybatis-XML简单版技术

手写Mybatis-XML简单版

MyBatis核心流程 1、读取xml配置文件和注解中的配置信息。 2、构建sqlsessionFactory 3、打开sqlSession 4、获取mapper接口对象,通过SqlSession完成SQL解析,参数的映射,SQL的执行,结果的反射解析过程 这个案例写的不是很完善

2020-01-14技术
设计模式-代理模式技术

设计模式-代理模式

代理(Proxy)是一种设计模式,提供了间接对目标对象进行访问的方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的功能上,增加额外的功能补充,即扩展目标对象的功能. 一、简单介绍 1、优点:符合了设计模式的开闭原则,即在对既有代码不改动的情况下进行功能的扩展。

2020-01-14技术
JDK源码系列(集合)--HashMap源码分析技术

JDK源码系列(集合)--HashMap源码分析

简介 HashMap采用key/value存储结构,每个key对应唯一的value,查询和修改的速度都很快,能达到O(1)的平均时间复杂度。它是非线程安全的,且不保证元素存储的顺序。 继承体系 HashMap实现了Cloneable,可以被克隆。 HashMap实现了Serial

2020-01-14技术
Java数据结构之跳表技术

Java数据结构之跳表

何为跳表? 跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。 跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。 跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。 跳表详解 有序链表 考虑一个有序链表,我们要查找3、7、17这几个元素

2020-01-13技术
设计模式-单例模式的八种实现方式技术

设计模式-单例模式的八种实现方式

在单例模式中,活动的单例只有一个实例,对单例类的所有实例化得到的都是相同的一个实例。这样就 防止其它对象对自己的实例化,确保所有的对象都访问一个实例。 一、饿汉式静态常量 public class Singleton { //私有构造方法 private Singleton(){

2020-01-13技术
Jenkins+docker部署springboot项目技术

Jenkins+docker部署springboot项目

一、安装Jenkins(之后学习) 二、启动Jenkins nohup java -jar jenkins.war --httpPort=8090 > jenkins.log 2>&1 & 三、配置mavan,git,jdk 四、新建一个任务 五、配置 1、 设置项目的源码路径

2020-01-12技术
redis四种部署模式技术

redis四种部署模式

前言 liunx下安装reids(暂时这里不说了)。 一、单机模式 ./redis-server ../etc/redis.conf 二、主从 1、修改redis.conf文件 # 使得Redis服务器可以跨网络访问 bind 0.0.0.0 # 设置密码 requirepass

2020-01-10技术
liunx 采用docker-compose安装owncloud私有文件服务器搭建技术

liunx 采用docker-compose安装owncloud私有文件服务器搭建

1、安装docker,docker-compose。 2、编写docker-compose.yml version: '3' services: owncloud: image: owncloud links: - mysql:mysql volumes: - "/data/db

2020-01-08技术
Liunx java环境开发搭建--虽然简单,还是记录下吧技术

Liunx java环境开发搭建--虽然简单,还是记录下吧

一、jdk安装 1、安装 wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com

2020-01-08技术
一张图看明白-过滤器 /监听器 /拦截器技术

一张图看明白-过滤器 /监听器 /拦截器

说明: 过滤器:用于属性甄别,对象收集(不可改变过滤对象的属性和行为) 监听器:用于对象监听,行为记录(不可改变监听对象的属性和行为) 拦截器:用于对象拦截,行为干预(可以改变拦截对象的属性和行为)

2020-01-06技术
git的简单使用技术

git的简单使用

Git基本常用命令如下: mkdir: XX (创建一个空目录 XX指目录名) pwd: 显示当前目录的路径。 git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。 git add XX 把xx文件添加到暂存区去。 git commit –m “XX”

2020-01-06技术
Maven常用命令技术

Maven常用命令

1、Maven库: http://repo2.maven.org/maven2/ 2、Maven依赖查询: http://mvnrepository.com/ 3、一般使用模式 【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】 4、maven

2020-01-06技术
Liunx 下docker-compose部署mysql技术

Liunx 下docker-compose部署mysql

一、创建mysql文件夹 mkdir mysql 二、进入mysql文件夹,编写 docker-compose.yml文件 version: '3' services: mysql1: environment: MYSQL_ROOT_PASSWORD: "yourpassword

2020-01-05技术
动态代理-cglib和jdk动态代理技术

动态代理-cglib和jdk动态代理

一、cglib和jdk动态代理的区别 jdk动态代理实现了被代理对象的接口,cglib是继承了被代理的对象【通过字节码技术创建这个类的子类,实现动态代理】 都是在运行期间,jdk是直接写class字节码,cglib使用asm框架写字节码,实现更复杂 java动态代理是利用反射机制

2020-01-04技术
idea踩坑记录(一)技术

idea踩坑记录(一)

1、IDEA一个窗口只能打开一个项目 不像eclipse一个窗口能管理很多项目,IDEA一个窗口只能打开一个Project,一个project下面可以有多个Modules。可以把IDEA里面的Project理解成eclipse里面的workspace,Project里面管理着很多

2020-01-04技术
DockerFile文件的编写技术

DockerFile文件的编写

1、FROM [: ] [AS ]: 设置基础镜像 FROM感觉就是继承的关系 比如你需要在tomcat里运行你的web应用,就可以通过from来继承父镜像在集成自己的应用来扩展镜像。 如果需要多个镜像呢?Docker 17.05版本以后,新增了Dockerfile多阶段构建。所

2020-01-04技术
回溯法求全排列问题技术

回溯法求全排列问题

import java.util.ArrayList; import java.util.List; import java.util.Stack; import org.junit.Test; public class Permutation { public static f

2020-01-04技术
数据库版本管理工具flyway和liquibase技术

数据库版本管理工具flyway和liquibase

前言 从新开发软件到版本迭代可能会遇到的问题 新版本开发过程中,开发人员的数据库变更如何更准确地反应到提交的文件中。(比如,A 在开发过程中添加了一个忘记写变动脚本的字段) 某些预设的系统配置,没有设置的时候可能会出现错误。 版本迭代的时候,老版本的数据库结构和数据的处理。 一、

2020-01-02技术
分布式与集群的区别技术

分布式与集群的区别

作者:至尊宝 cnblogs.com/aspirant/p/5697807.html 在IDF05(Intel Developer Forum 2005)上,Intel首席执行官Craig Barrett就取消4GHz芯片计划一事,半开玩笑当众单膝下跪致歉,给广大软件开发者一个明

2020-01-02技术
传统版加锁生产者消费者实现技术

传统版加锁生产者消费者实现

Synchronized锁与notify wait实现 public class FruitPlateDemo { private final static String LOCK = "lock"; private int count = 0; private static f

2019-12-28技术
非阻塞队列版生产者消费者技术

非阻塞队列版生产者消费者

生产者代码 package com.example.demo; import java.util.Random; import java.util.concurrent.BlockingQueue; import java.util.concurrent.TimeUnit; im

2019-12-28技术
堆排序技术

堆排序

package nodelist; public class HeapSort { /** * 堆排序 * @param arr */ public void heapSort(int arr[]){ int length=arr.length; makeMinHeap(arr,

2019-12-26技术
红黑树插入节点Java实现技术

红黑树插入节点Java实现

1. 红黑树的定义 红黑树是一颗二叉查找树,且具有如下特性: (1) 每个节点或者是黑色,或者是红色。 (2) 根节点是黑色。 (3) 每个叶子节点是黑色。 [注意:这里叶子节点,是指为空的叶子节点!] (4) 如果一个节点是红色的,则它的子节点必须是黑色的。 (5) 从一个节点

2019-12-25技术
双向快速排序技术

双向快速排序

package nodelist; public class QuickSort { public static void main(String[] args) { QuickSort qs = new QuickSort(); int[] arr = new int[] {

2019-12-25技术
MQ 选型和对比技术

MQ 选型和对比

1.从社区活跃度 按照目前网络上的资料,RabbitMQ 、activeM 、ZeroMQ 三者中,综合来看,RabbitMQ 是首选。 2.持久化消息比较 ZeroMq 不支持,ActiveMq 和RabbitMq 都支持。持久化消息主要是指我们机器在不可抗力因素等情况下挂掉了

2019-12-22技术
正则表达式技术

正则表达式

一、概述 二、匹配单个字符 三、匹配一组字符 四、使用元字符 五、重复匹配 六、位置匹配 七、使用子表达式 八、回溯引用 九、前后查找 十、嵌入条件 参考资料 一、概述 正则表达式用于文本内容的查找和替换。 正则表达式内置于其它语言或者软件产品中,它本身不是一种语言或者软件。 正

2019-12-08技术
插入排序&希尔排序技术

插入排序&希尔排序

插入排序:平均时间复杂度:O(n2) public static void insert_sort(int array[],int lenth){ int temp; for(int i=0;i<lenth-1;i++){ for(int j=i+1;j>0;j--){ if(a

2019-12-07技术
冒泡排序&选择排序技术

冒泡排序&选择排序

冒泡排序:平均时间复杂度:O(n2) public static void BubbleSort1(int [] arr){ int temp;//临时变量 boolean flag;//是否交换的标志 for(int i=0; i<arr.length-1; i++){ //表

2019-12-07技术
为什么阿里巴巴禁止使用存储过程?技术

为什么阿里巴巴禁止使用存储过程?

《阿里巴巴Java开发手册》是这样规定的: 【强制】禁止使用存储过程,存储过程难以调试和扩展,更没有移植性。 存储过程的缺点: 1.并不是所有开发人员都熟悉怎么使用存储过程,包括像怎么用SQL表示各种复杂逻辑,怎么调试存储过程。 2.SQL是标准的,但存储过程以及控制逻辑,都是各

2019-12-07技术
从斐波那契数列中学习动态规划技术

从斐波那契数列中学习动态规划

斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐

2019-12-07技术
为什么C++是最难掌握的编程语言技术

为什么C++是最难掌握的编程语言

为什么C++是最难掌握的编程语言 1.C 本身问题 C 作为C的加强再加强版,因为兼容C语言,导致掌握这种语言比其他语言有特殊的困难。初学者往往因为刚学了结构化开发方法,忽然又被讲授面向对象开发方法,肯定有一段转不过弯的时间。 C 没有太多保护措施。比如需要自己管理内存,太多的人

2019-12-04技术
elastic-job定时任务技术

elastic-job定时任务

一、快速开始 1、加入jar <dependency> <groupId>com.github.kuhn-he</groupId> <artifactId>elastic-job-lite-spring-boot-starter</artifactId> <version>2.1

2019-12-02技术
用gogs搭建属于自己的git网站技术

用gogs搭建属于自己的git网站

采用docker-compose部署 1、创建文件夹gogs mkdir gogs 2、进入gogs,编写docker-compose.yml version: '3' services: gogs: container_name: gogs image: docker.io/g

2019-12-01技术
二叉树的序列化与反序列化技术

二叉树的序列化与反序列化

二叉树节点定义 class TreeNode{ public TreeNode(int val) { super(); this.val = val; } public int val; public TreeNode left; public TreeNode right; p

2019-11-29技术
小米sql优化工具soar技术

小米sql优化工具soar

一、采用docker安装 # 拉去soar镜像 docker pull becivells/soar-web # 启动容器 域名:5077 docker run -d --name soar-web -p 5077:5077 becivells/soar-web 二、访问使用

2019-11-29技术
快速排序(1):单向快排技术

快速排序(1):单向快排

单向快排 public class TemplateProduceApplicationTests { public static void main(String[] args) { Integer[] arr= getRandomArr(10,10,20,false); pr

2019-11-29技术
StopWatch 类Java计时新姿势技术

StopWatch 类Java计时新姿势

一、 引入了该包 <!-- spring核心包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.versi

2019-11-29技术
liunx安装docker compose技术

liunx安装docker compose

一.安装docker compose(方式一) 1、可以再安装之前先更新一下curl yum update curl 2、下载 sudo curl -L https://github.com/docker/compose/releases/download/1.20.0/dock

2019-11-28技术
Linux 下的 Docker 安装与使用技术

Linux 下的 Docker 安装与使用

一、安装与配置 1.安装依赖包 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 2.设置阿里云镜像源 sudo yum-config-manager --add-repo https://mirro

2019-11-27技术