- 博客(278)
- 资源 (8)
- 收藏
- 关注
原创 ConcurrentHashMap底层详解(JDK1.7)
为什么要使用ConcurrentHashMapHashMap是线程不安全的,因为在put操作时可能会出现数据被覆盖的情况(JDK8),在JDK7中还存在扩容时产生死循环的问题。。而使用线程安全的HashTable效率又非常低下,因此可以使用ConcurrentHashMap。HashTable效率低下是因为使用synchronized来保证线程安全。当一个线程访问HashTable的同步方法,其他线程也访问HashTable的同步方法时,会进入阻塞或轮询状态。如线程1使用put进行元素添加,线程2不但
2020-06-11 20:09:24
10574
原创 图解HashMap为什么线程不安全?
HashMap的线程不安全主要体现在下面两个方面:1.在JDK1.7中,当并发执行扩容操作时会造成环形链和数据丢失的情况。2.在JDK1.8中,在并发执行put操作时会发生数据覆盖的情况。
2020-06-10 16:43:01
31872
14
转载 【排序】桶排序
简介桶排序也是时间复杂度仅为 O(n) 的一种排序方法,它假设输入数据服从均匀分布,我们将数据分别放入到 n 个桶内,先对桶内数据进行排序,然后遍历桶依次取出桶中的元素即可完成排序。原理图例如输入数据:21,8,6,11,36,50,27,42,0,12。然后分别放入对应的桶内排序,最后依次遍历桶取出元素即可完成排序。分析桶排序中很重要的一步就是桶的设定了,我们必须根据输入元素的情况,选择一个恰当的 “getBucketIndex” 算法,使得输入元素能够正确的放入对应的桶内,且保证输入数据能
2020-06-06 20:59:06
359
原创 【个人博客】需求分析
技术组合:后端:Spring Boot + JPA + thymeleaf模板数据库:MySQL前端UI:Semantic UI框架工具与环境:IDEAMaven 3JDK 8Axure RP 8课程内容模块:需求分析与功能规划页面设计与开发技术框架搭建后端管理功能实现前端管理功能实现你能学得什么?基于Spring Boot的完整全栈式的开发套路Semantic UI框架的使用一套博客系统的源代码与设计1、需求与功能1.1 用户故事用户故事是敏捷框架
2020-06-06 00:04:05
3229
原创 Git与GitHub使用
版本控制版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。实现跨区域多人协同开发追踪和记载一个或者多个文件的历史记录组织和保护你的源代码和文档统计工作量并行开发、提高开发效率跟踪记录整个软件的开发过程减轻开发人员的负担,节省时间,同时降低人为错误Git下载安装使用淘宝镜像下载:http://npm.taobao.org/mirrors/git-for-window
2020-06-06 00:03:00
468
原创 【SpringBoot】与数据库连接
依赖快捷创建SpringBoot时候选中,选择Spring Web,JDBC API 和 MySQL配置数据库连接信息spring: datasource: username: root password: 1022 url: jdbc:mysql://localhost/test driver-class-name: com.mysql.jdbc.Driver测试能否连接上数据库:@SpringBootTestclass SpringbootDataJd
2020-06-04 23:55:33
10865
1
原创 【Docker】基本使用
Docker基本使用Docker是一个开源的应用容器引擎;是一个轻量级容器技术;Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;运行中的这个镜像称为容器,容器启动是非常快速的。核心概念docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);docker客户端(Client):连接docker主机进行操作;docker仓库(Registry):用来保存各种打包好的软件镜像;doc
2020-06-04 15:11:03
517
原创 【SpringBoot】restful风格的增删改查
准备将静态资源(css,img,js)添加到项目中,放到springboot默认的静态资源文件夹下将模板文件(html)放到template文件夹下。添加两个实体类和对应的DAO类如果你的静态资源明明放到了静态资源文件夹下却无法访问,请检查一下是不是在自定义的配置类上加了@EnableWebMvc注解1.默认访问首页template文件夹不是静态资源文件夹,默认是无法直接访问的,所以要添加视图映射。@Configurationpublic class MyMVCConfig imple
2020-06-03 23:38:13
1299
原创 【SpringBoot】Web开发配置
Web开发1、简介使用SpringBoot;1)、创建SpringBoot应用,选中我们需要的模块;2)、SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来3)、自己编写业务代码;web自动配置规则WebMvcAutoConfigurationWebMvcPropertiesViewResolver自动配置静态资源自动映射Formatter与Converter自动配置HttpMessageConverter自动配置静态首页favicon
2020-06-02 23:47:30
391
原创 【SpringBoot】日志
1. 市面上的日志框架JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j…日志门面 (日志的抽象层)日志实现JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for Java) jboss-loggingLog4j JUL(java.util.logging) Log4j2 Logback左边选一个门面(抽象层)、右边来选一个实现:日志抽象:
2020-06-02 16:33:11
290
原创 【SpringBoot】自动配置原理解析
自动配置的原理配置文件到底能写什么?怎么写?自动配置原理;配置文件能配置的属性参照1、自动配置原理(源码分析)SpringBoot启动的时候加载主配置类,开启了自动配置功能@SpringBootApplication @EnableAutoConfiguration@EnableAutoConfiguration 作用:利用EnableAutoConfigurationImportSelector给容器中导入一些组件首先进入启动Springboot项目启动代码:@Spring
2020-06-02 15:17:39
660
原创 【SpringBoot】配置相关
配置文件SpringBoot使用一个全局的配置文件,配置文件名是固定的;application.propertiesapplication.ymlapplication.yaml配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;YAML(YAML Ain’t Markup Language) YAML A Markup Language:是一个标记语言 YAML isn’t Markup Language:不是一
2020-06-02 00:12:01
354
原创 【SpringBoot】Spring Boot 入门
微服务微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。...
2020-06-01 17:13:01
192
原创 【Redis】集群
什么是集群集群就是使用网络将若干台计算机连接到一起,并且提供同一的管理方式,使其对外呈现单机的服务效果。集群作用分散单台服务器的访问压力,实现负载均衡分散单台服务器的存储压力,实现可扩展性降低单台服务器宕机带来的灾难性的影响Redis集群结构设计Redis会将所有的服务器的存储空间等分切割为16384份,切割后的每一个空间称之为一个槽当需要存储数据时,首先将该数据通过RCR16(循环冗余校验)生成的值与16384取模,得到结果按照key计算得到的结果,存储至对应的槽中当有新的服务器加
2020-05-30 22:25:46
230
1
原创 【Redis】哨兵模式(redis sentinel)
Master如果发送宕机需要做下面这些事情:将宕机的master下线找一个slave作为master通知所有的slave连接新的master启动新的master与slave全量复制*N+部分复制 *N什么是redis sentinel哨兵(sentinel)在redis集群架构中是一个非常重要的组件,其主要功能有下面这些:监控不断的检查master和slave是否正常运行master存活检测、master与slave运行情况检测通知(提醒)当被监控的服务器出现问题时,向
2020-05-30 21:56:33
779
原创 【Redis】主从复制
单机redise风险与问题问题1 机器故障现象:硬件故障、系统崩溃本质:数据丢失,很可能对业务造成灾难性打击结论:基本上会放弃使用redis问题2 容量瓶颈现象:内存不足,从16G升级到64G,无线升级内存本质:穷,硬件条件跟不上结论:放弃使用redis为了避免单点redis服务器故障,准备多台服务器,互相连通。将数据复制多个副本保存在不同的服务器上,链接在一起,并保证数据是否同步的,即使有其中一台服务器宕机,其他服务器依然可以继续提供服务,实现Redis的高可用,同时实现数据冗余
2020-05-30 21:05:09
565
转载 【Redis】配置文件详解
Redis配置文件样例# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程(开机自启动)# 启用守护进程后,Redis会把pid写到一个pidfile中,在/var/run/redis.piddaemonize no# 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定pidfile /var/run/redis.pid# 指定Redis绑定的端口,默认端口为6379# 如果
2020-05-30 16:04:44
344
原创 【Redis】删除策略
Redis中的数据特征Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态:XX : 具有时效性的数据1 : 永久有效的数据2 : 已经过期的数据 或 被删除的数据 或 未定义的数据数据删除策略一共有三种:定时删除惰性删除定期删除时效性数据的存储结构数据删除策略的目标在内存占用与CPU占用之间寻找一种平衡,顾此失彼都会造成整体redis性能的下降,甚至引发服务器宕机或内存泄漏。定时删除创建一个定时器,当key设置有过期时间,且过
2020-05-29 22:45:00
361
原创 【Redis】事务
Redis的事务和关系型数据库的区别Redis的事务和传统关系数据库的事务并不相同。在关系数据库中,用户首先向数据库服务器发送begin,然后执行各个相五一致( consistent )的写操作和读操作,最后,用户可以选择发送commit来确认之前所做的修改,或者发送rollback来放弃那些修改。在Redis 里面也有简单的方法可以处理一连串相互一致的读操作和写操作。Redis 的事务以特殊命令multi为开始,之后跟着用户传入多个命令,最后以exec 为结束。但是由于这种简单的事务在EXEC 命令被
2020-05-29 22:01:21
750
原创 【Redis】持久化
持久化简介什么是持久化利用永久性存储介质将数据进行保存,在特定的事件将保存的数据进行恢复的工作机制称为持久化。为什么要持久化防止数据的意外丢失,确保数据安全性持久化的过程保存什么RDB: 将当前数据状态进行保存,快照形式,存储数据结果,存储而是简单,关注点在数据。它可以将存在于某一时刻的所有数据都写人硬盘里面。AOF:将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程,它会在执行写命令时,将被执行的写命令复制到硬盘里面。这两种持久化方法既可以同时使用,又可
2020-05-29 20:48:48
445
原创 【Redis】 jedis操作redis数据库
Jedis是什么Jedis是Redis官方推荐的Java连接开发工具。要在Java开发中使用好Redis中间件,必须对Jedis熟悉才能写成漂亮的代码。入门案例在maven中导入Jedis的坐标。 <dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artif
2020-05-29 16:17:50
267
原创 【Linux】软件安装RPM,DPKG与YUM
Linux 界的两大主流: RPM 与 DPKG目前在 Linux 界软件安装方式最常见的有两种,分别是:dpkg:这个机制最早是由 Debian Linux 社群所开发出来的,透过 dpkg 的机制, Debian 提供的软件就能够简的安装起来,同时还能提供安装后的软件信息,只要是衍生于 Debian 的其他 Linux 大多使用 dpkg 这个机制来管理软件的, 包括 B2D, Ubuntu 等等。RPM:这个机制最早是由 Red Hat 这家公司开发出来的,后来实在很好用,因此很多
2020-05-29 16:13:57
1898
原创 【Linux】进程管理与服务管理
什么是进程在 Linux 系统当中:『触发任何一个事件时,系统都会将他定义成为一个进程,并且给予这个进程一个 ID ,称为 PID,同时依据启发这个进程的用户与相关属性关系,给予这个 PID 一组有效的权限设定。』从此以后,这个 PID 能够在系统上面进行的动作,就与这个 PID 的权限有关了!程序一般是放置在实体磁盘中,然后透过用户的执行来触发。触发后会加载到内存中成为一个个体,那就是进程。每个程序都有三组人马的权限,每组人马都具有 r/w/x 的权限。 为了操作系统可管理这个进程,因此进程有给予执
2020-05-29 15:10:31
1750
3
原创 【Linux】定时任务调度和磁盘管理
定时任务调度任务调度:是指系统在某个时间执行的特定的命令或程序。任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等。2.个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份。基本语法crontab [选项]常用选项-e 编辑crontab定时任务-l 查询crontab任务-r 删除当前用户的所有crontab任务-u只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度;service crond resta
2020-05-28 19:51:27
503
原创 【Linux】用户管理和权限管理
Linux 用户和用户组管理Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。用户的家目录/home目录下有各个创建的用户对应的家目录,当用户登录的时候,会自动的进入到自己的家目录当中。Linux系统用户账号的管理
2020-05-28 00:19:12
430
原创 【Linux】文件相关常用指令
帮助类指令当我们对某个指令不熟悉时,我们可以使用 Linux 提供的帮助指令来了解这个指令的使用方法。两个学习的指令manhelpman获得帮助信息基本语法man [命令或配置文件](功能描述:获得帮助信息)案例:查看 ls 命令的帮助信息help命令 (功能描述:获得 shell 内置命令的帮助信息)案例:查看 cd 命令的帮助信息文件目录类ls: 列出目录及文件名cd:切换目录pwd:显示目前的目录mkdir:创建一个新的目录rmdir:删除一个空的目录
2020-05-27 20:00:57
512
原创 【Linux】vi/vim 与 开关机
vi 和 vim 的基本介绍所有的 Linux 系统都会内建 vi 文本编辑器。Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。vi/vim 的使用基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:命令模式:用户刚刚启动 vi
2020-05-27 15:45:36
495
原创 【Linux】基础篇
Linux 介绍Linux 是一款操作系统,免费,开源, 安全,高效,稳定, 处理高并发非常强悍,现在很多的企业级的项目都部署到 Linux/unix 服务器运行。Linux和UNIX的关系及区别linux就是基于unix操作系统原理的开源操作系统, 基于的是操作系统的原理。虚拟机网络配置的三种形式配置网络连接时,有三种形式:Linux系统的启动过程其过程可以分为5个阶段:内核的引导。当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。
2020-05-27 15:29:01
486
2
原创 【Redis】通用命令
Key通用命令key的特征key是一个字符串,通过key获取redis中保存的数据key应该设计那些操作?对于key自身状态的相关操作,例如:删除,判定存在,获取类型等对于key有效性控制相关操作,例如:有效期设定,判定是否有效,有效状态的切换等于key快速查询操作,例如:按指定策略查询keykey的基本操作删除指定keydel key获取key是否存在exists key获取key的类型type keykey扩展操作-时效性控制为指定key设置有效期expire
2020-05-25 23:47:46
201
原创 【Redis】五种数据类型及其使用场景
Redis 数据类型五种类型与类比java的模型string --> Stringhash --> Hashmaplist --> LinkListset --> HashSetsorted_set --> TreeSetString类型redis 数据存储格式redis自身是一个Map类型的存储方式,其中所有的数据都是采用key:value的形式存储我们讨论的数据类型指的是存储的数据的类型,也就是value部分的类型,key部分永远都是字符串St
2020-05-25 22:58:57
53126
24
原创 【Redis】入门简介
问题引入问题现象访问用户过多高并发罪魁祸首性能瓶颈:磁盘IO性能低下扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群解决思路降低磁盘IO次数,越低越好 —— 内存存储去除数据间的关系,越简单越好 —— 不存储关系,仅存储数据Nosql即Not-OnlySQL(泛指非关系型的数据库),作为关系型数据库的补充,并不特指一个数据库。作用:应用对于海量用户和海量数据前提吓得数据处理问题。特征可扩容,可伸缩大数据量下得高性能灵活得数据模型高可用你知道哪些常见No
2020-05-24 22:50:10
216
原创 【Spring】SSM整合
原则1、使用Spring框架去整合另外两个框架(SpringMVC、MyBatis);2、使用配置文件+注解的方式进行整合(哪个方便使用哪个);3、搭建框架的时候,我们必须保证Spring、SpringMVC、Mybatis3个框架能够单独正常使用。准备工作首先在maven中导入相关jar包的坐标。创建文件夹,文件节后如下:Account类public class Account implements Serializable { private Integer id; p
2020-05-23 23:38:45
214
1
原创 【SpringMVC】视图,文件上传,拦截器
响应数据和结果视图返回值的分类处理器返回String对象转发到字符串指定的URL处理器方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址.在本例中,因为我们在Spring容器配置文件bean.xml中配置的视图解析器中注入prefix和suffix属性,所以视图解析器会把处理器返回的"字符串值"解析为"/WEB-INF/pages/字符串值.jsp",再请求对应视图.这是一个请求转发过程,浏览器地址栏不会发生变化.bean.xml中配置的视图解析器如下:<bean id=
2020-05-22 23:59:04
500
原创 【SpringMVC】常用注解
@RequestParam作用把请求中指定名称的参数给控制器中的形参赋值。属性value:请求参数中的名称。required:请求参数中是否必须提供此参数。默认值:true。表示必须提供,如果不提供将报错。案例有一个jsp页面:<html><head> <title>注解</title></head><body> <!--访问anno/requestParam,传入参数username=zha
2020-05-22 14:30:58
788
原创 【SpringMVC】快速入门
三次框架在B/S架构中,系统标准的三层架构包括:表现层、业务层、持久层。表现层也就是常说的web层。它负责接收客户端请求,向客户端响应结果,通常客户端使用http协议请求web层,web需要接收http请求,完成http响应。表现层包括展示层和控制层:控制层负责接收请求,展示层负责结果的展示。表现层依赖业务层,接收到客户端请求一般会调用业务层进行业务处理,并将处理结果响应给客户端。表现层的设计一般都使用MVC模型。(MVC是表现层的设计模型,和其他层没有关系)业务层也就是常说的servic
2020-05-21 16:25:54
484
原创 【Spring】Spring中的JdbcTemplate
JdbcTemplate实体类:public class Account implements Serializable { private Integer id; private String name; private Double money; //省略set方法}不使用iocpublic class JdbcTemplateDemo { public static void main(String[] args) { //准备数据源
2020-05-19 16:20:59
199
原创 【Spring】AOP
动态代理 /**动态代理 * 特点: 字节码随用随创建,随用随加载 * 作用:在不修改代码的情况下对方法进行增强 * 分类: * 基于接口的动态代理 * 基于子类的动态代理 * 基于接口的动态代理: * 涉及到的类:Proxy * 提供者:JDK官方 * 如何创建代理对象: * 使用Proxy类当中的newProxyInstance方法 *
2020-05-18 16:40:41
221
原创 【Spring】Spring中的事务控制
service层的实现类主要代码: public void transfer(String sourceName, String targetName, Double money) { //根据名称查询转出账户 Account sourceAccount = accountDao.findAccountByName(sourceName); //根据名称查询转入账户 Account targetAccount = accountDa
2020-05-17 15:53:54
229
原创 【Spring】理解Ioc控制反转
IoC 全称为Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。依赖注入这个词让人望而生畏,现在已经演变成一项复杂的编程技巧或设计模式理念。但事实证明,依赖注入并不像它听上去那么复杂。在项目中应用DI,你会发现你的代码会变得异常简单并且更容易理解和测试。本篇文章将主要介绍Ioc的概念和作用,以及Ioc是如何解决程序的耦合性问题的。程序的耦合耦合指的就是就是对象之间的依赖性。耦合具有两面性:一方面,紧密耦.
2020-05-16 20:45:38
284
原创 【Spring】概述
Spring是什么Spring是分层的Java SE/EE应用 full-stack轻量级开源框架,以IoC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE企业应用开源框架。Spring的优势...
2020-05-11 22:45:03
208
Standard-10-20-Cap81.zip
2020-06-02
Standard-10-20-Cap81.ced
2019-10-08
BP-regression.zip
2019-08-05
BCI2000Contrib.exe
2019-07-11
概率机器人(机械工业出版社)
2019-04-15
ros by example v1英文版
2019-04-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅