山东青岛安卓培训就业中心 专业Android软件工程师培训,手机软件开发人才就业实训中心0532-85025005

JavaScript 中的遍历详解

 

编程这么多年,要是每次写遍历代码时都用 for 循环,真心感觉对不起 JavaScript 语言~

对象遍历

为了便于对象遍历的测试,我在下面定义了一个测试对象 obj。

测试对象

// 为 Object 设置三个自定义属性(可枚举)
Object.prototype.userProp = 'userProp';
Object.prototype.getUserProp = function() {
    return Object.prototype.userProp;
};
// 定义一个对象,隐式地继承自 Object.prototype
var obj = {
    name: 'percy',
    age: 21,
    [Symbol('symbol 属性')]: 'symbolProp',
    unEnumerable: '我是一个不可枚举属性',
    skills: ['html', 'css', 'js'],
    getSkills: function() {
        return this.skills;
    }
};
// 设置 unEnumerable 属性为不可枚举属性
Object.defineProperty(obj, 'unEnumerable', {
    enumerable: false
});

Tags:

发布: 青软于老师 分类: 未分类 评论: 0 浏览: 19

Android 优化APP 构建速度的17条建议

 

1,为开发环境创建一个变体

有许多配置是你在准备app的release 版本的时候需要,但是当你开发app的时候是不需要的,开启不必要的构建进程会使你的增量构建或者clean构建变得很慢,因此需要构建一个只保留开发时需要配置的变体,如下例子创建了一个dev和prod变体(prod 为release 版本的配置)。
android {
  ...
  defaultConfig {...}
  buildTypes {...}
  productFlavors {
    // When building a variant that uses this flavor, the following configurations
    // override those in the defaultConfig block.
    dev {
      // To avoid using legacy multidex, set minSdkVersion to 21 or higher.
      minSdkVersion 21
      versionNameSuffix "-dev"
      applicationIdSuffix '.dev'
    }

Tags:

发布: 青软于老师 分类: 未分类 评论: 0 浏览: 14

知道做不到,就是不知道

 

现在,信息来源很多,订阅了各种微信公众号,参加了很多的社群,付费了许多收费专栏。但是我们还是过不好,不停的学习新东西,但是成果貌似还是没有增加。有点狗熊掰棒子的感觉,学的多,丢的多,焦虑的也多。

何解?停下脚步好好想想,是不是我们哪里做的不对,是不是方法套路有问题,调整方向比努力更重要。


少即是多,不要掩耳盗铃,重复重复再重复,这三条是解决以上问题的方法,但是很多人并没有意识到,而且大家貌似已经听烂了。但越是简单的东西,往往是最应该值得特别注意的。

Tags:

发布: 青软于老师 分类: 未分类 评论: 0 浏览: 23

Java软件工程师就业思维图(2017年版)

 

想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,在面试之前到底需要准备哪些东西呢?面试时面试官想了解你的什么专业技能,以下都是一个合格JAVA软件工程师所要具备的。

一、专业技能 
1、熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。 
2、熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发经验。 
3、对Spring的IoC容器和AOP原理有深入了解,熟练的运用Spring框架管理各种Web组件及其依赖关系,熟练的使用Spring进行事务、日志、安全性等的管理,有使用SpringMVC作为表示层技术以及使用Spring提供的持久化支持进行Web项目开发的经验,熟悉Spring对其他框架的整合。 
4、熟练的使用Hibernate、MyBatis等ORM框架,熟悉Hibernate和MyBatis的核心API,对Hibernate的关联映射、继承映射、组件映射、缓存机制、事务管理以及性能调优等有深入的理解。 
5、熟练的使用HTML、CSS和JavaScript进行Web前端开发,熟悉jQuery和Bootstrap,对Ajax技术在Web项目中的应用有深入理解,有使用前端MVC框架(AngularJS)和JavaScript模板引擎(HandleBars)进行项目开发的经验。 
6、熟悉常用的关系型数据库产品(MySQL、Oracle),熟练的使用SQL和PL/SQL进行数据库编程。 
7、熟悉面向对象的设计原则,对GoF设计模式和企业应用架构模式有深入的了解和实际开发的相关经验,熟练的使用UML进行面向对象的分析和设计,有TDD(测试驱动开发)和DDD(领域驱动设计)的经验。 
8、熟悉Apache、NginX、Tomcat、WildFly、Weblogic等Web服务器和应用服务器的使用,熟悉多种服务器整合、集群和负载均衡的配置。 
9、熟练的使用产品原型工具Axure,熟练的使用设计建模工具PowerDesigner和Enterprise Architect,熟练的使用Java开发环境Eclipse和IntelliJ,熟练的使用前端开发环境WebStorm,熟练的使用软件版本控制工具SVN和Git,熟练的使用项目构建和管理工具Maven和Gradle。说明:上面罗列的这些东西并不是每一项你都要烂熟于心,根据企业招聘的具体要求可以做相应的有针对性的准备。但是前6项应该是最低要求,是作为一个Java软件工程师必须要具备的专业技能。

Tags:

发布: 青软于老师 分类: 未分类 评论: 0 浏览: 25

iOS绘图出现的错误

 

今天使用贝塞尔曲线运行后出现无效上下文错误,这里记录一下。
先上代码:
-(void)createCircle
{
CGPoint layerCenter = CGPointMake(CGRectGetWidth(self.view.frame)/2, CGRectGetWidth(self.view.frame)/2);
CAShapeLayer *layer = [CAShapeLayer layer];
layer.frame = self.view.bounds;
layer.lineWidth = 6.0;
layer.strokeColor = [UIColor redColor].CGColor;
layer.fillColor = [UIColor whiteColor].CGColor;
self.path = [UIBezierPath bezierPath];
[self.path addArcWithCenter:layerCenter radius:50 startAngle:0.0 endAngle:M_PI*2 clockwise:YES];
[self.path stroke];
[self.path fill];
layer.path = self.path.CGPath;
[self.view.layer addSublayer:layer];
}
错误日志如下:
Sep  9 16:09:01  Test1[28072] <Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Sep  9 16:09:01  Test1[28072] <Error>: CGContextSetLineWidth: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Sep  9 16:09:01  Test1[28072] <Error>: CGContextSetLineJoin: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Sep  9 16:09:01  Test1[28072] <Error>: CGContextSetLineCap: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Sep  9 16:09:01  Test1[28072] <Error>: CGContextSetMiterLimit: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Sep  9 16:09:01  Test1[28072] <Error>: CGContextSetFlatness: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Sep  9 16:09:01  Test1[28072] <Error>: CGContextAddPath: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Sep  9 16:09:01  Test1[28072] <Error>: CGContextDrawPath: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Sep  9 16:09:01  Test1[28072] <Error>: CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Sep  9 16:09:01  Test1[28072] <Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Sep  9 16:09:01  Test1[28072] <Error>: CGContextSetFlatness: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Sep  9 16:09:01  Test1[28072] <Error>: CGContextAddPath: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Sep  9 16:09:01  Test1[28072] <Error>: CGContextDrawPath: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Sep  9 16:09:01  Test1[28072] <Error>: CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
上网查找错误的原因,大部分都说是IOS9适配问题,设置app的状态栏样式的使用使用了旧的方式在IOS9中不兼容。但是我的工程中并没有设置状态栏,并且按照其解决方法更改后也没有解决这个问题。后来看到这篇文章H含金量 iOS绘图及贝塞尔曲线关键知识才知道问题所在。
因为绘图不在drawRect:方法中操作导致绘图时没有当前的图形上下文(context)可设置。所以应该在drawRect:中执行图形绘制。修改后代码如下:
-(void)createCircle
{
CGPoint layerCenter = CGPointMake(CGRectGetWidth(self.view.frame)/2, CGRectGetWidth(self.view.frame)/2);
CAShapeLayer *layer = [CAShapeLayer layer];
layer.frame = self.view.bounds;
layer.lineWidth = 6.0;
layer.strokeColor = [UIColor redColor].CGColor;
layer.fillColor = [UIColor whiteColor].CGColor;
self.path = [UIBezierPath bezierPath];
[self.path addArcWithCenter:layerCenter radius:50 startAngle:0.0 endAngle:M_PI*2 clockwise:YES];
//    [self.path stroke];
//    [self.path fill];
layer.path = self.path.CGPath;
[self.view.layer addSublayer:layer];
[self.view setNeedsDisplay];
}
- (void) drawRect:(CGRect)rect {
[self.path stroke];
[self.path fill];
}
或者改成这样:
-(void)createCircle
{
    CGPoint layerCenter = CGPointMake(CGRectGetWidth(self.view.frame)/2, CGRectGetWidth(self.view.frame)/2);
    CAShapeLayer *layer = [CAShapeLayer layer];
    layer.frame = self.view.bounds;
    layer.lineWidth = 6.0;
    layer.strokeColor = [UIColor redColor].CGColor;
    layer.fillColor = [UIColor whiteColor].CGColor;

Tags:

发布: 青软于老师 分类: 未分类 评论: 0 浏览: 22

物联网:黑客正在看着你

 

维基解密近期公布机密文件,表明美国中情局利用三星智能电视漏洞监听观众对话,突显物联网安全问题的重要性。

 

 


收藏

更新于2017年3月17日 07:50英国《金融时报》 汉娜•库赫勒  报道


当乔治•奥威尔(George Orwell)在《1984》里构想“电幕”(telescreen)——对观众进行持续监视的一种双向电视——时,他预言政府会使用技术手段闯入我们的私人生活。

Tags:

发布: 青软于老师 分类: 未分类 评论: 0 浏览: 11

Java并发编程:性能、扩展性和响应

 

1、介绍

本文讨论的重点在于多线程应用程序的性能问题。我们会先给性能和扩展性下一个定义,然后再仔细学习一下Amdahl法则。下面的内容我们会考察一下如何用不同的技术方法来减少锁竞争,以及如何用代码来实现。

2、性能

我们都知道,多线程可以用来提高程序的性能,背后的原因在于我们有多核的CPU或多个CPU。每个CPU的内核都可以自己完成任务,因此把一个大的任务分解成一系列的可彼此独立运行的小任务就可以提高程序的整体性能了。可以举个例子,比如有个程序用来将硬盘上某个文件夹下的所有图片的尺寸进行修改,应用多线程技术就可以提高它的性能。使用单线程的方式只能依次遍历所有图片文件并且执行修改,如果我们的CPU有多个核心的话,毫无疑问,它只能利用其中的一个核。使用多线程的方式的话,我们可以让一个生产者线程扫描文件系统把每个图片都添加到一个队列中,然后用多个工作线程来执行这些任务。如果我们的工作线程的数量和CPU总的核心数一样的话,我们就能保证每个CPU核心都有活可干,直到任务被全部执行完成。

Tags:

发布: 青软于老师 分类: 未分类 评论: 0 浏览: 18

一个程序员的运气有多重要

 

摘要:    先说两个真实的故事:第一个故事有点悲凉,2011年3月,我的同学老 A 和我一同进入茁壮网络,2012 年公司战略变动,整个部门端掉了,我提前离了职另谋出路,老 A 一直赖到了最后拿到了N+1,后来和当时的部门经理一同进入一家创业公司,没日没夜的干了两年,最后公司工资都发不起,直到我这位同学离开


先说两个真实的故事:

第一个故事有点悲凉,2011年3月,我的同学老 A 和我一同进入茁壮网络,2012 年公司战略变动,整个部门端掉了,我提前离了职另谋出路,老 A 一直赖到了最后拿到了N+1,后来和当时的部门经理一同进入一家创业公司,没日没夜的干了两年,最后公司工资都发不起,直到我这位同学离开,还有两个月的工资没拿到。

Tags:

发布: 青软于老师 分类: 未分类 评论: 0 浏览: 18

Java Socket网络编程一

 

Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务端的沟通变成了现实,而在网络编程中,使用最多的就是Socket。像大家熟悉的QQ,MSN都使用了Socket相关技术.

Socket编程

一、网络基础知识(参考计算机网络)

1、两台计算机间进行通讯需要以下三个条件: 
IP地址、协议、端口号 
2、TCP/IP协议: 
            是目前世界上应用最为广泛的协议,是以TCP和IP为基础的不同层次上多个协议的集合,也成TCP/IP协议族、或TCP/IP协议栈 
TCP:Transmission Control Protocol 传输控制协议 
IP:Internet Protocol 互联网协议 
3、TCP/IP五层模型 
            应用层:HTTP、FTP、SMTP、Telnet等 
            传输层:TCP/IP 
网络层: 
            数据链路层: 
            物理层:网线、双绞线、网卡等 
4、IP地址 
            为实现网络中不同计算机之间的通信,每台计算机都必须有一个唯一的标识—IP地址。 
32位二进制 
5、端口 
            区分一台主机的多个不同应用程序,端口号范围为0-65535,其中0-1023位为系统保留。 
            如:HTTP:80  FTP:21 Telnet:23 
            IP地址+端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通信链路的终结点,是TCP和UDP的基础 
6、Socket套接字: 
            网络上具有唯一标识的IP地址和端口组合在一起才能构成唯一能识别的标识符套接字。 
Socket原理机制: 
             通信的两端都有Socket 
网络通信其实就是Socket间的通信 
             数据在两个Socket间通过IO传输 
7、Java中的网络支持 
             针对网络通信的不同层次,Java提供了不同的API,其提供的网络功能有四大类: 
InetAddress:用于标识网络上的硬件资源,主要是IP地址 
URL:统一资源定位符,通过URL可以直接读取或写入网络上的数据 
Sockets:使用TCP协议实现的网络通信Socket相关的类 
Datagram:使用UDP协议,将数据保存在用户数据报中,通过网络进行通信。

Tags:

发布: 青软于老师 分类: 未分类 评论: 0 浏览: 29

程序员成长历程的四个阶段

 

下面是一位前辈总结的程序员成长四个阶段,个人觉得非常有道理,你在哪个阶段? 

阶段一:不知道自己不知道(Unconscious incompetence) 

大学期间,我和老师做过一些小项目,自认为自己很牛,当时还去过一些公司面试做兼职,但是就是不知道为什么没有回复。那个时期的我,压根不知道自己不知道,还以为自己懂很多,现在想起自己以前就好笑,那个时候还算不上程序员,顶多只能算是个业余编程爱好者。

表现:假自信、过度承诺、满口我能行没问题、看不起其他程序员…. 

Tags:

发布: 青软于老师 分类: 未分类 评论: 0 浏览: 18