自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 新版pycharm(2023.2.2)修改字体大小

2023版pycharm的修改字体大小在file-Manage IDE Settings-Setting Sync…里面,打开这个选项就可以看到熟悉的setting框啦。下载了2023新版pycharm,想修改字体,发现找不到之前的setting入口,网上搜索也都是file-setting-editor这些,自己找了找,记录下。

2023-10-16 10:37:58 826

原创 Mac-Charles抓包安卓&ios证书安装教程

鉴于每次给新电脑和新手机安装Charles证书时总会出现这样那样的问题,把上次成功安装证书并且成功抓包的过程记录一下。

2023-07-28 10:13:03 1954

原创 冒泡排序-python

2、排一次之后,最大的数可以归位至最右侧。所以第一次循环中条件是i,第二个循环中,循环条件是len-i-1。1、依次比较数组中的每一对数字。

2023-06-12 18:00:54 155

原创 选择排序-python

1、选择排序是冒泡排序的优化版。主要思想就是每一轮都找到最小(最大)放在最前面(第二前…2、第一层外层循环是循环的总轮数,第二层内层循环是每一轮的次数。3、这里主要要用索引变量去找最小值,而不是数组值去找最小值。

2023-06-12 17:52:45 73

原创 Vue:项目启动时报错These dependencies were not found 解决办法

vue项目启动报错 These dependencies were not found

2022-06-12 18:24:23 20561 1

原创 Django 配置数据库相关

一、在项目的setting.py文件中设置配置mysql数据库Django项目创建后,会自动生成一个db.sqlite3,这也是一个数据库,不过它是文件型的。是Django中默认使用的数据库。如果我们需要使用mysql数据库,就要在settings.py文件中的DATABASES中配置,如下图:因为Django默认的数据库是sqlite3,所以我们更换了mysql数据库后再运行项目,可能会报NO moudle named ’MySQLdb‘这个错误,这时候可以使用命令pip install pym..

2021-10-11 22:46:25 574

原创 Django 路由系统之路由分发

写在前面我们知道,Django项目里面肯定会有多个人协同完成不同应用的情况,那么这种情况下,url与view的关系应该怎么处理呢。如果大家都用项目里面那个urls.py文件,是不是有搞混的风险呢。比如A和B的url可能会同时对于一个后台view函数。这种问题,Django问我们提供了路由分发的方法来解决。它可以使每一个应用都拥有自己的urls.py文件,然后再去自己的函数里面找对应关系,这样就不会有多个人操作一个文件的问题,也就不会有混乱的问题出现了。实现方式1、在我们项目的urls.py文件中进

2021-09-05 20:54:58 586

原创 Django MTV设计模式

M、T、VDjango将数据交互的过程分为了3个层次:Model:数据存储层,处理所有数据相关的业务,和数据库交互,提供数据的增删改查。也就是数据层,所有的数据相关的东西都会在这里处理。Template:模板层,处理具体页面的显示。所有前端页面相关的东西都会在这里处理。View:业务逻辑层,处理具体的业务逻辑。用来连通Model层和Template。可以简单的理解为后端层,在这里处理具体的逻辑。所以到这儿我们也就能理解为什么这个设计模式叫MTV了吧,M–>Model、T–>Temp

2021-09-05 20:26:25 857

原创 将本地文件夹上传至github远程仓库

我们知道,一般github官网上直接拖动或者选择文件上传文件时,只能上传文件夹不能上传整体文件。这时候我们可以使用Sourcetree这个工具。1.在Sourcetree首页点击 新建-添加已经存在的本地仓库,将文件夹选择后,先添加到Sourcetree中2、然后打开刚才添加的文件夹,进入这个页面3、点击右上角设置-远程仓库,会出现这个弹窗页面4、点击添加,出现这个页面,然后输入自己的原创仓库名称和仓库url,点击确定,这时候你的这个文件夹就和远程仓库连接上了5、然后在这里将代码提交推送,

2021-09-05 14:45:19 918

原创 解决Django:That port is already in use

使用lsof -i:8000查看当前这个端口有哪些进程使用kill -9 pid 杀掉在当前端口号所占的进程号,比如我这个pid=38673,那就kill -9 38673

2021-09-02 13:24:59 127

原创 pycharm解决:git stash-git stash pop操作后后本地修改的代码消失

背景我们在日常工作或者学习中会遇到很多那种,和别人一块合作的项目。多分支开发,如果你本地修改了代码,这时候又想去先拉下别人的代码,很多同学就会想到先用git stash把自己本地代码暂存起来,等拉取了别人的代码后,再使用git stash pop命令将刚才暂存的代码恢复。问题如大家一样,前几天我也是这样操作的,但是神奇的是,使用git stash pop命令后,本地修改的代码 离奇的不见了!!!解决问题默默的问了下小老大,因为工作时间紧迫,就没来得及查hhhha,效率很重要的。得到了解决办法如下:

2021-08-30 22:58:00 2806 2

原创 java内存分配

一、概述1、内存执行过程1、程序加载到内存区。2、找到main方法开始执行。2、内存中大致分块heap堆区a、存放由new创建的对象和数组以及对象的实例变量。b、由java虚拟机的自动垃圾回收器来管理。c、优点:可以动态分配内存大小,生存期也不必事先告诉编译期,因为它是在运行时动态分配内存。d、缺点:在运行时动态分配内存,存取速度较慢。stack栈区a、主要存放局部变量,即存放在函数中定义的基本类型变量和对象的引用变量。b、局部变量:1.以数据类型+空格+变量名定义的变量;2.在一

2021-08-26 13:26:30 324

原创 Django 路由系统之动态路由

写在前面首先我们要知道,在Django框架中有一个配置文件叫url.py,这个文件里面操纵的就是我们的路由系统。他是用于记录 Django 项目的 URL 映射关系,也就是说,这个文件里面实现了url和我们view.py文件中函数的对应关系。下面我们就来具体说下他们是怎么实现对应的一、一一对应在url.py文件中,使用这样的格式,就能实现url和view中函数的一一对应关系:如/login/->def loginurlpatterns = [ # path('admin/', admi

2021-08-03 13:42:54 439

原创 Python if __name__ ==“__main__“

写在前面1、首先我们要知道,Python在运行一个py文件时是有两种方式,一种是在当前文件夹下运行,还有一种是将当前文件夹作为模块导入到其他模块中。2、在当前文件下运行文件,程序正常从上往下进行运行。而将当前文件作为模块导入到其他模块中时,Python在执行导入操作时,就去导入模块的文件下,执行导入模块文件的代码。举一个最简单的例子。我们在demo1.py文件中定义一个打印函数,然后在demo2.py文件只一行导入demo1.py的代码,可以看到,在demo2.py文件中也执行了demo1.py文

2021-06-29 09:36:59 164

原创 Python 类属性与实例属性

首先我们简要说下类属性与实例属性在概念上的不同之处:类属性是在类中定义的属性,它是和这个类所绑定的,这个类中的所有对象都可以访问。访问时可以通过类名来访问,也可以通过实例名来访问。实例属性是与类的实例相关联的数据值,是这个实例私有的,只有这个对象自己可以访问。当一个实例被释放后,它的属性同时也被清除了。然后我们通过一个具体的例子,来看下在访问类属性和实例属性时,Python是怎么进行操作的。# 定义了类之后,Python就会为类分配一块内存空间,里面放它的相关属性和方法。# 这里在类中定一个

2021-06-24 23:36:41 2885 8

原创 Python 函数自定义属性

定义Python一切皆对象。所以函数也是一种对象,是对象就有属性。函数属性即时函数对象的属性。自定义属性1、定义:我们可以为定义的函数自己定义一些属性。func.var = "abc"2、作用域:a.函数属性和函数内定义的变量不同,函数属性的作用域是和全局变量一样的,可以像全局变量一样被访问和修改,但是它不完全是全局变量。函数内定义的变量是局部变量,函数调用完成后就销毁。b.也可以跨模块使用自定义函数的属性。将该属性所在的文件导入要使用的文件中即可。比如在a文件中有一个func1..

2021-05-20 12:50:48 660

原创 Python 函数嵌套

内部/内嵌函数1、定义:在一个函数的函数体内使用关键字def关键字定义一个新的函数,这个新的函数就叫做内部/内嵌函数。2、注意点:内部函数的整个函数体都在外部函数的作用域内,如果在内部函数内没有对外部函数变量的引用,即访问,那么除了在外部函数体内,在其他任何地方都不能对内部函数进行调用。3、内部函数可以访问外部函数的变量,但是不能对外部函数中的变量进行使用,即不能试图改变外部函数中的变量。????1def out_func(out_name): def in_func(in_name):

2021-05-20 09:31:17 589 1

原创 Python 变量作用域(函数相关)

变量作用域指声明变量在程序里的可应用范围。也就是变量可见性。全局变量定义:定义在函数以外的变量拥有全局作用域。特点:生命周期是整个程序的生命周期,也就是说,它会一直存活到脚本运行结束。对于所有程序内的函数,它们的值都是可以被访问的。局部变量定义:定义在函数内的变量特点:只能在声明它的函数内访问,生命周期是函数的生命周期,也就是说,函数调用执行时它存活,函数调用结束,它销毁,不能再使用。????def user(): local_str = 'func v'

2021-05-20 09:18:02 205

原创 django mac系统安装及创建、配置项目

安装使用终端在线安装$sudo pip3 install django# 还可以指定版本号来进行安装$sudo pip3 install django==2.2.10安装完成后,进入Python解释器导入django包查看是否安装成功>>>import django>>>django.get_version()2.2.10创建项目使用如下命令创建django项目django-admin startproject 项目名称配置文件

2021-05-15 13:12:51 1287

原创 web框架原理

socket客户端和socket服务端进行通信对于所有的web应用,本质上都是一个socket服务器,而我们用户使用的浏览器其实就是一个socket客户端。具体的过程是:socket服务器端一直循环不间断监听ip和端口。浏览器客户端访问时发送请求,这个请求包含自己的ip和端口号。(http协议,所有服务器端需要的信息都会在请求头中)。服务器端接收到用户请求,对用户请求进行处理,并且整理自己要返回的响应信息,整理完成后返回。(遵循http协议,所有用户需要的信息都会包含在响应头和响应体中)。

2021-05-15 12:53:25 125

原创 python正则表达式 re模块内置方法

match():从开头匹配一次search():只匹配一次findall():查找所有sub():替换特定字符: sub(正则表达式,’新内容‘,string)????1:使用单个字符串替换正则表达式匹配到的字符result = re.sub(r'\d+','90','java:99, python:100')print(result)# 输出java:90,python:90????2:使用函数方式替换正则表达式匹配到的字符# 将匹配到的结果进行+1操作def func(tem

2021-05-14 12:34:39 135

原创 Python 装饰器

写在前面:函数的形参是函数类型,传递的是一个函数别名,也即函数地址Tips:1、给函数起别名(即函数引用):相当于把一个函数对象的地址赋值给另一个变量,此时操作这个变量也就相当于操作这个函数本身。2、我们传递到函数形参中的,也是另一个函数的别名,这样也就相当于在一个函数中操作另一个函数。def user(): print("in user()")def newuser(funcname): print(funcname) funcname()newuser(user)# 输出:

2021-05-13 22:37:15 355

原创 python 函数形参

位置参数必须按照准确顺序将函数调用中的实参传递给函数定义中相应的形参。def user(name, age): print("{} is {} years old".format(name,age)) # format()方法是寻找字符串中{}标识,然后把参数依次赋值给字符串中user("Tom", 10)user(10, "Tom")# 输出Tom is 10 years old10 is Tom years old关键字参数仅针对函数的调用,通过"参数名=参数值"的方式,.

2021-05-13 22:04:11 1502

原创 Django model-get()方法

首先说一些注意点get()方法是不返回QuerySets的方法不返回QuerySets的方法,不使用缓存,它们每次被调用都会去查询数据库语法:get(**kwargs)功能:返回与给定查找参数匹配的对象。注意点:填写的参数对象必须是唯一的。例如主键或者唯一约束中的字段。????1# 查询Entry数据库表中id=1的数据。返回也是返回这个数据的对象Entry.objects.get(id=1)Entry.objects.get(blog=blog, entry_number=1

2021-05-12 09:33:32 3038

原创 Django-查询相关API(创建、检索、更新和删除对象)

首先我们创建一个模型,之后可以在这个模型中进行创建、检索、更新和删除对象等。from django.db import modelsclass Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() def __str__(self): return self.name class Author(models.Model)

2021-05-12 09:23:45 152

原创 使用adb命令将手机上的文件传输至电脑

命令:adb pull语法:adb pull remote local 其中local指电脑上的文件路径,remote指所传文件到手机上的路径????:将手机的sdcard根目录下的test.txt文件传输至电脑桌面adb pull /sdcard/test.txt /Users/jiangxin/Desktop...

2021-05-09 13:18:52 4811

原创 使用adb命令从电脑传输文件至手机

命令:adb push语法:adb push local remote 其中local指电脑上的文件路径,remote指所传文件到手机上的路径????# 将电脑桌面上的test.txt文件传输至手机的sdcard根目录下adb push /Users/jiangxin/Desktop/test.txt /sdcard参考链接:adb官网...

2021-05-09 13:14:52 6761

原创 Python正则表达式-分组操作

group()方法Tip: 只有在正则表达式中采用了()分组,才可以使用group()方法进行提取操作# 提取电话号码中区号和电话号码phone = '029-85860577'result = re.match(r'(\d{3}|\d{4})-(\d{8})$', phone) # '$'表示匹配到字符串结尾print(result)# 分别提取print(result.group()) # group()方法中如果不填参数,默认提取全部print(result.group(1.

2021-05-06 13:16:53 729

原创 解决:django.db.utils.OperationalError: unable to open database file

初学Django,连接自己数据库时遇到了django.db.utils.OperationalError: unable to open database file。于是乎百度,搜到大部分都是说权限不够,需要将sqlite文件所在路径权限改为可读可写:参考:https://www.cnblogs.com/xingluzhe/archive/2009/08/19/1549669.htmlWindows系统用CACLS.exe命令:cacls c:/database /e /t /g everyone:F

2021-05-05 20:16:50 3880 2

原创 python-format()方法

描述:str.format()用于格式化字符串.基本语法:通过{}和:来替代以前的%参数:可以接受不限个参数,位置可以不按顺序

2021-04-28 12:33:26 162

原创 uiautomator2-Xpath

写在前面Java uiautomator中默认是不支持xpath的,所以这里属于扩展的功能,速度不是很快。????,其中一个节点的内容<android.widget.TextView index="2" text="05:19" resource-id="com.netease.cloudmusic:id/qf" package="com.netease.cloudmusic" content-desc="" checkable="false" checked="fal

2021-04-28 09:47:16 2160

原创 uiautomator2-Input method

这种方法通常用于不知道控件的情况下的输入。具体原理如下:· 一、切换输入法· 二、发送adb广播命令d.set_fastinput_ime(True) # 切换为FastInputIME输入法d.send_keys("你好123abcEFG") # adb广播输入d.clear_text() # 清除输入框所有内容d.set_fanstinput_ime(False) # 切换成正常的输入法d.send_action("search") # 模拟输入法搜索send_action().

2021-04-28 09:29:32 534

原创 uiautomator2-监视操作

WatchContext==>监视上下文基础用法with d.watch_context() as ctx:# 下面三行代码时立即执行完的,不会有什么等待 ctx.when("^立即(下载|更新)").when("取消").click() # 当同时出现(立即安装或立即取消)和取消按钮的时候,点击取消 ctx.when("同意").click() # 当出现同意按钮的时候,点击同意 ctx.when("确定").click() # 当出现确定按钮的时候点击确定使用call函数来触

2021-04-28 09:13:08 2635 2

原创 python 字符串 strip()方法

描述:strip()方法用于移除字符串头尾指定的字符(默认为空格)或字符序列Tip:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符语法str.strip([chars]) # 其中chars参数为 字符串头尾指定的要移除的字符序列参数和返回值参数:字符串头尾指定的要移除的字符序列返回值:返回移除字符串头尾hid的字符序列生成的新字符串????1str = "*****this is **string** example....wow!!!*****"p

2021-04-27 22:26:04 489

原创 mac 使用adb命令安装应用程序

1、连接移动设备,可以使用adb devices查看手机是否已连接2、使用adb install apk文件 命令安卓应用程序adb install /Users/Downloads/1619424825_8f6ae5468_35.apk

2021-04-27 21:44:51 271

原创 uiautomator2-App内操作之Selector

- 写在前面Selector用于在当前窗口中标识特定的UI对象。选择之后可以对该对象进行相应操作。eg:# 选择一个text未‘Clock’的对象,它的className是‘android.widget.TextView’d(text='Clock', className='android.widget.TextView')Selector支持的参数text、textContains、textMatche、textStartsWith。(文本、文本包含、文本匹配、文本从开始匹配)cl

2021-04-24 18:30:40 1851

原创 uiautomator2-App内操作之设备通用操作

设备通用操作打开\关闭屏幕d.screen_on() # 打开屏幕d.screen_off # 关闭屏幕获取当前屏幕状态d.info.get('screenOn') # 要求安卓版本>=4.4点击硬建/软键d.press("home") # 点击home键,参数填写键的名称d.press("back") # 点击back键,参数填写键的名称d.press(0x07, 0x02) # 按下键码0×07(“0”)与META ALT(0x02)目前支持的按键名:h

2021-04-24 17:39:33 1866

原创 uiautomator2-常见的设备操作

shell命令sessionsession代表应用程序生命周期,可用于启动应用程序,检测应用程序崩溃。启动并关闭应用sess = d.session("com.netease.cloudmusic") # 启动网易云音乐sess.close() # stop网易云音乐sess.restart() # 冷启动网易云音乐使用Python中的with...as...语句启动和关闭app# d.session()方法的返回值赋值给sess,然后sess就可以去操作一些应用内的方法with

2021-04-22 12:38:21 674

原创 mac获取ios应用包名

win+空格键 打开mac聚焦搜索,搜索console,打开mac自带的控制台启动要查询的App包名,在右上角搜索 submitting在下面就可以看到一些相关信息,在里面找包名就可以

2021-04-22 09:58:28 1210

原创 uiautomator2-app包相关操作

命令行相关Tip1:如需指定设备需要传入 --serial 如 python3 -m uiautomator2 --serial bff1234 <SubCommand>, SubCommand为子命令(init,或者screenshot等)Tip2:1.0.3后,python3 -m uiautomator2 可以简写为uiautomator2screenshot:截图$ uiautomator2 screenshot screenshot.jpgcurrent:获取当前

2021-04-20 21:37:59 1165

空空如也

空空如也

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

TA关注的人

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