前端同学大福利,最全的面试题目整理

自己整理了一些关于前端这个行业面试题,好多都不会好难过,I NEED AV…….

HTML&CSS

  1. 常用那几种浏览器测试?有哪些内核(Layout Engine)?
    (Q1) 浏览器:IE,Chrome,FireFox,Safari,Opera。
    (Q2) 内核:Trident,Gecko,Presto,Webkit。

  2. 说下行内元素和块级元素的区别?行内块元素的兼容性使用?(IE8 以下)
    (Q1) 行内元素:会在水平方向排列,不能包含块级元素,设置width无效,height无效(可以设置line-height),margin上下无效,padding上下无效。块级元素:各占据一行,垂直方向排列。从新行开始结束接着一个断行。
    (Q2) 兼容性:display:inline-block;*display:inline;*zoom:1;

  3. 清除浮动有哪些方式?比较好的方式是哪一种?
    (Q1)(1)父级div定义height。
    (2)结尾处加空div标签clear:both。
    (3)父级div定义伪类:after和zoom。
    (4)父级div定义overflow:hidden。
    (5)父级div定义overflow:auto。
    (6)父级div也浮动,需要定义宽度。
    (7)父级div定义display:table。
    (8)结尾处加br标签clear:both。

(Q2) 比较好的是第3种方式,好多网站都这么用。

  1. box-sizing常用的属性有哪些?分别有什么作用?

(Q1)box-sizing: content-box|border-box|inherit;
(Q2)content-box:宽度和高度分别应用到元素的内容框。在宽度和高度之外绘制元素的内边距和边框(元素默认效果)。border-box:元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。

  1. Doctype作用?标准模式与兼容模式各有什么区别?
    (Q1) 告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。
    (Q2) 标准模式的排版和JS运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。

  2. HTML5 为什么只需要写 ?
    HTML5不基于 SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行)。而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。

  3. 页面导入样式时,使用link和@import有什么区别?
    (1)link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS;
    (2)页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
    (3)import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题。

  4. 介绍一下你对浏览器内核的理解?主要分成两部分:
    渲染引擎(layout engineer或Rendering Engine)和JS引擎。
    渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。
    JS引擎则:解析和执行javascript来实现网页的动态效果。最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。(web前端学习交流群:328058344 禁止闲聊,非喜勿进!)

  5. html5有哪些新特性?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
    (Q1) HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。
    (1)绘画 canvas;
    (2)用于媒介回放的 video 和 audio 元素;
    (3)本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;
    (4)sessionStorage 的数据在浏览器关闭后自动删除;
    (5)语意化更好的内容元素,比如 article、footer、header、nav、section;
    (6)表单控件,calendar、date、time、email、url、search;
    (7)新的技术webworker, websocket, Geolocation;
    (Q2)IE8/IE7/IE6支持通过document.createElement方法产生的标签,可以利用这一特性让这些浏览器支持HTML5新标签,浏览器支持新标签后,还需要添加标签默认的样式。当然也可以直接使用成熟的框架、比如html5shim,

  6. 简述一下你对HTML语义化的理解?用正确的标签做正确的事情。html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;即使在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的;搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO;使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。

JavaScript

  1. 介绍js的基本数据类型

Undefined、Null、Boolean、Number、String

  1. js有哪些内置对象?

数据封装类对象:Object、Array、Boolean、Number 和 String
其他对象:Function、Arguments、Math、Date、RegExp、Error

  1. this对象的理解
    this总是指向函数的直接调用者(而非间接调用者);
    如果有new关键字,this指向new出来的那个对象;
    在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window。

  2. eval是做什么的?
    它的功能是把对应的字符串解析成JS代码并运行;

应该避免使用eval,不安全,非常耗性能(2次,一次解析成js语句,一次执行)。
由JSON字符串转换为JSON对象的时候可以用eval,var obj =eval(‘(‘+ str +’)’)。

  1. DOM怎样添加、移除、移动、复制、创建和查找节点
    // 创建新节点createDocumentFragment() //创建一个DOM片段createElement() //创建一个具体的元素createTextNode() //创建一个文本节点
    // 添加、移除、替换、插入appendChild()removeChild()replaceChild()insertBefore() //在已有的子节点前插入一个新的子节点
    // 查找
    getElementsByTagName() //通过标签名称
    getElementsByName() //通过元素的Name属性的值(IE容错能力较强,会得到一个数组,其中包括id等于name值的)
    getElementById() //通过元素Id,唯一性

  2. null和undefined的区别?null是一个表示”无”的对象,转为数值时为0;undefined是一个表示”无”的原始值,转为数值时为NaN。

    undefined:
    (1)变量被声明了,但没有赋值时,就等于undefined。
    (2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
    (3)对象没有赋值的属性,该属性的值为undefined。
    (4)函数没有返回值时,默认返回undefined。

null:
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。

  1. new操作符具体干了什么呢?(1)创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。
    (2)属性和方法被加入到 this 引用的对象中。
    (3)新创建的对象由 this 所引用,并且最后隐式的返回 this 。
    (web前端学习交流群:328058344 禁止闲聊,非喜勿进!)

  2. JSON 的了解?
    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于JavaScript的一个子集。数据格式简单, 易于读写, 占用带宽小。
    格式:采用键值对,例如:{‘age’:’12’, ‘name’:’back’}

  3. call() 和 apply() 的区别和作用?apply()函数有两个参数:
    第一个参数是上下文,
    第二个参数是参数组成的数组。
    如果上下文是null,则使用全局对象代替。
    如:function.apply(this,[1,2,3]);
    call()的第一个参数是上下文,后续是实例传入的参数序列。
    如:function.call(this,1,2,3);

  4. 如何获取UA?function whatBrowser() { document.Browser.Name.value=navigator.appName; document.Browser.Version.value=navigator.appVersion; document.Browser.Code.value=navigator.appCodeName; document.Browser.Agent.value=navigator.userAgent; } 

其他

  1. HTTP状态码知道哪些?
    100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
    200 OK 正常返回信息
    201 Created 请求成功并且服务器创建了新的资源
    202 Accepted 服务器已接受请求,但尚未处理
    301 Moved Permanently 请求的网页已永久移动到新位置。
    302 Found 临时性重定向。
    303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。304 Not Modified 自从上次请求后,请求的网页未修改过。
    400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
    401 Unauthorized 请求未授权。
    403 Forbidden 禁止访问。
    404 Not Found 找不到如何与 URI 相匹配的资源。
    500 Internal Server Error 最常见的服务器端错误。
    503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。
  2. 你有哪些性能优化的方法?
    (1) 减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。
    (2) 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数
    (3) 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。
    (4) 当需要设置的样式很多时设置className而不是直接操作style。
    (5) 少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。
    (6) 避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。
    (7) 图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳。

  3. 什么叫优雅降级和渐进增强?
    优雅降级:Web站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工作。由于IE独特的盒模型布局问题,针对不同版本的IE的hack实践过优雅降级了,为那些无法支持功能的浏览器增加候选方案,使之在旧式浏览器上以某种形式降级体验却不至于完全失效。渐进增强:从被所有浏览器支持的基本功能开始,逐步地添加那些只有新式浏览器才支持的功能,向页面增加无害于基础浏览器的额外样式和功能的。当浏览器支持时,它们会自动地呈现出来并发挥作用。

  4. 哪些常见操作会造成内存泄漏?
    内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
    垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。
    setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。
    闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)。

  5. 线程与进程的区别
    一个程序至少有一个进程,一个进程至少有一个线程。
    线程的划分尺度小于进程,使得多线程程序的并发性高。
    另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 
    线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 
    从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

新闻来源:http://geek.csdn.net

原文地址:http://geek.csdn.net/news/detail/242354

给Java新手的一些建议——Java知识点归纳(Java基础部分)

写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java。
  这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE相关的、和Java中各个框架相关的内容。
  经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。

1. JVM相关(包括了各个版本的特性)

  对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资深开发者来说,不会JVM几乎是不可接受的。
  JVM作为java运行的基础,很难相信对于JVM一点都不了解的人可以把java语言吃得很透。我在面试有超过3年Java经验的开发者的时候, JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证java开发能力的高低。
  在JVM这个大类中,我认为需要掌握的知识有:
JVM内存模型和结构
GC原理,性能调优
调优:Thread Dump, 分析内存结构
class 二进制字节码结构, class loader 体系 , class加载过程 , 实例创建过程
方法执行过程
Java各个大版本更新提供的新特性(需要简单了解)

2. Java的运行(基础必备)

  这条可能出看很简单,java程序的运行谁不会呢?不过很多时候, 我们只是单纯通过IDE去执行java程序,底层IDE又是如何执行java程序呢?很多人并不了解。
  这个知识点是最最基本的java开发者需要掌握的,初学java,第一个肯定是教你如何在命令行中执行java程序,但是很多人一旦把java学完了,IDE用上了,就把这个都忘了。为什么强调要知道这个呢,知道了java最纯粹的启动方式之后,你才能在启动出问题的时候,去分析当时启动的目录多少,执行命名如何,参数如何,是否有缺失等。 这样有利于你真正开发中去解决那些奇奇怪怪的可能和环境相关的问题。
  在这里需要掌握的知识有:
javac 编译java文件为 class 文件
java 命令的使用, 带package的java类如何在命令行中启动
java程序涉及到的各个路径(classpath, java。library。path, java运行的主目录等)

3. 数据类型

  这条没有什么好多说的,无非就是Java中的基本类型和对象类型的掌握。可以再了解一些JDK如何自动转换方面的知识,包括装箱拆箱等,还要注意避免装箱之后的类型相等的判断
  主要知识点:
基本类型: int, long, float, double, boolean , 。。。
对应的对象类型: Integer 等类型到基本类型的转换, 装箱和拆箱
Object类型: equals, hashcode
String 类型的特点

4. 对象和实例,对象的创建

  在这方面,开发者需要了解class和instance的概念以及之间的差别, 这是java面向对象特性的一个基础。主要知识点有:
Class和 Instance 的概念
Instance 创建的过程:
  1。 无继承:分配内存空间, 初始化变量, 调用构造函数
  2。 有继承:处理静态动作, 分配内存空间, 变量定义为初始值 , 从基类->子类, 处理定义处的初始化, 执行构造方法
  需要注意的点:
    静态属性等从基类->子类进行初始化
    默认无参构造方法相关的特性  

5. 访问控制

  这也是java封装特性的一个基础,需要掌握的有:
public protected default private 对于class, method, field 的修饰作用

6. 流程控制

  Java 流程控制的基础, 虽然有些语法不一定很常用,但是都需要了解,并且在合适的地方使用它们。
需要掌握的有:
if, switch, loop, for, while 等流程控制的语法

7. 面向对象编程的概念

  这是一个java的核心概念,对于任何java开发者都需要熟练掌握。Java中很多特性或者说知识点都是和java面向对象编程概念相关的。在我的理解,一个好的开发者不仅仅需要了解这些特性(知识点)本身,也更需要知道这些对象在java的面向对象编程概念中是如何体现出来的,这样更有利于开发者掌握java这门开发语言,以及其他面向对象编程的语言。在这里只是简单罗列了一下,主要的知识点包括有:
面向对象三大特性:封装,继承,多态; 各自的定义概念,有哪些特性体现出来,各自的使用场景
静态多分派,动态单分派的概念
重载的概念和使用
继承:接口多实现,基类单继承
抽象,抽象类,接口
多态:方法覆盖的概念和使用
接口回调

8. Static

  静态属性在java日常开发中也是经常使用,需要了解和 static 关键字相关的用法,还有和其他关键字的配合使用, 如是否可以和 abstract, final 等关键字联合使用。
主要需要掌握的有:
静态属性的定义,使用,以及类加载时如何初始化
静态方法的定义和使用
静态类的定义和使用
静态代码块的定义和初始化时机

9. 基础知识点

  这里主要罗列一些散落的,没有系统归类的一些java知识点。在日常的开发中用到也不少。 这块内容其实还有很多,目前只是暂时归纳了这几个在这里:
  包括有:
equals , hashcode , string/stringbuffer ,final , finally , finalize

10.集合框架

  这个是一个需要多加掌握的部分,做java开发,可以说没有不用到集合框架的,这很重要。但是这里的知识点并不难,但是对于集合最好要了解内部的实现方式,因为这样有助于你在各个不同的场景选择适合的框架来解决问题,比如有1W个元素的集合,经常要进行contains判断操作,知道了集合的特性或者内部实现,就很容易做出正确的选择。
  这里包括了如下内容(并发相关不包含在内):
集合框架的体系: 基础Collection ,Map
具体集合实现的内容, List ,Set ,Map 具体的实现,内部结构, 特殊的方法, 适用场景等
集合相关的工具类 Collections 等的用法

11.异常框架

  异常在java的开发中可能没有那么被重视。一般遇到异常,直接上抛,或者随便catch一下处理之后对于程序整体运行也没有什么大的影响。不过在企业级设计开发中, 异常的设计与处理的好坏,往往就关系着这个系统整体的健壮性。一个好的系统的异常对于开发者来说,处理应该统一,避免各处散落很多异常处理逻辑;对于系统来说,异常应该是可控的,并且是易于运维的,某些异常出现后,应该有应对的方法,知道如何运维处理,所以虽然异常框架很简单,但是对于整个企业级应用开发来说,异常处理是很重要的,处理好异常就需要了解Java中的异常体系。
  这部分需要掌握的知识点不多,主要就是:
异常的体系:
Throwable
Exception
RuntimeException
Error
RuntimeException 和 一般 Exception 的区别, 具体处理方法等
Java学习交流QQ群:589809992 我们一起学Java!

12. Java IO

  IO 在java中不仅仅是文件读写那么简单,也包括了 socket 网络的读写等等一切的输入输出操作。比如说 标准HTTP请求中Post的内容的读取也是一个输出的过程,等等…
  对于IO,Java不仅提供了基本Input、Output相关的api,也提供了一些简化操作的Reader、Writer等api,在某些开发(涉及大量IO操作的项目)中也很重要,一般日常的开发中也会涉及(日志,临时文件的读写等)。
  在这中的知识点主要有:
基本IO的体系: 包括有InputStream , OutputStream, Reader/Writer, 文件读取,各种流读取等
NIO 的概念, 具体使用方式和使用场景

13.多线程并发

  多线程是Java中普遍认为比较难的一块。多线程用好了可以有效提高cpu使用率, 提升整体系统效率, 特别是在有大量IO操作阻塞的情况下;但是它也是一柄双刃剑, 如果用不好,系统非但提升不大,或者没有提升,而且还会带来多线程之间的调试时等问题。
  在多线程中内容有很多,只是简单说明一下Java中初步使用多线程需要掌握的知识点,以后有机会单独再详细介绍一些高级特性的使用场景。
多线程的实现和启动
callable 与 runable 区别
syncrhoized ,reentrantLock 各自特点和比对
线程池
future 异步方式获取执行结果
concurrent 包
lock
..

14.网络

  Java中也是提供了可以直接操作 TCP协议、UDP协议的API。在需要强调网络性能的情况下,可以直接使用TCP/UDP 进行通讯。在查看Tomcat等的源码中,就可以看到这些相关API的使用情况。不过一般也比较少会直接使用TCP,会使用诸如MINA、Netty这样的框架来进行处理,因为这个方面的开发涉及不多,所以就不再详细罗列了。

15.时间日期处理

  几乎对于每个应用来说,时间日期的处理也是绕不过去的,但是JDK8 之前的时间相关API用法并不友好。在那个时代,可以选择Joda等时间框架。到了JDK8 发布之后,全新的时间API基本融合了其他框架的优点,已经可以很好的直接使用了。
  对于Java开发者来说,需要熟练地使用API来对时间和日期做相关的处理。
  具体知识点不再罗列,会在以后再写个专门的文章来总结一下JDK8中时间日期API的用法。

16.XML解析/ JSON解析

  其实这两块内容都不是J2SE里面的内容,但是在日常开发中,和其他程序交互,和配置文件交互,越来越离不开这两种格式的解析。
  不过对于一个开发者来说,能够了解一些XML/JSON具体解析的原理和方法,有助于你在各个具体的场景中更好的选择合适你的方式来使得你的程序更有效率和更加健壮。
  XML: 需要了解 DOM解析和 SAX解析的基本原理和各自的适用场景
  JSON: 需要了解一些常用JSON框架的用法, 如 Jackson, FastJson, Gson 等。。

17.Maven的使用

  Maven也不是Java里面的内容,但是maven是革命性的,给java开发带来了巨大的便利。从依赖的引入和管理,开发流程的更新和发布产出,乃至版本的更新,使用maven可以大大简化开发过程中的复杂度,从而节省大量时间。可以说,maven已经成为java开发者的标配了。所以我把maven也作为一个java开发者对于基础必备的知识点。以后会再放上一些我的一些对于maven使用的经验和技巧等,这里就不再细说了。

18.泛型

  这是JDK5开始引入的新概念,其实是个语法糖,在编写java代码时会有些许便利, 一般的应用或者是业务的开发,只需要简单使用,不一定会用到定义泛型这样的操作, 但是开发一些基础公共组件会使用到,可以在需要的时候再细看这个部分,一般情况下只要会简单使用即可。

19.标注

  也是jdk5 之后引入的。spring是个优秀的框架,最开始就以xml作为标准的配置文件。不过到了Spring3 之后,尤其是 spring-boot 兴起之后,越来越推崇使用标注来简化xml配置文件了,对于开发者来说,可以节省不少xml配置的时间。但是劣势是在于标注散落在各个类中,不像xml,可以对所有配置有个全局性的理解和管理,所以还没有办法说完全就取代所有的xml。对于一般开发者,会使用标注即可,一些公共组建的开发者可能会需要了解标注的定义和实现,可以在具体需要的时候再细看。

20.RMI

  RemoteMethodInvocation ,Java语言特有的远程调用接口,使用还是比较简单方便。不过需要跨语言的情况下,就需要使用 webservice 等其他方式来支持。一般来说,程序都不需要使用RMI,不过可以在特定的情况下使用,我就在一个项目中,使用RMI来进行程序远程启动停止的控制。

21.JNI

  Java Native Interface,可以允许Java中调用本地接口方法,一般用于C/C++代码的调用。需要注意的是在java中加载so/dll文件的路径问题,本身调用接口并不复杂,但是经常在是否加载了所需的本地接口库中花费较多时间。

  以上也只是简单介绍了下我对于这些java基本知识点和技术点的一些看法和介绍, 这些内容都源自于我这些年来使用java的一些总结, 希望给刚刚接触Java, 或者打算从Java开发的人一些经验, 希望能够更有效率地学习和使用java, 避免走了弯路浪费了宝贵的时间。这当中还有些内容不够完善的地方,会通过以后的文章再添加上。由于个人能力有限,当然其中也会有些错误和疏漏,欢迎指正,一起讨论,共同来把这篇文章再完善下,希望它可以真正帮助到有需要的人。

新闻来源:http://geek.csdn.net

原文地址:http://geek.csdn.net/news/detail/242358

尼康无锡工厂关闭:美的等多家公司赶赴现场招工

日本相机巨头尼康无锡工厂关闭后的员工遣散工作正在推进。10月30日,尼康公司宣布暂停位于无锡的子公司尼康光学仪器(中国)有限公司(以下简称“尼康无锡公司”)的经营。当天,尼康就开启了2268名员工补偿和遣散工作。

10月31日,在尼康无锡公司现场,陆续有员工赶来与公司办理解除劳务关系和补偿相关的手续。受访员工普遍表示,对于公司遣散方案较为满意。据了解,遣散工作将于11月1日截止。

澎湃新闻记者从多位无锡公司员工处了解到,该公司给予了“n+5”个月工资的经济补偿方案(n为工作年限),同时对于怀孕及哺乳期的妇女、残疾人士有额外补偿。

还有前来办理手续的员工称,10月31日到11月1日,主要是面向派遣性质的工人办理手续,正式合同员工的补偿手续已经在10月30日完成。该员工还指出,由于用工性质的不同,正式员工的获赔金额整体高于派遣员工。

在现场,一位工人家属向记者透露,自己的亲戚在无锡工厂工作了十余年,在此次遣散中获得一定数额的补偿,觉得工厂这次“比较仁义”。

尼康的相关工作人员向澎湃新闻记者表示,公司给出的补偿方案会比法律规定的标准更加优厚,“我们考虑到这个事件给员工造成的影响,我们事先做了很详细的准备,工作流程都全部按照中国的法律法规。事先我们的整个方案,都和当地的政府进行商讨并获得了认可。”

澎湃新闻了解到,此次受到遣散的员工中很大比例是从事相机生产的一线工人。就在员工们签字的现场,已经有多家无锡当地或周边的工厂闻讯赶来,向办完手续的工人们手中发放招工简报。澎湃新闻记者注意到,前来招人的企业包括无锡润达光伏有限公司、美的集团、海澜集团旗下的服装工厂、东吴人寿等,招聘岗位涉及车位工、裁剪工、保险销售、机器操作工等。

据了解,尼康无锡公司2002年6月成立,主要从事数码相机,数码相机用组件的制造。

尼康公司在10月30日的声明中表示,“由于智能手机的崛起,小型数码相机市场正在急速缩小,无锡公司的开工率也显著下降,持续运营变得非常困难。基于此,本司在2016年11月发表的‘结构改革计划’中宣布了针对全球规模的生产体制优化措施,经过反复研究和慎重讨论,最终决定停止尼康光学仪器(中国)有限公司的经营活动。”

据尼康相关人士介绍,目前尼康在中国还有5个工厂,涉及医疗健康、工业用光学器材等。这些项目会继续运营,不会受到无锡公司关闭的影响。

不过,尼康的投资重点会转向。

据尼康方面称,该公司将在映像事业部的结构改革措施中,加大在高附加价值产品上的投入力度。中国是世界最重要的市场之一的地位不会改变。

新闻来源:http://www.cnbeta.com

原文地址:http://www.cnbeta.com/articles/tech/666017.htm

联发科第三季度净利润11亿元:同比减少35.4%

10月31日消息,从事半导体设计和开发的台湾企业联发科技今日发布了2017年7~9月合并财报。报告显示,联发科Q3营收为新台币636.51亿元(约合人民币140亿元),同比减少18.8%,净利润同比减少 35.4%,减至新台币50.61亿元(约合人民币11亿元)。

联发科财报数据

联发科第三季度详细业绩如下:

合并营业收入

本公司2017年9月30日结算之第3季营业收入淨额为新台币636亿5仟1佰万 元,较前季增加9.6%,较去年同期减少18.8%。本季营收较前期增加,主 要因部分消费性电子产品季节性需求提升;本季营收较去年同期减少,主 要因智慧型手机出货量下降。

合并营业毛利与毛利率

本季营业毛利为新台币231亿8仟2佰万元,较前季增加14%,较去年同期减 少16.1%。毛利率为36.4%,较前季增加1.4个百分点,较去年同期增加1.2 个百分点。毛利率较前期与去年同期增加,主要因有利的产品组合。

合并营业费用

本季营业费用为新台币182亿2仟3佰万元(佔营业收入28.6%),前一季营业 费用为新台币179亿7仟2佰万元(佔营业收入30.9%),去年同期则为新台币 199亿9仟5佰万元(佔营业收入25.5%)。本季营业费用较前季增加,主要因 研发费用增加;营业费用较去年同期减少,主要是本季与销量相关费用减 少。

本季营业费用主要项目包括:

研究发展费用新台币141亿9仟9佰万元(佔营业收入22.3%),高于前一季之 新台币136亿2仟4佰万元,低于去年同期之新台币145亿9仟2佰万元。

推销费用新台币23亿3仟2佰万元(佔营业收入3.7%),低于前一季之新台币 27亿1仟5佰万元,及去年同期之新台币35亿3仟2佰万元。

管理费用新台币16亿9仟3佰万元(佔营业收入2.7%),略高于前一季之新台 币16亿3仟2佰万元,低于去年同期之新台币18亿7仟1佰万元。

合并营业利益与营业利益率

本季营业利益为新台币49亿5仟9佰万元,较前一季增加110.3%,但较去年 同期减少34.9%。本季营业利益率为7.8%,高于前一季之4.1%,但低于去 年同期之9.7%。

合并营业外收支与所得税

本季营业外淨利益为新台币6亿6仟2佰万元,佔营业收入1%,主要来自利 息收入及股利收入。本季所得税费用为新台币5亿6仟万元。

合并本期净利、合并本期净利率与每股盈馀

本季本期净利为新台币50亿6仟1佰万元,较前一季增加129%,但较去年同 期减少35.4%。本季本期净利率为8%,高于前一季之3.8%,但低于去年同 期之10%。每股盈馀为新台币3.26元,前一季每股盈馀为新台币1.51元, 去年同期则为新台币4.98元。

合并现金及金融资产-流动

本季现金及金融资产-流动总计为新台币1,488亿5仟8佰万元,佔总资产的 37.9%,前一季现金及金融资产-流动为新台币1,549亿4仟5佰万元,去年 同期则为新台币1,556亿8仟4佰万元。金融资产-流动包含基金、债券及衍 生性商品等相关金融商品投资。

合并应收帐款

本季应收帐款淨额共计新台币217亿7仟1佰万元,平均应收帐款週转天数 30日(以本季平均应收帐款淨额及当季销货收入年化为计算基础),低于前 季之31日,但高于去年同期之26日。

合并存货

本季存货淨额为新台币361亿4仟6佰万元。本季存货週转天数为85日 (以 本季平均存货淨额及当季销货成本年化为计算基础),低于前季之93日, 但高于去年同期之63日。

合并营业活动之现金流量

本季营业活动之淨现金流入为新台币69亿4仟8佰万元,前一季淨现金流出 为新台币11亿5仟6佰万元,去年同期淨现金流入为新台币31亿7仟万元。

联发科Q2营收为新台币580.79亿元,同比减少19.9%,净利润同比下降 66.5%,减至新台币22.1亿元(约合人民币4.92亿元)。

日媒曾评价称,在低价位半导体市场,中国展讯通信效仿联发科技的业务 模式,正在迅速追赶。另一方面,联发科技与负责代工的台积电共同开发 的高性能产品正遭到高通的价格攻势。呈现出遭受中国新兴企业和美国尖 端企业夹击的局面。

新闻来源:http://it.ithome.com

原文地址:https://www.ithome.com/html/it/332451.htm

涨知识:关于《战地1》中费德洛夫步枪的故事

虽然在今天,关于谁是第一种实用突击步枪的说法一直存在争议,但可以确定的是,一提到其中的候选人,历史学家们一定不会忘记提到费德洛夫自动步枪。在《战地1》的DLC“以沙皇之名”中,作为医护兵的装备登场,尽管这种武器的外观并不称得上惊艳,但它在历史上却有着里程碑式的意义,在它身上,工程师们第一次把机枪的火力、步枪的精度、与冲锋枪的便携结合在了一起。

《战地1》DLC“以沙皇之名”的截图,其中左侧士兵手持的就是一支费德洛夫步枪,而右侧士兵手持的是德制的帕拉贝吕姆MG14/17型机枪

《战地1:以沙皇之名》中费德洛夫步枪的介绍页面

如何用自动化技术杀人?

费德洛夫自动步枪的历史可以追溯到20世纪初,当时,在设计上,俄军的自动武器几乎全由外国包揽:比如说,陆军装备的“马克沁”机枪和海军的“加特林”机枪,便都出自美国武器工程师之手。这一点也刺激了该国的年轻技术人员,为摆脱依赖,从20世纪开始,他们也在开发一种真正国产化的自动武器。

同时,在20世纪开始后,随着军事技术进步,机枪的性能出现了巨大改进。这一点体现在重量上——它们已从最初的几百公斤下降到了几十公斤,甚至初步具备了单兵携带的可能性。

一战前,一支装备M1905型马克沁机枪的部队在训练场——当时,该国的武器装备,都采用的是外国工程师的设计,其中马克沁机枪的设计者,就是美国人海勒姆·马克西姆

“在所有关于轻武器和战争的事项中,最为重要的无疑是机枪。”在一战爆发前,一名叫弗拉基米尔·费德洛夫的工程师在论文中写道:“但一个问题在于,其便携性无法令人满意,正是因此,我开始考虑设计一种新武器,它应该是普通步枪和机枪之间的‘中间形态’。这种武器的出现,也将真正赋予传统步兵分队压倒性的火力。”

事实上,在费德洛夫撰写这篇论文时,已经有一些设计师在进行尝试,其中最著名的是意大利人阿布迪尔·里维利-迪贝尔蒙(Abiel Bethel Revelli di Beaumont)和德国人胡戈·施迈瑟尔(Hugo Schmeisser),他们分别在1915年和1917年拿出了自己的产品。

作为历史上最早的一批冲锋枪,这些武器也出现在了《战地1》中,比如说在单人战役《萨伏伊万岁!》中,主角在遭遇空袭后,会从飞机残骸中拿出一把手提式的双管冲锋枪——它就是维拉尔-佩罗萨冲锋枪(Villar Perosa),一种一战初期推出的产品。同时,在多人对战和单人模式中,你还常会捡到施迈瑟尔设计的博格曼MP18,这种武器有着标志性的蜗牛型弹鼓,曾在战争末期大量投入西线战役。

在《战地1》中登场的维拉尔-佩罗萨冲锋枪(上)和MP18冲锋枪(下)

作为早期试验品,上述武器都有一定的缺陷。比如说维拉尔-佩罗萨冲锋枪,虽然其重量被控制在了6.5千克,但只配备了两个25发的弹夹,考虑到该枪每分钟3000发的射速,这意味着,如果不小心,使用者可能2秒内打光所有子弹;相较之下,MP18虽然更为成功,但前线部队却认为它相对笨重(重量超过了4千克,要高于当时大多数的制式步枪),另外,由于对人机工程学欠缺考虑,它在握持上也比较不便。

为减少开火时的后座力,上述冲锋枪使用的都是手枪子弹,但它们的威力和射程都不甚理想,尤其是在超过100米之后,子弹的杀伤力和准确度都会严重减弱——换言之,与野战相比,这些武器更适合在近战中使用。

作为另一种解决方案,工程师们也在研制能连续开火的半自动/自动步枪,其中许多在一战初期、甚至是战前就完成了样品——它们在《战地1》中有着很高的出镜率。其中有代表性的是德国的毛瑟1906和1916型自动装填步枪(Mauser Selbstlader M1906 & M1916),法国的RSC 1917型半自动步枪和绍沙轻机枪(Chauchat,其正式名称是CSRG 1915型机械式步枪,Machine Rifle Model 1915 CSRG),还有墨西哥人设计的蒙德拉贡半自动步枪——虽然它们同样不甚成熟,但这些雨后春笋般出现的设计,无疑向各国昭示了自动武器的前景。

德国的毛瑟M1916自动步枪和法国的RSC 1917型半自动步枪,它们也都出现在了《战地1》及其附带的DLC中

年轻的先驱

第一次世界大战前夕,沙皇俄国的设计师们也在进行探索,而且他们的想法更进一步,试图将冲锋枪的射速以及自动步枪的威力结合起来。在众多先驱中,就包括了前文提到的弗拉基米尔·费德洛夫——当时俄国最有才华的武器设计师。

1874年,费德洛夫出生于圣彼得堡的一个工程师家庭,凭借着自身的天赋、努力,和父亲的一点点影响,他在1900年加入了当时俄国最大的军事研究机构——炮兵委员会。尽管最初,费德洛夫接手的只是一些历史研究工作,但其间,他也广泛地阅读各种书籍,并对自动武器的工作原理拥有了一些看法,而在1904-1905年之间爆发的日俄战争,更是让他坚定了一个信念:未来战场的主宰将属于自动武器。

弗拉基米尔·费德洛夫,费德洛夫步枪的设计者

但如前所述,自动武器的普及存在一个瓶颈:这就是过于笨重,而如何将其小型化,也成了工程师们试图攻克的难题。为此,费德洛夫将注意力放在了提升步枪的火力上,在向上级提交了设想之后,他便被调往研究岗位,并获准进行一系列试验。

最初,费德洛夫将注意力集中在了莫辛纳甘步枪的改装上——这种栓动式步枪也是俄军的制式武器。费德洛夫的设想非常单纯,如果能对其进行大批量改装,那么,俄军便可以在短时间内提升战斗力。

《战地1》DLC“以沙皇之名”中“莫辛纳甘”步枪的壁纸,费德洛夫最初试图在其基础上改装一款半自动步枪。这种步枪是两次世界大战中俄罗斯/苏联军队的制式武器,同时广泛出现在《使命召唤》《红色管弦乐》等战争历史题材的FPS中

1906年,费德洛夫在一把“莫辛纳甘”的基础上,开发出了一款试验型的半自动步枪,但试验却惨遭失败——整个枪械太笨重,而且枪机经常出现问题。最终,费德洛夫不得不推翻整个设计,并重启一个新项目。为排除隐患,整个项目进行得非常小心和缓慢。

在此期间,许多才华横溢的年轻工程师也加入了团队,或者与其展开了合作和竞争,在这些工程师中,就包括了瓦西里·杰格佳廖夫、格里高利·什帕金、谢尔盖·西蒙诺夫和费多尔·托卡列夫等人,他们后来都成了苏军步兵武器设计领域的支柱。

费德洛夫在回忆录中写道:“在研制新步枪期间,我们遭遇了许多意想不到的困难,比如说,国内的生产工艺便不如我们想象的那样完备,这导致了新弹药供应不足、卡壳、走火等等一系列问题。但作为‘新人’,我们也得到了极大的锻炼,一次次的失败让我们认识到了许多曾被忽视的问题。在不知疲倦地工作了四年、同时也是小心斟酌了四年后,在1911年春天,我们终于完成了一个大体满意的样品。”

初步测试

按照既定程序,该样品立刻被送往圣彼得堡接受测试:最初,人们用它在正常条件下发射了3225发子弹,随后,其缝隙内又被塞入毛发,并向存放它的盒子里吹入大量灰尘和砂石,以模拟恶劣的战场环境。但即使如此,它依旧能够正常工作——这标志着费德洛夫的设计通过了初步检验。

为此,军方向圣彼得堡附近的谢斯特罗列茨克兵工厂(Sestroretsk)订购了10把原型枪,但由于该厂将大部分精力投入到了生产制式步枪上,原型枪的完成耗费了将近一年。随着1912年夏天,10把新枪全部交付,费德洛夫的设计也开始接受进一步的检验。

1912年,费德洛夫研制的半自动步枪样品,其使用的是俄军制式的7.62毫米子弹

其中一个测试项目,是将四名熟练射手分成两组,其中两人使用费德洛夫设计的步枪,另外两人使用俄军列装的“莫辛纳甘”式步枪。在各自打完60发子弹之后,两个小组将交换武器,再试射60发,最后记下每种步枪的射速平均值。测试中,新枪的射速达到了每分钟18发,而“莫辛纳甘”的射速只相当于其55%。

随后的项目中,测试委员从10把原型枪中随机选取了4把,并各发射了10000发子弹。对大多数枪械来说,在连续开火之后,枪管会发热、变形,精度也会有所降低,而这项测试考察的,便是它们的耐用程度和可靠性。虽然采用了大量新设计,但费德洛夫的步枪总体表现良好。按照设计者的回忆:“精度的降低很小,散布范围只较最初高了大约百分之几。”

接下来的试验更加苛刻,试验人员会设法让枪支生锈:其中一把枪被放在湿海绵堆里,还有一些步枪被扔进了池塘,直到几天之后才被取出来。但实验结束后,这些步枪都工作正常——其表面除了一些细小的斑点之外,几乎称得上完好如初。

俄军进行武器测试的绘画,费德洛夫的设计当时也接受了类似的检验

虽然在普通人看来,上述测试有些苛刻,但这也是测试枪械的标准流程。在20世纪,许多美妙的设计都是在上述环节被判处了“死刑”——因为它们可能在严酷的战场环境中失灵,进而让军队输掉战争,当然,这种审慎也导致了一种副作用,与新颖的设计相比,军方更偏爱保守但可靠的武器。

正是这种原因,让费德洛夫的设计并未迅速投产——1912年底,上级只要求生产150把测试型号,当1913年、工厂正慢条斯理地生产这150把枪时,费德洛夫也开发相关的衍生型号,其中一种是自动步枪,即后来“费德洛夫”自动步枪的雏形。此外,他还在设计一种拥有“改良弹道”的6.5毫米子弹,但随着一战爆发,所有后续工作都被强行中断。

费德洛夫设计的一种6.5毫米子弹方案,以及其在战前研制的、使用6.5毫米子弹的、半自动步枪样枪

费德洛夫在回忆录中写道:

“我的希望,我的努力,都在瞬间灰飞烟灭了。我曾不止一次安慰自己:为制造原型枪,工厂将抽调工人和设计师,这将妨碍他们完成主要的任务——给前线生产尽可能多的武器,按照估计,战争会很快结束,届时所有中断的工作便会重新开始——但没有人想到,战争会持续四年之久……”

自动步枪恐惧症

事实上,对于工业落后的俄国来说,这种做法也是一种无奈之举。在战前,尽管俄军囤积了超过400万支步枪,但远远无法填补军队的巨大胃口。按照估计,在1915年1月1日,沙俄总共动员了大约500万名成年男性,但15%根本没有武器,另外,还有许多步枪年久失修,完全无法使用。

另一方面,俄军的损失也极为惊人:在1914年8月底的坦能堡战役中,其步枪就损失了25万支;子弹的消耗也同样庞大,1915年1月时,尽管推行了节约措施,前线每天消耗的步枪弹仍达到了45000发,而此时,其国内兵工厂的最高单日产量也只有13000发左右。

1914年底、在坦能堡战役中被打死的俄国士兵,由于准备不充分、指挥不当,俄军付出了惊人的损失

情急之下,俄军组织了特别代表团,试图从国外采购军火。另外,该代表团还肩负着一个使命——汇报国外武器的发展。访问法国、英国和墨西哥期间,代表团注意到了许多半自动步枪项目,但因为涉及机密,各国都不愿把样品提供给俄国人。

同时,关于德国自动步枪的传闻也甚嚣尘上,在1915年初,俄军总司令部收到了这样一则消息:

“情报表明,德国人已经制造了80把自动步枪,预计将投入使用。”

事实上,这种情报确实存在一定的事实根据,1914年,德军曾向毛瑟公司订购了500把1913型自动装填步枪(Mauser 1913 Selbstladegewehr),并把它们试验性地投入了战场。

文中提到的毛瑟1913型自动装填步枪——这实际是一种面向民用市场的高级运动步枪,产量不超过800支。因为威力、弹药供应等原因,该武器最终没有大规模列装部队,但它却引起了俄国当局的恐慌

然而,在传播过程中,这条消息遭到了蓄意夸大,比如1915年11月,驻瑞士的一名间谍发回的消息中竟宣称:

“德国人正在大规模生产自动步枪,仅第一批就有6500支。”

实际上,他将毛瑟1913步枪的产量夸大了至少13倍。另外,来自西线的一则消息,也加剧了俄军的恐慌:在1915年秋天,从一架战机的残骸上,法军找到了一支充当空战防卫武器的、毛瑟自动步枪。这在俄罗斯激起了轩然大波,上级要求费德洛夫重新启动之前的研究工作。

“史上第一把突击步枪”

当时,费德洛夫也在采购武器的代表团之中,这项任务只有他回国之后才能重新启动。在这个空档期,作为俄军军官射击学校的校长,以及许多武器项目的负责人,尼古拉·菲拉托夫中将也做了许多准备工作。

尼古拉·菲拉托夫中将,这是他后来在苏俄红军中任职时的照片。一战期间、作为军官射击学校校长,他曾领导和参与过许多武器项目的开发,其中就包括了本栏目曾介绍过的“普梯洛夫-加福德”装甲车

1915年夏天,他从谢斯特罗列茨克兵工厂调来了全部图纸,以及之前费德洛夫的助手——瓦西里·杰格佳廖夫。1916年1月13日,50套原型枪的成品也抵达了射击学校,在他们的帮助下,费德洛夫一回国,便立刻着手把它们改装成自动型号。

在原始设计中,费德洛夫采用的是“改良弹道”的6.5毫米子弹,但在战争中它们已经无法生产,为此,费德洛夫决定使用一种替代品——日本制造的6.5毫米有坂步枪弹。

有坂步枪弹在历史上也非常知名,它曾与日军的制式步枪——“三八式步枪”配套使用。这种弹药于19世纪末研发,弹壳内填充了2.07克无烟火药,并被一直使用到二战中。

6.5毫米有坂步枪弹,当时日军采用这种子弹的原因,是因为东方人体格较瘦弱,使用该子弹的步枪比较好操控,但在俄国,费德洛夫却发现了它们的另一种用途,即让其充当自动步枪的弹药

与其他种类的子弹相比,有坂步枪弹的一个特点是口径偏小,这让它们非常适合用于自动步枪:尽管杀伤力不及7.62和7.92毫米步枪弹,但它有着更小的后坐力,精度也相对优秀,这既确保了其在中远距离上的准确性,也方便了射手在连射时进行操纵。

对俄军来说,有坂步枪弹还有另一个好处——即容易获得。为填补前线的缺口,在1915-16年,俄国订购了至少60万把日式步枪,同时1000万发配套的子弹,它们由日本、英国等国的兵工厂生产。但唯一的问题是,有坂步枪弹的尺寸要比与原枪的6.5毫米子弹小,这也意味着,费德洛夫必须修改枪械的结构。

最终登场的费德洛夫自动步枪,它上面仍有许多老式步枪的设计痕迹

为此,他决定在枪膛内塞入一个特殊的适配器,这样,有坂步枪弹就可以严丝合缝地装入枪膛内,同时,为减轻武器的重量,也是为了换装子弹后的武器手感更加平衡(有坂步枪弹要比原始的6.5毫米子弹轻很多),他把原来80厘米的枪管截到了52厘米。

至此,费德洛夫自动步枪终于横空出世。第一眼看上去,它的外观无疑是简陋的,尽管如此,其内部结构却包含了很多新颖的技术,这一点尤其体现在枪机上——它的工作原理如下图所示。

费德洛夫步枪枪机的工作原理

在设计自动步枪时,工程师们最主要考虑的问题,是如何让枪机自动进行一连串工作:即击发、退壳和复位。在此前的步枪设计中,这些都需要人力才能完成——比如拉动枪栓(栓动式步枪)和连续扣动扳机(如半自动步枪)。但在突击步枪上,只要使用者选择了连射模式,那么,枪机应该自动完成全部工作。

为解决这个问题,费德洛夫采用了一种独特的设计:当击锤触发底火后,火药产生的化学能,一方面会让弹头破膛而出,也会把弹壳和枪机推向后方,随之一起运动的,还有枪机前方两侧、像两片哑铃一样的闭锁片(即原理图中的“Locking Blocks”),在一小段后座之后,闭锁片上的凸起会落入下方的卡槽中。

接着,枪机会继续后座,弹壳会被抛出,最后,吸收了能量的弹簧会推动枪机复位,并击发下一枚子弹——这也是“费德洛夫”步枪的击发流程。

费德洛夫步枪采用了25发弹夹,理论最高射速超过了300发/分,同时,设计者还在弹夹前方增加了一个握把,以方便使用者在连续射击时进行握持。

但同时,作为改装的产物,设计者也做出了一些妥协,最主要的就是将快慢机和保险分开,这给操作带来了不便——这是因为该枪最初是作为半自动步枪设计的,由于时间紧迫,设计者已不能修改其核心结构。另外,作为一种仓促上马的武器,“费德洛夫”自动步枪也有结构复杂的问题:该枪整体共有64个零件,其中包括10颗螺丝和11个弹簧。

被不完全拆解的费德洛夫自动步枪

1916年夏秋之交,第一批自动步枪已经改装完毕,并被交给了武器试验场,与其同时抵达的,还有一些配备了7.62毫米和6.5毫米子弹的半自动步枪。

在1916年、俄军炮兵委员会(Artkom)的一份报告中,曾对它们赞许有加:

“除了用在战机上之外,它们还很适合作为装甲车乘员、甚至是炮兵的防身武器——由于空间、承载量和编制等因素,这些部队是很难装备机枪的……另外,费德洛夫自动步枪还是一种极为理想的步兵武器。”

《战地1》中,第一人称瞄准视角下的费德洛夫步枪

从试验场到战场

在1916年夏季和秋季,在军官射击学校,俄军组建了所谓的“特别任务小队”,该小队装备了45支费德洛夫自动步枪和8把7.62毫米半自动步枪,同时还获得了“一切最先进的装备和装具”——它们包括光学瞄准镜、双筒望远镜、专为堑壕战配发的射击装置、便携式的步枪防盾,以及法制的“亚德里安(Adrian)”型钢盔。其中的光学瞄准镜是俄军于1914年12月订造的——当1916年夏天、首批20具完成后,便在第一时间被交给了“特别任务小队”。

费德洛夫步枪和亚德里安钢盔,由于经济落后,俄军并没有列装钢盔这种重要的防护装备,大部分士兵是在只戴一顶布制军帽的情况下被投入了前线▲

由于武器开发上的成就,费德洛夫已被晋升为少将,而“特别任务小队”也常被称为“费德洛夫自动步枪连”。随后,该连的规模被进一步扩大,并编入了不少装备毛瑟C96自动手枪的士兵和下级士官。

从许多角度看,该连其实不仅是新武器的测试小组,而更像是探索全新战法的平台。这一点也反映了当时俄军的愿望:他们已经意识到,由于训练不足、装备落后,其普通部队完全无法和德军抗衡,但同时,如果能把资源集中起来,组建一批采用先进战术和装备的部队,也许可以以少胜多,并挽回日渐不利的局面。

1916年,在圣彼得堡附近,“特别任务小队”部分官兵的合影

在高强度训练完成后,该连被编入了第48步兵师麾下的第189伊兹梅尔团,1916年下半年,该连被派往罗马尼亚前线,以挽救摇摇欲坠的战局。按照该师的一份报告,该连共拥有3名军官和138名士兵和士官,但对于该连在前线发挥的作用,相关记录却记载甚少——此时俄军已经一败涂地,甚至第189团的作战日志也在混乱中销毁。

这张照片摄于1917年春,展示了第189团一组士兵进行射击训练时的情景,其中远方的士兵手持的是一把费德洛夫设计的、使用7.92毫米子弹的半自动步枪,而近景处的士兵则拿着一个费德洛夫自动步枪的25发弹夹

相较之下,将费德洛夫步枪安装在战机上的试验则留下了更多记录。在当时,由于引擎功率所限,一些飞机并不适合搭载沉重的机枪,而费德洛夫的设计便成了一种替代品。早在1916年2月21日,海军总参谋部便要求获得10把费德洛夫步枪,并计划将其交付给海军航空部队,另外,还有一部分被分发给了陆军的航空兵。第10航空中队指挥官戈尔什科夫(Gorshkov)中校写道:

“这种武器得到了乘员的好评,它各方面都比法国的绍沙机枪更出色。”

另一位航空部队的指挥官图诺任斯基(Tunozhensky)则宣称:

“费德洛夫步枪是唯一适合安装在轻型飞机上的武器。”

俄国2016年,为纪念一战发行的、一战武器题材的邮票,其中这张的主题就是费德洛夫步枪,右上还能看到历史照片中,使用该步枪进行训练的士兵

虽然在费德洛夫步枪小批量装备部队时,沙皇政府已经危机四伏,但此时,不少指挥官和工程师们仍然相信,这种武器如果大规模投产,便可以挽救整个战局。为生产这种步枪,在俄国退出战争前,曾进行了大量的准备工作。早在1916年3月,费德洛夫便在考虑向私营企业订货,但结果却令人失望:这些企业不仅缺乏生产经验,而且工艺也不够精细,会给步枪带来质量问题。

此外,如果产量太小,私营工厂会觉得无利可图,因此对该项目极不请愿。比如谢苗诺夫工厂(Semenov,战前主要生产打字机和卷烟机,也是当时俄国唯一能生产精密机械的私营工厂)和特列季亚科夫商业集团(Tretyakov Group),他们都希望订单能以50000支起步——这已经超过了俄军的财政负担能力。

另一方面,国营的谢斯特罗列茨克兵工厂只能在16至18个月内开始生产,同时,其它步枪的产量也会受到严重影响。作为一种解决方案,俄军决定首先在谢斯特罗列茨克兵工厂,以半流水线方式生产组装15000支费德洛夫自动步枪,随后,这一任务将交给伊热夫斯克钢铁厂(生产枪管的毛坯件)和普梯洛夫工厂(后续的加工和组装)共同完成。但由于机器设备短缺,该计划从来没有实现。

谢斯特罗列茨克兵工厂的外景,沙俄曾考虑过在当地生产费德洛夫自动步枪,但无果而终

最终,俄军只能与外国企业合作,来完成这批枪械的生产。按照当时俄军与丹麦方面达成的协议,双方将在科夫罗夫(Kovrov)建立一座大型工厂,并在第一阶段为俄军提供10000把麦德森机枪和9000把费德洛夫自动步枪。

按照要求,新工厂将在13个月内完成生产准备,并生产约500支早期型号,随后,每个月的产量将达到1500支。尽管大部分机器都在1917年运达了,但此时俄国已经处在了革命的边缘。在一片混乱中,许多科研项目都戛然而止。

但出乎人们意料的是,费德洛夫却平安度过了十月革命。作为布尔什维克的支持者,以及国内为数不多的枪械专家,他和助手们不仅获得了优待,而且还被鼓励继续研究新式武器。

1918年1月中旬,即苏俄政权成立后的两个月,费德洛夫等人被派往科夫罗夫,并接管了整个工厂,当时,他们得到的命令是:让工厂恢复运转,并在可能的情况下,开启自动步枪的生产。但在他们到达时,发现这里到处是残垣断壁,工人们不是被派往前线,就是无所事事,大批没拆封的设备就堆放在空地上。在这种情况下,费德洛夫被迫独自肩负起厂长、技术总监、总经理和总工程师等许多职务。

1920年代初,费德洛夫与工厂全体技术人员的合影

直到1918年12月,科夫罗夫工厂才重新运转起来,按照上级的要求,工厂最初小规模生产了大约150把样品步枪,随后开始以更大的规模进行生产,其最终的产品可能达到了3000支。由于工厂恢复生产花费了太多时间,当第一批步枪交付部队时,苏俄内战已接近尾声,但它们仍然参加了一些零星的战斗。

其中一个战场是高加索,一些士兵使用费德洛夫步枪参加了进攻当地民族主义政权的战斗,而这些战斗的最终结果,是当地最终被纳入了红色政权的控制之下;而另一个战场是芬兰接壤的边境地区,1921-1922年期间,当地人发起了反抗苏维埃的暴动,由于这片地区森林茂密,因此为游击战提供了理想的战场。

1921-1922年冬,在边境地区与苏俄军队作战的芬兰武装人员,他们发动的游击战给苏俄方面带来了巨大麻烦,迫使后者投入大军展开清缴

最终,苏军被迫调集正规军展开清剿。在正面进攻的同时,他们还采用了一种新战术,这就是组织精干的滑雪分队,并前往暴动者的腹地进行袭扰。在鼎盛时期,滑雪分队的人数超过了200人——其指挥官是芬兰共产党员托伊沃·安提卡伊宁(Toivo Antikainen),他对当地的环境非常熟悉。

除了严格的丛林战训练之外,安提卡伊宁分队的另一个特别之处,在于装备的自动武器,其中就包括了费德洛夫自动步枪、麦德森机枪和法国的绍沙机枪,它们也为队员在遭遇战中提供了压倒性的火力。在一次战斗中,安提卡伊宁分队经过长途跋涉,在自动武器的掩护下,一举攻陷了敌军的主营地。在报告中,该分队认为费德洛夫步枪的作用非常显著,并要求上级为其配发“满足两场大规模战斗所需的弹药”。

但同时,该武器也暴露出了一些不尽人意的地方,比如说,一些士兵发现,在扣动一次扳机后,它有时会连续射出两发子弹。在战后,类似的问题也屡见不鲜,红军炮兵委员会在1928年2月的一份文件中提到:

“部队中的检验证明,费德洛夫步枪在实战应用中的杀伤力不足,如果枪管过热或被污染,那么它就不能正常发射。此外,在连续射击中。往往只有第一批枪弹能准确命中,然后就会出现整梭枪弹偏离目标的情况。”

1920年代末或1930年代,使用费德洛夫步枪进行训练的一名苏军士兵

导致上述问题的原因,部分是由于设计上的不成熟,而另一部分则与人们对自动武器的陌生有关——这导致了许多保养不善的情况出现。另外,即使现在的自动步枪,也主要以短点射为主,但在当时,士兵们更倾向于在短时间内将子弹打光,期间,子弹的散布也会变得“惨不忍睹”。

战后岁月

费德洛夫认为,解决问题的关键在于零件的标准化:在他的构想中,未来的步兵武器不仅可以自动发射,而且必须具有统一的结构——这一点也将给它们的整体面貌带来深远的影响。通过采用结构一致的零件,可以极大简化武器的生产和维修,另外,战士们也可以很快熟悉各种武器——比如说,如果一个人熟悉步枪的结构,那么,他在维修机枪时也会得心应手。

另外,费德洛夫还有一个宏大的计划,这就是以自动步枪为基础,开发供整个红军使用的一系列武器:其中包括了自动卡宾枪、半自动步枪、各种轻重机枪,以及坦克机枪、航空机枪和高射机枪:1920年代,他将所有精力都投入到了相关的研究中。

其中一个成果,是一种气冷式轻机枪,它参考了英国刘易斯轻机枪的设计,其最大特点是枪管外安装了一个有棱的铝质散热器,该散热器可以大大增加枪管与空气的接触面:在该枪开火之后,枪口冲出的火药燃气可以产生引流作用,从后方抽进空气以冷却枪管——这一设计也获得了圆满成功。

1920年代,费德洛夫在自动步枪基础上,开发出的各种变形枪

除此以外,费德洛夫还开发了水冷式轻机枪、安装两个弹夹的双联装机枪、以及各种坦克机枪和航空机枪——其中后两种武器,装备在苏军最早的一批国产坦克和飞机上。

在苏联红军之中,费德洛夫自动步枪一直装备到1928年,随后慢慢退出了现役,至于其衍生品——坦克和航空机枪则服役到1930年代。虽然这些武器代表了发展潮流,但在1920年代、苏联实现工业化之前,它们的批量生产明显是不现实的——在战后、工厂没有任何干扰的情况下,其年产量也只能达到600-800支。

影响

受各种因素所限,费德洛夫步枪在当年只能留下暗淡的一笔,但它的历史影响却不止于此。在苏联军队中,它始终是一个特殊的存在。这一方面是因为它强大的火力(完全超越了“莫辛纳甘”栓动式步枪及二战前列装的“托卡列夫”半自动步枪):1939-1940年、苏芬战争期间,苏军在丛林战中损失惨重,他们第一时间想到的是费德洛夫步枪——这些武器被从仓库中取出来,进而配发给滑雪突击队。另外,在军事技术人员眼中,它充当了某种图腾,它表明,即使在相对落后的条件下,俄国人仍可以研制出先进的武器。

苏芬战争期间,一支装备费德洛夫步枪的苏军突击分队

这张图片截取自1940年代、美国拍摄的一部二战宣传片中,其中展示了苏联北极圈内,一些少数民族猎人狩猎北极熊时的景象,其中就能看到费德洛夫自动步枪,这表明,该武器在退出现役后,有一部分可能流向了民间

但更大的影响也许在于,在研发该武器的过程中,俄国的技术人员得到了锻炼。虽然在苏联时代,费德洛夫已经步入老年,但他的学生们仍发挥着重要的作用——1930年代,托卡列夫研制了TT-33手枪和SVT-38/40型半自动步枪;而捷格加廖夫和什帕金则成了机枪开发领域最权威的工程师——他们研制的武器,都在卫国战争中出力甚多;而西蒙诺夫则开发出了一种成功的反坦克步枪和一种半自动步枪,其中后者的仿制品在国内被称为56式。

不过,费德洛夫步枪最大的影响其实更为阴差阳错,并远远超出了当事人的预料:1942年初,在苏联内陆的1133转运医院,一名受伤的坦克兵在懵懂中开始了对武器设计的初步探索。

这名坦克兵后来在回忆录中写道:

“我的病友中有坦克手、步兵、炮兵和工兵,我们经常讨论各种武器的优势和缺陷。虽然我对这些讨论并不积极,不过它给我留下了深刻的印象……在战地医院,我经常能梦见士兵被杀害时的表情……

在战争之前,有人告诉我们,我们不会受到严重的伤害,因为我们有最先进的武器,但现在……这是怎么回事?我们的自动武器在那里?”

在复仇冲动和爱国情怀的驱使下,他开始搜罗一切与枪械有关的材料,其中就有费德洛夫亲自编写的《武器百科全书》,书中关于自动步枪的描述给了他启迪,并让他完成了武器设计的入门。至于他最后的作品,将成为声名遐迩的AK-47,而他的名字,大多数人都耳熟能详——他就是米哈伊尔·季莫费耶维奇·卡拉什尼科夫——俄国历史上影响最深远的武器设计师。

费德洛夫对自动武器的探索,甚至给了AK-47的设计者卡拉什尼科夫很多启示

新闻来源:http://it.ithome.com

原文地址:https://www.ithome.com/html/it/332450.htm

为什么整个互联网行业都缺前端工程师?

为什么整个互联网行业都缺前端工程师?

为什么整个互联网行业都缺前端工程师?

前端工程师的缺乏问题几乎蔓延到整个互联网行业,从刚起步的创业公司,到上市公司乃至巨头,这个问题都存在着。没错,优秀的前端工程师简直比大熊猫还稀少。

每天,100offer 的 HR 群都有人在吐槽招不到靠谱的前端工程师。实话说对这些需求,100offer 也无能为力:在供不应求的前端招聘市场上,优秀的前端工程师才是有话语权的那一方。

在国外,前端工程师一样是需求旺盛、供不应求的香饽饽。

举个例子,根据 http://indeed.com** 抓取的数千家网站的职位显示:目前前端的热门岗位——「HTML5」是需求增长最快的开发岗位,在所有开发职位中排名第一,MongoDB 和 iOS 紧随其后位列第二、第三。

HTML5 可以说是最热门的前端岗位了,在 2010 年和 2014 年底有两次爆发性增长,现在在美国的岗位需求甚至超过了iOS。
市场上优秀的前端工程师相对较缺少,是一个世界性难题。

原因一:前端相对来说是一个新领域,当今的web需求要求更多的工程师供应

可能很多人认为前端开发和 web 开发类似,而 web 开发已经有20多年的历史,所以前端并不是一个新领域。然而,前端工程师的概念中的「接口技术实现和用户体验作为一个专业的工作领域」,却无疑是很新的。大概几年前,前端开发的技术增长迅猛,如下图所示:
过去几年前端工程师的可视化增长趋势 by Google Trends
至少15年以前,web 的视觉设计和技术实现所需要的资源是平均分配的。随着网站的发展——网站不仅是一个登录页面,工程资源的需求越来越明显。人们开始专门学习网站专用的 JS、后端技术、UX、数据库,甚至系统设计。

今天,一个像 AirBnB/Facebook/Quora 的 Web 应用程序,投入的工程资源比设计资源多得多。换句话说,如今,做出网页的视觉设计比技术实现要更快,所以当今的web需求要求更多的工程师供应。
现在,一位合格的前端工程师,必须对视觉设计有兴趣(或者乐于做一个受虐狂▼)。

很显然,要处理大量的 Web 应用程序需求,技术任务就要进行分类,以便于多人同时处理网站请求。事实上现在已经不可能一个人快速地解决所有的技术细节了。
现在还有一类人是独自处理一个 Web 应用程序的所有问题,即「全栈工程师」,但是优秀的全栈工程师同样如大熊猫一般数量稀少。
现在,一个创业公司想要成功,几乎要覆盖一个 Web 应用程序的诸多技术方面:前端、后台、DBA、运营等。虽然已经有一些服务可以让企业购买登陆页面的前端模块和组件;但是如果你想要创造一些真正的 Web 应用程序,除了求助前端工程师,别无他法,就像你要创立一个品牌你也绕不开请一位设计师一样。(web前端学习交流群:328058344 禁止闲聊,非喜勿进!)

原因二:对前端,普遍存在巨大的误解,其实前端一点也不简单

大多人都认为前端开发是一个「相对于其他技术来说更简单的技术」,在他们心中的前端工程师是这样工作的:

  1. 把 Photoshop 文件、图片或者线框放进一个网页;
  2. 偶尔设计 Photoshop 文件、图片或者线框;
  3. 用 JS 编程,为网页制作动画、过渡效果;
  4. 用 HTML 和 CSS 编程,确定网页的内容和形式。

事实上,前端工程师在做的是:

  1. 在设计师和工程师之间创建可视化的语言;
  2. 用可视化的设计,定义一组代表内容、品牌和功能的组件;
  3. 为 Web 应用程序的公约、框架、需求、可视化的语言和规格设定底线;
  4. 定义 Web 应用程序的设备、浏览器、屏幕、动画的范围;
  5. 开发一个质量保证指南来确保品牌忠诚度、代码质量、产品标准;
  6. 为 Web 应用程序设定适当的行距、字体、标题、图标、边距、填充等等;
  7. 为 Web 应用程序设定多种分辨率的图像,设备为主的实体模型,同时维护设计指南;
  8. 用 account semantics, accessibility, SEO, schemas ,microformats 标记 Web 应用程序;
  9. 用一种友好的,消耗小的,设备和客户端感知的方式连接 API,获取内容;
  10. 开发客户端代码来显示流畅的动画、过渡、延迟加载、交互、应用工作流程,大多数时间用来考虑渐进增强和向后兼容的标准;
  11. 保证后台连接安全,采取跨地资源共享(CORS)的程序考虑,防止跨站点脚本(XSS)和跨站点请求伪造(CSRF) ;
  12. 最重要的是,尽管有严格的期限、利益相关者的要求,以及设备的限制,无论现在还是将来永远是「客户第一」。

为了实现上述目标,前端工程师采用了从可视化到编程的多种工具 ,甚至有时要照顾市场、 UX 到内容等等。

原因三:大量糟糕前端工程师的存在,扰乱了市场

这或许是难以招到优秀前端工程师最明显的原因。由于前端工程师的入门门槛非常低,JS、CSS、HTML并不是很难入门掌握的语言,似乎只要花一点时间,无论是谁,都可以通过网上教程或者书本入门。对的,前端工程师市场就是被这些浅尝辄止的家伙搞坏的。
糟糕的前端工程师:
1. JavaScript 类库乱用,对 JavaScript 本身并不了解,什么地方都用 jQuery;
2. 滥用 JavaScript 插件,看都不看看就把别人的代码拿过来用,比如说;
3. 不看需求,不做任何的比较和测试,就把CSS 框架加到项目中,但只用了其中 5% 的功能;
4. 认为添加个 CSS Framework,网站就可以变成“响应式的”,或者 响应式就像是一些小作料,随便就可以加入到一个网页应用中;
5. 嘴上喊着“响应式的 Web 设计”,但服务端技术一点都不懂;
6. 编写的 CSS 没有任何规范标准,不使用任何预处理器,也没有最佳实践。CSS 代码中充满了过度使用的选择器、ID、神奇的数字以及 !important;
7. 不关心代码的性能和内存泄露(什么是真正的内存泄露也不清楚),不会对代码进行性能测试;
8. 对产品没有任何的衡量指标,或者把“在我的电脑/浏览器/移动设备上可以工作”为指标;
9. 忽视30年的软件工程实践,毫无章法的开发软件。

要知道,入门容易精通难,计算机和软件的基础对你用 JS 或浏览器编程都非常重要。web 可能是最有影响力的平台和环境之一,在那里执行的程序必须被小心对待。一位优秀的前端工程师不仅要考虑 web 技术和语言,并且还要了解所有不同的组件、系统和概念

顶级前端工程师需要具备的经验和最佳实践(这才是市场急需的前端):

  1. 了解 DNS 解析,充分利用 CDN,使用多个域名来完成资源的请求以缩短加载时间;
  2. 设置 HTTP Headers(Expires, Cache-Control, If-Modified-Since);
  3. 遵循 Steve Souders 给出的全部规则(High Performance Websites)
  4. 知道如何解决 PageSpeed、YSlow、Chrome Dev Tools Audit、Chrome Dev Tools Timeline 显示的所有问题;
  5. 知道什么任务该放在服务端,什么任务该放在客户端;
  6. 知道使用缓存,DNS 预取和资源预加载技巧;
  7. 精通 JavaScript,知道何时自己写何时借组别人的框架或代码,优劣明辨;
  8. 熟练使用现代 MVC JavaScript 框架(例如 AngularJS EmberJS React 等),图形库(D3、SnapSVG 等),DOM 操作类库(jQuery、Zepto 等),惰性加载或者模块管理类库(例如 RequireJS、CommonJS 等),任务调用工具(例如 Grunt Gulp 等),包管理工具(Bower Componentjs)以及测试工具(Protractor、Selenium 等);
  9. 掌握图片的格式,每种格式的优点,适用的场景;知道图片优化技巧以及加载策略(雪碧图、懒加载、缓存刷新以及 PNG 交错);
  10. 熟悉 CSS 标准、最新的转换工具积极策略规范(比如 BEM、SMACSS、OOCSS 等);
  11. JavaScript 的计算机科学(内存管理、单进程特性、垃圾回收算法、定时器、作用域、提升以及设计模式)。

换句话说,如果说精通 HTML+CSS+JS,了解后端知识,只是60分的合格前端;那么要想成为受追捧、拿高薪的80分优秀前端,要对业务需求和、架构设计有真正的运用;而100分的顶级前端,则必须要能够兼顾技术和设计,更接近「以前端开发为主的全栈工程师」了

市场不是缺少前端,而是缺少优秀的前端工程师

现在,前端工程师终于在 web 中占有了一席之地。随着多设备、浏览器和Web标准的演变革命,前端正在成为兼顾逻辑、性能、交互、体验的综合性岗位
虽然现在互联网行业普遍缺少前端工程师,但是我们相信越来越多的人将会加入前端的大军。不仅是因为大多数前端工作提供的优渥薪水和办公环境,也是因为web中的前端编程变得越来越有挑战和意义。
最后,分享一组2015年3~4月跳槽高峰期的100offer拍卖数据,给前端们鼓鼓劲:
前端工程师人均收获8.2个面试机会,已入职的前端工程师平均薪资涨幅达39%。其中,前端offer之王共收获47个offer,最高offer薪水38k*16 ,开自某土豪电商。
加油吧,前端!

新闻来源:http://geek.csdn.net

原文地址:http://geek.csdn.net/news/detail/242344

一道很难的 Java 面试题 (分析篇)

无意中了解到如下题目,觉得蛮好。

题目如下:

public class TestSync2 implements Runnable {
int b = 100;

synchronized void m1() throws InterruptedException {
    b = 1000;
    Thread.sleep(500); //6
    System.out.println("b=" + b);
}

synchronized void m2() throws InterruptedException {
    Thread.sleep(250); //5
    b = 2000;
}

public static void main(String[] args) throws InterruptedException {
    TestSync2 tt = new TestSync2();
    Thread t = new Thread(tt);  //1
    t.start(); //2

    tt.m2(); //3
    System.out.println("main thread b=" + tt.b); //4
}

@Override
public void run() {
    try {
        m1();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

}
该程序的输出结果?

程序输出结果

main thread b=2000
b=1000

main thread b=1000
b=1000
考察知识点

synchronize实例锁。
并发下的内存可见性。
在java中,多线程的程序最难理解、调试,很多时候执行结果并不像我们想象的那样执行。所以在java多线程特别难,依稀记得大学的时候考c语言二级的时候,里面的题目是什么++和很多其他优先级的符号在一起问最后的输出结果,这类题目就想考一些运行符优先级和结合性问题。那个背背就行了,但是java多线程还是需要好好理解才行,靠背是不行的。
下面开始简单分析:

该题目涉及到2个线程(主线程main、子线程)、关键词涉及到synchronized、Thread.sleep。
synchronized关键词还是比较复杂的(可能有时候没有理解到位所以上面题目会有点误区),他的作用就是实现线程的同步(实现线程同步有很多方法,它只是一种,后续文章会说其他的,需要好好研究大神Doug Lea的一些实现),它的工作就是对需要同步的代码加锁,使得每一次只有一个线程可以进入同步块(其实是一种悲观策略)从而保证线程只记得安全性。

一般关键词synchronized的用法

指定加锁对象:对给定对象加锁,进入同步代码前需要活的给定对象的锁。
直接作用于实例方法:相当于对当前实例加锁,进入同步代码前要获得当前实例的锁。
直接作用于静态方法:相当于对当前类加锁,进入同步代码前要获得当前类的锁。
上面的代码,synchronized用法其实就 属于第二种情况。直接作用于实例方法:相当于对当前实例加锁,进入同步代码前要获得当前实例的锁。

可能存在的误区

由于对synchronized理解的不到位,由于很多时候,我们多线程都是操作一个synchronized的方法,当2个线程调用2个不同synchronized的方法的时候,认为是没有关系的,这种想法是存在误区的。直接作用于实例方法:相当于对当前实例加锁,进入同步代码前要获得当前实例的锁。
如果一个调用synchronized方法。另外一个调用普通方法是没有关系的,2个是不存在等待关系的。
这些对于后面的分析很有作用。

Thread.sleep

使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常,对于后面的分析很有作用。

分析流程

java 都是从main方法执行的,上面说了有2个线程,但是这里就算修改线程优先级也没用,优先级是在2个程序都还没有执行的时候才有先后,现在这个代码一执行,主线程main已经执行了。对于属性变量 int b =100由于使用了synchronized也不会存在可见性问题(也没有必要再使用volatile申明),当执行1步骤的时候(Thread t = new Thread(tt); //1)线程是new状态,还没有开始工作。当执行2步骤的时候(t.start(); //2)当调用start方法,这个线程才正真被启动,进入runnable状态,runnable状态表示可以执行,一切准备就绪了,但是并不表示一定在cpu上面执行,有没有真正执行取决服务cpu的调度。在这里当执行3步骤必定是先获得锁(由于start需要调用native方法,并且在用完成之后在一切准备就绪了,但是并不表示一定在cpu上面执行,有没有真正执行取决服务cpu的调度,之后才会调用run方法,执行m1方法)。这里其实2个synchronized方法里面的Thread.sheep其实要不要是无所谓的,估计是就为混淆增加难度。3步骤执行的时候其实很快子线程也准备好了,但是由于synchronized的存在,并且是作用同一对象,所以子线程就只有必须等待了。由于main方法里面执行顺序是顺序执行的,所以必须是步骤3执行完成之后才可以到4步骤,而由于3步骤执行完成,子线程就可以执行m1了。这里就存在一个多线程谁先获取到的问题,如果4步骤先获取那么main thread b=2000,如果子线程m1获取到可能就b已经赋值成1000或者还没有来得及赋值4步骤就输出了可能结果就是main thread b=1000或者main thread b=2000,在这里如果把6步骤去掉那么b=执行在前和main thread b=在前就不确定了。但是由于6步骤存在,所以不管怎么都是main thread b=在前面,那么等于1000还是2000看情况,之后b=1000是一定固定的了。

多线程一些建议

线程也很珍贵,所以建议使用线程池,线程池用的很多,后续准备分享下,特别重要,需要做到心中有数。
给线程起名字,当线上cpu高的时候,需要用到高级jstack,如果有名称就方便很多。
多线程特别需要注意线程安全问题,也需要了解jdk哪些是线程安全不安全,那样使用的时候不会出现莫名其妙的问题。
还有一些技巧后续文章分享在慢慢提,多线程特别重要,也特别难,希望大家也多多花心思在上面。

大家可以点击加入群:478052716【JAVA高级程序员】里面有Java高级大牛直播讲解知识点 走的就是高端路线(如果你想跳槽换工作 但是技术又不够 或者工作上遇到了瓶颈 我这里有一个JAVA的免费直播课程 讲的是高端的知识点基础不好的误入哟 只要你有1-5年的开发经验可以加群找我要课堂链接 注意:是免费的 没有开发经验误入哦)

多线程的一些调试技巧
由于断点,所有线程经过断点的时候,都需要停下,导致这个点不停的断住,很难受,eclispe里面有条件断点,当满足条件的时候就可以停下来,那么这样就方便了。
图片描述
图片描述
图片描述
图片描述

新闻来源:http://geek.csdn.net

原文地址:http://geek.csdn.net/news/detail/242345

记一次网易前端实习面试

记一次网易前端实习面试

很幸运地能收到网易的面试通知,就毫不犹豫翘了课去面试了hhhh~三点的面试,因为从来没去过那个中关村西北旺区,吃完饭早早就去了,想象中那里应该是繁华的地方hhhh,到了发现都在建设中,很多还在建设中,看到了网易旁边的百度和搜狐,都是长长的大楼或者是高高的建筑,满满大企业的既视感~一进网易楼就没网= =,在里面也没事干,就呆在外面看看前端的东西准备下,到2点40的时候跟前台说了下,一个网易年轻姐姐就带我上去了~

步入正题-笔试
本来我以为只有面试的,发现那个姐姐并不是带我去面试的,带我去了个房间,留了两张题目给我,说半小时来说,毫无防备hhh接下来步入正题吧~

1.alert(1&&2),alert(1||0)
具体我不记得了反正就这两个,我以为考的是纯粹的与运算和或运算,后来发现太天真了

1    alert(1&&2)的结果是2
2    只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
3    只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
4
5    alert(0||1)的结果是1
6    只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
7    只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。

2.mouseenter和mouseover的区别
这个之前看了下,大概是答出来了,但可能不够详细吧

1    不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。对应mouseout
2    只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。对应mouseleave

3.用正则表达式匹配字符串,以字母开头,后面是数字、字符串或者下划线,长度为9-20
看到这题我是崩溃的,因为正则学的不多,但是稍微写了下也差不多只是忘了些

1  var re=new RegExp("^[a-zA-Z][a-zA-Z0-9_]{9,20}$");

4.js字符串两边截取空白的trim的原型方法的实现

1  //我的笨方法,当时还想错了一些,回来后实现了一下,思路是这样
2  String.prototype.trim = function () { 
3    var arr=this.split("");  
4    while(1) {  
5       if(arr[0]==" ") {   
6          arr.shift();       
7      continue; 
8       }   
9    break;  
10   }
11   while(1){  
12     if(arr[arr.length-1]==" ") { 
13          arr.pop();    
14       continue;  
15    }    
16    break;   
17   }  
18  return arr.join("");
19  }
20  //后来面试官跟我说一句话就解决了,然而我正则都忘了,平时没怎么用
21  String.prototype.trim = function () {
22    return this.replace(/(^\s*)|(\s*$)/g,'');
23  };

5.三道判断输出的题都是经典的题

1  //5.1
2  var a=4;
3  function b() {
4     a=3; 
5   console.log(a); 
6   function a(){};
7  }
8 b();
9 //明显输出是3,因为里面修改了a这个全局变量,那个function a(){}是用来干扰的,虽然函数声明会提升,就被a给覆盖掉了,这是我的理解
10 //5.2
12 //不记得具体的就类似如下
13  var baz=3;
14  var bazz={  
15   baz: 2, 
16   getbaz: function() { 
17         return this.baz 
18   }
19  }
20  console.log(bazz.getbaz())
21  var g=bazz.getbaz;
22  console.log(g()) ;
23   //第一个输出是2,第二个输出是3,这题考察的就是this的指向,函数作为对象本身属性调用的时候this指向对象,作为普通函数调用的时候就指向全局了
24  //5.3var arr=[1,2,3,4,5];
25  for(var i=0;i<arr.length;i++)
26  {   
27   arr[i]=function(){
28  alert(i)
29  }
30  }
31  arr[3]();
32  //典型的闭包啊,看都不用看,肯定弹出5啊

6.写出position不同值和区别
突然想到还有inherit,当时忘记了,后来面试的时候又重新问了我一下

  1. absolute: 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。(不占位)
  2. relative: 生成相对定位的元素,相对于其正常位置进行定位。因此,”left:20” 会向元素的 LEFT 位置添加 20 像素。(占位)
  3. static:默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)inherit:规定应该从父元素继承 position 属性的值。
  4. fixed:生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。
    7.写一个div+css布局,左边图片右边文字,文字环绕图片,外面容器固定宽度,文字不固定(这是后来根据面试官描述的,笔试题上只有图我就不放上来了)
    这道题我没答好,刚开始我不清楚那个文字是要自适应的面试官说用p标签包裹文字,我当时就紧张了下,把p标签错当成内联了,然后我再修正,然后加左浮动,然后不行,我就跟面试官说,我以前都直接就一个img它float:left,加文字不加p标签就好了然后我回来试一试才发现= =,直接加p标签就可以了啊= =,omg我的错误!!!

8.讲述你对reflow和repaint的理解
这个真不会了没接触,第一个我猜是重新布局,第二个倒是见过就是重绘,就想到document.write(),这个后来也没再问我了查查查

repaint就是重绘,reflow就是回流。repaint主要是针对某一个DOM元素进行的重绘,reflow则是回流,针对整个页面的重排
严重性:
在性能优先的前提下,性能消耗 reflow大于repaint。

体现:
repaint是某个DOM元素进行重绘;reflow是整个页面进行重排,也就是页面所有DOM元素渲染。(web前端学习交流群:328058344 禁止闲聊,非喜勿进!)

如何触发:
style变动造成repaint和reflow。不涉及任何DOM元素的排版问题的变动为repaint,例如元素的color/text-align/text-decoration等等属性的变动。除上面所提到的DOM元素style的修改基本为reflow。例如元素的任何涉及长、宽、行高、边框、display等style的修改。

常见触发场景:
触发repaint:

1  color的修改,如color=#ddd;
2  text-align的修改,如text-align=center;
3  a:hover也会造成重绘。
4  :hover引起的颜色等不导致页面回流的style变动。

触发reflow:

1  width/height/border/margin/padding的修改,如width=778px;
2  动画,:hover等伪类引起的元素表现改动,display=none等造成页面回流;
3  appendChild等DOM元素操作;
4  font类style的修改;
5  background的修改,注意着字面上可能以为是重绘,但是浏览器确实回流了,经过浏览器厂家的优化,部分background的修改只触发repaint,当然IE不用考虑;
6  scroll页面,这个不可避免;
7  resize页面,桌面版本的进行浏览器大小的缩放,移动端的话,还没玩过能拖动程序,resize程序窗口大小的多窗口操作系统。
8 读取元素的属性(这个无法理解,但是技术达人是这么说的,那就把它当做定理吧):读取元素的某些属性(offsetLeft、offsetTop、offsetHeight、offsetWidth、scrollTop/Left/Width/Height、clientTop/Left/Width/Height、getComputedStyle()、currentStyle(in IE));

如何避免:
尽可能在DOM末梢通过改变class来修改元素的style属性:尽可能的减少受影响的DOM元素。

避免设置多项内联样式:使用常用的class的方式进行设置样式,以避免设置样式时访问DOM的低效率。

设置动画元素position属性为fixed或者absolute:由于当前元素从DOM流中独立出来,因此受影响的只有当前元素,元素repaint。

牺牲平滑度满足性能:动画精度太强,会造成更多次的repaint/reflow,牺牲精度,能满足性能的损耗,获取性能和平滑度的平衡。

避免使用table进行布局:table的每个元素的大小以及内容的改动,都会导致整个table进行重新计算,造成大幅度的repaint或者reflow。改用div则可以进行针对性的repaint和避免不必要的reflow。

避免在CSS中使用运算式:学习CSS的时候就知道,这个应该避免,不应该加深到这一层再去了解,因为这个的后果确实非常严重,一旦存在动画性的repaint/reflow,那么每一帧动画都会进行计算,性能消耗不容小觑。

面试部分
半小时写完笔试后,等待面试,hh中途遇到了北邮的师兄聊了一些nodejs的东西步入正题面试

  1. 什么时候开始学前端
  2. 如何学前端
  3. 看过谁的博客
  4. 开始看我的简历问了,问项目,问webpack/gulp区别,问项目如何实现什么的,再问了笔试题(上面讲过了)
  5. 等等等都问的项目
    基本也就这些,面试官人挺好的,感觉没什么压力~最后也让我过了吧,就后面暑假放假再去联系~说我还得多去看看基础的东西~确实基础还不够扎实哈,不过总的来说,这人生第一次面试还挺顺利的说,也是运气好吧~希望学校早放假能去实习一番~

新闻来源:http://geek.csdn.net

原文地址:http://geek.csdn.net/news/detail/242346

微博抽奖规则调整:中奖后需5天内确认收货信息

IT之家10月31日消息 今日晚间,微博抽奖平台官方发布了《关于中奖用户完善收货信息时限调整的通知》,通知中提到:即日起,中奖用户需在中奖后5天内确认收货信息,逾期视为放弃。

微博抽奖平台官方表示,为完善抽奖活动的发奖流程,提高用户体验,即日起,将对中奖用户完善收货信息时限做出以下调整:

中奖用户在中奖后确认收货信息时间期限由之前的7天调整为5天,即中奖用户需要在收到中奖私信后5天内完善并确认收货信息,逾期未确认者视为放弃领奖,系统将自动关闭收货信息填写入口以及举报入口。对于放弃领奖的用户,无法进行举报,同时,活动发起方有权利不予补发奖品!

本次调整将自2017年10月31日起正式生效。

▼《关于中奖用户完善收货信息时限调整的通知》

新闻来源:http://it.ithome.com

原文地址:https://www.ithome.com/html/it/332443.htm

苹果股价创新高:市值有望在年底前率先突破1万亿美元

北京时间10月31日晚间消息,美国知名财经媒体The Street分析师布莱恩·索兹(Brian Sozzi)今日表示,随着苹果公司(以下简称“苹果”)股价再创新高,公司市值有望在今年年底前率先突破1万亿美元。

当前,全球市值最高的5家企业依次为苹果、谷歌母公司Alphabet、微软、Facebook和亚马逊。其中,苹果、Alphabet和亚马逊这三只股票最受关注,因为它们的市值有可能率先达到1万亿美元。

近日,受iPhone X市场需求强劲的推动,苹果股价再创新高,突破了每股168美元,创下了自公司1980年登陆纳斯达克以来的历史新高记录。如今,苹果市值已达到8600亿美元。

对此,The Street分析师索兹认为,到今年年底,苹果市值将突破1万亿美元,与当前股价相比上涨14%。索兹还称,鉴于iPhone X的旺盛需求,推动苹果市值达到1万美元并没有当初听起来那么不可思议。

基于彭博社数据,苹果拥有52.13亿股流通股。如果每股达到202美元,则苹果市值将达到1.053万亿美元。

华尔街投资银行Drexel Hamilton分析师布莱恩·怀特(Brian White)今年5月曾表示,苹果的股票是全世界被严重低估的股票之一,苹果将率先成为全球市值突破万亿美元的企业。

加拿大皇家银行资本市场分析师艾米特·达亚纳尼(Amit Daryanani)认为,苹果市值有望于2018年底达到1万亿美元。

但纽约大学教授、品牌战略专家斯科特·加洛韦(Scott Galloway)认为,亚马逊将战胜苹果和Alphabet,率先成为市值突破1万亿美元的企业。加洛韦称,美国将有大量实体零售店倒闭,而亚马逊将是主要的受益者。

新闻来源:http://it.ithome.com

原文地址:https://www.ithome.com/html/it/332442.htm

员工薪水不满意排行榜 微软和苹果公司排名靠前

像Google,微软和苹果这样的科技公司通常被认为是最好的工作场所,但匿名员工聊天应用程序盲人最近进行的一项调查显示出一些相当意想不到的统计数据。该公司要求用户回答关于他们工作的一系列问题以及他们工作的薪水,试图确定哪些是员工不满意的公司。

事实证明,Netflix,Dropbox和Facebook的员工对他们的工资满意度最高,而一半以上为苹果和微软工作的员工认为他们应该从雇主那里获得更多报酬。在有兴趣离开公司的员工方面,这份统计图表显示,超过70%的微软员工表示正在考虑跳槽,其次是亚马逊,苹果和谷歌,这些公司当中超过百分之五十的员工表示他们正在考虑跳槽。 Netflix雇员受访者中有不到30%的表示他们正在寻找另一份工作,因为他们大多数认为工作得到了公平的补偿。

不用说,这项研究并不反映所有工作人员的意见,而只是一小部分该款应用程序用户的意见。尽管Netflix和Dropbox等公司的统计数据显示雇员对薪水满意,但是这并不能代表所有公司,数据只是反应匿名使用该款应用程序的部分员工意见。

新闻来源:http://www.cnbeta.com

原文地址:http://www.cnbeta.com/articles/tech/666015.htm

双胞胎也无法骗过 iPhone X 的面容 ID

iPhone X 的主打功能之一就是全新的面容 ID 识别系统,根据苹果介绍,面容 ID 比之前的 Touch ID 更安全。与其他智能手机的面部识别功能不同,面容 ID 的技术更先进一些,照片是无法骗过面容 ID 的。那么双胞胎呢?

国外很多媒体已经拿到了 iPhone X 评测样机,Business Insider 就找来了一对双胞胎,准备测试一下 iPhone X 的面容 ID 是否可以应对两张看着一样的脸。

这对双胞胎都是 36岁,分别是 Greg Fieber 和 Brian Fieber。经过多次测试后,iPhone X 的面容 ID 表现还是非常稳定的,可以准确的识别自己的主人。

新闻来源:http://www.cnbeta.com

原文地址:http://www.cnbeta.com/articles/tech/666013.htm

双十一临近,怎样让买家流畅地秒杀? ——腾讯WeTest独家开放电商产品压测服务

商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。
原文链接:http://wetest.qq.com/lab/view/347.html

WeTest 导读

十一月临近,一年一度的电商大戏“双十一”又将隆重出场,目前各大商家已经开始各类优惠券的发放,各类大促的商品表单也已经提前流出,即将流入各个用户的购物车中。

作为这些活动的载体,产品宣传、商品购买、交易结算、客户反馈以及售后服务都是电商产品(包括网站、APP、小程序等形式)非常重要的功能,但当双十一临近,电商产品要面对大量级用户群体涌入,流量猛增的局面,性能表现往往就成为了成功的关键。


双十一的流量挑战

在优化电商产品的性能表现前,首先要了解一下电商产品的访问逻辑,以电商网站为例:

电商网站的核心内容,包括了Web服务器、应用服务器和数据库服务器,其中前端Web服务器负责接收并处理来自用户的HTTP请求,并生成Web页面反馈给用户;中间的应用服务器负责执行其中的业务逻辑;后台数据库和文件服务器负责存储用户、产品信息及状态。

为了提升访问的性能,有的网站会在数据库服务器前部署数据缓存设备。外围部署负载均衡服务器,负责在海量用户访问与多台服务器间进行负载分担。

对于电商产品来说,当流量变高,成百上千的服务器和其他设备面对海量用户的访问,会遇到这样的场景:有的用户在不断查询商品信息,有的用户在注册会员,有的用户在修改购物车信息,有的用户在下单付款,有的用户在秒抢商品,等等。

此时若不重视承载能力,会造成严重的后果。比如国庆期间鹿晗公布恋情导致微博宕机,以及过去几年iPhone新机发布导致官网崩溃,都是由于对流量突增没有足够的承载能力导致的。

这里写图片描述

而这些现象,都给用户带来了很大的困扰,而且用户体量越大,影响的波及面就越广,不仅影响用户口碑,也影响产品收入。如果把产品的月收入平摊到每一分钟的话,大家可以通过30分钟,60分钟,乃至12小时,24小时计算具体的损失金额,还要加上因此产生的用户流失以及品牌口碑影响。

所以,如何在“双十一”这样火热的节点保证用户顺畅访问网站,成了一个重大的挑战。

电商产品的压测方案

那么,怎么样才能让电商网站在面对活动流量高峰的时候能够提供正常服务呢?容量规划,压力测试以及压测环境的配置是电商网站必须要经历的考验。

尤其是压力测试,是整个电商网站活动前的实战演习,能够提前预知网站性能表现的瓶颈与故障点。

一、预估流量情况

电商网站背后的系统通常分为两部分,一部分是导购,主要的作用是为用户推荐各式各样的商品,提供搜索服务,给用户挑选商品带来便利;另一部分就是交易,简单来说就是电商网站下单、抢购等活动的过程。

两部分的流量形式是不同的。导购部分的流量会呈现为一个慢慢上涨的曲线,对于服务器来说,流量的压力是慢慢增加的;而交易部分的流量,却是陡然上升的,特别是在某个抢购活动中,压力会瞬间增长到一个高峰,没有给人和机器任何的反应和决策时间,这也是电商产品承载能力要求比其他的产品高的重要原因之一。

但是这个高峰会是多少?很多人在事前并不知道,如果要模拟真实的压力场景,不同的压力造成的测试成本都不同,定高了,成本高,定低了,没效果,因此要想让压力测试既能满足足够的流量压力,又把测试的成本压缩到最小,活动筹备之前对于流量的预估非常重要。

阿里巴巴在双十一活动前通常也会进行压力的预估,将其叫做”容量规划“。活动流量会有多少?峰值会到多少?电商网站的开发人员需要心里有数。

二、场景化压测

在实际电商活动开始后,用户会从四面八方涌入产品,如何去模拟用户的真实行为,形成一个最接近真实的压测场景是电商产品压测第二件需要做的事情。

电商产品通常有很多接口,用户在访问过程中可能接触其中的某几个接口,一种压测的方式就是针对这所有的接口进行统一的压测,增加相同的压力,算出一个系统的容量,然后再根据这个系统的容量情况扩展到一个个集群。

这种方法有一个缺陷,就是如果这个系统某个接口出现了问题,整个集群都会崩溃。

而场景化压测可以避免这类问题。在实际的压测场景中,流量很大一部分都会被分流,由于每个用户的购物流程都不一样,因此对于电商网站上的接口受到的压力都会不同,可以实现用最少的服务器支撑最大的流量。

那么,一般电商购物会有哪些场景呢?以下举三个例子。

场景一:登录注册,访问个人中心

用户在进入电商产品后,会有查看自己订单情况的需求,因此,“登录“”注册“以及”个人中心“会成为流量较高的接口。

场景二:商品遍历

“商品遍历“指的是用户在下单购买前,对不同的商品页进行访问的过程,而此时用户已经进入了登录状态,会带着登录态对不同的页面进行访问,此时不同的商品页面接口会承受比较大的压力。

场景三:购买下单

这可能是电商网站并发压力最高的一个接口,购买按钮,购物车页面以及付费接口都会面临很大的瞬时压力。

在确认完“双十一“活动中承受压力可能最高的几个场景之后,产品开发或测试人员就可以根据场景配置相应的测试用例了。

三、线上压测配置

配置测试用例,实现真实压力,通常需要一个能够真实模拟海量用户的测试工具,WeTest压测大师为电商行业提供了一个适用的测试环境,提供了”上下文变量“、”全局参数化“等功能,可以满足电商产品大部分的测试需求。

“上下文变量“实现”用户登录”、”购买下单“场景

“上下文变量“实现的是将用户登录时的用户信息传输到下一个页面中,对于电商平台来说,可以真实模拟用户登录后,点击了”购买“,进入了购买页面。以下是操作介绍:

1、进入压测大师首页,选择一个已有的项目进入,如没有项目可以新建项目
这里写图片描述

2、创建一个新的URL测试,如下图:
这里写图片描述

3、在测试设置部分,填写压力预估的最大人数
这里写图片描述

这里当配置人数大于400时,为防范非法攻击等现象,需要对被测域名进行认证,点击域名认证按照提示认证即可。

4、在“客户端请求“点击”上下文变量“,开始配置
这里写图片描述

5、 “上下文变量设置“是为了实现URL之间参数信息的传递,因此需要点击右下角的”+一个URL请求“增加一个URL,然后保证第一个URL的”变量名“与第二个URL的字段保持一致
这里写图片描述

6、“提取方式“通常选择”键值对“较多(具体使用可根据实际情况),选择想要传递信息的”header名称“,确定”提取规则“。”提取规则“中所填写的就是传递到下一个页面的信息,比如电商平台用户的会员信息。
这里写图片描述

那么”提取规则“应该填写什么呢?我们需要在URL页面中去寻找这个”键值“。

首先在chrome浏览器中输入第一个URL,点击F12,点击Network,刷新一下页面之后点击最左侧的”setcookie_prep.php“,找到对应的header“Set-Cookie“,后面order_id后的值,就是我们将要传输给下一个URL的信息。
这里写图片描述

7、完成了”上下文变量“的设置之后,在“测试模型“中的场景中选择”上下文“模式,分别输入两个URL。
这里写图片描述

8、 如果自有服务器,则可以在“服务器监控“的”添加监控“中设置服务器信息;如果没有,则可以点击”立即执行“开始测试
这里写图片描述

“全局参数化“实现”商品遍历“场景

“全局参数化“实现的是通过自动更改”index“字段中的参数,实现遍历电商平台上所有商品页面,对电商平台上所有的商品页面模拟真实的用户压力。

这里写图片描述

1、点击右上角的“全局参数化“的设置按钮,开始设置全局参数化
这里写图片描述

2、点击“添加“,添加参数,将参数名修改为想要测试的字段,比如上面的”index“字段。另外参数化形式中有”自增“、”随机值“和”定长“三种配置方式。

“自增“可以设置”最大值“和”最小值“,比如最小值设置1,最大值设置100,就可以自定义服务器压力,遍历电商平台上参数值为1-100的所有商品;

“随机值“可以实现在自定义范围内随机对某商品页面进行压力测试;

“定长“通过设置一定长度下的数值,在这个范围内的所有商品页面进行随机的压力测试,比如定长设置为3,则会在”000-999“”aaa-zzz“之间进行随机的压力测试。

这里写图片描述
“全局参数化“可以设置”自增“、”随机值“和”定长“三种形式

这里写图片描述

“全局参数化“下的”定长“参数设置

对电商平台来说,要进行压测的部分不止是遍历所有商品页还有模拟真实用户购买那么简单,还会有搜索,聊天,收货,评价等更多的功能,本文通过两个简单的场景示例,可以帮助电商网站把测试成本降到最小,把测试效果放到最大,避免让电商平台的买家因为无法付款而流失。

做好这些,才能做出完整的电商产品。


WeTest压测大师 服务了包括王者荣耀、龙之谷手游、火影忍者等多款高星级手游, QQ、NOW直播等明星产品,更是服务了携程、京东、特仑苏以及各类规模的电商产品,此次推出”电商行业压测解决方案“,希望能够帮助开发者真实模拟电商用户使用场景,帮助开发者发现服务器端的性能瓶颈,进行针对性的性能调优。在保证用户流畅体验的同时,也能降低服务器采购和维护成本,实现用户与电商开发者的技术共赢!

“压测大师”目前已经开放对外,目前更有低至四折的时效资源包优惠,欢迎大家的使用!

体验地址:http://wetest.qq.com/gaps/

如果对使用当中有任何疑问,欢迎联系腾讯WeTest企业qq:800024531

新闻来源:http://geek.csdn.net

原文地址:http://geek.csdn.net/news/detail/242328

黑莓 CEO 表示如果有法庭命令黑莓愿意尝试破解加密

科技公司是否在破解加密通信上帮助政府目前是一个受争议的话题,执法部门对科技公司在其产品中使用的强加密表达了强烈不满,政府高官甚至以“负责任的加密”的名义建议科技公司使用弱加密。黑莓的通信也使用加密保护。公司 CEO 程守宗在伦敦举行的黑莓安全峰会上
表示,如果政府有合法的法庭命令,黑莓会尝试破解它使用的加密。程守宗说,今天的加密已经到达这样一个程度,即使他们自己去破解自己的加密也非常困难。破解加密并非易事,因此黑莓只会在法庭命令下尝试去破解。

新闻来源:http://www.solidot.org

原文地址:http://www.solidot.org/story?sid=54327

网站和移动应用都想用你的 CPU 挖数字货币

利用浏览者的 CPU 挖数字货币正蔚然成风:包含海盗湾在内的流行网站嵌入 JS 脚本在用户浏览时挖门罗币;安全公司 Sucuri 上周
报告至少 500 家运行 WordPress 内容管理平台的网站被黑和植入了 Coinhive 挖矿脚本;趋势科技
报告,Google Play 官方商店发现了至少两个下载量多达 5 万的应用内置了 Coinhive 的挖矿脚本。网站和移动应用都想用你的 CPU
挖数字货币。支持者认为这可以替代广告为网站带来收入,批评者认为这种未经用户同意的做法根本就和恶意程序一样。

新闻来源:http://www.solidot.org

原文地址:http://www.solidot.org/story?sid=54326

打印机能听歌打电话?惠普发布5大系列18款打印机

10月31日,惠普公司在北京举办秋季新品发布会,重磅推出5大系列共18款全新彩色打印机,旨在更好地满足家庭及中小企业用户更多场景下的彩色打印需求。惠普公司大中华区总裁庄正松表示,作为全球和中国打印市场的领导者,在过去的30多年里,惠普一直致力于利用更新的技术和更优的设计。

根据IDC 2017年第二季度的报告,惠普在中国打印机市场份额为31.34%。未来,惠普将带来更多的创新产品,为人们的生活和工作带来更好的打印体验。

18款打印机中,惠普为家庭用户带来了7款全新彩色打印机(包括一款音响打印机),以及面向中小企业用户的11款彩色打印机。

惠普惊艳系列6220照片打印一体机

惠普惊艳系列6220照片打印一体机,可打印出高品质的无边距照片,提供双面打印功能、无线直连打印功能。在下载Hp Smart惠普移动打印APP之后,用户还可以便捷地打印手机中的照片和文档,并随时了解耗材余量,即时补充耗材。与此同时,6220的墨盒能够以精确到3微微升的超精细墨滴打印,不但高清,还可长久保存。

惠普惠省系列5078/5088/5278无线打印一体机

惠普惠省系列5078/5088/5278无线一体机采用2.2英寸的触摸屏,2.4G/5G双频Wi Fi连接无线打印,双墨滴技术,支持自动双面打印功能。其中,5278无线打印一体机可作为传真机使用,满足用户多样需求。

惠普AMP120/125音响打印机

惠普AMP 120/125音响打印机,除了必备的高品质打印功能外,还内置了蓝牙音箱,可轻松连接至移动设备,播放音乐和有声读物,更能实现免提通话。另外,它还可为移动设备迅速充电。

A3宽幅大视野:惠普惠商系列Office」et Pro 7720/7730宽幅一体机

拥有自动双面打印,35页ADF多页复印、扫描和传真等多项功能。其高品质的彩色打印性能可确保色彩鲜艳,。黑臼分明。的打印效果,并支持A4和A3幅面文件,可帮用户灵活应对设计稿、工程图、宣传手册、传单等各种需求。此外,选用惠普高容量墨盒,还可以实现更高印量的黑臼文档和彩色文档。

多快小省利器:惠普M100/M200系列彩色激光打印机/一体机

适用于小微企业,大幅提升了彩色打印速度,并配备了最高250页的大容量进纸盒,,2.4G/5G双频Wi-Fi连接和W Smart惠普移动打印APP支持无线打印,并同样提供手机扫描和耗材状态监控等功能。

新闻来源:http://www.cnbeta.com

原文地址:http://www.cnbeta.com/articles/tech/666011.htm

iPhone X 评测:Face ID 特别好用、潜力无限

Tech Crunch 的 Mattew Panzarino 使用 iPhone X 一周时间后带来评测文章。上周早些时候,Ranzarino 去了趟苹果总部拿回来 iPhone X。同时他还在那里采访了四位苹果高管(全球市场副总菲尔席勒、硬件工程副总 Dan Riccio、软件工程副总 Craig Federighi 和 UI 设计副总 Alan Dye)。完整采访会在另外的文章中带来。

Face ID 好用吗?

Dan Riccio 说,「可以说,我们面临的最棘手的挑战是取代 Touch ID,确实非常非常难。如果我们决定要取代它,那么我们想要用某种更好和更自然的方式取代它。」Riccio 同时还断然反驳了关于苹果仍在尝试在今年的 iPhone X 加入 Touch ID 的观点。

Panzarino 提到 Face ID 表现出色。首先,它非常容易设置。启用它之后晃两圈头就搞定了。其次,他在我的绝大多数使用时间里都很好用,从来没有一次可以用自拍照片或者其他人的面部照片来解锁手机。而且误识率貌似与 Touch ID 一样——一次也没有。而且它绝对比初代 Touch ID 要快,可能比第二代 Touch ID 要慢一些。

很多次,在昏暗的场所或者奇怪的角度也能成功解锁。习惯之后,你会忘记解锁设备这件事。你只是拿起手机并滑动就行了。

Panzarino 提到 Face ID 不是「图像识别」。它是一种完全的 3D 面部重构以及眼部追踪系统。

Face ID 通常会在下面两种场景中一种失效:我尝试解锁时没有看着手机,或者脸部与手机角度太大,无法覆盖我的脸。

光头、戴帽子、戴眼镜、不戴眼镜、戴帽子和眼镜都可以。不过在寒冷地区的用户可能要需要拆掉遮住脸的饰物才能解锁。

太阳镜不行。不过如果你最喜爱的太阳镜碰巧不行,你可以关闭注视侦测功能,而 Face ID 依然有效。这对残疾人是很好的一个功能。

Apple Pay 支付。按两下侧边按钮后看一眼手机就可以支付了。比 Touch ID 更自然一些。

Face ID 可以带来更多好处。比如在锁屏状态下隐藏通知预览,通过 Face ID 打开预览。

expand1.gif

Face ID 还可以在网页上自动补全密码。你只需要打来一个网页或者 app(你在 Keychain 中保存了密码),接着会弹出 Face ID 的 logo 并且可以自动输入你的信息。一旦你用上这个功能,你就再也不想回到从前了。

如果手机注意到你没在看它,屏幕将会比平时更快地变暗以节省电量。如果你在使用手机时来通知了,会调低提示音音量,因为它「知道」你在看它。

完整评测链接

新闻来源:http://www.cnbeta.com

原文地址:http://www.cnbeta.com/articles/tech/666009.htm

iPhone X初体验 这就是大家都在等它的原因

业界很久没有那么兴奋了,最近很多人都在为一款手机疯狂,那就是 iPhone X。首先要纠正 iPhone X 不是念 iPhone 叉,正确的念法 iPhone 十,顾名思义,这是 iPhone 十周年完美的承上启下的更新换代。自 9 月份发布会之后,身边不止一个人跟笔者说“我要等 iPhone X”“你能帮我订到 iPhone X 吗?”“订不到我再继续等……”。为这群朋友和广大仍在等待的锋友,笔者提前体验了一把 iPhone X,就为了告诉他们,你们的等待是值得的。

尺寸与手感是最舒服的

iPhone X 的机身尺寸比 iPhone 8 Plus 小了不少,但是又比 iPhone 8 稍大一些。这就给了消费者很多元化的选择,解决了过大或过小的顾虑。iPhone X 的机身尺寸是所有 iPhone 中最适手的,无论是大手还是小手,都能轻松地单手操作。iPhone 8 Plus 未必适合所有人单手操作,但 iPhone X 因为没有了 Home 键,即使是手指短小的用户单手操作时也不会因为够不着 Home 键而尴尬了。然而有一点遗憾的是,由于有几个手势操作是要从屏幕最底部往上滑的,如果你习惯于握机身中间,大拇指太短的用户仍然需要调整一下单手握姿,将手指都集中在下半部分会更方便从底部上拉。iPhone X 在男生宽大的手掌里单手操作不成问题,普遍认为这是最适手的 iPhone 机身尺寸了。

iPhone X 前后也是采用了与 iPhone 8 和 iPhone 8 Plus 一样的坚固耐用的玻璃面板,这些玻璃材料经过了强化处理,强化层比以前增厚了 50% 之多。从外观上看今年新推出的 iPhone 配色虽然叫法一样,但呈现处理的色彩跟往年 iPhone  的色彩有一些区别,那是因为苹果运用了七层染色工艺,控制了色调和不透明度,并采用了反射光学层从而呈现出我们眼前这些新颖的配色。在 iPhone 8 和 iPhone 8 Plus 身上我们已经见识过,新的金色更粉嫩,银色更浓郁,深空灰更深邃。iPhone X 同样也是呈现了这样的色彩效果,不过 iPhone X 只有银色和深空灰两种配色可选。

要问这两种配色如何选择,见过实物的笔者也顿时有了选择困难症。银色的不锈钢边框是锃亮如镜的,而深空灰的版本其不锈钢边框的颜色经过一项叫“物理气相沉积”的工艺处理后可以做到跟玻璃颜色完全一致,这使得深空灰色的 iPhone X 更有浑然一体的感觉。iPhone X 的不锈钢边框也并非我们日常所见的不锈钢,而是手术级的定制不锈钢,质地纯净,精心打磨,与前后玻璃面板的密合度极高,具有防溅抗水防尘的作用。

所有这些精致的材料,使得 iPhone X 单手握的重量略比 iPhone 8 Plus 瓷实,但是并不会太重,柔弱妹子长时间握着也不会觉得累。iPhone X 的手感非常舒服,尤其是不锈钢边框,比 iPhone 8 Plus 更为舒服,然而这也没什么用,毕竟我们都是戴套一族。

iPhone X 戴上保护套也不怕识别不出来,除了全面屏外,机身背后的双摄像头也有了新的设计,由横向设计改成竖向设计,识别度很高,再也不怕别人认不出用的是最新款的 iPhone 了。

iPhone X 的侧边按键和音量按键还是在老位置,但是它们的用法都有了些许改动,文章稍后还会提到这些按键都可以怎么用。

iPhone X 光看外观就那么让人爱不释手了,我们再继续了解它的其他特性,看看到底还有哪些让那么多人疯抢的亮点吧。

面容 ID

iPhone X 没有了 Home 键,用的是 Face ID (面容ID)来解锁。脸部识别技术说新不新,但却是首次应用到 iPhone 上,因此这也是一个备受关注的亮点功能。

关于面容 ID 人们有一些质疑,质疑它解锁屏幕的精准率和效率,质疑它用于支付的安全性。在发布会上苹果用数据说明了面容 ID 被成功破解的概率相比 Touch ID 降低了很多。Touch ID 成功被破解的几率是1/50000,面容 ID的成功破解概率是百万分之一,当然如果在遇到双胞胎和面容相似度极高的情况这个概率就另算了。

面容 ID 集成了多项先进的技术,简单来解释这些技术的协作过程,就是通过屏幕上方的“原深感摄像头系统”,也就是俗称的“刘海”,给你的脸部绘制一张独一无二的脸谱,但不是图像那么简单,所以企图靠给 iPhone X 看一张照片就想糊弄过去是不可能的。当用户“看一眼”iPhone X 时,会通过投射并分析 30,000 多个不可见的点来捕获准确的面部数据,进而创建您面部的深度图;另外它还会捕获您面部的红外图像。A11 仿生芯片的神经网络引擎有一部分安全存放于 Secure Enclave 中,它会将深度图和红外图像转换为数学表示形式,然后再将这个表示形式与注册的面部数据进行对比。因为用的是红外镜头,这就解释了人们的另一个疑虑:全黑的条件下能识别吗?答案是可以。

面容 ID 的设置很简单,就跟我们之前设置指纹一样,对着 iPhone X 转动头部,直到把圆环填满即可,需进行两次扫描,但整个过程很快。设置面容 ID 没有什么讲究,即使你设置的时候是披头散发的,平时扎丸子头也能识别。因为红外镜头是围绕你的眼睛、鼻子、嘴巴区域来绘制脸谱的,跟旁边的头发、络腮胡、有没有戴帽子和眼镜这些都没有关系。A11 仿生芯片还能利用机器学习来逐日了解你的面容变化,苹果举了一个例子,如果你决定蓄胡子,由小胡渣蓄成络腮胡,这些日子 iPhone X 都能识别出来是你。但突然有一天你又决定剃得干干净净,这变化太大了,iPhone X 会有一些不确定。

对于“面容 ID 解锁更快还是 Touch ID 解锁更快”这个争论,笔者经过多次体验感觉面容 ID 略胜一筹。首先,Touch ID 在手指有汗、水,或者有点油腻的时候解锁有点麻烦,面容 ID 不存在这个问题。脸上油腻一些或者脸上沾汗、水都没有关系。其次,面容 ID 识别的速度本身就比 Touch ID 更快一些了,加上还可以在识别的同时直接上划进入主屏幕,相当效率。只要我们能习惯于拿起 iPhone X 点亮屏幕后手指轻扫上滑,在做这个动作的同时面容 ID 已经成功解锁。但是用惯了 Touch ID 之后多数人仍习惯于盯着 iPhone X 等着屏幕自己进入主屏幕,其实面容 ID 早已替你解锁好了,正等着你上滑屏幕进入主屏幕呢。

虽然面容 ID 可以识别出戴眼镜的你,但在短时间的体验中发现面容 ID 的识别解锁还是有些讲究的,比如捂着鼻子的时候不能识别,刘海遮眼没关系,但大量头发盖着眼睛甚至盖着鼻子,这也是识别不了的,侧躺着脸部被挤压的时候也不行,略微低头可以识别,但低头的时候 iPhone X 是平放的,也不能识别,这也防止了 iPhone X 放你旁边的桌面,你侧一下头就把它给解锁了,这是不行的,还是得把 iPhone X 拿起。

总之,一时半会也总结不出面容 ID 在什么情况下会识别,但可以肯定的是,如果正常拿起 iPhone X 屏幕面向自己,几乎都可以成功解锁,并且速度很快。

面容 ID 还被用于 iTunes 和 App Store 获取 App,Apple Pay 和获取 Safari 保存的密码。在获取 App 时就面部 ID 就显得非常谨慎了,选取某个 App 后并不会“看一眼”就获取,而是需要连按两次侧边按键,然后才能进行面部 ID 的识别。这是给用户进一步确认购买的步骤,以避免不小心点击购买按键后“看一眼”就支付下单了。

说到面容 ID 的支付功能,有人会疑惑别人会不会趁你睡着了拿起你的 iPhone X 对着你的脸部“胡作非为”?这个问题虽然经过苹果的确认是不可能的,笔者还是自己测了一遍,闭着眼睛,甚至是微闭着眼睛,都没办法解锁面容 ID,即使把眼睛用手指用力撑开也不可能,广大老公们可以放心地睡了。

没有 Home 键怎么办

iPhone X 已经没有了 Home 键,除了没有 Touch ID 解锁外,很多此前已经习惯了的操作都需要我们重新去学习新的手势操作。在没有如此近距离接触 iPhone X 之前笔者会担心学习的成本是不是会很高,担心不习惯新的手势操作,接触了一天后发现其实这些担心都是多余的,新的手势操作很自然就能习惯起来。下面我们通过几个动图来看新的手势操作都有哪些。

控制中心从右上角下滑

锁屏有两个按键,需要3D touch轻轻按压可直接使用

侧边按键+任意音量键

侧边按键+音量上调键

从屏幕底部上拉停顿一会儿

从当前 App 界面上拉停顿一会儿

3D Touch按压直到出现删除键

动话表情

iPhone X 的原深感摄像头还能捕捉面部肌肉的运动,在 iMessage 以动话表情的有趣方式呈现,通俗地说,我们可以制作自己的表情包了。这个功能放在国内将会大受欢迎,相信未来会有很多有趣的表情包出现。

欢迎分享更多好玩的表情包

全面屏

iPhone X 最吸引人的还有它的全面屏。这是一块 5.8 英寸的超视网膜高清 OLED 显示屏,对比度高于行业普通的 OLED 屏幕,并实现了真正的 HDR(高动态范围)显示。

iPhone X 屏幕的色彩显示非常逼真,支持广色域技术,无论是欣赏高清视频还是浏览文字,都会更为清晰、真实。同时它还支持原彩显示,可以根据周围环境光来调节屏幕的白平衡,使得屏幕上的内容看起来自然,像在看纸质的内容似的,减少眼睛的疲劳,这个技术在 iPhone 8 和 iPhone 8 Plus 上也有应用。

ARKit

假唱

iOS 11 推出的 ARKit 给了开发者很多想象的空间,我们在 iPhone 8 和 iPhone 8 Plus 的评测中也略有提到 AR 功能。而在 iPhone X 中,因为原深感摄像头可以追踪用户脸部的运动,开发者的想象空间就更大了。例如一款叫天天P图的 App,可以利用原深感摄像头玩“变脸”,它可以准确追踪你的脸部,而脸谱则可以完美契合你的脸部,跟着你的脸部挪动而动。这还只是其中一个 App,随着 ARKit 越来越多开发者的加入开发,加上 iPhone X 的原深感摄像头追踪人物脸部姿势、表情的技术,未来还将有更多好玩的自拍 App 出现。

初体验的感受

iPhone X 太多亮点了,光靠短时间的接触是体验不完的,除了这几个主要的亮点外,iPhone X 还具有 iPhone 8 和 iPhone 8 Plus 所增加的新功能和特征,如人像光效、A11 仿生芯片、无线充电等。

无线充电

没有 Home 键的 iPhone X 对 iPhone 老用户来说很新鲜,在刚接触之处可能会有一些不习惯,比如有时候会不自觉地想按压 Home 键,但用上一段时间就很快可以熟悉,并感受到面容 ID 的高效率。

iPhone X 的外观很精美,被大家调侃的“刘海”并不影响 iPhone X 的整体美观,当在观看视频,或者打开一些边框背景色为黑色的 App 时,“刘海”被完美隐藏,整个屏幕更为立体,仿佛呼之欲出。

仅从这些亮点来看,等待漫长的发货时间还是值得的。

新闻来源:http://www.cnbeta.com

原文地址:http://www.cnbeta.com/articles/tech/666005.htm

前端开发:如何写一手漂亮的 Vue

前几日听到一句生猛与激励并存,可怕与尴尬同在,最无奈也无解的话:“90后,你的中年危机已经杀到”。这令我很受触动。显然,这有些夸张了,但就目前这日复一日的庸碌下去,眨眼的功夫,那情形就会在这骨感的现实面前,悄然的被显现。所以,越发体验到,当必要有计划的去做,去写,去玩,去嗨,利用好这荷尔蒙分泌还算旺盛的时光,去厚积去博取,去发现去折腾;让自己的生命不在仅是工作与惆怅,还有时间分与“诗和远方”。不用分析,就知道这该如何去做,高效去完成工作,然后去学着优雅地生而活。目前犹身为前端开发者,且在使用 Vue,那么就有了此文;这不仅是纪录或分享,也是在漫漫之路上下求索,更希望能探讨和指点,以资见识,提升其效。

微注: 早先在写[如何优雅地使用Sublime Text]时候,前后历经10月,至今虽不断更新犹在,离该话题也是相去甚远。所以,谈及此一个宽广话题的存在,欲一谈也须深入研究,非朝夕可至;所以本篇将采取不定期更新,当然,这么做,也是治疗自身拖延症之一法子;另外也是限制聚合网抓取的一种尝试。
更新: 对于如何构建 VueJs 项目,自然推荐官方的脚手架 vue-cli
;而对于微小型项目,个人倒挺看好poi —— (Delightful web development),它能让你十分便捷的使用当前流行的框架(Vue React等)。即便如此呢,很多业界朋友,对 Vue 项目的构建,还是不尽如人意;鉴于此,有根据过往的些许经验,设计出一套样板 ——vue-boilerplate-template,以供参考,当然也期待朋友给予指正。其中已经依赖了vue-router
vuex、 vue-i18n、 element-ui、 bootstrap 诸多库;也注入了 webpack、 Eslint、 pre-commit等等便捷开发相关的库。其中对与后台接口调用与使用,vuex 的运用,视图结构的塑造,路由和多语言的配置,公共方法的调度,webpack打包优化等等,都基于便捷开发的前提下,做了相应的设计,希望有缘人会喜欢;这一番设计缘由,得空会另起一篇文章予以阐明;而这番设计也会,在不断的学习中持续改进,敬请期待

随言: 身在程序的江湖,如你是一位即将出征武士,对决于浩瀚无尽的需求大军;那么你不仅需要一副好的体格,还需要一身技艺:而这软件工程学
(抑或加算法)就好比内功(查克拉);而所使用的各家语言
,则好如武学招式(独孤九剑?);那加以利用的各种工具,当如随身利器(小李飞刀?);那属于自己一套极致开发流程,便是轻功(电光神行步?)……如是斯言,那么作为开发者的你,几技傍身耶?
如上随言,此篇准备从以下几个方面来探讨:

如何漂亮使用 Vue 之工具篇

欲先利其器,必先利其器,这是此博客一大倡导;关于如何优雅地去写好 Vue,工具自是首当其冲要提及的,毕竟这非常重要;在你选择使用 Vue 来从事前端开发的那一刻,你已经同意的这一论点:毕竟 Vue 也是用原生 Js 写的,Js 则是用 C 语言写,而 C 又是汇编写的….. 这不再是刀耕火种的年代,而你也未用汇编或 C 来解决你的需求,So,你是同意的。既是赞同的,岂有不用好它的道理?那么来一起探讨下:

外设:除了那些舒适坐骑与书桌外,双屏显示器,Mac则是必备外设装备;你知道,一屏编辑器中写着代码的同时,就能在另一屏 Chrome 下看到表现,这很高效便捷,也令人很是舒服。而 Mac 这设备中堪称优雅情人的存在,更是居家良品。倘若,所处的工作环境没那么看重效率,或者未表现出该有的慷慨,则一定须善待自己的精力和时间,勇于将自己的开发环境打造精良。

软件:身为开发人员,你电脑以及其中配备的软件,就好如武士手中的利剑,是助你大杀四方的存在;所以无论是用它来玩一玩恶作剧,还是来致敬把Dota,抑或是搞搞需求,皆十分有必要将其锋利化。因此,诸如 Alfred,Brew,Iterm2,Oh-my-zh,Git等必备就不说了;对于前端开发,编辑器与浏览器的配备与运用,尤其重要(对于这一点很多前端开发者,尚未达到及格,一如其水平);对于浏览器,只推荐Chrome,不只是浏览或者调试,更在于其搜索。而编辑器则推荐 SublimeText3与 AtomVsCode也很棒的存在,写前端后台都十分趁手(目测 Google 也都力推之);不太推荐使用 WebStorm,因为其除了反人类的操作设计外,感受不到其他可记住点。

周边:使用 Vue 开发开发前端,当须保持对周边工具体系,经常保持关注,比如NodeNpm(Yarn)WebpackGulp等,以及Lodashsuperagentd3等工具库,再有就是 Vue 系本身具库,譬如Vue-clivue-router等辅助;再有就是不断衍生出来的 Vue 插件扩展。Atwood定律中阐述到Any application that can be written in JavaScript, will eventually be written in JavaScript.(翻译过来即是:凡是能用JavaScript写出来的,最终都会用JavaScript写出来)。这个理论同样适用于 Vue,它简易强大的存在,吸引了很多超厉害的开发者或团队,为其贡献了无数好用的组件库。比如: 饿了么出品的Element-UI,还有 vue-echartsvue-multiselect …… 具体可以参看awesome-vue,略睹其繁华似锦。

(web前端学习交流群:328058344 禁止闲聊,非喜勿进!)

如何漂亮使用-Vue-之基础篇)如何漂亮使用 Vue 之基础篇


软件工程学,作为程序员,本就该是当学好的一门技艺。像[代码大全2]以及[程序整洁之道],一定是需要好好读一读的。Web 前端开发,因其入门的容易性(还有需求的旺盛),造就了这一行涌进了不少急功近利者,也惊现了很多令人“不堪卒读”的代码。而前端发展日新月异,如不能渐而掌握,长期来看,委屈的倒也不全是别人(读你代码者),更是自己;举个浅显的例子来讲,如不能学会很好的组织代码结构,即便有高手写了架构,一旦项目渐大,不也是照样面临被自己坑苦的凄楚?事实上,不乏很多开发者,未能养成很好的编码素养,基础如变量方法命名,也是能令人心惊肝颤;很显然这是损人不利己的行为,势必当善之。

对于团队来讲,Eslint实在是需要配备的利器;既然难以保证每个人都很有素养,那么必须适当强制;至少避免了丛生些杂乱不堪的代码,以乱军心。当然,使用伊始,总会有些人不太适应,所以玩转编辑器的重要性,就再次体现出其价值了;由此也引出了自动化(半)工作流的话题了,这在之后的内容中会加以探讨。

前端基础技术,从事前端开发,长久之计来看,基本功是非常重要的;尤其是 JavaScript;这在写 Vue 时候,也体现的比较明显。其他如 Html,Css,自然不用说;除此之外,Scss 等预处理器,也是当学习并加以运用,以提升开发效率,节省开发成本;毕竟只有节省出充裕的时间来,才会去做更多优化,节约出更多精力与时间,一个优良的循环就此得以形成。

Vue 基础,这一点很重要,熟读[Vue.js 官方教程],再没有比这更好的教程了;根据之前经验来看,心急是吃不到热豆腐的,欠下的也终究得还;至少起初需通读之,否则遇到问题,无法及时定位出在哪儿查究,这无疑会浪费更多时间。除此之外,Github 上找一份好的微型项目,认真读下,可以发掘出很多值得学习的玩法。

善用配置,《代码大全》第 18 章,讲到表驱动法(Table-Driven Methods),对于编程从业者,很有必要一读。很多时候,可借助查询表来加以简化逻辑和继承树关系。这在团队协作,分模块开发模式具有更非凡价值;应该善用配置,将各个模块予以抽离,使得相互间不存强依赖,如此开发环节也大大的避免代码冲突。譬如,了解 JavaScript 特性,即可做如下写法:

const files = require.context('.', true, /\.svg$/)
const modules = {}
files.keys().forEach((key) => { if (key === './index.js') return modules[key.replace(/(\.\/|\.svg)/g, '')] = files(key) }) export default modules 

这样即可写出便捷的 [Icon Component],使用时只需添加新 Svg 入 assets,然后引用 icon 时填写对应 Svg 名字即可,十分方便;推此及它,我们可借助这样配置,去分解、组合各个模块,甚是方便。


Vue有三大特性,十分令人欣喜;一是其数据的双向绑定,即:通过数据绑定链接View和Model,让数据的变化自动映射为视图的更新。另一个是其数据驱动的组件系统,即:用嵌套的组件树来描述用户界面(而一个组件恰恰可以对应MVVM中的ViewModel),其三是基于构建工具的单文件组件格式,即其所提供了强大的loader API,来定义对不同文件格式的预处理逻辑,从而让我们可以将CSS、模板,甚至是自定义的文件格式等,当做JavaScript模块来使用,极大提升了代码的可复用性;Webpack 基于loader还可以实现大量高级功能,比如自动分块打包并按需加载、对图片资源引用的自动定位、根据图片大小决定是否用base64内联、开发时的模块热替换等等。当然 Vue 还具有其他若干令人击节赞叹的设计。

鉴于此,如果可以很熟练的掌握其数据的绑定与传输,组件的开发,以及周边 Webpack 等相关配置,则能将运用水平视为进入了一个新的层次。据以往经验来看,这不是一件容易的事儿,毕竟使用这 Vue 也是冲着解决需求去了,而非在搞研究。谁能说开车上路的司机,能了解关乎车的所有?相信,接下来的很长时间里,都须对这几方面加以学习、探索,然后加以利用。

如何漂亮使用-Vue-之实战组件篇)如何漂亮使用 Vue 之实战组件篇


Vue 一大特色是用嵌套的组件树来描述用户界面。所以组件的设计与编写至关重要;至少要保证她是易于修改和维护,可复用性和可读性高,耦合度低,接纳团队合作性开发… … 诸此等等。项目一旦庞杂,更得事先考虑好整个架构的设计,使其清晰合理;组件缓存的使用、避免过重组件的衍生 … 。而 Vue 组件系统又是有数据所驱动,更得兼顾数据在各种组件间通信,避免数据被多方操作,Bug 难以定位等问题。

这是一个须长期积淀的技能,非朝夕可至。但,部分内容只需刻意关注,即可见其成效的。比如,简明且见名知义的命名,良好的编码规范,团队统一编码风格,以保证代码的可读性。运用设计模式原则,比如单一职责原则,将组件拆分抽离成更细粒度,保证组件功能单一,以提升组件复用行;再如接口隔离原则,采用稳定的服务端接口,将变化模块分离,使得组件得以解耦;在复杂的项目中,也是需要用到冗余、继承,这时候也需要关注下里氏替换原则依赖倒置原则… 。另外还当学习 Vue 本身所提供的优化,像[路由懒加载], 即:结合 Vue 的 异步组件 和 Webpack 的 code splitting feature, 轻松实现路由组件的懒加载,使得该组件访问时才加载,以提升页面加载效率,还有利用服务端实现首屏渲染,组件缓存等等,尤须注意的是组件间数据通信,这在之后一节中会提及,此处不做赘述。

这里需要学习探究的点很多,非片言可蔽之,看到一份 PPT Vue.js实践: 如何使用Vue2.0开发富交互式WEB应用;个种谈到 Vue 许多相关的点,值得一览。另外,如是为团队写公用组件,一定记得附上对应使用文档,这很重要。你看,如上所说,要写好一手漂亮 Vue(代码),软件设计学问,是少不了的存在,不是么?(web前端学习交流群:328058344 禁止闲聊,非喜勿进!)

如何漂亮使用-Vue-之实战通信篇)如何漂亮使用 Vue 之实战通信篇


早先有在[Vue 各类数据绑定]一文中,对 Vue 数据绑定有过些描述(version 1.);虽然如今 Vue 早已升级至 2.,不过数据绑定变化虽多,但大局影响不大,譬如:不再允许片段实例;须以v-html取代三 Mustache 语法;变更 v-for 遍历时参数顺序等等,具体可参见[从 Vue 1.x 迁移]。此处就数据在 vue 组件间传递做下探讨。

Vue2 移除 dispatch() 和 broadcast()之后,主要通过 prop
(包括 v-model 自定义) 实现父组件向子组件传参,且只能单向传递;为了防止对父组件产生反向影响,Vue2 已移除了 .once 和 .sync 修饰符,子组件需要显式地传递一个事件而不是依赖于隐式地双向绑定。 一旦你试图在组件内,直接修改通过props传入的父组件数据,这将被认为是anti-pattern的,报以下错误:

Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop’s value.

但,如果传递的 prop 本身是引用型传递,像对象或者数组,由于数据类型自身特性,无论是什么绑定方式都会是双向绑定!这些在Vue文档-单向数据流中有作说明;请看这个例子:

这里需要留意的是:Vue 要么监听的是基本数据类型的值变化,要么监听的是引用数据类型的引用变化;因此,vue对于数组,才自己封装了一套方法(包括$set , $remove),如果直接变更引用类型的内容,即便数据已经修改,但 Vue 是感知不到的,所以视图将不会更新(针对性的对属性进行赋值操作,则会调用其属性的 set 方法,因此Vue会得到感知,从而驱动视图更新)。这里需要补充的是:Vue 使用 Object.defineProperty(ES5特性)将数据转为 getter/setter,从而实现对数据的 watchersetter被调用时重新绘制关联的 Dom,从而刷新视图。

所以,对父组件传递来引用型数据,如需更改,最好改动做深度拷贝后的数据,而且需要注意得失,Object.assign不是深度拷贝,即便采用了 Object.freeze()去冻结。对于子组件向父组件回传参数,可借助 $emit,当然也可以使用 callback Functon,可参见jsfiddle 示例。非父子组件间通信,Vue 有提供 Vuex,以状态共享方式来实现同信,对于这一点,应该注意考虑平衡,从整体设计角度去考量,确保引入她的必要。如果项目不怎么复杂的话,完全可以自己设计一套 vue-bus,以提供了一个全局事件中心,使得可以像使用内置事件流一样,便捷的使用全局事件。当然,Vue 也提供了 $refs,可以跨层调用,或者诸如这样this.$parent.$parent;提供了不代表推荐;尽量少的去运用,除非逼不得已,或者去恶作剧坑人。当然,也可借助原生Api sessionStoragelocalStorage 等等进行数据存储,以到达通信目的;对于,兼顾得失,争取扁平统一化通信方式就好。鉴于篇幅,就不多赘述。

如何漂亮使用-Vue-之Webpack篇)如何漂亮使用 Vue 之Webpack篇


前文提到,推荐使用Vue-cli,它已然帮助我们贴心的配置好了 Webpack 相关。在编写 router 配置之时,可以轻松实现路由组件的懒加载,使得项目可以拆分成若干个 js 小包,和一个略大的 vendor,运行时按需去加载。即,我们可以像如下用法,去配备路由组件(当然,我们也可以把组件按组分块):

import Frame from './../views/Frame'
export default {
  path: '/',
  component: Frame,
  children: [{
    path: '/nicelinks',
    meta: {
      title: setTitleLang('晚晴幽草轩', 'Nice Home Blog')
    },
    component: resolve => require(['./../views/Nicelinks'], resolve)
  }]
}

DllReferencePlugin
除此之外,在webpack这块,还是有非常多东西需要去优化,以缩短包构建的时间、改善其体积等等。比如可利DllReferencePlugin将常用不怎么变更的文件,抽离出来打入另一统一的文件(vendor.dll.js), 外链以 script 引入。这个网上教程很多,此不赘述。

webpack-bundle-analyzer
最新 Vue-cli还帮着注入了 [webpack-bundle-analyzer]插件(Webpack插件和CLI实用程序),她可以将内容束展示为方便交互的直观树状图,让你明白你所构建包中真正引入的内容;我们可以借助她,发现它大体有哪些模块组成,找到错误的模块,然后优化它。我们可以在package.json中注入如下命令去方便运行她(npm run analyz),默认会打开 http://127.0.0.1:8888作为展示。

“analyz”: “NODE_ENV=production npm_config_report=true npm run build”

webpack-bundle-analyzer在引入了 DllReferencePlugin插件后,想必会在 webpack.dll.conf.js中将 vue加入进去;例如进行了如下配置:

entry: { vendor: [ 'lodash', 'superagent', 'vue', 'vue-router', 'vue-i18n' 'vuex' ] }

当你使用 webpack-bundle-analyzer去分析时,你会发现 Parse Size 为 71 KB 的 vue.common.js,会出现在 vendor.xxx.js 中,按预想它不是应该被打入 vendor.dll.js 中的?谈及这里,为了保证文章的完整性,不得不提下,vue2 经过 2.2 版本升级后, 文件变成了 8 个,分别是:

vue.common.js
vue.esm.js
vue.js
vue.min.js
vue.runtime.common.js
vue.runtime.esm.js
vue.runtime.js
vue.runtime.min.js

这在Vue2 dist 目录下各个文件的区别, 可以浏览。另外,vue 文当独立构建-vs-运行时构建,也阐明了两者区别;这 vue.common.js 隶属独立构建产物,而默认 NPM 包导出的是 运行时 构建,为了使用独立构建(支持 template),在 webpack 配置中添加下面的别名:

resolve: { alias: { 'vue$': 'vue/dist/vue.common.js' }
}

如此一来,在 webpack.dll.conf.js 配备中注入 vue,导致 vendor.xxx.js 中出现 vue.common.js,就能够得到解释了:dll 中对 vue 打包配置,与 resolve 中引入有出入,前者默认为运行时构建。如能保证是一致了,此问题即可解决。这一点,有经过测试,得出数据如下(resolve 配置如上):

  1. webpack.dll.conf.js 中注入 vue,build 之后得到 vendor.xx.js 611KB, vendor.dll.js 180 KB;
  2. webpack.dll.conf.js 中注入 resolve 同名引入 vue/dist/vue.common.js,build 之后得到 vendor.xx.js 540KB vendor.dll.js 207 KB;

两者比较,vendor.xx.js 相差 +71 KB,正是 vue.common.js Parse Size;vendor.dll.js 相差 -27KB,即运行时构建所得大小。打开生成的vendor-manifest.json,也会发现,前后生成 vue 相关的引用分别是:

/node_modules/vue/dist/vue.common.js
./node_modules/vue/dist/vue.runtime.common.js

如何漂亮使用 Vue 之工作流篇


“轻功不代表武功,但速度决定了你我的距离。”——白凤(秦时明月)。智能化、自动化趋势越发明显,作为程序员如不能尽快适应,其所面临的窘境可想而知。不久的将来,蓝领代码民工,势必会在科技的浪潮中捉襟见肘;所以这更加要求从业者能快准稳的去解决需求,同时保持知识技能的不断更新。而这快字,自然是业务技能熟练度多半取决定性作用,但如果有优善的工作流机制,势必锦上添花。而这个话题,所涉及的点线面,非一言可以蔽之;这会在渐进的学习探索中不断去变化更新。但至少一个当前的准则是:即便不能全自动,至少也须半自动化。(web前端学习交流群:328058344 禁止闲聊,非喜勿进!)

很多朋友使用 hexo来构建博客;hexo 是基于 Node.js产物,用它发表博文,很是方便;你只需hexo clean,hexo g, hexo d三个命令即可;文章数据一多,一套打下来,也得 20s+;如果略懂 npm,在 package.js 中加入点命名,例如像这样;

"scripts": {
  "start": "sudo hexo clean && sudo hexo g && sudo gulp && sudo hexo d"
}

那么 只需运行 npm start就好,可将时间消耗缩短至 2s节省时间虽说不多,却也是数量级的提升,而且代价只是那么小,并一劳永逸。所以有必要对此,以些许微薄经验略作阐述,抛砖以引大玉。

  • Vue-cli虽然强大,但毕竟作为基础公用,不宜繁杂。应有自己(团队)的脚手架,当准备开启新的项目时候,只需运行脚手架,以初始化整个项目,而不是一点点拷贝,然后各种重新配置,引入路由,注入 Bootstrap … 。相同项目中也该有可一键生成的模版库,或者自动化的 Json 解析机制。

  • 开始编写代码前,必须同后台er,预定好接口,参数以及返回数据;并令之生成方便检索,可供测试的可视化 API 文档。再没有比这更重要的(如果项目超过一月/人)。像这样开源工具,也多不胜数,比如 Swagger-Ui

  • 在编写代码时候,则该先三思而后写。而写时,当确保编辑工具的犀利化,比如检索语法错误,开合标签完整,自动格式美化代码,使之契合约定的 Eslint 要求,也保证代码清晰简洁;想象下如果你的书桌上整天被摆满了虫蝇墨液,你作何想?

  • Vue-cli 已帮配好了代理,无需担心本地调试跨域问题;但如何能快速提交有效代码,需要自行配备。命令行也好,SourceTree 可视化工具也罢,方便快捷就好。也该借助pre-commit工具,在 commit 前执行校验,防止出现非法提交,影响队友。

  • 从业历程中有经历过手动打各种测试 APK 的凄惨,也经历了手动各种 build 发布的艰难,至今想起,满是心酸。所以,监听仓库代码变化,自动化构建,此乃居家生活必备良品。从业中还经历过各种关闭 Bug 的奇葩方式,坦言做这事儿比解决所谓 Bug 花费的时间还多。而这些,无非是那时候团队见识短浅之诟病耳,如今团队使用 jenkins 和 GitLab,双剑合壁,再无那种痛楚,感动。

  • 何谓之写出漂亮 Vue?不仅在于代码之优美,还在于其高效,资源节省。以数据驱动的 Vue 本身很是效率;但使用 C 写出的代码不见得都比 JavaScript 要高效,这变数在于是不同人去写。由此,除了 Code Review 代码外,也须有一套行之有效的全方位分析方法。以保证代码的按需加载,Css 的合理编写 & 引用,凡此等等。

  • 何谓之写出漂亮 Vue?还在于其可靠、稳定,而这些最终是要反映在于产品之上;因此,好的产品不仅须配备访问情况,行为分析,事件埋点,也得有错误上报。早先有用简书这款读写一体的产品,如今上面不仅充斥各种鸡汤与戾气纵横的标题文,还充斥这各种 Bug,尤其是在 Web网页上(Mac mini,Pc),反馈无门,简直惨不忍睹;何也?断定他们肯定是没有使用 sentry 类似产品工具的。

  • 一门后台技术;不懂后台的前端不是好设计师;这看似调侃的话,实则还是挺有道理的。如今,大行其道的前后端分离开发模式,如果各司其职的双方,能够懂得彼此技术,则更容易配合,也更效率。而更多时候,何况出于某些需要,前端写后台,也是常见;对于个人而言也是好事,艺多不压身。最近有在写点个人产品,如果寻找后台开发协助,比自己学习如何写后端,其中麻烦肯定不会少;而且也非长久之计。即便都没这些,要解决 Vue SEO 以及提升渲染速度,做 Vue SSR 相关,也是需要懂些后台技术。

  • 设计相关;这个设计,不但包括代码结构、层次、接口等设计,对于前端从业者,必然也包括页面相关;比如,正在开发的个人产品: 倾城之链(英文名曰:NICE LINKS),因为设计美学上的欠缺,可谓步履维艰的初步塑造出大致应用,但,从视觉效果来看,总觉得差那么些意思,仍在苦思中等待枯竭。即便没有类似需求,页面已然有设计师画出稿来,如要完美的还原,这设计相关的素养,也是不可或缺的存在;毕竟产品最终呈现给用户的形态,取决于我等前端开发者。

写在最后的结语


“你首先得是一位程序员,然后才是一位前端程序员”,这个观点很有道理,并且将随着时间的更替,显得越发明显。因此本篇所要探究的,不仅仅限于对Vue的学习与运用,更深层次的意图在于,以当前流行框架Vue为突入口,分享时下书写前端的一些开发经验、编程心得、以及产品用户体验等。很显然,这里谈及的只是其中冰山一角。况且前端发展如此,欣欣向荣,也是很难面面俱到。我们唯有秉承不断学习之心态,拥抱变化,面向未来,才能在这汹涌的浪潮中、不至于被落下更远。谈及这里,很有必要分享下,最近一直在搜集更新的[与时俱进版前端资源教程],其着重搜集时下与未来技术的优秀之文,以及工具、优化、测试、安全等精华之章,宗旨是为前端学习、 技能提升、 视野扩展、 资料查找等行个方便;有兴趣的朋友,可以关注了解下,或者更进一步,协助补充 & 修正,让其能服务更多的人。

新闻来源:http://geek.csdn.net

原文地址:http://geek.csdn.net/news/detail/242341

卖身后真被毁了吗?盘点那些被收购的良心App

对于安卓用户来说,选择某个App的时候,除了关心App本身是否好用,还得考虑这App是否流氓。流氓App往往会申请一堆权限、疯狂驻留后台,你会感觉无时无刻不被窥视乃至强奸,相当折腾。因此,一些来自个人开发者或者小公司的App,会是更好的选择。

对于安卓用户来说,流氓App是不得不考虑的问题

和互联网大公司的产品相比,个人开发或者小团队小公司出品的App,作风往往会更加干净。一方面这是由于互联网大公司往往存在野心,什么功能都向往App里面塞,App自然会变得臃肿流氓;另一方面个人开发者和小团队小公司也没有太大的考核压力,所以没必要让App驻留后台疯狂唤醒刷日活率。因此,这些个人或者小团队开发的App,往往会有着“良心”的美誉。

然而,只要你给够了钱,良心产品是可以换东家的。不少用户喜闻乐见的良心App,都被商业公司所收购,至于被收购后画风有没有剧变,就一切随缘了。今天,就一起来盘点一下那些被商业公司收购的良心App,它们有没有会毁掉呢?一起来看看吧。

SuperSu:被CCMT收购后增加权限

SuperSu这个名字相信root玩家都相当熟悉,这一度是最好的root权限管理工具。某部安卓机想要root,经典的方法就是在Recovery中往System刷入SuperSu。SuperSu来自于Chainfire这位赫赫有名的国外开发者,不过在去年,它被中国公司CCMT所收购。最近,Chainfire更是出走SuperSu开发团队,不再负责SuperSu的开发。

长久以来,Super Su是安卓玩家们管理root的第一选择,但它已经换东家了

SuperSu被收购后发生了什么转变呢?毫无疑问它变得更加商业化了。在SuperSu 2.80的版本中,它新加入了精确位置、查看网络连接、完全访问网络、查阅敏感位置、读取手机ID信息、修改SD卡内容等敏感权限。要知道这只是一款root权限管理器,这些权限都和功能无关。毫无疑问,SuperSu在干净程度上,已经算得上是作风大变了。

对于这种功能敏感的App,还是开源的非商业化作品更让人放心。如果你不喜欢SuperSu,那么可以考虑换用magisk,这款工具作用类似,但完全开源,还是很值得信任的。

快图:被猎豹移动收购后增加服务

这是一款久负盛名的图片浏览App,将其称之为安卓上最好的看图应用,相信很多用户都没有异议。它来自于个人开发者郑南岭,无论在国内外,快图都是良心App的代表之一。

快图的优秀有目共睹,几乎无可挑剔

一方面,它效率高、功能强大而且先进,对图片的扫描、排序、缩放、云备份等功能都实现得非常出色,长久以来还跟进安卓最新的设计规范,例如Holo Design和Material Design;另一方面,它干净得不可思议,体积仅有1M左右,权限也只申请了10个(大多和网络有关,云备份所需)。更为良心的是,它完全没有广告,也不收费,这种高质量的义务劳动,的确配得上国内外的一片美誉。

不过,快图已经被猎豹移动所收购了。根据开发者的说法,维护这App需要太多的投入,快图团队并入猎豹会有着更好的发展。快图被猎豹收入旗下后,变化还是比较显著的,体积从以前的1M涨到了3M(但依然袖珍),申请的权限几乎翻倍,功能上也积极植入快图方面的云服务。总的来说,用户体验依然很出色,但看着并不如同以前那样作风干净。

ES文件管理器:被百度收购后增加功能/广告

ES文件管理器也是安卓用户都相当熟悉的App,很多人都将其视作是装机必备的产品。ES文件管理器此前是亿思创世的作品,它的功能之强在同类App中首屈一指。无论是普通的文件管理、分类等功能,还是根目录下对系统文件的修改,只要是文件管理器该做的事情,ES基本都可以实现。

ES文件管理器是最受欢迎的文件管理App之一

ES文件管理器后来归入到了百度旗下,发生了显著的变化。首先,它功能更强了,最令用户的满意的或许也是这点——ES文件管理器加入了百度云网盘的入口,把东西放到百度云上和放到本地一样方便,而且ES文件管理器的百度云似乎是没有限速的;其次,ES文件管理器出现了广告和其他推广内容,这点让App变得不那么的纯粹;再者,ES文件管理器申请了更多权限,现在它已经需要超过20个权限,作为对比,国外功能类似的MT文件管理器只需要10个权限。

ES文件管理器目前依然很受欢迎,如果你不喜欢广告,可以购买Pro版使用。

阻止运行:被猎鹰网络收购后推销返利

如果你有接触过安卓Xposed框架,那应该知道阻止运行这一款神奇的App。所谓Xposed框架,指的是一个hook了安卓系统关机接口的框架,如果App基于它开发,那么App就可以实现一些平常App难以想象的强劲功能。阻止运行就是基于Xposed框架的一款工具。

阻止运行是一款个人开发的精品,现已经被收购

阻止运行之前来自于开发者liu大大,它的作用在于禁用特定App的运行。借助阻止运行,你可以把某个流氓App完全封杀,非常有效。这款App原本似乎是作者开发给女友用的,但流出网络后饱受用户好评。然而作者并没有决定维护下去,于是App就卖给了猎鹰移动。

在被收购后,阻止运行也发生了一些转变,例如开始进行优惠券、返利等推广,这导致了一些用户的不满。不过,在其他方面,阻止运行倒是没有发生太大的变化就是了。

天天动听:被阿里收购后彻底转性

天天动听是一款历史悠久的音乐App,它在塞班时代就已经声名鹊起,是很多人手机听歌的首选App。不过,进入了移动互联网时代后,音乐App的决胜关键变成了网络音乐资源,天天动听在这方面难以和腾讯、阿里、网易等巨头竞争,最终它出售给了阿里。

天天动听已经改成了阿里星球,充斥着以追星为核心的社交功能,和原先定位有了很大差异

天天动听进入到阿里旗下后,被彻底改头换面,不再是一个音乐App,而是被魔改成为了“阿里星球”这款用于追星的应用。阿里星球的功能和音乐播放再无什么关系,它用于关注明星动态、购买明星周边以及演唱会门票等等。当然,用户依然可以使用旧版的天天动听,但再也无法使用天天动听的线上音乐功能。

对于天天动听的转变,不少用户都表示遗憾。且不说天天动听之前的表现如何,如此一款情怀满满的App就此消失,的确会令人惦记。

UC浏览器:被阿里收购后画风大变

UC浏览器也是一款资历甚老的App,在塞班时代,仍被称作是“UCWEB”的它,就已经凭借流量压缩技术打出一片天。在移动互联网时代,UC浏览器加入了更多功能,例如账号系统,但要支撑起一整片的生态,还是心有余而力不足。于是,UC浏览器选择了巨资被阿里收购,自己成为了阿里生态圈中的重要一环。

作为浏览器,UC仍非常强大,但UC已经不仅仅是一个浏览器

UC浏览器并入阿里旗下后,推出了更多功能,例如大家喜闻乐见的网盘等等。同时,UC浏览器的功能也越来越丰富,它已经不再是一个单纯的浏览器,还承包了资讯推送、活动推广等功能。不仅如此,UC浏览器推送的新闻还具有强烈的标题党属性,大家经常调侃的“UC震惊部”、“UC吓尿部”就是出自于此。

UC浏览器现在依然是装机量巨大的手机架浏览器App,它已经彻底商业化,当然UC在被收购之前就一直往商业化的路子走就是了。UC浏览器在今后还会有怎样的转变?还真是令人期待。

总结

可以看到,个人或者小团队开发的App,被互联网大公司收购后,多多少少都会有所转变。至于这算不算得上“被毁”,就看每个用户自己的接受程度了。你目前还在用哪些个人开发的良心App?你希望它被收购后大展宏图吗?欢迎在评论区留言讨论!

新闻来源:http://it.ithome.com

原文地址:https://www.ithome.com/html/it/332436.htm