当前标签 / 基础 / 总共22篇

Python基础知识总结

Python 的火热度怕是大家已经早已感受到了,很多程序员将 Python 作为了他的第二语言,如果你至今还未接触任何和 Python 相关的知识,那么今天我带给你的这篇文章可以让你快速了解 Python 语法,上手做东西了。

Python 语言的特点

Python 是一种解释性语言

编译型语音:在程序执行前,会通过编译器将程序(代码)转换为机器语言(计算机可以看懂的语音),比如C语音。

解释型语音:没有编译过程,在程序执行的时候通过解释器对程序逐行解释然后直接运行。

比较:因为编译型语音在执行前已经做了编译(翻译给计算机),所以执行比较快(执行过程中不需要翻译)。

Python 是面向对象的语言

面向过程:一般就是先分析解决问题需要的步骤,然后用函数把这些步骤一步步实现,然后依次调用(比较接近计算机的思考方式)。

面向对象:把问题中的各个事物分解(抽象)成各个对象,通过对象之间交互来实现(和我们人类的思考方式更接近)。

Python 比较适合初学者

Python 有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。

阅读更多

Android内部分享[7]——系统广播和服务

什么是 Service

Service 是 Android 中一个可以长时间在后台运行的组件,Service 可由其他组件启动,而且就算用户切换到其它应用,服务仍然可以在后台继续运行。此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序交互,而所有这一切均可在后台进行。

Service 基本上分为两种形式:

  1. startService

当应用组件(如 Activity)通过调用 startService() 启动服务时,服务即处于“启动”状态。一旦启动,服务即可在后台无限期运行,即使启动服务的组件已被销毁也不受影响。 已启动的服务通常是执行单一操作,而且不会将结果返回给调用方。例如,它可能通过网络下载或上传文件。 操作完成后,服务会自行停止运行。

  1. bindService

当应用组件通过调用 bindService() 绑定到服务时,服务即处于“绑定”状态。绑定服务提供了一个客户端-服务器接口,允许组件与服务进行交互、发送请求、获取结果,甚至是利用进程间通信 (IPC) 跨进程执行这些操作。 仅当与另一个应用组件绑定时,绑定服务才会运行。 多个组件可以同时绑定到该服务,但全部取消绑定后,该服务即会被销毁。

而且我们的服务可以同时以上面的两种方式运行,也就是说,它既可以是启动服务(以无限期运行),也允许绑定。问题只是在于您是否实现了一组回调方法:onStartCommand()(允许组件启动服务)和 onBind()(允许绑定服务)。

阅读更多

Android内部分享[6]——列表和适配器详解

列表复用

列表的一个重大职责是复用 View, 因为我们的可见区域是有限的,要不断的回收再利用。我画了一张列表在手机上展示的关系示意图:

列表展示重用示意图

如上图,手机屏幕是呈现给用户的窗口,这个窗口是一个固定宽高的区域(上图绿色区域),而一个列表是可以无限长度的(分页加载),我们不需要创建这么多的子 View ,这样极大的浪费内存。所以这里我们可以利用适配器来完成列表(ListView)的列表项(item)的复用。在屏幕滚动的同时,如上面箭头所示意那样我们可以将看过的 View 拿来继续复用,这样可以保证列表项是无限的,而我们创建的 View 是有限的几个即可。

阅读更多

Android内部分享[4]——Intent 和 Intent 过滤器

概述

前面我们已经对 Android 中的界面跳转和本地存储有了一定的认识,接下来我们来详细研究一下 Android 中的意图(Intent),理解它有助于我们后续理解系统广播和服务。

我们先来回顾一下前面的界面跳转代码:

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);

可以看到 Intent 就像一座桥梁,来实现从一个界面到另一个界面的切换,事实上上面的是显式的 Intent,我们很明确我们即将要跳转到的页面,还有一种意图是不可知不确定的,或者说在绑定意图的时候不是固定的某个具体的 Activity, 例如:

Intent intent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
sendIntent.setType("text/plain");
startActivity(intent);

这个时候我们的 Intent (意图)可能指定的不是一个界面了,有可能是多个界面,只要我们的 Activity 含 ACTION_SEND 操作并携带 text/plain 数据就会被调起。如果只有一个应用能够处理,则该应用将立即打开并为其提供 Intent。 如果多个 Activity 接受 Intent,则系统将显示一个对话框,使用户能够选取要使用的应用。

多个意图响应

阅读更多

Java编程思想扫盲

概述

本篇文章是出于对我的《Android内部分享》系列文章和视频中涉及到的Java知识, 考虑到很多朋友初次接触 Android 可能遇到的最大的困扰是 Java 的语法,面对很多视频和文章中的示例,无法理解语法规则何谈去理解 Android 开发,所以我特意做了这篇文章,希望能带你入坑,毕竟只是一篇文章,入坑后得靠自己去多看书,多练习,多思考。

C 和 Java

为什么说 Java 之前要提到 C 语言呢?我考虑的是很多语言其实都是 类C 语言,也就是说大多数语言的语法基础和 C 语言几乎一致,而且 C 语言是高校必学课程,从这一点入手可以事半功倍。

先来看一段 C 语言代码:

#include <stdio.h>

void testFunction(int);

int main(int argc, char const *argv[])
{
    int a = 1;
    testFunction(a);
}

void testFunction(int arg){
    printf("test : %d", arg);
}

这是一个很简单的 C 语言代码,里面定义了变量和函数,接下来我们用 Java 实现同样的功能,大家来对比一下:

public class TestJava1 {

    public static void main(String[] args){
        int a = 1;
        TestJava1 testJava1 = new TestJava1();
        testJava1.testFunction(a);
    }

    private void testFunction(int arg){
        System.out.println(String.format("test:%d", arg));
    }
}

可以发现有很多不一样的地方,但是其中也蕴含着很多一致的地方,我们对比一下来加深语法层面上的理解:

阅读更多

Nodejs 结构和创建

本文参考自 《Nodejs 开发指南》 和 《Nodejs 实战》 两本书。

异步 I/O

Node.js 最大的特点就是采用了异步 I/O 与事件驱动的架构设计。

$.post('/resource.json', function(data){
    console.log(data);
})

这一小段代码是 jQuery 中的 Ajax 请求,我们知道这个结果函数是异步的,等服务器响应结果后才会执行。

对于一些高并发的需求,传统的解决方法是多线程模型,每个业务提供一个线程系统,通过切换和调度线程来实现高并发中的等待开销。但是这样做无疑又增加了线程管理和调度的开销。

Nodejs 采用的是单线程模型,对于所有的 I/O 操作(阻塞操作)都采用类似上面 Ajax 请求的异步的请求方式,避免了频繁切换线程。

Nodejs 的单线程模型

阅读更多

Web前端基础(21)HTML5的其他标签和补充

文本标记

p是最常用的文本标记之一,要在网页中表示段落就需要用p标签。

small和strong

small表示细则一类旁注,通常包括免责声明、注意事项、法律版本、版权信息等。small通常是行内文本中的一小块,而不是包含多个段落或其他元素的大块文本。

<p>Order now to receive free shipping. <small>(Some restrictions may apply.)</small></p>

<p>...</p>

<footer>
	<p><small>&copy; 2013 The Super Store. All Rights Reserved.</small></p>
</footer>

strong表示内容的重要性,而em表示内容的着重点。根据内容需要,这两个元素可以单独使用,也可以一起使用。

    <p><strong>Warning: Do not approach the zombies <em>under any circumstances</em></strong>. They may <em>look</em>
        friendly, but that's just because they want to eat your arm.</p>

浏览器通常将strong文本以粗体显示,而将em文本以斜体显示,如果em是strong的子元素,将同时显示粗体和斜体。

注意:不用使用b元素代替strong,也不要使用i元素代替em。尽管他们在浏览器中显示的样式是一样的,但是含义却不一样。可以在strong中嵌套strong,em中嵌套em,来说明更加重要。

阅读更多

Web前端基础(20)HTML5基本结构

基本HTML结构

每个HTML文档都应该包含一下几个组成部分:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    
</body>
</html>

<!DOCTYPE html> 是声明页面为HTML5文档,在HTML4和XHTML1.0时代,有好几种DOCTYPE,每一种都会指明HTML的版本,以及使用的是过度型还是严格型模式,太难记了,所以每次都需要复制黏贴进来,现在所有浏览器都理解这种简单的HTML5的DOCTYPE,所以可以忘记过去复杂繁琐的DOCTYPE了。

<html lang=“en”> 是声明了页面默认语言。

&ltmeta charse=“UTF-8”> 是声明了文档的字符编码。

阅读更多

Web前端基础(19)jQuery对文本框和表单的操作

单行文本框

首先在网页中创建一个表单,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        input:focus, textarea:focus{
            border:1px solid #f00;
            background: #fcc;
        }
    </style>
</head>
<body>
    <form action="#" method="POST" id="regForm">
        <legend>个人基本信息</legend>
        <div>
            <label for="username">名称:</label>
            <input id="username" type="text"></label>
        </div>
        <div>
            <label for="pass">密码:</label>
            <input id="pass" type="password"></label>
        </div>
        <div>
            <label for="msg">详细信息:</label>
            <textarea id="msg"></textarea>
        </div>
    </form>
</body>
</html>
个人基本信息

但是IE6并不支持除超链接元素之外的:hover伪类选择器,此时可以用jQuery来弥补。

阅读更多

Web前端基础(18)jQuery中的动画

show()和hide()

show()和hide()是jQuery中最基本的动画方法,该动画操作了display:none;

$(function(){
    $("#panel").toggle(function(){
        $(this).next().hide();
    }, function(){
        $(this).next().show();
    })
})

show()和hide()可以传入动画执行毫秒数或者传入“nomal”, “slow”, “fast”关键字控制速度。

fadeIn()和fadeOut()

fadeIn()和fadeOut()只是改变透明度。

slideUp()和slideDown()

slideUp()和slideDown()只会改变元素的高度(由上到下展开, 由下到上收起)。

自定义动画animate()

animate(params, speed, callback);

参数说明: params: 一个包含样式属性和值的映射 speed:速度参数,可选 callback:动画完成时执行的函数,可选

$(function(){
    $("#panel").click(function(){
        $(this).animate({left:"500px"}, 3000);
    })
})

阅读更多

Web前端基础(17)jQuery中的事件

事件绑定

bind(type[, data], fn);

第一个参数是绑定的事件类型,第二个参数可选是额外数据对象,第三个参数是处理函数。

在文档装载完成后,可以使用bind()方法来对元素绑定特定的事件,可以绑定的事件有:

事件说明
blur元素失去焦点
focus元素获得焦点
load一张页面或一幅图像完成加载。
resize重置按钮被点击
scroll滚动事件
unload用户退出页面
click点击事件
dblclick双击事件
mousedown鼠标按键按下
mouseup鼠标按键抬起
mousemove鼠标被移动
mouseover鼠标移到某个元素上
mouseout鼠标从某个元素上移开
mouseenter鼠标进入某个元素
mouseleave鼠标离开某个元素
change域的内容被改变
select文本被选中
submit确认按钮被点击
keydown键盘按下
keypress某个键盘按键被按下并松开。
keyup某个键盘按键被松开
error在加载文档或图像时发生错误。

阅读更多

Web前端基础(16)jQuery操作HTML属性和元素

属性操作

在jQuery中,用attr()方法来获取和设置元素的属性,用removeAttr()方法来删除元素属性。

attr()方法使用示例

var $para = $("p");
//获取
var p_text = $para.attr("title");  
//设置
$para.attr("title", "dp2px");
//可以一次修改多个属性
$para.attr({"title":"dp2px", "name":"地痞兔劈叉"});

removeAttr()方法使用示例

$("p").removeAttr("title");

样式操作

<p class="myclass" title="dp2px">地痞兔劈叉</p>

上面代码中,class其实也是p元素的一个属性,因此可以用attr()方法获得和设置class的内容。jQuery提供了一个addClass()方法来追加class值。提供了removeClass()来移除class值。

$("p").addClass("another");
$("p").removeClass("another");

jQuery中还提供了一个toggleClass()方法来实现单机切换(添加和删除)操作

另外判断是否有某个class值用方法hasClass()来判断。

阅读更多