Clay 的技术空间

用进废退 | 艺不压身

前言

本文适用于在 Centos/Debian/Ubuntu 等 Linux 发行版系统上,使用多台物理机器搭建 Zookeeper 集群。

Zookeeper 简介

Zookeeper 是一个高效的分布式协调服务,可以提供配置信息管理、命名、分布式同步、集群管理、数据库切换等服务。它不适合用来存储大量信息,可以用来存储一些配置、发布与订阅等少量信息。Hadoop、Storm、消息中间件、RPC 服务框架、分布式数据库同步系统,这些都是 Zookeeper 的应用场景。

Zookeeper 集群简介

在 Linux 生产环境上搭建 Zookeeper 集群,至少需要三个节点(服务器)。

角色划分

Zookeeper 集群有三种角色划分,分别是 leaderfollowerobserver

  • 领导者(leader):负责进行投票的发起和决议,更新系统状态。
  • 跟随者(follower):用于接收客户端请求,并向客户端返回结果,以及在选举过程中参与投票
  • 观察者(observer):可以接收客户端连接,将写请求转发给 leader 节点,但是不参与投票过程,只同步 leader 的状态,通常用作对查询操作做负载。
阅读全文 »

大纲

JVM 的内存结构

JVM 内存结构主要有三大块:栈、堆内存、方法区。堆内存是 JVM 中最大的一块,由新生代和老年代组成,不包括永久代(方法区);而新生代内存又被分成 Eden 空间、From Survivor 空间、To Survivor 空间,默认情况下新生代按照 8:1:1 的比例来分配。方法区存储类信息、静态变量、常量、常量池等数据,是线程共享的区域,为了与 Java 堆区分,方法区还有一个别名 Non-Heap (非堆)。栈又分为 Java 虚拟机栈和本地方法栈,主要用于方法的执行。

阅读全文 »

大纲

前言

MyBatis 简介

MyBatis 是支持定制化 SQL、存储过程以及高级映射的持久层框架(ORM)。MyBatis 可以使用简单的 XML 或注解用于配置和映射数据表,将 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据表中的记录。

MyBatis 历史

MyBatis 的前身是 Apache 的一个开源项目 iBatis,2010 年这个项目由 Apache Software Foundation 迁移到了 Google Code,并且改名为 MyBatis,最后于 2013 年 11 月 迁移到了 GitHub(至今)。iBATIS 一词来源于 “internet” 和 “abatis” 的组合,是一个基于 Java 的持久层框架。iBATIS 提供的持久层框架包括 SQL Maps 和 Data Access Objects(DAO)。

MyBatis 特点

由于单纯的 JDBC 是将 SQL 写在代码块里,耦合度高且维护不易,所以就诞生了 ORM 框架,诸如 Hibernate、Mybatis 等。MyBatis 和 Hibernate 都是 对 JDBC 更加抽象的封装,底层都是 JDBC,这二者的区别在于 MyBatis 是一个半自动的持久化层框架,而 Hibernate 是一个全自动化的持久化层框架。为什么呢?我们知道 Hibernate 是旨在消除 SQL 语句,所以当我们使用 Hibernate 时我们可以不写一条 SQL,全交给框架来处理,但是在实际的开发过程中,针对特定的场景我们是需要自己定制优化 SQL 的,针对于此,Hibernate 提出了 HQL(与标准 SQL 类似,但是倾向于面向对象的风格),为此我们还需要学习下 HQL。而 MyBatis 与 Hibernate 最大的不同就是,MyBatis 是让我们自己编写 SQL 语句。可以看出这两者之间没有绝对的壁垒,如何选择就要视情况来定。更多 MyBatis 相关的资料可阅读 MyBatis 官方中文文档

阅读全文 »

前言

本文适用于在 Centos/Debian/Ubuntu 等 Linux 发行版系统上,使用单机搭建 Zookeeper 集群。

Zookeeper 简介

Zookeeper 是一个高效的分布式协调服务,可以提供配置信息管理、命名、分布式同步、集群管理、数据库切换等服务。它不适合用来存储大量信息,可以用来存储一些配置、发布与订阅等少量信息。Hadoop、Storm、消息中间件、RPC 服务框架、分布式数据库同步系统,这些都是 Zookeeper 的应用场景。

Zookeeper 集群简介

在 Linux 单机上搭建 Zookeeper 集群,至少需要三个节点。

角色划分

Zookeeper 集群有三种角色划分,分别是 leaderfollowerobserver

  • 领导者(leader):负责进行投票的发起和决议,更新系统状态。
  • 跟随者(follower):用于接收客户端请求,并向客户端返回结果,以及在选举过程中参与投票
  • 观察者(observer):可以接收客户端连接,将写请求转发给 leader 节点,但是不参与投票过程,只同步 leader 的状态,通常用作对查询操作做负载。
阅读全文 »

PO 持久对象

PO (Persistant Object) - 持久对象,就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合表示。PO 中应该不包含任何对数据库的操作。Entity (实体) 就是典型的 PO 对象。

DO 领域对象

DO (Domain Object) - 领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。

TO 数据传输对象

TO (Transfer Object) - 数据传输对象,在不同的应用程序之间传输的对象。

阅读全文 »

大纲

版心

在 PC 端,由于分辨率和屏幕较大,网页版心一般是固定宽度且水平居中的。网页版心的宽度设置示例如下:

屏幕分辨率版心宽度
低分辨率 900 ~ 100
高分辨率 1100 ~ 1300
阅读全文 »

大纲

CSS 基础

横向布局

行内块横向布局的问题

  • 代码换行会造成元素之间有默认间距
  • 行内块是沿基线对齐(底部对齐),具体表现为当给元素设置垂直方向的内外边距时,会影响周围的元素
阅读全文 »

大纲

CSS 基础

行高与行间距

行间距

在 HTML 中,展示的文字涉及到下述几条基准线,包括顶线 (绿色)、中线 (蓝色)、基线 (红色)、底线 (紫色)。行距是指一行底线到下一行顶线的垂直距离。

阅读全文 »

大纲

CSS 基础

常用文本属性

1
2
3
4
5
6
7
8
9
10
11
12
/* 字体颜色 */
color: blue;
/* 字体大小,Chrome默认字体大小是16px */
font-size: 60px;
/* 字体类型,Chrome默认字体类型是微软雅黑;字体可以设置多个,用逗号隔开,按照顺序依次识别,如果全部字体都不被识别,则使用系统默认字体 */
font-family: "宋体";
/* 水平水平居中 */
text-align: center;
/* 字体加粗,正常值是400或者normal,加粗是700 */
font-weight: 700;
/* 首行缩进,建议使用 em 单位: 1em = 当前一个字体的大小 */
text-indent: 2em;

设置颜色的方式

1
2
3
4
5
6
7
8
9
/* 第一种方式: 用单词的方式 */
color: blue;
/* 第二种方式: 十进制的方式 */
color: rgb(183, 155, 55);
/* 第三种方式: 十六进制的方式 */
color: #ff0000;
/* 基于第三种方式,当三种颜色每两位的数值都相同,则可以简写 */
color: #f40;
color: #f00;

盒子的基本三属性

盒子指的就是标签,在网页中都是由一个一个大大小小的盒子组成,其中的三个基本属性如下:

  • width:宽度
  • height:高度
  • background:背景色
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
<html>
<head>
<meta charset="'utf-8">
<title>盒子的基本三属性</title>
<style type="text/css">
div {
/* 宽度 */
width: 200px;
/* 高度 */
height: 200px;
/* 背景色 */
background: blue;
}
</style>
</head>
<body>
<div></div>
</body>
</html>

显示模式

三种显示模式

提示

盒子的显示模式属于块级显示模式

  • 块级显示模式
    • 独占一行显示,设置宽高后起作用;在没有设置宽度的时候,其默认宽度与父元素的宽度一致,而默认高度是 0
    • 拥有块级显示模式的元素(标签):<html><body><div><h1> - <h6><p><ul><ol><li><dl><dt><dd><hr><form>
  • 行内显示模式
    • 一行有多个元素(标签),设置宽高不会起作用,尺寸由内容大小决定;在没有设置内容时,其默认宽度和高度都是 0;当行内元素有一个及以上的空格符或者换行符时,显示效果之前会有一个默认的间距
    • 拥有行内显示模式的元素(标签):<span><b><i><s><u><strong><em><del><ins>
  • 行内块显示模式:
    • 行内块显示模式:即一行有多个元素(标签),设置宽高后会起作用
    • 行内块显示模式的元素(标签):<img>、表单标签(例如 <input><textarea>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!DOCTYPE html>
<html>
<head>
<meta charset="'utf-8">
<title>显示模式</title>
<style type="text/css">
div {
/* 宽度 */
width: 200px;
/* 高度 */
height: 200px;
/* 背景色 */
background: blue;
}

i {
background: red;
}

span {
background: blue;
}

img {
width: 60px;
height: 60px;
}
</style>
</head>
<body>
<div></div>
<i></i>
<i></i>
<span></span>
<span></span>
<img src="https://dss2.bdstatic.com/lfoZeXSm1A5BphGlnYG/skin/29.jpg" />
<img src="https://dss2.bdstatic.com/lfoZeXSm1A5BphGlnYG/skin/29.jpg" />
</body>
</html>

上述代码,在浏览器运行的效果如下:

显示模式转换

  • 显示模式转换
    • 其它显示模式转换成块级显示模式: display: block
    • 其它显示模式转换成行内块显示模式: display: inline-block
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<!DOCTYPE html>
<html>
<head>
<meta charset="'utf-8">
<title>显示模式转换</title>
<style type="text/css">
div {
/* 宽度 */
width: 200px;
/* 高度 */
height: 200px;
/* 背景色 */
background: blue;
/* 转换成行内块显示模式 */
display: inline-block;
}
span {
/* 宽度 */
width: 100px;
/* 高度 */
height: 100px;
/* 背景色 */
background: red;
/* 转换成行内块显示模式 */
display: inline-block;
}
b {
/* 宽度 */
width: 100px;
/* 高度 */
height: 100px;
/* 背景色 */
background: yellow;
/* 转换成块级显示模式 */
display: block;
}
</style>
</head>
<body>
<div></div>
<div></div>
<span></span>
<span></span>
<b></b>
<b></b>
</body>
</html>

上述代码,在浏览器运行的效果如下:

选择器

标签选择器

  • 标签选择器
    • 定义的语法: 标签名 { 属性1; 属性2; ...}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
<html>
<head>
<meta charset="'utf-8">
<title>标签选择器</title>
<style type="text/css">
h1 {
color: red;
}
h2 {
color: blue;
}
</style>
</head>
<body>
<h1>Java</h1>
<h2>Python</h2>
<h2>JavaScript</h2>
</body>
</html>

类选择器

  • 类选择器
    • 定义类名:用点开头 + 类名称
    • 调用类名:用标签的 class 属性指定类名
    • 类名的命名规范:不能用数字开头,可以用字母或者下划线开头,后面可以加上字母、数字、下划线、中划线
    • 建议使用驼峰命名法:第一个单词首字母小写,从第二个单词开始首字母大写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html>
<head>
<meta charset="'utf-8">
<title>类选择器</title>
<style type="text/css">
.red {
color: red;
}
.blue {
color: blue;
}
.green {
color: green;
}
</style>
</head>
<body>
<h1 class="red">Java</h1>
<h2 class="blue">Python</h2>
<h2 class="green">JavaScript</h2>
</body>
</html>

ID 选择器

  • ID 选择器
    • 定义 ID 名称:用 # 开头 + ID 名称
    • 调用 ID 名称:用标签的 id 属性指定 ID 名称
    • 唯一性:标签的 id 属性指定的 ID 名称一般全局唯一
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
<head>
<meta charset="utf=8">
<title>ID选择器</title>
<style type="text/css">
#one {
color: red;
}
</style>
</head>
<body>
<h1 id="one">Hello Wolrd!</h1>
</body>
</html>

多类名调用

当一个代码片段重复性的出现时,会造成代码执行效率降低,此时可以使用多类名调用来解决代码冗余问题。多类名调用的语法:标签可以调用多个类名,类名之间用空格隔开。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!DOCTYPE html>
<html>
<head>
<meta charset="'utf-8">
<title>多类名调用</title>
<style type="text/css">
.font {
font-size: 80px;
}
.red {
color: #DB4732;
}
.blue {
color: #1B6FEF;
}
.green {
color: #009A57;
}
.yellow {
color: #FFD669;
}
</style>
</head>
<body>
<span class="blue font">G</span><span class="red font">o</span><span class="yellow font">o</span><span class="blue font">g</span><span class="green font">l</span><span class="red font">e</span>
</body>
</html>

后代选择器

  • 使用空格分隔多个选择器
  • 空格表示后代,空格后面的选择器是后代选择器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>后代选择器</title>
<style text="text/css">
.backend h1 {
color: blue;
}
.backend .go {
color: blueviolet;
}
.backend div h3 {
color: green;
}
.fontend h1 {
color: red;
}
</style>
</head>
<body>
<div class="backend">
<h1>后端</h1>
<h3 class="go">Go</h3>
<h3>PHP</h3>
<h3>Java</h3>
<h3>Python</h3>
<div>
<h3>C#</h3>
</div>
</div>
<div class="fontend">
<h1>前端</h1>
<h3>Vue</h3>
<h3>NodeJs</h3>
<h3>Webpack</h3>
<h3>TypeScript</h3>
</div>
</body>
</html>

并集选择器

  • 并集选择器:将多个选择器使用逗号隔开,实现共同的属性设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
<html>
<head>
<meta charset="“utf-8">
<title>并集选择器</title>
<style type="text/css">
span, p, h1 {
color: red;
}
.box h2, .box h3 {
color: blue;
}
</style>
</head>
<body>
<div class="box">
<span>span</span>
<p>段落</p>
<h1>标题1</h1>
<h2>标题2</h2>
<h3>标题3</h3>
</div>
</body>
</html>

一级后代选择器

  • 通过 > 符号实现只选中一级后代
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>一级后代选择器</title>
<style type="text/css">
/* 只选中第一级ul标签 */
.box>ul {
border: 1px solid red;
}

/* 只选中第一级ul标签中的第一级li标签 */
.box>ul>li {
border: 1px solid blue;
}
</style>
</head>
<body>
<div class="box">
<ul>
<li>
一级li
<ul>
<li>二级li</li>
</ul>
</li>
<li>一级li</li>
<li>一级li</li>
</ul>
</div>
</body>
</html>

CSS 书写位置

  • CSS 的书写位置
    • 第一种:内嵌式,在工作中偶尔会使用
    • 第二种:行内式,在工作中偶尔会使用
    • 第三种:外链式,在工作中经常会使用(推荐)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<!-- 第一种:内嵌式,是将CSS代码嵌入到HTML文件中,CSS代码和HTML代码相对分离,代码耦合度相对较低,在工作中偶尔会使用 -->
<style type="text/CSS">
.one {
color:red;
}
</style>

<!-- 第三种:外链式,是将CSS代码单独写在CSS文件中,CSS代码和HTML代码绝对分离,代码耦合度极低,在工作中经常会使用 -->
<link rel="stylesheet" type="text/css" href="one.css" />
</head>
<body>
<!-- 第二种:行内式,是将CSS代码写在HTML中,两种代码掺杂在一起,代码耦合很高,会有代码冗余,且难以维护,在工作中偶尔会使用 -->
<div style="width: 100px; height: 100px; background: red;">我是div</div>
<div style="width: 100px; height: 100px; background: yellow;">我是div</div>
<div style="width: 100px; height: 100px; background: yellow;">我是div</div>
<div style="width: 100px; height: 100px; background: yellow;">我是div</div>
<div style="width: 100px; height: 100px; background: yellow;">我是div</div>
</body>
</html>

CSS 层叠性

层叠性基础

  • CSS 层叠性
    • 不同的属性都可以实现定义
    • 相同的属性,且在权重相同时,后定义的会层叠(覆盖)先定义的
    • 在权重不同时,谁的权重值高,则实现谁的,权重规则为: 标签选择器 < 类选择器 < ID 选择器 < 行内样式 < !important
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>层叠性</title>
<style type="text/css">
#gray {
color: gray;
}
.pink {
color: pink;
}
.green {
color: green;
}
div {
color: red !important;
font-family: "宋体";
}
div {
font-size: 40px;
}
div {
font-weight: 700;
color: blue;
}
div {
font-size: 50px;
color: yellow;
text-align: center;
}
</style>
</head>
<body>
<div class="pink green" id="gray" style="color:skyblue">我是div</div>
</body>
</html>

上述代码,在浏览器运行的效果如下:

层叠性进阶

CSS 的三种书写位置,都遵循上面介绍的层叠性规则。

  • one.css
1
2
3
.div {
color: red;
}
  • demo.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>层叠性</title>
<link rel="stylesheet" type="text/css" href="./one.css"></link>
<style type="text/css">
div {
color: green;
font-size: 50px;
text-align: center;
}
</style>
</head>
<body>
<div class="div">我是div</div>
</body>
</html>

上述代码,在浏览器运行的效果如下:

CSS 继承性

  • 标签可以继承父元素关于文本设置的属性(不包括 widthheight 等属性),继承的权重是最低的(等价于 0)
  • <a> 标签默认设置了 colorcursor 等属性,继承得到的颜色会被 <a> 标签自身的属性层叠(覆盖)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS 的继承性</title>
<style text="text/css">
.box {
color: red;
font-size: 30px;
width: 300px;
height: 300px;
background-color: pink;
}
p {
color: blue;
}
</style>
</head>
<body>
<div class="box">
<span>Css</span>
<i>Html</i>
<p>JavaScript</p>
</div>
</body>
</html>

上述代码,在浏览器运行的效果如下:

状态伪类

  • 状态伪类:权重是 10,当四个状态同时存在时,要遵循 lvha 顺序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>状态伪类</title>
<style type="text/css">
a {
font-size: 20px;
}
/* 超链接未点击 */
a:link {
color: orange;
}
/* 超链接已点击 */
a:visited {
color: gray;
}
/* 超链接获取焦点 */
a:hover {
color: black;
}
/* 超链接被点击 */
a:active {
color: blue;
}
</style>
</head>
<body>
<a href="##">超链接</a>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>常用的两种状态伪类</title>
<style type="text/css">
.baidu {
color: blue;
font-size: 20px;
}
.baidu:hover {
color: orange;
}
</style>
</head>
<body>
<a href="https://www.baidu.com" class="baidu">超链接</a>
<a href="##">超链接</a>
</body>
</html>

块元素默认宽度

块元素在不设置固定宽度时,其默认的宽度和父元素的宽度一样,适用于块元素标签:<html><body><div><h1> - <h6><p><ul><ol><li><dl><dt><dd><hr><form>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html>
<head>
<meta charset="utf=8">
<title>块元素默认宽度</title>
<style type="text/css">
.one {
width: 200px;
height: 200px;
background-color: red;
}
.two {
height: 100px;
background-color: blue;
}
</style>
</head>
<body>
<div class="one">
<div class="two"></div>
</div>
</body>
</html>

上述代码,在浏览器运行的效果如下:

text-aligin 水平居中

  • text-align 能让标签内的文本、行内元素、行内块元素水平居中,但不能让标签内的块元素水平居中
  • 若希望让文本、行内元素、行内块元素水平居中,则需要给它们的父元素设置一定的宽度
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!DOCTYPE html>
<html>
<head>
<meta charset="utf8">
<title>text-align 能让什么水平居中显示</title>
<style type="text/css">
h1 {
background-color: pink;
text-align: center;
width: 500px;
}
img {
width: 50px;
height: 50px;
}
.box {
width: 300px;
height: 300px;
text-align: center;
background-color: yellow;
}
.one {
width: 100px;
height: 100px;
background-color: blue;
}
</style>
</head>
<body>
<h1>标题</h1>
<div class="box">
<b>我是 Box</b>
<img src="https://dss2.bdstatic.com/lfoZeXSm1A5BphGlnYG/skin/29.jpg" />
<div class="one"></div>
</div>
</body>
</html>

上述代码,在浏览器运行的效果如下:

最新公告

电台节目《星空夜话》 于 2021 年 2 月正式恢复播出,主持人是黄纬,电台收听频段依旧是 91.4(仅限广深佛),播出时段是 22:30 - 00:00(周一~周五)。

序言

偶然的情况下在豆瓣上看到了文章 - 我很想念《星空夜话》,跟作者一样也是《星空夜话》的忠实听众,于是有了以下的碎碎念。

节目历史

《星空夜话》是广东新闻广播推出的深夜情感电台节目,电台收听频段是 91.4(仅限广深佛),播出时段是 22:15 - 00:00(周一~周五)。这档节目最初的名称是《谈情谈到十二点》,而《谈情谈到十二点》的前身是午间版的《男生女生配》。最初的节目主持人是吕囡囡,后来节目改版了,吕囡囡和孙潇毅开始搭档主持节目,记忆犹新的是节目改版后,片头的那句 “我们总有故事发生”。忘了过了多久,孙潇毅后来离开了《星空夜话》,转去做音乐电台,然后就再也没在《星空夜话》里出现过了。后来男主播黄纬加入《星空夜话》,与吕囡囡轮流主持节目。可惜吕囡囡在 2015.03.21 主持完最后一期节目后也离开了《星空夜话》,转去做午间节目《微博大视野》,刚好那段时间吕囡囡结婚了(三个月闪婚),记得最后那期(2015.03.21)节目的主题是《以最骄傲的姿态离开》。最后,《星空夜话》就剩下黄纬在继续主持节目了。

在线收听

若希望在线收听《星空夜话》的历史节目或者最新节目,手机可以下载安装 APP 蜻蜓 FM,然后在 APP 内搜索 "星空夜话" 即可。如果喜欢主播黄纬的声音,还可以在 蜻蜓 FM 上收听节目 《随风潜入夜》,或者关注主播的微信公众号 fm0424

星空记忆

记得第一次收听《星空夜话》是在读初二的时候,距今大概也有 15 年了;在那个少有 MP3、手机的学生时代,用的是便携式收音机收听。那时候比较懵懂,也不知道为什么后来就慢慢喜欢上了这档电台节目,尤其喜欢节目主持人吕囡囡的声音。初中到高中一直都在听,不过读大学和工作后收听的频率就低了很多,只是偶尔在失眠或者情绪低落的时候才会听一下。

博客说明

在 PC 端访问当前博客时,网页左下角的音乐播放器列表里会有《星空夜话》的节目,音频来源于 蜻蜓 FM,节目播出日期是从 2014.09.24 到 2017.03.29,每次刷新页面都会从 477 期的节目中随机抽取若干期节目,这算是对《星空夜话》的一种纪念。由于音频的版权原因,此功能暂时停用。

宣传图片

附上《星空夜话》的宣传图片

星空夜话-FM91.4

微信群

日后希望有机会建一个《星空夜话》的微信群,若听友感兴趣可以扫描下方的微信群二维码,加入到群里和小伙伴们一起分享自己的星空经历。由于微信群二维码存在有效期,若过期了你可以在下方的评论区留言,建议留言的时候在邮箱的输入框内填写你的邮箱地址,笔者会通过邮件联系你并邀请你加入星空夜话的微信群。因为在下方评论区留言后,评论区默认是不会显示你的邮箱地址,只有笔者能在后台看到,所以你不用担心个人隐私泄漏的问题。

星空夜话-QR

0%