Java
文章平均质量分 55
inner_peace8
Software Engineer...每天只工作六小时
展开
-
数据存储-选择合适的数据存储方案
人工智能,零基础入门!http://www.captainbed.net/inner选择合适的数据存储方案关系型数据库 MySQLMySQL 是一个最流行的关系型数据库,在互联网产品中应用比较广泛。一般情况下,MySQL 数据库是选择的第一方案,基本上有 80% ~ 90% 的场景都是基于 MySQL 数据库的。因为,需要关系型数据库进行管理,此外,业务存在许多事务性的操作,需要保证事务的强一致性。同时,可能还存在一些复杂的 SQL 的查询。值得注意的是,前期尽量减少表的联合查询,便于后...原创 2021-03-01 08:23:21 · 1256 阅读 · 1 评论 -
缓存 - 缓存降级
人工智能,零基础入门!http://www.captainbed.net/inner页面降级在大促或者某些特殊情况下,某些页面占用了一些稀缺服务资源,在紧急情况下可以对其整个降级,以达到丢卒保帅;页面片段降级比如商品详情页中的商家部分因为数据错误了,此时需要对其进行降级;页面异步请求降级比如商品详情页上有推荐信息/配送至等异步加载的请求,如果这些信息响应慢或者后端服务有问题,可以进行降级;服务功能降级比如渲染商品详情页时需要调用一些不太重要的服务:相关分类、热销榜等,...原创 2021-02-10 11:23:42 · 910 阅读 · 1 评论 -
Netty - 说说业务中 Netty 的使用场景
人工智能,零基础入门!http://www.captainbed.net/inner构建高性能、低时延的各种 Java 中间件,例如 MQ、分布式服务框架、ESB 消息总线等,Netty 主要作为基础通信框架提供高性能、低时延的通信服务; 公有或者私有协议栈的基础通信框架,例如可以基于 Netty 构建异步、高性能的 WebSocket 协议栈; 各领域应用,例如大数据、游戏等,Netty 作为高性能的通信框架用于内部各模块的数据分发、传输和汇总等,实现模块之间高性能通信。...原创 2021-01-05 08:56:56 · 971 阅读 · 1 评论 -
Java 基础-双亲委派模型
人工智能,零基础入门!http://www.captainbed.net/inner类加载器加载类的开放性类加载器(ClassLoader)是 Java 语言的一项创新,也是 Java 流行的一个重要原因。在类加载的第一阶段“加载”过程中,需要通过一个类的全限定名来获取定义此类的二进制字节流,完成这个动作的代码块就是 类加载器。这一动作是放在 Java 虚拟机外部去实现的,以便让应用程序自己决定如何获取所需的类。虚拟机规范并没有指明二进制字节流要从一个 Class 文件获取,或者说根...原创 2020-12-08 19:33:01 · 294 阅读 · 1 评论 -
设计能力-说说概要设计
人工智能,零基础入门!http://www.captainbed.net/inner概要设计是一个设计师根据用户交互过程和用户需求来形成交互框架和视觉框架的过程,其结果往往以反映交互控件布置、界面元素分组以及界面整体板式的页面框架图的形式来呈现。这是一个在用户研究和设计之间架起桥梁,使用户研究和设计无缝结合,将对用户目标与需求转换成具体界面设计解决方案的重要阶段。概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划..原创 2020-10-11 23:24:33 · 322 阅读 · 1 评论 -
ThreadLocal原理和应用
人工智能,零基础入门!http://www.captainbed.net/inner一、ThreadLocal简单介绍首先,ThreadLocal是用来维护本线程的变量的,并不能解决共享变量的并发问题。ThreadLocal是各线程将值存入该线程的map中,以ThreadLocal自身作为key,需要用时获得的是该线程之前存入的值。如果存入的是共享变量,那取出的也是共享变量,并发问题还是存在的。简单看一下例子:public class TestThreadLocal { pri.原创 2020-08-01 07:56:06 · 377 阅读 · 1 评论 -
Netty-为什么选择 Netty
人工智能,零基础入门!http://www.captainbed.net/innerAPI 使用简单,开发门槛低; 功能强大,预置了多种编解码功能,支持多种主流协议; 定制能力强,可以通过 ChannelHandler 对通信框架进行灵活的扩展; 性能高,通过与其它业界主流的 NIO 框架对比,Netty 的综合性能最优; 成熟、稳定,Netty 修复了已经发现的所有 JDK NIO BUG,业务开发人员不需要再为 NIO 的 BUG 而烦恼; 社区活跃,版本迭代周期短,发现的BUG可以..原创 2020-07-02 09:05:20 · 406 阅读 · 1 评论 -
SSM实现支付宝支付功能
人工智能,零基础入门!http://www.captainbed.net/inner前言本教程详细介绍了如何使用ssm框架实现支付宝支付功能。本文章分为两大部分,分别是「支付宝测试环境代码测试」和「将支付宝支付整合到ssm框架」,详细的代码和图文解释,自己实践的时候一定仔细阅读相关文档,话不多说我们开始。支付宝测试环境代码测试源代码https://github.com/OUYANGSIHAI/sihai-maven-ssm-alipay1.下载电脑网站的官方demo:下载:h.原创 2020-05-18 11:11:55 · 823 阅读 · 1 评论 -
web项目前端上传文件给后端
人工智能,零基础入门!http://www.captainbed.net/inner1、前端给input的type为file,加上nameform的enctype=”multipart/form-data”请求方式为post2、后端后端@RequestParam(value = “file”, required = false) MultipartFile file接受...原创 2020-03-10 12:06:11 · 3226 阅读 · 1 评论 -
Java后端重定向实现
人工智能,零基础入门!http://www.captainbed.net/innerJava redirect 后台带参重定向到另一个接口如果重定向的这个接口是要传参数的,就用下面的这种方式来实现:【1】要重定向到的那个目标接口:// @ModelAttribute 注解接收@RequestMapping("work")public String workOrderQu...原创 2020-02-10 09:37:41 · 4173 阅读 · 1 评论 -
IDEA生成toString方法的快捷键
人工智能,零基础入门!http://www.captainbed.net/inner对于实体Bean类,比较多繁杂的重复代码内容,比如说get/set方法和toString方法,对于这些idea都是有快捷键的,介绍一下toString方法的自动生成:【1】把光标移到最下面:【2】按键盘alt + insert键,找到toString选项:【3】然后就自动生成了:...原创 2020-01-08 14:46:31 · 15982 阅读 · 3 评论 -
设置session过期时间
人工智能,零基础入门!http://www.captainbed.net/inner通过代码设置方式,其中60表示60秒:@RequestMapping("/login")@ResponseBodypublic Object login(HttpServletRequest request){ HttpSession session = request.getSessi...原创 2020-01-04 15:14:52 · 1183 阅读 · 1 评论 -
freemarker的下拉框回显
<label class="control-label"><span>部门领导</span></label><select class="form-control" name="deptmanager"> <option value="">请选择部门领导</option> <#list user...原创 2020-01-05 09:20:12 · 1635 阅读 · 1 评论 -
Freemarker日期格式化处理
人工智能,零基础入门!http://www.captainbed.net/inner基本参数:【1】date: 只显示日期,不显示时间 如${createTime?date} 或${createTime?date('yyyy-MM-dd')}【2】time: 只显示时间,不显示日期 如${createTime?time} 或${createTime?time('hh:mm...原创 2020-01-04 14:58:28 · 6398 阅读 · 1 评论 -
List把特定元素排在第一位
人工智能,零基础入门!http://www.captainbed.net/inner有的时候会有这样的需求,就是从数据库查出来的list要做一些处理,比如部门成员列表,产品要求你把部门经理排在第一位,这个时候就可以用集合工具类下的自带方法,做法:需要遍历集合,找到这个元素在集合中的位置,然后使用Collections.swap(list,o,i) (O:为元素目前所在位置,i:为要放置...原创 2020-01-04 14:56:13 · 11171 阅读 · 2 评论 -
idea配置SpringBoot项目热部署
人工智能,零基础入门!http://www.captainbed.net/inner第一步:添加依赖使用spring-boot-devtools提供的开发者工具spring-boot项目中pom.xml引入如下依赖<dependency> <groupId>org.springframework.boot</groupId> &...原创 2019-12-19 11:55:41 · 529 阅读 · 2 评论 -
freemarker模板添加表格自增行号
人工智能,零基础入门!http://www.captainbed.net/inner【1】 循环list<#list page.items as vo>【2】使用xx_index的脚标方式即可取得每个循环的下标(起始位是0),例如:${vo_index+1}...原创 2019-12-19 11:31:38 · 1617 阅读 · 1 评论 -
Mybatis框架insert语句返回主键id
人工智能,零基础入门!http://www.captainbed.net/inner在一些开发场景中,需要得到刚刚插入的数据的主键id,mybatis提供了这样的方法:用@Options注解这个主键是设置的,MySQL自增长的。...原创 2019-12-02 09:42:26 · 638 阅读 · 1 评论 -
什么是NIO
人工智能,零基础入门!http://www.captainbed.net/inner假设某银行只有10个职员。该银行的业务流程分为以下4个步骤:1) 顾客填申请表(5分钟);2) 职员审核(1分钟);3) 职员叫保安去金库取钱(3分钟);4) 职员打印票据,并将钱和票据返回给顾客(1分钟)。我们看看银行不同的工作方式对其工作效率到底有何影响。一:BIO方式每来...原创 2019-11-02 17:47:11 · 612 阅读 · 1 评论 -
SpringBoot注解梳理
人工智能,零基础入门!http://www.captainbed.net/inner一、注解(annotations)列表@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它...原创 2019-10-14 14:01:47 · 636 阅读 · 1 评论 -
开发人员常用的linux命令总结
人工智能,零基础入门!http://www.captainbed.net/inner后端开发人员有的时候需要经常和服务器打交道,比如查看日志啊,而服务器上的系统几乎是linux系统,所以需要掌握一些常见的linux命令,下面总结一些就开发人员可能常用的linux命令。一、文件目录命令1、查看当前位置下的所有文件(夹)以及文件信息(包含文件大小):ll2、查看当前位置下的所有文...原创 2018-09-01 13:04:39 · 193370 阅读 · 1 评论 -
如何设计权限管理模块?
人工智能,零基础入门!http://www.captainbed.net/inner我们比较常见的就是基于角色的访问控制,用户通过角色与权限进行关联。简单地说,一个用户拥有多个角色,一个角色拥有多个权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间、角色与权限之间,通常都是多对多的关系。如下图:基于这个,得先了解角色到底是什么?我们可以理解它为一定数...原创 2019-06-05 13:52:39 · 999 阅读 · 1 评论 -
13个SpringBoot优秀学习项目
人工智能,零基础入门!http://www.captainbed.net/innerSpring Boot 算是目前 Java 领域最火的技术栈了,也是Java开发人员不得不掌握的技术,整理13个优质 Spring Boot 开源项目。一、mall项目地址:https://github.com/macrozheng/mallmall项目是一套电商系统,包括前台商城系统及后台...原创 2019-05-23 09:17:58 · 3462 阅读 · 3 评论 -
JVM的组成
人工智能,零基础入门!http://www.captainbed.net/inner首先来说 JVM 的组成分为,整体组成部分和运行时数据区组成部分,一般开发者关注的和面试官问的都是后者一、JVM 整体组成JVM 整体组成可分为以下四个部分:1、类加载器(ClassLoader)2、运行时数据区(Runtime Data Area)3、执行引擎(Execution En...原创 2019-05-04 21:00:43 · 678 阅读 · 1 评论 -
Maven使用总结
人工智能,零基础入门!http://www.captainbed.net/inner在如今的互联网项目开发当中,特别是Java领域,可以说Maven随处可见。Maven的仓库管理、依赖管理、继承和聚合等特性为项目的构建提供了一整套完善的解决方案,可以说如果你搞不懂Maven,那么一个多模块的项目足以让你头疼,依赖冲突就会让你不知所措,甚至搞不清楚项目是如何运行起来的.....OK,博主就曾...原创 2019-04-13 10:34:10 · 102120 阅读 · 1 评论 -
数据库的三种时间类型
人工智能,零基础入门!http://www.captainbed.net/inner数据库的时间类型Mysql中经常用来存储日期的数据类型有三种:Date、Datetime、Timestamp。【1】Date数据类型:用来存储没有时间的日期。Mysql获取和显示这个类型的格式为“YYYY-MM-DD”。支持的时间范围为“1000-00-00”到“9999-12-31”。【2】Dat...原创 2019-04-01 21:25:18 · 183448 阅读 · 6 评论 -
智力题-猜帽子
人工智能,零基础入门!http://www.captainbed.net/inner智力题:在一个房间有4个小孩,2个戴黑帽,2个戴白帽,但他们都不知道自己戴的是什么颜色的帽子。A与B、C、D之间有一堵墙,所以看不到他们。同时A、B、C、D都不能摘下帽子看,也不能回头看。片刻后,4个小孩中有人猜中了自己的帽子的颜色。请问A、B、C、D究竟是谁猜中了?理由是什么?答案解析:使用排除法...原创 2019-04-01 21:22:39 · 124833 阅读 · 1 评论 -
redis实现分页查询
人工智能,零基础入门!http://www.captainbed.net/innerredis中的一个数据类型:listlist用于存放类似粉丝列表、文章的评论列表之类的东西,list类型实现数据分页查询,通过lrange命令,读取某个闭区间内的元素,如下:# 0开始位置 3结束位置lrange mylist 0 3...原创 2019-04-01 21:20:50 · 122687 阅读 · 3 评论 -
优化你的SpringBoot
人工智能,零基础入门!http://www.captainbed.net/inner介绍在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢?1、方便微服务部署。2、方便项目启动,不需要下载Tomcat或者Jetty针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点1、线程数2、超时时间...原创 2019-06-05 13:59:05 · 633 阅读 · 1 评论 -
SpringBoot为mybatis配置驼峰命名方式
人工智能,零基础入门!http://www.captainbed.net/inner驼峰命名,Javabean的实体属性命名特点,例如userName但是在数据库里面,字段名一般会这样命名:user_name,为了把他们配合映射起来,就要加上下面的这个配置。在application.properties配置文件中加上:mybatis.configuration.map...原创 2019-07-20 10:41:28 · 1714 阅读 · 1 评论 -
maven打包项目时候报错:非法字符
人工智能,零基础入门!http://www.captainbed.net/inner这种代码没问题的,多半是乱码导致的。[ERROR] [解析开始时间D:\workspace\src\main\java\com\service\ProcessCenterUpdateServiceImpl.java][ERROR]D:\workspace\\src\main\java\com\\s...原创 2019-07-20 11:02:58 · 1349 阅读 · 1 评论 -
HttpServletrequest 与HttpServletResponse总结
人工智能,零基础入门!http://www.captainbed.net/inner如果说DOM是javascript与HTML的桥梁,那么servlet就是前端与后端的桥梁,HttpServletRequest和HttpServletResponse就是之间的信使,好了,废话不多说!由来 Web服务器收到一个http请求,会针对每个请求创建一个HttpServletReque...原创 2019-07-20 11:06:09 · 395 阅读 · 1 评论 -
通过maven-war-plugin插件对war包分环境打包
人工智能,零基础入门!http://www.captainbed.net/inner针对多环节,从源头打包入手,当然这些都可以在运维阶段用脚本进行替换来代替resources/environment/下有四个环境,local本地、dev开发、test测试、pre预上线、prod生产,打包命令如下:# 本地mvn clean package -P local# 开发mvn...原创 2019-08-03 10:14:09 · 808 阅读 · 1 评论 -
redis的三种启动方式
人工智能,零基础入门!http://www.captainbed.net/innerredis的启动方式1.直接启动 进入redis根目录,执行命令: #加上‘&’号使redis以后台程序方式运行 1 ./redis-server & 2.通过指定配置文件启动 可以为redis服务启动指定配置文件,例如配置为/...原创 2019-08-03 10:18:31 · 439 阅读 · 1 评论 -
Redis持久化的几种方式
人工智能,零基础入门!http://www.captainbed.net/inner一、前言Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。Redi...原创 2019-09-25 14:42:11 · 613 阅读 · 1 评论 -
tomcat和jetty的区别
人工智能,零基础入门!http://www.captainbed.net/inner1、Jetty更轻量级。这是相对Tomcat而言的。由于Tomcat除了遵循Java Servlet规范之外,自身还扩展了大量JEE特性以满足企业级应用的需求,所以Tomcat是较重量级的,而且配置较Jetty亦复杂许多。但对于大量普通互联网应用而言,并不需要用到Tomcat其他高级特性,所以在这种情...原创 2019-09-26 09:19:30 · 1057 阅读 · 1 评论 -
APP版本升级后台接口兼容旧版本
人工智能,零基础入门!http://www.captainbed.net/inner公司开发APP,经常会有版本升级的情况,因此会出现新版本如何兼容旧版本的问题。iOS和android 不断有新的版本开发,很多服务端开发都是在以前接口的逻辑上进行修改,新的APP版本发布后,老的APP版本如何兼容接口?有人说:每次发布完APP,就强制用户更新到最新版本 不就完了。现在确实有的公司这...原创 2019-09-27 14:16:45 · 6168 阅读 · 5 评论 -
Java Serializable:明明就一个空的接口嘛
人工智能,零基础入门!http://www.captainbed.net/inner对于 Java 的序列化,我一直停留在最浅显的认知上——把那个要序列化的类实现Serializbale接口就可以了。我不愿意做更深入的研究,因为会用就行了嘛。但随着时间的推移,见到Serializbale的次数越来越多,我便对它产生了浓厚的兴趣。是时候花点时间研究研究了。01、先来点理论...原创 2019-10-11 11:15:24 · 565 阅读 · 1 评论 -
Java获取浏览器请求头(User-Agent)信息,分析浏览器和系统信息
人工智能,零基础入门!http://www.captainbed.net/inner我们通常采用Request相关对象来获取请求信息(User-Agent),如下获取信息。String ua = request.getHeader("User-Agent");//得到的信息:User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) Appl...原创 2019-04-01 10:21:41 · 123705 阅读 · 3 评论 -
SpringBoot设置接口超时时间
人工智能,零基础入门!http://www.captainbed.net/innerSpringBoot设置接口访问超时时间有两种方式一、在配置文件application.properties中加了spring.mvc.async.request-timeout=20000,意思是设置超时时间为20000ms即20s,二、还有一种就是在config配置类中加入:public ...原创 2019-04-01 09:33:45 · 174822 阅读 · 5 评论