Enda Lin

keep foolish, keep sharp


  • Home

  • Categories

  • About

  • Archives

  • Tags

hadoop对海量数据处理的解决思路

Posted on 2019-06-20 |
Words count in article 68 | Reading time 1

如何解决海量数据的存储问题

image.png

如何解决海量数据的计算

MapReduce

Map: 计算本地数据, 在各个结点下计算, 本地并发

Reduce: 全局处理, 可以分组处理, 对各个Map的中间结果进行处理

《浪潮之巅》读书笔记

Posted on 2019-06-20 |
Words count in article 515 | Reading time 1

近百年来,总有一些公司很幸运地、有意识或无意识地站在技术革命的浪尖之上, 一旦处于那个位置, 即使不做任何事情, 也可以随着波浪顺顺当当地先前漂泊个十年甚至更长的世纪。 在这十几年间, 它们代表着科技的浪潮, 直到下一波浪潮的来临。

AT&T

由电话之父压力上大·贝尔创立, 第一次实现了人类的远程实时的交互通信。

它创建的贝尔实验室, 走出了计算机的Unix系统和C语言等等

错过了2000年前后的网络革命和90年代中期延续至今的无线通信,这两个极佳的发展机遇, 并丢了性命

AT&T后来被分成了三部分,从事电信业务的AT&T、从事设备制造业务的朗讯和从事计算机业务的NCR。

朗讯后来为MCI和Sprint提供设备,曾一度股价暴涨, 但是如果需要保证股票的持续增长, 它的销售额和利润就必须不断超过华尔街的预期, 为了支撑这一个高股价, 朗讯走了一步败笔的险棋, 具体做法是, 有朗讯借钱给各个公司买朗讯的设备, 从而促进销售额的增长, 但是到了后来互联网泡沫破灭之后, 借钱买设备的公司统统倒闭了, 朗讯这笔钱一下子变成了收不回来的账了, 从此便不得不关闭贝尔实验室的几乎全部研究部门, 走向没落。

当一个公司没有人对它有控制时,它的长期发展就会出现问题, 在上个世纪九十年代, AT&T已经不属于任何一个人,任何一个机构,没有人对它的发展着想, 而跟多的是, 从华尔街到它的高管和员工, 都希望从它身上快快地捞一笔。

Vue常用命令

Posted on 2019-06-19 |
Words count in article 44 | Reading time 1

起步安装

1
2
3
4
5
# 安装vue
npm install vue

# 安装vue-cli
npm install -g @vue/cli

项目创建

1
2
3
vue create my-project
# OR
vue ui

相关文档

  • Vue.js官方文档
  • Vue CLI官方文档

《JAVA并发编程的艺术》读书笔记⑥

Posted on 2019-06-17 |
Words count in article 904 | Reading time 3

Java并发编程基础

线程优先级

在Java线程中,通过一个整型成员变量priority来控制优先级, 优先级分为从1-10, 在线程构建的时候可以通过setPriority(int)方法来修改优先级, 默认优先级是5, 优先级高的线程分配时间片的数量要多余优先级低的线程。

针对阻塞频繁的线程需要设置较高的优先级。

偏重计算的线程设置较低的优先级。

Read more »

《JAVA并发编程的艺术》读书笔记⑤

Posted on 2019-06-17 |
Words count in article 566 | Reading time 2

双重检查锁定引发的思考

在学习双重版本版本的单例模式的时候, 我书写了如下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Singleton {
private static Singleton uniqueInstance;
private Singleton() {
}
public static Singleton getInstance() {
//检查实例,如果不存在,就进入同步代码块
if (uniqueInstance == null) {
//只有第一次才彻底执行这里的代码
synchronized(Singleton.class) {
//进入同步代码块后,再检查一次,如果仍是null,才创建实例
if (uniqueInstance == null) {
uniqueInstance = new Singleton();
}
}
}
return uniqueInstance;
}
}

这段代码表面上很完美, 但是在高并发的环境下, 容易触发里面一个潜在的BUG, 问题的根源出自于uniqueInstance = new Singleton(); , 因为在线程读取到uniqueInstance不为null的时候, 该变量引用的对象有可能还没有完成初始化。

Read more »

乐融软件面经

Posted on 2019-06-14 |
Words count in article 192 | Reading time 1

部分面经(笔试与面试)

  • & 与 && 的区别
  • 对称算法与非对称算法有哪些, 两种算法的区别是什么
  • TCP三次握手四次挥手
  • JVM堆内存和栈内存(注意Spring的创建, 引用的传递)
  • GC
  • 单例模式
  • 二分查找
  • 递归算法
  • I/O流
  • MySQL的ACID
  • 死锁, 如何避免
  • Spring 事务
  • 微服务
  • SSL的算法
  • Http与Https的区别
  • 项目经历
  • 获奖经历

面试流程

笔试->根据笔试的情况,让你讲解几道题(我被抽到的是:加密算法, JVM, 单例模式, &与递归算法)->根据你简历上的内容提问->根据他手上的题纲去提问->聊个人情况、期盼薪资等等

如何成长为一名合格的架构师

Posted on 2019-06-13 |
Words count in article 1.2k | Reading time 3

今日, 在Google检索高性能、高可用以及高并发相关的书籍的时候, 无意中在知乎中看到了一场讨论, 从前辈们的分享中, 我猛然发现, 这么久以来, 我把大部分时间都花在了研究各种成熟的架构上面, 而忽略了底层的技术, 如数据结构、计算机网络、数据库存储原理等等, 殊不知, 一名合格的架构师永远都不是以你会用多少多少框架为衡量标准的, 相反, 要想成为一名合格的架构师, 数据结构,操作系统,网络原理,数据库原理等这些都是决定着我以后的高度和深度的, 虽然, 道路走的有点偏, 起码我还是能把握的正确的方向的, 因为为了相关的面试, 我也一直在对这些基础知识进行一个系统的学习, 而知道今天, 我才猛然发现这些基础知识的重要性, 还是十分庆幸自己及早看到了知乎的这一场讨论, 感恩!

Read more »

Spring相关知识

Posted on 2019-06-12 |
Words count in article 1.3k | Reading time 4

Spring 模块(4.x)

最新的5.x版本中Web模块的Portlet已经废弃, 同时增加了异步响应式处理的WebFlux组件。

  • Spring Core: 基础模块, Spring其它的功能都依赖于这个类库, 主要提供IOC依赖注入功能
  • Spring Aspects: 该模块与AspectJ的集成提供支持
  • Spring AOP: 提供了面向切面的编程实现
  • Spring JDBC: JAVA数据库连接
  • Spring JMS: JAVA消息服务
  • Spring ORM: 用于支持Hibernate等ORM工具
  • Spring Web:为了创建Web应用程序提供支持
  • Spring Test:提供了对Junit和TestNG测试支持
Read more »

设计模式之建造者模式

Posted on 2019-06-12 |
Words count in article 427 | Reading time 1

定义

建造者模式:是一种对象构建模式,它可以将复杂对象的建造过程抽象出来,一步一步组装各种零件进而创建一个复杂的对象。

建造者模式则是要求按照指定的蓝图建造产品,它的主要目的是通过组装零配件而产生一个新产品。

优点

  • 客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象。
  • 用户使用不同的具体建造者可以得到不同的产品对象
  • 可以更加精细地控制产品的创建过程
  • 增加新的具体建造者无需修改原有类库的代码

与抽象工厂的差异

抽象工厂模式实现对产品家族的创建,一个产品家族是由一系列产品组成的

建造者模式是按照指定的蓝图,通过组装零配件而产生的一个新的产品

建造者模式主要包含四个角色

  • Product(产品角色): 一个具体的产品对象
  • Builder(抽象建造者): 创建一个Product 对象的各个部件指定的抽象接口
  • ConcreateBuilder(具体建造者):实现抽象接口,构建和装配各个部件
  • Director(指挥者):Builder 接口的实现类,它主要用于创建一个复杂的对象,作用:负责控制产品对象的生产过程、隔离用户与对象的生产过程

参考

深入理解建造者模式 ——组装复杂的实例
图说设计模式

Java基础知识

Posted on 2019-06-12 |
Words count in article 301 | Reading time 1

牛客网上,错题相关的知识点

  • 子类A继承父类B, A a = new A(), 问代码块的执行顺序

    父类B静态代码块 -> 子类A的静态代码块 -> 父类B非静态代码块 -> 父类B的构造函数 -> 子类A非静态代码块 -> 子类A的构造函数

  • “>>>”表示无符号右移, 高位用0填充, 如 1>>>2 为0

  • sleep是线程类(Thread)的方法, wait是Object的方法, 前者不释放对象锁, 后者释放对象锁。
  • Float f = 0.1f, (后面必须要加f, 负责会被识别成double)
  • 接口中的方法默认是public abstract的,且实现接口的类中对应的方法的可见性不能小于接口方法的可见性
  • 接口中的变量默认是public static final
  • 接口中不能定义私有方法
  • 重载是在同一个类中,有多个方法名相同,参数列表不同, 与方法的返回值无关, 与权限修饰符无关。
  • Java程序的种类有:内嵌于Web文件夹中,由浏览器来观看的_Applet、可独立运行的Application和服务器端的servlets.
1…345…8
Enda Lin

Enda Lin

所有的伟大都是从零开始

79 posts
35 tags
GitHub E-Mail
© 2019 Enda Lin
您是博主的第 位小伙伴 总访问量 次