进阶 - python,javascript,java coding
2024-04-03 03:00:24 18 举报
AI智能生成
登录查看完整内容
python,javascript,java的编程特点,编程进阶,效率优化。 该思维导图给出了前端,后端,全栈,容器化,集成部署的相关知识; opt - conde review, frame constructure, python,javascript
作者其他创作
大纲/内容
编程进阶,代码优化
创建一个文件夹用于存放你的虚拟环境,进入到存放虚拟环境的地址
创建虚拟环境:python3 -m venv 你的地址(虚拟环境的名字)
激活虚拟环境: source 创建的虚拟环境地址下的bin/activate
退出虚拟环境:deactivate
使用python自带的env
sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper
配置virtualenvwrapper
使用virtualenvwrapper
使用virtualenv管理env
方法1. curl https://pyenv.run | bash
方法2. git clone https://github.com/pyenv/pyenv.git ~/.pyenv
安装软件
echo 'export PYENV_ROOT=\"$HOME/.pyenv\"' >> ~/.bashrcecho 'export PATH=\"$PYENV_ROOT/bin:$PATH\"' >> ~/.bashrcecho 'eval \"$(pyenv init --path)\"' >> ~/.bashrc#git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv#echo 'eval \"$(pyenv virtualenv-init -)\"' >> ~/.bashrc然后,重启终端或执行 source ~/.bashrc。
配置环境变量
pyenv install 3.10.9
使用 pyenv 安装 Python
pyenv global 3.10.9
设置全局 Python 版本
pyenv global system
设置系统python版本
使用pyenv管理python
查看环境
conda env list
创建环境
conda create --name tensorflow python=3.8.10
激活环境
conda activate tensorflow
推出当前环境
conda deactivate
conda remove -n tensorflow --all
使用conda管理python/env
使用虚拟环境
from urlib import parse(尽量杜绝使用*)
模块引入优化
使用threading
使用
多进程
使用processing
多线程
asyncio是Python3.4版本引入的标准库,直接内置了对异步IO的支持
1.EventLoop 管理所有的事件,在整个程序运行过程中不断循环执行并追踪事件(在队列中),空闲时调用相应的事件处理者来处理这些事件。2.Future 对象表示尚未完成的计算,还未完成的结果,callback函数的入参3.Task是Future的子类,作用是在运行某个任务的同时可以并发的运行多个任务。通过2个函数创建: loop.create_task() 和 asyncio.gather()
asyncio
Gevent是一个基于Greenlet实现的网络库,通过greenlet实现协程。
1.Greenlet是作为一个C扩展模块,它封装了libevent事件循环的API,让开发者在不改变编程习惯的同时,用同步的方式写异步IO代码。2.在实际的代码里,我们不会用gevent.sleep()去切换协程,而是在执行到IO操作时gevent会自动完成 3.Gevent需要将Python自带的一些标准库的运行方式由阻塞式调用变为协作式运行。这一过程在启动时通过monkey patch完成
使用gevent.spawn
gevent
协程,io多路复用
使用异步编程
可以逐个访问可迭代对象中的元素,而不需要将整个对象加载到内存中。
迭代器通常通过调用iter()函数来创建,并通过next()函数来逐个访问元素。当所有元素都被访问完毕时,迭代器会引发StopIteration异常。
迭代器是一个对象,它实现了__iter__()和__next__()方法
生成器函数使用yield关键字来产生值,而不是使用return关键字。
每次调用生成器函数时,它会返回一个值,并在下一次调用时从上次离开的地方继续执行。生成器可以大大减少内存消耗,并且更加灵活和高效。
生成器是一种特殊的迭代器,它可以通过函数来创建。
在处理大型数据集或需要延迟计算的情况下,生成器通常是更好的选择。
特点
(i for i in range(1000))
def func(): yield obj
使用迭代器/生成器
使用内部函数(基于C语言解释)如:list,dict,join,json,isinstance,id
尽量不要使用全局变量, globe
attributes, functions
属性和功能封装在基类中
使用局部变量
key in dict()
list[index]
element in list()
避免O(n^m)的时间复杂度
尽量避免O(n^2)的时间复杂度
避免循环嵌套做矩阵运算
算法优化
手动回收
避免不必要的变量
list,dict,set等容器的相互引用要注意
避免循环引用
Class interface should fucos one thing.
单一职责原则
Software entities like classes and functions should be open for extension but closed for modification
开闭原则
Functions that use references to base classes must be able to use objects of derived classes without knowing it.
里氏替换原则
The dependency of one class to another one should depend on the smallest possible.
接口隔离原则
High level modules should not depend upon low level modules. Both should depend upon abstract class.
依赖倒置原则
遵循solid原则
内存回收、内存优化
它是一个JIT(即时)编译器
使用Numba
使用cPickle
ctypes: 通常用于封装(wrap)C程序,让纯Python程序调用动态链接库(Windows中的dll或Unix中的so文件)中的函数。如果想要在python中使用已经有C类库,使用ctypes是很好的选择,有一些基准测试下,python2+ctypes是性能最好的方式。
cffi: cffi的就是ctypes在pypy中的实现,同进也兼容CPython。cffi提供了在python使用C类库的方式,可以直接在python代码中编写C代码,同时支持链接到已有的C类库。
使用C扩展
使用扩展
Python优化
使用jdk安装,包含jre环境
提升便捷
openjdk-n-jdk指定版本
sudo apt install openjdk-8-jdk
指定版本
环境的安装
private/public
合理使用公有私有
private static final String DRIVERS_CLASS
合理使用静态类型
private final String DRIVERS_CLASS
合理使用常量
合理的定义
样例
。
其他基本类型
整型(int)、浮点型(float、double)、短整型(short)、长整型(long)、字符型(char)、布尔型(boolean)、字节型(byte)、字符串型(String)
字符串重点
循环案例
字符串(单独拎出来)
常用数据类型
查找
修改
数组是一种存储固定大小元素的数据结构,元素的类型可以是基本数据类型或对象。数组的特点是长度固定,通过下标来访问数组中的元素。
数组(Array)
创建样例
查询
集合是一种存储对象的容器,可以动态地添加、删除和修改元素。常见的集合类有List、Set、Stack等。
集合(Collection)
Map是一种键值对的集合,每个键对应一个值。Map中的键是唯一的,值可以重复。
字典 Map
复杂数据类型
高效的数据类型
文件名与公有类名一致
最多一个public类
文件名使用主要功能类名去命名文件
多个类且无public类
使用大驼峰命名类名
类名
优化表达,注意顺序
类属性
private static String personName() {}
(修饰符),(关键字),(函数类型),函数返回,函数名称
类成员
public static void main() {}
入口函数
类构造
异步编程
JVM优化
Java 优化
brew install nodejs
mac
apt install nodejs==8.0
linux
https://nodejs.org/zh-cn/download
windows
安装nodejs环境
删除多余的依赖库
删除滥用的npm包
避免未使用的js代码
使用数组,对象直接构建的方式
使用数组,对象去查询,调用
避免数组和对象操作使用构造函数
LocalStorage
SessionStorage
Cookies
Memory Cache:
js的缓存
合理使用缓存机制
减少循环中的活动
减少不必要的变量
尽量避免使用非必要的全局变量
判断多,越倾向于使用 switch 而不是 if-else
修改CSS样式时,最好不要直接写样式,而是替换 class 来改变样式
要对 DOM 元素执行一系列操作,可以将 DOM 元素脱离文档流,修改完成后,再将它带回文档
使用事件委托
合理的算法、编码
一个完整的 HTTP 请求需要经历 DNS 查找,TCP 握手,浏览器发出 HTTP 请求,服务器接收请求,服务器处理请求并发回响应
减少 HTTP 请求
多路复用
优先级,流量控制
服务器可以主动推送
使用 HTTP2
考虑一些css放头部,js放尾部
异步
响应式
使用 webp 格式的图片
使用css3的样式图
加载图片
优化请求
Javascript优化
https://www.processon.com/view/6575827967b30d6723ec0159
容器化
集群部署
0 条评论
回复 删除
下一页