自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(175)
  • 收藏
  • 关注

原创 关于GoFrame框架中Context相关梳理及实例

什么是Context?Context指的是标准库的context.Context,是一个接口对象,常用于异步IO控制以及上下文流程变量的传递。在GoFrame中Context被主要是用它来给协程之间共享数据。Context有什么用?GoFrame是网络应用开发框架,在网络应用中存在大量IO操作,使用Context可以减少IO操作,提高运行效率。比如用户登录时,通常需要连接到数据库比对用户名和密码,另外Web应用中很多模块在使用前都要判断账户信息确认权限等级,即用户每次点击要先检验权限然后才能进行后续

2021-08-04 08:08:14 5613 7

原创 学习GoFrame框架,从头开始一步步搭建个人博客WEB应用(上)

简介:GoFrame是一款中国人开发的大而全的框架,类似于Python的Django,常用的功能和模块应有尽有。goframe.org有完善、细致、全面的中文文档,非常适合中国人使用。目标:目前官网文档虽细致、全面,但没有一款面向新手的详细案例教程,...

2021-07-30 23:54:32 5064 1

原创 Go圣经练习2:统计一个uint64数的二进制1的个数

题目要求原题给出了查表法的代码,要求另外写出别的方法的代码查表法func PopCount(x uint64) int { pc := [256]byte{ 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4,

2021-07-04 12:22:50 341

原创 Go圣经练习3:给浮点数加逗号;判断2个乱序字符串是否相同

给浮点数字符串加逗号要求:不用递归,支持浮点数处理和一个可选的正负号处理代码:package gopl// Comma 非递归版,给数字字符串每3位加","且处理开头的-、符号func Comma(s string) string { if len(s) <= 3 { return s } // 获取字符串头部非数字部分 head := "" i := 0 for _, j := range []byte(s) { if j >= 48 && j

2021-07-03 16:38:55 301

原创 以斐波那契数列为例谈谈Python程序员转学Go要注意的细节

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……即正整数数列,数字逐渐变大,从第三个数开始,当前数是前2个数之和。Python版本的代码如下:import timedef fibonacci(n: int): if not isinstance(n, int): r

2021-07-02 20:18:08 214

原创 Go语言,Error方法和String方法

在Go语言中,我们可以通过实现自定义类型的String方法或Error方法让fmt.print系方法打印自定义类型的字符串表示,但通常我们只需要定义一个Error方法。大家可以通过测试下面的代码案例得出结论:倘若String方法和Error方法同时实现,Error方法会被优先调用,而String方法会被忽略。所以通常推荐给自定义类型实现一个Error方法即可。package mainimport "fmt"type IPAddr [4]byte// TODO: 给 IPAddr 添加一个

2021-07-01 22:40:43 1337 1

原创 Go语言:切片的长度与容量

Go语言的切片拥有长度和容量2个属性。切片的长度就是它所包含的元素个数,切片的容量是从它的第一个元素开始数,到其底层数组元素末尾的个数。我们可以用len()方法来得到切片的长度、用cap()方法来得到切片的容量。package mainimport "fmt"func main() { s := []int{2, 3, 5, 7, 11, 13} printSlice(s) // 截取切片使其长度为 0 s = s[:0] printSlice(s) // 拓展其长度 s =

2021-06-30 22:30:06 3687

原创 关于修改linux系统的DNS

DNS是域名解析服务器,适当的DNS会加速你上网的速度。DNS我推荐2个,一是阿里的、二是谷歌的:223.5.5.5 # 阿里的dns8.8.8.8 # 谷歌的dns在linux mint、ubuntu下可以通过修改vim /etc/resolv.conf修改dns,添加以下内容:nameserver 127.0.0.53nameserver 223.5.5.5nameserver 8.8.8.8还可以通过下面的命令来查看目前使用的dns:systemd-resolve --stat

2021-06-22 15:43:39 1167

原创 Django之url别名冲突解决方法

url命名空间,可以让不同app下相同的url别名互不冲突。下面通过一个案例来详细解释:假如有一个Django项目名字是myproject,该项目下有app01和app02这2个应用。那么我们应该这样做路由分发:项目总urls入口是/myproject/myproject/urls.py,它的内容如下:from django.contrib import adminfrom django.urls import path, includeurlpatterns = [ path('ad

2021-06-03 22:55:07 721 1

原创 安装极致速度兼具稳定性和兼容性的python运行环境pypy

简介python因其简洁优雅的语法、数量众多的软件包、极高的开发效率深受广大程序员喜爱,但同时python程序的运行速度广受诟病。若你想不改动代码就提高python运行速度,我向你郑重推荐PyPy。PyPy是一款拥有即时编译(JIT)功能的Python解释器,它专注于速度、效率以及和CPython完全的兼容性。另外python程序在windows下加载子线程的方式是重新导入py程序(涉及IO),而在linux下加载子线程的方式是从父进程分叉克隆(不涉及IO),由此导致同样的多线程、多进程的python程

2021-05-16 13:08:27 1278 3

原创 Manjaro安装、配置、调试超详细攻略

换源启动terminal,输入:sudo pacman-mirrors -i -c China -m rank在弹出的框中选一个最快的源,一个就好,选多了会降低速度sudo pacman -Syysudo pacman -S yayTRMsudo systemctl enable fstrim.timer

2021-03-22 14:44:05 54769 11

原创 amd显卡笔记本使用Linux系统开机报背光异常的解决方法

问题说明使用amd系显卡的笔记本电脑在用linux系统时若发现开机有类似下面的异常提示:Failed to start Load/Save Screen Backlight Brightness of backlight:acpi_video1或者有背光不能调节亮度或者插拔外接电源时屏幕亮度变成0的现象,请认真看下文,这有解决方案。首先在终端里输入下列命令,若输出内容类似“amdgpu_bl0”则说明用的是amd系显卡。ls /sys/class/backlight/解决方案1.首先编辑g

2021-03-19 22:07:12 2465

原创 fish shell使用及安装入门指南

fish是一个用户友好的命令行外壳程序,全称Friendly Interactive Shell。fish功能简介语法高亮:输入命令时,你会发现输入错误的命令显示为红色,正确的命令为淡紫色,参数提示为浅蓝色。智能提示:在输入命令时会根据历史记录出现灰色提示,若该提示是你需要的可以按ctrl+f或→键即可自动补全命令。快速路径:fish增加了2条独有的快速切换路径的命令。dirh:可显示当前会话中进入过的路径记录。prevd:根据dirh的显示内容,输入prevd 数字可快速切换路径。安

2021-03-18 22:50:00 4836

原创 Python使用MySQL数据库方法及防SQL注入

安装pymysql模块python操作mysql需要安装pymysql模块:pip install pymysql连接数据库建议使用with这种方式,有两条好处:一是可以不用另外写close语句关闭连接,二是在异常退出时也能保证关闭连接。题外话,python非常强调简洁和一致性,文件打开、关闭;socket连接、关闭;mysql连接、关闭等等都建议使用with。import pymysqlwith pymysql.connect(host='mysql的ip', user='你的用户名',

2021-02-23 21:00:06 2865

原创 MySQL数据库入门——索引概念

一、基本概念:为什么要有索引?在生产环境中读写比例大约是10比1,写操作较少出现性能问题,出问题最多的一般是复杂查询。因此对查询语句的优化尤为重要,为了提高查询的效率所以有了索引这项技术。什么是索引?索引在MySQL中也叫做“键”(key),是存储引擎为了提高查询效率而运用的一种技术。索引在数据库中的数据越多时作用越大,索引是提高查询效率最简单有效的手段。正确地运用索引可以让查询性能提升很多倍。索引的利弊?索引是数据库设计和管理的一个重点。在应用程序开发初期就要对数据库结构及索引做良好的规划,

2021-02-22 12:58:19 168

原创 MySQL数据库入门(十)多表复杂查询练习及讲解-下

建表与数据准备j建库和建表的操作请参考“多表复杂查询练习及讲解-上”的内容,在此不再赘述。use day5; # 切换day5为当前数据库show tables;+----------------+| Tables_in_day5 |+----------------+| course || score || student || teacher |+----------------+练习题第十三题:查询有缺考课

2021-02-15 13:28:04 846 1

原创 流畅稳定免费的LinuxMint20.1桌面系统安装调试讲解

挂载分区编辑挂载文件sudo xed /etc/fstab通过disks找到要挂载分区的uuid,将配置信息添加到fstab中,我添加的挂载信息如下:# /机械硬盘上的234Gb的ext4备份分区UUID=9b555276-8d61-4bb6-b28f-dac8f3390caa /backup ext4 defaults 0 2# /机械硬盘上的766Gb的ntfs数据分区UUID=C6648555648548DF

2021-02-13 21:29:18 8189 1

原创 MySQL数据库入门(九)多表复杂查询练习及讲解-中

建表与数据准备j建库和建表的操作请参考“多表复杂查询练习及讲解-上”的内容,在此不再赘述。use day5; # 切换day5为当前数据库show tables;+----------------+| Tables_in_day5 |+----------------+| course || score || student || teacher |+----------------+练习题第六题:查询各科成绩最

2021-02-11 09:47:37 497 1

原创 MySQL数据库入门(八)多表复杂查询练习及讲解-上

建表与数据准备免责声明:以下练习中涉及到的人名均属于我用python的faker模块自动生成的,如有雷同纯属巧合。create database day5; # 创建新的数据库day5use day5; # 切换day5为当前数据库create table teacher( # 创建老师表 tid int unsigned not null auto_increment primary key, tname char(20) not null )default cha

2021-02-10 12:33:21 526 1

原创 MySQL数据库入门(七)多表查询及大量练习

建表与数据准备create database day4;use day4;# 建表create table department( id int unsigned not null unique, name char(20) );create table employee( id int unsigned primary key auto_increment, name char(12) not null, gender enum('male','

2021-02-08 21:39:16 596 1

原创 MySQL数据库入门(六)数据增删改查及单表查询

数据的增删改查数据库创建create database day3; # 创建练习数据库3表创建use day3; # 切换当前数据库为day3create table t1( id int unsigned primary key auto_increment, # id字段整数、无符号、自增、主键 name char(12) not null, # name名字字段固定长度12字符型、不能为空、可重复 gender enum('男','女') default

2021-02-06 20:33:59 253

原创 MySQL数据库入门(五)表结构的创建与分析

在建表之前要对数据进行认真分析,字段名是数据的抽象名称,字段属性是数据的类型与约束。建表时要把关联度极高的数据放在一张表中,假设该表中某些字段存在大量重复的情况就应该考虑分开建表,减少冗余数据。学前准备create database day2; # 新建数据库day2use day2; # 使用day2数据库分析表之间的关系建表时要通过下面两个步骤认真分析表与表之间的关系:一、分析关系:先站在左表的角度去找:是否左表的多条记录可以对应右表的一条记录,如果是则说明左表的某个字段fore

2021-02-05 22:03:57 1781

原创 MySQL数据库入门(四)约束简介

温馨提示学习MySQL一定要勤加练习,千万不要光看不练!学习时一定要自己敲代码,不要复制粘贴。如果遇到照着我写的内容敲的代码一直报错,请认真检查自己输入的内容,因为以下代码我都在MSQL 8.0环境下均通过测试不会报错。新手阶段经常会因为输错一个标点、误输英文全角符号等等状况造成报错。关于SQL代码有2点需要注意:一是注释。#号及后面的内容表示注释,练习阶段敲代码时可以不写注释,但生产环境强烈建议写注释。二是换行。有很多人写SQL代码一行就是一条语句,又不写注释,这样的SQL代码可读性极差。建议参

2021-02-04 21:16:51 396

原创 MySQL数据库入门(四)数据类型简介

今天讲MySQL中的数据类型,在MySQL中常见的数据类型有以下五种:数字类型大小有符号无符号 unsigned约束用途TINYINT1 字节(-128,127)(0,255)小整数值SMALLINT2 字节(-32 768,32 767)(0,65 535)大整数值MEDIUMINT3 字节(-8 388 608,8 388 607)(0,16 777 215)大整数值INT或INTEGER4 字节(-2 147 483 648,

2021-02-03 20:08:56 396

原创 MySQL数据库入门(三)存储引擎简介

MySQL常见存储引擎MySQL存储引擎有很多种,常见的有以下三种,其中MyISAM是5.6版及以前的版本默认存储引擎,InnoDB是5.7版及以后的默认存储引擎,大家重点学习InnoDB存储引擎,但对于MyISAM也要有了解。InnoDB:用于事务处理应用程序,支持外键和行级锁。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包括很多更新和删除操作,那么InnoDB存储引擎是比较合适的。InnoDB除了有效的降低由删除和更新导致的锁定,还可以确保

2021-02-02 20:20:39 181

原创 MySQL数据库入门(二)安装及基本命令

MySQL基本概念MySQL是关系型数据库管理系统,由瑞典MySQLAB公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面MySQL运用非常广泛。它是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL使用的SQL语言是用于访问数据库的最

2021-02-01 22:17:48 242 1

原创 MySQL数据库入门(一)基本概念

学习数据库知识之前先说点开场白,在此引用马云的一句话:“未来是一个数字化的时代,数据是我们最为宝贵的资源。”。相信大家都知道数据的重要性,我们学数据库相关知识的目的就是为了更好地组织数据、存取数据、处理数据、发掘数据。以MySQL入门数据库的原因非常简单,因为MySQL开源、免费且应用广泛。今天先了解一些数据库的基础知识:一、什么是数据我们把描述事物的符号记录称为数据,描述事物的符号既可以是数字也可以是文字、图片、图像、声音、语言等。数据有多种表现形式,它们都可以经过数字化后存入计算机。在计算机中描述一

2021-02-01 07:28:48 276

原创 Python上下文管理器with深入讲解

Python编程时用到with上下文管理器的地方很多,但大多数人只知道怎么用却没有深入了解它。在此我尝试对Python上下文管理器with进行深入讲解,希望能帮到大家更好和更深入地掌握with的用法。with作用with语句是上下文管理器,上下文管理器(是一个对象)定义了在进入和退出with语句时需要执行上下文代码块。完整的上下文管理器必须有以下两个方法:object.__enter__(self)进入with语句块时会自动运行该对象的__enter__方法,如果有as子句那么with语句将将此方法

2021-01-23 21:51:53 584

原创 python少有人知的else用法

学过python的都知道if和else搭配使用,可还有几种else的用法少有人知,下面说说这几种少有人知的else用法。for和elsefor可以和else搭配使用,for循环代码块正常完成后执行else代码块,若在for循环代码块中执行了break那么else代码块不会被执行。代码案例:某果园有销售数据如下:sell_list = [ {'客户': '张三', '种类': '苹果','数量':100}, {'客户': '李四', '种类': '苹果','数量':200},

2021-01-19 19:19:43 221

原创 Python之高性能编程概述

本文是关于python高性能多任务编程的总结与概括。有很多细节没有详述,有需要了解更多的可以关注我,看看我前几期的文章。一、选择操作系统高性能编程需要选择合适的操作系统。因为windows下创建子进程是通过重新加载py程序文件;而linux和mac创建子进程是通过复制父进程的内存空间,所以在windows平台下运行多进程python程序的效率远不如在linux和mac平台下运行。二、分析任务类型高性能编程有三种方式:多进程,追求高运算:当任务类型是计算多IO少时,建议使用进程池的方式来编程。

2021-01-17 23:31:48 906

原创 python之协程概念和gevent使用注意事项及三个案例

协程基本概念协程本质就是一条线程,它能实现多个任务在一条线程上来回切换执行。使用协程可以在执行任务遇到IO时切换到别的任务继续执行,避免进入阻塞态,提高了CPU利用率。另外降低了操作系统负担。进程、线程、协程的区别进程线程协程操作系统资源分配的最小单位操作系统调度执行的最小单位操作系统不可见内存隔离内存共享内存共享数据不安全数据不安全数据安全开销大开销小开销极小发生IO时都能感知,由操作系统负责切换发生IO时都能感知,由操作系统负责切换

2021-01-15 21:07:53 1330

原创 python编程之进程池、线程池详细梳理

进程/线程的创建过程进程/线程的创建过程在不同的操作系统有一定的差异,但总体上都是分这三步:创建或调度进程/线程,执行任务,切换或销毁进程/线程。其中创建进程时还需要分配资源;创建线程时不需要分配资源,因为线程使用父进程的资源。需要注意:创建和销毁进程/线程存在时间开销和内存开销,合理的进程/线程数量可以大大提高运行效率,超过运行环境承受能力的进程/线程数量反而会降低运行效率。而且进程/线程数量越多越容易产生内存泄露问题和内存碎片问题。进程/线程池的作用事先先开好多条进程/线程,有任务时直接使用它

2021-01-13 13:09:24 761

原创 python之多线程编程数据安全的queue模块详细梳理

queue模块是python官方自带模块,它实现了多生产者、多消费者队列,特别适用于在多线程间必须安全地交换消息的场合。queue模块实现了三种类型的队列,它们都是类,区别仅仅是消息的取回顺序。使用Queue类创建的是先进先出的队列(firt in first out,FIFO),使用LifoQueue类创建的是后进先出的队列(last in first out,LIFO),使用PriorityQueue类创建的是优先级队列。这三种队列内部使用了锁来阻塞竞争线程,即多个线程只能排队轮流使用队列,不能同时并

2021-01-10 16:20:23 1200 3

原创 python编程操作系统篇知识点详细梳理(下)

进程间数据共享进程间数据共享可以使用Manager类,但是要注意2点:修改数据时可能存在数据不安全的风险,为保证数据安全需要对修改操作加锁:未加锁的代码:from multiprocessing import Process,Managerdef change_dic(dic): dic['count'] -= 1if __name__ == "__main__": m = Manager() dic = m.dict() dic['count']

2021-01-09 16:42:46 361 3

原创 python编程操作系统篇知识点详细梳理(中)

锁(Lock)案例:假设有一个多进程的票务系统,多个用户使用它买票:抢票案例.py:import jsonimport timefrom multiprocessing import Processdef search(i): with open('ticket.txt',encoding='utf8') as f: ticket = json.load(f) print(f"{i}你好,当前余票是{ticket['count']}张。")de

2021-01-04 13:33:01 409

原创 python编程操作系统篇知识点详细梳理(上)

进程的概念:(Process)进程就是正在运行的程序,它是操作系统中资源分配的最小单位。资源分配:操作系统分配的CPU时间片、内存、磁盘空间端口等等资源。进程号(process identification)是操作系统分配给进程的唯一标识号,用户每打开一个进程操作系统都会为其创建PID。UID:用户id; PID:进程id; PPID:父进程id。在存储空间中未被执行的叫程序,被执行的叫进程(进行中的程序)。同一个程序执行两次之后是两个进程。进程和进程之间

2021-01-02 15:10:59 436 1

原创 python之基于socketserver编写并发tcp协议server端

代码案例:要搞清楚sockerserver编写方法先看下面的代码案例:server端可以多线程接受client端请求,client发送hello,服务器返回大写HELLO。server端:import timeimport socketserverclass Myserver(socketserver.BaseRequestHandler): def handle(self): conn = self.request while True:

2020-12-28 23:18:57 387

原创 python版本管理神器miniconda使用指南,纯干货!

miniconda软件下载及安装anaconda软件包是python的一种发行版本,安装包大约四百多至五百多兆,安装好后大约需要2个多g的硬盘空间,我不太推荐这种安装方式,更推荐大家使用miniconda。一般软件安装包我建议都去官网下载,但是conda官网下载速度实在太慢,我建议大家去清华大学开源软件镜像站下载,网址是:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?C=M&O=D安装包有windows平台、macos平台、l

2020-12-27 22:27:37 10915 5

原创 web十七讲下:html5

HTML5多媒体多媒体来自多种不同的格式。它可以是文字、图片、音乐、音效、录音、电影、电话等等。在因特网上,你会经常发现嵌入网页中的多媒体元素,现代浏览器已支持多种多媒体格式。多媒体格式多媒体元素(比如视频和音频)存储于媒体文件中。确定媒体类型的最常用的方法是查看文件扩展名。多媒体元素也有多种不同扩展名的文件格式,例如.swf、.wmv、.mp3以及.mp4。...

2020-12-27 07:51:00 178

原创 桌面系统linux Mint 20安装全过程,强烈推荐使用!

对于对用惯windows操作系统的人来说使用桌面linux系统我推荐linux mint,linux mint是基于ubuntu改进的开源免费桌面linux系统,运行速度快、系统稳定、使用简便,强烈推荐使用!以下是安装、调试全过程:一、安装安装系统前推荐一下Ventoy工具,用它对U盘处理以后,将系统镜像iso文件直接拷贝到u盘就可以安装系统了。U盘启动几秒钟就可进入mint桌面。安装过程首先的难点是分区,我的笔记本电脑配置是16G内存、128G固态盘+1T机械盘,系统建议安装在固态盘,资料保存在机械盘

2020-12-22 23:16:47 18982

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除