毕业纪念
2014年10月大半夜 打了个的就是为了去看这个 大提琴
2015年03月
冒着被宿管打死的危险,煮了一波元宵🥘
三个追风少年🤪
小小的孔明灯放飞梦想🛫
老大辛苦了,也没有白白浪费你一米九二的个子。🤣
2015年04月爱 健身 的室友🥱
2015年06月咦!。。。🤣
2015年11月
你这线接的,你确定老师不来打你嘛 (背景那个人怎么回事)
天气确实有点冷 (这张照片差点被老大打死)
2015年12月
睡的香吗,又熬夜打游戏了吧
2015年的最后一天
2016年3月这个比赛我们学校可神气了
2016年5月
花式秀技术👍
可爱不🤣
...
Docker(二)基础使用
一、基础配置命令12345678# 查看所有容器docker ps -a# 查看运行中的容器docker ps# 启动容器docker start 容器名或ID# 进入容器docker attach 容器名或ID
dokcer run命令1234567891011121314151617181920212223242526272829303132333435363738394041424344454647docker run <相关参数> <镜像 ID> <初始命令>-i:表示以“交互模式”运行容器-t:表示容器启动后会进入其命令行-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] -d, --detach=false 指定容器运行于前台还是后台,默认为false -i, --interactive=false 打开STDIN,用于控制台交互 -t, ...
Docker(一)安装和配置
前言:Docker这个名称大家估计已经不陌生了吧,在我大三的时候就听说过这个,也研究过一阵子,也就知道点皮毛,现在由于线上服务器资源紧张,本地搭建虚拟机也过于浪费,所以这段时间好好研究一下Docker技术,也为后面的后端开发提供各种环境保障,比如服务器集群,es,Nginx等等。
从上面的图像就可以看到,一个大鲸鱼上面有好多集装箱,大鲸鱼就好像是我们的产品(大容器),集装箱就是一个个服务器。
下面看看传统虚拟机和Docker架构的区别:
从上面的两张图片可以看出,传统的虚拟机架构和Docker体系架构的区别是,在传统的虚拟机中有一层虚拟机操作系统,而Docker却没有。所以Docker的启动速度和存储空间远远优于传统的虚拟机。
下面大家看看Docker官方的架构图:
windows安装1、使用的软件http://mirrors.aliyun.com/docker-toolbox/windows/
docker-for-windows适合于在win10上面使用,默认使用的是win10自带的虚拟机软件Hyper,直接安装即可,提供官方的账号登录。
docker-toolbox加载b ...
谈谈线程
前言关于Java 的线程问题,我们上大学的时候,计算机专业的学生肯定会遇到这两个名词–线程和进程,老师和我们说一个进程里面可以有多个线程,这里也引出了多线程的概念。可以看一看下面这张图
提到Java中的线程,我们就会想到Thread以及Runnable,也了解了Thread的生命周期,请看下图:
相信大家也写过关于线程的小程序,比如卖火车票啊,生产者消费者模式等。我们使用到了synchronized加锁技术(或者使用Lock方法),也用到了关于线程通知,等待任务的notifyAll()和wait()方法。更多的使用大家找一本大书去看吧,比如《Java核心技术》什么的,Java基础不是本文的重点。下面我们谈谈线程池和多线程的原理和使用,以及整合springboot框架。
一、线程池在多线程任务环境中,每次开启一个任务,我们把它提交到线程池中,交给线程池来管理,由线程池来调度任务。如果每次开启任务都要创建一个线程,那么对于大量任务的环境下,服务器资源将会很快耗尽,不仅对服务是一个灾难,对于用户体验来说也是一个灾难。此时,我们来谈谈Java中线程池技术。
1、线程池种类(1)newSin ...
springboot整合定时框架-Elastic-job-lite
一、前言本文Github地址
官网地址
当当网张亮主导开发的分布式任务调度框架,结合zookeeper技术解决quartz框架在分布式系统中重复的定时任务导致的不可预见的错误!
123Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务;Elastic-Job-Cloud采用自研Mesos Framework的解决方案,额外提供资源治理、应用分发以及进程隔离等功能。
二、SpringBoot整合
官网给的例子是基于spring xml来的,有兴趣的可以去看看,我们的项目采用springboot框架,所以要修改一些东西,比如修改为使用@Bean的方式来启动配置
1、pom配置1234567891011121314151617181920212223<!--框架核心jar包--><dependency> <groupId>com.github.ku ...
SpringBoot整合常用技术
模板地址
前言 Spring Boot是目前大火的Java后端框架,遵循着“约定大于配置”的规则,可以快速开发后台,摆脱SSM框架的各种xml配置,开箱即用,快速部署。依靠着spring的强大社区,框架中集成了各种优秀的第三方框架。
一、逆向生成model、mappermaven的配置1、首先引入依赖1234567891011121314151617181920212223242526272829303132333435<!--整合mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency> <!--mapper--> <dependency> <groupId&g ...
SpringBoot整合Quartz实现定时任务(单任务、多任务)
前言
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs
一、添加依赖12345678910111213141516171819202122232425262728293031<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</ ...
Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)
一、Spring Cloud Eureka
Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。而Spring Cloud Netflix项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。
1、创建“服务注册中心”-添加依赖
1234567891011121314151617181920212223242526<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <ver ...
SpringSession(Springboot版本)
特性:
使用GemFire来构建C/S架构的httpSession(不关注)
使用第三方仓储来实现集群session管理,也就是常说的分布式session容器,替换应用容器(如tomcat的session容器)。仓储的实现,Spring Session提供了三个实现(redis,mongodb,jdbc),其中redis使我们最常用的。程序的实现,使用AOP技术,几乎可以做到透明化地替换。(核心)
可以非常方便的扩展Cookie和自定义Session相关的Listener,Filter。
可以很方便的与Spring Security集成,增加诸如findSessionsByUserName,rememberMe,限制同一个账号可以同时在线的Session数(如设置成1,即可达到把前一次登录顶掉的效果)等等
本文的例子使用springsession结合redis实现session的缓存,解决单点登录的分布式session存储问题
1、添加依赖123456789<dependency> <groupId>org.springframework.boot& ...
JWT登录信息加密
1、背景对于传统的单点登录系统,使用cookie和session的方式存储用户登录信息,但是对于安全性要求较高的企业–金融企业,就需要对用户的信息进行加密存储,防止客户信息泄露。
2、JWT构成JWT—-JSON Web Token
第一部分我们称它为头部(header)
123456789完整的头部就像下面这样的JSON:{"typ": "JWT", //声明类型,这里是jwt"alg": "HS256" //声明加密的算法 通常直接使用 HMAC SHA256}
第二部分我们称其为载荷(payload)
12345678载荷就是存放有效信息的地方。这个名字像是特指飞机上承载的货品,这些有效信息包含三个部分标准中注册的声明公共的声明私有的声明
12345678910111213141516标准中注册的声明 (建议但不强制使用) :iss: jwt签发者sub: jwt所面向的用户aud: 接收jwt的一方exp: jwt的过期时间,这个过期时间必须要大于签发时间nbf ...