快乐开发
能力说明:
掌握封装、继承和多态设计Java类的方法,能够设计较复杂的Java类结构;能够使用泛型与集合的概念与方法,创建泛型类,使用ArrayList,TreeSet,TreeMap等对象掌握Java I/O原理从控制台读取和写入数据,能够使用BufferedReader,BufferedWriter文件创建输出、输入对象。
阿里云技能认证
详细说明为什么要锻炼 在椅子上坐了大半天,不知道是吃的饭不合适等缘故还是喝水不足的缘故,有那么一瞬间感觉到浑身内脏湿漉漉的,仿佛外面包裹了一层黄油,哇好恶心,我怎么能说出这种话,不过真的整个人感觉不舒服,后来我想了下人的生命周期中,哪个是最核心的部分,对,是血液!最后我的大脑一致认为,是血液没有很好的执行监听内脏的任务,因为它的进程好像并没有那么活跃。
1. 执行命令 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 该命表示把Centos-7.repo下载到/etc/yum.repos.d/目录下,如果该目录下有CentOS-Base.repo,则会自动覆盖。
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中的消息。
在前面讲解synchronize的文章中,有提到wait和notify,大概描述了它的使用,这里我将根据官方api详细的教你如何使用。 所属对象 wait,notify,notifyAll 是定义在Object类的实例方法,用于控制线程状态。
锁降级指当前线程把持住写锁再获取到读锁,随后释放先前拥有的写锁的过程。 概念网上有很多,随便一查一大堆,我就不多浪费大家时间。 为什么要锁降级? 主要原因:读锁是共享锁。
什么是互斥锁? 在访问共享资源之前对进行加锁操作,在访问完成之后进行解锁操作。 加锁后,任何其他试图再次加锁的线程会被阻塞,直到当前进程解锁。 如果解锁时有一个以上的线程阻塞,那么所有该锁上的线程都被编程就绪状态, 第一个变为就绪状态的线程又执行加锁操作,那么其他的线程又会进入等待。
在java的锁机制中,公平和非公平的参考物是什么,个人而言觉得是相对产生的结果而立,简单的来说,如果一个线程组里,能保证每个线程都能拿到锁,那么这个锁就是公平锁。
Java并发编程 -- AQS可能会看的一脸懵逼,今天实战一个项目练手AQS MyAQSLock.java /** * Created by Fant.
AbstractQueuedSynchronizer是为实现依赖于先进先出 (FIFO) 等待队列的阻塞锁和相关同步器(信号量、事件,等等)提供的一个框架。
页面缓存 1. freemarker 的页面静态化 application.properties 配置实现浏览器缓存 # SPRING RESOURCES HANDLING ([ResourceProperties](https://github.
删除脚本 #!/bin/bash rm -rf ./ip* 复制脚本 #!/bin/bash cp ./ip-user-server/target/*.
这篇文章只写给主键用uuid并且用jpa的小伙伴。 1. 数据实体类 @Entity @Table(name = "ip_user") @GenericGenerator(name = "jpa-uuid", strategy = "uuid") ...
偶然碰到一个需要给xml传一个String类型和一个Integer类型的需求,当时心想用map感觉有点太浪费,所以专门研究了下各种方式。 方法一:不需要写parameterType参数 public List getXXXBeanList(String xxId, String xxCode); select t.
这个报错是因为用到的一些类没有序列化造成的,这个错误是由于我service用到了一些工具类,工具类没有实例化造成的。 只要是需要注册到dbbo上的每一个对象都需要做序列化。
申请免费证书 神奇?为什么我找不到你这个页面?别着急 正确的姿势是:倒着往上点,symantec---单个域名----免费型 申请完后需要填写表(点击补全) 如果你的域名就是阿里云解析的,那么打个勾会更方便 填写完后提交,等待几分钟就ok了。
为什么要弄私有仓库,大多是为了速度,我们再私有仓库中的push和pull的速度是特别快的。 利用registry快速搭建 https://hub.docker.
列出镜像列表 docker images 获取新的镜像 docker pull centos:7.0 查找镜像 docker search httpd 更新镜像 docker commit -m="提交的信息" -a="作者" e218edb10...
阿里云加速 [root@FantJ ~]# tee /etc/docker/daemon.json "registry-mirrors": ["https://wghlmi3i.
我的安装环境是CentOS7.x 安装 安装命令:wget -qO- https://get.docker.com | sh或者yum -y install docker-io 安装完成.png 图片中说,如果你想不用root用户来使用docker,你要考虑添加你的用户到docker 组,命令如下:sudo usermod -aG docker your-user,我在这里不演示,我用root用户。
这种报错一般是因为nginx用户权限不足引起的。 1. 查看日志 打开nginx.conf 配置文件,查看日志位置。 2. 访问让它报错: 3. 修改目录权限 我们看到了它报错无权限,因为我的nginx用户是ftpuser,所以我在/var/lib下执行chown -R ftpuser:ftpuser nginx/修改目录所属用户。
大多是编码有问题,解决方案:file->setting->File Encoding 什么?还不对? 打开项目根目录.idea->encoding.
JPA又自己的Pageable来帮助我们实现分页,Mybatis有PageHelper帮我们实现分页,下面直接贴代码。 1. 用JPA实现分页 1.1 pom添加依赖 org.springframework.boot spring-boot-starter-data-jpa 其实就是JPA的依赖。
最近在做一个分布式的web系统,用的boot+dubbo,中间碰到不少坑,最近碰到的坑可是坑了我三四天,把坑都给大家捎带分享一下,希望能少走弯路。 1. 坑一:与jpa的不兼容 如果你想写这样的jpasql @Query("select g.userIdentity from GroupMembers g where g.userId=?1 and g.groupId=?2") int selectIndentity(Integer userId,Integer groupId); 恭喜你,你可以成功的运行它。
在教程一中我们只实现了在jenkins容器中的打包和结果通知,这节教程将用一个ssh工具将我们package完的项目上传到我们的服务器中。 1. 安装插件 Publish over SSH 完了点击直接安装 2. 插件的系统配置 配置完成后测试一下: 3. 插件的工程配置 最后一个框是在服务器运行什么脚本。
个人不喜欢装腔作势一堆专业术语放上去,让大多数人看不懂来提升逼格(所谓的专家),所以我简单的介绍jenkins是干啥的。本文使用jenkins,就是让它把git仓库里的东西取出来,然后在jenkins容器中编译打包,然后执行脚本,可以是运行jar等,根据自身情况量身定制脚本。
1. 快速实现篇(实现最基本的登录): SpringSecurity 快速实现项目 2. 企业级封装篇 我的 Spring Security 文集 SpringBoot 整合 Security(一)实现用户认证并判断返回json还是view Spri...
什么是jwt,即 json web token。JWT是一种用于双方之间传递安全信息的简洁的、URL安全的表述性声明规范。也是一种token,但是和token有一些不同。
为什么需要给token做持久化,试想如果存储token的服务器宕机后,用户信息也会伴随着失效,用户需要重新登陆来获取token,难免降低了用户体验,所以我们需要像处理session分布式一样,将token持久化。
关于session和token的使用,网上争议一直很大。 总的来说争议在这里: session是空间换时间,而token是时间换空间。session占用空间,但是可以管理过期时间,token管理部了过期时间,但是不占用空间. sessionId失效问题和token内包含。
/** * Created by Fant.J. */ public class CheckFormat { public static boolean isEmail(String email){ String check = "^([a-z0-9A-Z]+[-|_|\\.
我的开发环境:IDEA+maven+jdk1.8 1.下载idea插件GsonFormat 2. 添加依赖 该插件支持的json序列化工具: 我在这里用阿里的fastJson 依赖,想用gson、jackson的都可以,插件都支持 com.
因为我们不能直观的看到dubbo和zk上到底有什么服务(提供者),所以我们需要一个可视化工具来方便我们管理每一个服务和每一个节点。 先上个成功后的监控图: 示例环境 maven 3.x jdk 1.8 tomcat 1.8 idea 2018 git 1.克隆项目 apache 下的dubbo-admin git仓库 :https://github.com/apache/incubator-dubbo-ops 我们需要先把这个项目用git克隆到本地中。
为什么要有文件服务器呢,如果把文件存放到web容器下肯定不是好的办法,因为你时刻需要注意覆盖后文件消失的问题。如果想完全的搬出web容器,项目不大的话我们可以选择ftp+nginx的方式来实现文件服务器。
1. 安装 Zookeeper 环境 Zookeeper 环境搭建&zk命令详解 2. 服务提供者 因为用了父工程的版本管理,所以这里没有显示版本,我把用到的版本给大家分享下。
1. 安装 1.1 下载zookeeper 下载网址:http://www.apache.org/dyn/closer.cgi/zookeeper 1.2.
1. mysql Error 1040 too many connection 当最大连接数比较小时,可能会出现“1040 too many connection”错误。
1. 启动项目报错 Not a managed type: class com.xzxx 这种问题一般出在多模块开发中的依赖传递导致的问题,该问题的原因是启动类找不到对应的bean。
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
vsftpd 安装 1. 安装 执行yum -y install vsftpd进行安装,默认配置文件再/etc/vsftpd/vsftpd.conf下 添加匿名用户:useradd ftpuser -d /ftpfile -s /sbin/nologin 修改ftpfile权限 :chown -R ftpuser.ftpuser /ftpfile 重设ftpuser 密码:passwd ftpuser 给/ftpfile(ftpuser的用户目录)下创建子目录/ftp,并赋予777权限。
在上一节的基础上,我们再给项目加入验证码模块,security并没有现成的给我们实现这部分功能,所以我们就需要手写过滤器来实现它。这节题目看上去和第一节没什么关系,但是思想大同小异,希望可以耐心的看,毕竟我尽力的去往清楚的写。
看这篇文章的我默认都认为是有security基本基础的,因为封装的缘故,没有基础的话很容易被绕晕。但是只要认真看,我相信没什么大问题,如果仅仅是会用,该教程让你更熟悉底层实现,更优雅的写代码。
WireMock 是基于 HTTP 的模拟器。它具备 HTTP 响应存根、请求验证、代理/拦截、记录和回放功能。 当开发人员的开发进度不一致时,可以依赖 WireMock 构建的接口,模拟不同请求与响应,从而避某一模块的开发进度。
最近 IDEA 发布支持 java10的新版本。 Java10 简介: 详细版本更新特性请查看国外的一篇文章:https://www.azul.com/109-new-features-in-jdk-10/ 我在这里只简单的介绍 最热的一个特性:局...
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36367789/article/details/79732868 整合Mybatis分为两种模式,一种是xml配置,一种是注解。
1. DTO的使用 如果你的controller代码写成这样 @RequestMapping("/user") public List query(@RequestParam String username, ...
日常我们开发完后端接口,如果是返回restful,写API文档是免不了的,Swagger可以帮我们解决大多数问题(自动生成API文档)。 他会帮我们生成一个html页面,大概就是这个样子。
Java 9 和Spring Boot 2.0纷纷宣布支持的HTTP/2到底是什么?
我们都知道spring只是为我们简单的处理线程池,每次用到线程总会new 一个新的线程,效率不高,所以我们需要自定义一个线程池。 本教程目录: 自定义线程池 配置spring默认的线程池 1.
如果一个项目总用单线程来跑,难免会遇到一些性能问题,所以再开发中,我们应该尽量适量的使用多线程(在保证线程安全的情况下)。 本教程大概目录: 模拟单线程情节 用Callable实现 并发编程 用DeferedResult实现异步处理 模拟单线程情节 /** * Created by Fant.
有啥不懂的或者出错的可以在下面留言。 1. 文件上传 //上传路径 String folder = "C:\\code\\springboot-springsecurity\\security-demo\\src\\main\\java...