轻量级

Python3虚拟环境 venv搭建轻量级虚拟环境以及DeepPavlov框架虚拟环境配置

痴心易碎 提交于 2019-11-27 08:30:43
一、Windows系统下创建虚拟环境 选择建立虚拟环境的文件夹,这里我选择D盘,新建文件夹为python_ven_demo,打开windows的dos界面,去到建立虚拟环境的文件夹,cd ‘文件夹名’ 即我的虚拟环境文件夹是python_ven_demo 1、有两种建立虚拟环境的方法: (1)在文件夹下直接建立: 先新建文件夹python_ven_demo, 然后进入该文件夹cd python_ven_demo, 然后搭建虚拟环境:python -m venv . (注:venv 之后一个空格加上一点“.”) (2)直接建立虚拟环境文件夹 及 虚拟环境: 直接输入 python -m venv python_ven_demo (python_ven_demo即为虚拟环境文件夹名 ,可以自己更改设置,直接建立了文件夹,同时生成了虚拟环境) 2、建立后的虚拟环境如图 3、 激活虚拟环境 [注意:只有激活之后,才算进入该虚拟环境,否则安装包时,依然是安装在全局环境之下] 激活文件在Script文件夹下,如图所示。激活:activate.bat,退出:deactivate.bat 激活方式为:dos 界面进入python_ven_demo/文件夹,然后输入activate.bat (也可直接输入activate)即可激活环境,输入python 就进入python3.6环境了。 退出方式

Synchronized升级过程总结

孤人 提交于 2019-11-27 08:09:35
要理解Synchronized,首先要清楚偏向锁,轻量级锁和重量级锁,在使用方面需要有wait/wait(time)/notify/notifyAll等,下 面我们就来介绍一下Synchronized的流程和使用方法; Synchronized的升级过程 (Java SE 1.6中为了减少获得锁和释放锁带来的 性能消耗而引入的偏向锁和轻量级锁) Synchronized的升级顺序是 无锁–>偏向锁–>轻量级锁–>重量级锁,顺内不可逆。 偏向锁 当一个线程访问 同步代码块 并获取锁时,会在对象头和栈帧中的锁记录里存储锁偏向的线程ID,偏向锁是一个可重入的锁,以后该线程在进入和退出该同步代码块时不需要花费 CAS 操作来加锁和解锁,而只需简单的 测试一下对象头的 Mark Word 里是否存储着指向当前线程的偏向锁(当前线程的线程ID) ,如果测试成功,表示线程已经获得了锁,如果测试失败,则需要再测试下 Mark Word 中偏向锁的标识是否设置成 1(表示当前是偏向锁),如果偏向锁标识是1, 则使用 CAS 进行锁获取 ,偏向锁标识不是1,则尝试使用 CAS 将对象头的偏向锁指向当前线程 ,上述两种CAS获取锁的操作,如果 CAS操作成功则获取到了偏向锁 , 失败则代表出现了锁竞争,需要锁撤销操作 。 锁撤销 偏向锁使用了一种等到 竞争出现才释放锁 的机制

Java 中的锁与死锁

时光怂恿深爱的人放手 提交于 2019-11-27 05:09:23
一、synchronized synchronized的三种应用方式 synchronized作用于实例方法 作用于当前实例加锁,进入同步代码前要获得当前实例的锁 所谓的实例对象锁就是用synchronized修饰实例对象中的实例方法,注意是实例方法不包括静态方法。 synchronized作用于静态方法 当synchronized作用于静态方法时,其锁就是当前类的class对象锁。由于静态成员不专属于任何一个实例对象,是类成员,因此通过class对象锁可以控制静态 成员的并发操作。 synchronized同步代码块 在某些情况下,我们编写的方法体可能比较大,同时存在一些比较耗时的操作,而需要同步的代码又只有一小部分,如果直接对整个方法进行同步操作,可能会得不偿失,此时我们可以使用同步代码块的方式对需要同步的代码进行包裹,这样就无需对整个方法进行同步操作了。 还可以使用this对象(代表当前实例)或者当前类的class对象作为锁 synchronized底层语义原理 理解Java对象头与Monitor synchronized代码块底层原理 synchronized方法底层原理 Java虚拟机对synchronized的优化 锁的状态总共有四种,无锁状态、偏向锁、轻量级锁和重量级锁。 随着锁的竞争,锁可以从偏向锁升级到轻量级锁,再升级的重量级锁,但是锁的升级是单向的

Dubbo(高性能、轻量级的开源Java RPC框架) & RPC(远程过程调用)

余生长醉 提交于 2019-11-27 04:44:45
Dubbo是 [1] 阿里巴巴公司开源的一个高性能优秀的 服务框架 ,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 [2] Spring 框架无缝集成。 Dubbo是一款高性能、轻量级的开源Java RPC 框架,它提供了三大核心能力: 面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 RPC:RPC(Remote Procedure Call)— 远程过程调用 ,它是一种通过 网络 从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 RPC协议 假定某些 传输协议 的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI 网络通信 模型中,RPC跨越了 传输层 和 应用层 。RPC使得开发包括网络 分布式 多程序在内的应用程序更加容易。 来源: https://www.cnblogs.com/luojie1216/p/11343893.html

线程和偏向锁、轻量级锁、重量级锁的知识整理

守給你的承諾、 提交于 2019-11-27 03:52:29
xl_echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!! 参考文章列表: Java并发编程:Synchronized底层优化(偏向锁、轻量级锁) 轻量级锁、偏向锁、重量级锁详情 偏向锁、轻量级锁、重量级锁、自旋锁原理讲解(推荐看一下) 参考视频:咕泡学院Mic老师的多线程基本原理 主要的内容如下 多线程同时执行的安全问题思考 Synchronized的基本认识 思考锁的存储 Synchronized锁的升级原理 wait/notify实现线程通信 多线程同时执行的安全问题思考 如果业务代码逻辑当中,有一个操作需要改变一个常量的值,比如int i = 0, 业务代码当中i需要i++。单线程的情况下,不会出现问题,如果是多线程并发操作i的值,这个时候,i的结果最终是什么?会出现线程的安全问题。这种情况应该怎么解决? 线程的安全性有三种 原子性 提供了互斥访问,同一时刻只能有一个线程对它进行操作 实现锁的两种方式: 1)synchronized:在作用对象的作用范围内,依赖JVM实现操作的原子性。 2)Lock:依赖特殊的CPU指令,代码实现。 可见性 一个线程对主内存的修改可以及时的被其他线程观察到。 具体实现过程: 1

AndroidMonth2_Day9_Sqltie数据库

↘锁芯ラ 提交于 2019-11-27 03:45:47
AndroidMonth2_Day9_Sqltie数据库 SQLite数据库介绍 数据库使用及两个核心类 一, SQLiteOpenHelper 二. SQLiteDatabase 使用事务批量处理数据 SQLite数据库介绍 1.Android 系统中集成的轻量级的数据库 2.特点: 轻量级 只用一个动态的库, 是以单个文件的形式进行存取 跨平台 支持多个操作系统 零配置 无需安装, 直接使用 嵌入式 内嵌到手机中 3.在程序的内部可以通过数据库的名称访问, 其他应用不能访问 **4.路径: data/data/应用程序包名/database/ ** .db 5.存放的类型: NULL 空值 INTEGER 整型(不用int) VARCHAR 可变长度的字符数据 TEXT 文本字符串 BOOLEAN 布尔 DATE 数据库使用及两个核心类 一, SQLiteOpenHelper 数据库的帮助类, “用于数据库的创建和版本更新” 使用方式: (1)定义一个类, 继承SQLiteOpenHelper (2)重写构造方法 :提供数据库的基本信息 : 上下文对象,数据库名称,Null,数据库的版本号 (3)重写父类的两个方法: onCreate(): onUpgrade() public class MySqlHelper extends SQLiteOpenHelper { /** *

安装轻量级OSC实现 liblo

我与影子孤独终老i 提交于 2019-11-26 20:48:07
1. Liunx: sudo apt-get install liblo-dev 2. macOS: brew install liblo 或则手动编译 1. 下载:  wget http://downloads.sourceforge.net/liblo/liblo-0.30.tar.gz 2. 进入下载目录解压: tar -xzvf liblo-0.30.tar.gz 3. 进入解压后的目录编译: ./configure # 配置 make # make make check # 自检(可选) make install # 安装 未完成 来源: https://www.cnblogs.com/ToCenTek/p/11332999.html

.NET平台常用框架整理

北战南征 提交于 2019-11-26 19:21:39
基于.NET平台常用的框架整理 转自:http://www.cnblogs.com/hgmyz/p/5313983.html 首先谢谢楼主,以后备用 自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就继续补充这篇日志,日积月累,就能形成一个自己的组件经验库。 分布式缓存框架: Microsoft Velocity :微软自家分布式缓存服务框架。 Memcahed :一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度。 Redis :是一个高性能的KV数据库。 它的出现很大程度补偿了Memcached在某些方面的不足。 EnyimMemcached :访问Memcached最优秀的.NET客户端,集成不错的分布式均衡算法。 开源的.NET系统推荐: OXITE :微软ASP.NET MVC案例演示框架。 PetShop :微软ASP.NET宠物商店。 Orchard :国外一个MVC开源的博客系统。 SSCLI :微软在NET Framework 2.0时代的开源代码。 DasBlog :国外一个基于ASP.NET的博客系统。 BlogEngine.NET :国外一款免费开源的博客系统。 Dotnetnuke.NET

轻量级网络 Inception, Pointwise Conv, Group Conv, Depthwise Conv, Bottleneck, Xception, MobileNet, ShuffeNet, ResNeXt, SqueezeNet, EfficientNet, MixConv

让人想犯罪 __ 提交于 2019-11-26 18:02:34
1. Abstract 本文旨在简单介绍下各种轻量级网络,纳尼?!好吧,不限于轻量级 2. Xception 2.1 Extreme Inception 2.2 Xception 3. MobileNet 3.1 MobileNet V1 3.2 MobileNet V2 3.3 MobileNet V3 4. ShuffeNet 4.1 ShuffeNet V1 Shuffe units Network Architecture Experiments 4.2 ShuffeNet V2 5. SqueezeNet 6. EfficientNet 7. MixConv 8. Related link 坑太多,有时间再来填 来源: https://www.cnblogs.com/xuanyuyt/p/11329998.html

面试官都叫好的Synchronized底层实现,这工资开多少一个月?

爱⌒轻易说出口 提交于 2019-11-26 13:03:53
本文为死磕Synchronized底层实现第三篇文章,内容为重量级锁实现。 本系列文章将对HotSpot的 synchronized 锁实现进行全面分析,内容包括偏向锁、轻量级锁、重量级锁的加锁、解锁、锁升级流程的原理及源码分析,希望给在研究 synchronized 路上的同学一些帮助。 重量级的膨胀和加锁流程 当出现多个线程同时竞争锁时,会进入到 synchronizer.cpp#slow_enter 方法 void ObjectSynchronizer::slow_enter(Handle obj, BasicLock* lock, TRAPS) { markOop mark = obj->mark(); assert(!mark->has_bias_pattern(), "should not see bias pattern here"); // 如果是无锁状态 if (mark->is_neutral()) { lock->set_displaced_header(mark); if (mark == (markOop) Atomic::cmpxchg_ptr(lock, obj()->mark_addr(), mark)) { TEVENT (slow_enter: release stacklock) ; return ; } // Fall through to