当前位置: 首页 > news >正文

查看网站空间住房城乡建设部网站办事大厅

查看网站空间,住房城乡建设部网站办事大厅,域名注册网站制作,体育设施 网站模版一、算法初识 数据结构和算法是程序的基石。我们使用的所有数据类型就是一种数据结构#xff08;数据的组织形式#xff09;#xff0c;写的程序逻辑就是算法。 算法是指用来操作数据、解决程序问题的一组方法。 对于同一个问题#xff0c;使用不同的算法#xff0c;也…一、算法初识 数据结构和算法是程序的基石。我们使用的所有数据类型就是一种数据结构数据的组织形式写的程序逻辑就是算法。 算法是指用来操作数据、解决程序问题的一组方法。 对于同一个问题使用不同的算法也许最终得到的结果是一样的但在过程中消耗的资源空间复杂度和时间时间复杂度却会有很大的区别。 时间维度是指执行当前算法所消耗的时间我们通常用「时间复杂度」来描述。 空间维度是指执行当前算法需要占用多少内存空间我们通常用「空间复杂度」来描述。 常见的时间复杂度量级有大O符号表示法 常数阶O(1)对数阶O(logN)线性阶O(n)线性对数阶O(nlogN)平方阶O(n²)立方阶O(n³)K次方阶O(n^k)指数阶(2^n) 上面从上至下依次的时间复杂度越来越大执行的效率越来越低。具体参考此博客 Python常用的排序算法 二、Python和Go/Java/C语言混编 1.动态链接库dllso文件 Linux下的动态库以.so 结尾 Windows下的动态库以.dll结尾 2.Go语言写的代码把所有代码都编译到一个可执行文件 3.C语言写的程序支持不同的代码编译到动态链接库中 4.Python调用动态链接库sodll from ctypes import * #----------以下四种加载DLL方式皆可————————— # pDLL WinDLL(./myTest.dll) # pDll windll.LoadLibrary(./myTest.dll) # pDll cdll.LoadLibrary(./myTest.dll) pDll CDLL(./myTest.dll)#调用动态链接库函数 res pDll.sum(1,2) #打印返回结果 print(res)5.Python调用Java的jar包 6.Go写的代码编译成动态链接库文件参考此博客 package main ​ import C //必须引入C库 ​ import fmt ​ //加入下面注释代码表示导出可以被python调用 ​ //export PrintDll func PrintDll() {fmt.Println(我来自dll) } ​ // //export Sum func Sum(a int, b int) int {return a b } ​ ​ func main() {//必须加一个main函数作为CGO编译的入口无具体实现代码 }编译成so库 go build -buildmodec-shared -o s1.so s1.go编译成dll库 go build -buildmodec-shared -o s1.dll s1.gopython调用so文件 from ctypes import cdlllib cdll.LoadLibrary(./s1.so)# 调用go语言的Sum result lib.Sum(100, 200) print(result)# 调用go语言的PrintDll lib.PrintDll()7.什么场景使用 1生成支付连接的方法----so文件 2雪花算法 三、分布式锁 在很多场景中我们为了保证数据的最终一致性需要很多的技术方案来支持比如分布式锁那具体什么是分布式锁 分布式锁具备的条件 1、在分布式系统环境下一个方法在同一时间只能被一个机器的一个线程执行 2、高可用的获取锁与释放锁 3、高性能的获取锁与释放锁 4、具备可重入特性 5、具备锁失效机制防止死锁 6、具备非阻塞锁特性即没有获取到锁将直接返回获取锁失败。 如何实现 1、基于数据库实现分布式锁 2、基于缓存Redis等实现分布式锁官方提供了redlock 示例 from redlock import Redlockdlm Redlock([{host: localhost, port: 6379, db: 0}, ])# 获得锁 my_lock dlm.lock(my_resource_name, 1000)print(锁被我拿到了你们任何人都拿不到了)dlm.unlock(my_lock)底层基于SETNX当且仅当key不存在时set一个key为val的字符串返回1若key存在则什么都不做返回0。封装如下 #连接redis import redis import uuid import time redis_client redis.Redis(hostlocalhost,port6379,# password,db10)#获取一个锁 # lock_name锁名称 # acquire_time: 客户端等待获取锁的时间 # time_out: 锁的超时时间 def acquire_lock(lock_name, acquire_time10, time_out10):获取一个分布式锁identifier str(uuid.uuid4())end time.time() acquire_timelock string:lock: lock_namewhile time.time() end:if redis_client.setnx(lock, identifier):# 给锁设置超时时间, 防止进程崩溃导致其他进程无法获取锁redis_client.expire(lock, time_out)return identifierelif not redis_client.ttl(lock):redis_client.expire(lock, time_out)time.sleep(0.001)return False#释放一个锁 def release_lock(lock_name, identifier):通用的锁释放函数lock string:lock: lock_namepip redis_client.pipeline(True)while True:try:pip.watch(lock)lock_value redis_client.get(lock)if not lock_value:return Trueif lock_value.decode() identifier:pip.multi()pip.delete(lock)pip.execute()return Truepip.unwatch()breakexcept redis.excetions.WacthcError:passreturn False3、基于Zookeeper实现分布式锁参考此博客 四、分布式ID 在复杂分布式系统中往往需要对大量的数据和消息进行唯一标识。 具备条件 全局唯一性不能出现重复的ID号既然是唯一标识这是最基本的要求。 趋势递增mysql主键 单调递增保证下一个ID一定大于上一个ID 信息安全如果ID是连续的恶意用户的扒取工作就非常容易做了直接按照顺序下载指定URL即可如果是订单号就更危险了竞对可以直接知道我们一天的单量。所以在一些应用场景下会需要ID无规则、不规则。 平均延迟和TP999延迟都要尽可能低TP90就是满足百分之九十的网络请求所需要的最低耗时。TP99就是满足百分之九十九的网络请求所需要的最低耗时。同理TP999就是满足千分之九百九十九的网络请求所需要的最低耗时可用性5个999.999%高QPS。 如何实现 mysql自增、UUID、Redis生成ID、snowflake雪花算法方案比较主流 五、IO模型 数据复制的过程中IO不会消耗CPU 网络IO、磁盘IO 用户缓冲区和内核换冲突 1、内存分为内核缓冲区和用户缓冲区 2、用户的应用程序不能直接操作内核缓冲区需要将数据从内核拷贝到用户才能使用 3、而IO操作、网络请求加载到内存的数据一开始是放在内核缓冲区的 IO模型有哪些 1、BIO-阻塞模式I/O 2、NIO-非阻塞模式I/O 3、IO多路复用模型 注意 1.IO多路复用是阻塞式IO 2.select poll和epoll的区别 select poll基于轮询最多监听1024个文件的变化 epoll基于回调无限制监听 3.IO多路复用epoll模型是比较成熟的IO模型 4、AIO-异步I/O模型 注意 AIO指用户缓冲区到内核缓冲区不等待从内核缓冲区到用户缓冲区也不等待 市面上没有成熟的框架因为内核缓冲区copy到用户缓冲区过程性能消耗很低基本忽略。 阻塞与非阻塞、同步与异步区别 同步和异步是消息通讯的机制阻塞和非阻塞是函数调用机制。 又分为同步阻塞、同步非阻塞、异步阻塞、异步非阻塞 1 并发 并发是指一个时间段内有几个程序在同一个cpu上执行但是同一时刻只有一个程序在cpu上运行 比如跑步鞋带开了停下跑步系鞋带 2 并行 指任意时刻点上有多个程序同时运行在多个cpu上 比如跑步边跑步边听音乐 3 同步 指代码调用io操作时必须等待io操作完成才返回的调用方式 4 异步 异步是指代码调用io操作时不必等io操作完成就返回调用方式 5 阻塞 指调用函数时候当前线程别挂起 6 非阻塞 指调用函数时候当前线程不会被挂起而是立即返回
http://www.w-s-a.com/news/727033/

相关文章:

  • txt怎么做网站网站的链接结构包括
  • 适合平面设计师的网站网络营销专员的就业前景
  • 好订单网服装加工接单谷歌seo网站推广怎么做
  • seo泛站群外贸网站建设团队
  • 网站免费维护建立网站国家城乡建设部投诉网站
  • 企业网站必须备案吗wordpress导入数据库依然无法链接
  • 浅谈高校网站群的建设网站不支持m.域名
  • 和平网站建设公司做实验教学视频的网站
  • 音乐网站源码带手机版WordPress菜单调用不出
  • 昆明网站设计都需要设计什么网络推广岗位职责和任职要求
  • 国外公司网站模板网站建设公司选择意见书
  • 如何创建一个网站卖东西郑州 网站建设公司
  • 石景山郑州阳网站建设南京网站搜索引擎优化
  • 一个网站需要哪些备案书店网站建设策划书总结
  • 网站建设的重点是什么注册网站空间
  • 网站公司企业宗旨我的网站 dedecms
  • 沧州网站优化做详情图的网站
  • 中国建设银行公积金网站wordpress表单 post
  • 找权重高的网站方法wordpress视频网站上传视频
  • 营销型网站架构师迁移wordpress500错误
  • 做网站还是博客由()承担
  • wordpress 导购站模板中国最新军事新闻直播83军
  • 公众号h5网站开发wordpress文章主图
  • ps怎么艺术字字体设计网站我想自己做网站
  • 北京做机柜空调的网站模板网站和插件
  • 手机购物网站模板wordpress添加分类文档
  • 网站开发知识网上怎么申请个人营业执照
  • 音乐网站建设费用营销策略都有哪些4p
  • 深圳制作网站怎么样wordpress 学习视频
  • 新公司注册网站传奇手游大型网站