『Others』第三届字节跳动青训营 - 后端专场 早知晓直播会议纪要
相关链接直播/视频源地址
【第三届字节跳动青训营后端专场 Q&A】
【第三届字节跳动青训营|刷题打卡】DAY1
青训营简介
字节跳动的免费培训&人才选拔项目
面向所有在校大学生
后端开发 & 求值建议
后端岗位定义、做什么、发展前景
后端(服务端),开发远程服务器上运行的程序,形容词:幕后大佬
字节后端的分类:业务端、中台(?)、基础组件、引擎端、基础架构支持
做什么:
最终目标:服务好用户
后端更关注全体用户
保证稳定性(高可用性)、效率(业务可扩展性)
关注最终的用户体验,兜底方,对全局够了解
发展前景:
最近有很多负面新闻,但是大可不必担心
最近30年来互联网行业周期性变化,每次都走出来了
发展空间还很大
未来30年最好的行业还是互联网
发展前景三个关键词:
能力提升
个人硬实力与软实力(沟通)结合
核心作用
后端比底层更接近用户、比PM(?)更懂技术、比前端更有全局视角、比QA(?)更了解业务,能够全面地掌握所有信息,能基于此做出最全面的决策,是问题解决的核心角色,承担核心作用
适应性
后端适应性更强,后续发展的空间更大,更容易转到全栈,学习更多算法
怎么选岗位
后端与非后端
后端对计算机方面知识要求比较多,日常工作中挑战比较大
后端发展前景好,工作中有很强的满足感
后端内部岗位细化
有差异,但是差异不大基本目标相同,整个目标围绕高可用高吞吐,稳定性,更好地促进业务迭代,服务质量之类的
大可不必纠结细分邻域
有这些区别要怎么选
兴趣第一导向,follow your heart
实习的心路历程和建议
企业招聘,简历上有实现经历, ...
SQL 入门笔记(九)汇总数据
聚集数据
我们经常需要汇总数据而不用把它们实际检索出来,这种例子有很多:
确定表中行数(或满足某个条件或包含某个特定值的行数)
获取表中某些行的和
找出表列(或某些特定行)的最大值、最小值、平均值
以上例子 都需要汇总出表中的数据,而不需要查出数据本身 ,为此 SQL 提供了 5 个聚集函数(aggregate function)
函数
说明
AVG()
某列的平均值
COUNT()
某列的行数
MAX()
某列的最大值
MIN()
某列的最小值
SUM()
某列之和
与上一篇中的数据处理函数不同,聚集函数在主要 SQL 实现中得到了相当一致的支持
AVG() 函数
AVG() 用于返回 平均值 ,它可以返回所有列的平均值,也可以返回特定行或列的平均值
下面是一个基本例子,返回 Products 表中所有产品的平均价格
12SELECT AVG(prod_price) AS avg_priceFROM Products;
正如上文所说,AVG() 也可以返回特定部分的平均值
123SELECT AVG(prod_price) AS avg_priceFROM ProductsWHERE vend_id = 'DLL01';
这一条语句与上面的不同在于,它包含了 WHERE 子句,只过滤出了 vend_id 为 DLL01 的产品,因此求得的平均值只是该供应商的产品的价格平均值
注意:只用于单个列AVG() 只能用来确定单个特定数列的平均值,而且列名必须作为函数参数给出。为获得多个列的平均值,必须使用多 ...
SQL 入门笔记(八)使用函数处理数据
SQL 中的函数
同许多编程语言一样,SQL 中也有函数
但有一个很重要的问题,每一个 DBMS 都有特定的函数,事实上,只有少数几个函数被所有主要 DBMS 同等地支持
下表很明显地体现了这一区别
函数
语法
提前字符串的组成部分
DB2、Oracle、PostgreSQL 和 SQLite 使用 SUBSTR();MariaDB、MySQL 和 SQL Server 使用 SUBSTRING()
数据类型转换
Oracle 使用多个函数,每种类型的转换有一个函数(听上去和 C/C++ 差不多?);DB2 和 PostgreSQL 使用 CAST();MariaDB、MySQL和 SQL Server 使用 CONVERT()
取当前日期
DB2 和 PostgreSQL 使用 CURRENT_DATE;MariaDB 和 MySQL 使用 CURDATE();Oracle 使用 SYSDATE();SQL Server 使用 GETDATE();SQLite 使用 DATE()
可以看到,SQL 函数是 不可移植的 ,这意味着为特定 DBMS 编写的代码在其他 DBMS 中可能不可用
为了代码的可移植性,许多 SQL 程序员不赞成使用这些函数,当然缺点也是显而易见的
提示:是否应该使用函数?现在,你面临是否应该使用函数的选择。决定权在你,使用或是不使用也没有对错之分。如果你决定使用函数,应该保证做好代码注释,以便以后你或其他人能确切地知道这些 SQL 代码的含义
使用函数
文本处理函数
在上一篇中,已经使用过 CONCAT() 函数,下面是另一 ...
SQL 入门笔记(七)创建计算字段
什么是计算字段
很多时候,我们所需要的并不直接是表中的数据
例如,表中存储着每种物品的价格和数量,但是实际需要的是每种物品的总价格
诚然,你可以新建一个字段(列)保存总价,每次手动计算保存,但是很明显有更好的方法
那就是在输出的时候虚拟出一个总价字段,值是价格乘以数量,这就是计算字段
字段(field)基本上与列(column)的意思相同,经常互换使用,不过数据库列一般称为列,而字段这个术语通常在计算字段这种场合下使用
需要注意的是,只有数据库知道SELECT语句中哪些列是实际的表列,哪些是虚拟的计算字段。从客户端(如应用程序)来看,计算字段与其他列是一模一样的
当然,你也可以在客户端服务器上计算总价,但是在数据库服务器上完成这些工作一般要快得多
拼接字段
Vendors 表包含供应商名(vend_name)和地址信息(vend_country),现在需要做一个报表,在一列中返回这两个信息,并且要把地址用括号括起来
解决方法是把两个列拼接起来,在 SQL Server 中,应该使用操作符加号(+),在 DB2 、 Oracle 、 PostgreSQL 和 SQLite 中,应该使用两个竖杠(||),而在 MySQL 和 MariaDB 中,必须使用函数Concat()
123SELECT Concat(vend_name ,'(' , vend_country , ')')FROM VendorsORDER BY vend_name ;
使用别名
从前面的输出可以看见,SELECT语句可以很好地拼接字段,但是这个新列的名字是什么呢 ...
『Others』网球球童必知必会
网球计分规则
由小到大,一场网球比赛的记分结构可分为 分(point)、局(game)、盘(set)、场(match)
一局中的计分
根据当前局的比分的不同,可分为 常规局 和 平局决胜局
常规局
在一个常规局中,计分规则如下:
无得分:0
第一分:15
第二分:30
第三分:40
第四分:本局结束
但是若目前双方比分为40:40,则需要一方净胜对手两分后才算赢得这一局
平局决胜局
在平分决胜局中,使用 0、1、2、3 分等来计分,首先赢得7分并净胜对手两分的一方赢得这一局
注意:
如果是无占先制则不需要净胜两分
如果是双打,则改为抢十
一盘中的计分
先赢得6局并净胜对手两局的一方赢得这一盘
若当前局的比分达到 6:6,则进入平分决胜局,俗称:抢七
一场中的计分
本次亚运会中,采用三盘两胜制
换发球及换边问题(重要)
换发球
每一局结束都换发球
决胜局中,轮到的那一方先发球,然后 2、3 球对面发,4、5 球再换(单数分结束后换发)
换边(同时运动员休息)
单数局结束后交换场地
决胜局中,每 6 分交换场地
同时换发和换边时,球还是传向原来一侧 ,故常规局中,12 一边,34 一边, 56 一边…,在决胜局中
1,3,5,6,7,9,11,12,13,15,17,18,19,21…局结束后传球至另一边
其他细节
待补充
SQL 入门笔记(六)使用通配符进行过滤
这一节将记录如何使用 LIKE 操作符进行通配搜索,以便对数据进行复杂过滤
LIKE 操作符
前面的大小比较,或者检查某个范围的值都是对于数字来说的
而使用 LIKE 加上 通配符(wildcard)可实现对于字符串的过滤
百分号(%)通配符
最常使用的通配符是百分号(%) ,%表示任何字符出现任意次数
例如,下面找出所有以单词Fish起头的产品
123SELECT prod_id , prod_nameFROM ProductsWHERE prod_name LIKE 'Fish%';
注意:区分大小写根据DBMS的不同及其配置,搜索是可以区分大小写的 ,经过测试,在我这里它是不区分的
通配符可以在搜索模式的任意位置使用任意次数,例如下面使用两个通配符,它们位于模式的两端
123SELECT prod_id , prod_nameFROM ProductsWHERE prod_name LIKE '%bean bag%';
说明:请注意后面所跟的空格有些DBMS会使用空格来填补字段的内容 ,例如某列有 50 个字符,而存储的文本为 Fish bean bag toy (17个字符),则为填满该列需要在文本后附加 33 个空格。这样一来试图使用'F%y'就无法检索出该文本(虽然在我的 MySQL 中并不会这样)。诚然,你可以使用'F%y%',但是更好的方法是使用函数去除空格 ,这种方法在后面会讲
下划线(_)通配符
另一个常用的的就是下划线(_),它只匹配单个字符
说明:DB2 通配符DB2 不支持通配符 _
举一个例子: ...
『公告』“网址收藏”正式页面上线
🎉经过整整一天的忙碌,『网址收藏』页面终于上线了🎉
您可以在顶部的导航栏的『更多』中找到该页面
感觉还是不够好看?但暂时也就这样了吧,还有很多事情要去做呢
其实大部分时间都在折腾安装外挂标签
『C/C++』接收未知个数的数据与EOF
大多数时候,要接收的参数的个数都是已知的
但在有些时候,参数的个数是未知的,这时就需要通过判断scanf()的返回值是否为EOF来解决
scanf()会在读到文档末尾时返回EOF(End Of File),而在命令行中,则需要按下 Ctrl + Z 再按下Enter 来输入这一字符
因此在C中,我们可以使用下面的这一结构
1while (scanf("%d", &a[++count]) != EOF);
执行完成后,输入的数字会保存在a[]中,而count的值就是个数
在C++中,借助cin还可以写得更简单
1while (cin >> a[++count]);
由于本人习惯将数组的0号位置用于保存数组内元素的个数,所以也经常会写成这样
1while (scanf("%d", &a[++a[0]]) != EOF);
SQL 入门笔记(五)高级数据过滤
这一节将记录如何用 AND 和 OR 操作符组合成 WHERE 子句,如何明确地管理求值顺序,如何使用 IN 和 NOT 操作符
组合 WHERE 子句
在上一节中介绍的所有 WHERE 子句在过滤时使用的都是单一条件,为了进行更强的过滤控制,可以使用 AND 和 OR 组合多个条件
AND 操作符
使用 AND 操作符附加条件
123SELECT prod_id, prod_price ,prod_nameFROM ProductsWHERE vend_id ='DLL01' AND prod_price <=4;
这个例子只包含一个 AND 子句,可以增加多个
OR 操作符
这个肯定一眼就能看懂吧
123SELECT prod_name , prod_priceFROM ProductsWHERE vend_id = 'DLL01' OR vend_id = 'BRS01';
求值顺序
对比 AND 和 OR 两个操作符,AND 的优先级更高
但是在实际使用时,墙裂建议使用小括号标记优先级
1234SELECT prod_name , prod_priceFROM ProductsWHERE (vend_id = 'DLL01' OR vend_id = 'BRS01') AND prod_price >= 10;
IN 操作符
IN 操作符用来指定条件范围,范围中的每个条件都可以进行匹配
1234SELECT prod_name , prod_pri ...
SQL 入门笔记(四)过滤数据
使用WHERE子句
数据库一般都包含大量的数据,很少需要检索表中的所有行,通常只需要检索一部分
检索所需的数据需要指定搜索条件(searsh criteria)或称为过滤条件(filter condition)
这时就需要在FROM子句后加上WHERE子句
123SELECT prod_name, prod_priceFROM ProductsWHERE prod_price = 3.49;
提示:SQL 过滤与应用过滤当然你也可以选择在接收到数据后在应用层过滤,但 墙裂不建议这样做 ,一来会浪费带宽,而来更加浪费时间
注意:WHERE 子句的位置在同时使用 ORDER BY 和 WHERE 子句时,应该让 ORDER BY 位于 WHERE 之后,否则将产生错误 (关于 ORDER BY ,请看上一篇)
WHERE 子句的操作符
下表列出了所有操作符
操作符
说明
=
等于
<>
不等于
!=
不等于
<
小于
<=
小于等于
!<
不小于
>
大于
>=
大于等于
!>
不大于
BETWEEN
在指定的两个值之间
IS NULL
为NULL值
注意:操作符兼容表中列出的操作符有些是冗余的(如<>与!=,!<与>=),并非所有的DBMS都支持这些操作符(例如MySQL不支持!>与!<),请参阅你所使用的DBMS的文档
下面来看几个例子
比较单个值
列出所有价格小于 10 美元的产品
123SELECT prod_name, p ...
微信小程序开发基础(六)组件之scroll-view滚动视图
小程序里很多时候都需要用到滚动视图,例如下面的这个例子里
这就需要用到scroll-view组件
<scroll-view>
首先来做一个横向滚动的样例
123456789<scroll-view> <view class="scrOut"> <view class="scrBox">111</view> <view class="scrBox">222</view> <view class="scrBox">333</view> <view class="scrBox">444</view> <view class="scrBox">555</view> </view></scroll-view>
12.scrOut{display: flex;flex-wrap: nowrap;}.scrBox{width: 100px;height: 100px;background: gold;margin-right: 2px; flex: 0 0 100px;}
flex: 0 0 100px表示不放大(0),不缩小(0),原始大小(100px),详情可以参考这篇
但其实上,目前它还不能滚动,因为还没有给它添加 ...
阿里云OSS字体引用问题
前几天把字体文件上传到阿里云OSS,但是发现不能正常引用
今天发现需要设置跨域设置,首先前往控制台,然后来到权限管理页面,进入跨域设置
添加跨域规则,允许所有来源
现在,字体文件可以被正常引用了
『MySQL』如何清屏
很多地方多说使用下面的这个命令,但在我这里没有用
1clear;
最后发现下面这个命令有效
1system clear;
SQL 入门笔记(三)排列检索数据
前言
这一节将讲述如何使用SELECT的ORDER BY字句,根据需要排序检索出来的数据
首先,从上次的例子开始
12SELECT prod_nameFROM Products;
正如上篇所说,返回的数据没有特定的数据,但其实也不是随机显示的。如果不排序,数据一般将以它在表中出现的顺序显示,这有可能是数据最初添加到表中的顺序。但是如果数据随后进行过更新或删除,那么这个顺序会受到DBMS重用回收存储空间的方式的影响
而关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有任何意义
排序数据
使用ORDER BY以排序数据
123SELECT prod_nameFROM ProductsORDER BY prod_name;
警告:ORDER BY 子句的位置请保证ORDER BY子句位于SELECT语句的最后一句,否则将会出错
提示:使用其他列进行排序通常,ORDER BY子句中使用的列将是为显示而选择的列。但是,实际上并不一定要这样,用非检索的列排序数据是完全合法的
按多个列排序
经常需要按不止一个列进行排序,例如要显示雇员的名单,可以希望先按照姓排序,再按照名排序
要实现这一目的,只需使用逗号分开各个列名
下面的代码检索3个列,按其中的两个列进行排序 —— 先按价格,再按名称
123SELECT prod_id, prod_price, prod_nameFROM ProductsORDER BY prod_price, prod_name;
按位置排列
除了指定列名之外,提供在语句中的相对列位置也可以指定排序列
123SELECT pr ...
『Linux』Debian 10 安装 Docker
❤️本文引用自此篇:https://blog.csdn.net/zhupengfei/article/details/102739901,感谢大佬❤️
更新软件源并下载依赖
12sudo apt updatesudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg2
导入存储库的GPG密钥
1curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
将Docker的存储库添加到系统的软件存储库列表中
1sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
重新更新软件源
1sudo apt update
确保您要从Docker repo而不是默认的Debian repo安装
1sudo apt-cache policy docker-ce
(这里会输出一大堆东西)
下载并安装Docker社区版本
1sudo apt install docker-ce
安装完成后,服务应当是自动启动的,可以测试一下能否运行
Hexo + Butterfly 建站指南(七)阿里云 OSS 图床
2023 年 8 月 19 日更:
不要直接使用裸的 OSS,一定要有安全防护啊啊啊啊😭
请见 阿里云OSS被刷,我交了1000RMB学费!
😭 自GitHub图床 + jsDelivr失效,与Gitee图床无法使用以来,就没有好用的免费图床了 😭
我目前使用的是阿里云OSS来托管,需要花钱,但也不是很贵
准备阿里云OSS
购买资源包
在阿里云对象存储->资源包管理页面购买资源包
半年也不到五块钱,还是相对便宜的
其实之后的访问之类的也需要扣费,但是也要不了多少钱,可以先冲个10块到账户里让它慢慢扣
创建存储空间
然后前往Bucket列表创建Bucket
Bucket 名称可以随便取,地域选择与你最近的就行,读写权限改为公共读,其他的各种服务都不用开
新建访问密钥
之后需要解决写入的问题,从右上角头像进入AccessKey管理页面,新建一个Key
记录好ID和密码,复制到记事本里面去
准备 PicGo
下载安装
首先前往PicGo官网下载
它会导到到GitHub上的该项目的releases页面,在最新版打开Assets列表挑选你的系统下载即可
配置
安装后,来到图床设置阿里云OSS,填入密钥的ID和密码,空间名,和存储区域(可以在概览中看见)
下面是我的样例,只需要填前4个
设置为默认图床后,图床准备完毕,每上传一张图片都能自动将链接复制到剪贴板里,直接在typora里粘贴即可
还有更方便的方法,你可以在 typora 中设置与 PicGo 联动,这样直接在文章中粘贴图片就能自动上传,简直不要太爽