自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(243)
  • 资源 (3)
  • 收藏
  • 关注

原创 linux常用命令总结一

rm -rf * //删除所有rm dubbo-admin-tomcat //删除文件ps -ef | grep java //查看正在跑的进程kill -9 10898tail -500f catalina.out //查看tomcat启动日志最近500行more catalina.out //可以空格键翻页,=输出当前行号,v进入vi编辑,q退出moreless...

2018-08-09 11:21:20 202

原创 linux常用命令总结二(chown/sed/echo/ls/vim/scp/awk/tree)

chown通过chmod可以修改一个文件的权限,也可以修改文件所有者及用户组。chown是change owner 的缩写。chown -R用来同时修改目录下的子目录和文件(-R表示递归)。 创建用户useradd changhfpasswd changhf将目录/usr/test及其下面的所有文件和子目录的用户组改成changhfsu //到root目录下执行下面的命...

2018-04-17 14:43:52 645

原创 常用DDL语句

1、修改字段名称ALTER TABLE t_user_login_log CHANGE device_id session_id VARCHAR(256);2、修改注释ALTER TABLE t_user_login_log MODIFY COLUMN session_id VARCHAR(256) COMMENT '上次登录的sessionId';3、创建唯一索引ALT...

2017-03-25 16:21:00 833

原创 Fastjson与Jackson

FastJson常用操作一、java 创建json对象获取到post请求,利用JSON API获取到相应的参数,解析成程序需要的对象。String msgPara ="{\"empNames\":[{\"empName\":\"lihz\"},{\"empName\":\"changhf\"}],\"message\":\"aaa\"}&quot

2014-08-08 10:57:56 2603

原创 netty应用实践

netty实践

2022-11-08 10:50:48 316 1

原创 rabbitmq消息可靠性分析

通过firehose插件跟踪消息过程开发测试阶段用于分析消息消费的过程,生产关闭,以免影响整体性能rabbitmq_tracing 插件相当于Firehose 的GUI 版本,能跟踪RabbitMQ 中消息的流入流出 情况。1、启动/停用插件rabbitmq-plugins enable/disable rabbitmq_tracing2、控制台的Admin/Tracing页面中添加两个trace举例:exchange为 ex.car.estimate,queue为queue.car.esti

2021-03-21 16:54:05 272

原创 rabbitmq安装(rpm方式)

rabbitmq1、准备资料2、安装3、常用操作命令1、准备资料1、erlang-23.0.2-1.el7.x86_642、rabbitmq-server-3.8.4-1.el7.noarch3、centos7RabbitMQ的安装需要首先安装Erlang,因为它是基于Erlang的VM运行的。RabbitMQ需要的依赖:socat和logrotate,logrotate操作系统中已经存在另需安装socaterlang与rabbitmq版本映射:https://www.rabbitmq.com

2021-03-18 10:10:13 1669

原创 redis高可用之RedisCluster

RedisCluster最少需要三台主服务器,三台从服务器1、创建目录mkdir -p /var/redisCluster/redis-7001mkdir -p /var/redisCluster/redis-7002mkdir -p /var/redisCluster/redis-7003mkdir -p /var/redisCluster/redis-7004mkdir -p /var/redisCluster/redis-7005mkdir -p /var/redisCluster/re

2021-03-16 19:43:32 237 1

原创 mongodb集群安装

一、复制集(replica_sets)搭建1、主节点配置# 主节点配置dbpath=/data/mongo/data/server1bind_ip=0.0.0.0port=37017fork=truelogpath=/data/mongo/logs/server1.logreplSet=lagouCluster2、两个从节点配置dbpath=/data/mongo/data/server2bind_ip=0.0.0.0port=37018fork=truelogpath=/da

2021-03-10 20:44:09 208

原创 mysql-MHA架构实践记录

mha架构实践记录一、规划二、下载安装1、清理环境2、关闭防火墙3、设置主从配置4、开启半同步复制5、MHA1、环境准备2、下载安装3、mha配置检测4、模拟mha故障转移前提条件,系统安装为centos7,mysql5.7未提供centos8的版本。一、规划角色ip权限master113.31.153.73可读写、主库slave1113.31.153.103只读、从库slave2106.75.210.245只读、从库MHA8.131.93.1

2021-03-03 13:55:15 142

原创 centos7安装 rabbitmq-server

安装rabbitmq-server1、下载rabbtmq-server2、安装erl重新安装erl3、安装rabbitmq-server并启动安装web管理插件还是要练习看第一手资料,国内的很多博客文档写的一塌糊涂。相对自己在官网上查看,虽然开始慢一点,但是成功率相对看国内博客要高得多。yum安装rabbitmq-server需要手动安装几个包://erl、socat、logrotateyum -y install socat1、下载rabbtmq-server第一次使用rabbitmq,

2021-01-31 18:32:56 550

原创 注册中心Eureka

注册中心Eurekaspringboot Eureka单机客户端与服务配置eureka高可用配置方式一配置方式二Eurekaspringboot Eureka单机客户端与服务配置springcloud Eureka是基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能。服务端和客户端均采用java编写,所以主要适用于java实现的分布式系统。Eureka服务端即服务注册中心<dependency> <groupId>org.sp

2021-01-17 21:10:36 821

原创 注册中心Nacos

Nacos专为 Dubbo 而生的注册中心与配置中心nacos官方文档Nacos 有三大主要功能:服务发现和服务健康监测Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。动态配置管理配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。动态 DNS 服务服务发现的未来一定是基于标准的 DNS 协议做,而不是像 Eureka 或者像 Z...

2021-01-17 14:56:49 16980 1

原创 Fork/Join框架实现多任务执行计算

package com.lagou;import java.util.concurrent.ExecutionException;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.ForkJoinTask;import java.util.concurrent.RecursiveTask;/** * 并行计算实现1+2+...+100 */public class CountTask extends

2020-11-25 22:11:18 262

原创 netty如何解决tcp拆包、粘包

TCP粘包是指一次接收的数据不能完全地体现一个完整的消息数据。1、TCP通讯为何存在粘包呢?tcp是一个流式协议,所谓流,就是没有界限的一串数据。就像河里的流水,是连成一片的,没有分界线。tcp底层并不了解上层数据的具体含义,它会根据tcp缓冲区的实际情况进行包的划分。所以在业务上认为,一个完整的包有可能被tcp拆分成多个包进行发送,也有可能把多个小包封装成一个大的数据包发送,这就是所谓的tcp拆包、粘包问题。2、如何处理粘包/半包问题?处理粘包/半包的思路就是找出数据边界,也就是指定应用层.

2020-11-15 15:26:44 246

原创 netty必会基础知识点

以下内容输出来源:拉勾教育-Java高薪训练营网络编程框架Netty一、网络编程相关概念二、BIO与NIO1、NIO编程的优点三、Netty的主要模块五、应用场景有哪些?六、为什么用Netty?七、netty实现通信的步骤八、Reactor的三种模式九、二次编解码器十、心跳keepalive+idle一、网络编程相关概念网络通信模型举例特点BIO阻塞排队点餐,阻塞等待取餐耗资源,效率低,基本已被废弃NIO非阻塞先取号,等待被叫,再去取餐主流应用AIO异步包厢

2020-11-14 12:26:08 306 1

原创 分布式集群系统-一致性协议、基本理论和算法

分布式系统存在的问题通信异常网络分区节点故障三态分布式系统特有的三态概念:成功、失败、超时。网络异常的情况下出现***超时***:1、请求没有被成功发送到接收方;2、接收方处理成功后,响应反馈给发送方过程中,发生了消息丢失现象。一致性有哪几种?弱一致性单调读一致性因果一致性最终一致性分布式理论1、CAP理论(一致性、可用性、分区容错性)所有副本数据一致(即强一致性)系统一直可用节点故障或网络分区故障时,仍能够满足一致性和可用性一般情况不会考虑舍弃P,而是考虑

2020-11-13 11:44:08 632

原创 nginx必会知识点

nginx的三个主要应用场景静态资源服务(通过本地文件系统提供服务)反向代理服务(缓存+负载均衡)API服务(OpenResty)主要优点其他web服务器,随着并发连接数的上升,它的rts会急剧的衰减。高并发高性能(4个9)可扩展性好高可靠性(持续数年不宕机)热部署(在不停用的基础上升级nginx)nginx组成(4个)nginx二进制文件nginx.conf(控制nginx的行为)access.log(记录每一条http请求信息)error.log(定位问

2020-11-12 15:09:24 234 1

原创 分布式任务调度

1、定时任务应用场景订单超时自动取消、支付倒计时优惠券发放物流信息推送、退换货处理数据积压监控、日志监控、服务可用性探测定时备份数据数据归档、清理定时结算2、定时任务实现方式TimerQuartz<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <versio

2020-11-11 16:00:23 875

原创 普通hash与一致性hash算法

普通hash算法与一致性hash算法hash算法是一类算法,不是某一个算法。普通hash算法(求模)hash查找:相对于顺序查找和二分查找,查找速度快。对数据求模,根据余数确定存储下标,可能导致hash冲突,有两种方式解决:每个下标存放一个数组或者一个链表,hash查找的效率直接决定于hash算法应用场景分布式集群架构如Redis、Hadoop、Elasticsearch、Mysql分库分表、Nginx负载均衡。请求负载均衡(nginx的ip_hash,是处理session共享的一种方

2020-11-09 17:23:36 536

原创 mybatis-plus常用技术点

mp配置mybatis-plus.config-location = classpath:mybatis-config.xmlmybatis-plus.mapper-locations = classpath*:mapper/**/*.xml#MyBaits 别名包扫描路径mybatis-plus.type-aliases-package = com.lagou.mp.pojo#关闭自动驼峰映射,该参数不能和mybatis-plus.config-location同时存在,否则启动报错,如果要配置

2020-11-09 11:55:46 237

原创 mybatis-plus curd用法记录

注解TableId/TableField@TableId(type = IdType.AUTO) //指定id类型为自增长@TableField解决两个问题:1)对象中的属性名和字段名不一致的问题(非驼峰)@TableField(value=“email”)2)标注对象中的属性字段在表中不存在的问题 @TableField(exist=false)3)标注查询时不返回 @TableField(select=false)updateupdateWrapper的使用方式User user

2020-11-08 22:48:49 122

原创 mybatis-plus整合

以下分三种场景来整合mybatis-plusmybatis整合mp简单应用mybatis需要以下几步:引入jar包<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>3.4.0</version></dependency>SqlSessionFactoryB

2020-11-08 18:39:20 214

原创 tomcat体系结构

tomcat提供Connector和Container两个核心功能。Connector(coyote)用于处理网络连接Container(catalina) 负责Servlet加载和请求处理两者关系如下组件介绍组件说明Server表示整个Servlet容器,tomcat运行环境中只有一个Server实例Service一个Server实例中可以有多个Service实例,相互独立,Service是Connector集合Connector用于监听和处理Sock

2020-11-07 16:12:12 177

原创 nginx负载均衡策略&动静分离

1、轮询默认策略,每个请求按时间顺序逐一分配到不同的服务器,如果某个服务器下线,能自动剔除upstream chainServer{ server 192.168.27.10:8080; server 192.168.27.10:8082;}location /abc { proxy_pass http://chainServer/;}2、权重weight代表权重,默认每个负载的服务器都为1,权重越高被分配的请求就越多(用于服务器性能不均衡的场景)upstream chainSer

2020-11-06 15:58:44 203

原创 tomcat源码导入

下载tomcat8.5源码并解压首先创建pom.xml文件,并导入坐标<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/

2020-11-05 17:25:19 208

原创 springboot模板技术Thymeleaf

Spring Boot框架对很多常用的模板引擎技术(如:FreeMarker、Thymeleaf、Mustache等)提供了整合支持,只需引入对应的起动依赖。<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>开发环境要修改配置//

2020-11-02 22:56:05 269

原创 SpringBoot对缓存技术的支持-自定义RedisTemplate

RedisTemplate默认序列化方式为JdkSerializationRedisSerializer,这样会导致序列化后的数据在客户端看不懂,如何设置为json,这就需要自定义RedisTemplate,设置为json序列化方式@Configurationpublic class RedisConfig { @Bean public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory

2020-11-02 16:37:59 242

原创 SpringBoot实现国际化

一、添加国际化配置文件在resources下创建名称为i18n的文件夹,并在该文件夹中编写对应的多语言国际化文件login.properties、login_zh_CN.properties和login_en_US.properties1、login.propertieslogin.tip=请登录login.username=用户名login.password=密码login.rememberme=记住我login.button=登录2、login_zh_CN.propertieslo

2020-11-01 21:21:49 358

原创 springboot中整合mybatis

1、idea创建项目时勾选sql-mybatis即可引入对应的starter,由mybatis团队提供<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version></dependency>2、注

2020-11-01 18:37:35 83 1

原创 springboot热部署

引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional></dependency>修改idea配置

2020-10-31 16:10:06 71 1

原创 网页爬虫--未完成

xpath表达式// 选取文档中所有匹配的节点@选取属性/从根节点选取匹配的节点

2020-10-04 20:10:22 112

原创 mybatis 自定义插件

mybatis插件扩展机制我们可以基于mybatis插件机制实现分页、分表、监控等功能,mybatis四大组件包括Executor、StatementHandler、ParameterHandler、ResultSetHandler,他们提供了简单易用的插件扩展机制。插件扩展需两步:1、实现Interceptor/** * 通过Intercepts和Signature两个注解,定义插件拦截哪个核心对象里的哪个方法 */@Intercepts({ @Signature(typ

2020-10-03 21:50:42 1805

原创 uml图标

1、比较难理解的是聚合与组合的关系;箭头在哪边,哪边是主语;举例说明:汽车与 轮胎 是组合关系,实心菱形aggregation聚合空心菱形has-a茶杯和水composition组合实心菱形part of汽车与轮胎2、实线三角箭头与虚线三角箭头继承实现实线箭头虚线箭头...

2020-09-24 15:43:42 184

原创 模板模式与观察者模式

我们常把 23 种经典的设计模式分为三类:创建型、结构型、行为型。分别用来解决什么类型的问题?创建型设计模式:对象的创建结构型设计模式:类或对象的组合或组装行为型设计模式:类或对象之间的交互设计模式就是用来解耦的创建型模式是将创建和使用代码解耦结构型模式是将不同功能代码解耦行为型模式是将不同的行为代码解耦模板模式模板模式基于继承来实现,回调基于组合来实现在模板模式经典的实现中,模板方法定义为 final,可以避免被子类重写。需要子类重写的方法定义为 abstract.

2020-09-23 14:14:51 272

原创 单元测试的意义与技术选型

技术选型:junit4+jmockit1.5+jacocoJunit4用于编写单元测试,通过编写正常的业务流程,并进行相应的断言测试,来验证接口。JMockit是google code上面的一个java单元测试mock项目,它很方便地让你对单元测试中的final类,静态方法,构造方法进行mock,主要是通过jmockit模拟一个返回对象。jacoco用于统计单元测试覆盖率,其他相似工具如Cobertura、Emma、Clover。问题现状单元测试不要追求覆盖率,测试的是类或方法,而不是模块.

2020-09-18 23:01:11 341

原创 code design原则有哪些?

1、单一职责原则2、开闭原则对扩展开放,对修改关闭,概念不好理解,应用时尽量预留扩展点,避免新增功能时对老代码的修改。在众多的设计原则、思想、模式中,最常用来提高代码扩展性的方法有:多态、依赖注入、基于接口而非实现编程,以及大部分的设计模式(比如,装饰、策略、模板、职责链、状态等)。3、里氏替换原则子类不能修改父类功能与多态是有区别的,多态是能力,可以实现多种功能的能力。父类定义的方法,如银行卡提现不能超出余额,如果子类要扩展一个信用卡可以超出余额的方法,可以通过另外定一个父类方法,而不

2020-09-18 15:18:21 480

原创 Netty核心组件

bossGroup与WorkerGroupnetty抽象出两组线程池,BossGroup用于接收客户端连接,WorkGroup用于处理网络读写。两者类型是NioEventLoopGroup,由NioEventLoop组成。每个NioEventLoop表示一个不断循环的,执行任务处理的线程,每个NioEventLoop 都有一个Selector与之对应,用于监听绑定在它上面的连接,连接上面的事件都是由该线程来处理。每个 Boss NioEventLoop 会监听 Selector 上连接建立的 accep

2020-09-16 18:33:16 396

原创 app用户绑定多台设备实现踢出功能

需求1、登录有效期固定7天2、活体验证成功有效期通过字典配置,默认为7天3、活体验证失败次数通过字典配置,默认为3次,超过3次,账户锁定24小时有效期,用户启用后,删除缓存;一旦验证成功,删除缓存;4、用户设备绑定数量通过字典配置,默认2台实现技术方案1、利用redis的sortedSet有序集合,绑定多台设备,以及踢出功能2、利用redis的hash实现登录状态缓存一、封装sortedSet api @Override public Boolean exists(S.

2020-09-15 16:39:22 1040

原创 mysql高频问题记录

1、谈谈mysql的事务隔离级别事务并发处理可能会带来一些问题,比如:更新丢失、脏读、不可重复读、幻读等。更新丢失当多个事务更新同一行记录,会产生更新丢失现象。可以分为回滚覆盖和提交覆盖。回滚覆盖:一个事务回滚操作,把其他事务已提交的数据给覆盖了。提交覆盖:一个事务提交操作,把其他事务已提交的数据给覆盖了。脏读一个事务读取到了另一个事务修改但未提交的数据。不可重复读一个事务中多次读取同一行记录不一致,后面读取的跟前面读取的不一致。幻读一个事务中多次按相同条件查询,结果不

2020-09-06 13:10:14 433

RMI基础代码小程序

基础代码

2016-07-15

rmi服务端与客户端小程序

亲测可用,可作为java rmi入门程序,一看即懂。

2016-07-15

servlet实现身高体重比测试

通过学习该程序可以掌握servlet的执行过程,掌握el表达式的用法

2015-10-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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