容器管理工具
1. 安装Docker一键安装(推荐)12345# 使用阿里云curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun# 或者使用daocloud 选一个即可curl -sSL https://get.daocloud.io/docker | sh
手动安装12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849501. 确定你是CentOS7及以上版本 cat /etc/redhat-release2. yum安装gcc相关CentOS7能上外网yum -y install gccyum -y install gcc-c++3. 卸载旧版本yum -y remove docker docker-common docker-selinux docker-engine之前版本yum remove docker \ docker-client \ ...
Docker Compose 入门
Docker环境下的前后端分离项目部署与运维第1章 RR开源前后端分离项目
第2章 RR开源前后端分离项目下载与配置2.1 项目描述
项目描述: www.renren.io
项目地址: https://gitee.com/renrenio
2.2 后端项目下载与配置
下载后台源码,
后端:https://gitee.com/renrenio/renren-fast.git
前端:https://gitee.com/renrenio/renren-fast-vue.git
使用IDEA打开后端,Webstrom或者VScode打开前端
新建数据库renren_fast后端项目打开之后将mysql.sql导入数据库
导入数据库后运行该项目,访问 http://localhost:8080/renren-fast/swagger/index.html
2.3 前台项目的下载与配置
123456安装node.js 安装依赖&运行项目cd 工程目录npm install npm run dev
1234567891011firewall-cmd --permane ...
周阳大厂面试第三季
大厂面试第三季1.java基础1.1 58同城的java字符串常量池面试题code
123456789101112131415161718package com.hhf.study.javase;public class StringPool58Demo { public static void main(String[] args) { String str1 = new StringBuilder("58").append("tongcheng").toString(); System.out.println(str1); System.out.println(str1.intern()); System.out.println(str1 == str1.intern()); System.out.println("------------"); String str2 = new StringBuilder(&q ...
周阳大厂面试第二季(JVM篇)
大厂面试题之JVM+GC解析1. JVM垃圾回收的时候如何确定垃圾?是否知道什么是 GC Roots什么是垃圾
简单的说就是内存中已经不再被使用到的空间就是垃圾
要进行垃圾回收,如何判断一个对象是否可以被回收
引用计数法
枚举根节点做可达性分析(根搜索路径)
跟踪收集器采用的为集中式的管理方式,全局记录对象之间的引用状态,执行时从一些列GC Roots的对象做为起点,从这些节点向下开始进行搜索所有的引用链,当一个对象到GC Roots 没有任何引用链时,则证明此对象是不可用的。
图中,对象Object6、Object7、Object8虽然互相引用,但他们的GC Roots是不可到达的,所以它们将会被判定为是可回收的对象。
哪些对象可以作为 GC Roots 的对象:
虚拟机栈(栈帧中的局部变量区,也叫局部变量表)中引用的对象
方法区中的类静态属性引用的对象
方法去常量引用的对象
本地方法栈中 JNI (Native方法)引用的对象
2. 你说你做过JVM调优和参数配置,请问如何盘点查看JVM系统默认值2.1 JVM 的参数类型
标配参数
-version
-help
...
周阳大厂面试第二季(并发编程)
大厂面试题之JUC多线程及高并发1. 谈谈你对volatile的理解1.1 volatile是Java虚拟机提供的轻量级的同步机制
保证可见性
禁止指令排序
不保证原子性
1.2 JMM(Java 内存模型) 你谈谈基本概念
JMM 本身是一种抽象的概念并不是真实存在,它描述的是一组规定或则规范,通过这组规范定义了程序中的访问方式。
JMM 同步规定
线程解锁前,必须把共享变量的值刷新回主内存
线程加锁前,必须读取主内存的最新值到自己的工作内存
加锁解锁是同一把锁
由于 JVM 运行程序的实体是线程,而每个线程创建时 JVM 都会为其创建一个工作内存,工作内存是每个线程的私有数据区域,而 Java 内存模型中规定所有变量的储存在主内存,主内存是共享内存区域,所有的线程都可以访问,但线程对变量的操作(读取赋值等)必须都工作内存进行看。
首先要将变量从主内存拷贝的自己的工作内存空间,然后对变量进行操作,操作完成后再将变量写回主内存,不能直接操作主内存中的变量,工作内存中存储着主内存中的变量副本拷贝,前面说过,工作内存是每个线程的私有数据区域,因此不同的线程间无法访问对方的工作内存,线 ...
尚硅谷大厂面试第一季
大厂面试题第一季1. JavaSE面试题1.1 自增变量
代码的执行结果是什么呢?
123456789public static void main(String[] args) { int i = 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println("i = " + i); System.out.println("j = " + j); System.out.println("k = " + k); }
1)i = i++; 字节码解析
会先执行 = 号右边的,将 i 压入栈中,操作数栈为 1,然后 i 自增,局部变量表中 i 的值会从 1 变成 2,等号右边操作完成,然后是赋值操作,将操作数栈结果赋值 i 变量,则 i 变量的值为 1。
2)int j = i++; 字节码解析
首先执 ...
分布式session解决方案
集群/分布式环境下session处理策略会话控制[1]Cookie工作机制
浏览器访问服务器时会自动携带Cookie(如果有的话)。
[2]Session工作机制
根据浏览器端存储的名为JSESSIONID的Cookie查找服务器端保存的Session对象。
集群是个物理形态,分布式是个工作方式。
分布式:一个业务分拆多个子业务,部署在不同的服务器上
集群:同一个业务,部署在多个服务器上
为什么要处理session?
1这个问题想必大多数朋友都知道,在搭建完集群或者分布式环境之后,如果不做任何处理的话,网站将频繁的出现用户未登录 的现象。比如:集群中有A、B两台服务器,用户第一次访问网站时,Nginx将用户请求分发到A服务器,这时A服务器给用户创 建了一个Session,当用户第二次访问网站时,假设Nginx将用户请求分发到了B服务器上,而这时B服务器并不存在用户的 Session,所以就会出现用户未登录的情况,这对用户来说是不可忍受的。 所以我们在搭建集群/分布式环境之后,必须考虑的一个问题就是用户访问产生的session如何处理,即session的共享机制
...
颜群Spring进阶
Spring进阶1. Spring注解开发1.1 SpringIOC容器两种注入方式
xml配置文件:applicationContext.xml(这个xml配置文件就是IOC容器)
注解:带有@Configuration注解的类(这个配置类就是IOC容器)
1234567891011121314151617IOC容器的作用 存Bean 取Bean # xml配置文件存bean: <bean id class>取bean:ApplicationContext context= new ClassPathXmlApplicationContext("applicationContext.xml");context.getBean();# 注解方式取bean ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class) ;context.getBean();# 取所有BeanString[] beanDefinitionNames = conte ...
SpringSecurityOuth2.0(上)
5.分布式系统认证方案5.1什么是分布式系统随着软件环境和需求的变化 ,软件的架构由单体结构演变为分布式架构,具有分布式架构的系统叫分布式系统,分 布式系统的运行通常依赖网络,它将单体结构的系统分为若干服务,服务之间通过网络交互来完成用户的业务处 理,当前流行的微服务架构就是分布式系统架构
分布式系统具体如下基本特点:
1、分布性:每个部分都可以独立部署,服务之间交互通过网络进行通信,比如:订单服务、商品服务。
2、伸缩性:每个部分都可以集群方式部署,并可针对部分结点进行硬件及软件扩容,具有一定的伸缩能力。
3、共享性:每个部分都可以作为共享资源对外提供服务,多个部分可能有操作共享资源的情况。
4、开放性:每个部分根据需求都可以对外发布共享资源的访问接口,并可允许第三方系统访问。
5.2 分布式认证需求分布式系统的每个服务都会有认证、授权的需求,如果每个服务都实现一套认证授权逻辑会非常冗余,考虑分布式 系统共享性的特点,需要由独立的认证服务处理系统认证授权的请求;考虑分布式系统开放性的特点,不仅对系统 内部服务提供认证,对第三方系统也要提供认证。分布式认证的需求总结如下:
统一认证 ...
SpringSecurityOuth2.0(上)
Spring Security OAuth2.0认证授权1.基本概念1.1.什么是认证 进入移动互联网时代,大家每天都在刷手机,常用的软件有微信、支付宝、头条等,下边拿微信来举例子说明认证 相关的基本概念,在初次使用微信前需要注册成为微信用户,然后输入账号和密码即可登录微信,输入账号和密码 登录微信的过程就是认证。
系统为什么要认证?
认证是为了保护系统的隐私数据与资源,用户的身份合法方可访问该系统的资源。
认证 :用户认证就是判断一个用户的身份是否合法的过程,用户去访问系统资源时系统要求验证用户的身份信 息,身份合法方可继续访问,不合法则拒绝访问。常见的用户身份认证方式有:用户名密码登录,二维码登录,手 机短信登录,指纹认证等方式。
1.2 什么是会话 用户认证通过后,为了避免用户的每次操作都进行认证可将用户的信息保证在会话中。会话就是系统为了保持当前 用户的登录状态所提供的机制,常见的有基于session方式、基于token方式等。
基于session的认证方式如下图:
它的交互流程是,用户认证成功后,在服务端生成用户相关的数据保存在session(当前会话)中,发给客 ...




