- 博客(116)
- 资源 (8)
- 收藏
- 关注
原创 数据存储-选择合适的数据存储方案
人工智能,零基础入门!http://www.captainbed.net/inner选择合适的数据存储方案关系型数据库 MySQLMySQL 是一个最流行的关系型数据库,在互联网产品中应用比较广泛。一般情况下,MySQL 数据库是选择的第一方案,基本上有 80% ~ 90% 的场景都是基于 MySQL 数据库的。因为,需要关系型数据库进行管理,此外,业务存在许多事务性的操作,需要保证事务的强一致性。同时,可能还存在一些复杂的 SQL 的查询。值得注意的是,前期尽量减少表的联合查询,便于后...
2021-03-01 08:23:21
1333
1
原创 缓存 - 缓存降级
人工智能,零基础入门!http://www.captainbed.net/inner页面降级在大促或者某些特殊情况下,某些页面占用了一些稀缺服务资源,在紧急情况下可以对其整个降级,以达到丢卒保帅;页面片段降级比如商品详情页中的商家部分因为数据错误了,此时需要对其进行降级;页面异步请求降级比如商品详情页上有推荐信息/配送至等异步加载的请求,如果这些信息响应慢或者后端服务有问题,可以进行降级;服务功能降级比如渲染商品详情页时需要调用一些不太重要的服务:相关分类、热销榜等,...
2021-02-10 11:23:42
974
1
原创 Netty - 说说业务中 Netty 的使用场景
人工智能,零基础入门!http://www.captainbed.net/inner构建高性能、低时延的各种 Java 中间件,例如 MQ、分布式服务框架、ESB 消息总线等,Netty 主要作为基础通信框架提供高性能、低时延的通信服务; 公有或者私有协议栈的基础通信框架,例如可以基于 Netty 构建异步、高性能的 WebSocket 协议栈; 各领域应用,例如大数据、游戏等,Netty 作为高性能的通信框架用于内部各模块的数据分发、传输和汇总等,实现模块之间高性能通信。...
2021-01-05 08:56:56
1009
1
原创 Java 基础-双亲委派模型
人工智能,零基础入门!http://www.captainbed.net/inner类加载器加载类的开放性类加载器(ClassLoader)是 Java 语言的一项创新,也是 Java 流行的一个重要原因。在类加载的第一阶段“加载”过程中,需要通过一个类的全限定名来获取定义此类的二进制字节流,完成这个动作的代码块就是 类加载器。这一动作是放在 Java 虚拟机外部去实现的,以便让应用程序自己决定如何获取所需的类。虚拟机规范并没有指明二进制字节流要从一个 Class 文件获取,或者说根...
2020-12-08 19:33:01
325
1
原创 设计能力-你如何进行领域建模
人工智能,零基础入门!http://www.captainbed.net/inner运用四色建模法进行领域分析领域建模有很多种方法,对于同样的问题域使用不同的建模手段得到的模型可能也不尽相同。于是我经常听到这样一个问题:怎么才能保证建模的正确性?这听起来是个合理的质疑,但实际上却不是那么有道理。首先我们需要明白建模的目的是什么?如果仅仅是为了描画问题,那么并没有什么对错之分——仅仅是立场和角度的差别;而如果是为了企业业务系统而进行建模,那么这个问题应该变为:如何保证模型能够支撑企业的运营...
2020-11-03 10:09:56
623
1
原创 设计能力-说说概要设计
人工智能,零基础入门!http://www.captainbed.net/inner概要设计是一个设计师根据用户交互过程和用户需求来形成交互框架和视觉框架的过程,其结果往往以反映交互控件布置、界面元素分组以及界面整体板式的页面框架图的形式来呈现。这是一个在用户研究和设计之间架起桥梁,使用户研究和设计无缝结合,将对用户目标与需求转换成具体界面设计解决方案的重要阶段。概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划..
2020-10-11 23:24:33
343
1
原创 在linux服务器安装部署Nginx
人工智能,零基础入门!http://www.captainbed.net/inner1:安装工具包 wget、vim和gccyum install -y wget yum install -y vim-enhanced yum install -y make cmake gcc gcc-c++ 2:下载nginx安装包wget http://nginx.org/download/nginx-1.6.2.tar.gz3:安装依赖包yum install -y pc..
2020-09-01 08:23:41
449
2
原创 ThreadLocal原理和应用
人工智能,零基础入门!http://www.captainbed.net/inner一、ThreadLocal简单介绍首先,ThreadLocal是用来维护本线程的变量的,并不能解决共享变量的并发问题。ThreadLocal是各线程将值存入该线程的map中,以ThreadLocal自身作为key,需要用时获得的是该线程之前存入的值。如果存入的是共享变量,那取出的也是共享变量,并发问题还是存在的。简单看一下例子:public class TestThreadLocal { pri.
2020-08-01 07:56:06
410
1
原创 Netty-为什么选择 Netty
人工智能,零基础入门!http://www.captainbed.net/innerAPI 使用简单,开发门槛低; 功能强大,预置了多种编解码功能,支持多种主流协议; 定制能力强,可以通过 ChannelHandler 对通信框架进行灵活的扩展; 性能高,通过与其它业界主流的 NIO 框架对比,Netty 的综合性能最优; 成熟、稳定,Netty 修复了已经发现的所有 JDK NIO BUG,业务开发人员不需要再为 NIO 的 BUG 而烦恼; 社区活跃,版本迭代周期短,发现的BUG可以..
2020-07-02 09:05:20
445
1
原创 rocketmq如何实现分布式事务
人工智能,零基础入门!http://www.captainbed.net/inner如果同一个数据源在本地事物很好控制,但是在不断发展的互联网环境下,微服务越来越流行,这个时候,需要解决分布式事物,需要保证数据的最终一致性。所谓分布式事务(全局事物),就是在两个不同的系统中(即两个不同的数据源,其实同一个数据源也行),无法同一个同一个spring事物去控制不同系统的事物的整体成功或者整体失败。分布式事务的解决方法很多,但是性能和复杂性不一样,今天说说rocketmq如何保证分布式事务的。r.
2020-06-02 10:42:15
795
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
854
1
原创 为什么alert语句总是优先于上一条语句执行?
人工智能,零基础入门!http://www.captainbed.net/inner代码如下:right_out.onclick = function(){ var lis = ul.getElementsByTagName('li'); var temp = lis[lis.length-1].innerHTML; ul.removeChild(lis[lis.l...
2020-04-01 10:49:51
1200
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
3260
1
原创 Java后端重定向实现
人工智能,零基础入门!http://www.captainbed.net/innerJava redirect 后台带参重定向到另一个接口如果重定向的这个接口是要传参数的,就用下面的这种方式来实现:【1】要重定向到的那个目标接口:// @ModelAttribute 注解接收@RequestMapping("work")public String workOrderQu...
2020-02-10 09:37:41
4246
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
16663
3
原创 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
1671
1
原创 设置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
1216
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
6822
1
原创 List把特定元素排在第一位
人工智能,零基础入门!http://www.captainbed.net/inner有的时候会有这样的需求,就是从数据库查出来的list要做一些处理,比如部门成员列表,产品要求你把部门经理排在第一位,这个时候就可以用集合工具类下的自带方法,做法:需要遍历集合,找到这个元素在集合中的位置,然后使用Collections.swap(list,o,i) (O:为元素目前所在位置,i:为要放置...
2020-01-04 14:56:13
11363
2
原创 SQL查询某一字段重复的数据
人工智能,零基础入门!http://www.captainbed.net/innerSQL查询某一字段重复的数据:SELECT user_id FROM user_info GROUP BYuser_id HAVING COUNT(user_id) > 1;
2020-01-04 14:50:27
1912
2
原创 Java代码规范
人工智能,零基础入门!http://www.captainbed.net/inner现在的企业开发项目,都是团队协作开发,因为大型的项目都是按模块来分工的,有可能就是某一个模块就是专门由某个组员来开发的。但是经常可能会出现跨模块调用其他人写的代码的情况,或者说是工作交接或者交叉原因,你要去看别人的代码,熟悉他的代码。这个时候就很头疼了,因为不同的人的代码习惯或者风格又不一样,你可能很看不惯...
2019-12-23 08:54:07
191140
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
560
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
1658
1
原创 Springboot项目的接口防刷
人工智能,零基础入门!http://www.captainbed.net/inner说明:使用了注解的方式进行对接口防刷的功能,高大上,供参考。技术要点:springboot的基本知识,redis基本操作首先是写一个注解类:importjava.lang.annotation.Retention;importjava.lang.annotation.Target;i...
2019-12-08 14:18:13
653
2
原创 Mybatis框架insert语句返回主键id
人工智能,零基础入门!http://www.captainbed.net/inner在一些开发场景中,需要得到刚刚插入的数据的主键id,mybatis提供了这样的方法:用@Options注解这个主键是设置的,MySQL自增长的。...
2019-12-02 09:42:26
657
1
原创 Controller里面能写什么?
人工智能,零基础入门!http://www.captainbed.net/inner就按MVC模式的开发模式来,我们项目中包含的结构层分别是view,controller,service,dao。下面介绍一下各层的意义和项目运行流程:view是前台页面,用户发送请求时从前端的页面开始的,前端get到这个请求后会把请求和顺带参数信息传送到后台,后台接受这个请求找到对应的接口去执行对应...
2019-11-07 16:45:41
168055
4
原创 消息队列处理秒杀/拼团活动的高并发问题
人工智能,零基础入门!http://www.captainbed.net/inner1、消息队列(以下简称MQ)天生就是处理高并发的有力工具,因为他可以把一个完整的流程拆为多部分,并发进行,或者不是很重要的步骤模块延迟进行。大家所熟悉的是消息队列在大基数用户项目的注册模块和电商项目的订单模块运用的比较多,淘宝就是最好的案例。但是这里并不是想要介绍这个,而是想简谈一下消息队列处理拼团秒杀活动...
2019-11-07 16:45:24
160370
1
原创 MySQL查月底最后一条记录
人工智能,零基础入门!http://www.captainbed.net/inner第一种方法:选定时间范围,然后倒序排序,通过limit关键字只查第1行就是最后一条记录 select *from orderwhereorder_time>='2019-10-01'and order_time<'2019-11-01' order by order_time ...
2019-11-07 11:37:51
1457
1
原创 Explain分析SQL语句
人工智能,零基础入门!http://www.captainbed.net/inner在MySQL中,我们可以通过EXPLAIN命令获取MySQL如何执行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和连接的顺序。下面分别对EXPLAIN命令结果的每一列进行说明:【1】select_type:表示SELECT的类型,常见的取值有:类型 说明 ...
2019-11-07 09:50:30
871
1
原创 SpringBoot调优总结--收藏
人工智能,零基础入门!http://www.captainbed.net/inner作为一名工程师,项目调优这事,是必须得熟练掌握的事情。在SpringBoot项目中,调优主要通过配置文件和配置JVM的参数的方式进行。修改配置文件关于修改配置文件application.properties。SpringBoot项目详细的配置文件修改文档https://docs.sp...
2019-11-05 09:19:19
668
1
原创 什么是NIO
人工智能,零基础入门!http://www.captainbed.net/inner假设某银行只有10个职员。该银行的业务流程分为以下4个步骤:1) 顾客填申请表(5分钟);2) 职员审核(1分钟);3) 职员叫保安去金库取钱(3分钟);4) 职员打印票据,并将钱和票据返回给顾客(1分钟)。我们看看银行不同的工作方式对其工作效率到底有何影响。一:BIO方式每来...
2019-11-02 17:47:11
632
1
原创 MySQL面试之“锁”
人工智能,零基础入门!http://www.captainbed.net/inner1 什么是锁1.1 锁的概述在生活中锁的例子多的不能再多了,从古老的简单的门锁,到密码锁,再到现在的指纹解锁,人脸识别锁,这都是锁的鲜明的例子,所以,我们理解锁应该是非常简单的。再到MySQL中的锁,对于MySQL来说,锁是一个很重要的特性,数据库的锁是为了支持对共享资源进行并发访问,提供数据...
2019-10-22 10:41:14
778
1
原创 SpringBoot快速整合MyBatis
人工智能,零基础入门!http://www.captainbed.net/inner导读:使用MyBatis3提供的注解可以逐步取代XML,例如使用@Select注解直接编写SQL完成数据查询,使用@SelectProvider高级注解还可以编写动态SQL,以应对复杂的业务需求。一. 基础注解MyBatis 主要提供了以下CRUD注解:@Select@Insert@U...
2019-10-22 10:31:21
567
1
原创 老手总结的项目经验
人工智能,零基础入门!http://www.captainbed.net/inner一、MyBatis 不要为了多个查询条件而写 1 = 1当遇到多个查询条件,使用where 1=1 可以很方便的解决我们的问题,但是这样很可能会造成非常大的性能损失,因为添加了 “where 1=1 ”的过滤条件之后,数据库系统就无法使用索引等查询优化策略,数据库系统将会被迫对每行数据进行扫描(即全...
2019-10-22 10:25:58
641
1
原创 分布式事务学习 -- 讲的很清楚
人工智能,零基础入门!http://www.captainbed.net/inner什么是事务? 换个角度看事务 Java 中的事务 什么是分布式事务? 分布式事务的几种实现思路 总结前言在分布式、微服务大行其道的今天,相信大家对这些名词都不会陌生。而说到使用分布式,或者拆分微服务的好处,你肯定能想到一大堆。比如每个人只需要维护自己单独的服务,没有了以前的各种代码冲突...
2019-10-18 11:08:47
766
1
原创 SpringBoot注解梳理
人工智能,零基础入门!http://www.captainbed.net/inner一、注解(annotations)列表@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它...
2019-10-14 14:01:47
691
1
原创 Java Serializable:明明就一个空的接口嘛
人工智能,零基础入门!http://www.captainbed.net/inner对于 Java 的序列化,我一直停留在最浅显的认知上——把那个要序列化的类实现Serializbale接口就可以了。我不愿意做更深入的研究,因为会用就行了嘛。但随着时间的推移,见到Serializbale的次数越来越多,我便对它产生了浓厚的兴趣。是时候花点时间研究研究了。01、先来点理论...
2019-10-11 11:15:24
589
1
原创 APP版本升级后台接口兼容旧版本
人工智能,零基础入门!http://www.captainbed.net/inner公司开发APP,经常会有版本升级的情况,因此会出现新版本如何兼容旧版本的问题。iOS和android 不断有新的版本开发,很多服务端开发都是在以前接口的逻辑上进行修改,新的APP版本发布后,老的APP版本如何兼容接口?有人说:每次发布完APP,就强制用户更新到最新版本 不就完了。现在确实有的公司这...
2019-09-27 14:16:45
6357
5
原创 tomcat和jetty的区别
人工智能,零基础入门!http://www.captainbed.net/inner1、Jetty更轻量级。这是相对Tomcat而言的。由于Tomcat除了遵循Java Servlet规范之外,自身还扩展了大量JEE特性以满足企业级应用的需求,所以Tomcat是较重量级的,而且配置较Jetty亦复杂许多。但对于大量普通互联网应用而言,并不需要用到Tomcat其他高级特性,所以在这种情...
2019-09-26 09:19:30
1093
1
原创 Redis持久化的几种方式
人工智能,零基础入门!http://www.captainbed.net/inner一、前言Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。Redi...
2019-09-25 14:42:11
632
1
SpringQuartz的使用文档
2018-09-17
开发文档工具Zeal
2018-09-10
测试用例表格模板
2018-09-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人