- 博客(59)
- 收藏
- 关注
原创 java NIO基本操作
基本概念selector 选择器channel 管道一个selector管理多个channel绑定监听套接字,并启动接收器//唤起一个选择器Selector selector=Selector.open();//ServerSocketChannel可以监听新进来的TCP连接的通道,可多个,可选择阻塞和非阻塞模式获取ServerSocketChannel s
2017-07-13 12:24:39
359
原创 缓存穿透优化
一、缓存穿透概述为了提高响应时间,服务架构上,在db存储层上,通常会有缓存层。缓存穿透是指:1.缓存不命中2.存储层不命中,不将空结果写缓存3.返回空结果缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去缓存保护后端的意义。二、缓存穿透原因1.自身业务代码或者数据出现问题2.恶意攻击造成的三、解决方案1.缓存空对象不命
2017-07-07 07:48:18
421
原创 redis实现阻塞轮训队列
redis实现队列有数据丢失的风险,在一些不要求高可用的需求里,可以在不引入消息队列的情况下,实现轮训队列。java客户端实现代码 while (true) { Jedis jedis = RedisUtil.getJedis(); try { //阻塞队列,1小时没有数据释放连接
2017-06-26 15:17:22
5489
原创 CloseableHttpAsyncClient忽略https的证书验证
https比http安全是因为,网络通信协议里边有数字签名和证书等概念阮一峰写的科普文解释数字签名:http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html使用apache httpclient客户端api忽略证书验证代码:初始化连接池客户端:private static PoolingN
2017-06-26 15:05:12
4865
1
原创 爱奇艺面试
1 线程数参数设计的一些经验原则,队列内存溢出问题2 cdn回源的设计3 会员非会员返回不同的接口数据设计4 spring aop实现细节,注解的加载过程
2016-08-27 09:28:42
1113
原创 两个线程依次输出list集合里边的数
package com.sohu.smc.base.test;import java.util.ArrayList;import java.util.List;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;/** * Created by pen
2016-08-23 14:08:36
736
原创 kafka学习
http://www.cnblogs.com/likehua/p/3999538.html 原文链接整理下kafka的内容1.为什么使用zookeeper,它在kafka集群中扮演什么角色2.kafka的使用场景,优缺点3.一些名词的概念,topic consume producer broker offset partition replicas leader round-r
2015-10-05 22:31:12
259
原创 redis学习
这个是链接,讲的很详细,我对照了项目中的代码和源码跟了一遍。http://swinepig.readthedocs.org/zh_CN/latest/pragram/ShardedJedisPool.html后续不上过程摘要
2015-10-04 22:02:43
341
原创 项目经验
maven:使用properties属性统一版本号使用profiles属性区别开发还线上环境配置文件使用module拆分模块,使用的就是maven的依赖集成作用在build标签中使用resource来加载配置文件和src例子resources> resource> directory>${basedir}/src/main/resourcesdi
2015-10-04 12:13:22
454
原创 idea快捷键
ctri n快速打开类ctrl shift n快速索引到所有类型文件(包括jsp等)navicat 打开sql命令行快捷键 ctrl+qnavicat 更改表结构,在要更改的表右键 设计表设计数据库的时候使用外键吗?数据库的诸多设计,帐号,权限,约束,触发器,都是为 C/S 结构设计的,是以 C 端不可信做为假设前提的。B/S 模式安全边界前移到 web 服务层
2015-08-11 21:52:42
300
原创 学习笔记
jdk中Arrays sort方法源码分析:分为基本元素排序和对象排序基本对象使用快排,对象使用归并排序。原因是归并排序具有稳定性,在对对象排序的情况会有这个要求。这其中还会有优化:当元素小于7时,直接使用冒泡排序,因为在元素个数比较少时,快排和归并排序存在递归调用,在元素比较少的情况下,开销比较大。在快速排序的比较因子的选择上优化,其中元素个数小于7选中间的,大于7小于40,
2015-07-08 10:31:25
370
原创 Bloom Filter布隆过滤器
概述:布隆过滤器是一种空间效率很高的随机数据结构,是用位数组表示的一个集合他能判断一个元素是否在这个集合内(概率),就是说如果通过布隆判断不在,那么一定不在,但是会存在漏判的情况:如果判断元素存在集合中,有一定的概率判断错误适用场景:在能容忍底错误率的应用场景下,它极大的节省了空间基本原理:m位的位数组,初始状态都为0k个独立的hash函数,通过把元素计
2015-07-05 11:07:32
341
原创 java实现策略模式
适用场景:一个业务有多个实现场景,3个以上的算法。好处:解耦和,代码层次清晰,符合面向对象的特点缺点:客户端代码类需要知道所有的策略,才能知道调用哪个类集成关系:各个策略实现一个接口(IParseStrategy),在一个环境类(ContextClass)里包含策略接口的引用,环境类通过包含构造函数或者set方法把需要的策略赋给接口引用,再包含一个对客户端暴漏的方法,这个方法里通过
2015-07-05 09:40:02
359
原创 i am freshman
结合最近开发的一个任务碰到的问题,看了写书籍博客,总结下经验。问题流水1、数据库断开连接bug,应用服务器与数据库不再同一个网段导致的,需要添加重连机制。2、current transaction is aborted, commands ignored until end of transaction blockp这个错误的意思是一个事务中碰到异常之后,没有最
2015-07-04 20:43:42
448
原创 程序员需要知道的10大编程格言
原文地址http://blog.csdn.net/hguisu/article/details/7497170there is no smoke without fire(无风不起浪)a ounce of prevention is worth a pound of cure(预防为主,治疗为辅)do not put all eggs into one basket(不要把鸡蛋放到
2015-07-04 20:16:57
593
原创 书单
现在碰到同行业的人聊天喜欢问别人最近在看什么书,在别人工位瞎逛游时也喜欢看他桌子上放些什么书。列个书单,看完争取写点读后感深入理解java虚拟机大话设计模式程序员修炼之道黑客与画家构建高性能的web站点沧浪之水java并发编程实战曾国藩税法(注会)
2015-07-04 18:34:39
592
原创 搜狐面试mark
第一次去搜狐的那个楼,盈科大厦,感觉写字楼建的真不错,看到好多别的知道的公司在那vmvare intel面试先笔试,我只把自己感觉没答好的记录下来1、海量数据查找出现次数最多的前十个2、垃圾回收算法中cms收集器,G1收集器的大致原理3、LoggerReader程序的主备实现机制还是需要在捋一捋,分流程序的作用是什么,之前也想过这个问题,是不是冗余,乱序问题4、项目的架构图
2015-06-16 23:52:24
421
原创 jvm内存模型
java内存模型如图所示,其中方法区和堆是线程共享的程序计数器是一片很小的内存区域,用于指示字节码运行到第几行虚拟机栈存储局部变量表、操作站、动态链接、方法出口等,局部变量表中包含基本数据类型、对象的引用、返回地址等本地方法栈跟虚拟机栈用法类似,唯一的区别是本地方法栈用来执行native方法堆jvm内存模型中最重要的部分,堆的内存模型。用于存储对象的实例
2015-06-11 21:41:17
423
转载 web前端基本知识
1、jsp内置对象requestresponsesessionoutpageapplicationexceptionpageContextconfig2、session和cookie的区别1、cookie数据存放在客户的浏览器上,session数据放在服务器上。2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行
2015-06-11 10:32:47
274
转载 redirect与forward区别
1.从地址栏显示来说forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.2.从数据共享来说forward:转发页面和转发到的页面可以共
2015-06-11 10:02:12
267
原创 春雨医生面试
春雨医生的工作地点在中关村768创业园区,离家还挺近,可以接受。网上查了一下,看已经c轮融资了,c轮融了5000万美元。面试我的人目测工作3、4年了,最后他问我有什么问题的时候,很想问问他工作多久了,怎么来的春雨,有没有期权哈。人挺好的,交流的过程会有介绍他们自己在做什么,怎么做的。最近面的多了,项目也了解的多了,介绍项目的时候还算顺利,他也问的不是很深,有几个地方还需仔细在研究下
2015-05-29 13:20:59
1278
原创 java面试笔试题基础笔记1
看了别人的一篇博客,java笔试题的自己做个笔记,java基础笔试题,刚看到那篇博客还有但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接否则保留追究法律责任的权利吓尿,赶紧先把链接帖下:http://blog.csdn.net/lanxuezaipiao/article/details/167537431、String基础,结果是fa
2015-05-17 19:34:46
416
原创 java实现打印1到100的质数
最基本的方法,可以通过去掉偶数进行简化package practiceCode;public class PrimeNumber { public static void print(){ for(int i=2;i<100;i++){ boolean flag=true; for(int j=2;j<i;j++){
2015-05-17 15:04:31
1399
原创 java实现阿拉伯数字转汉字
满足主函数中的测试用例。实现最基本的基础上通过,string replaceAll方法替换一些特殊用例replace和replaceAll的区别replaceAll使用的参数可以是正则表达式package practiceCode;public class HanziTransfer { public static String transform(int num){
2015-05-17 14:59:15
623
转载 java内部类的使用场景
java内部类的分类:有成员内部类,局部内部类,静态内部类,匿名内部类内部类可以继承外部类的父类,这为有些场景的实现提供了方法,因为java只能单继承。内部类的一个作用是:匿名内部类:这个描述很简单易懂http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html待不上:
2015-05-15 22:56:30
346
原创 阿里面试
阿里面试时通过电话进行的,他说会耽误我20分钟,结果面了有一个多小时。面试也是问些常问的知识点jvm的内存模型、垃圾回收jvm参数调优B+树问我懂不懂知道哪些设计模式spring用到了哪些设计模式规则引擎问的很深,估计他们再用数据推送的模式push和pull细节问了好多,估计他们也是经常问到,问他们各自的特点如何保证它的消息有序一致性哈希也问到了海量数据
2015-05-15 22:55:31
583
原创 58同城面试
58也是通过拉勾网投递的简历面试是约到上午,头一天上线,我就没有请假。这回去的很早,面试我的是个目测工作3-5年的小伙子。技术应该挺扎实面试前半段聊得还不错,项目说的很清楚。这回自己感觉栽到编码基础上。他给我几道题做,第一个是常见java string的知识第二个是for循环的执行顺序题如图所示,结果应该是ABDCBDCBpackage test;public cla
2015-05-15 22:24:28
1060
原创 艺龙网面试
上周面了三个地方,艺龙网通过拉勾网投递的简历艺龙在798附近,因为是下班赶过去的,路上很堵,从望京过有名的大山子桥,简直就是大山子的战斗机。一个红灯有10分钟,而且只有一个直行车道。耽误的有半个小时,一面我的技术人员也不知道是真有事提前走了还是这是拉勾网的渠道,总之感觉不是很靠谱。直接面试我的是一个技术总监级别的人。面试一开始问我为什么换工作,我脑子短路,说我不喜欢现在的工作,
2015-05-15 22:22:33
1756
转载 HTTP返回码
比较全的链接http://www.cnblogs.com/liulei/archive/2010/05/25/1743315.html我知道的200成功403服务器接受请求,但是拒绝404服务器没有找到url资源502bad gateway
2015-05-09 23:54:51
356
原创 servlet线程安全不安全
先把原文贴出来http://blog.csdn.net/lcore/article/details/8974590自己描述下读后感:结论:servlet是线程不安全的问什么咧,先看下定义,什么叫做线程安全?说白了,就是两个线程同时访问一个方法或变量,如果存在不一样的情况,就说明这个类是线程不安全的。什么情况会导致线程不安全呢?一个类的方法只有一个add() a+b;
2015-05-09 23:32:31
540
转载 一致性哈希
http://blog.csdn.net/cywosp/article/details/23397179直接贴出一篇介绍的很清楚的博文。关键字一致性哈希平衡性,单调性,分散性,负载其实说白了,就是解决把请求分散到不同的机器上运算,怎么做分散的平均,机器少一台多一台,或者坏掉一台,成很好的自适应和拓展。最简单的实现分布式算法,取模嘛,但是它就上述的一些问题,所以不算好的哈希函
2015-05-09 23:15:12
267
原创 网易面试
班车到公司,我买了个橙子和饭团吃,没回公司,就直接去网易面试列,到了之后感觉有点累,洗把脸,缓了缓就进去了。网易的流程是先做一套题。面试的过程没再让写代码。把掌握不好的几道题写出来笔记下:空间复杂度是1的字符串反转,单链表反转二选一,路上看了单链表就写的第二个。单链表反转:package reverseString;public class ReverseString {
2015-05-09 17:16:01
390
原创 京东面试
昨天去京东面试,昨天比较在意面试结果,导致前天晚上没睡好。早上起来不是很有精神,还背着个电脑,走路有点晃,音浪太强,不晃会掉到地上~可能是太累了,上午是倒休时间不用请假,下午按理说该跟leader说一声,我又任性了一把,反正这个sprint的任务完成了。坐公交车的时候还碰到了艳遇,一妹子没带零钱上车,很囧的时候,我怎能错事这种毫不费劲的搭讪机会,耶。面试的地点在杏石口桥附近,我一看
2015-05-09 08:23:48
954
原创 代码大全笔记2
伪代码编程步骤决定如何测试子程序,测试用例,测试驱动开发在程序库中寻找已经实现的接口类考虑下错误处理考虑效率问题,这个实践中需要进一步验证,看到底效率在什么情况下重要,什么时候考虑优化代码。研究算法和数据类型编写伪代码,这个我个人习惯是在纸上写出伪代码,在伪代码逻辑没有走通的情况下,不要下手写代码,这样只会东拼西凑,在编写的过程中,纠结与细节,迷失目的。编写好伪代码
2015-05-03 19:43:06
345
原创 代码大全笔记
防御式编程:防御是编程就是使用一些手段增加程序的安全性垃圾进,垃圾不出或垃圾不进是目的。有三种方法:1检查所有的外部数据的值,比如让整数溢出的值,字符串过长,让内存缓存溢出的数据。当有这样的数据传来时,不接受。2程序内部接口入口参数数据检查,和1本质上一样。3决定如何处理垃圾的输入数据,如果已经接受了这种垃圾数据,怎么输出有个策略:即使优先正确行还是程序的健壮性。比如是银行
2015-05-03 17:36:48
349
原创 Eclipse快捷键
记录备份下工作中常用的快捷键alt shift r 对变量重命名ctrl o 显示类的方法和属性alt 方向键 移动代码ctrl shift f 根据eclipse导入的格式化模板格式化代码ctrl shift l 显示设置快捷键alt / 自动补全代码包括for循环,集合类ctrl alt h 显示方法被哪些类调用ctrl shift f 格式化代码alt
2015-05-03 15:03:28
266
转载 java的类加载机制
网上看了一篇介绍类加载机制的博文,介绍的跟清晰,记录下概要笔记1、类加载机制是干嘛用的2、有哪些类加载器3、这些类加载器是如何工作的4、如何实现自定义类加载器1、java文件要想运行,是要先编译成class文件,我们的java程序打好jar包,启动时会有一个入口类入口函数,在这个类中会引入一些别的class文件的方法,如何找到这一层一层关联的class文件加载到内存
2015-04-04 16:48:53
348
原创 JVM垃圾回收器的GC回收算法
垃圾回收器的种类串行回收器 一个线程回收,单核的情况下效率很高,年轻代并行回收器 多线程回收并发回收器 在工作的间隙回收,对程序来说看着像是没有停止分代回收策略已经说明了回收的时间点和策略,当具体要回收的时候,是回收那些没有引用对象。所以回收器要做的就是两件事,怎么找到没有引用的对象和找到之后采用什么算法回收。找对象有两个方法:1引用计数法,就是对每个对象保存一
2015-04-03 23:39:23
340
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人