线程池
简介 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。 一种使用线程的模式,存放了很多可以复用的线程,对线程统一管理。我们可以使用new的方式去创建线程,但若是并发线程太高,每个线程执行时间不长,这样频繁的创建销毁线程是比较耗费资源的,线程池就是用来解决此问题的。 线程池的优点: 降低资源的消耗:线程可以重复使用,不需要在创建线程和消耗线程上浪费资源; 提高响应速度:任务到达时,线程可以复用已有的线程,及时响应; 可管理性:无限制的创建线程会降低系统效率,线程池可以对线程进行管理、监控、调优。 线程池的继承关系: ThreadPoolExecutor ...
MySQL高性能优化规范建议总结
数据库命名规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过 32 个字符 临时库表必须以 tmp_ 为前缀并以日期为后缀,备份表必须以 bak_ 为前缀并以日期 (时间戳) 为后缀 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低) 数据库基本设计规范 所有表必须使用 InnoDB 存储引擎,没有特殊要求(即 InnoDB 无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用 InnoDB 存储引擎(MySQL5.5 之前默认使用 Myisam,5.5 以后默认的为 InnoDB)。InnoDB 支持事务,支持行级锁,更好的恢复性,高并发下性能更好。 数据库和表的字符集统一使用 UTF8。兼容性更好,统一字符集可以避免由于字符集转换产生的乱码,不同的字符集进行比较前需要进行转换会造成索引失效,如...
Spring&SpringBoot常用注解总结
这篇文章介绍了 Spring/SpringBoot 常用注解。 @SpringBootApplication 这里先单独拎出@SpringBootApplication 注解说一下,虽然我们一般不会主动去使用它。 这个注解是 Spring Boot 项目的基石,创建 SpringBoot 项目之后会默认在主类加上。 @SpringBootApplicationpublic class SpringSecurityJwtGuideApplication { public static void main(java.lang.String[] args) { SpringApplication.run(SpringSecurityJwtGuideApplication.class, args); }} 我们可以把 @SpringBootApplication看作是 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解的集合。 package org.sp...
Eureka简介
Eureka简介 什么是服务治理? 服务治理就是提供了微服务架构中各微服务实例的快速上线或下线且保持各服务能正常通信的能力的方案总称。 服务治理的优点: 更高的可用性 服务治理可以支持动态的服务实例集群环境,任何服务实例可以随时上线或下线。并且当一个服务实例不可用时,治理服务器可以将请求转给其他服务提供者,当一个新的服务实例上线时,也能够快速地分担服务调用请求。 负载均衡 服务治理可以提供动态的负载均衡功能,可以将所有请求动态地分布到其所管理的所有服务实例中进行处理。 提升应用的弹性 服务治理的客户端会定时从服务治理服务器中复制一份服务实例信息缓存到本地中,这样即使当服务治理服务器不可用时,服务消费者也可以使用本地的缓存去访问相应的服务,而不至于中断服务。通过这种机制,极大地提高了应用的弹性。 高可用性集群 可以构建服务治理集群,通过互相注册机制,将每个治理服务器所管辖的服务信息列表进行交换,使服务治理服务拥有更高的可用性。 Spring Cloud封装了Netflix公司开发的Eureka模块来实现服务治理。在传统的rpc远程调用框架中,管理每个服务之间的...
设计模式
设计模式简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。 开发人员的共同平台 设计模式提供了一个标准的术语系统,且具体到特定的情景。例如,单例设计模式意味着使用单个对象,这样所有熟悉单例设计模式的开发人员都能使用单个对象,并且可以通过这种方式告诉对方,程序使用的是单例模式。 最佳的实践 设计模式已经经历了很长一段时间...
spring总结
spring 简介 Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。 目的:解决企业应用开发的复杂性。 2004年3月24日,Spring框架以interface21框架为基础,经过重新设计,发布了1.0正式版。 理念:使现有的技术更加容易使用,本身就是一个大杂烩,整合了现有技术框架。 Rod Johnson,Java和J2EE开发领域的专家。Spring框架的创始人,同时也是SpringSource的联合创始人。Spring是面向切面编程(AOP)和控制反转(IOC)的容器...
java8
java8 java8新特性简介: 速度更快 代码更少(增加了新的语法Lambda表达式) 强大的Stream API 便于并行 最大化减少空指针异常Optional 其中最为核心的为Lambda表达式与Stream API Lambda表达式 Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使java的语言表达能力得到了提升。 java8中引入了一个新的操作符 -> 该操作符称为箭头操作符或Lmabda操作符,箭头操作符将Lambda表达式拆分成两部分: 左侧:lambda表达式的参数列表 右侧:Lambda表达式中所需要执行的功能,即Lambda体 语法一:无参数,无返回值 () -> System.out.print(“Hello Lambda”); @Testpublic void test1(){ Runnable runnable1 = () -> System.out.println("H...
jenkins
jenkins简介 简介 Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。 Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。 CI全称 Continuous Integration,表示持续集成 CD 持续交付Continuous Delivery和持续部署Continuous Deployment Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具。主要做的事情就是从git中拉取代码,根据配置信息打包;把打好的包传输到目标服务器,并可以执行一些shell脚本,使项目打包发布一键完成。 Jenkins 用户手册 Jenkins 的安装和设置 jenkins官网 清华大学开源软件镜像站 持续部署、持续集成、持续交付。 安装gitlab[官网文档] gitlab官方网站 极狐GitLab 极狐GitLab下载安装 安装和配置...
openFeign简介
openFeign简介 openFeign使用 在消费者pom.xml引入如下依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency> 在启动类上加注解@EnableFeignClients @SpringBootApplication@EnableDiscoveryClient@EnableFeignClientspublic class NacosConsumer { public static void main(String[] args) { SpringApplication.run(NacosConsumer.class,args); }} 在服务提供者中有这样一个controller @RestControllerp...
Nacos简介
Nacos简介 D:\nacos-server-1.4.2\nacos\bin>startup.cmd"nacos is starting with cluster" ,--. ,--.'| ,--,: : | Nacos 1.4.2,`--.'`| ' : ,---. Running in cluster mode, All function modules| : : | | ' ,'\ .--.--. Port: 8848: | \ | : ,--.--. ,---. / / | / / ' Pid: 16400| : ' '; | / \ / \....














