是的,奈学教育一周年了!
所有关于奈学的故事,都要从一年前的“秘密进山”说起 ——当晚,一行5人“进山闭关”,一场关于回归教育淳朴本质的头脑风暴就此开启。2020.01.05那晚,在奈学教育首次战略会议上,我们决心要颠覆当下 IT 教育的现状! 会议结束,推门一看,浓浓夜色下屋外早已白雪皑皑,心头一喜,这是瑞雪兆丰年呀,好兆头!奈学教育创始团队核心成员正是那个稀松平常的夜晚,几人在一间不算大的房间里心潮澎湃地“秉
1024!奈学教育致敬程序员3+2战略发布会重磅来袭
程序驱动的时代,有一群可爱的人,始终在努力用科技造福世界。很多人会给程序员打上“格子衫”“无趣”“木讷”的标签,其实,很少有人能读懂程序员简单、直接却又深邃的生活哲学。2014年起,每年10月24日(2^10)被设立为程序员节。在肯定程序员所做贡献的同时,“1024”这一代表二进制的特别日期,也从侧面映射出IT工程师们每天所接触的数字世界。移动互联网兴起后,程序改变世界的维度向深向广,而互联网企业
奈学:Java 和 JavaScript 是什么关系?
一、什么是Javascript? 它是运行在浏览器中的一种脚本语言,在web页面中,Javascript可谓是无所不能: 1. 可以操作HTML,提供了一种运行时改变HTML的工具; 2. 可以附加并执行事件,符合面向事件编程的思想; 3. 数据验证功能,在提交表单时对表单数据进行合法性验证; 4. 对客户浏览器的操作,前进、后退、刷新、跳转、打开新窗口、打印等; 5. 可以创建并使用
奈学开发者社区分享:Java - 设计模式的7个设计原则
因为设计模式就是基于这些原则的实现,所以很有必要了解这些原则,下面主要对面向对象编程的几个原则进行简单介绍。 1、单一职责原则 ( SRP ) 英文全称是Single Responsibility Principle,定义是一个类,应该只有一个引起它变化的原因。类变化的原因就是职责,如果一个类承担的职责过多,就等于把这些职责耦合在一起了。一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力
Java中强、软、弱、虚四种引用详解
1. 强引用 强引用就是指在程序代码之中普遍存在的,指创建一个对象并把这个对象赋给一个引用变量,并没有像其它三种引用一样有一个就具体的类来描述。对于强引用对象,即使内存不足,JVM宁愿抛出OutOfMemoryError (OOM)错误也不会回收这种对象。例如:Object object =new Object(); String str ="hello"; 如
Java创建对象的方法有哪些?
1.运用New 关键字创建实例,这是最常用的创建对象方法。2.运用反射,调用Java.lang.Class类当中newInstance方法。只能调用公共的无参构造函数。3.运用反射,调用java.lang.reflect.Constructor类中的newInstance方法提供无参或有参实例。除了无参构造器,还可以调用有参数的/私有的/受保护的构造函数。事实上Class的newInstance方
奈学:Executor线程池的概述
Executor线程池来自于JDK1.5的JUC包,使用线程池的目的或者好处如下: 实现线程资源的合理复用。线程资源属于操作系统核心资源之一,创建和销毁都需要占用系统资源和大量时间。使用线程池之后,不再需要开发者管理线程,线程的创建和销毁都交给线程池控制,实现线程的复用,减少线程资源的频繁的创建和销毁。 提升任务执行效率。当新来一个线程任务的时候,由于具有线程复用计数因此可以直接利用现有的
奈学:红黑树(RedBlackTree)的概述
1. AVL树与红黑树 AVL树是一种自平衡的二叉查找树,又称平衡二叉树。AVL用平衡因子判断是否平衡并通过旋转来实现平衡,它的平衡的要求是:所有节点的左右子树高度差不超过1。AVL树是一种高平衡度的二叉树,执行插入或者删除操作之后,只要不满足上面的平衡条件,就要通过旋转来保持平衡,而的由于旋转比较耗时,由此我们可以知道AVL树适合用于插入与删除次数比较少,但查找多的情况。 由于维护这种高度平
奈学:reaseShared共享式释放锁
共享锁的释放是通过调用releaseShared模版方法来实现的。大概步骤为:调用tryReleaseShared尝试释放共享锁,这里必须实现为线程安全。如果释放了锁,那么调用doReleaseShared方法环迅后继结点,实现唤醒的传播。对于支持共享式的同步组件(即多个线程同时访问),它们和独占式的主要区别就是tryReleaseShared方法必须确保锁的释放是线程安全的(因为既然是多个线程能
奈学:Executor框架的概述
JDK1.5之前,我们如果想要使用Java线程来完成相关任务,一般涉及两个类,一个是Thread类,一个Thread对象在启动(start)之后会创建一个关联的本地操作系统线程,随后会自动回调run方法。另一个是Runnable接口,可以看作 run方法的抽象,代表线程任务。通过Runnable和Thread的配合可以编写我们自己的多线程逻辑。 可以看到,此时Java对于多线程编程的支持还是
什么是死锁?如何解决死锁?
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。产生死锁的原因,主要包括:系统资源不足;程序执行的顺序有问题;资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,那么死锁出现的可能性就很低;否则, 就会因争夺有限的资源而陷入死
Flink 支持的重启策略有哪些
Flink支持不同的重启策略,可以控制在发生故障时如何重启新启动作业。默认重启策略是通过Flink的配置文件设置的flink-conf.yaml。配置参数restart-strategy定义采用的策略。如果未启用检查点,则使用“无重启”策略。如果激活了检查点并且尚未配置重启策略,则固定延迟策略将用于 Integer.MAX_VALUE重启尝试。重启策略分为:固定延迟重启策略、故障率重启策略、无重启
NIO的组成有哪些——奈学
Buffer:与Channel进行交互,数据是从Channel读入缓冲区,从缓冲区写入Channel中的flip方法 : 反转此缓冲区,将position给limit,然后将position置为0,其实就是切换读写模式clear方法 :清除此缓冲区,将position置为0,把capacity的值给limit。rewind方法 : 重绕此缓冲区,将position置为0DirectByteBuff
奈学:一起了解几种序列化协议
序列化(编码)是将对象序列化为二进制形式(字节数组),主要用于网络传输、数据持久化等;而反序列化(解码)则是将从网络、磁盘等读取的字节数组还原成原始对象,主要用于网络传输对象的解码,以便完成远程调用。影响序列化性能的关键因素:序列化后的码流大小(网络带宽的占用)、序列化的性能(CPU资源占用);是否支持跨语言(异构系统的对接和开发语言切换)。Java默认提供的序列化:无法跨语言、序列化后的码流太大
NameNode和SecondaryNameNode工作机制
1.NameNode启动(1)首次启动需要格式化NameNode,创建Fsimage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。(2)客户端对元数据进行增删改的请求。(3)NameNode记录操作日志,更新滚动日志。(4)NameNode在内存中对元数据进行增删改。2.SecondaryNameNode工作(1)SecondaryNameNode询问NameNode是否
Django框架,Flask框架和Tornado框架各有什么优缺点
Django:Python 界最全能的 web 开发框架,battery-include 各种功能完备,可维护性和开发速度一级棒。常有人说 Django 慢,其实主要慢在 Django ORM 与数据库的交互上,所以是否选用 Django,取决于项目对数据库交互的要求以及各种优化。而对于 Django 的同步特性导致吞吐量小的问题,其实可以通过 Celery 等解决,倒不是一个根本问题。Djang
Gossip 协议详解
Gossip protocol 也叫 Epidemic Protocol (流行病协议)。Gossip protocol在1987年8月由施乐-帕洛阿尔托研究中心发表ACM上的论文《Epidemic Algorithms for Replicated Database Maintenance》中被提出。原本用于分布式数据库中节点同步数据使用,后被广泛用于数据库复制、信息扩散、集群成员身份确认、故障
OOP面向对象编程(Object-Oriented Programming)概述
Java的编程语言是面向对象的,采用这种语言进行编程称为面向对象编程(Object-Oriented Programming, OOP)。1)抽象(abstract) 忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用关注细节。 例如:要
Redis基础:redis特点
redis作为非关系型数据库的一种,属于键值型数据存储,因为redis支持高并发的快速数据访问,所以在生产中多用来作为缓存使用,以提高数据读取效率,提高整个应用程序的并发性能。redis主要有以下特点1.支持多种数据结构;2.支持持久化操作,支持用AOF和RDB两种数据持久化策略把数据持久化到磁盘;3.单线程请求,并发请求情况下不需要考虑数据一致性问题;4.支持两种高可用方式:哨兵机制(maste
单体架构知识点及单体架构的缺陷
什么是单体架构一个归档包(例如war格式或者Jar格式)包含了应用所有功能的应用程序,我们通常称之为单体应用。架构单体应用的方法论,我们称之为单体应用架构,这是一种比较传统的架构风格。单体架构示例图- 单体架构的缺陷 -1.复杂性高 整个项目包含的模块非常多,模块的边界模糊,依赖关系不清晰,代码质量参差不齐,整个项目非常复杂。每次修改代码都心