#编程

Java 并发编程(三):如何保证共享变量的可见性?

上一篇,我们谈了谈如何通过同步来保证共享变量的原子性(一个操作或者多个操作要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行),本篇我们来谈一谈如何保证共享变量的可见性(多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值)。我们使用同步的目的不仅是,不希望某个线程在使用对象状...

重学Java(一):与《Java编程思想》的不解之缘

 说起来非常惭愧,我在2008年的时候就接触了Java,但一直到现在(2018年10月10日),基础知识依然非常薄弱。用一句话自嘲就是:十年IT老兵,Java菜鸡一枚。于是,我想,不如静下心来,重新读一遍那些经典的Java技术书,并且没读完一章就输出一篇原创技术文章。从哪一本开始呢?想了一想,还是从《Java...

Java 并发编程(二):如何保证共享变量的原子性?

线程安全性是我们在进行Java并发编程的时候必须要先考虑清楚的一个问题。这个类在单线程环境下是没有问题的,那么我们就能确保它在多线程并发的情况下表现出正确的行为吗?我这个人,在没有副业之前,一心扑在工作上面,所以处理的蛮得心应手,心态也一直保持的不错;但有了副业之后,心态就变得像坐过山车一样。副业收入超过主业的时候,人...

Java 网络编程:必知必会的 URL 和 URLConnection

java.net.URL类将URL地址进行了封装,并提供了解析URL地址的基本方法,比如获取URL的主机名和端口号。java.net.URLConnection则代表了应用程序和URL之间的通信链接,可用于读取和写入此URL引用的资源。URLConnection看起来只是比URL多了一个Connection,它们之间的...

掌握这7个阅读方法,提高你的编程艺术

1、作为一名程序员,通过写代码来挣钱就是我的首要任务。如何挣更多钱呢?和领导多喝几杯酒,恐怕行不通。行得通的只有一条路——提高编程艺术!现在有两名程序员,王三和他哥王二,他们要实现相同功能的程序。王三的代码冗长、复杂难懂、性能低下;王二的代码逻辑清晰、简单明了、性能还很可观。这个时候,我们就可以...

thinkphp AOP(面向切面编程)

AOP:在软件业,AOP为AspectOrientedProgramming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔...

****CodeIgniter使用cli模式运行,把php作为shell编程

shell简介在计算机科学中,Shell俗称壳(用来区别于核)。而我们常说的shell简单理解就是一个命令行界面,它使得用户能与操作系统的内核进行交互操作。常见的shell环境有:MS-DOS、BourneShell(/usr/bin/sh或/bin/sh)、BourneAgainShell(/bin/bash)、CS...

***Java 多线程 并发编程

一、多线程1、操作系统有两个容易混淆的概念,进程和线程。进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。线程:表示程序的执行流程,是CPU调度执行的基本单位;线程有自己的程序计数...

shell编程总结

  Shell是一个命令解释器。它不仅是操作系统内核与用户之间的绝缘层,同时也是一种功能相当强大的编程语言。一个Shell程序,通常称为脚本,它是一个由系统调用,命令工具,软件包和已编译的二进制包"粘合" 起来的极易使用的工具。事实上,整个UNIX系统命令,软件包和工具都能由一个shell脚本调用。如果这还不...
IT猿 ·2020-03-26

Unix编程之size_t、ssize_t

我非常肯定以及确定的告诉你ssize_t是有符号整型,在32位机器上等同与int,在64位机器上等同与longint,有没有注意到,它和long数据类型有啥区别?其实就是一样的。size_t就是无符号型的ssize_t,也就是unsignedlong/unsignedint(在32位下),不同的编译器或系统可能会有区别...

Linux高级编程--11.信号

基本概念信号在Linux中是一个比较常见的概念,例如我们按Ctrl+C中断前台进程,通过Kill命令结束进程都是通过信号实现的。下面就以Ctrl+C为例简单的说明信号的处理流程:用户按下Ctrl-C,这个键盘输入产生一个硬件中断。该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断。终端驱动程序将Ctr...

Linux高级编程--10.Socket编程

Linux下的Socket编程大体上包括TcpSocket、UdpSocket即RawSocket这三种,其中TCP和UDP方式的Socket编程用于编写应用层的socket程序,是我们用得比较多的,而RawSocket则用得相对较少,不在本文介绍范围之列。TCPSocket基于TCP协议的客户端/服务器程序的一般流程...

Linux高级编程--09.线程互斥与同步

多个线程同时访问共享数据时可能会冲突,比如两个线程都要把某个全局变量增加1,这个操作在某平台需要三条指令完成:从内存读变量值到寄存器寄存器的值加1将寄存器的值写回内存假设两个线程在多处理器平台上同时执行这三条指令,则可能导致下图所示的结果,最后变量只加了一次而非两次。如下例子就演示了这一过程:#include<s...

Linux高级编程--08.线程概述

线程有的时候,我们需要在一个基础中同时运行多个控制流程。例如:一个图形界面的下载软件,在处理下载任务的同时,还必须响应界面的对任务的停止,删除等控制操作。这个时候就需要用到线程来实现并发操作。和信号处理函数的控制在处理完信号之后就结束不同的是,多线程的控制流程可以长期并存,操作系统会在各线程之间调度和切换,就像在多个进...

Linux高级编程--07.进程间通信

每个进程各自有不同的用户地址空间,进程之间要交换数据必须通过在内核中开辟缓冲区,从而实现数据共享。管道管道是一种最基本的IPC机制,由pipe函数创建:intpipe(intfiledes[2]);调用pipe函数时在内核中开辟一块缓冲区(称为管道)用于通信,它有一个读端一个写端,然后通过filedes参数传出给用户程...
首页上一页...7576777879下一页尾页