04 2018 档案

摘要:1 什么是过滤器 过滤器是过滤数据,比如过滤低俗文字,修改字符编码等。 2 什么是拦截器 拦截器中可以用来向ModelAndView中添加通用的数据。这样的好处是对于所有网页的公用部分就不需要在每个controller中生成数据了。 3 过滤器和拦截器的使用方式 第一步,定义过滤器/拦截器类 第二步 阅读全文
posted @ 2018-04-26 00:42 PhoenixTree(梧桐树) 阅读(379) 评论(0) 推荐(0) 编辑
摘要:1 生命周期中主要的操作 第一步,new实例化该bean 第二步,依赖注入,就是给该bean的属性复制 第三步,bean的setBeanName()方法 第四步,bean的setBeanFactory()方法 第五步,bean的setApplicationContext()方法 第六步,postPr 阅读全文
posted @ 2018-04-25 23:53 PhoenixTree(梧桐树) 阅读(190) 评论(0) 推荐(0) 编辑
摘要:1 spring bean的单例和多例 singleton 单例指的是,在需要该bean的地方,spring framework返回的是同一个值。 prototype 多例指的是,在需要该bean的地方,spring framework会返回一个新的对象。 2 spring bean默认是单例的 阅读全文
posted @ 2018-04-25 23:15 PhoenixTree(梧桐树) 阅读(146) 评论(0) 推荐(0) 编辑
摘要:1 递归的话一定要把栈中的frame放在眼里 在某一个层次执行完之后,该嵌套执行完,继续上一层函数断掉的地方继续执行。 只要有了这个分析过程递归函数的编写就不会有问题。 阅读全文
posted @ 2018-04-25 22:59 PhoenixTree(梧桐树) 阅读(148) 评论(0) 推荐(0) 编辑
摘要:1 索引的对象 建索引的对象是集合,相当于mysql中的表。 2 建索引示例 db.XXXCollection.ensureIndex({appKey:1,key:1,createTime:-1},{background:true}) 3 mongo的单索引和复合索引 3.1 单字段索引 这个很好理 阅读全文
posted @ 2018-04-25 20:30 PhoenixTree(梧桐树) 阅读(313) 评论(0) 推荐(0) 编辑
摘要:1 什么时候需要分片 1.1 单台服务器磁盘空间不够 比如某个集合过大。 1.2 单台服务器的内存空间不够 因为想要把大量数据加载到内存中,单台服务器内存不够,可以分片,使用多台服务器的内存。 1.3 单台服务器的cpu不够 当写操作过多的时候,单台服务器cpu忙不过来,分片,使用多台服务器分散写压 阅读全文
posted @ 2018-04-25 20:23 PhoenixTree(梧桐树) 阅读(222) 评论(0) 推荐(0) 编辑
摘要:1 什么是分库分表 这里讨论的情况是一台机器上对应一个数据库。 分库的对象是表,分表的对象是行。分库是说把属于同一个模块的相关性很高的表放在同一个数据库中。分表是说把同一个表的的行分成多个子表,把各个子表放在各自的数据库中。 2 分库分表的例子 2.1 垂直划分 现在订单数据库里面有订单表和订单售后 阅读全文
posted @ 2018-04-25 18:59 PhoenixTree(梧桐树) 阅读(182) 评论(0) 推荐(0) 编辑
摘要:1 ThreadPool和ThreadFactory的区别 前者是真正的thread pool,后者只是创建Thread对象的工厂,前者的thread都是后者创建的。 2 配置参数 2.1 keepAliveTime 设置ThreadPool中处于idle状态的线程等待工作的时间,超过了这个时间该i 阅读全文
posted @ 2018-04-24 23:49 PhoenixTree(梧桐树) 阅读(111) 评论(0) 推荐(0) 编辑
摘要:1 什么是BlockingQueue 2 BlockingQueue有什么用 3 ArrayBlockingQueue的用途 1 它是一个线程安全的队列 2 它是一个容量固定的队列 3 它为什么叫blocking 它会让线程的offer和take操作等待。 如果put的时候,发现队列已经满了,那么线 阅读全文
posted @ 2018-04-24 23:42 PhoenixTree(梧桐树) 阅读(155) 评论(0) 推荐(0) 编辑
摘要:1 java的线程也是一个对象 所以,java线程对象也是由gc销毁的。 2 java线程对象等待被销毁的时机 当java线程执行完run()方法之后就在等待被销毁了,所以要一个线程对象不被销毁唯一的办法就是在run方法中弄一个死循环。死循环在java中真的是到处用。 阅读全文
posted @ 2018-04-24 22:58 PhoenixTree(梧桐树) 阅读(145) 评论(0) 推荐(0) 编辑
摘要:1 mongodb的锁 mongodb使用的读写锁。 2 mongodb高并发 同样是读写锁造成的问题。 3 findandmodify 该操作是原子的。 阅读全文
posted @ 2018-04-24 13:16 PhoenixTree(梧桐树) 阅读(3162) 评论(0) 推荐(0) 编辑
摘要:1 innodb的锁 1.1 s锁,即读锁,即share锁 1.2 x锁,即写锁,排他锁 1.3 s锁和x锁之间的关系 多个读锁可以共存,但是读锁不可以和写锁共存。写锁和写锁不可以共存。 1.4 间隙锁 就是对一段数据加锁,比如id大于3小于10的行加锁,防止插入id=4的数据。 2 innodb高 阅读全文
posted @ 2018-04-24 12:58 PhoenixTree(梧桐树) 阅读(360) 评论(0) 推荐(0) 编辑
摘要:1 什么是事务隔离级别 事务隔离指的是事务之间同步关系。 2 食物隔离级别的分类 第一隔离级别,脏读级别 在脏读级别下,第一个事务修改了某个数据,但是还没有提交,第二个事务可以读取到这个未提及的数据。 第二隔离级别,已提交读 在已提交读下,第一个事务修改某个数据只有在已经提交了的情况下,第二个事务才 阅读全文
posted @ 2018-04-24 12:37 PhoenixTree(梧桐树) 阅读(1667) 评论(0) 推荐(0) 编辑
摘要:1 什么是mongodb的分页 就是一次返回表中的连续若干行。 2 什么是sql分页 同样是返回表中的连续若干行。 3 如何实现sql分页 利用order by xxx limit xxx 4 如何实现mongodb分页 第一,利用skip和limit db.test.sort({"idx":1}) 阅读全文
posted @ 2018-04-24 11:09 PhoenixTree(梧桐树) 阅读(492) 评论(0) 推荐(1) 编辑
摘要:1 synchronized 1.1 一旦没有获取到就只能一直等待 A和B都获取同一个对象锁,如果A获取了,B没有获取到,那么在A释放该锁之前,B只能无穷等待下去。 1.2 synchronized是不公平锁 所谓的不公平就是后来的线程可能先获取大锁,从而会导致线程饥饿。 1.3 synchroni 阅读全文
posted @ 2018-04-23 22:52 PhoenixTree(梧桐树) 阅读(132) 评论(0) 推荐(0) 编辑
摘要:1 spring boot的用途 第一,spring boot可以用来开发mvc web应用。 第二,spring boot可以用来开发rest api。 第三,spring boot也可以用来开发web app。 2 @Controller和@RestController注解 要返回jsp用@Co 阅读全文
posted @ 2018-04-23 16:18 PhoenixTree(梧桐树) 阅读(273) 评论(0) 推荐(0) 编辑
摘要:1 spring aop的优点 aop代码不污染主体功能代码。 aop代码自己指定位置,跟主体功能代码完全是分开的,这样一来aop代码可以放在一起,而不是散落在整个项目中。另外,也增加了主体功能代码的可阅读性。 2 什么是aop 在运行时,动态的将代码切入到类的指定的方法指定的位置的编程思想就是面向 阅读全文
posted @ 2018-04-23 14:26 PhoenixTree(梧桐树) 阅读(137) 评论(0) 推荐(0) 编辑
摘要:假如这里要从海量数据中找到前k大的数据。 那么就用一个元素数目为k的小顶堆,这样的话,堆顶的元素就是这k个数中最小的,只有这个可能不是top k大的元素。 新来一个元素就和堆顶比较,如果比它小那么肯定不是top k的元素,就扔掉,如果比它大,那么此时的堆顶就肯定不是top k中的元素,二者交换,然后 阅读全文
posted @ 2018-04-22 22:31 PhoenixTree(梧桐树) 阅读(214) 评论(0) 推荐(0) 编辑
摘要:1 -Xms -X表示这是一个“-X”参数,m即memory,s即start,这个是jvm初始可以使用的整个堆的大小。 2 -Xmx x表示max,jvm最大可以使用的整个堆的大小。 3 oracle jvm上如何配置 设置成相等,因为当堆不够的时候,jvm调整堆的大小需要花费时间,设置成相等了,就 阅读全文
posted @ 2018-04-22 22:25 PhoenixTree(梧桐树) 阅读(485) 评论(0) 推荐(0) 编辑
摘要:1 一致性hash算法的一致性 这里的一致性指的是该算法可以保持memcached和数据库中的数据的一致性。 2 什么是一致性hash算法 2.1 为什么需要一致性hash算法 现在有大量的key value的数据需要分散的存储到不同的机器上的memcached中,如何根据key来分派机器。 简单的 阅读全文
posted @ 2018-04-22 21:50 PhoenixTree(梧桐树) 阅读(200) 评论(0) 推荐(0) 编辑
摘要:1 什么是子查询 将一个子查询的结果拥有查询条件中。 2 子查询存在的问题 需要为子查询的结果创建一个临时表,耗内存并且费时。 连接不需要创建临时表,它的操作直接在原表或者原表的索引上进行。 一般情况下可以用连接代替子查询。 SELECT * FROM t1 WHERE t1.a1 NOT in ( 阅读全文
posted @ 2018-04-22 16:07 PhoenixTree(梧桐树) 阅读(221) 评论(0) 推荐(0) 编辑
摘要:1 group by some_column 把some_column相同的行汇总起来放在一起,可以理解为将some_column相同的行在虚表中排列相邻的地方。 阅读全文
posted @ 2018-04-22 15:38 PhoenixTree(梧桐树) 阅读(131) 评论(0) 推荐(0) 编辑
摘要:1 什么是主从复制 就是一个master的mysql主机带多个slave的mysql主机。主要用途是缓解mysql的读压力,实现读写分离。写在master处写,但是读在slave处读,将读分散到各个slave上。 2 实现的原理 master开启binlog,开启一个专门的线程,将每次执行的inse 阅读全文
posted @ 2018-04-22 14:32 PhoenixTree(梧桐树) 阅读(119) 评论(0) 推荐(0) 编辑
摘要:1 触发器是什么 触发器是一种特殊的存储过程,它特殊在它不是由应用程序触发,而是由事件触发,比如对一个表的insert、update和delete操作的事件都可以触发触发器。 既然是一种特殊的存储过程,触发器也是事先创建好放在数据库中的。 2 触发器的例子 下面的例子以 ||为结束标记,中间定义了一 阅读全文
posted @ 2018-04-22 13:51 PhoenixTree(梧桐树) 阅读(122) 评论(0) 推荐(0) 编辑
摘要:1 什么是存储过程 存储过程本质是一堆sql再加上一些控制逻辑。 2 存储过程的创建 存储过程是用命令行在mysql上事先创建好的,是事先保存在mysql数据库中的。 3 在java中调用存储过程 同其它sql语句的调用一样。 4 存储过程的优缺点 优点:执行速度快 创建的时候mysql已经对其进行 阅读全文
posted @ 2018-04-22 13:42 PhoenixTree(梧桐树) 阅读(147) 评论(0) 推荐(0) 编辑
摘要:1 哪些地方要用到索引 凡事涉及到查找到地方都需要索引。 2 mongodb索引的类型 2.1 单字段索引 同mysql。 db.person.ensureIndex({age:1}); 2.2 组合索引 同mysql。 db.person.ensureIndex({age:1, name:1}); 阅读全文
posted @ 2018-04-22 11:34 PhoenixTree(梧桐树) 阅读(129) 评论(0) 推荐(0) 编辑
摘要:1 哪些地方要用到索引 只要设计到查询操作都会用到索引,如果不用索引的话,就要进行全表遍历了。 关于查询可以参考下面的博客: https://www.cnblogs.com/whgk/p/6149009.html 2 mysql索引的种类及其创建命令 2.1 主键索引 一种特殊的唯一索引,不允许空值 阅读全文
posted @ 2018-04-22 11:19 PhoenixTree(梧桐树) 阅读(131) 评论(0) 推荐(0) 编辑
摘要:1 acid a是atomic,指的是事务中的操作要么全部执行成功,要么全部都不执行。 c是consistency,指的是事务的执行结果是正确的,比如A给B转帐,A扣了10块钱,B加了10块钱,该事务执行完之后,就应该是A的账户少了10块钱,而B的账户多了10块钱。一致性肯定是涉及到两方的,A少了1 阅读全文
posted @ 2018-04-22 10:15 PhoenixTree(梧桐树) 阅读(222) 评论(0) 推荐(0) 编辑
摘要:1 可变性 String对象一旦创建就不可改变了,因为字符串是放在常量池的。 StringBuffer和StringBuilder中的字符串是可变的,因为字符串放在字符数组中。 2 线程安全 StringBuilder不是线程安全的,StringBuffer是线程安全的。 3 StringBuild 阅读全文
posted @ 2018-04-22 09:30 PhoenixTree(梧桐树) 阅读(130) 评论(0) 推荐(0) 编辑
摘要:1 json 有两种容器,对象和数组。 对象用大括号表示{},里面是键值对;数组用中括号表示[],一个数组里面可以容纳不同数据类型,比如字符串、数组、数字和bool等。 2 xml 阅读全文
posted @ 2018-04-21 18:32 PhoenixTree(梧桐树) 阅读(802) 评论(0) 推荐(0) 编辑
摘要:主线程中会创建多个子线程做一些事情,主线程要用到这些子线程处理的数据,因此它需要等待所有的子线程处理完之后才继续运行。这就要用到join方法了。 阅读全文
posted @ 2018-04-21 16:50 PhoenixTree(梧桐树) 阅读(165) 评论(0) 推荐(0) 编辑
摘要:1 CyclicBarrier 多个进程做自己的事情,然后先做完的就等待在CyclicBarrier上,然后最后一个做完的线程到来时会冲破CyclicBarrier,然后执行CyclicBarrier的runnable。 创建CyclicBarrier的对象的时候会设置总的线程数的。 2 wait/ 阅读全文
posted @ 2018-04-21 16:49 PhoenixTree(梧桐树) 阅读(284) 评论(0) 推荐(0) 编辑
摘要:1 为什么不用引用计数 因为引用计数对循环依赖没有办法,比如 A a = new A(); B b = new B(); a.b = b; b.a = a; a = null; b = null; 然后a、b就永远也回收不了了。 2 gc root gc root就是gc可以明确的当前不能被回收的对 阅读全文
posted @ 2018-04-21 15:00 PhoenixTree(梧桐树) 阅读(111) 评论(0) 推荐(0) 编辑
摘要:1 使用using定义类的别名 using u8 = uint64_t; using不光可以用来定义namespace了。 2 auto int a = 1; auto b = a; 编译器在编译时自动进行类型判断,这里b也是int类型的变量。 阅读全文
posted @ 2018-04-21 10:04 PhoenixTree(梧桐树) 阅读(185) 评论(0) 推荐(0) 编辑
摘要:1 懒汉模式 public class Singleton { private Singleton singleton = null; private Singleton() { } public Singleton getInstance() { if (singleton == null) { 阅读全文
posted @ 2018-04-20 23:13 PhoenixTree(梧桐树) 阅读(2937) 评论(0) 推荐(0) 编辑
摘要:1 相同点 使用的时候,import的时候,除了包名,还要带外部类。 2 不同点 2.1 对象创建的方式不同 静态内部类创建对象的时候,独立于外部类及其对象,就好像它是一个独立的类,可以和外部类一样使用。 内部类创建对象的时候,不能独立于外部类,必须要先创建外部类的对象,然后再用这个对象来new出内 阅读全文
posted @ 2018-04-20 23:08 PhoenixTree(梧桐树) 阅读(7585) 评论(1) 推荐(0) 编辑
摘要:1 先初始化父类的静态成员和静态块,然后初始化子类的静态成员和静态块,然后再初始化父类,然后再初始化子类。 2 先初始化父类 3 单个类初始化的顺序 先初始化成员变量和代码块,后调用构造函数 4 如果父类的构造函数中调用了被子类重写了的方法的话,在创建子类对象的时候,会调用子类中重写的方法 这个时候 阅读全文
posted @ 2018-04-20 22:49 PhoenixTree(梧桐树) 阅读(318) 评论(0) 推荐(0) 编辑
摘要:1 主从复制的目的是为了读写分离 master写,然后同步到slave,slave只管读。 2 哨兵存在的目的 是为了主从切换,如果master挂了,那么一个slave成为master,重启之后的mater成为它的slave。 阅读全文
posted @ 2018-04-20 15:43 PhoenixTree(梧桐树) 阅读(171) 评论(0) 推荐(0) 编辑
摘要:1 MULTI/EXEC 执行本事务。 MULTI set foo bar get foo set foo hello EXEC 在EXEC执行前,三条命令都放入队列中,然后EXEC触发执行。没有回滚,如果中间有命令失败,已经执行的命令不回滚,还没有执行的命令继续执行完。 2 MULTI/DISCA 阅读全文
posted @ 2018-04-20 15:15 PhoenixTree(梧桐树) 阅读(237) 评论(0) 推荐(0) 编辑
摘要:1 rdb和aof rdb是redis database的缩写,它将redis的数据以文件的形式持久化到磁盘中,redis server重新启动时,将数据加载进内存。 aof是append of file的缩写,它持久化的是操作redis的命令,redis server重新启动时,将aof中的命令全 阅读全文
posted @ 2018-04-20 14:46 PhoenixTree(梧桐树) 阅读(125) 评论(0) 推荐(0) 编辑
摘要:1 修改linux进程名字的基本原理 linux进程以argv[0]作为进程的名字,因此只需要修改argv[0]处的字符串就修改了linux进程的名字。 2 直接修改argv[0]会导致的问题 如果名字过程的话,argv[0]放不下了,就会踩后面的参数或者后面的环境变量了。 argv字符串数组后面紧 阅读全文
posted @ 2018-04-20 10:57 PhoenixTree(梧桐树) 阅读(686) 评论(0) 推荐(0) 编辑
摘要:1 extern char ** environ 这是一个字符串数组,最后一个元素是null,即\0。 2 在代码中的使用方法 直接extern char **environ,然后 直接environ[0]、environ[1]获取各个环境变量。 阅读全文
posted @ 2018-04-20 10:31 PhoenixTree(梧桐树) 阅读(898) 评论(0) 推荐(0) 编辑
摘要:1 什么是java object monitor 每个java对象头中都有锁状态位标记。java中在使用synchronize同步的时候,肯定是涉及到某个对象的锁。因此,在考虑同步的时候,首先要想到是同步的是哪个对象的锁。 在java字节码上,获取了某个对象的锁之后,进入时会调用monitorent 阅读全文
posted @ 2018-04-18 11:21 PhoenixTree(梧桐树) 阅读(1808) 评论(0) 推荐(0) 编辑
摘要:1 linux socket编程的固定模式 server端,bind、listen、accept client端,connect client端和server端之间的一次通信: client端,write然后read server端,read然后write 比如服务器端write之后,把要发送的数据 阅读全文
posted @ 2018-04-15 22:57 PhoenixTree(梧桐树) 阅读(212) 评论(0) 推荐(0) 编辑
摘要:从java socket对象获取的InputSteam的read方法其实是对linux的recv()函数的调用,OutputStream也同理。 也就是说,InputStream和OutputStream只是对底层接口的一个包装。 recv()和send()来自于<sys/socket.h>,这是g 阅读全文
posted @ 2018-04-15 22:52 PhoenixTree(梧桐树) 阅读(3270) 评论(0) 推荐(0) 编辑
摘要:1 recv和read ssize_t recv(int sockfd, void *buf, size_t len, int flags); ssize_t read(int fd, void *buf, size_t count); 当recv的flags为0的时候,它们是等价的。 send和w 阅读全文
posted @ 2018-04-15 22:49 PhoenixTree(梧桐树) 阅读(1205) 评论(0) 推荐(0) 编辑
摘要:1 openjdk源码 http://hg.openjdk.java.net 选择jdk8u这个project, 然后选择jdk8u20这个repository。 2 目录结构 corba: common object request broker architecture,一个不常用的框架。 ho 阅读全文
posted @ 2018-04-15 20:54 PhoenixTree(梧桐树) 阅读(381) 评论(0) 推荐(0) 编辑
摘要:1 java socket的两个timeout 一个是connect timeout,即建立连接的timeout,另外一个是so timeout,是读取数据的timeout。这两个timeout都是因为客户端等不及了。 2 connect timeout 客户端想要和服务器端建立tcp连接,如果连接 阅读全文
posted @ 2018-04-13 18:40 PhoenixTree(梧桐树) 阅读(1596) 评论(0) 推荐(0) 编辑
摘要:1 这个功能是由eclipse的插件maven archetype plugin支持的 2 创建过程 File->New->Maven Project 选择archetype为maven-archetype-webapp 3 maven archetype plugin默认的源码目录 默认情况下,s 阅读全文
posted @ 2018-04-11 12:25 PhoenixTree(梧桐树) 阅读(213) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示