note004-20180927-1

mysql下 int
int:普通大小的整数。带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。
tinyint:很小的整数。带符号的范围是-128到127。无符号的范围是0到255。
基本上主键使用int,枚举类型的取值、status等使用tinyint

Idea下常用操作
install deploy 跳过单测
mvn install -Dmaven.test.skip=true


mvn 控制台乱码 -Dfile.encoding=GB2312 -Dfile.encoding=UTF-8


Idea下搭建Gitlab指定工程名的 dubbo微服务springboot工程
前提环境:拥有Gitlab权限者会在Gitlab上把消费者和服务者工程名创建好,比如 RIS-API(消费者) RIS-RaceService(服务者)

搭建 RIS-RaceService(服务者)
思路:服务者包括两个工程,对外服务接口工程api,和 内部实现接口工程 core。所以咱们创建一个父工程,下面2个子工程继承它。
S1 创建服务者父工程
这里要注意创建父工程名要和Gitlab上创建的工程名保持一致。
1.1 File->New Project->Maven->ProjectName: 输入 RIS-RaceService
1.2 删除父工程的src文件夹
1.3 修改pom.xml
modelVersion节点下加上 <packaging>pom</packaging>节点,指定为pom (意思是 pom 项目里没有java代码,也不执行任何代码,只是为了聚合工程或传递依赖用的)
然后根据需要可以添加 parent节点、properties节点、dependencyManagement节点,如:
<parent>
<groupId>com.csljc.g3</groupId>
<artifactId>g3-parent</artifactId>
<version>1.0.3-SNAPSHOT</version>
</parent>

<properties>
<g3-base_version>1.0.3-SNAPSHOT</g3-base_version>
<wcs-base_version>1.0.3-SNAPSHOT</wcs-base_version>
</properties>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.csljc.g3</groupId>
<artifactId>g3-base</artifactId>
<version>${g3-base_version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.csljc.g3</groupId>
<artifactId>wcs-base</artifactId>
<version>${wcs-base_version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

S2 创建子工程 api
右击项目名称-选择New->Module->......
在pom.xml加入你要的dependencies
在子工程src/main/java下 根据需要创建包名,如: com.csljc.g3.wcs.api
在 com.csljc.g3.wcs.api下创建接口,如 ISinglePoolCloseControlService
在 com.csljc.g3.wcs.api下创建dto包,如 dto
S3 创建子工程 core
右击项目名称-选择New->Module->......
根据需要在pom.xml加入你要的properties、dependencies、build
在子工程src/main下创建 assembly文件夹(用于启动)(assembly工作里只有 /bin/setenv.sh)
在子工程src/main/java下 根据需要创建包名,如: com.csljc.g3.wcs, 在此包下根据需要创建 aspect/LogAspect、constants、domain、enumeration、exception/DubboExceptionInterceptor、impl、service/接口ISinglePoolCloseService、service/impl、service/model、service/redis、store/closecontrol、store/poolodds、store/closecontrol/ISinglePoolCloseStore、store/closecontrol/dao、store/closecontrol/impl、store/closecontrol/model、util、WcsSinglePoolControlMain

S4 RIS-RaceService根目录下添加.gitignore文件,内容参考
/.idea/
/.cache/
/target/
/.iml/

ris-raceservice.iml

/ris-raceservice-api/target/
/ris-raceservice-api/.cache/
/ris-raceservice-api/ris-raceservice-api.iml

/ris-raceservice-core/target/
/ris-raceservice-core/.cache/
/ris-raceservice-core/ris-raceservice-core.iml

S5 启动不报错,就提交gitlab

Q: Idea下怎么启动springMVC项目
A:
springMVC项目用Idea打开,会发现无法Run。 也找不到 启动类(PS:包含main方法的启动类是 springboot的)。
思路:springMVC项目要想启动,是需要借助tomcat的。 那么首先idea需要配置tomcat。其次要设置 springMVC 项目关联到tomcat。 最后,启动(idea里启动,idea会自动将项目部署到tomcat里,从而发现项目可以浏览)。
S1 idea配置tomcat
tomcat安装启动
1.1 windows需要先下载个tomcat安装包,比如apache-tomcat-8.0.48。
1.2 然后配置系统环境变量
1.3 cmd输入startup启动tomcat。(测试tomcat是否可启动)
idea配置tomcat
1.1 ctrl+alt+s 搜索 Application Servers --> 选择 + 号 --> 选择Tomcat Server --> 选择tomcat安装包路径,点击OK 即可

S2 idea里设置springMVC项目关联到tomcat
即 Run --> Edit Configurations --> 点击 + --> 选择 Tomcat --> 选择 Local --> 设置个Name名称 --> 选择 Deployment选项tab --> 点击下面的 + --> 选择你的springMVC项目 --> OK
这样Idea 就会 出现 启动的 按钮了,点击启动即可。浏览器输入url即可看到页面。

PS: 可参考 https://www.cnblogs.com/Leo_wl/p/4459274.html


tomcat
windows下安装启动tomcat:https://www.cnblogs.com/beginner-boy/p/7806680.html

Nginx
正向代理: 代理客户端,如FQ软件,代理客户端去访问目标server,目标server就一个,对服务端透明。(服务端不知道客户端有代理)
反向代理: 代理服务端,如nginx,代理很多服务器。对客户端透明(客户端不知道服务端有代理)。

nginx ip_hash
技术原理:将客户端ip 通过算法 hash 到后端某台server。后期这个客户端请求将直接访问那个server,解决了session问题。
使用前提:nginx必须是客户端链接的最前端服务器,这样才能保证 nginx拿到的ip是客户端的ip。

不推荐使用-原因
1. nginx不是客户端最前沿连接的服务器。即如果客户端和nginx之间 存在其它 网关/路由器 服务器,那么nginx拿到的ip,就是这个 网关/路由器 的ip。这样不论多少个客户端请求,对nginx而言获取的都是这个 网关/路由器的ip,这样ip_hash只能hash到后台的一个server。即后台不管多少台server,只有一个server起作用。
2. 要求使用redis搭建分布式session。 如果整个系统设计要求 使用redis搭建分布式session,那么ip_hash也不推荐使用。
个人理解:
ip_hash解决的是 负载均衡中,客户端始终hash到后端某台Server,解决session问题。
分布式session是 负载均衡中,客户端根据负载算法,请求到后台Server,客户端和后端Server是不hash的,不是死的对应关系。 这样分布式Session就可以解决后台 多台Server都可以访问到某客户端的session。因为session信息不是存在后台Server的,而是存在Redis里。

数据库
组合索引
有A、B、C、D四列,查询经常根据 B、C两列进行查询,这样我把B和C 两列创建组合索引,这样查询快速。

不可重复读和幻读的区别
不可重复读(Non-repeatable reads):在同一事务范围内读取两次相同的数据,所返回的结果不同。比如事务B第一次读数据后,事务A更新数据并commit,那么事务B第二次读取的数据就与第一次是不一样的。
不可重复读对应的表的操作是更改(UPDATE),而幻读对应的表的操作是插入(INSERT),两种的应对策略不一样。对于不可重复读,只需要采用行级锁防止该记录被更新即可,而对于幻读必须加个表级锁,防止在表中插入数据。有关锁的问题,下面会讨论
Spring的事务配置会覆盖mysql的默认隔离级别

高并发
解释了乐观锁和悲观锁的使用场景
https://blog.csdn.net/kisscatforever/article/details/54291469
PS: 乐观锁是允许事务并发执行,但是使用versionNo保证了只有一个事务update成功。
悲观锁是采用禁止并发,使用同步的方式来保证只有一个事务update成功。因为是同步执行的嘛,后续事务只能排队等后。
悲观锁在java里 使用 synchronized 对方法同步。在 数据库里使用 for update语句

SpringBoot
1. Spring Boot构建RESTful API与单元测试 https://www.jianshu.com/p/9698bf98fab1
2. Spring Boot中使用@Async实现异步调用 https://www.jianshu.com/p/21f220c12199
3. springboot 中 log4j2的使用及配置讲解 https://blog.csdn.net/sdlyjzh/article/details/79416607
4. 多环境配置 https://www.jianshu.com/p/ad102217ac6c PS:配置文件进行配置,通过命令选择启用哪个配置
5. Spring Boot中使用AOP统一处理Web请求日志 https://www.jianshu.com/p/b1d5485ca6ed


Linux
VM
1. windows本机和linux虚拟机 IP互ping
s1-> 虚拟机右击->设置->网络适配器->选择NAT
s2-> 进入虚拟机,点击网络连接的电脑logo,将Wired设为ON
s3-> 验证:点击Wired发现,IPv4地址有了
s4-> ping 测试
PS: NAT模式采用本机的VM8网卡设置的。所以要设置本机VM8属性。--> 双击IPv4 --> 选择使用下面的IP地址
IP地址: 192.168.75.1
子网掩码:255.255.255.0


excel
1. 同屏幕多个excel全部显示
打开需要同屏幕下看的所有表格,然后点击视图-->选择窗口里的“全部重排”

Java VisualVM 使用

猜你喜欢

转载自www.cnblogs.com/luckzhang/p/9712021.html