老男孩Python全栈工程师教程第9期

全栈9期(第一部分):基础+模块+面向对象+网络编程

全栈9期(第二部分):并发编程+数据库+前端

全栈9期(第三部分):django基础

全栈9期(第四部分):django进阶

全栈9期(第五部分):django高级

Read More

5点提升你的编程逻辑能力

在编程中,逻辑能力是成为一个好的开发者的关键。或许,根据你的工作内容,你有可能会用到比较多的算法,也有可能比较少。如果你是个web设计者,或许你很少会处理复杂的算法。但是如果你是个前端开发者就会稍微有一些了。甚至如果你是个后端开发者将会更多。

在这里,我列了5点我觉得还可以的,来帮你提高编程逻辑。

Read More

聊聊【折腾】的重要性

作者/编程随想

★引子

前不久写了篇关于 Linux 的博文。看到博客评论区中有一些“关于折腾的抱怨”。之前俺写其它教程(比如:翻墙、操作系统虚拟机),也看到过类似的抱怨。

关于折腾的抱怨,俺总结下来有两类:

其一,“从不折腾的人”抱怨折腾太麻烦(这类抱怨往往是泛泛的)

Read More

写在水上的字

文/林清玄

生命的历程就像是写在水上的字,顺流而下,想回头寻找的时候总是失去了痕迹,因为在水上写字,无论多么的费力,那水都不能永恒,甚至是不能成型的。

如果我们企图要停驻在过去的快乐里,那真是自寻烦恼,而我们不时从记忆中想起苦难,反而使苦难加倍。 生命历程中的快乐和痛苦,欢欣和悲叹水只是写在水上的字,一定会在时光里流走。

Read More

永远不要在 MySQL 中使用utf8

本文出自极客邦「聊聊架构」公众号的编译。我自己当年也被这个问题坑过,当时并没有如此详细的分析文章。我觉得有责任再次分享一下,让更多人知道这个事情。程序员不帮助程序员,还能指望谁呢?

最近我遇到了一个 bug,我试着通过 Rails 在以「utf8」编码的 MariaDB 中保存一个 UTF-8 字符串,然后出现了一个离奇的错误:

1
Incorrect string value: ‘\xF0\x9F\x98\x83 <…’ for column ‘summary’ at row 1

Read More

Windows XP SP3下载(附激活码)

Windows XP是美国微软公司研发的基于X86、X64架构的PC和平板电脑使用的操作系统,于2001年8月24日发布RTM版本,并于2001年10月25日开始零售。 [1-2] 其名字中“XP”的意思来自英文中的“体验(Experience)”。

该系统是继Windows 2000及Windows ME之后的下一代Windows操作系统,也是微软首个面向消费者且使用Windows NT5.1架构的操作系统。

Read More

爬楼梯问题

题意: 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?

这个题目是经典的递归、递推问题。

这里先说说递归的思想吧。

我们令f(n)表示n步台阶的走法。那么要走到n步之前只有两种情况。一种是走到了n-1步台阶上,另一种是走到了n-2步台阶上。

Read More

大整数加法

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
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;


int main() {
// 1. 开始程序,输入两个字符串
string str1, str2;
cin >> str1 >> str2;

// 2. 初始化一个数组,并每个元素初始化为0
int a[1000];
for (int i = 0; i < 1000; ++i) a[i] = 0;

// 3. 把str1的每一位从最后开始拿(依次为str[str1.length()-1],str[str1.length()-2],...,str1[0]}),依次累加到a[0],a[1],a[2]...,a[str1.length()-1]
for (int i = 0; i < str1.length(); ++i) {
a[i] += ( str1[str1.length()-i-1] - '0' ); // 把对应位置字符拿出来,然后-'0'则是字符对应的数字
}
// 4. 把str2的每一个从最后开始拿,同3操作。
for (int i = 0; i <str2.length(); ++i) {
a[i] += ( str2[str2.length()-i-1] - '0' );
}

// 5. 从最低位,也就是0下标开始对数组a进行整理(也是就我们加法的时候所谓的进位。)
for (int i = 0; i < 999; ++i) {
int tmp = a[i] / 10; // 拿出除去个位的部分,如:a[i] = 23;则tmp为2,进位操作的时候3保留下来,2,加到高位去。
a[i+1] += tmp; // 进位操作
a[i] %= 10;
}

// 6. 寻找最高位不为零的位置。当所有数字都为0时,high会为-1,则需要将high赋值为0
int high = 999;
while (0 == a[high]) --high;
high = high > 0 ? high : 0; // 不想用if-else来操作。

// 7. 从最高位开始输出
for (int i = high; i >= 0; --i) cout << a[i];
cout << endl;
return 0;
}

Read More

快速幂

我们从一个简单的问题开始。 $ 6^{208}\%23 $等于多少。解这个题目最笨的方法是把$6^{208}$算出来,然后再算$6^{208}\%23$。接下来我们讲解一种快速计算的方法。此方法在ACM-ICPC中非常重要,在密码学考试中一样相当重要。

首先我们来计算一下$6^{208}$是多少吧。

Read More

Linux基础教程

为了今天讲课我特意搞了这份讲义,以为待会车速太快没办法平稳停车。

我是在2005年,那年我读初中二年级,在学校发读信息技术教科书上看到Linux这个词的。我知道大部分初高中同学在拿到信息技术这类教材的时候都是直接塞桌底的。高中Linux用得少,没什么机会搞事情。到了高三毕业的时候,好友给我一个上网本,他自己安装的Linux系统。别以为是什么好事情,这货自己把上网本搞出问题来,让我帮忙修来着,我修不了,顺带手自己在U盘里搞了一个Linux,然后从U盘启动,他电脑硬件没坏。到了大学,大一大二我都是用Ubuntu,刚开始来大一的时候还是用雨林木风的,大三的时候用Slackware,大四用FreeBSD,现在滚到macOS了。但是就是觉得用Linux很爽,写代码在命令行下编译,不用纠结用那个IDE环境,各个IDE环境的界面还不一样,尤其是编译运行调试的快捷键都不一样,搞得我差不多需要写个纸条贴在屏幕边上告诉我哪个快捷键是哪个IDE下编译的快捷键。大一下学期我就在蓄谋我们学校OJ的事情了。当时还是在自己笔记本电脑上安装环境,然后在上面导入一些大佬分享出来的题目数据。这样我回家的时候就能正常刷题了。理解一下山区孩子没网但要刷题的迫切需要。

Read More