自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

轻描淡写

蜗牛赛跑

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

原创 linux方向查找jdk的安装路径

逐步查找[root@VM-0-8-centos jvm]# which java/usr/bin/java[root@VM-0-8-centos jvm]# clear[root@VM-0-8-centos jvm]# which java/usr/bin/java[root@VM-0-8-centos jvm]# ls -lrt /usr/bin/javalrwxrwxrwx 1 root root 22 Mar 27 14:58 /usr/bin/java -> /etc/alt..

2021-06-06 15:17:19 15 2

原创 linux安装ES

下载安装包,并解压kibana# 7.8.0 版本wget https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-linux-x86_64.tar.gztar -zxvf kibana-7.8.0-linux-x86_64.tar.gz# 7.13.1 版本wget https://artifacts.elastic.co/downloads/kibana/kibana-7.13.1-linux-x86_64.tar.gz

2021-06-06 13:48:50 10

原创 linux安装kafka

官网【http://zookeeper.apache.org/】方式一:docker安装安装kafka的前提是需要安装好zookeeper,见安装zookeeper教程# 例如成功的地址为,下边跑kafka容器需要用到159.xx.xx.xx:2181运行,注意填上自己对应的IP:【159.xx.xx.xx】docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=1

2021-06-05 19:11:02 10 1

原创 linux安装zookeeper

官网【http://zookeeper.apache.org/】方式一:docker安装创建挂载目录mkdir -p /opt/docker/zookeeper/data/ 拉取镜像docker pull zookeeper启动docker run -d -p 2181:2181 -v /opt/docker/zookeeper/data/:/data/ --name=zk --privileged zookeeper查看日志docker logs -f zk

2021-06-05 18:33:39 12

原创 linux安装nacos

方式一:docker安装创建挂载目录# 日志文件mkdir -p /opt/docker/nacos/logs# 配置文件,需要事先将配置文件放到 custom.properties 中mkdir -p /opt/docker/nacos/init.dmysql新建nacos的数据库,全名【nacos_config】,并执行脚本脚本地址:【https://github.com/alibaba/nacos/blob/master/config/src/main/resources/

2021-06-05 16:46:58 7

原创 JMM (JAVA内存模型)

JMM (JAVA内存模型)内存屏障、重排序这些东西好像是和平台以及硬件架构有关系的。作为 Java 语言的特性,一次编写多处运行。我们不应该考虑平台相关的问题,并且这些所谓的内存屏障也不应该让程序员来关心JMM 全称是 Java Memory Model. 什么是 JMM 呢?通过前面的分析发现,导致可见性问题的根本原因是缓存以及重排序。 而 JMM 实际上就是提供了合理的禁用缓存以及禁止重排序的方法。所以它最核心的价值在于解决可见性和有序性JMM 属于语言级别的抽象内存模型,可以简单理解为对硬件

2021-05-30 18:13:17 15 1

原创 Happens - Before 规则

Happens - Before 规则表示的是前一个操作的结果对于后续操作是可见的,表达多个线程之间对于内存的可见性;告诉开发者哪些场景下会存在可见性问题,因为并不是所有的程序指令都会存在可见性和指令重排序问题。程序顺序规则一个线程中的每个操作,happens-before 于该线程中的任意后续操作; 可以简单认为是 as-if-serial,不管程序如何重排序,单线程的执行结果一定不会发生变化。volatile 变量规则对于 volatile 修饰的变量的写的操作,一定 happen-b

2021-05-30 17:58:24 4

原创 查看运行代码的汇编指令的工具

将hsdis-amd64.dll和hsdis-amd64.lib文件,复制到JRE_HOME/bin/server路径下在运行main函数之前,加入虚拟机参数// *CLassLayoutDemo.getInstance 替换成实际运行的代码-server -Xcomp -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -XX:CompileCommand=compileonly,*CLassLayoutDemo.getInstance...

2021-05-30 16:28:02 7

原创 synchronized(锁的升级过程)

synchronized可以解决【原子性、有序性、可见性问题、[对象逃逸]】,也就是解决了线程安全问题线程安全概念:在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。本质是管理对数据状态的访问数据是共享的,在线程生命周期里是变化的锁的状态假如有两个线程 ThreadA 和 ThreadB只有线程 ThreadA 去访问(如果这种情况属于大部分情况时)–》偏向锁ThreadA 和 ThreadB

2021-05-30 16:02:21 3

原创 java基本数据类型大小和单位换算

单位换算1Byte=8bit1KB=1024Byte(字节)=8*1024bit1MB=1024KB1GB=1024MB1TB=1024GB1PB=1024TB类型32位64位boolean1 byte1 bytebyte1 byte1 bytechar2 byte2 byteshort2 byte2 byteint4 byte4 bytefloat4 byte4 bytelong8 byte8 byte

2021-05-30 11:37:08 8

原创 对齐填充的目的

概念cup一次读取的数据是缓存行,按块(x86架构64位计算机中是64字节)进行读取,也就是说缓存行是CUP与内存交互的最小工作单元没有对齐填充时,A线程只想要读取一个long类型的变量a,但a只占8字节,因此会连带变量b、c、d也会一并读取到缓存行中;而同一时刻B线程只想要读取一个long类型的变量b,但b只占8字节,因此会连带变量a、c、d也会一并读取到缓存行中;那么这种情况下就会存在伪共享问题,这会导致A和B线程在进行数据操作时会频繁地直接去内存获取最新值,而不是从高速缓存中获取(也就是缓存失效)

2021-05-30 11:16:51 10

原创 线程的状态(生命周期)

线程认识进程(Process):是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。线程的引入:60年代,在OS中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展,进程出现了很多弊端,一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程;二是由

2021-05-30 08:58:27 7 1

原创 查看对象在内存中布局

引入jar包 <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.9</version> </dependency>使用案例package com.tiger;import org.openjdk.jol.info.Cl

2021-05-29 22:03:27 3

原创 主业务与RPC事务传播

主业务逻辑中有N个sql,中间进行了RPC,正常来说,主业务中某条sql出异常,所有数据全部回滚,但现在出现RPC中执行的sql不会自动回滚解决方案?

2021-05-20 14:48:19 14

原创 静态导入

import static io.netty.handler.codec.http.HttpHeaders.Names.*;import static io.netty.handler.codec.http.HttpHeaders.isKeepAlive;import static io.netty.handler.codec.http.HttpHeaders.setContentLength;import static io.netty.handler.codec.http.HttpMethod..

2021-05-04 21:54:29 5

原创 为什么选择Netty作为NIO网络编程的首选框架

不选择原生NIO进行网络编程的原因NIO的类库和API繁琐,使用麻烦,开发者必须熟练掌握Selector、SeverSocketChannel、SocketChannel、ByteBuffer等需要具备额外的技能作为铺垫,例如熟悉多线程编程,这是由于NIO编程设计Reactor模式,你必须对多线程非常熟悉,才能编写出高质量的NIO程序。可靠性能力补齐,工作量和难度非常大。JDK NIO 的BUG使用NIO框架Netty开发的理由API使用简单,开发门槛低功能强大,预置多种编解码功能,支持

2021-05-04 10:52:52 13

原创 I/O多路复用技术

I/O多路复用技术在I/O编程过程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者I/O多路复用技术进行处理。I/O多路复用技术通过把多个I/O的阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下可以同时处理多个客户端请求。与传统的多线程模型比,I/O多路复用技术的最大优势是系统开销小,系统不需要创建额外进程或者线程,也不需要维护这些进程或线程的运行。支持的I/O多路复用技术 select pseelct poll epoll

2021-05-03 19:02:53 20

原创 NIODemo

package com.tiger.io.nio;import java.io.IOException;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import java.nio.channels.ServerSo.

2021-05-03 00:59:14 26

原创 内存映射 - MappedBuffer

package com.tiger;import java.io.IOException;import java.io.RandomAccessFile;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;/** * 内存映射是一种读和写文件数据的方法,它可以比常规基于流或基于通信管道IO快得多, * 内存映射文件IO是通过使文件中的数据出现为内存数组的内容来完成,这似乎是将整个文件读到内存,但事实并.

2021-05-02 19:45:06 17

原创 直接缓冲区 - DirectByteBuffer - 拷贝文件

package com.tiger;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;/** * 直接缓冲区,为了加快IO速度,使用一种特殊的方式为其分配内存的缓冲区, * JDK文档描述:给定一个直接字节缓冲区,java虚拟机将尽.

2021-05-02 18:49:07 30

原创 只读缓冲区 - ReadOnlyBuffer

package com.tiger;import java.nio.ByteBuffer;/** * 只读缓冲区, * 通过调用现有缓冲区的asReadOnlyBuffer()方法将任意常规缓冲区转换为只读缓冲区, * 这个方法返回一个与原缓冲区完全相同的缓冲区,并与原缓冲区共享数据,只不过它是只读的, * 如果原缓冲区内容发生变化,那么只读缓冲区也会发生变化。 * 但position和limit可以不同,拷贝的时候是拷贝当前缓冲区所有特性 * * @description: * .

2021-05-02 14:08:12 34

原创 缓冲区分片 - BufferSlice

package com.tiger;import java.nio.ByteBuffer;/** * 缓冲区分片案例 * 在现有缓冲区对象中创建一个子缓冲区,即在现有缓冲区上切出一片作为一个新的缓冲区, * 但现有缓冲区与创建的子缓冲区在底层数组层面上是数据共享; * 也就是说,子缓冲区相当于是现有缓冲区的一个视图窗口 * * @description: * @author: tiger * @create: 2021-05-02 10:05 */public class By.

2021-05-02 11:47:43 14

原创 缓冲区 - ByteBuffer

package com.tiger;import java.nio.IntBuffer;/** * @description: * @author: tiger * @create: 2021-05-02 10:05 */public class ByteBufferDemo { public static void main(String[] args) { IntBuffer buffer = IntBuffer.allocate(8); ...

2021-05-02 11:18:55 14

原创 nginx配置负载均衡

负载策略权重轮询:wrr 【weight round-robin】ip_hash:nginx会根据客户端ip的hash结果选择一个真实服务器,而且每次都会固定访问这台服务器,可以解决session保存问题。least_conn:当前活跃连接数越小,权重越大,优先选择。配置块weightmax_failsfail_timeoutdownbackup# For more information on configuration, see:# * Official

2021-04-11 13:37:54 24

原创 nginx配置反向代理

反向代理在内网中开启两个服务# 服务前缀 testcurl http://172.16.0.8:8080/# 服务前缀 tigercurl http://172.16.0.8:8081/修改配置文件nginx.conf,部署在【159.75.79.151】中# For more information on configuration, see:# * Official English Documentation: http://nginx.org/en/docs/# *

2021-04-07 22:44:25 47

原创 nginx学习笔记

安装源码方式nginx官网找到最新稳定版本【http://nginx.org/en/download.html】安装cd /usr/local/softwget http://nginx.org/download/nginx-1.18.0.tar.gz解压tar -xzvf nginx-1.18.0.tar.gz安装依赖环境# gcc环境:基本运行环境# pcre:用于nginx的http模块解析正则表达式# zlib:用户进行gzip压缩# openssl:用于

2021-04-07 22:32:42 40

原创 解决GitHub访问慢的问题

解决污染打开 www.ipaddress.com 查询下面四个网站的 IPhttps://github.com/https://assets-cdn.github.com/http://global.ssl.fastly.net/codeload.github.com把这四个网站的地址复制到刚刚的完整进行查询,假如查询结果如下140.82.114.3:github.com185.199.108.153:assets-cdn.github.com185.199.109.153:co

2021-04-01 20:58:03 17

原创 git学习笔记

基本认知工作区(.git 文件夹) – 版本库(缓存区、提交区)基本命令当前工作区的状态git status记录每次commit日志git refloggit log退回上一个版本git reset --hard HEAD^退回上上一个版本git reset --hard HEAD^^退回往上100个版本git reset --hard HEAD~100退回到指定版本git reset --hard commit_id添加文件到

2021-03-28 10:31:10 9

原创 linux安装mysql

方式一 docker安装创建挂载目录# 数据目录mkdir -p /usr/local/docker/mysql/data# 日志目录mkdir -p /opt/docker/mysql/logs# 配置文件,需要事先将配置文件放到 my.cnf 中mkdir -p /usr/local/docker/mysql/conf/my.cnf运行mysql5.7镜像docker run -it --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWO

2021-03-28 10:23:31 31 1

原创 linux安装vim

vim编辑器yum -y install wget httpd-tools vim

2021-03-28 10:08:57 25

原创 linux安装wget

文件下载工具yum -y install wget

2021-03-28 10:08:01 22

原创 linux安装git

方式一yum源安装yum install git配置# 用户名git config --global user.name "1165069099@qq.com"# 邮箱git config --global user.email "1165069099@qq.com"window密钥生成ssh-keygen -t rsa -C "1165069099@qq.com"将密钥上传到服务器github:/root/.ssh/id_rsa.pub查看用户名git

2021-03-28 09:55:01 15

原创 linux安装ruby

方式一下载安装包http://www.ruby-lang.org/en/downloads/上传到服务器,并解压到指定目录tar -xvzf ruby-2.5.3.tar.gz -C /usr/local/进入目录cd /usr/local/ruby-2.5.3配置安装路径./configure编译并安装make && sudo make install验证成功与否ruby -v…方式二直接执行以下命令rvm i

2021-03-28 09:06:26 29

原创 linux安装rz和sz

rz,sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具

2021-03-27 23:57:12 48 2

原创 linux安装tomcat

方式一下载安装包wget https://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz# 或直接到官网下载,上传到目录 /usr/local/softmkdir /usr/local/soft解压到指定目录tar -xzvf apache-tomcat-8.5.35.tar.gz -C /usr/local/soft启动tomcat并查看日志信息sh /opt/t

2021-03-27 23:50:19 9

原创 linux安装maven

方式一建文件夹mkdir -p /root/maven切换目录cd /root/maven下载安装包,将其上传到 /root/maven 目录下apache-maven-3.6.2-bin.tar.gz解压安装包tar -xzvf apache-maven-3.6.2-bin.tar.gz配置环境变量vi /etc/profileexport MAVEN_HOME=/root/mavem/apache-maven-3.6.2export MAVEN_HO

2021-03-27 23:44:30 17

原创 手写start组件整合redisson&使用

一、start组件的创建1.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/4.0.0 http://maven.

2021-03-22 22:42:56 52

原创 dubbo简单使用案例-有/无注册中心

1、创建dubbo-server-api工程1.1pom.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/4.0.0 h...

2021-03-07 12:31:23 43 1

原创 部署在docker容器中的项目使用window字体

1、将window中字体文件放在项目的【ly-cea-cultivation-process-server】目录下2、配置Dockerfile文件RUN mkdir /usr/lib/jvm/java-1.8-openjdk/jre/lib/fontsRUN mkdir /usr/lib/jvm/java-1.8-openjdk/jre/lib/fonts/fallbackADD ly-cea-cultivation-process-server/simkai.ttf /usr/lib/jvm

2020-12-15 09:18:19 209

原创 window字体安装到linux系统注意要点

window字体安装到linux系统注意要点1、在linux原本字体库中创建文件夹【/usr/share/fonts/】【mkdir /usr/share/fonts/win_fonts】2、将需要的字体上传到该文件夹下3、终端输入:【sudo fc-cache -fv】4、如果你需要确认新的中文字体库是否已经安装,可在终端中输入:【fc-list :lang=zh-cn | sort】修改权限cd /usr/share/fonts/chmod 755 win_fonts/..

2020-11-18 09:48:18 88

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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