- 浏览: 51227 次
- 性别:
- 来自: 深圳
最新评论
-
小天开始学java:
讲的太宽泛,等于没说
Java开发面试考察点
文章列表
背景:
最近花了一天在处理一个生产环境问题,
客户端(发送数据):通过HTTP的GET请求,传输参数中带有“+”加号。
服务端(接收数据):“+”加号变为空格。
因为是签名数据,导致服务端验证签名不通过,算比较严重的问题。
解决问题示例(多个解决方案):
示例1(请求url的参数采用直接拼装的方式)(失败):
package com.qhfax.test;
import com.qhfax.common.util.HttpClientUtil;
public class HttpGetTest1 {
public static void main ...
Java开发人员学习书籍--5年工作中积累的130本电子书(花一天时间对现有电子书进行整理):
会话缓存
session
控制访问频率
防止洪水攻击
限制IP在一段时间的最大访问量
社交列表
Hash类型
用户收藏列表
社交场景
交集、并集、差集
共同收藏
共同爱好
最新动态
sorted set类型
缓存
热点数据,如可能读取数十万的数据
分类栏目
基于内存存储数据
时效性
有效期
验证码超时控制
计数器
原子递增
收藏数
记录用户判断信息
用户是否已收藏
热门列表与排行榜
排序
排行榜
...
参考:https://mp.weixin.qq.com/s/-qqr8iB_VgAcDkD6_rewfg
总结:
1、HTTP协议安全隐患:窃&听、伪装、篡改。
通信内容无加密可能被窃&听。
通信方身份无验证可能遭遇伪装。
报文完整性无校验可能遭遇篡改。
2、如何构造安全 ...
示例系统:存放百度SDK记录运营商游戏的交易信息
1、背景(2012年左右):
当时开始简单的主从结构,随着数据量增大、规模扩大、对高可用要求越来越高(之前从宕机两小时到后来五分钟),需要继续拓展。
当时的数据库拆分、分库分表,数据库服务器达到4百台,只有一个DBA,每天的数据迁移、拓容很痛苦。
当时数据库峰值能达到每秒2.5万笔。当时淘宝双十一每秒峰值30万笔。
2、为什么使用mysql
社区(主要)、免费
3、mysql目前存在问题
1、单机性能
如果是小网站,每天PV几十万、几百万,数据量不超过1个亿,都不会问题。
数据量大、操作量大,就不行。
a、QPS(读/写 ...
Memcached
redis
类型
key-value数据库
key-value数据库
过期策略
支持
支持
数据类型
单一数据类型
五种数据类型
持久化
不支持
支持
主从复制
不支持
支持
虚拟内存
不支持
支持
session放在memcached里面,memcached不容易宕机。
购物车放redis里面,考虑如果丢失,对用户体验不好,所以用redis。
redis五种数据类型:
字符串类型(SET、GET)
散列类型(HSET、HGET)(HASH)(生产使用比较多的类型)
列表类型 ...
1、java拦截器类:
package com.qhfax.extend.mybatis;
import java.text.DateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Properties;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis. ...
今天为了定位一个“ Subquery returns more than 1 row”的问题,基于查询sql少复杂,虽然能明显看出是子查询中返回多条记录导致报错,但问题是哪个数据导致的,父查询中有那么多挑记录?
正常情况下呢,是要了解业务,一点点去分析问题出在哪里,数据是哪里?
当为了快速定位,我看到了查询的sql是带有日期条件的,而且只是一个月内,数据量也不多。
步骤一:
那就采用“二分查找法”,一个月范围查询报错,缩小到半个月,...,很快,最终缩小到一天之内。
因为改字段是日期字段,最小只有精确到一天,当数据还有十几条。
步骤二:
这是懂业务的好出来了,马上想到另外一个时间 ...
鉴于最近在招java开发人员,自己补充并整理的面试题、笔试题,总结一下主要考察点:
1、逻辑思维能力
2、代码编写能力
3、数据库sql编写能力
4、java基础
5、web
6、框架
7、技术积累
8、解决问题能力
9、学习能力
jvm:虚拟机、字节码、平台无关
程序计数器、java虚拟机栈、本地方法栈,线程私有。
方法区、java堆:线程公有。
栈:保存参数、局部变量、中间计算过程和其他数据。
方法区:类信息,常量池,静态字段,方法
堆:java对象
方法区物理上存在于堆上,在堆的持久代里面;逻辑上,方法区跟堆是独立的。
jvm堆配置参数
1、-Xms 初始化堆大小 默认物理内存的1/64(<1G)
2、-Xmx最大堆大小 默认物理内存的1/4(<1G)实际应用不建议大于4G
3、一般建议设置-Xms=-Xmx,好处避免每次gc后,调整堆大小,减少系统内存分配开销
...
1、为什么要掌握大型网站开发技术
对于开发人员,可以仿照“京东网”,开发出一个类似京东网功能的网站。但就能让多少人访问的问题而言,也许超不过100人访问就瘫痪、卡死。
“京东网”能承受几千万、上亿的访问量,差别就在于细节技术上。
比方:钢铁厂造出的钢材可能用来造卫星的,铁匠铺造出来的钢材可能只能做个锄头。从事的人,在以后的行业发展,肯定也不一样。
比方:百度要是用like查询做搜索的话,早就不知道死过多少回。
一个程序员看一个网站,能不能看出门道来,能不能看到系统复杂到什么程度。这是初级程序员跟高级程序员的区别。
“1号店”搜索“纸巾”,能查出“纸手帕”,涉及到搜索引擎、搜索词 ...
原文出处: 挨踢江湖
引言
其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来。LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的。
但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了。
其实之前LZ写过一篇文章,但是那篇文章更多的是在讨论“面试前该不该刷题”这个话题,而这篇文章将会更加聚焦在面试前如何准备,以及工作当中如何学习这个话题上,而且会尽量写出一些干货。
第一个问题:阿里面试都问什么?
这个 ...
Java相关
Java GC机制(重要程度:★★★★★)
主要从三个方面回答:GC是针对什么对象进行回收(可达性分析法),什么时候开始GC(当新生代满了会进行Minor GC,升到老年代的对象大于老年代剩余空间时会进行Major GC),GC做什么(新生代采用复制算法,老年代采用标记-清除或标记-整理算法),感觉回答这些就差不多了,也可以补充一下可以调优的参数(-XX:newRatio,-Xms,-Xmx等等)。详细的可以看我另一篇博客(Java中的垃圾回收机制)。
如何线程安全的使用HashMap(重要程度:★★★★★)
作为Java程序员还是经常和HashMap打交道的,所以Ha ...
为什么要进行优化?
避免由数据库链接timeout产生页面5xx的错误
避免由于慢查询造成页面无法加载
避免由于阻塞造成数据无法提交
优化用户体验
可以从哪几个方面进行数据库优化?