- nginx源码分析--内存池
theanarkh
nginx
内存池是nginx很重要的数据结构,结构图大概如下。ngx_palloc.h/**Copyright(C)IgorSysoev*Copyright(C)Nginx,Inc.*/#ifndef_NGX_PALLOC_H_INCLUDED_#define_NGX_PALLOC_H_INCLUDED_#include#include/**NGX_MAX_ALLOC_FROM_POOLshouldbe(n
- 02Nginx源码分析之总结内存开辟的相关函数(ngx_alloc.c,ngx_palloc.c)
Mango酱
Nginx源码分析nginx数据结构
02Nginx源码分析之总结内存开辟的相关函数(ngx_alloc.c,ngx_palloc.c)前言:写这一篇的目的是为了方便接下来的阅读,否则每次都要对应查找相应的函数,非常麻烦。并且注意:下面所说的内存对齐,实际上是通过倍数来对齐的,例如按照256对齐,此时只是将返回的首地址变成256的倍数,若想对齐,必须调用ngx_memalign时的参1也传256,这样就可以对齐,即0-256-512,
- nginx源码分析笔记(二):nginx整体结构、进程模型
奥斯特洛司机
1、nginx的整体结构master属于root用户worker进程属于nobody,权限比较低,安全性比较高。受到攻击时。2、nginx进程模型一个master多个worker进程。master是监控进程,不处理具体业务,管理worker进程。worker处理具体业务,包括连接和读写信号。3、master和worker之间采用信号或者共享内存进行通讯。看代码。4、worker进程如果死掉,mas
- nginx源码分析-1
Jacob0707
nginx
使用gdb查看函数上下文:gdbattachnginx的work线程监听端口状态时:断点打在ngx_http_process_request并通过浏览器触发请求时:
- nginx源码分析-2
Jacob0707
nginx
这一章内容讲述nginx进程的创建和工作进程是如何开展工作的。ngx_cycle_s结构体是nginx中非常重要的结构体之一,它代表了nginx运行时的环境。在nginx的生命周期中用于保存各种与运行时状态相关的信息。在ngx_start_worker_processes中会根据配置的工作进程数量,使用ngx_spawn_process函数创建新的进程,用于启动子进程来处理网络连接、缓存刷新、日志
- nginx源码分析-3
Jacob0707
nginx
这一章内容讲述nginx中的事件是如何一步步添加到epoll实例中的。在初始化http连接的函数ngx_http_init_connection中,nginx为http连接初始化了处理请求的回调函数,之后调用ngx_handle_read_event函数对可读数据进行处理。这里只为连接设置read而没有设置write是因为nginx使用的是异步非阻塞的事件驱动模型。由于是异步的,写事件的触发往往是
- Nginx源码分析之----auto/types/typedef脚本
郑尔多斯
微信公众号:Nginx源码分析关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!回顾我们在上一篇文章中详细的分析了auto/types/sizeof脚本源码,本文我们继续分析auto/types目录下的脚本文件。我们首先回顾一下nginx中的大致辅助脚本图片,如下图:nginx辅助脚本本文讲述一下auto/types/typedef脚本,aut
- Nginx源码分析-内存管理
bobo-zero
nginx运维
Nginx源码分析内存池内存池结构与操作系统相关的内存操作函数申请内存池申请小块内存申请大块内存内存的释放释放大块内存销毁内存池重置内存池共享内存参考链接内存池Nginx使用内存池管理进程内的内存,可分为两类:小块内存和大块内存。内存池的引入可有效解决两个问题:(1)减少应用程序与OS之间进行频繁内存和释放的系统调用,进而减少程序执行期间在两个空间的切换,提升了程序执行效率;(2)内存池可依据应用
- Nginx源码分析之 --- auto/init脚本
郑尔多斯
微信公众号:郑尔多斯关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!回顾上一篇文章我们详细的讲解了auto/option文件,该文件主要是为了初始化传递给configure的命令参数。本文继续讲解configure脚本调用的第二个文件auto/init。auto/init这个脚本主要是进行一些变量的初始化工作,为后续的Makefile文件进行
- nginx源码分析之--auto/sources脚本
郑尔多斯
回顾上一篇文章我们详细的讲解了auto/init文件,该文件主要是初始化一些文件目录,便于后面的编译过程。configure执行auto/init之后就会执行auto/sources文件,所以本文分析一下auto/sources文件,这个文件虽然内容很多,但是结构非常简单,全部是初始化操作,为后面的Makefile文件生成各种依赖。比如编译Core模块用到的依赖,编译pcre模块用到的依赖等等。a
- 自娱自乐代码人的源码分析系列汇总
老码农zhuli
websocket网络协议网络c语言
目录一、ptmalloc源码分析二、Lua源码分析三、Nginx源码分析四、Memcache源码分析一、ptmalloc源码分析《ptmalloc源码分析-ptmalloc的初始化实现(01)》《ptmalloc源码分析-分配区状态机malloc_state(02)》《ptmalloc源码分析-内存组织单元malloc_chunk(03)》《ptmalloc源码分析-主分配区和非主分配区Arena
- Nginx源码分析之--编译器相关脚本
郑尔多斯
微信公众号:Nginx源码分析关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!回顾前面我们介绍了nginx的很多脚本,比如测试操作系统是否支持某个特性的auto/feature脚本,测试类型变量长度的auto/types/sizeof脚本等等。有时候大家可能会问,nginx为什么搞这么多脚本呢?其实答案很简单:①.为了保证nginx的可移植性
- 定义了一个ngx_http_hello_init的方法,将ngx_http_hello_log_handler函数挂载到NGX_HTTP_LOG_PHASE日志处理阶段
katerdaisy
http网络协议网络
对Nginx源码分析-实战篇-编写一个阶段化的模块(25)原文https://blog.csdn.net/initphp/article/details/72912723的理解。如何定义了一个ngx_http_hello_init的方法,将ngx_http_hello_log_handler函数挂载到NGX_HTTP_LOG_PHASE日志处理阶段首先看conf的解析指令集,处理“http”blo
- nginx(七十五)nginx与Vary响应头细节探讨
wzj_110
nginxVary
一Vary①nginx与Vary有关联的地方nginx源码分析处理Vary响应头的逻辑CORS和缓存gzip_vary1)gzip_varyon如果设置为'开启'2)服务器'返回数据'时会在头部带上"Vary:Accept-Encoding"的标识3)客户端便可以知道获取到的数据'是否已经被压缩',默认为'关闭'proxy_cache_validproxy_ignore_headers相关参考②C
- Nginx源码分析 - 初探Nginx的架构(01)
alpha_2017
Nginx
Nginx是我们日常使用非常多的一款服务器。Nginx的源码写的非常漂亮,是c语言学习和进阶的最好的学习资料。我们这里分析的是1.13.1的版本。一、源码目录下面我们先看下Nginx的目录结构:Nginx的源码主要分布在src/目录下,而src/目录下主要包含三部分比较重要的模块。core:包含了Nginx的最基础的库和框架。包括了内存池、链表、hashmap、String等常用的数据结构。eve
- 【Nginx源码分析】Nginx的编译
weixin_34417200
运维shell操作系统
周生政nginx构建使用shell语言生成makefile,以及ngx_auto_config.h,ngx_auto_headers.h,ngx_modules.c。其中ngx_auto_config.h为各种常量定义,ngx_auto_headers.h为头文件,ngx_modules.c为nginx模块。makefile用来组织编译流程。configure主流程auto/options根据co
- nginx源码分析和openresty源码分析
你听不到
nginx网络
nginxnginx可以作为网关(负载均衡,路由规则,限流,访问控制),缓存服务器,web服务器(可以使用lua开发,openresty框架),反向代理服务器。支持http,https,http/2,grpc,tcp,udp,websocket协议。源码结构src/core(底层核心结构)启动入口和基础的数据结构和算法。nginx.c就是入口,初始化,启动多进程。数据结构ngx_arrayngx_
- Nginx源码分析--内存池
编程界的谢菲尔德
nginx高性能服务器java开发语言
1.问题引入使用C语言编程时,一般使用malloc和free进行动态内存申请和释放。如果一不小心忘记了调用free进行释放,很容易造成内存泄露。另一方面,频繁地进行malloc和free操作,很容易造成内存碎片。与此同时,因为malloc支持多线程同时操作,所以,使用同步锁是不可避免的。当然,根据malloc的实现原理,线程在进行malloc操作的时候,如果不能获得同步锁,就会另外在进程的heap
- Nginx源码分析-内存池
路飞大大
Memory-Poolnginxalignment代码分析struct数据结构server
Nginx源码分析-内存池Nginx的内存池实现得很精巧,代码也很简洁。总的来说,所有的内存池基本都一个宗旨:申请大块内存,避免“细水长流”。一、创建一个内存池nginx内存池主要有下面两个结构来维护,他们分别维护了内存池的头部和数据部。此处数据部就是供用户分配小块内存的地方。//该结构用来维护内存池的数据块,供用户分配之用。typedefstruct{u_char*last;//当前内存分配结束
- Nginx源码分析(2)之——共享内存管理之slab机制
m4trixl9
nginx内存管理nginx
Refer:《深入剖析Nginx》Chapter3.5共享内存《深入理解Nginx–模块开发与架构解析》Chapter16slab共享内存Nginx源码版本:nginx-1.10.1下面直接分析源代码,在代码里进行注释:--------------------------------nginx-1.10.1/src/core/ngx_slab.h--------------------------
- Nginx源码分析之-auto/types/value和auto/types/uintptr_t
郑尔多斯
微信公众号:Nginx源码分析关注可了解更多的Nginx知识。任何问题或建议,请公众号留言;关注公众号,有趣有内涵的文章第一时间送达!回顾在上周分析过了auto/types/typedef脚本,以及auto/types/sizeof脚本。我们简单的回忆一下这两个脚本的作用:auto/types/typedef:判断数据类型是否存在,如果不存在则生成相应的typedef语句。auto/types/s
- Nginx源码分析——master进程与worker进程(二)
sinom21
nginx源码nginx运维linux
一、说明在前面一章,我们大致了解了nginx进程的启动,没有深入的去看进程到底做做了些什么事情,本章我们就看看master进程工作到底在做什么。二、函数分析./src/os/unix/ngx_process_cycle.c>ngx_master_process_cycle(ngx_cycle_t*)ngx_new_binary=0;delay=0;sigio=0;live=1;for(;;){
- 关于Nginx文章迁移
sinom21
nginx源码nginx运维vue.js
对nginx的文章内容进行迁移Nginx源码分析——Nginx在MacOS环境下源码安装Nginx源码分析——Nginx目录结构Nginx源码分析——Nginx架构分析Nginx源码分析——main函数(一)Nginx源码分析——main函数(二)Nginx源码分析——master进程与worker进程(一)
- Nginx源码分析——worker进程源码与工作原理(二)
sinom21
nginx源码nginx运维lua
一、说明前面很多内容,可以说大致了解了下nginx是进程是怎么启动的,进程之间是如何通信的,花一些时间或多或少也都还是能看得懂的,后面要去了解ngx_worker_process_cycle函数,worker进程所有的实现或者核心基本都是在这个函数里面,可能需要花蛮长的时间去消耗去理解。二、方法主流程staticvoidngx_worker_process_cycle(ngx_cycle_t*cy
- nginx源码分析——事件模块
weixin_34347651
运维操作系统网络
2019独角兽企业重金招聘Python工程师标准>>>1.事件模块概述事件处理框架所要解决的问题是如何收集,管理,分发事件。这里所说的事件,主要以网络事件和定时器事件为主,而网络事件中又以TCP网络事件为主。由于网络事件与网卡中断处理程序,内核提供的系统调用密切相关,所以网络事件的驱动取决于不同的操作系统平台,在同一操作系统中也受制于不同的操作系统内核版本。因此不同操作系统有不同的事件驱动机制。基
- nginx源码分析——模块
weixin_33907511
运维python
2019独角兽企业重金招聘Python工程师标准>>>1.模块介绍高度模块化的设计是nginx的架构基础。在nginx中,除了少量的核心代码,其他一切皆为模块。这种模块化设计同时具有以下几个特点:高度抽象的模块接口所有的模块都遵循着同样的ngx_module_t接口设计规范,这减少了整个系统中的变数。模块接口非常简单,具有很高的灵活性模块的基本接口ngx_module_t足够简单,只涉及模块的初始
- nginx源码分析——event模块
weixin_33895657
运维epoll
源码:nginx1.12.0一、简介nginx是一款非常受欢迎的软件,具备高性能、模块化可定制的良好特性。之前写了一篇nginx的http模块分析的文章,主要对http处理模块进行了分析讲解,同时也涉及了nginx模块化的内容。至于nginx高性能的原因,希望能够在在这篇文章中就自己对于这方面的理解给大家分享一下。nginx的event处理模型包含两个方面:高效的IO处理函数,事件的异步处理(可选
- Nginx源码分析 ——Nginx的进程模型
skyleung
Nginx源码分析nginx源码
一、Nginx的功能简介Nginx("EngineX"),一个业界使用率非常高的轻量级高性能HTTP和反向代理服务器,也提供IMAP/POP3/SMTP等代理服务器功能。近年,由于Nginx专业团队不断提升其稳定性和各项服务性能指标,在很多方面已经超越著名的Apache服务器。由于Nginx是开源的,国内使用它作为Web服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻等门户网站频道,六
- Nginx源码分析之 长短连接
Mrpre
nginx
Nginx源码分析之长短连接:Nginx作为proxy,其长短连接有2部分,一部分是client一部分是server。downstream和upstream未开keepalive先梳理一下http_proxy的流程1:downstream如果location配置了proxy_pass,则会ngx_http_core_content_phase函数中调用ngx_http_proxy_handleri
- nginx源码分析—模块及其初始化
阿波321
高性能服务器
本博客(http://blog.csdn.net/livelylittlefish)贴出作者(阿波)相关研究、学习内容所做的笔记,欢迎广大朋友指正!Content0.序1.nginx有哪些模块?2.nginx如何描述这些模块?2.1模块数据结构2.1.1ngx_module_t结构2.1.2ngx_command_t结构2.2模块类图3.nginx如何组织这些模块?3.1全局数组ngx_modul
- java工厂模式
3213213333332132
java抽象工厂
工厂模式有
1、工厂方法
2、抽象工厂方法。
下面我的实现是抽象工厂方法,
给所有具体的产品类定一个通用的接口。
package 工厂模式;
/**
* 航天飞行接口
*
* @Description
* @author FuJianyong
* 2015-7-14下午02:42:05
*/
public interface SpaceF
- nginx频率限制+python测试
ronin47
nginx 频率 python
部分内容参考:http://www.abc3210.com/2013/web_04/82.shtml
首先说一下遇到这个问题是因为网站被攻击,阿里云报警,想到要限制一下访问频率,而不是限制ip(限制ip的方案稍后给出)。nginx连接资源被吃空返回状态码是502,添加本方案限制后返回599,与正常状态码区别开。步骤如下:
- java线程和线程池的使用
dyy_gusi
ThreadPoolthreadRunnabletimer
java线程和线程池
一、创建多线程的方式
java多线程很常见,如何使用多线程,如何创建线程,java中有两种方式,第一种是让自己的类实现Runnable接口,第二种是让自己的类继承Thread类。其实Thread类自己也是实现了Runnable接口。具体使用实例如下:
1、通过实现Runnable接口方式 1 2
- Linux
171815164
linux
ubuntu kernel
http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.1.2-unstable/
安卓sdk代理
mirrors.neusoft.edu.cn 80
输入法和jdk
sudo apt-get install fcitx
su
- Tomcat JDBC Connection Pool
g21121
Connection
Tomcat7 抛弃了以往的DBCP 采用了新的Tomcat Jdbc Pool 作为数据库连接组件,事实上DBCP已经被Hibernate 所抛弃,因为他存在很多问题,诸如:更新缓慢,bug较多,编译问题,代码复杂等等。
Tomcat Jdbc P
- 敲代码的一点想法
永夜-极光
java随笔感想
入门学习java编程已经半年了,一路敲代码下来,现在也才1w+行代码量,也就菜鸟水准吧,但是在整个学习过程中,我一直在想,为什么很多培训老师,网上的文章都是要我们背一些代码?比如学习Arraylist的时候,教师就让我们先参考源代码写一遍,然
- jvm指令集
程序员是怎么炼成的
jvm 指令集
转自:http://blog.csdn.net/hudashi/article/details/7062675#comments
将值推送至栈顶时 const ldc push load指令
const系列
该系列命令主要负责把简单的数值类型送到栈顶。(从常量池或者局部变量push到栈顶时均使用)
0x02 &nbs
- Oracle字符集的查看查询和Oracle字符集的设置修改
aijuans
oracle
本文主要讨论以下几个部分:如何查看查询oracle字符集、 修改设置字符集以及常见的oracle utf8字符集和oracle exp 字符集问题。
一、什么是Oracle字符集
Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货
- png在Ie6下透明度处理方法
antonyup_2006
css浏览器FirebugIE
由于之前到深圳现场支撑上线,当时为了解决个控件下载,我机器上的IE8老报个错,不得以把ie8卸载掉,换个Ie6,问题解决了,今天出差回来,用ie6登入另一个正在开发的系统,遇到了Png图片的问题,当然升级到ie8(ie8自带的开发人员工具调试前端页面JS之类的还是比较方便的,和FireBug一样,呵呵),这个问题就解决了,但稍微做了下这个问题的处理。
我们知道PNG是图像文件存储格式,查询资
- 表查询常用命令高级查询方法(二)
百合不是茶
oracle分页查询分组查询联合查询
----------------------------------------------------分组查询 group by having --平均工资和最高工资 select avg(sal)平均工资,max(sal) from emp ; --每个部门的平均工资和最高工资
- uploadify3.1版本参数使用详解
bijian1013
JavaScriptuploadify3.1
使用:
绑定的界面元素<input id='gallery'type='file'/>$("#gallery").uploadify({设置参数,参数如下});
设置的属性:
id: jQuery(this).attr('id'),//绑定的input的ID
langFile: 'http://ww
- 精通Oracle10编程SQL(17)使用ORACLE系统包
bijian1013
oracle数据库plsql
/*
*使用ORACLE系统包
*/
--1.DBMS_OUTPUT
--ENABLE:用于激活过程PUT,PUT_LINE,NEW_LINE,GET_LINE和GET_LINES的调用
--语法:DBMS_OUTPUT.enable(buffer_size in integer default 20000);
--DISABLE:用于禁止对过程PUT,PUT_LINE,NEW
- 【JVM一】JVM垃圾回收日志
bit1129
垃圾回收
将JVM垃圾回收的日志记录下来,对于分析垃圾回收的运行状态,进而调整内存分配(年轻代,老年代,永久代的内存分配)等是很有意义的。JVM与垃圾回收日志相关的参数包括:
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-Xloggc
-XX:+PrintGC
通
- Toast使用
白糖_
toast
Android中的Toast是一种简易的消息提示框,toast提示框不能被用户点击,toast会根据用户设置的显示时间后自动消失。
创建Toast
两个方法创建Toast
makeText(Context context, int resId, int duration)
参数:context是toast显示在
- angular.identity
boyitech
AngularJSAngularJS API
angular.identiy 描述: 返回它第一参数的函数. 此函数多用于函数是编程. 使用方法: angular.identity(value); 参数详解: Param Type Details value
*
to be returned. 返回值: 传入的value 实例代码:
<!DOCTYPE HTML>
- java-两整数相除,求循环节
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
public class CircleDigitsInDivision {
/**
* 题目:求循环节,若整除则返回NULL,否则返回char*指向循环节。先写思路。函数原型:char*get_circle_digits(unsigned k,unsigned j)
- Java 日期 周 年
Chen.H
javaC++cC#
/**
* java日期操作(月末、周末等的日期操作)
*
* @author
*
*/
public class DateUtil {
/** */
/**
* 取得某天相加(减)後的那一天
*
* @param date
* @param num
*
- [高考与专业]欢迎广大高中毕业生加入自动控制与计算机应用专业
comsci
计算机
不知道现在的高校还设置这个宽口径专业没有,自动控制与计算机应用专业,我就是这个专业毕业的,这个专业的课程非常多,既要学习自动控制方面的课程,也要学习计算机专业的课程,对数学也要求比较高.....如果有这个专业,欢迎大家报考...毕业出来之后,就业的途径非常广.....
以后
- 分层查询(Hierarchical Queries)
daizj
oracle递归查询层次查询
Hierarchical Queries
If a table contains hierarchical data, then you can select rows in a hierarchical order using the hierarchical query clause:
hierarchical_query_clause::=
start with condi
- 数据迁移
daysinsun
数据迁移
最近公司在重构一个医疗系统,原来的系统是两个.Net系统,现需要重构到java中。数据库分别为SQL Server和Mysql,现需要将数据库统一为Hana数据库,发现了几个问题,但最后通过努力都解决了。
1、原本通过Hana的数据迁移工具把数据是可以迁移过去的,在MySQl里面的字段为TEXT类型的到Hana里面就存储不了了,最后不得不更改为clob。
2、在数据插入的时候有些字段特别长
- C语言学习二进制的表示示例
dcj3sjt126com
cbasic
进制的表示示例
# include <stdio.h>
int main(void)
{
int i = 0x32C;
printf("i = %d\n", i);
/*
printf的用法
%d表示以十进制输出
%x或%X表示以十六进制的输出
%o表示以八进制输出
*/
return 0;
}
- NsTimer 和 UITableViewCell 之间的控制
dcj3sjt126com
ios
情况是这样的:
一个UITableView, 每个Cell的内容是我自定义的 viewA viewA上面有很多的动画, 我需要添加NSTimer来做动画, 由于TableView的复用机制, 我添加的动画会不断开启, 没有停止, 动画会执行越来越多.
解决办法:
在配置cell的时候开始动画, 然后在cell结束显示的时候停止动画
查找cell结束显示的代理
- MySql中case when then 的使用
fanxiaolong
casewhenthenend
select "主键", "项目编号", "项目名称","项目创建时间", "项目状态","部门名称","创建人"
union
(select
pp.id as "主键",
pp.project_number as &
- Ehcache(01)——简介、基本操作
234390216
cacheehcache简介CacheManagercrud
Ehcache简介
目录
1 CacheManager
1.1 构造方法构建
1.2 静态方法构建
2 Cache
2.1&
- 最容易懂的javascript闭包学习入门
jackyrong
JavaScript
http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
下面就是我的学习笔记,对于Javascript初学者应该是很有用的。
一、变量的作用域
要理解闭包,首先必须理解Javascript特殊
- 提升网站转化率的四步优化方案
php教程分享
数据结构PHP数据挖掘Google活动
网站开发完成后,我们在进行网站优化最关键的问题就是如何提高整体的转化率,这也是营销策略里最最重要的方面之一,并且也是网站综合运营实例的结果。文中分享了四大优化策略:调查、研究、优化、评估,这四大策略可以很好地帮助用户设计出高效的优化方案。
PHP开发的网站优化一个网站最关键和棘手的是,如何提高整体的转化率,这是任何营销策略里最重要的方面之一,而提升网站转化率是网站综合运营实力的结果。今天,我就分
- web开发里什么是HTML5的WebSocket?
naruto1990
Webhtml5浏览器socket
当前火起来的HTML5语言里面,很多学者们都还没有完全了解这语言的效果情况,我最喜欢的Web开发技术就是正迅速变得流行的 WebSocket API。WebSocket 提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术。这个新的API提供了一个方法,从客户端使用简单的语法有效地推动消息到服务器。让我们看一看6个HTML5教程介绍里 的 WebSocket API:它可用于客户端、服
- Socket初步编程——简单实现群聊
Everyday都不同
socket网络编程初步认识
初次接触到socket网络编程,也参考了网络上众前辈的文章。尝试自己也写了一下,记录下过程吧:
服务端:(接收客户端消息并把它们打印出来)
public class SocketServer {
private List<Socket> socketList = new ArrayList<Socket>();
public s
- 面试:Hashtable与HashMap的区别(结合线程)
toknowme
昨天去了某钱公司面试,面试过程中被问道
Hashtable与HashMap的区别?当时就是回答了一点,Hashtable是线程安全的,HashMap是线程不安全的,说白了,就是Hashtable是的同步的,HashMap不是同步的,需要额外的处理一下。
今天就动手写了一个例子,直接看代码吧
package com.learn.lesson001;
import java
- MVC设计模式的总结
xp9802
设计模式mvc框架IOC
随着Web应用的商业逻辑包含逐渐复杂的公式分析计算、决策支持等,使客户机越
来越不堪重负,因此将系统的商业分离出来。单独形成一部分,这样三层结构产生了。
其中‘层’是逻辑上的划分。
三层体系结构是将整个系统划分为如图2.1所示的结构[3]
(1)表现层(Presentation layer):包含表示代码、用户交互GUI、数据验证。
该层用于向客户端用户提供GUI交互,它允许用户