自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

weixin_43740223的博客

究竟笔墨是稳善生涯,勿嫌其淡

  • 博客(91)
  • 收藏
  • 关注

原创 Java-邮件发送Demo

【代码】Java-邮件发送Demo。

2023-06-14 10:49:24 288

原创 Tomcat 乱码问题解决 汇总

tomcat

2022-10-19 16:26:57 698 1

原创 Mysql 8 user 授权常用操作

Mysql8 user 授权常用操作1. 命令示例及说明-- 创建用户,指定多个访问ip调用多次即可,密码可以一样也可以不一样。 -- ip通配: -- localhost=127.0.0.1 -- % 通配任意字符,只有%则表示所有网段访问,0.0.0.0-- 192.168.% 指 192.168.xxx.xxx 网段访问 create user 'username'@'access host' identified by 'password';-- 修改用

2022-04-27 14:59:49 935

原创 Netty入门 图文并茂 B站课程(尚硅谷)学习总结

前文 Java-I/O模型1. 什么是NettyNetty官网 netty.io异步的基于事件驱动的网络应用框架,用于快速开发高性能的协议服务和客户端。Netty 是一个 NIO 客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化和流线了网络编程,例如 TCP 和 UDP 套接字服务器。“快速和简单”并不意味着生成的应用程序会受到可维护性或性能问题的影响。Netty 是根据从实现许多协议(如 FTP、SMTP、HTTP 以及各种二进制和基于文本的旧协议)中获得

2022-04-06 18:10:33 499

原创 Java IO 模型 B站课程(尚硅谷)学习总结

IO模型就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能。Java共支持3种网络编程模型/IO模式:BIO,NIO,AIO1. IO模型介绍Java BIOBlocking IO,阻塞io服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情就会造成不必要的连接开销。Java NIONon-Blocking IO,同步非阻塞io服务器实现模式为一个线程处理多个请求(连接),即客户端发送的连接请求都会注

2022-04-06 18:06:21 1134 5

原创 Redis 使用_配置篇

redis-cli 客户端redis-cli命令redis-cli 开启客户端工具auth password 输入密码ttl key 查询当前键的生存时间(-1 无穷大, -2 已过期)expire key [integer] 设置生存时间select [integer] 选择数据库,redis默认有16个数据库flushdb 清除当前数据库flushall 清除所有数据库常规配置配置文件redis.confdaemonize no 修改为 daemonize yes 开启后台运

2021-12-27 11:57:19 403

原创 Redis 内存淘汰机制

Redis 缓存过期机制(主动 & 被动)设置过期时间我们可以在设置键时设置expire time,也可以在运行时给存在的键设置剩余的生存时间,不设置则默认为-1,设置为-1时表示永久存储。定期删除Redis设定每隔100ms随机抽取设置了过期时间的key,并对其进行检查,如果已经过期则删除。为什么是随机抽取? 因为如果存储了大量数据,全部遍历一遍是非常影响性能的!惰性删除每次获取key时会对key进行判断是否还存活,如果已经过期了则删除。注意:Redis中过期的k

2021-12-27 11:56:49 101

原创 Redis 持久化机制

Redis数据持久化机制RDB(Redis Database) 间隔时间的快照模式备份RDB模式的优势1.保存每个间隔时间点的数据集,方便根据需要恢复到不同版本的数据集2.是一个单一文件,因此可以非常简单的进行灾难恢复3.因为RDB模式在实现上只是由父进程fork一个子进程进行数据集的持久化,因此RDB模式下Redis的性能能够得到最大化RDB模式的劣势1.因为是间隔时间备份,因此有可能丢失部分数据2.数据集比较大的时候,Redis进程fork子进程时比较耗时,可能导致Redis

2021-12-27 11:56:10 456

原创 Redis 常用数据类型

Redis数据类型参考:https://www.cnblogs.com/kevin-yang123/p/13895649.html1. Redis常用五大数据类型String 字符串最为基础的数据存储类型是一个由字节组成的序列他在Redis中是二进制安全的,意味着该类型可以接受任何格式的数据,如JPEG图像数据货Json对象描述信息等是标准的key-value,一般来存字符串,整数和浮点数。Value最多可以容纳的数据长度为512MB应用场景:常用于统计网站访问数量,当前在线人

2021-12-27 11:55:38 1047

原创 多线程基础-ThreadLocal

讲解 threadLocal

2021-12-27 11:42:58 899

原创 Java虚拟机家族 思维导图

2021-11-09 16:51:34 259

原创 单例模式 经典实现(holder)

holder 模式public class MainTest { public static void main(String[] args) { HolderDemo.SingletonObject.otherStaticMethod(); /** * 此时外部内被初始化,内部类则未被初始化 */ SingletonObject instance = SingletonObject.getInstance();

2021-09-16 21:57:39 347

转载 深入剖析synchronized关键字的底层原理

转发自知乎: https://zhuanlan.zhihu.com/p/114132797前序在Java并发编程当中, 我们会非常的熟悉synchronized关键字, 在JDK1.5之前, 仅仅只能通过该关键字来实现线程的同步, 在很多的文章中, 我们都或多或少的会听到[synchronized关键字是一个非常重的操作,但是在JDK1.6开始, 已经有了很大的改观]这样的一句话, 这时我就会疑惑, 为啥synchronized关键字是一个非常重的操作呢?1.6开始到底有了什么样的改观呢?然而这些

2021-09-16 21:55:01 349

原创 多线程基础-synchronized

一个简单的并发问题package cn.kerninventor.demo.multithread.sync;/** * @author kern */public class TestCase { private int number = 0; public void addNumber() { for (int i = 0; i < 100000; i++) { number = number + 1; }

2021-09-16 21:54:00 207

转载 多线程基础-并发问题产生的三大根源

多线程基础 Java线程什么是冯诺伊曼结构、哈佛结构、改进型哈佛结构性能之殇:从冯.诺伊曼瓶颈谈起究竟什么是冯.诺伊曼瓶颈我是一个CPU:这个世界慢死了本文转载自:并发理论基础:并发问题产生的三大根源 - 勤劳的小手的文章 - 知乎 并发问题变幻莫测,一谈到并发就显得非常高深,一般的程序员对于并发问题也是头疼不已,但是随着网络互联越来越普遍,大规模用户访问网站程序也越来越频繁,并发问题又无法避免。在我们解决并发问题前首先要理解产生并发问题的根源是什么,所有并发处理的工具只是针对这些根源问题.

2021-09-16 21:51:49 434

原创 多线程基础-Java线程

1. 什么是多线程1.1 多线程简介线程是进程中的任务单元,是计算机cpu执行指令的最小单元。简单的说,一个计算机中有多个进程,进程相当于我们使用的各个软件,而一个进程中有多个线程。计算机软件的实际运行是由多个线程完成执行的。cpu通过分配时间片给某个进程中的某个线程在时间片内执行该线程的任务,某个时刻中计算机的一个cpu实际上只执行一个线程的任务,cpu非常快速在多个线程间分配时间片来完成用户发出的预期指令。由于计算机指令的执行速度和时间片切换相对于人类而言是非常快的,所以在人类看来,似乎计算机在一段

2021-09-16 21:50:03 438

原创 Linux vim 文本替换 %s/原文/替换文本/g

语法ESC:%s/origanl/new/g%s 表示替换文本。origan 表示原文new 表示新的内容/g 表示全文替换,如果仅替换第一个则不需要/g需要注意如果要替换的内容中包含特殊含义的自负,需要使用转义符转义例如:%s/\\/\//g 表示把所有 反斜杠 \ 替换成正斜杠 / 拆开来看:%s 表示要替换/ 语法分隔\ 第一个 \ 表转义,第二个 \ 表示反斜杠/ 语法分隔/ \ 表转义, / 表示正斜杠/ 语法分隔/g 表示全文替换如图

2021-08-26 10:34:38 5373 2

原创 Linux 命令unmask

新建文件夹或文件的权限是由所谓基本码减去称之为umask的屏蔽位得到的。按照规约:文件夹的基本码是rwxrwxrwx(777),文件的基本码是rw-rw-rw-(666)例如unmask 022因此新建文件夹是777-022=755(rwxr-xr-x),新建文件是666-022=644(rw-r–r--)...

2021-08-26 10:18:49 1246

原创 MAVEN 属性

MAVEN pom文件中可以使用 ${} 引用键值对属性,MAVEN的属性主要包括以下几类内置属性XML标签属性pom.xml 标签属性settings.xml 标签属性环境变量属性Java系统属性,通过JAVA代码 System.getProperties() 获得的所有属性操作系统的环境变量POM文件中自定义的Properties属性1. 内置属性(Maven预定义,用户可以直接使用)内置属性值属性描述basedir表示项目根目录,即包含pom.

2021-08-23 13:03:01 1091 1

原创 Perl 语言入门学习

Perl 语言学习 – 入门篇入门篇包括但不限于以下内容Perl 简介版本历史第一个Perl程序Perl的基本数据类型Perl的运算操作符和判断操作符Perl的数组操作Perl的控制结构语句Perl的子程序注:尽管本文中没有提及逻辑控制符,但Perl的逻辑控制符与C 或者 JAVA 的逻辑控制符号 基本一致, 都支持与或非的操作 也就是 ! | & 这几个符号,使用上也没有太大差异。因而本文中就此略过,如有需要请自行查阅相关文档文章目录Perl 语言学习 -- 入门篇1

2021-07-13 14:01:04 11780 7

原创 一篇文章告诉你什么是Servlet?

声明:本文基于Servlet3.1规范翻译整理,如有谬误,烦请指正。JSR 340,原文请查阅 https://www.jcp.org/en/jsr/summary?id=Servlet+3.1本文中的示例代码 可以 从https://gitee.com/Ouroboros_K/springboot2-demo.git项目中的servlet-service模块中获得1 Servlet 概括Servlet 是基于Java技术的Web组件Servlet 用于生成动态内容。动态: 数据动态.

2021-04-24 15:48:25 1171

原创 JDK的完整安装

1 JDK 简介JDK是Java语言的软件开发环境。全称Java Development Kit(java开发工具包)。包括用于开发Java小程序和应用程序的 JVM(java虚拟机),编译器,调试器,JRE(java runtime environment,java运行环境)和其他工具。JDK按照版本主要分为ME版本,SE版本和EE版本,其中ME版本为微型版,主要用于移动设备和嵌入式设备上(如手机,PDA,电视机顶盒、打印机等)的java开发。SE版本为标准版。EE版本为企业版。企业版的部分版本需要付费

2021-03-15 09:19:03 9767 1

原创 Java 面向对象编程特性:封装 继承 多态

谈到java的特性,很多程序员会在第一时间说出,“Java是面向对象编程的语言”。这句话本身是没有错的,但是,为了完全理解 Java和面向对象之间的关系(即完全理解什么是面向对象编程,与之不同的还有什么?java作为面向对象编程的一类语言,如何实现了面向对象编程思想),我们还需要简单了解一下具有其他编程思维的一些语言,例如机器语言,汇编语言,面向过程编程语言,了解这些语言的过程实际上也揭示了计算机语言从底层语言到高级语言的变化,从简陋到复杂,从晦涩到易懂的一个过程是如何演变的。1 机器语言1001010

2021-03-15 09:15:59 706

原创 Maven POM的艺术

Maven POM的艺术Maven 知识的累积者Maven 是为了简化 基于Java的项目的构建而生的。说到简化, 对于没有经历过复杂构建过程的人而言, 很难理解 Maven 的简化含义。为了了解 Maven 到底如何帮助我们 简化了项目构建。我们首先需要对Maven诞生之前的项目构建过程有一个大概的了解。项目构建的先行者 Ant在Maven 之前,程序员通常使用 ant 来构建 Java项目, ant 意即蚂蚁, 是Apache 基金会下的跨平台(基于JAVA)的构件工具。每个ant项目都包含一

2021-03-01 10:03:26 195

原创 Maven 最详细的settings.xml 配置文件解释

Maven settings.xml详解settings.xmlmaven的主配置文件缺省名称为 settings.xml 其完整结构如下(为了方便阅读,删除了注释部分):<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance

2021-03-01 10:01:11 9169 1

原创 聊一聊Redis的发布订阅

报纸最先出现于西汉初年公元前二世纪左右。 《邸报》是世界上最早的报纸。

2021-02-04 21:29:17 267

原创 Springboot - Redis 1 最简单的Redis集成应用

1. 新建Springboot项目pom文件如下<?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/4.0.0 https://maven.

2021-01-06 21:36:29 106

原创 CentOS7下 Redis 安装(Yum)配置

@[TOC](CentOS7下 Redis 安装(Yum)配置)1. Yum安装Redisyum install -y redis2. 配置编辑Redis配置文件vim /etc/redis.conf修改配置如下#开启远程访问 默认绑定 127.0.0.1仅本地访问,也可以绑定具体的网端bind 0.0.0.0#后台运行,默认nodaemonize yes#配置工作目录,也就是缓存持久化文件的存储地址,默认/var/lib/redisdir /var/lib/redis#设置密

2021-01-06 20:09:15 637

原创 Mysql 修改表和表字段的编码格式和排序规则

alter table ' tablename' convert to character set utf8mb4 COLLATE utf8mb4_general_ci;

2020-11-17 15:12:00 1068

原创 Linux 配置静态IP

Linux的网络信息存储在网卡配置文件中,位于 /etc/sysconfig/network-scripts/ 目录下。你可以使用ip address查看当前生效的网卡名称,例如我的是ens33[root@localhost ~]# ip address1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:0

2020-11-05 15:46:33 100

原创 LVS-DR 直接路由模式搭建

Linux Virtual Server - Direct Rounting Mode前置准备配置lvs节点(151)的虚拟ip=150配置lvs节点(150)的集群规则配置Real servers节点(130,131)的回环ip配置Real servers节点(130,131)的ARP响应级别验证连接及dr模式下的其他机制持久化机制--persistent integer--set integer integer integer其他问题! 关于ipvsadm的重启前置准备lvs节点 192.168.

2020-11-04 19:11:11 243 1

原创 LVS Linux Virtual Server 负载均衡

LVS负载均衡官网网站:http://www.linux-vs.org/LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。LVS 负载均衡是基于四层(传输层)的负载均衡LVS 对比Nginx 负载均衡参考文档 :https://blog.csdn.net/moqiang02/article/details/36015373简单的说:Nginx负载均衡工作在

2020-11-04 10:16:20 151 1

原创 Docker CentOS7下的安装

Docker CentOS7下的安装Docker下载官网地址 https://docs.docker.com/get-docker/通过yum安装Docker1. 卸载旧版本,确保是干净的环境yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-la

2020-11-03 18:36:07 82

原创 Keepalived + Nginx 搭建高可用双机主备集群

Keepalived + Nginx 搭建高可用双机主备集群环境准备,编写Nginx自动重启脚本修改keepalived.conf 配置文件开启服务并测试1. 测试主备切换2. 测试Nginx自动重启配置nginx-tomcat服务集群在通过 Nginx 构建 服务集群后, 为保证Nginx服务的高可用性, 配备第二台Nginx 作为后备, 通过keepalived虚拟路由实现双机主备,最终实现内网环境下高可用服务集群。方案如下图所示:环境准备,两台服务器,本文以虚拟机为例。域名通过手动修改

2020-11-03 18:33:36 260

原创 Keepalived 解决使用systemctl 无法关闭

Keepalived 解决使用systemctl 无法关闭修改keepalived.service 文件vim /usr/lib/systemd/system/keepalived.service修改KillMode=control-groupKillMode值释义:process kill 主进程control-group 杀死进程组,不设置时默认值指定PIDFile=keepalived.pid 的生成路径,需要注意文件存放目录是否有写入权限$MAINPID 为该文件记

2020-11-03 18:24:11 1402

原创 Keepalived CentOS7下安装Keepalived

Keepalived CentOS7下安装Keepalived1. 源码包安装官网下载地址: https://www.keepalived.org/download.html官网下载源码包后上传到服务器,解压缩,然后进去解压出来的目录tar -zxvf keepalived-2.1.5.tar.gzcd keepalived-2.1.5注:keepalived 是使用C 编写的程序,源码包安装需要gcc进行编译安装,所以需要首先安装gcc编译器联网状态下可以使用 yum -y install

2020-11-03 18:22:52 580

原创 Keepalived 简介

Keepalived 简介官网: https://www.keepalived.org/index.html什么是KeepalivedKeepalived是一个用c语言编写的路由软件,这个项目的主要目标是为Linux系统和基于Linux的基础设施提供简单而健壮的负载平衡和高可用性的设施。loadbalance框架依赖于著名且广泛使用的Linux Virtual Server (IPVS)内核模块提供的第4层loadbalance。Keepalived实现了一组检查器,根据负载平衡服务器池的运行状况动态

2020-11-03 18:21:53 455

原创 Nginx 反向代理缓存

Nginx 反向代理缓存如下配置, 将开启 监听80端口的server 对 upstream的反向代理缓存。用户请求 服务器的 80端口时, 由server 转发请求到 upstream , 此时upstream 处理请求后将资源返回给server后,server将对静态资源进行缓存,保存到对应key_zone 的 proxy_cache_path 指定的目录下,然而将该缓存返回给用户。http { # proxy_cache_path 设置缓存保存的目录 # keys_zone 设置

2020-10-27 11:59:18 182

转载 Nginx 控制浏览器缓存

Nginx 控制浏览器缓存转自: https://www.cnblogs.com/shamo89/p/10170686.html浏览器缓存(BrowserCaching)浏览器缓存是为了加速浏览,浏览器在用户磁盘上,对最近请求过的文档进行存储。当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样,就可以加速页面的阅览,缓存的方式节约了网络的资源,提高了网络的效率。实现浏览器缓存步骤浏览器缓存可以通过expires指令输出Header头来实现,expires指令的语法如下语法:expi

2020-10-27 11:58:46 221

原创 Nginx 解决跨域问题

Nginx 解决跨域问题Cross-Origin Resource Sharingnginx.conf 文件中的具体server块中添加如下内容http { server { listen 80; server_name localhost; #允许跨域请求的域,*代表所有 add_header 'Access-Control-Allow-Origin' *; #允许带上cookie请求 add_header 'Access-C

2020-10-27 11:57:09 643

空空如也

空空如也

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

TA关注的人

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