1、基础 io、多线程、集合等基础框架,对JVM原理有一定的了解; 2、框架,源码 了解框架原理,Spring,ibatis,netty,tomcat,dubbo 3、中间件 分布式缓存、SOA、消息中间件,负载均衡、连接池等 4、数据库 熟悉MYSQL和NoSQL DB,分布式缓存者优先, 包括但不限于redis, mongodb, memcached; 熟悉事务、锁、并发、索引优化等; 5、运维能力 Linux、shell 2020-10-18:双亲委派,SPI服务发现 2020-10-19:手动解析字节码文件(一) 2020-10-20:手动解析字节码文件(二)、内存池与JVM内存模型(一) 2020-10-21:内存池与JVM内存模型(二) 2020-10-22:字符串和常量池 2020-10-24:执行引擎(一) 2020-10-25:执行引擎(二) 2020-10-26:OOP对象模型(一) 2020-10-27:OOP对象模型(二) 2020-10-28:内存池和相关算法(一) 2020-11-01:内存池和相关算法(二)、垃圾回收器(一) 2020-11-03:垃圾...... haha 待分类
一、安装 下载地址:http://kafka.apache.org/downloads 按提示下载: 解压后文件目录: 修改配置文件config/server.properties 常用配置如下: #broker 的全局唯一编号,不能重复 broker.id=0 #删除 topic 功能使能 delete.topic.enable=true #处理网络请求的线程数量 num.network.threads=3 #用来处理磁盘 IO 的现成数量 num.io.threads=8 #发送套接字的缓冲区大小 socket.send.buffer.bytes=102400 #接收套接字的缓冲区大小 socket.receive.buffer.bytes=102400 #请求套接字的缓冲区大小 socket.request.max.bytes=104857600 #kafka 运行日志存放的路径 log.dirs=/opt/module/kafka/logs #topic 在当前 broker 上的分区个数 num.partitions=1 #用来恢复和清理 data 下数据的线程数量 nu...... kafka笔记 kafka
修改hostname hostnamectl set-hostname k8s-master cat /etc/hostname Docker安装 Docker提供两个版本,docker-ce(Community Edition: 社区版),ee(Enterprise Edition: 企业版),我们使用社区版。 CentOS curl -fsSL https://get.docker.com/ | sh -s docker --mirror Aliyun systemctl enable docker systemctl start docker 查看可安装的版本 yum list docker-ce.x86_64 --showduplicates | sort -r Ubuntu apt-get update apt-get install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ub.... kubeadm部署k8s k8s
Docker 网络 Docker允许通过外部访问容器或容器互联的方式来提供网络服务。 安装Docker时,会自动安装一块Docker网卡称为docker0,用于Docker各容器及宿主机的网络通信,网段为172.0.0.1。 Docker网络中有三个核心概念:沙盒(Sandbox)、网络(Network)、端点(Endpoint)。 沙盒,提供了容器的虚拟网络栈,也即端口套接字、IP路由表、防火墙等内容。隔离容器网络与宿主机网络,形成了完全独立的容器网络环境。 网络,可以理解为Docker内部的虚拟子网,网络内的参与者相互可见并能够进行通讯。Docker的虚拟网络和宿主机网络是存在隔离关系的,其目的主要是形成容器间的安全通讯环境。 端点,位于容器或网络隔离墙之上的洞,主要目的是形成一个可以控制的突破封闭的网络环境的出入口。当容器的端点与网络的端点形成配对后,就如同在这两者之间搭建了桥梁,便能够进行数据传输了。 Docker的四种网络模式 Docker服务在启动的时候会创建三种网络,bridge、host和none,还有一种共享容器的模式container Bridge 桥接模式,主...... Docker | 三、网络和Compose docker
Docker生成镜像的两种方式 有时候从Docker镜像仓库中下载的镜像不能满足要求,我们可以基于一个基础镜像构建一个自己的镜像 两种方式: 更新镜像:使用docker commit命令 构建镜像:使用docker build命令,需要创建Dockerfile文件 更新镜像 先使用基础镜像创建一个容器,然后对容器内容进行更改,然后使用docker commit命令提交为一个新的镜像(以tomcat为例)。 1.根据基础镜像,创建容器 docker run --name mytomcat -p 80:8080 -d tomcat 2.修改容器内容 docker exec -it mytomcat /bin/bash cd webapps/ROOT rm -f index.jsp echo hello world > index.html exit 3.提交为新镜像 docker commit -m="描述消息" -a="作者" 容器ID或容器名 镜像名:TAG # 例: # docker commit -m="修改了首页" -a="华安" mytomcat huaan/to.... Docker | 二、创建自己的镜像 docker
Docker安装 Docker 提供了两个版本:社区版 (CE) 和企业版 (EE)。 操作系统要求 以Centos7为例,且Docker 要求操作系统必须为64位,且centos内核版本为3.1及以上。 查看系统内核版本信息: uname -r 一、准备 卸载旧版本: yum remove docker docker-common docker-selinux docker-engine yum remove docker-ce 卸载后将保留 /var/lib/docker 的内容(镜像、容器、存储卷和网络等)。 rm -rf /var/lib/docker 1.安装依赖软件包 yum install -y yum-utils device-mapper-persistent-data lvm2 #安装前可查看device-mapper-persistent-data和lvm2是否已经安装 rpm -qa|grep device-mapper-persistent-data rpm -qa|grep lvm2 2.设置yum源 yum-config-manager --add.... Docker | 一、 安装及基本使用 docker
关于beanDefinition 的第一篇笔记 一共三篇 https://blog.csdn.net/java_lyvee/article/details/102633067 beanDefinition:org.springframework.beans.factory.config.BeanDefinition 常用子类:org.springframework.beans.factory.support.GenericBeanDefinition 描述每个bean的定义,dependsOn,scope,lazy,beanClassName等 启动过程: 扫描 parse------beanDefinition object ----map<"xxx",o> validate life-------遍历beanDefinitionMap,得到beanDefinition,实例化object 容器: 由spring各个组件组成 singletonObjects : ConcurrentHashMap 单例池,容器的一部分 beanDefinitionMap bean.... Spring | (一)BeanDefinition spring
1、ConcurrentLinkedQueue 在JDK1.5以后,java里面提供了很多的并发容器,这里我们用的是一个queue,队列。所谓队列其实就是一个容器,就是站成一对,不管票还是人都在里面排成一堆,队列有几种,有先进先出的,还有两端的队列,还有就是栈,先进后出,先加进去的后出来。这里用了一个concurrentlinkedqueue,并发的链表队列。线程里面调用了一个poll方法,意思是往外面拿一个数据,相当于在尾巴里面拿一个,如果没有拿到,他的返回值就是空,那么就中断线程。这里面没有加锁,同样有判断,但是不会出问题。完成卖票功能这种效率是比较高的。queue里面是不能装空值。这里虽然判断和操作是一起的,但是我们没有在判断里面有任何操作,大不了反过头来再拿一边,poll底层实现是cas,这里我们就不用加锁了。 private static Queue<Integer> tickets = new ConcurrentLinkedQueue<>(); static { for (int i = 0; i < 10000; i++) { ti.... java中的并发容器 java
redis 是什么? 是完全开源免费的,用c语言编写的,是一个单线程,高性能的(key/value)内存数据库,基于内存运行并支持持久化的nosql数据库 能干嘛? 主要是用来做缓存,但不仅仅只能做缓存,比如:redis的计数器生成分布式唯一主键,redis实现分布式锁,队列,会话缓存,点赞,统计网站访问量。 去哪下? 官网,也可以通过Linux yum直接下载安装 怎么玩? 1.安装 2.redis数据类型(api操作) 3.redis配置文件解析 4.redis的持久化 5.redis的事务 6.redis的发布订阅 7.java客户端操作(jedis) redis的安装 1.解压 2.make 如果make报错的话 大家就可以看一下是不是报没有gcc的错 如果是报没有gcc的错,那就要先安装一个gcc yum install gcc-c++ 安装好gcc之后执行一下make distclean 因为前面make的时候它执行了一些东西 要先把他清掉 3.make install 查看redis默认安装位置 /usr/local/bin redis设置外网访问 1.注释bind并且..... redis笔记 nosql
引言 什么是elasticsearch? ElasticSearch是一个分布式,高性能、高可用、可伸缩的搜索和分析系统 什么是Elastic Stack? Elastic Stack,前身缩写是ELK,就是ElasticSearch + LogStash + Kibana ES的使用场景: 网上商场,搜索商品. ES配合logstash,kibana,日志分析. 为什么要使用elasticsearch? 假设用数据库做搜索,当用户在搜索框输入“四川火锅”时,数据库通常只能把这四个字去进行全部匹配。可是在文本中,可能会出现“推荐四川好吃的火锅”,这时候就没有结果了。 1.elasticsearch基本概念 近实时(NRT) ES是一个近实时的搜索引擎(平台),代表着从添加数据到能被搜索到只有很少的延迟。(大约是1s) 文档 Elasticsearch是面向文档的,文档是所有可搜索数据的最小单元。可以把文档理解为关系型数据库中的一条记录。文档会被序列化成json格式,保存在Elasticsearch中。同样json对象由字段组成,给个字段都有自己的类型(字符串,数值,布尔,二进制,....... elasticsearch笔记 待分类
什么是MongoDB MongoDB是一个文档数据库,提供好的性能,领先的非关系型数据库。采用BSON存储文档数据。2007年10月,MongoDB由10gen团队所发展。2009年2月首度推出。MongoDB用c++编写的。 优势: 面向文档的存储:以 JSON 格式的文档保存数据。 任何属性都可以建立索引。 复制以及高可扩展性。 自动分片。 丰富的查询功能。 快速的即时更新。 来自 MongoDB 的专业支持。 elasticsearch与MongoDB相同点与不同点 相同点: 都是以json格式管理数据的nosql数据库。 都支持CRUD操作。 都支持聚合和全文检索。 都支持分片和复制。 都支持阉割版的join操作。 都支持处理超大规模数据。 不同点: es是java编写,通过RESTFul接口操作数据。mongodb是C++编写,通过driver操作数据。(es对java开发更有好,利于排查理解) mongodb的分片有hash和range两种方式,es只有hash一种。 es是天生分布式,主副分片自动分配和复制,开箱即用。mongodb的分布式是由“前置查询路由+配.... MongoDB笔记 mongodb
1、mysql索引是什么数据结构?为什么选择这个数据结构? B+树。 二叉树:如果数据是单边增长的情况 那么出现的就是和链表一样的数据结构了,树高度大。 红黑树:在二叉树的基础上多了树平衡,也叫二叉平衡树,不像二叉树那样极端的情况会往一个方向发展。但是如果数据量大了之后,树的高度就会很大。 B树:在红黑树的基础上,每个节点可以存放多个数据 B+树:B树变种,只在叶子节点上存数据,叶子节点之间的箭头是方便做范围查找。 2、MyISAM和InnoDB有什么区别? MyISAM:一张表对应三个文件:表结构、表数据、表索引。他的索引是非聚集索引; InnoDB :一张表对应两个文件:表结构、表数据+索引。他的索引是聚集索引,InnoDB的表须有主键,开发人员不设置主键,那会自动生成一列主键。建议InnoDB表使用自增数字为主键。 3、Hash索引的优缺点。 一对一查找快,但是范围查找很差。 4、为什么InnoDB表必须要有主键,并且推荐使用整型的自增主键? InnoDB表数据文件本身就是按B+树组织的一个索引结构文件,必须要一个主键索引,不然没法存储,次级索引的叶子节点存的是主键值。B.... 数据库问题记录 待分类
1、备份数据库 if [ $# -lt 1 ] then database=test else database=$1 fi echo $database /usr/local/mysql/bin/mysqldump -uroot -p $database > ./$database'.sql' 2、启动SpringBoot项目 nohup java -jar xxx.jar & pid=ps -ef|grep xxx.jar|grep -v grep|awk '{print $2}' echo $pid 3、停止SpringBoot项目 pid=ps -ef|grep dwscmmp-0.0.1-SNAPSHOT.jar|grep -v grep|awk '{print $2}' echo $pid for id in $pid do kill -9 $id echo "kill -9 $id" done 我的linux脚本 linux
1、前提条件 检查是否有gcc和g++命令 gcc --version g++ --version # 如果没有,在线安装命令: yum install gcc yum install gcc gcc-c++ # 离线情况找离线安装包安装。 附在线安装依赖: yum -y install gcc pcre-devel zlib-devel openssl openssl-devel 2、准备文件 nginx-xxx.tar.gz,下载地址 zlib-xxx.tar.gz,下载地址 pcre-xxx.tar.gz 下载地址 openssl-xxx.tar.gz 下载地址 3、源码编译 把上述四个文件上传到 /usr/local/src目录。 安装openssl(以1.0.2t版本为例) # 进入目录 cd /usr/local/src # 解压 tar -zxvf openssl-1.0.2t.tar.gz -C /usr/local # 进入解压目录 cd /usr/local/openssl-1.0.2t # 配置 ./config # 编译安装(需要几分钟) make &a.... CentOS下nginx离线安装配置 linux
在/etc/systemd/system新建boot.service文件,填入如下内容。 [Unit] Description=a After=syslog.target mysqld.service [Install] WantedBy=multi-user.target [Service] WorkingDirectory=/home/test/boot/a User=test Group=test Type=simple # Start main service ExecStart=/usr/local/env/java/jdk1.8.0_171/bin/java -jar /home/test/boot/a/a.jar # EnvironmentFile=/home/test/boot/a/application.yml ExecStop=kill $MAINPID #Restart=always 相关命令 设置自启动:systemctl enable boot 移除自启动:systemctl disable boot 启动:systemctl startr boot 停止:..... SpringBoot通过systemctl自启动 linux
准备 MySQL安装包:mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz 安装 1、新建目录:/usr/local/mysql 2、把安装包解压到上述目录 解压命令:tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C /usr/local/mysql 3、把配置文件移到/etc目录下,点击获取配置文件 4、新建目录:/var/lib/mysqld,/var/run/mysqld,/usr/local/mysql/data 5、新建文件:/var/log/mysqld.log 6、新建mysql用户 groupadd mysql useradd -r -g mysql mysql # -r表示这个用户是系统用户,不能登录。 # -g表示分组 7、把之前建的文件和目录都归属mysql用户所有 命令:chown mysql:mysql 目录... 8、初始化,移到/usr/local/mysql目录 执行: ./bin/mysqld --initialize --user=mysql --bas..... MySQL5.7安装和自启动 linux
mysql配置文件备份 # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html [mysqld] # #skip-grant-tables # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. innodb_buffer_pool_size=1G lower_case_table_names=0 # # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # l.... mysql配置文件 mysql
1、安装 1、到官网下载最新版redis,中文官网,本文使用5.0.4版。 2、把下载的redis-5.0.4.tar.gz移动到/usr/local/src目录下,解压。 3、解压后如图: 4、执行 cd /usr/local/src/redis-5.0.4 make make PREFIX=/usr/local/redis install cp /usr/local/src/redis-5.0.4/redis.conf /usr/local/redis/redis.conf 安装后如图 2、修改配置文件 配置文件位置:/usr/local/redis/redis.conf 修改如下几项: 1、bind 127.0.0.1 注释掉,可以让redis远程连接 2、protected-mode yes 改为no,关闭保护模式,没有指定bind也可以连接。 3、port 6379 按需修改启动端口 4、daemonize no 改为yes,后台运行(使用systemctl时需要配置为:no) 5、logfile "" 按需修改日志位置 6、# requirepass foobared ...... 利用systemctl配置redis自启动 linux
iptables防火墙 1、基本操作 查看防火墙状态 service iptables status 停止防火墙 service iptables stop 启动防火墙 service iptables start 重启防火墙 service iptables restart 永久关闭防火墙 chkconfig iptables off 永久关闭后重启 chkconfig iptables on 2、查看防火墙状态,防火墙处于开启状态并且只开放了22端口 3、开启80端口 vim /etc/sysconfig/iptables # 加入如下代码,比着两葫芦画瓢 :) -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 保存退出后重启防火墙 service iptables restart firewall防火墙 1、查看firewall服务状态 systemctl status firewalld 2、查看firewall的状态 firewall-cmd --st.... Centos防火墙操作 linux
一、数据库管理 1.1 初始化及开启远程访问 linux命令行输入: ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/env/mysql/mysql --datadir=/usr/local/env/mysql/mysql/data 登录数据库后输入: use mysql; grant all on . to 'root'@'%' identified by 'root用户的密码' with grant option; 检查: select user,host from user; 1.2 修改密码 第一次安装:set password for 'root'@'localhost'=password('123'); 方法二:alter user 'root'@'localhost' identified by '123'; 1.3 查看配置 1.3.1 查看数据文件路径 show variables like "%datadir%"; 1.4 复制 MySQL备份和还原,都是利用mysqldump、mysql和...... mysql操作笔记 mysql