传媒

传媒是指用来传播信息和获取信息的一切手段和方式

通常包括如下的专业:广告学,电影和录像,多媒体技术,新闻,大众传播,媒体,影像媒体, 公共关系,传播与文化,视觉艺术,数字媒体等等。

  • 新闻类传媒(传统新闻、网络新闻、新闻摄影):可以进入各大中小型zhi报纸和新闻出版社,也可从事广播、电视媒体的新闻,还可进入广告、公关、出版等领域
  • 营销广告类传媒(广告、市场营销、文化政策、文化研究):既可进入政府部门也进入私人企业,从事消费者营销、销售、品牌经理、广告设计、广告执行、营销咨询等。  
  • 大众传媒类(大众传媒、公共关系):可成为专业的公关人员,在企业、政府、社区、教育机构、酒店、医疗福利机构、文化交流组织等行业任职。  
  • 媒体发布类(桌面发布、媒体产品、电影与媒体研究):将具备专业的创造才能和技能,职业包括摄影、编辑、数码编辑、音效处理、互动游戏设计、光盘媒体制作、网络设计等。  
  • 创作表演类(创造性写作、表演艺术、剧院艺术):将具备专业的创造才能和技能,职业包括创造性导演、艺术导演、导演、脚本写作、摄影、编辑等。

Read More

好的产品

用户价值 = 新体验 - 旧体验 - 替换成本

好产品的十个原则 -张小龙

  • 好的产品富有创意,必须是一个创新的东西
  • 有用
  • 容易使用
  • 含蓄,不招摇
  • 诚实
  • 经久不衰,不会随时间而过时
  • 不会放过任何细节
  • 环保,不浪费资源
  • 尽可能少的设计

Read More

时序图

  • -> <-绘制参与者间的消息传递. 参与者不必显式说明.
  • --> <-- 绘制虚线箭头
1
2
3
4
5
6
7
8
9
10
@startuml
用户 -> 认证中心: 登录操作
认证中心 -> 缓存: 存放(key=token+ip,value=token)token

用户 <- 认证中心 : 认证成功返回token
用户 -> 认证中心: 下次访问头部携带token认证
认证中心 <- 缓存: key=token+ip获取token
其他服务 <- 认证中心: 存在且校验成功则跳转到用户请求的其他服务
其他服务 -> 用户: 信息
@enduml

参与者声明

  • actor 用户
  • boundary 边界事件
  • control 控制事件
  • entity 实体
  • database 数据库
  • collections 集合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

@startuml
actor Foo1
boundary Foo2
control Foo3
entity Foo4
database Foo5
collections Foo6
Foo1 -> Foo2 : To boundary
Foo1 -> Foo3 : To control
Foo1 -> Foo4 : To entity
Foo1 -> Foo5 : To database
Foo1 -> Foo6 : To collections

@enduml

Read More

JVM垃圾回收类型

垃圾回收的几种类型

Minor GC、Major GC、Young GC、Old GC、Full GC、Stop-The-World

Minor GC

从年轻代空间回收内存被称为 Minor GC,有时候也称之为 Young GC

  • 当 JVM 无法为一个新的对象分配空间时会触发 Minor GC,比如当 Eden 区满了。所以 Eden 区越小,越频繁执行 Minor GC
  • 当年轻代中的 Eden 区分配满的时候,年轻代中的部分对象会晋升到老年代,所以 Minor GC 后老年代的占用量通常会有所升高
  • 所有的 Minor GC 都会触发 Stop-The-World,停止应用程序的线程.

对于大部分应用程序,停顿导致的延迟都是可以忽略不计的,因为大部分 Eden 区中的对象都能被认为是垃圾,永远也不会被复制到 Survivor 区或者老年代空间。如果情况相反,即 Eden 区大部分新生对象不符合 GC 条件(即他们不被垃圾回收器收集),那么 Minor GC 执行时暂停的时间将会长很多(因为他们要JVM要将他们复制到 Survivor 区或老年代)

Major GC

从老年代空间回收内存被称为 Major GC,有时候也称之为 Old GC

许多 Major GC 是由 Minor GC 触发的,所以很多情况下将这两种 GC 分离是不太可能的

Minor GC 作用于年轻代,Major GC 作用于老年代。 分配对象内存时发现内存不够,触发 Minor GC。Minor GC 会将对象移到老年代中,如果此时老年代空间不够,那么触发 Major GC。因此才会说,许多 Major GC 是由 Minor GC 引起的

Read More

JVM垃圾回收器

Java 虚拟机的垃圾回收器可以分为四大类别:串行回收器、并行回收器、CMS 回收器、G1 回收器

串行回收器

串行回收器进行垃圾回收时,会触发Stop-The-World现象

新生代串行回收器使用的是复制算法,老年代串行回收器使用的是标记压缩算法

若要启用老年代串行回收器,可以尝试以下参数

  • -XX:UseSerialGC 新生代、老年代都使用串行回收器
  • -XX:UseParNewGC 新生代使用 ParNew 回收器,老年代使用串行回收器
  • -XX:UseParallelGC 新生代使用 ParallelGC 回收器,老年代使用串行回收器

    Read More

JVM垃圾回收机制

引用计数法

判断一个对象是否是垃圾.在一个对象被引用时加一,被去除引用时减一

GC Root Tracing 算法

解决引用计数法存在的循环引用问题. 从 GC Root 出发,所有可达的对象都是存活的对象,而所有不可达的对象都是垃圾

GC Root 是一组活跃引用的集合

  • 所有当前被加载的 Java 类
  • Java 类的引用类型静态变量
  • Java类的运行时常量池里的引用类型常量
  • VM的一些静态数据结构里指向GC堆里的对象的引用
  • 等等

垃圾回收算法

垃圾回收算法简单地说有三种算法:标记清除算法、复制算法、标记压缩算法

标记清除算法

分为两个阶段:标记阶段和清除阶段.

  • 标记阶段,标记所有由 GC Root 触发的可达对象.所有未被标记的对象就是垃圾对象
  • 清除阶段,清除所有未被标记的对象

会产生内存碎片,但是不需要移动太多对象,比较适合在存活对象比较多的情况

复制算法

将原有的内存空间分为两块,每次只使用一块,在垃圾回收时,将正在使用的内存中的存活对象复制到未使用的内存块中。之后清除正在使用的内存块中的所有对象,之后交换两个内存块的角色,完成垃圾回收

需要将内存空间折半,并且需要移动存活对象. 但清理后不会有空间碎片,比较适合存活对象比较少的情况

Read More

JVM类加载机制

JVM 虚拟机执行 class 字节码的过程可以分为七个阶段:加载、验证、准备、解析、初始化、使用、卸载

加载

加载阶段是类加载过程的第一个阶段

在这个阶段,JVM 的主要目的是将字节码从各个位置(网络、磁盘等)转化为二进制字节流加载到内存中,接着会为这个类在 JVM 的方法区创建一个对应的 Class 对象,这个 Class 对象就是这个类各种数据的访问入口

  • 通过一个类的全限定名获取该类的二进制流
  • 将该二进制流中的静态存储结构转化为方法的运行时数据结构
  • 在内存中生成该类的Class对象,作为该类的数据访问入口

验证

当 JVM 加载完 Class 字节码文件并在方法区创建对应的 Class 对象之后,JVM 便会启动对该字节码流的校验,只有符合 JVM 字节码规范的文件才能被 JVM 正确执行

  • JVM规范校验。JVM 会对字节流进行文件格式校验,判断其是否符合 JVM 规范,是否能被当前版本的虚拟机处理
  • 代码逻辑校验。JVM 会对代码组成的数据流和控制流进行校验,确保 JVM 运行该字节码文件后不会出现致命错误

验证的目的是为了确保Class文件的字节流中的信息不会危害到虚拟机,主要完成以下四种验证

  • 文件格式验证:验证字节流是否符合Class文件规范,如主次版本是否在当前虚拟机支持范围内,常量池中的常量是否有不支持类型
  • 元数据验证: 对字节码描述的信息进行语义分析,如这个类是否有父类,是否集成了不被继承的类等
  • 字节码验证: 通过验证数据流和控制流的分析,确定程序语义是否正确,跳转指令是否正确等
  • 符号引用验证: 在后边的解析过程中发生,主要为了确保解析动作能正确执行

Read More