Java高级开发/架构技能总结

1、语言基础;
    内存模型,垃圾回收,多线程,juc,锁相关;
    jvm调优,jmap -heap pid, jmap -dump pid等
2、框架基础;
    springboot,mybatis,jpa等;
3、中间件基础;
    spring-cloud,dubbo,rocketmq,rabbitmq,kafka,qz,xxl-job,zk,nacos等;
4、数据库基础;
    mysql,redis,es,mongodb等;
5、架构设计基础;
    微服务设计,分布式协议,设计模式,DDD,性能调优等;
    红包雨设计:系统分为管理后台(配置活动及奖品)、鉴权服务及抽奖服务三大模块,抽奖模块底层基于mysql,redis及MQ支撑,利用redis的队列存放奖品信息,具体实现是采用时间戳加随机数作为令牌从右侧入队,令牌和奖品关联,抽奖时取当前时间和令牌的时间戳对比,判断是否中奖,不中奖将令牌从左侧再入队;如果中奖,利用MQ发送消息异步保存中奖信息;
    关键点:利用缓存及异步消息保证高并发,利用分布式锁保证出队及入队的一致性,同时注意前后端通信时数据包的大小,以降低带宽。
6、DevOps基础;
    k8s,docker,jekins,linux等;

6.1、linux基础
    vi使用,权限chmod使用,防火墙ufw管理,源管理,shell编写等等;
6.2、Docker
    安装部署
    容器及镜像管理(pull、images、run、stop、start、build、load等等)
    Dockerfile编写(From、RUN、CMD、ENTRYPOINT、ENV、VOLUME、EXPOSE等等)
    启动容器示例:    

docker run --name=spring-boot \ #指定容器名称
        --restart=always \ #设置docker重启时,容器自动重启
        -p 8088:8088 \ #端口映射
        -v /data/logs:/data/logs \ #容器内日志的路径挂载到宿主机的目录
        -e TZ=Asia/Shanghai \ #设置时区,否则容器内时间不对
        -d spring-boot #设置后台运行

6.3、Devops
    springboot部署到linux服务器(已实现)

nohup java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8180,suspend=n -jar spring-boot.jar -Dfile.encoding=utf-8 >/dev/null 2>&1 &

    springboot利用Dockerfile构建镜像部署到docker(已实现)
    springboot整合jekins、gitlab、docker实现自动化部署(已实现)

    步骤:
    1、基于docker部署gitlab
    2、部署jenkins并安装maven及gitlab等插件
    3、配置Jenkins与gitlab hook
    4、jenkins上创建项目并配置构建信息
    关键点:
    1、将jenkins用户添加到docker组(用于执行docker命令),
    修改/etc/sudoers,添加:%docker ALL=(ALL)  NOPASSWD:ALL,将docker组添加进去,支持sudo时无需输入密码
    2、如果配置完仍权限不足,查看ls -alF /var/run/docker.sock
    将docker.sock赋予权限777
    附maven构建完成后执行的shell脚本示例:
   

    cd /
    cp /var/lib/jenkins/workspace/spring-boot/spring-boot-web/target/spring-boot.jar /data/deploy/spring-boot.jar
    echo "已完成jar包复制"
    cp /var/lib/jenkins/workspace/spring-boot/Dockerfile /data/deploy/Dockerfile
    echo "已完成Dockerfile复制"
    cd /data/deploy
    docker build -t spring-boot .
    docker stop spring-boot
    docker rm spring-boot
    docker run --name=spring-boot --restart=always -p 8088:8088 -v /data/logs:/data/logs -e TZ=Asia/Shanghai -d spring-boot


    k8s安装部署(已实现)
    (minikube start时,不指定--vm-driver信息,默认启动一个docker实例,相当于部署在一个vm里面,网络
    是独立的;如果指定了--vm-driver=none,则直接在宿主机上启动,使用宿主机上安装的docker,node节点IP
    也是宿主机的)
    基于docker的elk的部署(已搭建)
运维
    基于BIND9搭建内网dns服务器,为内网的服务设置域名

----------------------------------------------
一、使用vi时方向键不好用,并出现ABCD等,且无法删除
解决方案:
这是因为Ubuntu预装的是vim tiny版本,也就是精简版,我们只需安装vimfull版本,即完整版,就可以解决这个问题。
1、先卸载vim-tiny:
$sudo apt-get remove vim-common

2、安装vim full:

$sudo apt-get install vim

只需两步即可解决该问题。

二、使用SSH等工具连接服务器,能ping通,但无法连接。
解决方案:
1、开启SSH服务
sudo apt update
sudo apt install openssh-server

ssh连接Ubuntu之access denied
解决方法是:
修改/etc/ssh/sshd_config文件,
#PermitRootLogin prohibit-password改为
PermitRootLogin yes

然后 PasswordAuthentication yes
最后,设置root的密码。passwd root。
重启ssh service sshd restart。
2、考虑是否是防火墙问题
使用ufw工具(用于简化iptables的工具)检查防火墙设置
安装ufw
sudo apt-get install ufw
查看状态
sudo ufw status;
启用禁用重置
sudo ufw enable
sudo ufw disable
sudo ufw reset
允许某个端口连接
# 以下两条命令效果是一样的
sudo ufw allow ssh
sudo ufw allow 22
允许特定端口范围连接
sudo ufw allow 1000:2000/tcp
sudo ufw allow 2001:3000/udp
允许特定IP地址链接

# 允许特定IP所有端口的连接
sudo ufw allow from 111.111.111.111

# 允许特定IP特定端口的连接
sudo ufw allow from 111.111.111.111 to any port 22
拒绝特定连接
如果设置的默认安全策略是允许全部传入连接,则可以设置拒绝连接规则
# 拒绝http连接
sudo ufw deny http
# 拒绝特定IP连接
sudo ufw deny from 111.111.111.111
------------------------------------------
三、POD报错——BACK-OFF RESTARTING FAILED CONTAINER 的解决办法

解决办法为:要使Pod持续运行,就必须指定一个永远不会完成的任务。

因此在yaml文件中指定一个启动命令,内容如下:command: ["/bin/bash", "-ce", "tail -f /dev/null"]

-----------------------------------------------
四、minikube启动时报错(无法修改/tmp下的临时文件)
X Exiting due to HOST_JUJU_LOCK_PERMISSION: Failed kubeconfig update: writing kubeconfig: 
Error writing file /root/.kube/config: failed to acquire lock for /root/.kube/config: 
{Name:mk72a1487fd2da23da9e8181e16f352a6105bd56 Clock:{} Delay:500ms Timeout:1m0s Cancel:<nil>}: unable to open /tmp/juju-mk72a1487fd2da23da9e8181e16f352a6105bd56: permission denied
* Suggestion: Run 'sudo sysctl fs.protected_regular=0', or try a driver which do                                                                              es not require root, such as '--driver=docker'

解决方案
执行命令:sudo sysctl fs.protected_regular=0

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值