如果您喜欢这些文章,欢迎点击此处订阅本Blog
在项目中有一个需求,每个物品有一个guid,存在数据库中,而在页面上需要显示一个对应的业务数据值,暂且叫做serverId,serverId是通过guid移位计算得来。serverId只需要显示,后台并不需要使用。因为serverId在后台用不到,所以就没有使用VO字段来存储,项目使用了Freemarker作为view层的模板引擎。了解到Freemarker的一个特点是具有很多内置的功能强大的方法,例如substring、upper_case等。最重要的是
系统 2019-08-29 22:09:49 2082
3DMax,Maya很强大,但他们也很昂贵,但这个世界上总有开源或免费软件可以替代。Blender就是其中之一。Blender是一套三维绘图及绚染软件。它具有跨平台的特性,支持FreeBSD,IRIX,GNU/Linux,MicrosoftWindows,MacOSX,Solaris,及SkyOS。除了免费,吸引我的还有他使用python作为脚本。他的劣势是使用的人少,特别是在中国,习惯于使用盗版软件造就了大批max用户,很多3D美术只使用3dmax或ma
系统 2019-08-29 22:04:57 2082
1.C语言数据类型1.1C语言有32个关键字(1)数据类型关键字(12个):char、double、enum、float、int、long、short、signed、struct、union、unsigned、void;(2)控制语句关键字(12个):break、case、continue、default、do、else、for、goto、if、return、switch、while;(3)存储类型关键字(4个):auto、extern、register、
系统 2019-08-29 21:59:25 2082
系统重构到这一步,我们来看看用户关于时间问候语部分的变更需求:问候需要更加精细,如中午问候“Goodnoon!”、傍晚问候“Goodevening!”、午夜问候“Goodmidnight!”。除此之外,用户希望在一些特殊的节日,如新年问候“Happynewyear!”、情人节问候“Happyvalentine’sday!”、三八妇女节问候“Happywomen’sday!”,等等。此时我们发现,我们对时间问候语的变更不再需要修改HelloWorld或其它什
系统 2019-08-29 21:59:09 2082
敏捷软件开发宣言个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划敏捷设计原则:单一职责原则(TheSingleResponsibilityPrinciple,简称SRP);开发-封装原则(TheOpen-ClosePrinciple,简称OCP);Liskov替换原则(TheLiskovSubstitutionPrinciple,简称LSP);依赖倒置原则(theDependencyInversionPrin
系统 2019-08-12 09:30:07 2082
图像渐变我们大体想一下思路无非是这样:将图像所有的像素点的RBG,每个点就减去相同的量,而且这个量是个渐变的量。是的,就是这样,我们的程序也是这个思路,不过就是没有单纯的“想”这么简单了。我这里只编写了纵向渐变,还没有写其他复杂的渐变,以后慢慢研究吧。先看效果:原始图片:图像变暗渐变:图像变暗渐变:图像变亮渐变:图像变亮渐变:我们以图像渐变暗举例,渐变亮同样的道理,无非是一个减,一个加。1.我们要先拿到图片,这个不赘述了,就是获得图像的BufferedIm
系统 2019-08-12 09:29:50 2082
(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期2014-02-26)正常的效果:出问题的效果:问题所在:单纯看代码,找不到问题,js脚本正常,css代码也正常,后来才发现,是这些空格导致的。可能是不同的编译器环境导致的,如果没有遇到过这种情况的话,很难快速找到问题所在莫名其妙多出好多空格
系统 2019-08-12 01:33:47 2082
最近学完React的最基本概念,闲下来的时候就自己写了一个Todo-List的小应用。这里做个简略的说明,给想好好学React的新手看。React-Todo学习前提这里我用了webpackb做了babel和JSX预处理和模块打包。所以对React和一些ES2015(ES6)的语法要有一定的了解。我相信学习ES2015绝对是划算的,因为它是Js的规范。这里给出学习的地方,阮一峰老师的ECMAScript6入门或者babel的相关文档LearnES2015。功
系统 2019-08-12 01:33:40 2082
在前一章查看tomcat启动文件都干点啥---Bootstrap.java中我们得出结论,在Bootstrap中通过反射调用Catalina类中的getServer,start,stop,stopServer等方法,下面看一下Catalina类中给外部提供的公共方法:Start:其中Catalina类的入口当然是start方法.start方法实现了启动一个新的server事例的功能,看一下start方法的内容:1publicvoidstart(){23if
系统 2019-08-12 01:33:02 2082
用法本脚本用于批量扫描端口1.在同目录下创建输入文件,属性inputFile为输入文件名2.属性th为线程数3.属性port为探测的目标端口4.属性arg为默认的命令不推荐扫描全端口,速度非常慢.脚本中有常见端口,可直接使用默认命令下端口对应服务可能存在不准确的情况,可加-sV对版本进行详细探测,或对本脚本的输出使用此脚本进行专门的探测代码#依赖python-nmap,openpyxl包importnmapimportopenpyxlimportIPyfr
系统 2019-09-27 17:57:13 2081
1.Python的参数传递Python的参数传递,无法控制引用传递还是值传递。对于不可变对象(数字、字符、元组等)的参数,更类似值传递;对于可变对象(列表、字典等),更类似引用传递。deffun1(n):print(n)#n在没修改前,指向的地址和main函数中n指向的地址相同n=20#n在修改后,指向的地址发生改变,相当于新建了一个值为20的参数ndeffun2(l):print(l)#l在没修改前,指向的地址和main函数中l指向的地址相同l=[5,6
系统 2019-09-27 17:56:52 2081
set是一组数,无序,内容不能重复,通过调用set()方法创建,那么如何对set集合进行遍历呢?1.简单的set:s1=set(['111','222','333'])对于s1,是一组数,有几种方法可以遍历:function1:直接用in的方式遍历set集合。function2:用iter()迭代器来遍历集合看到前两种方法可能有人就有疑问了,为啥和上面写入s1时候的顺序不一样,别急,往下看。function3:这种方法只能输出index,并不能输出valu
系统 2019-09-27 17:54:33 2081
许多时候,我们使用Python,并不用写一个程序,一些不复杂的任务,我更喜欢在IDLE(也就是交互式提示模式)下输入几行代码完成。然而,在这个模式下编辑代码,也有不够便利的地方,最主要的就是,不能用Tab自动补全,不能记忆上一次输入的命令(没办法,谁让我们在Shell下习惯了呢)。这时候,我们可以直接使用Python启动脚本,解决这个问题。启动脚本的程序非常简单,这里不多说明,只给出代码:importreadlineimportrlcompleterimp
系统 2019-09-27 17:53:35 2081
本文实例为大家分享了python统计文本中单词出现频率的具体代码,供大家参考,具体内容如下#coding=utf-8importosfromcollectionsimportCountersumsdata=[]forfnameinos.listdir(os.getcwd()):ifos.path.isfile(fname)andfname.endswith('.txt'):withopen(fname,'r')asfp:data=fp.readlines(
系统 2019-09-27 17:53:23 2081