第一组:姚成栋 Ztree基础
在用新框架的时候你可以看到搜索部门用了一个树,如下图
这个树其实就是用了ztree。大致上介绍一下用法。
Ztree的数据格式是标准的 JSON 数据需要嵌套表示节点的父子包含关系,例如:
var nodes = [
{name: "父节点1", children: [
{name: "子节点1"},
{name: "子节点2"}
]}
];
如果需要使用 id / pId 表示节点的父子包含关系,例如:
var nodes = [
{id:1, pId:0, name: "父节点1"},
{id:11, pId:1, name: "子节点1"},
{id:12, pId:1, name: "子节点2"}
];
(其中id和pid也能用字符串来表示)
第二组:徐晋 Android生命周期
1、android生命周期图
2、activity三种状态
(1)active:当Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点能响应用户的操作,属于活动状态,同一个时刻只会有一个Activity处于活动(Active)。
(2)paused:当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast、AlertDialog等弹出窗口时)它处于暂停状态。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接),但是当系统内存极小时可以被系统杀掉。
(3)stoped:完全被另一个Activity遮挡时处于停止状态,它仍然在内存中保留着所有的状态和成员信息。只是对用户不可见,当其他地方需要内存时它往往被系统杀掉。
3、activity七个方法
onCreate():当Activity第一次被实例化的时候系统会调用,整个生命周期只调用1次这个方法。通常用于初始化设置,为Activity设置所要使用的布局文件,为按钮绑定监听器等静态的设置操作。
onStart():当Activity可见未获得用户焦点不能交互时系统会调用。
onRestart():当Activity已经停止然后重新被启动时系统会调用。
onResume():当Activity可见且获得用户焦点能交互时系统会调用。
onPause():用来存储持久数据。到这一步是可见但不可交互的,系统会停止动画等消耗CPU的事情。从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。
onStop():当Activity被新的Activity完全覆盖不可见时被系统调用。
onDestroy():当Activity(用户调用finish()或系统由于内存不足)被系统销毁杀掉时系统调用,(整个生命周期只调用1次)用来释放onCreate()方法中创建的资源,如结束线程等。
4、android三个嵌套循环
(1)Activity完整的生命周期:从第一次调用onCreate()开始直到调用onDestroy()结束。
(2)Activity的可视生命周期:从调用onStart()到相应的调用onStop()。在这两个方法之间,可以保持显示Activity所需要的资源。如在onStart()中注册一个广播接收者监听影响你的UI的改变,在onStop()中注销。
(3)Activity的前台生命周期:从调用onResume()到相应的调用onPause()。
5、BroadcastReceiver广播接收器生命周期
生命周期只有十秒左右,如果在onReceive()内做超过十秒内的事情,就会报ANR(Application No Response)程序无响应的错误信息。它的生命周期为从回调onReceive()方法开始到该方法返回结果后结束。
6、Service服务生命周期
Service完整的生命周期从调用onCreate()开始直到调用onDestroy()结束。
Service有两种使用方法:
(1)以调用Context.startService()启动,而以调用Context.stopService()结束。
(2)以调用Context.bindService()方法建立,以调用Context.unbindService()关闭。
7、一个activity的启动过程
(1)第一个Activity的启动顺序:onCreate()——>onStart()——>onResume()
(2)当另一个Activity启动时:第一个Activity onPause()——>第二个Activity onCreate()——>onStart()
——>onResume()——>第一个Activity onStop()
(3)当返回到第一个Activity时:第二个Activity onPause()——> 第 一个Activity onRestart()——>onStart()——>onResume()——>第二个Activity onStop()——>onDestroy()
每一个Activity都处于某一个状态,对于开发者来说,是无法控制其应用程序处于某一个状态的,这些均由系统来完成。
第三组:蔡永坚 AugularJS-特性2
特性三:MVC
针对客户端应用开发AngularJS吸收了传统的MVC基本原则。MVC或者Model-View-Controll设计模式针对不同的人可能意味不同的东西。AngularJS并不执行传统意义上的MVC,更接近于MVVM(Moodel-View-ViewModel)。
Model
model是应用中的简单数据。一般是简单的javascript对象。这里没有必要继承框架的classes,使用proxy对象封装或者使用特别的setter/getter方法来访问。事实上我们处理vanilla javascript的方法就是一个非常好的特性,这种方法使得我们更少使用应用的原型。
ViewModel
viewmodel是一个用来提供特别数据和方法从而维护指定view的对象。
viewmodel是$scope的对象,只存在于AnguarJS的应用中。$scope只是一个简单的js对象,这个对象使用简单的API来侦测和广播状态变化。
Controller
controller负责设置初始状态和参数化$scope方法用以控制行为。需要指出的controller并不保存状态也不和远程服务互动。
View
view是AngularJS解析后渲染和绑定后生成的HTML 。这个部分帮助你创建web应用的架构。$scope拥有一个针对数据的参考,controller定义行为,view处理布局和互动。
特性四:服务和依赖注入
AngularJS服务其作用就是对外提供某个特定的功能。
AngularJS拥有内建的依赖注入(DI)子系统,可以帮助开发人员更容易的开发,理解和测试应用。
DI允许你请求你的依赖,而不是自己找寻它们。比如,我们需要一个东西,DI负责找创建并且提供给我们。
为了而得到核心的AngularJS服务,只需要添加一个简单服务作为参数,AngularJS会侦测并且提供给你:
function EditCtrl($scope, $location, $routeParams) {
// Something clever here...
}
你也可以定义自己的服务并且让它们注入:
angular.module('MyServiceModule', []).
factory('notify', ['$window', function (win) {
return function (msg) {
win.alert(msg);
};
}]);
function myController(scope, notifyService) {
scope.callNotify = function (msg) {
notifyService(msg);
};
}
myController.$inject = ['$scope', 'notify'];
特性五:指令(Directives)
指令是我个人最喜欢的特性。你是不是也希望浏览器可以做点儿有意思的事情?那么AngularJS可以做到。
指令可以用来创建自定义的标签。它们可以用来装饰元素或者操作DOM属性。可以作为标签、属性、注释和类名使用。
这里是一个例子,它监听一个事件并且针对的更新它的$scope ,如下:
myModule.directive('myComponent', function(mySharedService) {
return {
restrict: 'E',
controller: function($scope, $attrs, mySharedService) {
$scope.$on('handleBroadcast', function() {
$scope.message = 'Directive: ' + mySharedService.message;
});
},
replace: true,
template: ''
};
});
然后,你可以使用这个自定义的directive来使用:
使用一系列的组件来创建你自己的应用将会让你更方便的添加,删除和更新功能。
第四组:张元一 OS X系统安装python,pygame
使用homebrew来安装python及pygame:
一、python安装
1. 查看已经安装过的版本
$ python --version
2. 使用homebrew来安装python3
homebrew依赖于apple包xcode,因此要执行如下命令
$ xcode-
在不断出现的确认对话框中都单击ok按钮(根据网速,需要花一些时间)。下面我们来安装homebrew
$ ruby
这个命令可在Homebrew网站(http://brew.sh/ )的首页找到。在curl -fsSL 和URL之间,务必包含一个空格。 注意 这个命令中的-e 让Ruby(Homebrew就是使用这种编程语言编写的)执行下载的代码。除非来源是你信任的,否则不要运行这样的命令。
检查是否成功安装homebrew
$ brew doctor Your system is ready to brew.
2.2 安装python3
安装最新的python3
$ brew install python3
检查自己安装的python是哪个版本
$ python3 --version Python 3.5.0 $
二、安装pygame
1.安装pygame依赖的库
$ `brew install hg sdl sdl_image sdl_ttf`
2.安装pygame
$pip3 install --user hg+
http:/
/bitbucket.org/pygame/pygame
3.检查是否安装成功
$ python3
第五组:陈孚楠 设计模式
2、 工厂模式
工厂方法模式Factory Method,又称多态性工厂模式。在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做。该核心类成为一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。首先完全实现‘开-闭 原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。
例子:
工厂生产仿生机器,机器都会说话,机器狗“汪”,机器猫“喵“。。。
1、简单工厂模式:
接口产品Robot
public interface Robot{
...
public void Ssy();
...
}
具体产品Dog
public class Dog implements Robot{
...
public void Ssy(){
"汪~"
}
...
}
具体产品Cat
public class Cat implements Robot{
...
public void Ssy(){
"喵~"
}
...
}
具体产品Bird
public class Bird implements Robot{
...
public void Ssy(){
"叽~"
}
...
}
工厂接口
public interface RobotFactory{
...
public Robot Produce()
...
}
具体工厂
//具体工厂
public class DogFactory implements RobotFactory{
...
public Robot Produce(){
return new Dog();
}
...
}
//具体工厂
public class CatFactory implements RobotFactory{
...
public Robot Produce(){
return new Cat();
}
...
}
//具体工厂
public class BirdFactory implements RobotFactory{
...
public Robot Produce(){
return new Bird();
}
...
}
main(){
RobotFactory rf = new DogFactory();
Robot r = rf.Produce();
r.Say();
} 输出:"汪~"
每一个产品对应一个工厂。虽然避免了修改生产方法,但还是要把种类定死。
但可以用配置文件于反射机制解决这一问题。
工厂模式产出是一个产品(实例),抽象工厂产出是一个抽象(接口)。区别在于,若添加一个新的产品,前者是修改工厂,后者是创建新工厂(符合“闭合原则”)。