核心1

"""Python核心1Python 简介执行过程源代码 -编译-> 字节码 -解释-> 机器码.py         .pyc          01(只有导入的模块)|-----第一次-----|main.py  -- 入口(代码简单,导入其他功能模块)usl.py   -- 界面(处理界面逻辑View)bll.py   -- 业务(业务逻辑Controller)model.py -- 模型(封装Model)快捷键:百度搜索Pycharm快捷Python自动化内存管理引用计数:每个对象记录被变量绑定(引用)的数量,当为0时被销毁。缺点:循环引用 - 两个垃圾数据互相引用时机:时刻标记清除:"全盘"扫描内存,检查(标记)不再使用的数据.缺点:效率太低时机:内存告急分代回收:将内存分为小中大三代每次创建新数据都在0代分配空间当标记清除后,将前一代有用的数据升级到下一代.前一代所有数据清空内存优化:尽少产生垃圾/自定义对象池/控制内存管理系统对象池:每当创建对象时,在池中判断是否存在相同对象,如果有直接返回地址如果没有再分配空间创建对象例如,字符串池/整数池/小数池.....价值:提高内存利用率"""
# 循环引用
list01 = []
list02 = []
list01.append(list02)
list02.append(list01)
del list01, list02# 产生垃圾的常用代码:
a = "数据1"
a = "数据2"  # 当变量a又指向"数据2"时,"数据1"成为垃圾.b = "数据3"
del b  # 因为变量b被销毁,所以"数据3"成为垃圾# 根据某些逻辑,循环拼接字符串.(频繁修改字符串)
str_result = ""
for number in range(10):# 两个不可变对象,相加后会产生新对象str_result = str_result + str(number)
print(str_result)# 解决:使用可变对象代替不可变对象
list_result = []
for number in range(10):list_result.append(str(number))
str_result = "".join(list_result)
print(str_result)data01 = "悟空"
data02 = "悟空"
print(id(data01))
print(id(data02))

核心2

"""Python核心2语句容器
"""# def func01():
#     for r in range(5):  # 执行一次
#         for c in range(4):  # 执行多次
#             # continue # 跳过当次循环
#             # break 跳出1层循环
#             return  # 结束函数(跳出所有循环)# 读取操作
import copy
list01 = [10, 20, 30]
list02 = list01  # 赋值:将list01存储的列表地址给list02
list03 = list01[:]  # 浅拷贝:将list01指向的列表复制一份
list04 = list01[::-1]  # 浅拷贝:通常,[30, 20, 10]list05 = [[10,20,30]
]
# list06 = copy.deepcopy(list05) # 深拷贝:拷贝所有数据[10,20,30]
list06 = list05[:] # 浅拷贝:只拷贝一层
list05[0][1] = 100 # 修改第二层数据
print(list06[0][1]) # ?# 写入操作
list01 = [10, 20, 30]
list01[0] = 100 # 将右侧数据地址赋值给列表元素
list01[1] = [200] # 将右侧数据地址赋值给列表元素
list01[2:] = [300,400] # 遍历右侧元素,赋值给列表元素
print(list01)

应用

# 斐波那契数列:从第3项开始,每一项都等于前两项之和。
#     1, 1, 2, 3, 5, 8, 13, 21..
# 定义函数,根据长度获取斐波那契数列。
def get_fib(length):#length = 6#保存数列前两项内容#[1,1]  1+1 = 2#[1,1,2] 1+2 = 3#[1,1,2,3] 2+3 = 5#[1,1,2,3,5] 3+5 = 8seq = [1, 1]if length <=2:return seqfor i in range(length-2):# i = 0 1 2 3# seq.append(seq[i]+seq[i+1])seq.append(seq[-1]+seq[-2])return seqprint(get_fib(10))# 2. 定义函数,删除列表中所有重复的元素(重复元素只保留一个)。
# 输入:[4,35,7,35,64,7,35]
# 输出:[4, 35, 7, 64]
def delete_duplist(target):for r in range(len(target)-1,0,-1):#r = range(5,-1,-1) 5 4 3 2 1 0for c in range(r):#r = 5   c = 0~4 0 1 2 3 4if target[c] == target[r]:del target[r]breakdef delete_duplist2(target):for r in range(len(target)-1,-1,-1):# target[0:r]切片 会产生新的列表 效率下降if target[r] in target[0:r]:del target[r]
# 16:02~16:12
list01 = [4,35,7,35,64,7,35]
delete_duplist2(list01)
print(list01)# 3. 定义函数,判断二维数字列表中是否存在某个数字
# 输入:二维列表、11
# 输出:True
def is_exists(double_list,target):for line in double_list:if target in line:return Truereturn Falsedouble_list = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]
]
print(is_exists(double_list,11))# 4. 定义函数,返回字符串中第一个不重复的字符。
# 输入:ABCACDBEFD
# 输出:E#统计字符串中 每一个字符出现的次数 以字典的形式返回
# {'A':2,'B':2...}
def get_repeating_info(target):dict_repeat_info = {}# 遍历字符串 取出每一个字符 获取数据(出现的次数) 保存到字典for char in target:# dict_repeat_info[char] = target.count(char)if char not in dict_repeat_info:dict_repeat_info[char] = 1else:dict_repeat_info[char] += 1print(dict_repeat_info)return dict_repeat_infodef firt_not_repeating_char(target):dict_info = get_repeating_info(target)for k,v in dict_info.items():if v == 1:return kprint(firt_not_repeating_char('ABCACDBEFDG'))# 5.质数:大于1的整数,除了1和它本身以外不能再被其他数字整除。
#     定义函数,获取指定范围内的所有质数。
# 输入:2,20
# 输出:[2, 3, 5, 7, 11, 13, 17, 19]#5  (234)
#8  (234567)
#n  (2~n-1)
def is_prime(number):for i in range(2,number):if number % i == 0:#不是质数return Falsereturn True
# print(is_prime(5))def get_prime(begin,end):return [num for num in range(begin,end+1) if is_prime(num)]# result_list = []# for num in range(begin,end+1):#     if is_prime(num):#         result_list.append(num)# return result_list
print(get_prime(2,20))

核心3

"""Python核心3函数参数实际参数:对应位置实参:按顺序关键字实参:按名字形式参数:位置形参:必填默认形参:可选星号元组形参:合 - 位置实参命名关键字形参:约束只能是关键字实参双星号字典形参:合 - 关键字实参
"""# 位置形参:必填
def func01(p1, p2, p3):pass# 位置实参:按顺序对应
func01(1, 2, 3)
list01 = ["a", "b", "c"]
func01(*list01)  # 拆# 关键字实参:按名称对应
func01(p1=1, p2=2, p3=3)
dict01 = {"p1": "a", "p2": "b", "p3": "c"}
func01(**dict01)  # 拆# 默认形参:可选
def func02(p1=0, p2="", p3=0.0):passfunc02()
func02(1, "b")
func02(p2="b")
func02(1, p3=3.0)# 星号元组形参:合 - 位置实参
def func03(*args):print(args)  # (1, 2, 3, 4, 5)func03(1, 2, 3, 4, 5)# 命名关键字形参:约束只能是关键字实参
def func04(*args, a, b):pass# sorted(__iterable,*,key,everse)
def func05(a, *, b=0):passfunc04(1, a=2, b=3)
# a属于主要必填数据,b属于特定环境下的修饰
func05(1, b=2)# 双星号字典形参:合 - 关键字实参
def func06(**kwargs):pass

面向对象实例

class Dog:count = 0def __init__(self,color):self.color = colorDog.count += 1#方法def say(self):print('wangwangwang')@classmethoddef total_count(cls):print(Dog.count)#实例化
# taidi = Dog('yellow&white')
#设置对象的属性
# taidi.color = 'yellow&white'
#设置对象的方法(行为)
# taidi.say = say
# erha = Dog('black&white')
# print(taidi.color)
# taidi.say()Dog.total_count()class MyWife:def __init__(self,name,age):self.name = nameself.age = age@propertydef age(self):return self.__age@age.setterdef age(self,value):if 20>value or value>30:raise ValueError('我不要')self.__age = valuewife1 = MyWife('翠花',20)
# 规范用户使用
# 20<age<30 休息20:00~20:10
wife2 = MyWife('小乔',2000)
# wife2.age = 2000class GParent:passclass Parent(GParent):def __init__(self,atk,hp):self.atk = atkself.hp = hpdef attack(self,target):passdef damage(self,value):pass#玩家攻击敌人   敌人受伤,还可能死亡class Player(Parent,GParent):def attack(self,target):print('黑虎掏心')target.damage(self.atk)def damage(self,value):print('小样你敢打我!')self.hp -= valueif self.hp <= 0:print('太菜了')class Enemy(Parent):def attack(self,target):print('普通攻击第一式')target.damage(self.atk)def damage(self,value):print('玩家打人啦')self.hp -= valueif self.hp <= 0:print('a~~~~')print('爆装备')p1 = Player(50,100)
e1 = Enemy(10,100)
p1.attack(e1)
e1.attack(p1)
e1.attack(p1)
e1.attack(p1)
e1.attack(p1)
p1.attack(e1)
#老张开车去东北
#坐飞机
class Person:def __init__(self,name):self.name = namedef go_to(self,vehicle,postion):print(self.name,'去',postion)#多态   调用父类方法vehicle.transport()#继承  隔离变化
class Vehicle:def transport(self):passclass Car(Vehicle):#多态  重写父类内容def transport(self):print('小汽车滴滴滴')class Airplane(Vehicle):def transport(self):print('飞机搜嗖嗖')# laozhang = Person('老张')
# c1 = Car()
# p1 = Airplane()
# laozhang.go_to(p1,'东北')
# laozhang.go_to(c1,'东北')#手雷爆炸 可能伤害玩家/敌人
class Grenade:def __init__(self,atk=50):self.atk = atkdef explode(self,target):target.damage(self.atk)class AttackTarget:def damage(self,value):pass
# 休息19:57~20:05
class Player(AttackTarget):def __init__(self,hp=100):self.hp = hpdef damage(self,value):self.hp -= valueprint('a~~~玩家受伤啦')class Enemy(AttackTarget):def __init__(self,hp=50):self.hp = hpdef damage(self,value):self.hp -= valueprint('敌人受伤啦')g1 =  Grenade()
g1.explode(Player())
g1.explode(Enemy())#定义员工管理器 计算员工的薪资
#程序员 :底薪+项目分红
#测试: 底薪+bug数*5class EmpManager:def __init__(self):self.__all_emp = []def add_emp(self,emp):self.__all_emp.append(emp)def calc_total_salary(self):total_salary = 0for emp in self.__all_emp:total_salary += emp.get_salary()return total_salaryclass Employee:def get_salary(self):passclass Programmer(Employee):def __init__(self,base_salary,bonus=0):self.base_salary = base_salaryself.bonus = bonusdef get_salary(self):return self.base_salary+self.bonusclass Tester(Employee):def __init__(self, base_salary, bug_count=0):self.base_salary = base_salaryself.bug_count = bug_countdef get_salary(self):return self.base_salary + self.bug_count*5manager = EmpManager()
manager.add_emp(Programmer(20000,100000))
manager.add_emp(Tester(10000,200))
manager.calc_total_salary()

小游戏

# 1. 创建函数,生成指定行数的杨辉三角。
#     杨辉三角:
#     每行端点与结尾的数为1,每个数是它左上方和右上方的数的和
#     输入:6
#     输出:
#          [
#                     [1],
#                    [1, 1],
#                   [1, 2, 1],
#                  [1, 3, 3, 1],
#                [1, 4, 6, 4, 1],
#              [1, 5, 10, 10, 5, 1]
#          ]#  1 yanghui[2][0]  yanghui[2][1]
#  3  yanghui[3][1]
#  yanghui[3][0]   yanghui[3][1]
#  4 yanghui[4][1]# yanghui[row-1][i-1]+yanghui[row-1][i]
# yanghui[row][i]
def get_yang_hui(row_count):#row_count = 6yanghui = []for row_index in range(row_count):#row_index 0~5row = [None] * (row_index+1)#设置每一行的内容#设置首尾row[0],row[-1] = 1,1#设置中间元素for i in range(1,row_index):row[i] = yanghui[row_index-1][i-1] + yanghui[row_index-1][i]yanghui.append(row)return yanghuiprint(get_yang_hui(6))# 2.  "水仙花数":各位数字幂次方和等于该数本身
#     定义函数,根据位数计算水仙花数
#     输入:3
#     输出:[153, 370, 371, 407]
#     153 = 1**3+5**3+3**3
#     '153'def check_num(num):'''判断数字num是不是水仙花数:param num: 数字:return: 布尔值'''str_number = str(num)#153  -->  '153'power = len(str_number)# 3sum = 0for item in str_number:sum += int(item) ** power #sum = 1**3+5**3+3**3return sum == numdef get_list(n):'''获取指定位数的水仙花数列表:param n: 位数 整数:return: 列表'''# res = []# for i in range(10**(n-1),10**n):#     if check_num(i):#         res.append(i)return [num for num in range(10**(n-1),10**n) if check_num(num)]res = get_list(3)
print(res)# res = check_num(153)
# print(res)# 3. 二分查找
#     定义函数,在有序数字列表中找到目标值,并返回其索引。
#     如果目标值不在列表中,返回它可以按顺序插入的索引。
#     输入:[1,2,6,8,9]  8
#     输出:3
#
#     输入:[1,2,6,8,9]  5
#     输出:2def search_insert_index(num_list,target):left = 0right = len((num_list))-1while left <= right:mid = (left + right) // 2if num_list[mid] == target:print('找到%d' % target)return midelif num_list[mid] < target:left = mid + 1else:right = mid - 1print('未找到%d,可以在索引值%d位置插入' % (target,left))return leftsearch_insert_index([1,2,6,8,9],8)
search_insert_index([1,2,6,8,9],5)# 4. 根据值,对字典进行升序排列。
#     输入:{"张无忌":201,"赵敏":101,"小昭":105,"周芷若":302}
#     输出:[('赵敏', 101), ('小昭', 105), ('张无忌', 201), ('周芷若', 302)]def order_dict(dict_target):list_target = list(dict_target.items())print(list_target)for r in range(len(list_target)-1):for c in range(r,len(list_target)):if list_target[r][1] > list_target[c][1]:list_target[r],list_target[c] = list_target[c],list_target[r]return list_targetprint(order_dict({"张无忌":201,"赵敏":101,"小昭":105,"周芷若":302}))

计算员工工资

"""工资计算器
"""class SalaryCalculator:"""工资计算器"""# 免税收入free_income = 5000def __init__(self, list_salary_before_tax, special_deduction=0, base_pay=3613):"""创建工资计算器对象:param list_salary_before_tax:税前工资列表:param special_deduction:专项扣除:param base_pay:社保缴纳基数"""self.list_salary_before_tax = list_salary_before_taxself.special_deduction = special_deductionself.base_pay = base_pay# 社保是根据base_pay计算而来,不应由外部干预(配以只读属性)self.__social_insurance = 0self.__list_tax = Noneself.__list_salary_after_tax = Noneself.get_salary()@propertydef list_salary_before_tax(self):"""税前工资列表"""return self.__list_salary_before_tax@list_salary_before_tax.setterdef list_salary_before_tax(self, value):"""税前工资列表"""# 限制每月薪资都是正数for i in range(len(value)):if value[i] < 0:value[i] = 0self.__list_salary_before_tax = value@propertydef special_deduction(self):"""专项扣除"""return self.__special_deduction@special_deduction.setterdef special_deduction(self, value):"""专项扣除"""if value < 0: value = 0self.__special_deduction = value@propertydef base_pay(self):"""社保缴费基数"""return self.__base_pay@base_pay.setterdef base_pay(self, value):"""社保缴费基数"""if 3613 <= value <= 23565:self.__base_pay = valueelse:raise Exception("社保缴费基数超过国家限制范围")@propertydef social_insurance(self):"""个人社保缴纳费用"""return self.__social_insurance@propertydef list_tax(self):"""个税列表"""return self.__list_tax@propertydef list_salary_after_tax(self):"""税后工资列表"""return self.__list_salary_after_taxdef __calculate_personal_income_tax(self):"""计算个人所得税"""self.__list_tax = []for i in range(len(self.list_salary_before_tax)):month = i + 1salary_pay_tax = self.__get_salary_pay_tax(self.social_insurance, month)tax = self.__get_tax(salary_pay_tax)self.__list_tax.append(tax)def __get_salary_pay_tax(self, social_insurance, month):"""获取需要纳税工资:param social_insurance: 社保:param month: 月份:return:该月份需要纳税的工资"""# 纳税工资 = 累计税前工资 -累计起征点- 累计专项扣除数- 累计社保return sum(self.list_salary_before_tax[:month]) - SalaryCalculator.free_income * month - social_insurance * month - self.special_deduction * monthdef __get_tax(self, salary_pay_tax):"""获取当月个税:paramsalary_pay_tax: 获取需要纳税工资:paramlist_tax: 已缴纳税额列表:return:当月个税"""# 个税 = (累计纳税工资 * 预扣率 - 速算扣除数)-累计已缴纳税额deduction, tax_rate = self.__get_tax_rate_and_deduction(salary_pay_tax)tax = round(salary_pay_tax * tax_rate - deduction - sum(self.__list_tax), 2)if tax < 0: tax = 0return taxdef __get_tax_rate_and_deduction(self, salary_pay_tax):if salary_pay_tax < 36000:tax_rate = 0.03deduction = 0elif salary_pay_tax <= 144000:tax_rate = 0.1deduction = 2520elif salary_pay_tax <= 300000:tax_rate = 0.2deduction = 16920elif salary_pay_tax <= 420000:tax_rate = 0.25deduction = 31920elif salary_pay_tax <= 660000:tax_rate = 0.3deduction = 52920elif salary_pay_tax <= 960000:tax_rate = 0.35deduction = 85920else:tax_rate = 0.45deduction = 181920return deduction, tax_ratedef __calculate_salary_after_tax(self):"""计算税后工资"""self.__list_salary_after_tax = [round(self.__list_salary_before_tax[i] - self.__list_tax[i] - self.__social_insurance, 2)for i in range(len(self.__list_salary_before_tax))]def __calculate_social_insurance(self):"""获取社保"""# 养老保险:8%;医疗保险:2% 加三元;失业保险:0.2%;公积金:12%。self.__social_insurance = 3 + self.__base_pay * (0.08 + 0.002 + 0.02 + 0.12)def get_salary(self):"""获取工资:return:税后工资"""self.__calculate_social_insurance()self.__calculate_personal_income_tax()self.__calculate_salary_after_tax()return self.list_salary_after_tax# ----------------------------测试----------------------------
jh = SalaryCalculator([30000] * 12, special_deduction=1000, base_pay=20000)
ltt = SalaryCalculator([50000] * 12, special_deduction=1000, base_pay=20000)
print(jh.get_salary())
print(ltt.get_salary())

高级

"""python 高级装饰器 - 拦截导入模块/包方式:import 模块名 -- 本质就是通过变量(模块名)访问其他模块from 模块名 import 成员 -- 本质是将其他模块导到当前作用域中是否成功唯一标准:导入路径 + sys.path = 真实路径sys.path 是列表,存放所有导入搜索路径.根目录:主模块所在文件夹主模块:第一次运行的文件异常处理适用性:针对运行时的逻辑错误(数据范围),不是语法错误.现象:不断向上返回,不再向下执行.价值:保障程序可以按照既定流程处理语法:try:可能出错的代码except 错误类型:处理逻辑生成器惰性/延迟操作循环一次,计算一次,返回一个不建立容器存储所有数据生成器函数适用性:函数返回多个结果语法:def 函数名():...yield 数据for item in 函数名():print(item)生成器表达式语法:(item for item in 可迭代对象)"""
list01 = [4, 45, 5, 6, 7]
for item in list01:print(item)# iterator = list01.__iter__()
# while True:
#     try:
#         item = iterator.__next__()
#     except StopIteration:
#         break# 外函数负责接收旧功能
# 内函数负责包裹新旧功能
# 闭包:逻辑连续(从一次接收到多次包裹)
def verif_permissions(func):def wrapper(*args, **kwargs):  # 合并insert(1,2, p3=3,p4=4)传入的信息print("验证权限")return func(*args, **kwargs)  # 拆后与旧功能对应return wrapper@verif_permissions(10)  # 一次接收
def insert(p1, p2, p3, p4):print(p1, p2, p3, p4)# 多次包裹
insert(1, 2, p3=3, p4=4)  # 调用的是内部函数
insert(1, 2, p3=3, p4=4)
insert(1, 2, p3=3, p4=4)

Python--总结第一阶段相关推荐

  1. python开发基础戴歆第四章_第一阶段:Python开发基础 day04 课后练习

    第一阶段:Python开发基础 day04 课后作业 1.简述python的五大数据类型的作用.定义方式.使用方法 数字类型 字符串类型 列表 字典 布尔型 答:数字类型分为整型(int)和浮点型(f ...

  2. Python第一阶段学习总结

    [第7天]Python第一阶段学习总结 2021/09/23 一. 元组 元组的定义 元组是容器型数据(序列),将()作为容器的标志里面多个元素用逗号隔开:(元素1, 元素2,-) 元组不可变(不支持 ...

  3. 风火轮编程Python第一阶段课程检测评估单

    风火轮编程Python第一阶段课程检测评估单 姓名:                              一.单选题,把正确的答案编号写在问号后面. 1.python在英文中的本意是?     ...

  4. Java学习总结第一阶段

    day1(甘特图)预科阶段 甘特图:让工程项目变成可视化图表,也叫项目进度规划表. 一般由:任务名称.工期.开始时间.完成时间.前置任务.资源名称.日期组成 如下所示,资源名称那就是人的名字,前置任务 ...

  5. 【进阶Python】第一讲:开篇

    前言 2015年,本科毕业的那个暑假我开始疯狂的投递简历,希望找一份数据分析与数据挖掘相关的实习工作.直到有一家公司的面试官问到我:"你会Python吗?",我当时一脸疑惑,因为, ...

  6. 大数据第一阶段学习笔记

    开始:2022年11月6日 以下内容仅为个人笔记整理.(第一阶段的内容并不完全.硬件上有点问题,暂时无法解决,空着的部分后续补上.) 第0章 大数据介绍 大数据可以从事的职位有: 大数据工程师 数据分 ...

  7. 东师理想运维工具开发路线图(第一阶段)

    东师理想运维工具开发路线图(第一阶段) 全面建设三个目标:自动化打包.自动化运维.自动化测试(由易到难) 1.TEACH.EDUOFFICE.备课助手.理想课堂 四个产品的内部IP+外部IP服务器端打 ...

  8. 专访北邮教授孙松林:5G尚处第一阶段 中国定会独领风骚

    万物智联的5G时代即将到来,从2019年5月开始,网易科技重磅打造"5G+访谈",邀请行业内大咖共话5G,探讨"5G+"时代的机遇和挑战.网易科技将通过专业视角 ...

  9. C++第一阶段(远程控制)-卢嘉文-专题视频课程

    C++第一阶段(远程控制)-203人已学习 课程介绍         C++这门编程语言40年屹立不倒,并在C++11标准推出后又迸发出新的活力,人们用到的操作系统,移动设备,嵌入式,分布式,Php, ...

  10. 视频教程-微信小程序开发教程(第一阶段、页面设计)(维吾尔语)-HTML5/CSS

    微信小程序开发教程(第一阶段.页面设计)(维吾尔语) 毕业于北京邮电大学计算机专业.拥有将近10年的开发经验.精通java.php.python.c/c++.微信开发等等技术! 艾孜麦提阿布都热合曼 ...

最新文章

  1. 程序员的起床动力 | 每日趣闻
  2. mysql表只有frm文件_MYSQL数据文件--.frm文件(只有.frm文件时的表结构恢复)
  3. SQL Case When Then 条件判断
  4. 函数参数和函数返回值
  5. 数据库_7_SQL基本操作——表操作
  6. 使用mfc修改窗口背景,图表
  7. 数字信号处理基础知识
  8. 冰点还原忘记密码如何修改配置或卸载
  9. C语言异或运算逆运算,异或的逆运算
  10. 人力资源数据分析师前景_5-数据分析师前景怎么样
  11. Bazel5.0.0源码安装报错:no matching function for call to ‘StrFormat(const char [28], const char*)’
  12. 奔涌吧 后浪!!! 哔哩哔哩 何冰
  13. DER 和 PEM 格式
  14. 浏览器状态响应码详解 1XX/2XX/3XX/4XX/5XX
  15. 第二阶段>>>数据库/SQL/SSM/JDBC/核心总结
  16. PRI变换法原理解析及其matlab分析
  17. 企业信息化系统CRM篇
  18. 架构设计:系统间通信(10)——RPC的基本概念
  19. Web前端深色模式适配方案
  20. 电动车电池管理系统结构

热门文章

  1. drawInRect 绘制文字
  2. 织梦DedeCMS文章列表页自动统计当前栏目文档总数的方法
  3. 使用Scrapy爬取笑话并存储到文件和MySQL
  4. OJ每日一练——药房管理
  5. CSUST 2021银川选拔赛
  6. Linux 之Sed使用
  7. 软件装机必备,良心推荐
  8. ifix 自动化(Automation)错误弹窗的解决方案
  9. 华硕 A550jk-4710HQ 装Windows 10和Ubuntu 16.04遇到的各种各样的问题
  10. 基于Storm流计算天猫双十一作战室项目实战(Storm Kafka HBase )