
java
蒙娜丽宁
华为HDE(HUAWEI Developer Experts),UnityMarvel创始人,开放原子基金会银牌讲师,51CTO学堂金牌讲师,IT畅销书作者。从事软件研究和开发超过20年,长期从事编译器、人工智能、Python、Go、JavaScript、Java及跨平台技术的研究和开发工作,曾出版超过40本IT图书。主要著作包括《Python从菜鸟到高手》、《Python爬虫从菜鸟到高手》、《奇妙的Python:神奇代码漫游之旅》。
展开
-
打破国外垄断,开发中国人自己的编程语言(2):使用监听器实现计算器
本文详细讲解如何用Listener方式实现一个可以计算表达式的程序,该程序不仅可以计算表达式,也可以识别表达式的错误,如果某一个表达式出错,那么该表达式不会输出任何结果。原创 2020-08-20 19:39:25 · 2816 阅读 · 1 评论 -
打破国外垄断,开发中国人自己的编程语言(1):编写解析表达式的计算器
本文是《打破国外垄断,开发中国人自己的编程语言》系列文章的第1篇。本系列文章的主要目的是教大家学会如何从零开始设计一种编程语言(marvel语言),并使用marvel语言开发一些真实的项目,如移动App、Web应用等。原创 2020-08-20 19:34:34 · 75377 阅读 · 172 评论 -
小白写了一堆if-else,大神实在看不下去了,竟然用策略模式直接摆平了
这里涉及到一个关键词:策略模式,那么到底什么是策略模式呢?本文就来好好给大家讲讲策略模式,大家可以带着如下几个问题来阅读本文:如何通过策略模式优化业务逻辑代码(可以根据自己从事的工作思考)使用策略模式优化if-else,会不会带来什么副作用呢?实现策略模式是否有更好的方式呢?1. 策略模式如何优化代码解构要会带这个问题,需要先弄清楚策略模式的定义,首先来看策略模式的教科书定义:策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。 策略模式原创 2020-07-02 12:07:20 · 1695 阅读 · 2 评论 -
深度解析Java中的5个“黑魔法”
现在的编程语言越来越复杂,尽管有大量的文档和书籍,这些学习资料仍然只能描述编程语言的冰山一角。而这些编程语言中的很多功能,可能被永远隐藏在黑暗角落。本文将为你解释其中5个Java中隐藏的秘密,可以称其为Java的“黑魔法”。对于这些魔法,会描述它们的实现原理,并结合一些应用场景给出实现代码。一石二鸟:实现注释(Annotation)从JDK5开始,Java开始引入注释功能,从此,注释已成为许多...原创 2020-04-16 08:12:13 · 1293 阅读 · 0 评论 -
WebService大讲堂之Axis2(1):用POJO实现0配置的WebService
本文为原创,如需转载,请注明作者和出处,谢谢! Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物。Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON等技术。这些都将在后面的系列教程中讲解。在本文中主要介绍了如何使用Axis2开发一个不需要任何配置文件的WebSer原创 2009-01-02 17:54:00 · 1901 阅读 · 2 评论 -
WebService大讲堂之Axis2(2):复合类型数据的传递
本文为原创,如需转载,请注明作者和出处,谢谢! 在实际的应用中,不仅需要使用WebService来传递简单类型的数据,有时也需要传递更复杂的数据,这些数据可以被称为复合类型的数据。数组与类(接口)是比较常用的复合类型。在Axis2中可以直接使用将WebService方法的参数或返回值类型声明成数组或类(接口)。但要注意,在定义数组类型时只能使用一维数组,如果想传递多维数组,可以使用分隔符进行原创 2009-01-05 09:08:00 · 1966 阅读 · 0 评论 -
Struts1.x系列教程(1):用MyEclipse开发第一个Struts程序
本文为原创,如需转载,请注明作者和出处,谢谢! 本系列教程将详细介绍Struts 1.x的基本原理和使用方法,读者可以参阅《Struts 2系列教程》来比较Struts 1.x和Struts2.x的相同点和不同点。 在这篇文章中将以一个简单的例子(mystruts)来演示如何使用MyEclipse来开发、运行Struts程序,并给出了解决ActionForm出现原创 2009-01-13 12:36:00 · 1828 阅读 · 0 评论 -
Struts1.x系列教程(4):标签库概述与安装
本文为原创,如需转载,请注明作者和出处,谢谢! Struts的整个视图层(就是MVC模式中的View层)是由Struts的定制标签(或者称为定制动作)和客户端代码(Javascript、HTML等)实现的。这些Struts标签被写在JSP页面中,用于生成客户端代码、进行逻辑判断等工作,使用Struts标签可以尽量避免直接在JSP页面中直接使用Java代码,以使得JSP页面更容易编写和原创 2009-01-16 08:43:00 · 1197 阅读 · 0 评论 -
Struts1.x系列教程(5):HTML标签库
本文为原创,如需转载,请注明作者和出处,谢谢! HTML标签库中的标签基本上都是和HTML Tag一一对应的。但我们经常使用的主要是标签及其子标签。因此,在本文将介绍一下及其常用子标签的用法。一、HTML标签库中的常用标签1. 标签 标签对应于HTML标签。用于向服务端提交用户输入信息。标签和HTML标签在使用方法上基本相同,但它们的一个重要原创 2009-01-16 21:51:00 · 1266 阅读 · 0 评论 -
Struts1.x系列教程(2):简单的数据验证
本文为原创,如需转载,请注明作者和出处,谢谢!《Struts 2系列教程》 简单验证从本质上说就是在服务端来验证客户端提交的form中的数据。这种验证只是对form中的数据规则进行检查,如必须输入用户ID,价格不能小于0或是对email格式的验证。在这个验证过程中,并不需要访问数据库。因此,简单验证需要在用户提交form后,并且在服务器处理form中的数据之前进行。 在进行完简单验证后原创 2009-01-14 08:52:00 · 1197 阅读 · 0 评论 -
Struts1.x系列教程(3):属性(资源)文件乱码问题的解决之道
本文为原创,如需转载,请注明作者和出处,谢谢! 资源文件不仅仅需要保存英文信息,在很多时候,也需要保存其他的语言信息,如中文信息。但Java的属性文件只支持英文,要想在属性文件中保存中文,需要使用"uxxxx格式,但这非常不方便,因此,本文将分别介绍如何使用native2ascii.exe和Eclipse插件的方式来解决这个问题。一、使用native2ascii命令使资源文件支持中文原创 2009-01-15 11:05:00 · 1150 阅读 · 0 评论 -
09考研数据结构试题的一种解法(Java版)
本文为原创,如需转载,请注明作者和出处,谢谢! 虽然研究生已毕业,但看到有一些难度的研究生考试题还是忍不住要做做,本文给出了09年研究生入学考试的一道数据结构题的Java实现。该题的描述如下图所示。 该题的两种实现一位朋友已经完成了,详见递归和非递归实现 。在本文将给出另外一种算法,该算法的空间复杂度为O(1),时间复杂度为O(n)。这在空间复杂度和时间复杂原创 2009-01-17 21:06:00 · 1907 阅读 · 1 评论 -
Struts1.x系列教程(7):Logic标签库
本文为原创,如需转载,请注明作者和出处,谢谢! Struts Logic标签库包含了如下三类标签: 1. 循环标签:iterate标签。用于枚举数组、集合类型对象中的元素。 2. 条件处理标签:用于是否相等、比较大小等判断。这类标签有empty、equal 、greaterEqual、greaterThan、lessEqual、lessThan、match、messagesNot原创 2009-01-19 22:30:00 · 1353 阅读 · 0 评论 -
Struts1.x系列教程(6):Bean标签库
本文为原创,如需转载,请注明作者和出处,谢谢!Bean标签库共有11个标签。这些标签可以完成如下五种工作:1. 获得HTTP请求信息2. 访问Java对象3. 访问JSP内嵌对象和Struts配置对象4. 访问Web资源和属性文件5. 输出信息下面我们就来分别介绍一下如何使用Bean标签库中的原创 2009-01-19 08:42:00 · 1527 阅读 · 0 评论 -
WebService大讲堂之Axis2(3):使用services.xml文件发布WebService
本文为原创,如需转载,请注明作者和出处,谢谢!上一篇:WebService大讲堂之Axis2(2):复合类型数据的传递 用Axis2实现Web Service,虽然可以将POJO类放在axis2/WEB-INF/pojo目录中直接发布成Web Service,这样做不需要进行任何配置,但这些POJO类不能在任何包中。这似乎有些不方便,为此,Axis2也允许将带包的POJO类发布成原创 2009-01-21 20:18:00 · 1716 阅读 · 0 评论 -
WebService大讲堂之Axis2(4):二进制文件传输
本文为原创,如需转载,请注明作者和出处,谢谢! 在《WebService大讲堂之Axis2(2):复合类型数据的传递》中讲过,如果要传递二进制文件(如图像、音频文件等),可以使用byte[]作为数据类型进行传递,然后客户端使用RPC方式进行调用。这样做只是其中的一种方法,除此之外,在客户端还可以使用wsdl2java命令生成相应的stub类来调用WebService,wsdl2j原创 2009-01-26 00:50:00 · 1263 阅读 · 0 评论 -
WebService大讲堂之Axis2(5):会话(Session)管理
本文为原创,如需转载,请注明作者和出处,谢谢!WebService给人最直观的感觉就是由一个个方法组成,并在客户端通过SOAP协议调用这些方法。这些方法可能有返回值,也可能没有返回值。虽然这样可以完成一些工具,但这些被调用的方法是孤立的,当一个方法被调用后,在其他的方法中无法获得这个方法调用后的状态,也就是说无法保留状态。读者可以想象,这对于一个完整的应用程序,无法保留状态,原创 2009-01-26 00:53:00 · 1668 阅读 · 0 评论 -
WebService大讲堂之Axis2(6):跨服务会话(Session)管理
本文为原创,如需转载,请注明作者和出处,谢谢!在《WebService大讲堂之Axis2(5):会话(Session)管理》一文中介绍了如何使用Axis2来管理同一个服务的会话,但对于一个复杂的系统,不可能只有一个WebService服务,例如,至少会有一个管理用户的WebService(用户登录和注册)以及处理业务的WebService。象这种情况,就必须在多个WebServic原创 2009-02-03 23:46:00 · 1136 阅读 · 0 评论 -
Struts2.1.6测试小记
本文为原创,如需转载,请注明作者和出处,谢谢! Struts2.1.x终于推出正式版了,迫不急待地下了试试(读者可以从http://struts.apache.org/download.cgi#struts216下载)。从这个版本所带的jar包上看丰富了很多。很多jar包的版本也有所提升。 下载后按着Struts2.0.14版的方法进行配置,将我以前做的一些程序移植到S原创 2009-02-06 13:01:00 · 1699 阅读 · 2 评论 -
将Java程序变成可执行文件的简单方法
本文为原创,如需转载,请注明作者和出处,谢谢!launcher下载 运行Java程序(SWING或SWT的桌面程序)可以直接执行.class文件或将所有的.class文件及相关的其他文件压缩成.jar文件,然后使用javaw -jarmy.jar来运行程序(其中my.jar是一个jar文件名,可以是任何指定的jar文件)。但在windows下,用户习惯直接运行一原创 2009-04-16 12:52:00 · 1343 阅读 · 0 评论 -
想抢先体验Android操作系统的魅力吗?那就使用Android LiveCD吧!
本文为原创,如需转载,请注明作者和出处,谢谢! 由于目前基于Android的手机价格比较贵。如果只是为了体验android,花几千元买个手机也不值得。不过幸好Google想到了这一点,刚刚推出了Android LiveCD0.2。那么什么叫LiveCD呢?就是可以刻在光盘中启动的Android,可以在PC上运行。当然,也可以使用VMWare、VirtualPC原创 2009-08-05 09:24:00 · 1281 阅读 · 0 评论 -
流媒体程序开发之:H264解码器移植到OPhone
1. 移植目标 将H.264解码器移植到OPhone操作系统之上(NDK+C),并写一个测试程序(OPhoneSDK+Java)测试解码库是否正常运行,下面是解码时的截图: OPhone的模拟器和Mobile的模拟器一样是模拟ARM指令的,不像Symbian模拟器一样执行的是本地代码,所以在模拟器上模拟出来的效率会比真实手机上的效率要低,原创 2009-09-20 17:46:00 · 1407 阅读 · 0 评论 -
Android 资源和国际化
资源是您在代码中使用到的并且在编译时被打包进您的应用程序的附加文件。Android支持多种不同的文件,包括XML、PNG和JPEG文件。XML文件的格式决定于其描述的内容。这些文件将描述文件支持的类型、语法或格式。 处于加载效率的考虑,资源被从代码中分离出来,而且XML文件被编译进二进制代码中。字符串,类似的会被压缩存储为更经济的格式。处于这样或那样的原因,Android平台中会原创 2009-08-21 08:47:00 · 1129 阅读 · 0 评论 -
Java网络编程从入门到精通(31):非阻塞I/O简介
Normal07.8 磅02falsefalsefalseMicrosoftInternetExplorer4st1":*{behavior:url(#ieooui) }<!--/* Font Definitions */@font-face{font-family:宋体;panose-1:2 1原创 2009-08-16 10:47:00 · 1519 阅读 · 0 评论 -
Java网络编程从入门到精通(28):获取ServerSocket信息的方法及FTP原理
Normal07.8 磅02falsefalsefalseMicrosoftInternetExplorer4st1":*{behavior:url(#ieooui) }<!--/* Font Definitions */@font-face{font-family:Wingdings;panose原创 2009-08-12 14:47:00 · 1532 阅读 · 0 评论 -
android和OPhone模拟器界面对比
本文为原创,如需转载,请注明作者和出处,谢谢! OPhone是中国移动推出的手机操作系统平台,是基于android的,只是做了一些扩展。在界面和widget的显示效果还是有一些区别的。下面是我做的一个写blog的应用。看看它们的界面效果。图1 android模拟器图2 OPhone模拟器国内最棒的Google Android技术社原创 2009-07-23 12:48:00 · 805 阅读 · 0 评论 -
Java网络编程从入门到精通(24):实现HTTP断点续传下载工具(附源代码)
本文为原创,如需转载,请注明作者和出处,谢谢!上一篇:Java网络编程从入门到精通(23):HTTP消息头字段源代码下载:download.rar 在前面的文章曾讨论了HTTP消息头的三个和断点继传有关的字段。一个是请求消息的字段Range,另两个是响应消息字段Accept-Ranges和Content-Range。其中Accept-Ranges用来断定W原创 2009-07-02 18:48:00 · 2191 阅读 · 1 评论 -
Java网络编程从入门到精通(22):实现HTTP模拟器
本文为原创,如需转载,请注明作者和出处,谢谢!上一篇:Java网络编程从入门到精通(21):HTTP消息的格式源代码和.class文件下载 在讨论HTTP协议的具体请求和响应头字段之前,让我们先来利用以前所学的知识来实现一个HTTP模拟器。所谓HTTP模拟器就是可以在用户输入HTTP的请求消息后,由这个模拟器将HTTP请求发送给相应的服务器,再接收服务器的响应原创 2009-06-09 12:49:00 · 1309 阅读 · 1 评论 -
Java网络编程从入门到精通(21):HTTP消息的格式
本文为原创,如需转载,请注明作者和出处,谢谢!上一篇:Java网络编程从入门到精通(20):HTTP协议简介 当用户在浏览器中输入一个基于HTTP协议的URL时(以http://开头的URL),就相当于通知器按着这个URL组织生成一个HTTP请求,并交过个请求发送到服务器;同时,等待服务器的响应。无论是请求还是响应,都统称为HTTP消息。HTTP协议分为两部分:原创 2009-06-08 17:49:00 · 1202 阅读 · 0 评论 -
Java网络编程从入门到精通(20):HTTP协议简介
本文为原创,如需转载,请注明作者和出处,谢谢!Normal07.8 磅02falsefalsefalseMicrosoftInternetExplorer4st1":*{behavior:url(#ieooui) }<!--/* Font Definitions */@font-face{font-原创 2009-06-07 09:49:00 · 1285 阅读 · 0 评论 -
Java网络编程从入门到精通(2):创建InetAddress对象的四个静态方法
本文为原创,如需转载,请注明作者和出处,谢谢!上一篇:Java网络编程从入门到精通(1):Internet地址概述 InetAddress类是Java中用于描述IP地址的类。它在java.net包中。在Java中分别用Inet4Address和Inet6Address类来描述IPv4和IPv6的地址。这两个类都是InetAddress的子类。由于InetAddres原创 2009-03-31 10:17:00 · 1515 阅读 · 0 评论 -
Java网络编程从入门到精通(1):Internet地址概述
Normal07.8 磅02falsefalsefalseMicrosoftInternetExplorer4st1":*{behavior:url(#ieooui) }<!--/* Font Definitions */@font-face{font-family:Wingdings;panose原创 2009-03-23 21:17:00 · 2076 阅读 · 0 评论 -
Java网络编程从入门到精通(32):一个非阻塞I/O的例子
Normal07.8 磅02falsefalsefalseMicrosoftInternetExplorer4<!--/* Font Definitions */@font-face{font-family:宋体;panose-1:2 1 6 0 3 1 1 1 1 1;}@font-face{font-f原创 2009-08-21 09:47:00 · 1351 阅读 · 0 评论 -
Android教程之实现动作感应技术
今天有个公司说需要动作感应的几个小游戏!也接触android很久了,但是以前没有看过关于动作感应技术的教程,到google上也没搜索到类似教程!只有自己看API了,加上就其他平台的动作感应试试吧!就在这里记录下收获吧!1.发现Android提供了SensorListener接口2.要使用还得有个动作感应管理器SensorManagerJava代码 1. //原创 2009-08-17 10:47:00 · 1222 阅读 · 0 评论 -
中国农历算法java实现
/** * 中国农历算法 - 实用于公历 1901 年至 2100 年之间的 200 年 */import java.text.*;import java.util.*;class ChineseCalendarGB { private int gregorianYear; private int gregorianMonth; private原创 2009-08-16 16:47:00 · 1216 阅读 · 0 评论 -
想抢先体验Android操作系统的魅力吗?那就使用Android LiveCD吧!
本文为原创,如需转载,请注明作者和出处,谢谢! 由于目前基于Android的手机价格比较贵。如果只是为了体验android,花几千元买个手机也不值得。不过幸好Google想到了这一点,刚刚推出了Android LiveCD 0.2。那么什么叫LiveCD呢?就是可以刻在光盘中启动的Android,可以在PC上运行。当然,也可以使用VMWare、VirtualPC等虚拟软件来原创 2009-07-25 11:48:00 · 862 阅读 · 0 评论 -
实现一个用于显示当前时间的Google Android 窗口小部件(AppWidget)
本文为原创,如需转载,请注明作者和出处,谢谢! Android不用我多说了,这是Google在2007年推出的一款主要用于移动设备的操作系统。google在android sdk1.5中加入了appwidget api。通过这项技术,可以在android手机的主界面(Home界面)显示可以拖动的窗口,用于显示各种用户需要的信息。至于显示什么,就完全依靠开发人员的想象力了。O原创 2009-07-22 16:48:00 · 1760 阅读 · 2 评论 -
Java网络编程从入门到精通(23):HTTP消息头字段
本文为原创,如需转载,请注明作者和出处,谢谢!上一篇:Java网络编程从入门到精通(22):实现HTTP模拟器一、通用头字段1. Connection这个字段只在HTTP1.1协议中存在。它决定了客户端和服务器进行了一次会话后,服务器是否立即关闭网络连接。在客户端最直接的表现是使用read方法(readLine方法也是一样)读完客户端请求的Web资源后,是否立即原创 2009-06-23 13:48:00 · 1475 阅读 · 0 评论 -
eclipse + JBoss 5 + EJB3开发指南(13):在Servlet中访问应用程序管制EntityManager对象
本文为原创,如需转载,请注明作者和出处,谢谢!上一篇:eclipse + JBoss 5 + EJB3开发指南(12):使用命名查询执行JPQL 在前面的文章中使用的都是容器管制的EntityManager对象。这类EntityManager对象是由EJB容器创建的,在这种情况下,EntityManager对象的生命周期完全由EJB容器来管理。在SessionBea原创 2009-06-06 14:49:00 · 1221 阅读 · 0 评论 -
eclipse + JBoss 5 + EJB3开发指南(11):实体Bean的连接策略(JOINED Strategy)
本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:eclipse + JBoss 5 + EJB3开发指南(10):通过继承实体Bean,将单个表映射成多个表(单表策略,SINGLE_TABLE) 在上一篇文章中,使用单表策略将一个表从逻辑上分成了多个表。但这样可能会造成空巢字段,也就是说,一个逻辑表只由部分字段组成,而物理的表的很多字段的值就会为null。为了解原创 2009-06-04 15:49:00 · 928 阅读 · 0 评论