Mark

全自动锡膏印刷机特点及操作流程

◇◆丶佛笑我妖孽 提交于 2020-07-28 18:32:30
1、使用伺服系统,方便准确定位;   2、采用精密导轨和台湾调速马达来驱动刮刀座,确保印刷精度;   3、印刷刮刀可向上旋转45度固定,便于印刷网板及刮刀的清洗和更换;   4、刮刀座可前后调节,以选择适合的印刷位置;   5、组合式印刷台板具有固定沟槽及PIN,安装调节方便,适用于单双面板的印刷;   6、校板方式采用钢网移动,并结合印刷(PCB)的X、Y、Z。矫正微调方便快捷。   7、采用三菱FX系列PLC及触摸屏控制、简单、方便更适于人机对话;   8、可设定单向及双向,多种印刷方式;   9、具有自动计数功能,方便生产产量的统计;   10、刮刀角度可调,钢刮刀,橡胶刮刀均适合;   11、触磨屏具有屏保功能,时间可任意调节,保护触摸屏使用寿命;   12、采用AE独特的程式设计,印刷刮刀座调节方便;   13、印刷机速度可任意调节。   全自动锡膏印刷机操作流程   1、打开开关,机器归零,选择程序。   2、安装支撑架:调节轨道宽度,移动挡板气缸,打开运输开关,将板子放在轨道中心,按下按钮使板子到达指定位置,按下轨道夹紧按钮。   3、调节MARK2的位置,使其与电脑截面的“十”字对应,确认生产数据是否正确,点确定。   4、依次安装钢网及刮刀:按下生产设置,打开调解窗口,点开始生产。   5、在钢板上添加锡膏,锡膏添加量以高于刮刀1/3低于刮刀2/3为基准。   6

Java synchronized原理总结

喜欢而已 提交于 2020-07-28 13:29:37
锁的内存语义 synchronized的底层是使用操作系统的mutex lock实现的。 内存可见性: 同步块的可见性是由“如果对一个变量执行lock操作,将会清空工作内存中此变量的值,在执行引擎使用这个变量前需要重新执行load或assign操作初始化变量的值”、“对一个变量执行unlock操作之前,必须先把此变量同步回主内存中(执行store和write操作)”这两条规则获得的。 操作原子性: 持有同一个锁的两个同步块只能串行地进入 锁的内存语义: 当线程释放锁时,JMM会把该线程对应的本地内存中的共享变量刷新到主内存中 当线程获取锁时,JMM会把该线程对应的本地内存置为无效。从而使得被监视器保护的临界区代码必须从主内存中读取共享变量 (要看懂上面这不多的几句话,得先了解一下,最底层的8个操作lock,unlock,read,load,use,assign,store,write;工作内存:cpu的寄存器和高速缓存的抽象描述;底层是怎么实现synchronized的,使用一个monitor的enter和exit,这之间是执行同步代码块。。) 锁释放和锁获取的内存语义: 线程A释放一个锁,实质上是线程A向接下来将要获取这个锁的某个线程发出了(线程A对共享变量所做修改的)消息。 线程B获取一个锁,实质上是线程B接收了之前某个线程发出的(在释放这个锁之前对共享变量所做修改的)消息。

016. 垃圾回收机制

前提是你 提交于 2020-07-28 13:25:46
1. 自动垃圾收集 自动垃圾收集是查看堆内存,识别正在使用哪些对象以及哪些对象未被使用以及删除未使用对象的过程。 使用中的对象或引用的对象意味着程序的某些部分仍然维护指向该对象的指针。 程序的任何部分都不再使用的对象或未引用的对象,可以回收未引用对象使用的内存。 2. 如何确定内存需要被回收 该过程的第一步称为标记。这是垃圾收集器识别哪些内存正在使用而哪些不再使用的地方。 不同类型内存的判断方式 对象回收-引用计数 对象回收-可达性分析 方法区回收 可达性分析算法 简单来说,将对象及其引用关系看作一个图,选定活动的对象作为 GC Roots; 然后跟踪引用链条,如果一个对象和 GC Roots 之间不可达,也就是不存在引用,那么即可认为是可回收对象。 引用类型和可达性级别 引用类型 强引用(StrongReference):最常见的普通对象引用,只要还有一个强引用指向一个对象,就不会回收。 软引用(SoftReference):JVM 认为内存不足时,才会去试图回收软引用指向的对象(缓存场景)。 弱引用(WeakReference):虽然是引用,但随时可能被回收掉。 虚引用(PhantomReference):不能通过它访问对象。用于对象被 finalize 以后,执行指定逻辑的机制(Cleaner)。 可达性级别 强可达(Strongly Reachable)

jvm~xmx设置多少合适

∥☆過路亽.° 提交于 2020-07-28 13:11:20
Java整个堆大小设置 Xmx 和 Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍 永久代PermSize和MaxPermSize设置为老年代存活对象的1.2-1.5倍。 永久区并不是老年代的1.2到1.5倍,而是FullGC后永久区的1.2到1.5倍 1.2x to 1.5x permanent generation space 年轻代Xmn的设置为老年代存活对象的1-1.5倍。 老年代的内存大小设置为老年代存活对象的2-3倍。 查看进行的堆内存 jmap -head PID 1、Sun官方建议年轻代的大小为整个堆的3/8左右, 所以按照上述设置的方式,基本符合Sun的建议。 2、堆大小=年轻代大小+年老代大小, 即xmx=xmn+老年代大小 。 Permsize不影响堆大小。 3、为什么要按照上面的来进行设置呢? 没有具体的说明,但应该是根据多种调优之后得出的一个结论。 触发fullGc,查看老年代对象大小 使用jmap工具可触发FullGC jmap -dump:live,format=b,file=heap.bin <pid> 将当前的存活对象dump到文件,此时会触发FullGC jmap -histo:live <pid> 打印每个class的实例数目,内存占用,类全名信息.live子参数加上后,只统计活的对象数量.

Pytest03-pytest命令行参数

风格不统一 提交于 2020-07-28 03:48:46
目录 3.pytest命令行参数 3.1 pytest控制台信息详解 3.2 Pytest运行结果类型 3.3 Pytest命令行参数 3.3.1 --collect-only 3.3.2 -k Expression 3.3.3 -m MarkExpr 3.3.4 -x, --exitfirst 3.3.5 --maxfail=num 3.3.6 --lf --last-failed 3.3.7 --ff --failed-first 3.3.8 -v --verbose 3.3.9 -q --quiet 3.3.10 --tb=style 3.3.11 --durations=N 3.3.12 -h --help 3.pytest命令行参数 3.1 pytest控制台信息详解     通常在运行pytest之后,会出现如下所示的控制台信息: C:\Users\Surpass\Documents\PycharmProjects\PytestStudy\Lesson01>pytest test_01.py ==================test session starts ======================= platform win32 -- Python 3.7.6, pytest-5.4.2, py-1.8.1, pluggy-0.13.1 rootdir:

python asgi web 框架解读

瘦欲@ 提交于 2020-07-28 03:44:38
Django Restframework 大神: TOM CHRISTIE http://www.tomchristie.com/ C++ 静态多态 静多态(Static Polymorphism)是多态性的一种。多态性可按照发生的时间段分为静多态和动多态(Dynamic Polymorphism) Flask 基础知识 自己去看下spring最基础知识 A要用B对象的时候,会去new一个B, C调用的时候也会去new一个B。 现在在B上面加了个注解, 项目启动的时候去扫描这个带这个注解的B, 然后通过反射去实例化B,放到map容器里, 使用的时候就不用new了,直接把B注入进来 -- 相当于深拷贝么 -- 应该不是,反射的还是同一个对象 Python 元类 def with_metaclass(meta, *bases): """Create a base class with a metaclass.""" # This requires a bit of explanation: the basic idea is to make a # dummy metaclass for one level of class instantiation that replaces # itself with the actual metaclass. class metaclass

Pytest04-编写测试函数

雨燕双飞 提交于 2020-07-28 01:56:26
目录 4.编写测试函数 4.1 使用assert声明 4.2 预期异常 4.3 测试函数标记 4.4 跳过测试 4.5 标记预期失败的测试 4.6 运行测试子集 4.6.1 单个目录 4.6.2 单个测试文件/模块 4.6.3 单个测试函数 4.6.4 单个测试类 4.6.5 单个测试类中的测试方法 4.6.6 用测试名划分测试集合 4.7 参数化测试 4.7.1 参数化方式 4.7.2 添加额外参数ids 4.编写测试函数 4.1 使用assert声明     使用pytest编写测试时,若需要传递测试失败信息,可以直接使用Pytho自带的assert关键字。pytest与其他测试框架如unittest的区别如下所示: pytest unittest assert something assertTrue(something) assert a==b assertEqual(a,b) assert a<=b assertLessEqual(a,b) ... ...     pytest中assert主要有以下特点 1.assert 后面 可以添加任何表达式 ,若表达式的结果通过bool转换结果为True,则代表测试通过 2.pytest 可以重写assert关键字 。pytest可截断对原生assert的调用,替换为pytest定义的assert,从而提供更多的详细失败信息

软件项目管理 第3版 第8章习题答案 参考答案

烈酒焚心 提交于 2020-07-27 23:20:32
[填空][审计] 1、( )是对过程或产品的一次独立质量评估。 [填空][缺陷成本] 2、质量成本包括预防成本和( )。 [填空][软件质量计划,软件质量保证,软件质量控制] 3、质量管理包括( )、( )、( )等过程。 [填空][软件质量] 4、( )是软件满足明确说明或者隐含的需求的程度。 [填空][产品运行,产品转移,产品修改] 5、McCall质量模型关注的3个方面是()、()、()。 [填空][质量控制] 6、质量管理总是围绕着质量保证和()过程两个方面进行。 [填空][项目执行过程审计,项目产品审计] 7、质量保证的主要活动是()和()。 [是非][A] 1、 质量是满足要求的程度,包括符合规定的要求和客户隐含的需求。( ) [A]正确 [B]错误 [是非][A] 2、 软件质量是软件满足明确说明或者隐含的需求的程度。( ) [A]正确 [B]错误 [是非][B] 3、 软件质量可以通过后期测试得以提高。( ) [A]正确 [B]错误 [是非][A] 4、 质量计划可以确定质量保证人员的特殊汇报渠道。( ) [A]正确 [B]错误 [是非][B] 5、 软件质量是代码正确的程度。( ) [A]正确 [B]错误 [单选][D] 1、下列不属于质量管理过程的是() [A]质量计划 [B]质量保证 [C]质量控制 [D]质量优化 [单选][C] 2、项目质量管理的目标是满足

iOS-Snippets常见代码块引用

余生长醉 提交于 2020-07-27 14:59:30
#pragma mark - LifeCycle #pragma mark - Setter #pragma mark - Getter #pragma mark - Public #pragma mark - Private #pragma mark - Notification #pragma mark - Delegate ///全局 UIKIT_EXTERN const CGFloat TEST UIKIT_EXTERN NSString *const TEST // 异步主线程执行,不强持有Self #define MJRefreshDispatchAsyncOnMainQueue(x) \ __weak typeof(self) weakSelf = self; \ dispatch_async(dispatch_get_main_queue(), ^{ \ typeof(weakSelf) self = weakSelf; \ {x} \ }); 来源: oschina 链接: https://my.oschina.net/wayzhu/blog/4301322

Synchronized加锁、锁升级和java对象内存结构

﹥>﹥吖頭↗ 提交于 2020-07-27 14:34:20
首先了解一下 JMM 中定义的内存操作: 一个线程操作数据时候都是从主内存(堆内存)读取到自己工作内存(线程私有的数据区域)中再进行操作。对于硬件内存来说,并没有工作内存和主内存的区分,这都是 java 内存模型划分出来的,它只是一种抽象的概念,是一组规则,并不是实际存在的。 Java 内存模型中定义了 八种同步操作 : 1.lock( 锁定 ) :作用于主内存的变量,把一个变量标记为一条线程独占状态 2.unlock( 解锁 ) :作用于主内存的变量,把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定 3.read( 读取 ) :作用于主内存的变量,把一个变量值从主内存传输到线程的工作内存中,以便随后的 load 动作使用 4.load( 载入 ) :作用于工作内存的变量,它把 read 操作从主内存中得到的变量值放入工作内存的变量副本中 5.use( 使用 ) :作用于工作内存的变量,把工作内存中的一个变量值传递给执行引擎 6.assign( 赋值 ) :作用于工作内存的变量,它把一个从执行引擎接收到的值赋给工作内存的变量 7.store( 存储 ) :作用于工作内存的变量,把工作内存中的一个变量的值传送到主内存中,以便随后的 write 的操作 8.write( 写入 ) :作用于工作内存的变量,它把 store