1.Struts 2çResult Type
2.Struts 2Result Type
3.TypeScript必知三部曲(一)TypeScript编译方案以及IDE对TS的源码类型检查
4.python代ç 大å
¨ç®åï¼
5.ts是什么格式的文件?
Struts 2çResult Type
å¨é»è®¤æ¶ï¼<result>æ ç¾çtypeå±æ§å¼æ¯âdispatcherâï¼å®é ä¸å°±æ¯è½¬åï¼forwardï¼ãå¼å人åå¯ä»¥æ ¹æ®èªå·±çéè¦æå®ä¸åçç±»åï¼å¦redirectãstreamçãå¦ä¸é¢ä»£ç æ示ï¼<result name=save type=redirect>
/result.jsp
</result>
è¿æ¤result-typeå¯ä»¥å¨struts2-core-2.0..1.jarå æstruts2æºä»£ç ä¸çstruts-default.xmlæ件ä¸æ¾å°ï¼å¨è¿ä¸ªæ件ä¸æ¾å°<result-types>æ ç¾ï¼ææçresult-typeé½å¨éé¢å®ä¹äºã代ç å¦ä¸ï¼ <result-types><result-type name=chain class=com.opensymphony.xwork2.ActionChainResult/><result-type name=dispatcher class=org.apache.struts2.dispatcher.ServletDispatcherResult default=true/><result-type name=freemarker class=org.apache.struts2.views.freemarker.FreemarkerResult/><result-type name=.opensymphony.xwork2.ActionChainResultchainå ¶å®åªæ¯å¨ä¸ä¸ªactionæ§è¡å®æ¯ä¹åï¼forwardå°å¦å¤ä¸ä¸ªactionï¼æ以ä»ä»¬ä¹é´æ¯å ±äº«HttpServletRequestçãå¨ä½¿ç¨chainä½ä¸ºResultæ¶ï¼å¾å¾ä¼é å使ç¨ChainingInterceptorãChainingInterceptorçä½ç¨æ¯å¨Actionç´æ¥ä¼ éæ°æ®ãäºå®ä¸ï¼æºActionä¸ValueStackçæ°æ®ä¼è¢«åä¸æ¬¡Copyï¼è¿æ ·ï¼2个Actionä¸çæ°æ®é½å¨ValueStackä¸ï¼ä½¿å¾å¯¹äºåå°æ¥è¯´ï¼éè¿ValueStackæ¥åæ°æ®ï¼æ¯éæèå ±äº«çãæ¯å¦è¯´ï¼ä¸å¼ 页é¢ä¸ï¼ä½ å¯è½æ许å¤æ°æ®è¦æ¾ç¤ºï¼èæäºæ°æ®çè·åæ¹å¼å¯è½è¢«å¾å¤ä¸åç页é¢å ±äº«ï¼å ¸åæ¥è¯´ï¼âæ¨èæç« âè¿ä¸ªå°æ ç®çæ°æ®è·åï¼å¯è½ä¼è¢«å¾å¤é¡µé¢æå ±äº«ï¼ãè¿ç§æ åµä¸ï¼å¯ä»¥æè¿é¨åé»è¾æ½åå°ä¸ä¸ªç¬ç«Actionä¸ï¼å¹¶ä½¿ç¨chainï¼å°è¿ä¸ªActionä¸ä¸»Action串èèµ·æ¥ãè¿æ ·ï¼æåå°è¾¾é¡µé¢çæ¶åï¼é¡µé¢å§ç»å¯ä»¥å¾å°æ¯ä¸ªActionä¸çæ°æ®ã
ä»å®æä¸è®²ï¼ä½¿ç¨chainä½ä¸ºResultä¹çç¡®åå¨çä¸é¢æ说ç许å¤é®é¢ï¼æ个人ä¹æ¯é常ä¸æ¨å´æ»¥ç¨è¿ç§Resultãå°¤å ¶æ¯ï¼å¯¹äºä½¿ç¨SpringåHibernateçæåæ¥è¯´ï¼å¦æä½ å¼å¯OpenSessionInView模å¼ï¼é£ä¹Hibernateçsessionæ¯è·éHttpServletRequestçï¼æ以sessionå¨æ´ä¸ªactioné¾ä¸å ±äº«ãè¿ä¼ä¸ºæ们çç¼ç¨å¸¦æ¥æ大ç麻ç¦ãå 为æ们ç¥éHibernateçsessionä¼ä¿çä¸ä»½ä¸çº§ç¼åï¼å¨actioné¾ä¸ï¼å ±äº«ä¸çº§ç¼åæ çä¼ä¸ºä½ çè°è¯å·¥ä½å¸¦æ¥å¾å¤§çä¸æ¹ä¾¿ã
æ以ï¼è°¨æ 使ç¨chainä½ä¸ºä½ çResultï¼åºè¯¥æ为ä¸æ¡æä½³å®è·µã éå®åå°ä¸ä¸ªURL org.apache.struts2.dispatcher.ServletRedirectResultå¦æä½ å¨Actionæ§è¡å®æ¯åï¼å¸ææ§è¡å¦ä¸ä¸ªActionï¼æ2ç§æ¹å¼å¯ä¾éæ©ãä¸ç§æ¯forwardï¼å¦å¤ä¸ç§æ¯redirectãæå ³forwardåredirectçåºå«ï¼è¿éæå°±ä¸åå±å¼ï¼è¿åºè¯¥å±äºJavaç¨åºåçåºæ¬ç¥è¯ãå¨Struts2ä¸ï¼åå«å¯¹åºè¿ä¸¤ç§æ¹å¼çResultï¼å°±æ¯chainåredirectã
å æ¥è°è°redirectï¼æ¢ç¶æ¯éå®åï¼é£ä¹æºå°åä¸ç®æ å°åä¹é´æ¯2个ä¸åçHttpServletRequestãæ以ç®æ å°åå°æ æ³éè¿ValueStackçStruts2çç¹æ§æ¥è·åæºActionä¸çæ°æ®ã
åæ¶ï¼RedirectçResultæ¯æå¨é ç½®æ件ä¸ï¼è¯»å并解ææºActionä¸ValueStackçå¼ï¼å¹¶æ为åæ°ä¼ éå°Redirectçå°åä¸ã éå®åå°ä¸ä¸ªAction org.apache.struts2.dispatcher.ServletActionRedirectResult
Struts 2Result Type
在Struts 2中,标签的大全type属性默认设置为"dispatcher",即页面转发。源码但开发者可以根据项目需求选择其他类型,大全比如redirect、源码stream等。大全html5实战源码例如,源码以下代码展示了如何指定redirect类型:
这些result-type的大全定义可以在struts2-core-2.0..1.jar包或源代码的struts-default.xml文件中找到,该文件包含一个标签,源码定义了各种result-type,大全如下所示:
- "dispatcher"通常处理JSP页面的源码转发。
- "FreemarkerResult"用于处理FreeMarker模板。大全
- "HttpHeaderResult"控制HTTP特殊行为。源码
- "StreamResult"将InputStream对象发送给浏览器,大全常用于文件下载和AJAX数据返回。源码
- "StreamResult"等效于在Servlet中直接输出流,用于输出、文档等二进制流。
配置示例:
image/jpeg
StreamResult支持参数控制输出流。"VelocityResult"处理Velocity模板,"XSLTResult"处理XML/XSLT模板,web地图 源码"PlainTextResult"则显示原始文件内容。
"chain"(ActionChainResult)用于处理Action链,Action之间的数据共享通过ChainingInterceptor实现,但这可能会导致Spring和Hibernate session共享问题,不建议滥用。
"redirect"(ServletRedirectResult)用于重定向到一个URL,与forward不同,目标地址无法获取源Action的数据。同时,redirect支持从源Action的换衣系统源码ValueStack中读取值传递到目标URL。
"redirectAction"(ServletActionRedirectResult)则重定向到另一个Action。在选择redirect或forward时,应根据实际需求权衡利弊。
TypeScript必知三部曲(一)TypeScript编译方案以及IDE对TS的类型检查
TypeScript代码的编译和IDE类型检查是开发者常遇到的问题。官方的tsc编译器与Babel编译器各有特点,IDE如IDEA和VSCode在打开TS项目时提供类型检查功能。本文将详细解释两种编译方案以及IDE如何配合。 首先,理解基本原则:尽管浏览器只认识JavaScript,但TS代码必须编译成JS才能运行。ssh服务源码编译过程涉及ts源代码、编译工具(tsc或Babel)和配置文件(tsconfig.json)。 1. tsc编译:TypeScript Compiler官方推荐方案,通过读取tsconfig.json配置编译ts为JS。配置可指定模块规范,如commonjs或es6。实践中,我们创建简单示例,配置文件可指定输出目录和模块类型。 2. Babel编译:通过Babel转换器处理TS,友麻将源码需配合preset和plugin。它不直接编译TS,而是处理代码语法和结构。配置.babelrc指定所需插件和转换规则。 IDE中,它们会启动TypeScript检测服务,根据tsconfig.json自动进行类型检查,使用的是项目中的TypeScript版本。 编译与IDE检查整合:tsc:编译和IDE检查共用一套逻辑,代码有问题,IDE会显示错误。
Babel:编译和IDE检查分开,可能IDE显示错误,编译却无问题。
本文着重讲解了基础内容,后续文章将深入探讨其他相关主题。python代ç å¤§å ¨ç®åï¼
pythonæ趣çç¼ç¨ä»£ç
class?Point:
row=0col=0def?__init__(self,?row,?col):self.row=row
self.col=col
def?copy(self):return?Point(row=self.row,?col=self.col)
#åå§æ¡æ¶
import?pygame
import?random
#åå§å
pygame.init()
W=
H=
ROW=
COL=
size=(W,H)
window=pygame.display.set_mode(size)
pygame.display.set_caption('è´ªåè')
bg_color=(,,)
snake_color=(,,)
head=Point(row=int(ROW/2),?col=int(COL/2))
head_color=(0,,)
snakes=[
Point(row=head.row,?col=head.col+1),Point(row=head.row,?col=head.col+2),Point(row=head.row,?col=head.col+3)]
#çæé£ç©
def?gen_food():
while?1:pos=Point(row=random.randint(0,ROW-1),?col=random.randint(0,COL-1))
#
is_coll=False
#æ¯å¦è·è碰ä¸äº
if?head.row==pos.row?and?head.col==pos.col:
is_coll=True#è身å
for?snake?in?snakes:
if?snake.row==pos.row?and?snake.col==pos.col:is_coll=True
break
if?not?is_coll:
breakreturn?pos#å®ä¹åæ
food=gen_food()
food_color=(,,0)
direct='left'#left,right,up,down
#
def?rect(point,?color):
cell_width=W/COLcell_height=H/ROWleft=point.col*cell_widthtop=point.row*cell_heightpygame.draw.rect(window,?color,
(left,?top,?cell_width,?cell_height)
)pass#游æ循ç¯
quit=True
clock=pygame.time.Clock()
while?quit:
#å¤çäºä»¶for?event?in?pygame.event.get():if?event.type==pygame.QUIT:
quit=Falseelif?event.type==pygame.KEYDOWN:
if?event.key==?or?event.key==:if?direct=='left'?or?direct=='right':
direct='up'elif?event.key==?or?event.key==:if?direct?==?'left'?or?direct?==?'right':
direct='down'elif?event.key==?or?event.key==:if?direct?==?'up'?or?direct?==?'down':
direct='left'elif?event.key==?or?event.key==:if?direct?==?'up'?or?direct?==?'down':
direct='right'#åä¸è¥¿eat=(head.row==food.row?and?head.col==food.col)#éæ°äº§çé£ç©if?eat:food?=?gen_food()
#å¤ç身å#1.æåæ¥ç头ï¼æå ¥å°snakesç头ä¸snakes.insert(0,?head.copy())#2.æsnakesçæåä¸ä¸ªå æif?not?eat:snakes.pop()
#移å¨if?direct=='left':head.col-=1
elif?direct=='right':head.col+=1
elif?direct=='up':head.row-=1
elif?direct=='down':head.row+=1
#æ£æµdead=False#1.æå¢if?head.col0?or?head.row0?or?head.col=COL?or?head.row=ROW:dead=True
#2.æèªå·±for?snake?in?snakes:if?head.col==snake.col?and?head.row==snake.row:
dead=Truebreakif?dead:print('æ»äº')
quit=False
#渲æââç»åºæ¥#èæ¯pygame.draw.rect(window,?bg_color,?(0,0,W,H))#è头for?snake?in?snakes:rect(snake,?snake_color)
rect(head,?head_color)rect(food,?food_color)#pygame.display.flip()#设置帧é¢ï¼é度ï¼clock.tick(8)#æ¶å°¾å·¥ä½
è¿æ¯ä¸ä¸ªç®æçè´ªåèç代ç ï¼è½ç¶ç»æç®åï¼ä½æ¯è¯¥æçåè½é½æ¯å®æ´çï¼å¯ç©æ§ä¹ä¸é
æ±pythonæ°æ®æ åå代ç ï¼ä½¿ç¨pythonæ ååæ°æ®ç代ç å¦ä¸ï¼
fromsklearnimportpreprocessing
importnumpyasnp
X=np.array([[1.,-1.,2.],[2.,0.,0.],[0.,1.,-1.]])
X_scaled=preprocessing.scale(X)
print(X_scaled)
pythonå£è¯æ 代ç ç®å```python#Pythonå£è¯æ 代ç foriinrange(1,6):forjinrange(1,i+1):print('*',end='')print('\n')```
æå±ï¼å¦ææ³æ¹åæ çå½¢ç¶ï¼å¯ä»¥å¨ä»£ç ä¸æ·»å æ´å¤çæ§å¶åæ°ï¼å¦å¨æ¯ä¸è¡ä¸æ·»å ä¸åçç©ºæ ¼æ°ï¼ä½¿å¾æ çå½¢ç¶ä¸ä¸æ ·ãåæ¶å¯ä»¥éè¿æ·»å HTMLæ ç¾ï¼ä½¿ç¨CSSæ ·å¼æ¥æ¹åå£è¯æ çé¢è²ãèæ¯åæåççã
个æç®python代ç ï¼æ¿èµ°å³ç¨
Helloï¼å¤§å®¶å¥½ï¼ææ¯ç¨åºæ±ªå°æ~
è½ç¶pythonæ¯ä¸ä¸ªæå ¥é¨çè¯è¨ï¼ä½æ¯å¾å¤äººä¾ç¶è¿æ¯ä¼é®å°åºæä¹æ ·å¦Pythonææå¿«ï¼çæ¡å½ç¶æ¯å®æåç§å°é¡¹ç®ï¼åªæèªå·±å»æ³ä¸åï¼æè®°å¾ä½è§åãæ¬æåçæ¯ä¸ªæç®ä»»å¡ï¼åå¦è å¯ä»¥å°è¯çèªå·±å®ç°ï¼æ¬æåæ ·ä¹æ¯æ®µä»£ç ï¼Pythonå¼åè ä¹å¯ä»¥ççæ¯ä¸æ¯æ没æ³å°çç¨æ³ã
以ä¸æ¹æ³å¯ä»¥æ£æ¥ç»å®å表æ¯ä¸æ¯åå¨éå¤å ç´ ï¼å®ä¼ä½¿ç¨set()å½æ°æ¥ç§»é¤ææéå¤å ç´ ã
ç»å®å ·ä½ç大å°ï¼å®ä¹ä¸ä¸ªå½æ°ä»¥æç §è¿ä¸ªå¤§å°åå²å表ã
è¿ä¸ªæ¹æ³å¯ä»¥å°å¸å°åçå¼å»æï¼ä¾å¦ï¼Falseï¼Noneï¼0ï¼ââï¼ï¼å®ä½¿ç¨filter()å½æ°ã
æ们常ç¨For循ç¯æ¥éåæ个å表ï¼åæ ·æ们ä¹è½æ举å表çç´¢å¼ä¸å¼ã
å¦ä¸ä»£ç 段å¯ä»¥å°æå 好çæ对å表解å¼æ两ç»ä¸åçå ç»ã
该æ¹æ³å°éè¿éå½çæ¹å¼å°å表çåµå¥å±å¼ä¸ºå个å表ã
该æ¹æ³å°è¿å第ä¸ä¸ªå表çå ç´ ï¼ä¸ä¸å¨ç¬¬äºä¸ªå表å ãå¦æåæ¶è¦åé¦ç¬¬äºä¸ªå表ç¬æçå ç´ ï¼è¿éè¦å ä¸å¥set_b.difference(set_a)ã
å¦ä¸ä»£ç åå¯ä»¥ç¨æ¥è®¡ç®æ§è¡ç¹å®ä»£ç æè±è´¹çæ¶é´ã
该ç®æ³ä¼æä¹±å表å ç´ ç顺åºï¼å®ä¸»è¦ä¼éè¿Fisher-Yatesç®æ³å¯¹æ°å表è¿è¡æåºï¼
ä¸éè¦é¢å¤çæä½å°±è½äº¤æ¢ä¸¤ä¸ªåéçå¼ã
以ä¸ï¼æ¯æç®åå举çå个pythonæç®ä»£ç ï¼æ¿èµ°å³ç¨ï¼å¸æå¯¹ä½ ææ帮å©ï¼
pythonæ°æ代ç æåªäºï¼pythonæ°æ代ç æå¦ä¸ï¼
defnot_emptyï¼sï¼ã
returnsandlenï¼sãstripï¼ï¼ï¼0ã
#returnsandsãstripï¼ï¼ã
#å¦æç´æ¥ååsãstripï¼ï¼é£ä¹så¦ææ¯Noneï¼ä¼æ¥éï¼å 为None没æstripæ¹æ³ã
#å¦æsæ¯Noneï¼é£ä¹Noneandä»»ä½å¼é½æ¯Falseï¼ç´æ¥è¿åfalseã
#å¦æséNoneï¼é£ä¹å¤å®sãtripï¼ï¼æ¯å¦ä¸ºç©ºã
ç¸å ³ç®ä»ã
Python解éå¨æäºæ©å±ï¼å¯ä»¥ä½¿ç¨CæC++ï¼æè å ¶ä»å¯ä»¥éè¿Cè°ç¨çè¯è¨ï¼æ©å±æ°çåè½åæ°æ®ç±»åãPythonä¹å¯ç¨äºå¯å®å¶å软件ä¸çæ©å±ç¨åºè¯è¨ãPython丰å¯çæ ååºï¼æä¾äºéç¨äºå个主è¦ç³»ç»å¹³å°çæºç ææºå¨ç ã
å¹´æï¼è¯è¨æµè¡ææ°çç¼è¯å¨Tiobeå°Pythonå å为æå欢è¿çç¼ç¨è¯è¨ï¼å¹´æ¥é¦æ¬¡å°å ¶ç½®äºJavaãCåJavaScriptä¹ä¸ã
è´¨æ°è¡¨ä»£ç ï¼è´¨æ°è¡¨ä»£ç æ¯æç¨ç¼ç¨è¯è¨çæä¸ç³»åè´¨æ°ç代ç ãè´¨æ°æ¯æåªè½è¢«èªèº«å1æ´é¤çèªç¶æ°ï¼å¦2ï¼3ï¼5ï¼7çã
ä¸åçç¼ç¨è¯è¨æä¸åçå®ç°æ¹æ³ï¼æå¯ä»¥ç»ä½ ä¸äºåèã以ä¸æ¯ä¸äºç½ä¸æç´¢å°çè´¨æ°è¡¨ä»£ç 示ä¾ï¼
Cè¯è¨ï¼
#includestdio.hintmain(){ ?inti,j;?printf("2\n");?for(i=3;i=;i+=2)//ä»3å¼å§éåå¥æ°
{ for(j=3;ji;j++)//å¤ææ¯å¦è½è¢«å°äºå®çå¥æ°æ´é¤{ ?if(i%j==0)//å¦æè½æ´é¤ï¼åè·³åºå¾ªç¯
break;
}if(j==i)//å¦æ循ç¯æ£å¸¸ç»æï¼å说ææ¯è´¨æ°ï¼æå°åºæ¥
printf("%d\n",i);}?return0;}
Pythonï¼
#!/usr/bin/python#-*-coding:UTF-8-*-
#è¾åºæå®èå´å çç´ æ°
#ç¨æ·è¾å ¥æ°æ®lower=int(input("è¾å ¥åºé´æå°å¼:"))
upper=int(input("è¾å ¥åºé´æ大å¼:"))
fornuminrange(lower,upper+1):?#ç´ æ°å¤§äº1
ifnum1:foriinrange(2,num):?if(num%i)==0:breakelse:?print(num)
ts是什么格式的文件?
TS文件是一种TypeScript源代码文件。 详细解释如下: TS文件是TypeScript语言编写的源代码文件。TypeScript是一种由微软开发的开源编程语言,它是JavaScript的一个超集,意味着它添加了静态类型系统和一些额外的功能来增强JavaScript的功能。 TypeScript的特点: 1. 静态类型系统:TypeScript提供了静态类型系统,允许开发者在编译时检查类型错误,从而提高代码的可维护性和可读性。 2. 类与接口:相比JavaScript,TypeScript引入了类和接口的概念,这使得大型项目的代码组织更为方便。 3. 模块化:TypeScript支持模块化开发,有助于实现代码的重用和避免命名冲突。 4. 扩展性:由于TypeScript是JavaScript的超集,所以现有的JavaScript代码可以很容易地转换为TypeScript。同时,开发者还可以使用TypeScript来开发复杂的桌面和移动应用。 TS文件的应用场景: 在实际项目中,TS文件常常被用于开发大型应用或需要更高可靠性和可读性的项目。随着TypeScript的普及,越来越多的开发者开始使用它来提高开发效率和代码质量。通过静态类型系统和其他高级功能,TypeScript能够极大地简化复杂的编程任务,使得代码更易于理解和维护。同时,许多现代前端框架和库都支持TypeScript,进一步推动了其在前端开发中的广泛应用。 总的来说,TS文件是包含TypeScript代码的源文件,通过它,开发者可以编写出更为安全、可维护和可扩展的代码。