java
文章平均质量分 69
小强的进阶之路
这个作者很懒,什么都没留下…
展开
-
Spring bean的生命周期
学习spring源码主框架,从源码角度开发学习Spring bean的生命周期。spring创建bean方法org.springframework.beans.factory.support.AbstractBeanFactory#getBean(java.lang.String, java.lang.Class)public <T> T getBean(String name, C...原创 2019-11-02 19:56:22 · 259 阅读 · 0 评论 -
5分钟彻底理解Redis持久化
Redis持久化RDB快照在默认情况下,Redis将内存数据库快照保存到dump.rdb的二进制文件中。可以对Redis进行设置,让它在“N秒内数据集至少有N个改动”, 这一条件被满足时,自动保存一次数据集。比如说:让Redis满足“60秒内至少有1000个键被改动”这一个条件时,自动保存一次数据集。save 60 1000除了在配置文件中使用save关键字设置RDB快照,还可以在命令...原创 2019-10-27 17:56:54 · 900 阅读 · 0 评论 -
zookeeper特性与节点说明
一、zookeeper概要、背景及作用zookeeper产生背景:项目从单体到分布式转变之后,将会产生多个节点之间协同的问题。如:每天的定时任务由谁哪个节点来执行?RPC调用时的服务发现?如何保证并发请求的幂等....这些问题可以统一归纳为多节点协调问题,如果靠节点自身进行协调这是非常不可靠的,性能上也不可取。必须由一个独立的服务做协调工作,它必须可靠,而且保证性能。zo...原创 2019-09-30 10:17:21 · 546 阅读 · 0 评论 -
工作中一些原则体会
尽可能让一切变得简单,用最简单的方式完成工作能用最少的概念,最精简易懂的概念模型来抽象系统,多一个概念就多一份别人了解系统以及维护系统的复杂度,别人也会质疑多一个概念的意义所在,自己如果没想清楚就容易被diss。特别是在类的设计中,会发现其实很多时候用一个类就可以表达要干的单一职责了,每个类职责清晰,类于类之间关系易于理解及维护。设计系统时某些功能只在需要它时构建对于这点深有体会, 特别是...原创 2019-09-19 23:04:56 · 1041 阅读 · 0 评论 -
一文读懂类加载机制
类记载过程多个java文件经过编译打包生成可运行的jar包,最终由java命令运行某个主类的main函数启动程序,这里首先需要通过类加载器把主类加载到jvm。主类在运行过程中如果使用到其他类,会逐步加载这些类。注意,jar包里的类不是一次性全部加载的,是使用时才加载的。从类加载到使用整个过程由如下几步:加载、验证、准备、解析、初始化、使用、卸载加载:在硬盘上查找并通过IO读入字节码文件,使...原创 2019-09-16 10:43:54 · 832 阅读 · 0 评论 -
技术人员的发展之路
程序算法与人生选择我用算法来类比如何做选择,说白了就是怎么去计算,但是并没有讲程序员可以发展的方向有哪些。 所以,就算是有这些所谓的方法论,我们可能对自己的发展还是会很纠结和无所事从,尤其是人到了30岁,这种彷徨和迷惑越来越重。虽然我之前也写过一篇《编程年龄和编程技能》的文章,但是还是有很多做技术的人对于自己能否在年纪大时还能去做技术感到没有信心。我猜测,这其中,最大的问题的是,目前从事技术工...原创 2019-09-14 23:01:14 · 874 阅读 · 0 评论 -
面试必问的MySQL锁与事务隔离级别
之前多篇文章从mysql的底层结构分析、sql语句的分析器以及sql从优化底层分析, 还有工作中常用的sql优化小知识点。面试各大互联网公司必问的mysql锁和事务隔离级别,这篇文章给你打神助攻,一飞冲天。锁定义锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除了传统的计算资源(如 CPU、RAM、I/O等)的争用以外,数据也是一种需要用户共享的资源。如何保证数据并发访...原创 2019-09-11 22:38:02 · 1089 阅读 · 0 评论 -
工作中遇到的99%SQL优化,这里都能给你解决方案
前几篇文章介绍了mysql的底层数据结构和mysql优化的神器explain。后台有些朋友说小强只介绍概念,平时使用还是一脸懵,强烈要求小强来一篇实战sql优化,经过周末两天的整理和总结,sql优化实战新鲜出炉, 大家平时学习和工作中,遇到的90% 的sql优化都会介绍到,介意篇幅过长,分成3篇文章哈。CREATE TABLE `employees` ( `id` int(11) N...原创 2019-09-03 21:40:45 · 546 阅读 · 0 评论 -
互联网JAVA面试常问问题(二)
一、线程有几种创建方式?这是一道比较常见的java线程问题,一般就是两种线程创建方式:继承Thread类实现Runnable接口继承Thread类public class MyThread extends Thread{ private String name; public MyThread(String name) { this.name = n...原创 2018-12-25 13:19:44 · 170 阅读 · 0 评论 -
互联网JAVA面试常问问题(一)
一、为什么要创建线程池?线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以重复使用可以根据系统的承受能力,调整线程池中工作线程的数量,防止因为消耗过多内存导致服务器崩溃二、创建线程池参数有哪些及其含义 public ThreadPoolExecutor(int corePoolSize, int maxim...原创 2018-12-24 13:34:00 · 176 阅读 · 2 评论 -
互联网JAVA面试常问问题(三)
一、volatile原理和使用场景volatile 原理volatile变量进行写操作时,JVM会向处理器发送一条Lock前缀的指令,将这个变量所在缓存行的数据写会到系统内存。Lock前缀指令实际上相当于一个内存屏障(也成内存栅栏),它确保指令重排序时不会把其后面的指令排到内存屏障之前的位置,也不会把前面的指令排到内存屏障的后面;即在执行到内存屏障这句指令时,在它前面的操作已经全部完成。...原创 2018-12-29 11:36:36 · 232 阅读 · 0 评论 -
设计模式
Spring 等框架中使用了哪些模式BeanFactory和ApplicationContext应用了工厂模式在bean创建中,spirng也为不同的scope定义的对象提供了单例和原型等模式实现aop则使用了代理模式、装饰器模式和适配器模式各种事件监听器,是观察者模式类似jdbctemplate则应用了模板模式单例模式1、常规单例模式 public class...原创 2018-06-07 13:30:00 · 151 阅读 · 0 评论 -
接口和抽象类的区别
接口和抽象类的区别接口是对行为的抽象,它是抽象方法的集合,利用接口可以到达API定义和实现相分离的目的。接口,不能实例化;不能包含任何非常量成员,任何field都是隐含public static final的意义;同时,没有非静态方法的实现,也就是说要么是抽象方法,要么是静态方法。java类库中,定义了非常多的接口,比如:java.util.List抽象类是不能实例化的类,用abstrac...原创 2018-06-05 19:39:11 · 243 阅读 · 0 评论 -
Vector、ArrayList和LinkedList有何区别?
三者都是实现集合框架中的List,也就是所谓有序集合,因此具体功能比较近似,比如都提供按照位置进行定位、添加或删除的操作,都提供迭代器以遍历其内容等。但因具体的设计区别,在性能、线程安全等方面,表现有很大不同。 Vector是java早期提供线程安全的动态数组,如果不需要线程安全,并不建议选择,毕竟同步有额外的开销。Vector内部是使用自动增加的容量,当数组已满时,会创建新的数组,并拷贝原有数...原创 2018-05-28 13:16:33 · 469 阅读 · 0 评论 -
java8新特性
java8Lambda表达式和函数式接口接口的默认方法和静态方法Java官方库的新特性OptionalStreamsDateTime APIJSR 310Base64编码java8Lambda表达式和函数式接口最简单的Lambda表达式可由逗号分隔的参数列表、->符号和语句块组成,例如: Arrays.asList( "a", "b", "d" ).forEach( e -> {原创 2017-12-18 15:43:33 · 252 阅读 · 0 评论