首页 文章 精选 留言 我的

精选列表

搜索[工具模块],共10000篇文章
优秀的个人博客,低调大师

Python零基础学习笔记(二十九)—— OS模块

import os ''' OS:包含了普遍的操作系统的功能 ''' #获取操作系统类型 nt->Windows posix->Linux/Unix或Mac OS X print(os.name) #打印操作系统详细信息,注意:windows 不支持 #print(os.uname()) #获取操作系统的环境变量 print(os.environ) #获取指定环境变量 print(os.environ.get("ALLUSERSPROFILE")) #获取当前目录 print(os.curdir) #获取当前工作目录,即当前脚本所在的目录 print(os.getcwd()) #返回指定目录下的所有文件(列表形式) print(os.listdir(r"C:\Users\Administrator\PycharmProjects\untitled\day006")) #在当前目录下创建新目录 #os.mkdir("My name") #删除目录 #os.rmdir("My name") #获取文件属性 print(os.stat("断言.py")) #重命名 #os.rename("My name","sd") #删除普通文件 #os.remove("sd") #运行shell命令 #os.system("notepad") #os.system("write") #os.system("shutdown -s -t 500") #自动关机 #os.system("taskkill /f /im notepad.exe") #关闭notepad进程 ''' os.path ''' #查看当前的绝对路径 print(os.path.abspath("./sd")) #拼接路径 p1 = r"C:\Users\Administrator\PycharmProjects\untitled\day011" p2 = "jjking"#注意:开始不能有斜杠 print(os.path.join(p1,p2)) #拆分路径 path2 = r"C:\Users\Administrator\PycharmProjects\untitled\day011\sd" print(os.path.split(path2)) #获取扩展名 print(os.path.splitext(path2)) #是否是目录 print(os.path.isdir(path2)) #判断文件是否存在 path3 = r"C:\Users\Administrator\PycharmProjects\untitled\day011\断言.py" print(os.path.isfile(path3)) #判断文件是否存在 print(os.path.exists(path3)) #获得文件字节 print(os.path.getsize(path3)) #获得文件路径 print(os.path.dirname(path3)) #获得文件名 print(os.path.basename(path3))

优秀的个人博客,低调大师

Java并发编程实战系列5之基础构建模块

1 同步容器类 同步容器类包括Vector和HashTable,二者是早期JDK一部分,此外还包括在JDK 1.2中添加的一些功能相似的类,这些的同步封装器类是由Collections.synchronizedXxx等工厂方法创建的。这些类实现线程安全的方式是:将他们的状态封装起来,并对每个共有方法进行同步,使得每次只有一个线程能访问容器的状态。 1.1 同步容器类的问题 同步容器类都是线程安全的,但在某些情况可能需额外客户端加锁来保护复合操作。 容器上常见的复合操作包括: 迭代(反复访问元素,直到遍历完容器中所有元素) 跳转(根据指定顺序找到当前元素的下一个元素)以及条件运算 在同步容器类中,这些复合操作在没有客户端加锁的情况下,仍是线程安全的, 但当其他线程并发的修改容器时,他们可能会表现出意料之外的行为。 2 并发容器 Java5提供了多种并发容器来改进同步容器的性能。 同步容器将所有对容器状态的访问都串行化,以实现他们的线程安全性。 这种方法的代价是严重降低并发性,当多个线程竞争容器的锁时,吞吐量将严重降低。 并发容器是针对多个线程并发访问设计的。在Java 5中增加了 ConcurrentHashMap,用来替代同步且基于散列的Map,增加了对一些常见符合操作的支持,例如“若没有则添加”、替换以及有条件删除等。 CopyOnWriteArrayList,用于在遍历操作为主要操作的情况下代替同步的List。 copyOnWriteArrayList 和 copyOnWriteSet 一开始都共享同一个内容,当想要修改内容时,才会真正的把内容 copy 出去,形成一个新的内容后再改 比如:当我们往一个容器添加元素时,不直接往当前容器添加,而是先将容器进行 copy,复制出一个新容器,再往新容器里加元素。添加完之后,再将原容器引用指向新容器。 好处:对 copyOnWrite 容器进行并发读时,不需要加锁,因为当前容器不会增加新元素,读写分离 copyOnWriteArrayList#add要加锁,否则多线程时会 copy N 个副本 copyOnWrite 适合于 读多写少场景,但只能保证数据最终一致性,不保证实时一致性 若你希望写入马上被读到,不要用 copyOnWrite 容器 通过并发容器来代替同步容器,可以极大地提供伸缩性并降低风险。 2.1 CocurrentHashMap 同步容器在执行每个操作期间都持有一个锁。在一些操作中,例如HashMashMap.get或List.contains,可能包含大量的工作:当遍历散列桶或链表来查找某个特定的对象时,必须在许多元素上调用equals。在基于散列的容器中,如果hashCode不能很均匀的分布散列值,那么容器中的元素就不会均匀的分布在整个容器中。某些情况下,某个糟糕的散列函数还会把一个散列表变成线性链表。当遍历很长的链表并且在某些或者全部元素上调用equals方法时,会花费很长时间,而其他线程在这段时间内都不能访问容器。 ConcurrentHashMap使用一种粒度更细的称为分段锁的机制来实现更大程度的共享. 在这种机制中,任意数量的读取线程可以并发的访问Map,执行读操作的线程和执行写操作的线程可以并发的访问Map,并且一定数量的写线程可以并发的修改Map. ConcurrentHashMap与其他并发容器一起增强了同步容器:迭代器不会抛出ConcurrentModificationException,因此迭代过程无需加锁. 其迭代器具有"弱一致性",而并非"及时失败".可以容忍并发的修改,当创建迭代器时会遍历已有的元素,并可以(但不保证)在迭代器被构造后将修改操作反映给容器. 只有当需要加锁Map以进行独占访问时,才应该放弃使用ConcurrentHashMap. 2.2 额外的原子Map操作 由于ConcurrentHashMap不能被加锁来执行独占访问,因此 无法使用客户端加锁来创建新的原子操作. 一些常见的复合操作,eg."若没有则添加","若相等则移除"等,都已经实现为原子操作并且在ConcurrentMap接口中声明,如下面代码所示. public interface ConcurrentMap<K, V> extends Map<K, V> { //仅当K没有相应的映射值时才插入 V putIfAbsent(K key, V value); //仅当K被映射到V时才移除 boolean remove(Object key, Object value); //仅当K被映射到oldValue时才替换为newValue boolean replace(K key, V oldValue, V newValue); //仅当K被映射到某个值时才被替换为newValue V replace(K key, V value); }

优秀的个人博客,低调大师

SSLClient 工具

import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; /** * 〈一句话功能简述〉<br> * 〈避免需要证书用于进行Https请求的HttpClient 〉 * * @author zhoumoxuan * @create 9/14/18 * @since 1.0.0 */ public class SSLClient extends DefaultHttpClient { public SSLClient() throws Exception { super(); SSLContext ctx = SSLContext.getInstance("TLS"); X509TrustManager tm = new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return null; } }; ctx.init(null, new TrustManager[]{tm}, null); SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 443, ssf)); } }

优秀的个人博客,低调大师

Python工具

PyEnv python -V --> 显示版本 pyenv install --list --> 列出所有可以安装的包 pyenv versions --> 显示所有的版本 pyenv version --> 显示当前的版本 pyenv install versionId --> 安装 pyenv install versionId -v --> 采用缓存的方式安装 pyenv local 3.6.2 --> 在当期目录创建一个.python-version, 执行pyenv local 自动读取当前目录下的该文件修改PATH变量, 但是这种方式不是基于虚拟环境的, 没有实现隔离 pyenv virtualenv versionId envName --> 创建一个独立的虚拟环境(对PATH做了手脚, 还在工作目录~/.pyenv/versions/对应的versionId目录下创建了名为envName的目录, 虚拟环境独立提供了binary执行文件和site-packages目录) pyevn active envName --> 求换python版本(python的虚拟环境, 修理了PATH) pyenv deactive --> 退出当前虚拟化境 建议对于不同目的的project创建不同的python虚拟环境, 爬虫创建web(有flask等包), 数据分析创建datanalysis(有numpy等包) pyenv uninstall vir --> 删除虚拟化境 更改pip源 cd mkdir .pip cd .pip vim pip.conf [global] trusted-host = mirrors.aliyun.com index-url = http://mirrors.aliyun.com/pypi/simple pip freeze > /tmp/packages.list --> 导出所有已经安装的Python包 pip install -r /tmp/packages.list --> 安装所有在packages.list中的包 jupyter notebookp配置 jupyter notebook --generate-config jupyter notebook password jupyter notebook --ip 0.0.0.0 --no-browser

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册