项目和项目之间的通信
两个java项目,他们之间进行信息的通信
前提:必须知道要通信的java项目(接收请求方)的服务器的IP地址和访问路径。
其实两个java项目之间的通信还是使用HTTP的请求。主要有两种方式:
①使用apache的HttpClient方式。
②使用JDK自带的java.net包下的HttpURLConnection方式。
HttpURLConnection方式:
HttpURLConnection传递请求常用的有两种方式:POST和GET方式。使用setRequestMethod()方法设置传递的方式。
反爬如何处理
1.通过user-agent进行反爬
2.通过referer进行反爬
3.通过cookie进行反爬
4.通过ip地址进行反爬
5.通过前端样式进行反爬
http://t.csdn.cn/A3Etk
乱码如何解决?
通过 DEBUG 或者打印日志来锁定导致乱码的原因,看看自己的乱码到底是属于哪一种,找到了乱码的原因,问题就解决的差不多了
1. 解决URL地址乱码
如果我们把请求参数放到了URL地址栏中,结果出现了乱码,这个问题在GET、DELETE 等请求中是比较常见的,而解决方案也很简单,我们只需要修改 Tomcat 的 conf/server.xml 配置文件,修改 URL编码格式
1、utf8解决JSP中文乱码问题
2、Tomcat 5.5 中文乱码(利用tomcat已经写好的字符集过滤器)
3、 get方式的解决办法(修改tomcat server.xml,但是不建议使用)
转载于:http://blog.itpub.net/800861/viewspace-969211/
集合的接口和构成有哪些?
1、List接口
List 关心的是索引,与其他集合相比,List特有的就是和索引相关的一些方法:get(int index) 、 add(int index,Object o) 、 indexOf(Object o) 。
ArrayList 可以将它理解成一个可增长的数组,它提供快速迭代和快速随机访问的能力。
LinkedList 中的元素之间是双链接的,当需要快速插入和删除时LinkedList成为List中的不二选择。
Vector 是ArrayList的线程安全版本,性能比ArrayList要低,现在已经很少使用
2、Set接口
Set关心唯一性,它不允许重复。
HashSet 当不希望集合中有重复值,并且不关心元素之间的顺序时可以使用此类。
LinkedHashset 当不希望集合中有重复值,并且希望按照元素的插入顺序进行迭代遍历时可采用此类。
TreeSet 当不希望集合中有重复值,并且希望按照元素的自然顺序进行排序时可以采用此类。(自然顺序意思是某种和插入顺序无关,而是和元素本身的内容和特质有关的排序方式,譬如“abc”排在“abd”前面。)
3、Queue接口
Queue用于保存将要执行的任务列表。
LinkedList 同样实现了Queue接口,可以实现先进先出的队列。
PriorityQueue 用来创建自然排序的优先级队列。
4、Map接口
Map关心的是唯一的标识符。他将唯一的键映射到某个元素。当然键和值都是对象。
HashMap 当需要键值对表示,又不关心顺序时可采用HashMap。
Hashtable 注意Hashtable中的t是小写的,它是HashMap的线程安全版本,现在已经很少使用。
LinkedHashMap 当需要键值对,并且关心插入顺序时可采用它。
TreeMap 当需要键值对,并关心元素的自然排序时可采用它。
什么是内存泄漏,常见引起引起内存泄漏的原因,及解决办法
http://t.csdn.cn/InFPt
什么是内存泄漏,常见引起引起内存泄漏的原因,及解决办法_内存泄露_Lonely池的博客-CSDN博客
内存泄漏也称作"存储渗漏",用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。(其实说白了就是该内存空间使用完毕之后未回收)即所谓内存泄漏。
事务及隔离级别
(2条消息) 【MySql】MySql事务及隔离级别_mysql设置隔离级别_爱穿背带裤的馫的博客-CSDN博客
设计模式
http://t.csdn.cn/Nre3c
23种设计模式概述
同步块和同步方法哪个是更好的选择
同步块是更好的选择,因为它不会锁住整个对象(当然你也可以让它锁住整个对象)。同步方法会锁住整个对象,哪怕这个类中有多个不相关联的同步块,这通常会导致他们停止执行并需要等待获得这个对象上的锁。
post和get的区别
在Web开发中,GET和POST是HTTP方法,用于向服务器发送请求的方式。它们有以下的区别:
- GET方法是用于获取资源的请求,而POST方法是用于提交数据至服务器的请求。
- GET请求的参数会附加在URL的末尾,可以被其他人看到,而POST请求的参数会被放在请求的body中,不会直接暴露在URL中,更安全。
- GET请求可以被缓存,可以被浏览器收藏夹保存,而POST请求不会被缓存。
- GET请求的参数长度受到限制,通常为2048个字符,而POST请求的参数长度没有限制。
- GET请求对数据的类型没有限制,可以发送任何类型的数据,而POST请求可以发送各种类型的数据,如图片、文件等。
总之,GET请求适用于获取数据,POST请求适用于提交数据,且POST请求更安全,可以发送更多类型的数据。
数据库性能调优
数据库优化的四大方法
-
架构优化
-
硬件优化
-
DB优化
-
SQL优化
此上而下,位置越靠前优化越明显,对数据库的性能提升越高。
1.架构优化
1.1分布式缓存
注意:引入分布式缓存后系统需要考虑如何应对缓存穿透、缓存击穿和缓存雪崩的问题。
1.2读写分离
一主多从,读写分离,主动同步,是一种常见的数据库架构优化手段。
适用于读多写少,通过增加从库数量可以线性提升系统读性能。
主库,提供数据库写服务;从库,提供数据库读能力;主从之间,通过binlog同步数据。
当准备实施读写分离时,为了保证高可用,需要实现故障的自动转移,主从架构会有潜在主从不一致性问题。
1.3 水平切分
架构优化小结
- 分布式缓存架构可能比读写分离更适用于高并发、大数据量大场景。
- 读写分离主要是用于解决 “数据库读性能问题”
- 水平切分主要是用于解决“数据库数据量大的问题”
2.硬件优化
更换数据库的硬盘
3.DB优化
数据库实例参数优化遵循三句口诀:日志不能小、缓存足够大、连接要够用。
数据库在架构设计中都会采用如下两个优化手法:
-
先将事务写到日志文件RedoLog(WAL),将随机写优化成顺序写
-
加一层缓存结构Buffer,将单次写优化成顺序写
4.SQL优化
-
合理使用索引
索引少了查询慢;索引多了占用空间大,执行增删改语句的时候需要动态维护索引,影响性能 选择率高(重复值少)且被where频繁引用需要建立B树索引;一般join列需要建立索引;复杂文档类型查询采用全文索引效率更好;索引的建立要在查询和DML性能之间取得平衡;复合索引创建时要注意基于非前导列查询的情况
- 使用UNION ALL替代UNION
UNION ALL的执行效率比UNION高,因为UNION执行时需要排重;
- 避免select * 写法
执行SQL时优化器需要将 * 转成具体的列;每次查询都要回表,不能走覆盖索引。
- JOIN字段建议建立索引
一般JOIN字段都提前加上索引
- 避免复杂SQL语句
提升可阅读性;避免慢查询的概率;可以转换成多个短查询,用业务端处理
- 避免where 1=1写法
- 避免order by rand()类似写法
RAND()导致数据列被多次扫描
执行计划
要想优化SQL必须要会看执行计划,执行计划会告诉你哪些地方效率低,哪里可以需要优化。通过explain sql 可以查看执行计划
SQL优化小结
这里给大家总结一下SQL优化的套路:
- 查看执行计划 explain sql
- 如果有告警信息,查看告警信息 show warnings;
- 查看SQL涉及的表结构和索引信息
- 根据执行计划,思考可能的优化点
- 按照可能的优化点执行表结构变更、增加索引、SQL改写等操作
- 查看优化后的执行时间和执行计划
- 如果优化效果不明显,重复第四步操作
http://t.csdn.cn/7iNWO
以下是Linux常用命令大全:
- cd:切换目录
- ls:列出目录内容
- pwd:显示当前目录
- mkdir:创建新目录
- touch:创建新文件
- rm:删除文件或目录
- cp:复制文件或目录
- mv:移动文件或目录
- cat:显示文件内容
- grep:在文件中查找指定内容
- find:在目录中查找文件
- tar:压缩和解压文件
- gzip:压缩文件
- unzip:解压缩文件
- chmod:修改文件权限
- chown:修改文件所有者
- chgrp:修改文件所属组
- ps:查看进程信息
- top:实时查看进程和系统状态
- kill:终止进程
- ifconfig:配置网络接口
- ping:检测网络连接
- netstat:显示网络状态
- scp:安全地远程复制文件
- ssh:通过SSH协议远程登录服务器
- su:切换用户
- sudo:以超级用户权限执行命令
- apt-get:Debian和Ubuntu下的包管理工具
- yum:CentOS和Fedora下的包管理工具
- man:查看命令的手册页
请注意,这只是一些常用命令的概述,Linux还有很多其他命令和功能。如果您需要更详细的帮助,您可以查阅Linux的官方文档或者使用“man”命令查看命令的详细用法。
JDK1.8新特性
http://t.csdn.cn/7RCBG
stream流
JAVA stream流详细教程_浩骞的博客-CSDN博客