个人学习
文章平均质量分 68
inner_peace8
Software Engineer...每天只工作六小时
展开
-
数据存储-选择合适的数据存储方案
人工智能,零基础入门!http://www.captainbed.net/inner选择合适的数据存储方案关系型数据库 MySQLMySQL 是一个最流行的关系型数据库,在互联网产品中应用比较广泛。一般情况下,MySQL 数据库是选择的第一方案,基本上有 80% ~ 90% 的场景都是基于 MySQL 数据库的。因为,需要关系型数据库进行管理,此外,业务存在许多事务性的操作,需要保证事务的强一致性。同时,可能还存在一些复杂的 SQL 的查询。值得注意的是,前期尽量减少表的联合查询,便于后...原创 2021-03-01 08:23:21 · 1229 阅读 · 1 评论 -
设计能力-说说概要设计
人工智能,零基础入门!http://www.captainbed.net/inner概要设计是一个设计师根据用户交互过程和用户需求来形成交互框架和视觉框架的过程,其结果往往以反映交互控件布置、界面元素分组以及界面整体板式的页面框架图的形式来呈现。这是一个在用户研究和设计之间架起桥梁,使用户研究和设计无缝结合,将对用户目标与需求转换成具体界面设计解决方案的重要阶段。概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划..原创 2020-10-11 23:24:33 · 292 阅读 · 1 评论 -
ThreadLocal原理和应用
人工智能,零基础入门!http://www.captainbed.net/inner一、ThreadLocal简单介绍首先,ThreadLocal是用来维护本线程的变量的,并不能解决共享变量的并发问题。ThreadLocal是各线程将值存入该线程的map中,以ThreadLocal自身作为key,需要用时获得的是该线程之前存入的值。如果存入的是共享变量,那取出的也是共享变量,并发问题还是存在的。简单看一下例子:public class TestThreadLocal { pri.原创 2020-08-01 07:56:06 · 350 阅读 · 1 评论 -
Netty-为什么选择 Netty
人工智能,零基础入门!http://www.captainbed.net/innerAPI 使用简单,开发门槛低; 功能强大,预置了多种编解码功能,支持多种主流协议; 定制能力强,可以通过 ChannelHandler 对通信框架进行灵活的扩展; 性能高,通过与其它业界主流的 NIO 框架对比,Netty 的综合性能最优; 成熟、稳定,Netty 修复了已经发现的所有 JDK NIO BUG,业务开发人员不需要再为 NIO 的 BUG 而烦恼; 社区活跃,版本迭代周期短,发现的BUG可以..原创 2020-07-02 09:05:20 · 375 阅读 · 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 · 6246 阅读 · 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 · 1409 阅读 · 1 评论 -
Explain分析SQL语句
人工智能,零基础入门!http://www.captainbed.net/inner在MySQL中,我们可以通过EXPLAIN命令获取MySQL如何执行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和连接的顺序。下面分别对EXPLAIN命令结果的每一列进行说明:【1】select_type:表示SELECT的类型,常见的取值有:类型 说明 ...原创 2019-11-07 09:50:30 · 807 阅读 · 1 评论 -
SpringBoot调优总结--收藏
人工智能,零基础入门!http://www.captainbed.net/inner作为一名工程师,项目调优这事,是必须得熟练掌握的事情。在SpringBoot项目中,调优主要通过配置文件和配置JVM的参数的方式进行。修改配置文件关于修改配置文件application.properties。SpringBoot项目详细的配置文件修改文档https://docs.sp...原创 2019-11-05 09:19:19 · 602 阅读 · 1 评论 -
什么是NIO
人工智能,零基础入门!http://www.captainbed.net/inner假设某银行只有10个职员。该银行的业务流程分为以下4个步骤:1) 顾客填申请表(5分钟);2) 职员审核(1分钟);3) 职员叫保安去金库取钱(3分钟);4) 职员打印票据,并将钱和票据返回给顾客(1分钟)。我们看看银行不同的工作方式对其工作效率到底有何影响。一:BIO方式每来...原创 2019-11-02 17:47:11 · 586 阅读 · 1 评论 -
分布式事务学习 -- 讲的很清楚
人工智能,零基础入门!http://www.captainbed.net/inner什么是事务? 换个角度看事务 Java 中的事务 什么是分布式事务? 分布式事务的几种实现思路 总结前言在分布式、微服务大行其道的今天,相信大家对这些名词都不会陌生。而说到使用分布式,或者拆分微服务的好处,你肯定能想到一大堆。比如每个人只需要维护自己单独的服务,没有了以前的各种代码冲突...原创 2019-10-18 11:08:47 · 715 阅读 · 1 评论 -
如何设计权限管理模块?
人工智能,零基础入门!http://www.captainbed.net/inner我们比较常见的就是基于角色的访问控制,用户通过角色与权限进行关联。简单地说,一个用户拥有多个角色,一个角色拥有多个权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间、角色与权限之间,通常都是多对多的关系。如下图:基于这个,得先了解角色到底是什么?我们可以理解它为一定数...原创 2019-06-05 13:52:39 · 968 阅读 · 1 评论 -
JVM的组成
人工智能,零基础入门!http://www.captainbed.net/inner首先来说 JVM 的组成分为,整体组成部分和运行时数据区组成部分,一般开发者关注的和面试官问的都是后者一、JVM 整体组成JVM 整体组成可分为以下四个部分:1、类加载器(ClassLoader)2、运行时数据区(Runtime Data Area)3、执行引擎(Execution En...原创 2019-05-04 21:00:43 · 645 阅读 · 1 评论 -
redis实现分页查询
人工智能,零基础入门!http://www.captainbed.net/innerredis中的一个数据类型:listlist用于存放类似粉丝列表、文章的评论列表之类的东西,list类型实现数据分页查询,通过lrange命令,读取某个闭区间内的元素,如下:# 0开始位置 3结束位置lrange mylist 0 3...原创 2019-04-01 21:20:50 · 122670 阅读 · 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 · 174733 阅读 · 5 评论 -
工作中用到的设计模式
人工智能,零基础入门!http://www.captainbed.net/inner1、单例模式Spring容器中的 bean默认就是单例的2、桥接模式JDBC连接数据库3、代理模式spring的Proxy模式在aop中有体现4、观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。spring中Ob...原创 2019-03-24 00:20:47 · 127613 阅读 · 1 评论 -
HttpServletrequest 与HttpServletResponse总结
人工智能,零基础入门!http://www.captainbed.net/inner如果说DOM是javascript与HTML的桥梁,那么servlet就是前端与后端的桥梁,HttpServletRequest和HttpServletResponse就是之间的信使,好了,废话不多说!由来 Web服务器收到一个http请求,会针对每个请求创建一个HttpServletReque...原创 2019-07-20 11:06:09 · 368 阅读 · 1 评论 -
优化你的SpringBoot
人工智能,零基础入门!http://www.captainbed.net/inner介绍在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢?1、方便微服务部署。2、方便项目启动,不需要下载Tomcat或者Jetty针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点1、线程数2、超时时间...原创 2019-06-05 13:59:05 · 621 阅读 · 1 评论 -
mysql数据库日期是varchar类型的时间比较查询
人工智能,零基础入门!http://www.captainbed.net/inner单纯的字符串比较结果不精确.【1】select*fromtableName wheretimes>'2088/12/8 10:02:40';(×)转换函数如下(数据库为varchar):select*fromh_hotelcontextwherenow()between...原创 2019-06-01 10:37:45 · 11852 阅读 · 3 评论 -
MySQL两种存储引擎: MyISAM和InnoDB简单总结 --收藏
人工智能,零基础入门!http://www.captainbed.net/innerMyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。不过,在这几年的发展下,MySQL也导入了InnoDB(另一种...原创 2019-06-01 10:41:21 · 509 阅读 · 1 评论 -
CSS:鼠标移到表格,改变那一行的背景色
人工智能,零基础入门!http://www.captainbed.net/inner.table>tbody>tr:hover { background-color: #fff;}原创 2019-07-20 10:47:50 · 1595 阅读 · 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 · 1321 阅读 · 1 评论 -
数据库锁表
人工智能,零基础入门!http://www.captainbed.net/inner1、锁表发生在insert 、update 、delete 语句中 2、锁表的原理是数据库使用独占式封锁机制,当执行上面的语句时,对表进行锁住,直到发生commit或回滚或退出数据库用户3、锁表的原因 :第一、 A程序执行了对 tableA 的 insert ,并还未 commite时,B程...原创 2019-09-03 14:14:36 · 2042 阅读 · 1 评论 -
APP版本升级后台接口兼容旧版本
人工智能,零基础入门!http://www.captainbed.net/inner公司开发APP,经常会有版本升级的情况,因此会出现新版本如何兼容旧版本的问题。iOS和android 不断有新的版本开发,很多服务端开发都是在以前接口的逻辑上进行修改,新的APP版本发布后,老的APP版本如何兼容接口?有人说:每次发布完APP,就强制用户更新到最新版本 不就完了。现在确实有的公司这...原创 2019-09-27 14:16:45 · 6004 阅读 · 5 评论 -
Java Serializable:明明就一个空的接口嘛
人工智能,零基础入门!http://www.captainbed.net/inner对于 Java 的序列化,我一直停留在最浅显的认知上——把那个要序列化的类实现Serializbale接口就可以了。我不愿意做更深入的研究,因为会用就行了嘛。但随着时间的推移,见到Serializbale的次数越来越多,我便对它产生了浓厚的兴趣。是时候花点时间研究研究了。01、先来点理论...原创 2019-10-11 11:15:24 · 535 阅读 · 1 评论 -
Tomcat配置本地文件【图片】服务器
人工智能,零基础入门!http://www.captainbed.net/inner一、简介一般情况下,我们项目开发时,在本地环境下,把这个tomcat作为项目服务器,就是把项目放在tomcat上面跑。这个是tomcat用的最多的地方,分享一下,但是其实Tomcat还可以作为其他来用,这里要讲的就是用tomcat来配置本地的文件服务器。下面是步骤:二、配置步骤【1】下载一个to...原创 2018-11-16 15:15:03 · 195160 阅读 · 2 评论 -
前端页面的一键copy功能
人工智能,零基础入门!http://www.captainbed.net/inner一、原理分析浏览器提供了 copy 命令 ,可以复制选中的内容document.execCommand("copy")如果是输入框,可以通过 select() 方法,选中输入框的文本,然后调用 copy 命令,将文本复制到剪切板但是 select() 方法只对 <input> ...原创 2019-03-23 23:52:00 · 129689 阅读 · 2 评论 -
Maven依赖的scope—收藏
人工智能,零基础入门!http://www.captainbed.net/innerMaven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中,scope的默认值是compile,项目中经常傻傻的分不清,直接默认了。今天梳理一下maven的scope。scope的分类compile默认就是compile,什么...原创 2019-03-23 23:38:05 · 126228 阅读 · 1 评论 -
汉诺塔问题求解(递归)
人工智能,零基础入门!http://www.captainbed.net/inner实例说明汉诺塔问题的描述如下:有A、B和C 3跟柱子,在A上从下往上按照从小到大的顺序放着64个圆盘,以B为中介,把盘子全部移动到C上。移动过程中,要求任意盘子的下面要么没有盘子,要么只能有比它大的盘子。本实例将演示如何求解3阶汉诺塔问题。实现过程新建一个类HanoiTower。在Han...原创 2019-03-23 23:31:20 · 130230 阅读 · 4 评论 -
Intellij IDEA调试功能使用总结-收藏
人工智能,零基础入门!http://www.captainbed.net/inner这段时间一直在使用Intellij IDEA, 今天把调试区工具的使用方法记录于此。先编译好要调试的程序。1.设置断点选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可。2.开启调试会话点击红色箭头指向的小虫子,开始进入调试。IDE下方出现Debug视图,红色的箭头...原创 2019-01-18 14:30:50 · 190394 阅读 · 1 评论 -
Spring AOP和代理原理--收藏
人工智能,零基础入门!http://www.captainbed.net/inner我们知道,Spring 中 AOP 是一大核心技术,面试中也经常被问到。一、序言几个常见的问题针对这一块的东西,一般下面几个问题面试官问的比较多:* Spring AOP用的是哪种设计模式?* 谈谈你对代理模式的理解?* 静态代理和动态代理有什么区别?* 如何实现动态代理?*...原创 2018-12-14 10:16:44 · 190572 阅读 · 3 评论 -
10大经典排序算法动画解析-收藏
人工智能,零基础入门!http://www.captainbed.net/inner排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序。而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序...原创 2018-12-13 14:13:07 · 193218 阅读 · 9 评论 -
Linux修改用户密码
人工智能,零基础入门!http://www.captainbed.net/innerlinux,root用户登录成功后,要修改用户密码步骤:【1】输入命令:passwd【2】输入新密码,然后确认新密码,就是输入两次新密码,回车;【3】修改成功,退出登录,新新密码重新登录。#####linux系统下无法查看当前用户密码,只能是修改密码...原创 2018-11-16 15:51:49 · 193553 阅读 · 2 评论 -
Linux下的Tomcat、Redis、Nginx设置开机自启动
人工智能,零基础入门!http://www.captainbed.net/inner自己的linux每次开机都要启动tomcat,网上好多都是用shell脚本来实现tomcat开机自启动,后来看到一种方法,直接修改系统文件来实现,已经实践过,方法有效。然后实验总结出,其实其他的比如redis和nginx也是可以这样配置来实现开机自启动的。一、下面以tomcat为例:【1】修改脚本文...原创 2018-11-16 15:45:36 · 182186 阅读 · 1 评论 -
Tomcat自启动方法---配置为本地服务开机自启动
人工智能,零基础入门!http://www.captainbed.net/inner有时候在开发过程中,如果是手动搭的tomcat服务器,比如文件域名配置服务器,电脑重启后经常要去运行这个tomcat的start脚本手动启动这个tomcat,所以有时候就很烦,然后找了一个办法摆脱这种烦恼:就是把tomcat配置为本地的服务,然后设置为开机自启动就完美解决了,这应该是最简单快捷的方法。下面是...原创 2018-11-16 14:56:28 · 192017 阅读 · 2 评论 -
SpringBoot项目运行jar包启动
人工智能,零基础入门!http://www.captainbed.net/innerSpringBoot项目在开发中,方便快捷,有一点原因就是SpringBoot项目可以打jar包运行:把jar包直接扔服务器上,然后运行jar包就能访问项目接口了。下面介绍SpringBoot项目打jar包运行的步骤流程:一、我们所熟悉的是在开发环境下,直接用开发工具来运行那个启动类,然后就能启动这个项...原创 2018-09-14 15:20:43 · 317918 阅读 · 14 评论 -
SpringBoot项目启动图标展示个性化
人工智能,零基础入门!http://www.captainbed.net/innerSpringBoot启动时在控制台会有一个图标展示,默认的是一个单词“spring”默认启动图标但是,我想要不一样,有个性化的图标,下面是步骤:【1】在项目的resource目录下新建一个文件banner.txt,SpringBoot项目启动时就会优先读取这里的内容,【2】用工具生成个性化图标,...原创 2018-09-14 11:59:02 · 195196 阅读 · 2 评论 -
Spring中使用Quartz
人工智能,零基础入门!http://www.captainbed.net/inner一、概述 各种企业应用几乎都会碰到任务调度的需求,就拿论坛来说:每隔半个小时生成精华文章的RSS文件,每天凌晨统计论坛用户的积分排名,每隔30分钟执行锁定 用户解锁任务。对于一个典型的MIS系统来说,在每月1号凌晨统计上个月各部门的业务数据生成月报表,每半个小时查询用户是否已经有快到期的待...原创 2018-09-17 15:25:00 · 193037 阅读 · 1 评论 -
SpringQuartz定时任务的cron表达式书写
分享一个人工智能教程,零基础入门!http://www.captainbed.net/innerSpringQuartz定时任务的使用,要配置这个定时任务什么时候执行,周期是多少,周期内执行多少次,这个都是cron表达式来控制的,下面详解一下这个cron表达式。一、先来举些例子【1】0 0 10,14,16 * * ? 每天上午10点,下午2点,4点【2】0 0/30 9-...原创 2018-09-17 15:09:28 · 216393 阅读 · 3 评论 -
TCP协议三次握手和四次握手机制-动画详解
人工智能,零基础入门!http://www.captainbed.net/innerTCP三次握手和四次挥手的问题在面试中是最为常见的考点之一。很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答。本篇尝试使用动画来对这个知识点进行讲解,期望读者们可以更加简单地地理解TCP交互的本质。一、TCP 三次握手TCP 三次握手就好比两个人在街上隔着50米看见了对方...原创 2018-08-25 20:19:44 · 208438 阅读 · 13 评论 -
Java实现单例模式的9种方法
人工智能,零基础入门!http://www.captainbed.net/inner一. 什么是单例模式因进程需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计。二. 单例模式的特点1、单例模式只能有一个实例。2、单例类必须创建自己的唯一实例。3、单例类必须向其他对象提供这一实例。三. 单例模式VS静态类在知道了什么是...原创 2019-01-14 15:01:04 · 205027 阅读 · 14 评论