Python网络编程
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from socket import *  # @UnusedWildImport DEFAULT_PORT = 1918 if __name__ == '__main__':     # 创建基于IPv4的TCP套接字对象     s = socket( AF_INET, SOCK_STREAM )     # 绑定到通配符地址的1918端口     s.bind( ( '0.0.0.0', DEFAULT_PORT ) )     logging.debug( 'Echo server is listening on port %d', DEFAULT_PORT )     # 开始监听,最大排队数量(backlog)为10     s.listen( 10 )     while True:         # 接受一个客户端连接请求,返回套接字对象和地址的元组         client, addr = s.accept()         logging.debug( '%s connected', addr )         msg = client.recv( 1024 )         logging.debug( 'Received message : %s', msg )         client.send( msg )         client.close() | 
以下是客户端代码:
| 1 2 3 4 5 6 7 8 9 10 | from socket import *  # @UnusedWildImport DEFAULT_PORT = 1918 if __name__ == '__main__':     # 创建基于IPv4的TCP套接字对象     s = socket( AF_INET, SOCK_STREAM )     # 连接到服务器端     s.connect( ( '127.0.0.1', DEFAULT_PORT ) )     s.send( 'Hello Server!' )     logging.debug( 'Echo from server: %s', s.recv( 1024 ) ) | 
asyncore模块将网络活动抽象为事件,由事件循环分派出去进行异步处理。事件循环通过select()或者poll()系统调用构建。
阅读全文Python并发编程
一个运行的程序称作进程。每个进程都有自己的系统状态,包括内存、已打开文件列表、用于跟踪正在执行的指令的程序计数器以及用于保存函数的局部变量的调用栈。通常在一个控制流序列中, 进程逐条执行语句,这一般称为进程的主线程。在任何一个给定的时刻,程序都只做…
阅读全文Python学习笔记
- Windows:可以使用WinPython,这是一个免安装、开箱即用的Python发布版,包含很多预置工具
- Linux:通常已经随操作系统安装
| 环境变量 | 说明 | 
| PYTHON_HOME | Python安装目录 | 
| PATH | 添加 %PYTHON_HOME%;%PYTHON_HOME%\Scripts | 
| PYTHONPATH | Python的模块搜索路径,在前面出现的优先级高 仅在Windows下你可… | 
CSS3学习笔记
只有基于Webkit的浏览器才支持此特性,Firefox不支持:
| 1 2 3 4 5 | selector  {     background: -webkit-linear-gradient(#3ADB69, #059CF7);     -webkit-background-clip: text;     -webkit-text-fill-color: transparent; } | 
注意:不能和背景颜色一起使用,但是可以和渐变背景一起使用:
| 1 2 3 4 5 6 7 8 9 | selector {     /* 不能和background-color配合 */     background: -webkit-linear-gradient(0deg, #3ADB69, #059CF7, #3ADB69);     background: -o-linear-gradient(0deg, #3ADB69, #059CF7, #3ADB69);     background: -moz-linear-gradient(0deg, #3ADB69, #059CF7, #3ADB69);     background: linear-gradient(0deg, #3ADB69, #059CF7, #3ADB69);     background-repeat: no-repeat;     background-size: 3px 100%; /* 背景宽度3像素,高度100% */ } | 
CSS格式说明:
从左向右的渐变:
你可以为direction指定任意的渐变角度:
要设置表单元素placeholder的样式,需要为不同浏览器设置伪元素/类的样式:
我们知道CSS由一…
阅读全文HTML5学习笔记
HTML5文件的扩展名仍然是html或者htm,内容类型仍然是text/html,但是文档类型、编码格式等信息的声明有所简化:
| 1 2 3 4 5 6 7 8 9 10 | <!DOCTYPE html> <!-- HTML DocType声明--> <html lang="en"> <head>     <meta charset="UTF-8"><!-- 编码格式声明,推荐UTF-8 -->     <title>HTML5 Study</title> </head> <body> <!-- body元素可以省略 --> </body> </html> | 
HTML5在语法方面充分考虑了对HTML4的兼容性,以及便利性。
| 类型 | 说明 | 
| 不允许结束标记 | 这类元素不得书写结束标记,仅支持 <br/> 或者 <br> 的形式。大部分不包含文本节点的元素在此类中,例如img、br、input、link、meta、param等 | 
| 可选结束标记 | 结束标记可有可无,均合法。例如p、li、option、t… | 
AspectJ编程学习笔记
| 名词 | 含义 | 
| 切面(方面,Aspect) | 一个关注点的模块化,这个关注点实现可能横切(crosscutting)多个对象切面的例子包括:事务控制、日志记录、权限控制等在AspectJ中,切面表现为Java类,其源码具有AspectJ的特殊语法增强,… | 
Spring与Quartz的任务调度比较
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <bean id="demoJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">     <!-- 目标Bean -->     <property name="targetObject">         <bean class="cc.gmem.demo.DemoService" />     </property>     <!-- 目标方法 -->     <property name="targetMethod" value="doStuff" />     <!-- 防止并发执行 -->     <property name="concurrent" value="false" /> </bean> <!-- 简单触发器 --> <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">     <property name="jobDetail" ref="demoJob" />     <!-- 启动后,调度开始的时间 -->     <property name="startDelay" value="0" />     <!-- 每隔2000ms调度一次 -->     <property name="repeatInterval" value="2000" /> </bean> <!-- Cron触发器 --> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">     <property name="jobDetail" ref="demoJob" />     <property name="cronExpression" value="15 0/2 * * * ?" /> </bean> <!-- 调度工厂Bean --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">     <property name="triggers">         <list>             <ref bean="simpleTrigger" />             <ref bean="cronTrigger" />         </list>     </property> </bean> | 
| 1 2 3 4 5 6 7 | <!--  任务调度器配置,pool-size为线程池大小,限制了同时最多被调度的任务 --> <task:scheduler pool-size="100" id="scheduler" /> <!-- 任务计划列表,支持固定频率、固定延迟、Cron表达式等 --> <task:scheduled-tasks scheduler="scheduler">     <task:scheduled fixed-rate="120000" method="doStuff" ref="demoService" />     <task:scheduled cron="15 0/2 * * * ?" method="doStuff" ref="demoService" /> </task:scheduled-tasks> | 
| 比较项 | Spring2.x | Spring3.x | Quartz | 
| 优… | 
GNU Make学习笔记
对于任何编译器可以通过Shell调用的编程语言,均可以通过GNU Make(以下称make)构建。make可以用于任何这样的任务:如果某些文件所依赖的文件发生了变化,则自动更新这些文件。
需要编写makefile文件来使用make,该文件中包含了文件之间的依赖关系、提供更新每个文件的命令,在makefile所在目录中运行make命令,即可完成文件更新,make会根据文件名GNUmakefile、makefile、Makefile依次寻找,可…
阅读全文