C#语言中并不缺少控制程序流程的结构,for.while.do/while和foreach等都可以做到这一点.但我们还有更好的方式:查询语法(query syntax) 下面这段代码演示了用命令式的方式填充一个数组,然后将其内容输出到控制台: int foo = new int[100]; for(int num = 0; num < foo.length; num++) { foo[num] = num * num; } foreach(int i in foo) Console.WriteL…
C#语言中并不缺少控制程序流程的结构,for.while.do-while和foreach等都可以做到这点. 历史上所有计算机语言设计者都不曾遗漏这些重要的循环控制结构. 不过我们还有一个更好的方式:查询与法(query syntax). 查询语法可以让程逻辑的表达式由“命令式”转为“声明式”. 查询语法定义了想要的结果,而把如何得到这些结果的任务交给了其他的专门实现. 本篇提到的所有查询语法都可以通过方法调用语法来实现,并感受其带来的所有好处. 不过最重要的是,查询语法(实现了查询语法表达式模…
CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 构造并发程序的方法 现代操作系统提供了 3 种基本的构造并发程序的方法: 进程:每个逻辑控制流都是一个进程,由内核调度和维护. I/O 多路复用 :在一个进程上下文中显式地调度他们自己的逻辑流.逻辑流被模型化为状态机. 线程:运行在单一进程上下文中的逻辑流,由内核进行调度.可以看作上面两种方式的混…
<深入了解java虚拟机>高效并发读书笔记--Java内存模型,线程,线程安全 与锁优化 本文主要参考<深入了解java虚拟机>高效并发章节 关于锁升级,偏向锁,轻量级锁参考<Java并发编程的艺术> 关于线程安全和线程安全的程度参考了<Java并发编程实战> 图片参考https://www.processon.com/u/5dee0443e4b093b9f775065c#pc 一丶Java内存模型 1.概述 多任务处理已经是操作系统的必备技能,计算机被要求…
转自:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%96%87/71405.shtml "C++Windows核心编程读书笔记":   关键词:c++windows 核心 编程 读书笔记   这篇笔记是我在读<windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和windows实际机制可能有出入,但应该是合理的.开头几章由于我…
Motivation 世俗一把,看看前端的JavaScript究竟能做什么. 顺便检验一下自己的学习能力. Audience 想看偏后台的Java程序员关于前端JavaScript的认识的职业前端工程师.全栈工程师. 本人技术积累: 3年+语义网技术研究经验: 1年+Java Web开发经验(SSH+jQuery).已读过<HTTP权威指南>.有REST架构风格的意识: 粗略读过APUE.UNP第一卷,稍微详细的读过Netty in Action MEAP5. Scope Node.js文件.…
python高级编程读书笔记(一) python 高级编程读书笔记,记录一下基础和高级用法 python2和python3兼容处理 使用sys模块使程序python2和python3兼容 import sys ver=sys.version_info#(major=3, minor=6, micro=6) if ver<(3,0,0):# 3是版本号,0是此版本号,第二个0修订号.    import urllib2else:   import urllib  获取当前环境所用的python包…
从这周开始逐渐的进入学习状态,每天晚上都会坚持写c程序,并且伴随对这本书的深入,希望能写出更高质量的读书笔记和程序. 本书的第一章,介绍了一些关于unix的基础知识,在这里我不想去讨论linux到底是不是unix或者和unix的关系是什么这样的问题,只针对对自己有价值的知识点进行分析. 第一节 登录 第一节中,作者叙述了unix下用户登录的基本过程,包括保存用户口令的文件 /etc/passwd , 以及该文件的格式,该口令文件中的登录项的组成结构为由7个冒号分隔的字符串,依次是 : 登录名 加…
简介 <MacTalk·人生元编程>是一本随笔文集,主要内容来自作者的微信公众平台"MacTalk By 池建强".本书撰写于2013年,书中时间线却不止于此.作者以一个70 后程序员的笔触,立于Mac 之上,讲述技术与人文的故事,有历史,有明天,有技术,有人生.70 多篇文章划分为六大主题:Mac.程序员与编程.科技与人文.人物.工具.职场.篇篇独立成文,可拆可合,随时阅读. 我主要是通过http://beyondvincent.com/2014/02/13/2014-0…
会集中这段时间写UNIX网络编程这本书的读书笔记,准备读三本,这一系类的文章会不断更新,一直会持续一个月多,每篇的前半部分是书中讲述的内容,每篇文章的后半部分是自己的心得体会,文章中的红色内容是很重要的部分. http://blog.csdn.net/yusiguyuan/article/details/11760187 UNIX网络编程---简介…
概述 这是我读<javascript函数式编程>的读书笔记,供以后开发时参考,相信对其他人也有用. 说明:虽然本书是基于underscore.js库写的,但是其中的理念和思考方式都讲的很好,值得一读.不过如果不熟悉underscore.js库的话,读起来会有点困难. <javascript函数式编程>读书笔记1 对象的不变性 函数式编程中函数是一等公民,所以对于数据来说,需要他们是不可变的.另外,对象的不可变确实能够带来一些好处,比如:如果数据是不可变的,那么可以直接通过"…
概述 这是我读<javascript函数式编程>的读书笔记,供以后开发时参考,相信对其他人也有用. 说明:虽然本书是基于underscore.js库写的,但是其中的理念和思考方式都讲的很好,值得一读.不过如果不熟悉underscore.js库的话,读起来会有点困难. 从一段代码说起 由于parsInt函数有2个参数,所以下面的代码会得出意想不到的结果: [3.5, 5.3, 9.8, 13.4, 16.9].map(parseInt); //输出 [3, NaN, NaN, 1, 1] 原因是…
----------------------------------------------<Java并发编程实战>读书笔记------------------------------------------------------------------------------ 第二章 线程安全性 java同步 1.sychronized  2.volatile类型  3.显示锁  4.原子变量性能优化之原则:首先保证代码能正确运行,然后再提高代码速度.并且,只是当性能测试结果和应用需求需要…
官方资料:Shell Functions (Bash Reference Manual) 简介 正如我们在<Bash脚本编程学习笔记06:条件结构体>中最后所说的,我们应该把一些可能反复执行的代码块整合起来,避免反复编写使得代码过于臃肿. 函数正是为了解决这个问题而存在的.函数在定义时,可以将常用的代码整合为一个整体,当我们需要执行的时候,只需要调用这个函数即可. Bash是过程式编程语言,从上至下顺序执行代码,因此函数定义必须在函数调用之前完成. 函数属于shell的基础特性,即不仅仅是针对…
一 .php基础语法 1.php语法结构 标准风格:<?php code; ?>.PHP每句代码用;(分号)结尾.<---就用这个,其他的看看就可以了 短风格:<? code; ?> //需要修改PHP.INI配置 ASP风格:<% code; %> //需要修改PHP.INI配置 长风格:我难得写了,谁他妈会用这个方式啊. 2.注释:单行注释 //   多行注释    /*  */ 3.PHP文件扩展名为.php 二.PHP变量 变量:在程序执行期间可以变化的量…
在说正题之前,我们先看2个概念. 1.指令集架构(ISA) ISA 的全称是 instruction set architecture,中文就是指令集架构,是指对程序员实际"可见"的指令集,包含了程序员编写一个能正确运行的二进制机器语言程序的所有信息,涉及到指令. I/O 设备等.例如 Intel 的 IA-32.Intel 64.ARM 的 ARMv7.ARMv8 等等. 2.微架构 微架构(Microarchitecture)又称为微体系结构/微处理器体系结构.是将一种给定的指令集…
C#有两种类型的常量:编译期常量和运行时常量.两者有截然不同的行为,使用不当的话,会造成性能问题,如果没法确定,则使用慢点,但能保证正确的运行时常量. 运行时常量使用readonly关键字声明,编译期常量则使用const关键字声明: //声明编译期常量 public const int Millennium = 2000; //声明运行时常量 public static readonly int ThisYear = 2017; 二者最重要的区别在于,readonly值是运行时解析的,而cons…
Python 中的列表(大小可变的数组)和字典(哈希表)就是内建于语言本身的.在核心语言中提供这些重要的构建单元,可以鼓励人们使用它们, 缩短开发时间与代码量,产生出可读性更好的代码.C不提供, c++功能不够简洁. 面向对象, 可升级:Python 提倡简洁的代码设计.高级的数据结构和模块化的组件,确保灵活性. 一致性并缩短必要的调试时间 扩展性:兼容扩展c和java 易读写,易维护 健壮性:Python 提供了"安全合理"的退出机制, Python由于错误崩溃,解释程序就会转出一个…
本篇主干内容是TCP/IP网络编程1-9章学习笔记 1. linux文件描述符 描述符从3开始以由小到大的顺序编号,0,1,2,分配给标准I/O用作标准输入.标准输出和标准错误. 2. 协议族与套接字类型(socket函数第一.二个参数) domain常用 : IPv4协议族 PF_INET: type: SOCK_STREAM(面向连接,TCP), SOCK_DRGAM(面向消息, UDP) 选用TCP时,第三个参数可以为0. 3.地址族与数据序列 4字节IP地址分类: A类地址: 首字节范围…
1. 一些原则 RIM(Remote Method Invocation):远程方法调用 Race Condition:竞态条件 Servlet要满足多个线程的调用,必须是线程安全的 远程对象,即通过远程方法调用将对象放入字节流中传给其他jvm的对象,要特别注意对象中的共享状态 Shared:共享的 Mutable:可变的 当设计线程安全的类时,良好的面向对象技术.不可修改性,以及明晰的不变性规范都能起到一定的帮助作用: 无状态对象是线程安全的:没有任何域也不包含任何对其他类中域的引用(比如St…
Outline 1 概述和安装 1.1 安装Node 1.2 Node简介 2 Node核心API基础 2.1 加载模块 2.2 应用缓冲区处理.编码和解码二进制数据 2.3 使用时间发射器模式简化事件绑定 2.4 使用定时器制定函数执行计划 1 概述和安装 1.1 安装Node 参见Ubuntu 14.04下搭建Node.js的开发环境或其他类似文章. npm: Node包管理器 两种主要的工作模式:全局模式.本地模式 本地模式:安装到当前目录下node_modules目录中. 常用命令: n…
在linux中,文件的相关信息都记录在stat这个结构体中,文件长度是记录在stat的st_size成员中.对于普通文件,其长度可以为0,目录的长度一般为1024的倍数,这与linux文件系统中block的大小是有关系的,符号链接的长度是它所指向的文件名字的长度. 文件的截短可以在使用open函数时,用O_TRUNC标记,这样将会在打开文件时将文件的内容清空.linux专门为我们提供了两个函数以指定定的长度打开文件: int truncate(const char* pathname,off_t…
unix-like(后面以linux为例)系统中的文件操作只需要五个函数就足够了,open.close.read.write以及lseek.这些操作被称为不带缓存的io,这里有必要说一下带缓存和不带缓存的操作的区别.不带缓存的io是相对于带缓存的io的来说的,带缓存的io有哪些呢.在后面的fwrite.fread函数等标准io操作都是带缓存的io.说了这么多还是没有说清楚带缓存和不带缓存的区别,下面就以write函数和fwrite函数来说明带缓存和不带缓存的区别.虽然write函数叫做不带缓存的…
第四节 输入与输出 上次的笔记中写到的 open, read, write, lseek 以及close ,都是不带缓存的IO函数,这些函数都使用文件描述符进行工作. 上一篇笔记用到的 read(STDIN_FILENO, buf, BUFFSIZE) 和 write(STDOUT_FILENO, buf, n) 函数中的2个参数 STDIN_FILENO 和 STDOUT_FILENO 是 __POSIX__标准的一部分,很多函数原型都在其中,这2个参数定义在 头文件中,他们是标准输入输出的文…
UDP 协议基础 在IP网络层,所有的数据包会向一个指定的主机传输 Source IP  -> Destination IP 但是两台机器之间可能有许多独立的应用需要进行通信,因此为了区分不同的应用,所以有了端口号(port number) Source (IP : port number) -> Destination (IP : port number) 通过这四个变量就可以确定一个特定的会话. 在Client 和 Server 进行通信时,通过Server会被分配一个固定的端口号.例如D…
文件I/O模型 Linux的哲学思想,一切皆文件,这也是Linux文件操作的方便之处.系统调用不会分配缓冲区用以返回信息给调用者.所以必须提前分配大小合适的缓冲区并将缓冲区指针传递给系统调用. 1.open open以前没有创建功能,后来通过参数可以设置创建文件.一个进程对能够打开的文件描述符的个数有限制的. open的时候如果指定O_SYNC标志,则会使所有后续输出同步.即调用write会自动都将文件数据和元数据刷新到磁盘.现代的磁盘驱动器均内置大型高速缓存,而默认情况下使用O_SYNC只是将…
导读:由于书的内容较多,内容划分也非常详尽,所以会分好几篇来写. 此页面仅作为跳转,权当个目录来用. 我会分块进行整理,大致如下: 第一章 简介 讲述javascript的历史,不打算整理,同学们大概略读一下即可. 第二至四章 讲述javascript的基本概念 对于没有任何开发经验的同学,可以先看这部分垫垫底. 第五至七章 ECMAScript 这部分是JS的核心内容,但是刚上手的同学肯定看不懂.建议先看比较简单的BOM,DOM部分. 第八.九章 BOM 介绍了JS三大核心之一的BOM,主要看…
第四章 基本tcp 套接口编程 注意区分AF_XXX 和PF_XXX,AF代表address family, PF代表protocol family. 1 socket 函数 2 connect 函数 3 bind 函数 4 listen 函数 注:主动.被动 与 服务器.客户端没有明确的对应关系 linux中定义backlog为 完成队列的最大个数 5 accept 函数 5 getsockname和getpeername的用法及实例 getsockname和getpeername #incl…
第三章 套接字编程简介 每一个 Socket 都用一个半相关描述:{协议,本地地址,本地端口}一个完整的 Socket 则用一个相关描述{协议,本地地址,本地端口,远程地址,远程端口}每一个 Socket 有一个本地的唯一 Socket 号,由操作系统分配. 1.struct sockaddr这个结构用来存储套接字地址.数据定义: struct sockaddr { unsigned short sa_family; /* address族, AF_xxx */ ]; /* 14 bytes的协…
第一章: C/C++语言提供两种不同的编程模式:IPL32和PL64.► IPL32 ● 表示integer/pointer/long三种数据类型是32位(4个字节),在这种模式下,提供32位的地址空间,理论的内存使用限制为4G.► PL64 ● 表示pointer/long两种数据类型是64位(8个字节),提供64位地址空间,使用内存超过4G(达2^60bytes=1EB). more infoabout IPL32 and PL64, please refer to http://www-3…