凉衫薄

人生哪能多如意,万事只求半称心。
最新文章
申请SSL证书 以阿里云申请的免费SSL证书为例,在阿里云购买域名后,在域名管理界面可以看到申请SSL证书的字样。申请免费证书后,下载到本地,可以得到一个证书和一个密码。 配置Tomcat 1. 将下载好的证书上传到服务器 2. 修改Tomcat的配置文件server.xml(总共需要修改三处地方) 2.1. 找到下面这一段,将注释去掉,补充没有的属性,certificateKeystoreFile为你的证书的位置,certificateKeystoreType为你的证书的类型,certificateKeystorePassword为你的密码。 <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="conf/key.pfx" certificateKeystoreType="PKCS12" certificateKeystorePassword="123456" /> </SSLHostConfig> </Connector> 2.2. 找到这一段,将port改为80,将redirectPort改为443,作用是将http协议自动跳转到https <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" /> 2.3. 找到这一段,将redirectPort改为443 <Connector port="8009" protocol="AJP/1.3" redirectPort="443" /> 3. 修改web.xml文件,在</welcome-file-list>标签后面加上这一段 <login-config> <!-- Authorization setting for SSL --> <auth-method>CLIENT-CERT</auth-method> <realm-name>Client Cert Users-only Area</realm-name> </login-config> <security-constraint> <!-- Authorization setting for SSL --> <web-resource-collection > <web-resource-name >SSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> 重启Tomcat服务,完成
前言 一年前,我从一个Linux C/C艹程序员转到Java程序员,终于从原始进程级别的底层开发转到了分布式的云开发。回看一年前连Java语法都不怎么会,虽然现在也不算多牛逼,但至少各种生态技术都用的如鱼得水了,这之间还是有很多收获的。下面我总结了一下学习过程和顺序,希望大家少走弯路。 出门装 1. Java语法 很多人推荐《Java编程思想》,我是不推荐这本书入门,外国人写的东西就是啰啰嗦嗦,《从入门到精通》系列挺好的,习惯了中国式教育,高效快速。 2. Java Web 说实话,jsp这些东西已经很过时了,但是servlet-api里面的一些东西直接影响了你学后面的一些东西,比如:过滤器,监听器,会话之类的,多看看web.xml里的一些配置,知道这些东西该怎么配。 3. Maven 项目依赖,构建管理工具,学会如何配置仓库,镜像,特别重点:生命周期和插件。 刷钱装 咳咳,刷钱装,顾名思义就是刷钱的装备,在游戏里面你的经济直接影响了你的发育速度以及后期参战能力,怎么能在最短的时间里刷出更多的钱,在避免前期被敌人gank死的情况下尽快把你的刷钱装做出来吧。 4. SSM还是SSH(辉耀还是狂战) 不开玩笑了,SSH是指(spring+struts2+hibernate),SSM是指(spring+springMVC+mybatis),结合现在形式来看,除非你去维护一些老项目,不然SSH这一套绝对过时了,当然spring-data-jpa里面用到了hibernate,这个可以学学,不然你就去学SSM,下面分开来讲。 5. Spring Java的生态真的得感谢Spring,具体的自己去看书,下面划一下重点。 1、IoC控制反转 2、AOP面向切面编程 3、Bean生命周期 4、Spring数据库事务(敲黑板特别重点,期末要考:四种隔离级别和传播行为) 5、jdk代理和cglib代理的区别 实战:Maven创建web项目后,如何写配置文件整合Spring(一个程序员最起码离开各种平台要学会搭项目,配置项目)。 6. Spring MVC 作为Spring全家桶的一个成员完美的诠释了MVC架构,下面划一下重点。 1、Spring MVC处理请求流程(敲黑板特别重点,期末要考) 2、Spring MVC几种注解的应用 实战:在上一个实战的基础上,把Spring MVC给整合进去,怎么去写配置 7. Mybatis 比较流行的持久化框架,优点在于暴露sql,便于sql优化,适合互联网架构场景。下面划一下重点。 1、懒加载,别名,Typehandler等概念 2、mapper.xml文件的书写 3、一对多关系的查询 4、分页插件 实战:在上一个实战的基础上,把Mybatis给整合进去,怎么去写配置文件。能够做到SSM的整合算是互联网架构入门了,真是这样。 保命装 在游戏里面身板不是特别好,不出点保命装,出去和别人打,直接送你回泉水 这里的保命装主要是一些中间件的应用,互联网架构中,常见的中间件有rabbitmq,redis,zookeeper,dubbo或dubbox,shiro,下面一一划重点。 8. redis 当下最最流行的缓存中间件,不废话,直接划重点 1、redis的几种数据结构 2、redis命令行接口的使用 3、redis编程接口的使用 4、redis的主从结构 5、SSM项目如何整合Redis,RedisTemplate和CacheManager等一些常见API的使用 实战:在整合了SSM框架的基础上,通过Spring把Redis也给整合进去,如何去写配置 9. rabbitmq 消息队列,除此之外还有activemq,这里只介绍rabbitmq,划重点 1、熟悉amqp协议 2、rabbitmq中几种交换机的区别和使用场景 3、rabbitmq的几种使用场景(削峰,异步,解耦) 4、rabbitmq的命令行接口和编程接口 5、SSM项目整合rabbitmq,熟悉AmqpTemplate,RabbitTemplate,MessageListener等API 实战:在整合SSM框架的基础上,通过Spring把Rabbitmq给整合进去,如何去写配置 10. zookeeper,dubbo 这两个放一块讲,zookeeper作为分布式协同中间件,平时用的比较多的地方算是在dubbo里面了,dubbo是阿里推出的一个RPC框架,dubbox是当当网在dubbo的基础上支持了RESTFUl接口,划重点。 1、zookeeper的数据结构 2、zookeeper的选主算法 3、zookeeper的命令行接口和编程接口 4、dubbo的流程,原理和配置,如何向注册中心注册 实战:在整合SSM框架的基础上,通过Spring将zookeeper和dubbo给整合进项目里,如何去写配置。 11. shiro 这东西严格来说不是中间件,算一个授权认证框架,还有Spring-Security也是,不过Spring-security比较重量级,一般会选择使用shiro,下面划重点。 1、整个shiro处理授权认证流程的架构都很重要 2、如何通过shiro过滤器代理web请求 3、如何开发自定义Realm 4、凭证匹配器 5、三种过滤器(FormAuthenticationFilter,UserFilter,LogoutFilter) 6、如何自定义过滤器 7、会话管理器(会话持久化) 8、缓存管理器(怎么去整合redis缓存) 9、rememberMe管理器 10、安全管理器 11、如何定义URL过滤规则 实战:在整合SSM框架的基础上,通过Spring将shiro给整合进项目里,如何去写配置,如何实现授权认证流程,如何进行权限管理 打架装 恭喜你现在不至于被别人秒了,刷了这么久,出点打架装去参团吧 12. Spring boot 上面在实战过程中,通过Spring去整合各种框架和中间件的xml配置是不是写得很头痛,现在有了一个更好得东西叫Spring boot,这个东西没别的,就是帮你解决以上配置繁琐的问题的。Spring boot是基于约定的配置和自动化配置。什么是约定的配置呢?比如,一般我们项目会设置端口为8080,所以他就帮你约定配置好了这个端口,你就不需要去配置端口了,当然你要想改为其他端口也还是可以改的。什么是自动化配置呢?比如Spring boot检测到你类路径下有Mybatis相关的类,那么他就会从你的properties中,去找数据库ip,用户,密码等,然后帮你把mybatis自动给配置好,有了这东西,你能从这些繁琐的配置中解放出来,而更关注于业务层面。 13. Spring Cloud 当下流行的一个微服务框架,以Spring boot项目为基础,划重点。 1、服务治理中心 2、微服务之间的互相调用(RestTemplate和Feign) 3、网关(zuul和gateway) 4、服务容错(降级和熔断的概念和实现) 5、服务追踪 6、消息总线 7、配置中心 8、Ribbon客户端负载均衡策略 9、分布式事务(敲黑板特别重点,期末要考) 14. Linux 说实话,我发现Java程序员很多连Linux都不会,这种现象在C/C艹程序员身上就少多了,并不是鄙视Java程序员,毕竟现在我自己也是一个Java程序员。这些东西还是有必要去学的,下面划重点。 1、目录文件的操作 2、软件的安装及配置 3、Linux系统的目录结构 4、Vi/Vim编辑器的使用 5、通过源码编译软件(有些软件根本就不提供二进制发行版,你不得不通过源码编译OpenCV、Redis) 6、进程的操作,网络的操作 7、《UNIX环境高级编程》选读,你能了解Linux C一些API,对Linux更了解 8、不同发行版的区别(主流的就三种系列Redhat,debian,arch) 15. docker 现在都是云原生应用,容器化部署,devops的热门,更是将docker推向高潮,最为一个开发人员,最基本的运维还是要懂的,其实你会Linux的话,docker简直如鱼得水,下面划重点。 1、docker基本的命令(拉取镜像,创建容器,commit镜像,push镜像) 2、dockerfile脚本的书写,如何去构建镜像 3、进入运行容器的几种方式(attach,exec,ssh等) 4、docker-compose编排docker服务,docker-compose.yml配置的书写 16. nginx 反向代理服务器,划重点。 1、反向代理和正向代理的区别和概念 2、nginx配置,如何转发请求 3、动静分离,负载均衡等概念 后期神装 三万敌法哪能一秒躺,那是你不会玩,40分钟六神出山carry吧 17. Java多线程 如果你看过Linux C多进程多线程编程,Java的多线程显得low多了,但还是不可否认他在Java生态中的重要性,划重点。 1、synchronized同步 2、lock同步 3、死锁问题 4、volatile关键字 5、线程状态的变化 6、线程组的概念 7、线程间的通信 18. JVM JVM虚拟机这东西全是重点,去看书死啃 19. 设计模式 敲黑板,特别中啊哟,期末要考,下面列一下常用的设计模式 1、单例模式 2、适配器模式 3、工厂模式 4、观察者模式 5、装饰器模式 6、代理模式 7、建造者模式 8、桥接模式 9、责任链模式 20. 数据结构与算法 这东西如银月之晶,前期刷出来站不住脚,后期补一个却能让辅助打大哥,当之无愧的神装 1、线性表(链表,对列,栈) 2、树(二叉树,排序二叉树,红黑树,B树,B+树,平衡二叉树,赫夫曼树) 3、森林(树和森林的转换) 4、图论(如何找最短路径) 5、各种排序算法 结束 好好看看吧,会对你有帮助,欢迎补充。
redis镜像 FROM debian:latest WORKDIR / RUN apt-get update && apt-get install -y redis-server RUN sed -i -e 's@bind 127.0.0.1@bind 0.0.0.0@g' /etc/redis/redis.conf RUN sed -i -e 's@protected-mode yes@protected-mode no@g' /etc/redis/redis.conf RUN sed -i -e 's@daemonize yes@daemonize no@g' /etc/redis/redis.conf RUN echo "requirepass 19960821" >> /etc/redis/redis.conf EXPOSE 6379 CMD ["redis-server","/etc/redis/redis.conf"] rabbitmq镜像 FROM debian:latest WORKDIR / RUN apt-get update && apt-get install -y erlang rabbitmq-server RUN rabbitmq-plugins enable --offline rabbitmq_management #RUN rabbitmq-server -detached &&\ #rabbitmqctl delete_user guest &&\ #rabbitmqctl add_user admin 19960821 &&\ #rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" &&\ #rabbitmqctl set_user_tags admin administrator EXPOSE 5672 EXPOSE 15672 CMD ["rabbitmq-server"] mysql或mariadb镜像 FROM debian:latest WORKDIR / RUN apt-get update && apt-get install -y mysql-client mysql-server RUN sed -i 's/^bind-address/#&/' /etc/mysql/mariadb.conf.d/50-server.cnf RUN /etc/init.d/mysql start &&\ mysql -e "grant all privileges on *.* to 'root'@'%' identified by '19960821' WITH GRANT OPTION;" &&\ mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by '19960821' WITH GRANT OPTION;" &&\ mysql -uroot -p19960821 -e "flush privileges;" EXPOSE 3306 CMD ["mysqld"] tomcat镜像 FROM java:latest WORKDIR / COPY ./apache-tomcat-9.0.16.tar.gz / RUN tar zxf apache-tomcat-9.0.16.tar.gz RUN mv apache-tomcat-9.0.16 /usr/local/tomcat RUN rm apache-tomcat-9.0.16.tar.gz ENV CATALINA_HOME=/usr/local/tomcat ENV CATALINA_BASE=/usr/local/tomcat ENV PATH=$CATALINA_HOME/bin:$PATH EXPOSE 8080 CMD ["catalina.sh", "run"] java环境镜像 FROM debian:latest WORKDIR / COPY ./jdk-8u202-linux-x64.tar.gz / RUN tar zxf jdk-8u202-linux-x64.tar.gz RUN mv jdk1.8.0_202 /usr/local/jdk RUN rm jdk-8u202-linux-x64.tar.gz ENV JAVA_HOME=/usr/local/jdk ENV JRE_HOME=$JAVA_HOME/jre ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH ENV PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
一、准备工作 1.下载Arch Linux镜像 2.用U盘刻录好 3.划分出一块空白的硬盘 4.在bios中设置从U盘启动 5.插好U盘,开机 二、开始安装 2.1 分区 说明:至少需要三个分区,EFI分区,根分区,交换分区 1.运行cfdisk命令新建EFI分区,分区类型选择GPT 2.运行fdisk命令新建根分区,和交换分区,分区类型都选择p主分区 3.不出意外,你的硬盘将会分为三个分区/dev/sda1,/dev/sda2,/dev/sda3 2.2 格式化分区 说明:EFI分区格式化fat格式,根分区格式化ext4格式,交换分区格式化swap格式 运行以下命令 mkfs.vfat -F32 /dev/sda1 mkfs.ext4 /dev/sda2 mkswap /dev/sda3 swapon /dev/sda3 #激活交换分区 2.3 挂载分区 说明:根分区挂载到/mnt下,EFI分区挂载到/mnt/boot/efi下,交换分区不需要挂载 运行以下命令 mount /dev/sda2 /mnt mkdir -p /mnt/boot/efi #新建efi目录 mount /dev/sda1 /mnt/boot/efi 2.4 安装基本系统 说明:一般安装base、base-devel这两个包,为了后续配置方便,可以顺便安装vim编辑器 运行以下命令 pacstrap -i /mnt base base-devel vim genfstab -p -U /mnt >> /mnt/etc/fstab 2.5 配置新系统 说明:Arch Linux是一款完全基于个人定制的Linux,可配置项很多,可根据自己需要进行配置,但下面几项配置几乎是新系统必须的:时区、网络、本地化、系统引导等。 改变root到新系统 arch-chroot /mnt /bin/bash 2.5.1 时区 设置时区和系统时钟 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime hwclock --systohc --utc 2.5.2 本地化配置 用vim编辑/etc/locale.gen,去掉en_US.UTF8、zh_CN.UTF8、zh_TW.UTF8前的注释 vim /etc/locale.gen locale-gen 创建locale.conf并编辑LANG这一变量 echo LANG=en_US.UTF-8 > /etc/locale.conf 2.5.3 网络配置 配置hostname,hosts文件 echo Arch >> /etc/hostname echo 127.0.0.1 localhost >> /etc/hosts echo ::1 localhost >> /etc/hosts echo 127.0.0.1 arch.localdomain arch >> /etc/hosts 设置dhcp服务开机自启 systemctl enable dhcpcd 2.6 改变root密码 passwd 2.7 安装系统引导 安装grub作为系统引导,命令如下 pacman -S grub efibootmgr grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub grub-mkconfig -o /boot/grub/grub.cfg 2.8 重启系统 exit umount /mnt/boot/efi umount /mnt reboot 三、安装桌面环境 通过以上步骤,基本系统已经安装好了,现在需要安装桌面环境和一些基本的驱动 3.1 安装xorg服务 pacman -S xorg-server xorg-server-utils#后面这个包好像现在没了,去掉也好像没问题 3.2 安装显卡驱动 核显 pacman -S xf86-video-intel 独显 pacman -S xf86-video-nouveau 3.3 安装触摸板驱动 pacman -S xf86-input-synaptics 3.4 安装常用字体 pacman -S ttf-dejavu wqy-microhei 3.5 安装桌面 以gnome桌面为例,需要安装kde或xfce等其他桌面环境的,可以参考Arch wiki pacman -S gnome gnome-extra gdm systemctl enable gdm 四、结束 至此为止,一个Arch Linux的基本的安装过程就结束了,开始Arch的入坑之旅吧。
数据卷是一个供容器使用的特殊目录,将主机目录映射到容器,类似于Linux的mount命令。 绑定数据卷 docker run -itd -v /data:/opt/data debian 等同 docker run -itd --mount type=bind,source=/data,destination=/opt/data debian 注意:源路径必须为绝对路径,对于windows作为宿主机的情况下,源路径只对用户目录生效C:\Users\**\** 数据卷容器 1.创建数据卷容器 docker run -itd -v /data --name data debian 2.在其他容器中挂载数据卷容器 docker run -itd --volumes-from data --name db1 debian 注意:删除挂载的容器(data,db1)数据卷不会自动删除,如果要删除数据卷,必须在最后一个挂载它的容器中使用docker rm -v