自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入理解Android Wi-Fi 第二章笔记

Netd是Android系统中专门负责网络管理和控制的后台daemon程序,其功能主要分三部分。设置防火墙(Firewall)、网络地址转换(NAT)、带宽控制、无线网卡软接入点(Soft Access Point)控制、网络设备绑定(Tether)等Android 系统中DNS信息的缓存和管理。

2024-06-22 18:18:31 962

原创 APP访问硬件的四种方式

【代码】APP访问硬件的四种方式。

2024-04-12 20:45:27 281 1

原创 Python timedelta 日期时间的加减等运算示例

Python timedelta 的运用

2022-07-25 16:00:07 2014

原创 Python 设计模式 - 适配器模式

Python设计模式 适配器模式

2022-05-03 15:12:52 1256

原创 Python 设计模式 - 建造者模式

建造者模式 学习笔记

2022-04-30 14:51:55 1322

原创 Python 设计模式 - 工厂模式

python设计模式 工厂模式

2022-04-29 16:40:58 450

原创 Python 上下文管理器 和 with 块

上下文管理器 和 with

2022-03-25 10:53:57 1084

原创 Python itertools 部分用法

itertools 部分函数用法

2022-03-23 18:30:33 1132

原创 可编程路由 - openwrt 实现命令行修改wifi环境

使用 openwrt 命令行交互 修改wifi配置

2022-02-16 17:18:30 2508

原创 小米 mini 可编程路由

小米mini 路由器 烧录openwrt 固件

2022-02-08 20:09:56 914

原创 Python 部分特殊方法的使用

__iter__,__repr__,__str__,__bytes__,__format__等方法的使用

2022-02-04 11:06:31 715

原创 Python funtools 中的 lru_cache 和 singledispatch

摘自流畅的Python 第七章 函数装饰器和闭包使用functools.lru_cache 做备忘functools.lru_cache 是非常使用的装饰器,它实现了备忘(memoization)功能。这是一项优化技术,它把耗时的函数的结果保存起来,避免传入相同的参数是重复计算clockdeco.pyimport timedef clock(func): def clocked(*args): t0 = time.time() result = fun

2022-02-01 19:56:51 1380

原创 Kotlin 学习 listOf 对象的常用方法

package com.example.coco/** * Create with IntelliJ IDEA. * Description: * User: coco * Date: 2022-01-18 * Time: 16:23 */fun main() { val list1 = listOf(1 , 2 , 3 , 4 , 5 , 6) println(list1.contains(2)) // 判断是否有指定元素 返回 true println(list1.eleme

2022-01-18 17:13:32 3956

原创 Kotlin 学习 高阶函数

摘自第一行Android代码第3版定义如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个和函数,那么该函数就称为高阶函数// 语法示例(String,Int) -> Unit-> 左边的部分就是用来声明函数接收什么参数,多个参数之间使用逗号隔开,如果不接受任何参数,写一对空括号就可以了。而->右边的部分用于声明该函数的返回值是什么类型,如果没有任何返回值就使用Unit,它大致相当于Java中的void举个例子fun example(func : (String

2022-01-07 19:52:23 1220

原创 Kotlin 学习 拓展函数和运算符重载

摘自第一行Android代码第3版拓展函数拓展函数表示技术在不修改某个类的源码情况下,仍然可以打开这个类,想该类添加新的函数统计一段字符串中包包含的字母的数量package com.example.fragmentbestpractice/** * Create with IntelliJ IDEA. * Description: * User: coco * Date: 2022-01-05 * Time: 19:56 */object StringUtil { fun

2022-01-05 21:14:48 2088

原创 Kotlin 学习 延迟初始化和密封类

摘自第一行Android代码第3版lateinit延迟初始化使用的是lateinit关键字,它可以告诉Kotlin编译器,我会在晚些时候对这个变量进行初始化,这样就不用在一开始的时候将它赋值为null了private lateinit var adapter:MsgAdapter当你对一个全局变量使用了lateinit关键字时,请一定要确保它在背任何地方调用之前已经完成了初始化工作,否则kotlin将无法保证程序的安全性if (!::adapter.isInitialized){ ad

2022-01-04 19:52:26 1172

原创 Kotlin 学习 with run 和apply

摘自第一行Android代码第3版标准函数 withwith函数接收两个参数:第一个参数可以是一个任意类型的对象,第二个参数是一个Lambda表达式。with函数会在Lambda表达式中提供第一个参数对象的上下文,并使用Lambda表达式中的最后一行代码作为返回值让我们来看一个例子比如有一个水果列表,现在我们想要吃完所有水果,并将结果打印出来,就可以这样写package com.example.activitytestimport java.lang.StringBuilder/**

2022-01-02 11:24:02 741

原创 shell 脚本实战 八

摘自 shell脚本实战 第二版 第六章 系统管理:系统维护脚本45 跟踪设置过setuid的程序无论流氓和数字犯罪分子有没有账户,他们都有很多方法可以闯入 Linux 系统,最简单的一 种方法是寻找错误设置 setuid 或 setgid 的命令。前面章节讲过,这种命令会根据配置修改其所 调用的子命令的有效用户 ID,因此一个普通用户所运行的脚本,其中的命令能够以 root 或超级 用户的身份执行。这就太糟糕,太危险了!举例来说,在一个设置了 setuid 的 shell 脚本中,加入下面的代

2021-12-27 21:00:16 804

原创 shell 脚本实战 七

摘自 shell脚本实战 第二版 第五章 用户管理脚本40 添加用户如果你负责管理 Unix 或 Linux 系统的网络,你肯定已经体验过由于不同操作系统之间细微 的不兼容性所带来的那种挫折感。一些最基本的管理任务恰恰是各个 Unix 流派间最不兼容的, 其中以用户账户管理最为显著。没有一种命令行接口能够在所有的 Linux 流派中保持完全一致, 每个厂商都开发了自己的图形界面来处理各自系统的特性。简单网络管理协议(simple network management protocol,SNMP)

2021-12-23 09:46:36 289

原创 shell 脚本实战 六

摘自 shell脚本实战 第二版 第五章 用户管理脚本35 分析磁盘用量即便超大容量磁盘已经面世,价格也在持续下跌,但系统管理员似乎永远都得关注磁盘使用 情况,避免共享驱动器被占满。最常见的监视技术是使用 du 命令查看目录/usr 或/home,以确定其下所有子目录的磁盘使用 情况,报告用量居于前 5 位或前 10 位的用户。但这种方法的问题在于无法统计磁盘其他位置的 使用情况。要是用户在其他磁盘中还有另外的存储空间,或是有人偷偷摸摸地把视频保存在/tmp 中的隐藏目录或者 ftp 中的未用目

2021-12-18 16:23:48 992

原创 shell 脚本实战 五

摘自 shell脚本实战 第二版 第四章 Unix调校脚本27 显示带有行号的文件在显示文件时添加行号有很多种方法,其中一些实现起来相当简洁。例如,下面是 awk 的 做法:awk '{print NR ":" $0} < inputfile在有些 Unix 实现中,cat 命令有一个-n 选项;在另一些实现中,分页程序 more(less 或 pg) 可以用选项指定为输出的每一行加上行号。但两者皆无的 Unix 版本也不是没有,在这种情况下, 用代码清单 4-1 中的简单脚本就能搞定

2021-12-17 17:01:13 761

原创 shell 脚本实战 四

摘自 shell脚本实战 第二版 第三章 创建实用工具脚本22 提醒工具像 Stickies 这样简单的实用工具多年来广受 Windows 和 Mac 用户的欢迎,你可以用它在屏幕 上保留一些小笔记并发出提醒。这种应用非常适合于记录电话号码或其他提醒事项。可惜在 Unix 命令行中并没有与此对应的命令可用,不过这个问题用两个脚本就能解决。第一个脚本 remember(如代码清单 3-1 所示)可以让你轻松地将信息片段保存在用户主目录 下的文件 rememberfile 中。如果调用时不使用任何参

2021-12-14 21:47:13 860

原创 shell 脚本实战 三

摘自 shell脚本实战 第二版 第二章 改进用户命令脚本14 格式化过长的行要是够幸运的话,你所用的 Unix 系统中已经包含了 fmt 命令,如果你日常从事文本工作, 那么这个命令非常有用。不管是格式化电子邮件,还是让文本行占满文档的可用页宽,fmt 都可 助你一臂之力。但有些 Unix 系统中并没有 fmt。对于遗留系统而言,尤为如此,就算有,通常也只是一种相 当精简的实现。如代码清单 2-2 所示,在短小的 shell 脚本中可以用 nroff 命令来实现长行自动折行和短行填 充,

2021-12-11 21:02:46 1044

原创 shell 脚本实战 二

摘自 shell脚本实战 第二版 第一章 遗失的代码库脚本6 验证浮点数输入鉴于 shell 脚本的限制和本事,浮点数(或“实数”)的验证过程乍一看似乎让人望而生畏, 不过考虑到浮点数只不过是由小数点分隔的两个整数,再配合能够在脚本中引用其他脚本的能力 (validint),你就会发现浮点数验证的代码长度出奇地短。代码清单 1-12 中的脚本假设和脚本 validint 位于同一目录下代码 validfloat#!/bin/bash# validfloat -- 测试数字是否为有效的浮点数

2021-12-09 20:01:50 874

原创 shell 脚本实战 一

摘自 shell脚本实战 第二版 第一章 遗失的代码库脚本1 在PATH中查找程序使用环境变量(例如 MAILER 和 PAGER)的 shell 脚本都有一个隐藏的危险:有些设置指向的 程序可能并不存在。如果你以前没有碰到过这种环境变量,那么应该将 MAILER 设置成你喜欢的 电子邮件程序(例如/usr/bin/mailx),将 PAGER 设置成可以分屏浏览长文档的程序。假如你为了 实现灵活性,打算使用 PAGER 设置代替系统默认的分页程序(通常是 more 或 less 程序)来显示 脚本输

2021-12-08 21:17:14 1469

原创 shell 学习笔记 常用命令 ifconfig ping traceroute ssh lsof

摘自 Linux Shell 脚本攻略 第八章 无网不利网络设置ifconfig命令用于配置及显示网络接口、子网掩码等细节信息。它通常位于/sbin/ifconfig中列出当前的网络接口配置$ ifconfigdocker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255

2021-11-29 21:32:07 1658

原创 shell 学习笔记 常用命令 tar cpio gzip zip

摘自 Linux Shell 脚本攻略 第七章使用 tar 归档tar命令可以归档文件。它最初是设计用来将数据存储在磁带上,因此其名字也来源于Tape ARchive。tar可以将多个文件和文件夹打包为单个文件,同时还能保留所有的文件属性,如所 有者、权限等。由tar创建的文件通常称为tarball。在这则攻略里,我们将学习如何使用tar创建 归档文件归档:把多个文件组合到一个文件中。归档好处是,把文件数目变少,有利于降多个文件作为电子邮件附件发送,以及备份文件压缩:利用算法将文件有损或无损地处理,

2021-11-28 18:10:02 1617

原创 shell 学习笔记 git 相关使用

摘自 Linux Shell 脚本攻略 第六章 仓储管理简介大多数Linux发行版中都已经包含了Git。如果你的系统中还没有安装,可以通过yum(Redhat 或SuSE)或apt-get(Debian或Ubuntu)获取$ sudo yum install git-all$ sudo apt-get install git-all创建新的 git 仓库如果你在开发自己的项目,那么可以创建对应的项目仓库。仓库可以创建在本地系统中,也 可以创建在如GitHub这样的远程站点上git中的所有项目

2021-11-27 12:04:13 1199

原创 shell 学习笔记 网络操作示例

摘自 Linux Shell 脚本攻略 第五章 一团乱麻?没这回事!解析网站数据$ lynx -dump -nolist http://www.johntorres.net/BoxOfficefemaleList.html |grep -o "Rank-.*" | sed -e 's/ *Rank-\([0-9]*\) *\(.*\)/\1\t\2/' | sort -nk 1 > actresslist.txt1 Keira Knightley2 Natalie Portman3

2021-11-26 09:27:24 492

原创 shell 学习笔记 网页操作 wget lynx cURL

摘自 Linux Shell 脚本攻略 第五章 一团乱麻?没这回事!Web 页面下载用wget可以下载Web页面或远程文件$ wget knopper.net--2021-11-23 20:37:27-- http://knopper.net/Resolving knopper.net (knopper.net)... 81.169.229.18Connecting to knopper.net (knopper.net)|81.169.229.18|:80... connected.HTT

2021-11-24 19:42:56 514

原创 shell 学习笔记 grep sed awk 处理字符的一些示例 以及字符切片

摘自 Linux Shell 脚本攻略 第四章 让文本飞统计特定文件中的词频$ cat word_frea.sh #!/bin/bash# 文件名:word_freq.sh# 用途: 计算文件中单词的词频if [ $# -ne 1 ];then echo "Usage: $0 filename"; exit -1 fifilename=$1# 模式\b[[:alpha:]]+\b能够匹配每个单词并去除空白字符和标点符号# 选项-o打印出匹配到的单词,一行一个egre

2021-11-23 20:26:35 454

原创 shell 学习笔记 常用命令 grep sed awk

摘自 Linux Shell 脚本攻略 第四章 让文本飞使用cut按列切分文件选项-f可以指定要提取的字段$ cat a.txt No Name Mark Percent01 tom 69 9102 jack 71 8703 alex 68 98# -d 设置分割符为空格$ cut -f 2 -d ' ' a.txt Nametomjackalex$ cut -f 2,3 -d ' ' a.txt Name Marktom 69jack 71alex 68cut命

2021-11-22 19:53:03 573

原创 shell 学习笔记 常用命令 正则表达式 cut

摘自 Linux Shell 脚本攻略 第四章 让文本飞使用正则表达式位置标记位置标记锚点(position marker anchor)是标识字符串位置的正则表达式。默认情况下,正则表达式所匹配的字符可以出现在字符串中任何位置标识符标识符是正则表达式的基础组成部分。它定义了那些为了匹配正则表达式,必须存在(或不存在)的字符数量修饰符一个标识符可以出现一次、多次或是不出现。数量修饰符定义了模式可以出现的次数其他还有其他一些特殊字符可以调整正则表达式的匹配方式一些例子能够匹配

2021-11-20 16:50:38 445

原创 shell 学习笔记 文件操作 下

枚举文件类型统计信息用下面的命令打印文件类型信息$ file a.txt a.txt: ASCII text打印不包括文件名在内的文件类型信息$ file -b a.txt ASCII text生成文件统计信息的脚本$ cat filestat.sh # !/bin/bash# 文件名: filestat.shif [ $# -ne 1 ];then echo "Usage is $0 basepath"; exit fipath=$1declare -A stat

2021-11-20 15:12:32 1197

原创 shell 学习笔记 文件操作 上

摘自 Linux Shell 脚本攻略 第三章 以文件之名生成任意大小的文件该命令会生成内容全部为零的1MB大小文件 junk.data$ dd if=/dev/zero of=junk.data bs=1M count=11+0 records in1+0 records out1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.000644171 s, 1.6 GB/sif 表示输入文件 input fileof表示输出文件 output fileb

2021-11-19 21:02:59 327

原创 shell 学习笔记 常用命令 tr md5sum sort mktemp split expect

摘自 Linux Shell 脚本攻略 第二章 命令之乐trtr可以对 来自标准输入的内容进行字符替换、字符删除以及重复字符压缩字符的大小写转换$ echo "HELLO WHO IS THIS" | tr 'A-Z' 'a-z'hello who is this对字符进行加密tr命令可以用来加密。ROT13是一个著名的加密算法。在ROT13算法中,字符会被移动13个位置,因此文本加密和解密都使用同一个函数$ echo "tr came, tr saw, tr conquered." |

2021-11-17 09:55:00 839

原创 shell 学习笔记 常用命令 cat find xargs

摘自 Linux Shell 脚本攻略 第二章 命令之乐catcat命令是一个经常会用到的简单命令,它本身表示conCATenate(拼接)打印单个文件的内容$ cat file.txtThis is a line inside file.txtThis is the second line inside file.txt打印多个文件的内容$ cat one.txt two.txtThis line is from one.txtThis line is from two.txt从

2021-11-16 21:40:07 1256

原创 shell 学习笔记 数组&date的使用

摘自 Linux Shell 脚本攻略 第一章 小试牛刀数组数组的定义单行中使用数值列表来定义一个数组array_var=(test1 test2 test3 test4)将数组定义成一组“索引-值” array_var[0]="test1" array_var[1]="test2" array_var[2]="test3" array_var[3]="test4" array_var[4]="test5" array_var[5]="test6"数组的使用打印出特定

2021-11-16 14:10:02 681

原创 Python Enum 使用

Python Enum 使用from enum import Enumclass ColorForm(Enum): RED = 'red' GREEN = 'green' BLUE = 'blue'print(ColorForm.RED)# ColorForm.REDprint(ColorForm.RED._value_)# redprint(ColorForm.RED._name_)# REDprint(ColorForm._member_names_)#

2021-04-09 08:46:46 196

原创 Flask 学习 - 用户请求权限判断

Flask Web开发:基于Python的Web应用开发实战(第2版) 学习笔记-用户权限判断关于用户权限的判断该功能用于判断用户相关请求操作是否有足够权限执行,如权限不够则返回403报错定义权限类型models.pyclass Permission: # 包含 关注 备注等权限 FOLLOW = 1 COMMENT = 2 WRITE = 4 MODERATE = 8 ADMIN = 16添加User model 权限属性 及相关操作class Us

2020-08-08 10:37:01 855

空空如也

空空如也

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

TA关注的人

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