1.求一用C语言画直线的程序
2.HelloGitHub 开源月刊|第 99 期
3.什么是J2EE技术
求一用C语言画直线的程序
C语言的话画直线用MoveTo()和LineTo()很简单啊。
帮你复制一份我学习时老师给的画线两例:
#include<graphics.h>
#include<math.h>
/*
###############################################################################
功 能:本函数的作用是用逐点比较法来画一条直线
格 式:void myline1(int x1,int y1,int x2,int y2,int color)
参数说明:x1,y1是起始点坐标,x2,y2是终止点,color是画线的颜色
调用示例:myline1(,,,,4)
###############################################################################
*/
void myline1(int x1,int y1,int x2,int y2,int color)
{
/*变量定义开始(//增加)*/
int iTx; /*x轴终点的相对坐标xa或临时变量*/
int iTy; /*y轴终点的相对坐标ya或临时变量*/
int iDx; /*x轴方向的步长dx*/
int iDy; /*y轴方向的步长dy*/
int iFt; /*偏差Fm*/
int iSt; /*记数循环数(dx+dy)S*/
int iXt; /*x方向循环变量xm*/
int iYt; /*y方向循环变量ym*/
/*变量定义结束*/
/*变量初始化开始*/
/*如果是第三象限或第四象限则换成第一或第二象限*/
if(y2<y1)
{
iTx=x1;
x1=x2;
x2=iTx;
iTy=y1;
y1=y2;
y2=iTy;
}
iTx=x2-x1; /*取x轴的相对坐标*/
iTy=y2-y1; /*取y轴的相对坐标*/
iDx=1;
iDy=1;
iFt=0;
iSt=iTx+iTy;
if(iTx<0)iSt=-1*iTx+iTy;; /*如果在第二象限,则x轴方向步长取负值*/
iXt=0;
iYt=0;
/*变量初始化结束*/
/*数据处理开始*/
while(iSt>0)
{
putpixel(x1+iXt,y1+iYt,color);
if(iTx>=0) /*如果在第一象限*/
{
if(iFt<0) /*如果偏差小于0*/
{
iYt+=iDy; /*y方向走一步*/
iFt+=iTx;
}
else /*如果偏差大于或等于0*/
{
iXt+=iDx; /*x方向走一步*/
iFt-=iTy;
}
}
else
{
if(iFt<0) /*如果偏差小于0*/
{
iXt-=iDx; /*负x方向走一步*/
iFt+=iTy;
}
else /*如果偏差大于或等于0*/
{
iYt+=iDy; /*y方向走一步*/
iFt+=iTx;
}
}
iSt--;
}
}
/*
###############################################################################
功 能:本函数的作用是用来画一条直线
格 式:void myline2(int x1,int y1,int x2,int y2,int color)
参数说明:x1,y1是起始点坐标,x2,y2是终止点,color是画线的颜色
调用示例:myline2(,,,,4)
###############################################################################
*/
int myline2(int x1,int y1,int x2,int y2,int color)
{
int iX; /*x方向的坐标变量*/
int iY; /*y方向的坐标变量*/
int iTx; /*x方向的步长变量*/
int iTy; /*y方向的步长变量*/
float fDx; /*x方向的差分变量*/
float fDy; /*y方向的差分变量*/
float fMinf; /*算法中的f*/
float fMaxF; /*算法中的F*/
float fS; /*终点判断变量*/
fMinf=0.5; /*f=0.5*/
iX=x1;
iY=y1;
putpixel(x1,y1,color);
if(x1==x2&&y1==y2) /*如果终点和起始点相同*/
{
return(1);
}
iTx=1;
iTy=1;
fDx=(float)(x2-x1);
fDy=(float)(y2-y1);
fMaxF=fDy/fDx>0?fDy/fDx:(-fDy/fDx); /*F=|dy/dx|*/
if(fDx<0)iTx=-1;
if(fDy<0)iTy=-1;
fS=fDx>0?fDx:(-fDx);
if(fMaxF==1) /*如果F=1*/
{
iX=x1;
iY=y1;
while(fS>0)
{
iX+=iTx; /*x方向走一步*/
iY+=iTy; /*y方向走一步*/
putpixel(iX,iY,color);
fS--;
}
}
else if(fMaxF>1) /*如果F>1*/
{
fS+=fDy>0?fDy:(-fDy);
while(fS>0)
{
iY+=iTy; /*y方向走一步*/
putpixel(iX,iY,color);
fMinf+=1/fMaxF; /*f=f+1/F*/
fS--;
if(fMinf>=1) /*如果f>=1*/
{
iX+=iTx; /*x方向走一步*/
fMinf--; /*f=f-1*/
putpixel(iX,iY,color);
fS--;
}
}
}
else /*如果F<1*/
{
fS+=fDy>0?fDy:(-fDy);
while(fS>0)
{
iX+=iTx; /*x方向走一步*/
putpixel(iX,iY,color);
fMinf+=fMaxF; /*f=f+F*/
fS--;
if(fMinf>=1) /*如果f>=1*/
{
iY+=iTy; /*y方向走一步*/
fMinf--; /*f=f-1*/
putpixel(iX,iY,color);
fS--;
}
}
}
}
HelloGitHub 开源月刊|第 期
HelloGitHub 的第 期月刊分享了一系列有趣且适合入门的开源项目,让你在编程道路上更进一步。以下是本期推荐的一些亮点:
- C 项目:HandBrake,一个强大的不倒翁源码免费开源视频转码工具,支持多种格式转换。
- C# 项目:SwashbucklerDiary,一款简洁的日记应用,支持多种平台。
- SyncClipboard,跨平台剪贴板同步工具,支持本地部署或使用 WebDAV。
- C++ 项目:ladybird,一个独立开源浏览器,源自 SernityOS。
- mosh,婚礼请柬源码下载移动终端的远程终端工具,保持网络不稳定下的会话稳定。
- OpenArk,恶意程序分析与清理工具,专门针对 Windows 平台。
- Go 项目:dblab,交互式数据库客户端,支持多种数据库;go-size-analyzer,分析 Go 二进制文件大小;gws,高效的 WebSocket 库;river,后台任务管理平台;watermill,处理事件驱动应用的库。
- Java 项目:spring-reading,讲解 Spring 源码的教程;xpipe,一键远程登录 Docker 实例工具。
- JavaScript 项目:earthworm,出售溯源码标英语学习网站;million,优化 React 性能工具;pouchdb,离线存储的 JavaScript 数据库;stf,浏览器控制 Android 设备工具;ua-parser-js,解析 User-Agent。
- PHP 项目:openemr,开源医院管理系统;Python 项目:CleanMyWechat,清理微信缓存工具;searxng,尊重隐私的元搜索引擎;vulture,Python 代码分析工具;warp,高性能仿真编程框架。
- 更多语言项目和工具,涵盖了编程世界的各个角落。
如果你在这些项目中找到感兴趣的内容,欢迎分享给社区。期待下期更多的源码除法整数算法开源精彩!
什么是J2EE技术
J2EE是美国Sun公司刚刚推出的一种全新概念的模型,与传统的互联网应用程序模型相比有着不可比拟的优势。
当今许多企业都需要扩展他们的业务范围,降低自身经营成本,缩短他们和客户之间
的响应时间,这就需要存在一种简捷,快速的服务于企业,合作伙伴和雇员之间。
典型的说,提供这些服务的应用软件必须同企业信息系统(EIS)相结合,并提供新的能向更为广阔的用户提供的服务。这些服务要具备以下的特点:
a. 高可用性:来满足现在的全球商业环境
b. 安全性:保护用户的隐私和企业数据的安全
c. 可依赖性和可扩展性:保证商业交易的正确和迅捷
通常这些服务是由分布的应用程序组成的,包括前端数据端和后端数据源以及它们之间的一层或几层,这些中间层提供了把商业功能和数据与EIS相结合的功能。这些中间层把客户端从复杂的商业逻辑中分离出来,利用成熟的INTERNET技术使用户在管理上所花费的时间最小化。
J2EE正式降低了开发这种中间层服务的成本和复杂程度,因而使得服务可以被快
速的展开,并能够更轻松的面对竞争中的压力。
J2EE通过定义一种标准的结构来实现它的优势,如下:
a. J2EE Application Programming Model ----一种用于开发多层次,瘦型客户用户程
序的网站源码不显示标准设计模型
b. J2EE Platform----一个标准的平台,用来整合J2EE的应用程序,指定一系列的
接口和方法
c. J2EE Compatibility Test Suite----一套兼容测试组件,用来检测产品是否同J2EE 平台兼容
d. J2EE Reference Implementation----用来示范J2EE的能力
2.J2EE 应用程序模型
J2EE是被设计为顾客,雇员,供应商,合作者提供企业级服务,这样的应用程序天生具有复杂性,他们要访问各种类型的数据并分发于大量的客户端。
为了更好的控制,管理这些应用程序,支持各种各样用户的商业功能要在中间层引入,中间层描述了一个被企业的信息技术部门紧紧控制的环境。
J2EE应用程序依靠于EIS层来存储企业的商业数据。这些数据和用来管理它的系统是企业中的核心。
最初,双层结构(client-server)应用程序模型许诺将提高伸缩性与更广阔的功能,但不幸的
是,直接向用户提供EIS服务的复杂性和再每台用户计算机上安装和维护商业逻辑所引起的管理上的问题成了很大的限制。
而这些再双层结构中的限制在三层结构中已不存在了。
如今要求既开发服务的商业功能,还要开发访问数据库和其他资源的代码,这是很复杂的,因为每一种多层结构的服务器都有它自己的应用模型,因此组建一直富有经验的开发队伍将是困难的。另外,随着服务规模的扩大,为了降低开支和加快响应速度,也要经常对其基层代码进行修改。
J2EE应用模型定义了一种建筑模型来让多层应用程序实现服务,并消除了以上的问题,提供了可伸缩的,易访问的,易于管理的方法。
J2EE应用模型把实现多层结构服务的工作划分为二部分:
开发者实现商业和表达逻辑,以及由J2EE平台提供的标准的系统服务。
开发者可以依赖于这个平台为开发中间层服务中遇到的系统级硬件问题提供
解决方案
J2EE应用模型为中间层应用程序提供了编译一次,任意运行的特点(write once,run anywhere),这种标准模型最小化了培训开发人员的费用。
J2EE应用程序模型通过在建立多层应用程序中最小化其复杂程度,围简化和加速应用程序的开发迈出了重要的一步。
3.Java技术基础
J2EE应用程序模型起始于Java程序语言和Java虚拟机,他们提供的不断提高的便携性,安全性和开发人员能力的提高是应用程序模型的基础。
应用程序模型通常包括JavaBean组件模型,JavaBean是的为普通功能编写基于Java技术的代码更加容易,利用JavaBean的开发工具可以可视的定制,组合这些组件。
4.安全性
当其他的应用程序模型需要在每个程序中有特定平台的安全性时,J2EE平台环境使在开发时安全约束便已定义了。
J2EE平台定义了一种标准的公开的存取控制规则,当程序在企业平台上开发时就已被程序师定义和解释了。J2EE也需要提供一个标准的注册机制以便应用程序不用将这些注册机制和逻辑相混合,相同的工作要执行于大量的不同的环境中而并不需要改变源代码。
例如:J2EE应用程序开发人员可以指定几个安全级别(如,user,superuser,administrator),于是他们写出代码来检查当前用户权限的级别当用户访问数据时。在开发阶段,开发人员赋予多组用户适当的安全级,使应用程序能够容易的判断限制级在执行限制操作之前。
5.中间层
J2EE应用程序模型的一个主要优点便是在中间层的多层应用程序。在J2EE平台,中间层商业功能是由企业JavaBean实现的。
这些企业Beans允许服务开发者集中于商业逻辑,并且让EJB Server处理传送稳定的,可升级服务的复杂工作。
JavaServerPages 技术和Servlets向客户层提供了易于访问的Internet型服务的中间层功能。Jsp技术使用户接口开发者更加容易的提供向任何浏览器用户提供动态页面的服务。Servlets让基于Java技术的开发者有更大的自由来在Java语言中提供完全的动态服务。
6. 客户层
J2EE平台支持几种类型的客户。
许多J2EE服务被设计为浏览器用户服务,这些服务通过动态生成Html页和表单来同客户端实现交互,而Jsp和Servlets是通过让这些商业数据通过某种方式格式化,使客户端更容易来同它工作。这些客户端可以是运行于浏览器中的JavaApplet和基于Java技术的程序。
要注意的是安全是多层结构的关键部分,在J2EE中安全性总是通过平台和管理员来解决的。在大多案例中,服务方或客户方都不需要开发者与安全逻辑。
7. 基于Html页的客户
在Java2中可以实现向用户的浏览器直接提供动态Html页的服务,在JavaServerPage 技术中通过在Html页中插入Java代码动态生成页是一种很容易的事情。在一些例子中,某些服务需要一些综合的代码,者可以通过从Jsp中调用JavaBean的方法来实现。
8. J2EE声明
J2EE应用程序模型的一个重要的目标就是使应用程序最小化。实现这一点的一种方法是提高在J2EE平台上运行普通任务的负担,这些普通任务包括强制一个应用程序的安全目标,执行它的交易处理,链接它所需要的组件。
J2EE提供了一种简单的,公开的方式来说明这些行为。这些说明被分散的放在各部分代码中和开发描述中,开发描述是应用程序包的一部分,这些基于xml的说明使应用程序开发者不用修改任何组件就可以改变应用程序的作用。