博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
操作系统,windows编程,网络,socket
阅读量:6475 次
发布时间:2019-06-23

本文共 1679 字,大约阅读时间需要 5 分钟。

  hot3.png

首发:

之前关于c/s的只记了思路没记代码,而且表达不清晰,事后看不知所云,这个习惯要改。

这十几天学了点关于操作系统、windows编程和网络,主要看的书有以下几本,都没看完或者只看了一点,记下书名先:

《现代操作系统》
《深入解析windows操作系统》
《windows程序设计》
《c#入门经典》
《wpf编程宝典》
《图解tcp/ip》
另外《tcp/ip详解》《java网络编程》《netty权威指南》是准备接下来看的。

1.操作系统

应用程序硬件之间的夹层,向上暴露方便编程的接口,向下管理硬件。
核心的核心:进程地址空间文件,这三者分别是CPU内存硬盘的抽象。
进程线程都是容器,CPU在多个容器间往来穿梭,就像有多个CPU似的。

2.windows

分为用户态内核态,重要代码运行在内核态,应用程序运行在用户态,应用程序通过调用api进行编程。具体见《深入解析windows操作系统》。
windows api编程,mfc编程,form编程,wpf编程。界面编程技术越来越多了,但学api编程还是有用,会理解底层原理。读《windows程序设计》吧。
c#跟java很像,但强大很多,像是java+语法糖一样,《c#入门经典》是入门书。
现在好像推荐wpf编程而不是使用form了,《wpf编程宝典》是为了凑单买的,好厚一本,躺着没法读。

3.网络

传输层的tcp协议和网络层的ip协议是最关键的,不过《图解tcp/ip》不像《图解http》那样简单可爱,可能是因为本来就更复杂的缘故。
还要再读读,还有最有名的《tcp/ip详解》。
虽然我java用了很久,但除了web之外的网络编程其实不多,《java网络编程》和《netty权威指南》应该读读。nio这块的课也该补一下。

4.一个demo

socket编程其实足以用来开发各种c/s程序,上次博文代码找不到了,这次重新写,刚好还学了点儿windows编程,就用wpf做个exe程序的客户端,这回真像c/s程序了。
socket处于应用层和传输层之间,提供使用tcp协议的可能性,由应用层的程序代码调用。
双向传输中的“读”这块,由于while(xx.readLine)是阻塞的,所以客户端和服务端都需要使用一个专门线程用于等待响应。
线程就像是人,传统单线程程序好比只有一个人的公司,每多一个线程就好比多一个员工,这样同一个时间可以真正同时做多件事了,尤其是阻塞这种“需要有个人傻等”的情况。CPU是大脑,而进程、线程是对CPU的抽象,多进程/线程就像多大脑,能齐头并进地处理事情,当你发现你的程序需要多个大脑,就采用多线程吧。
代码,包括了java和c#的客户端,以及用java写的服务器。

java写的服务器打成可执行jar包,然后写个bat脚本,内容如下:

call java -jar myServer.jar

就能方便地启动了。

 

c#的程序最让我惊艳的是函数是一等对象了:

这行(doClose是个函数)

this.Closing += doClose;

和这行(doReceive是个函数)

receiveThread = new Thread(doReceive);

的写法都让人感到好舒服。

然后下面是类似android的代码,新线程想改变控件内容不能直接改,因为控件属于主线程。

this.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal,(ThreadStart)delegate ()

{
    theLabel.Content = msg;
});

“委托”这东西我感觉就像javascript里所谓的函数字面量,或者java中的匿名内部类(用来提供方法体的)。

长期欢迎项目合作机会介绍,项目收入10%用于酬谢介绍人。新浪微博:,QQ:908789432。

转载于:https://my.oschina.net/u/866216/blog/529119

你可能感兴趣的文章
oracle11g dataguard 安装手册(转)
查看>>
java并发包分析之———Deque和LinkedBlockingDeque
查看>>
1. Two Sum - Easy - Leetcode解题报告
查看>>
SQLiteHelper
查看>>
多线程---同步函数的锁是this(转载)
查看>>
鱼C记事本V1.0(下)- 零基础入门学习Delphi28
查看>>
百练 2742 统计字符数 解题报告
查看>>
Ubuntu搜狗输入法候选词乱码
查看>>
js中回调函数写法
查看>>
React native android 最常见的10个问题
查看>>
数据结构和算法
查看>>
int a; int* a; int** a; int (*a)[]; int (*a)(int)
查看>>
.Net 项目代码风格要求
查看>>
java编码规范
查看>>
[pat]1045 Favorite Color Stripe
查看>>
Immutable学习及 React 中的实践
查看>>
【转】性能测试步骤
查看>>
OSI与TCP/IP各层的结构与功能,都有哪些协议
查看>>
Android实例-程序切换到后台及从后台切换到前台
查看>>
spring boot启动定时任务
查看>>