nginx学习笔记
nginx简介反向代理,负载均衡,动静分离
nginx安装下载nginx,下载:nginx-1.24.0.tar.gz,下载后上传到/usr/local/src目录下,解压
安装 pcre,zlib,openssl,zlib 依赖
yum install -y pcre pcre-devel
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
安装nginx
cd /usr/local/src
tar -xvf nginx-1.24.0.tar.gz
cd nginx-1.24.0/
./configure
make && make install
启动nginx需要进入/usr/local/nginx/sbin目录
cd /usr/local/nginx/sbin
./nginx
nginx默认80端口,安装后,不能访问,需要对防火墙进行设置
查看开放的端口:firewall-cmd --list-all
设置开放的端口号:firewall-cmd --add-port ...
SpringCloud学习笔记
参考文档
Spring Cloud教程-程序猿DD
学习笔记
Spring Boot学习笔记
Spring Boot学习笔记
参考文档
Spring Boot 2.x入门教程
我的笔记
Spring Boot的主要优点:为所有Spring开发者更快的入门。开箱即用,提供各种默认配置来简化项目配置。内嵌式容器简化Web项目。没有冗余代码生成和XML配置的要求。
创建基础项目:Spring Initializr
多环境配置:spring.profiles.active=test
application-dev.properties:开发环境。
application-test.properties:测试环境
application-prod.properties:生产环境
自定义参数:@Value
参数引用:book.desc=${book.author} is writing《${book.name}》
使用随机数:${random},${random.value},${random.int},${random.long},${random.int(10)},${random.int[10,20]}
命令行参数:
java -jar ...
mysql学习笔记
DDL:Data Definition Languages,数据定义语言。对数据库内部的对象进行创建、删除、修改的操作语言。这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。
DML:Data Manipulation Language,数据操纵语句。只是对表内部数据的操作,而不涉及到表的定义、结构的修改,更不会涉及到其他对象。用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、udpate 和select 等。
DCL:Data Control Language,数据控制语句。用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等。
查询所有数据库:SHOW DATABASES;
创建数据库:
CREATE DATABASE itcast;CREATE DATABASE if NOT EXISTS itcast;CREATE DATA ...
github项目
github优秀项目
github项目名称
gitee项目地址
项目简介
JavaGuide
JavaGuide
Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识
CS-Notes
技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计
advanced-java
advanced-java
互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识
architect-awesome
后端架构师技术图谱
toBeTopJavaer
toBeTopJavaer
Java工程师成神之路
technology-talk
汇总java生态圈常用技术框架、开源中间件,系统架构、数据库、大公司架构案例、常用三方类库、项目管理、线上问题排查、个人成长、思考等知识
JavaFamily
【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识
JCSprout
JCSprout
处于萌芽阶段的 Java 核心知识库
fullstac ...
线程池
简介线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。
一种使用线程的模式,存放了很多可以复用的线程,对线程统一管理。我们可以使用new的方式去创建线程,但若是并发线程太高,每个线程执行时间不长,这样频繁的创建销毁线程是比较耗费资源的,线程池就是用来解决此问题的。
线程池的优点:
降低资源的消耗:线程可以重复使用,不需要在创建线程和消耗线程上浪费资源;
提高响应速度:任务到达时,线程可以复用已有的线程,及时响应;
可管理性:无限制的创建线程会降低系统效率,线程池可以对线程进行管理、监控、调优。
线程池的继承关系:
ThreadPoolExecutor Thr ...
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. ...
Eureka简介
Eureka简介
什么是服务治理?
服务治理就是提供了微服务架构中各微服务实例的快速上线或下线且保持各服务能正常通信的能力的方案总称。
服务治理的优点:
更高的可用性
服务治理可以支持动态的服务实例集群环境,任何服务实例可以随时上线或下线。并且当一个服务实例不可用时,治理服务器可以将请求转给其他服务提供者,当一个新的服务实例上线时,也能够快速地分担服务调用请求。
负载均衡
服务治理可以提供动态的负载均衡功能,可以将所有请求动态地分布到其所管理的所有服务实例中进行处理。
提升应用的弹性
服务治理的客户端会定时从服务治理服务器中复制一份服务实例信息缓存到本地中,这样即使当服务治理服务器不可用时,服务消费者也可以使用本地的缓存去访问相应的服务,而不至于中断服务。通过这种机制,极大地提高了应用的弹性。
高可用性集群
可以构建服务治理集群,通过互相注册机制,将每个治理服务器所管辖的服务信息列表进行交换,使服务治理服务拥有更高的可用性。
Spring Cloud封装了Netflix公司开发的Eureka模块来实现服务治理。在传统的rpc远程调用框架中,管理每个服务之间的依赖关系比较 ...
设计模式
设计模式简介设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。
开发人员的共同平台
设计模式提供了一个标准的术语系统,且具体到特定的情景。例如,单例设计模式意味着使用单个对象,这样所有熟悉单例设计模式的开发人员都能使用单个对象,并且可以通过这种方式告诉对方,程序使用的是单例模式。
最佳的实践
设计模式已经经历了很长一段时间的发展, ...