编程技术 - 军军小站|张军博客
编程技术

数据结构之——Trie树

Trie树,又称单词查找树,典型用于统计和排序大量字符串,查询效率比哈希表高。(空间复杂度高)它有3个基本特性:1)根节点不包含字符,除根节点外每一个节点都只包含一个字符。2)从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。3)每个节点的所有子节点包含的字符都不相同。Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。Trie树的结构体:structTrie_Node{intid;//数据域Tr

系统 2019-08-29 22:38:04 2240

编程技术

velocity文档

http://velocity.apache.org/tools/releases/1.3/generic/http://velocity.apache.org/tools/devel/view/layoutservlet.htmlhttp://hi.baidu.com/shirdrn/blog/item/d5ddf4098944b1aa2eddd4ce.html[/img]velocity文档

系统 2019-08-29 22:24:27 2240

编程技术

红包概率抽取算法精确到指定范围内

红包概率抽取算法精确到指定范围内,现在的算法是通过random随机数判断属于哪个范围内进行抽奖计算,统计5K条结果显示0.2-0.5(40%)中奖概率比1-2(10%)中奖概率高!查找原因如下:算法里是在基数的基础上向上浮动100(分),落在0.2-0.5范围内的中奖金额浮动1元后落在了1-2范围内导致0.2-0.5(40%)中奖概率比1-2(10%)中奖概率高!修改方案如下:生成1W个随机数,并将1W按比例划分,随机数落在哪个端就使用哪个段里的范围,再在

系统 2019-08-29 22:09:39 2240

编程技术

建造者(Builder)模式

有些情况下,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用。比如,一个电子邮件有发件人地址、收件人地址、主题、内容、附录等部分,而在最起码的收件人地址未被赋值之前,这个电子邮件不能发出。有些情况下,一个对象的一些性质必须按照某个顺序赋值才有意义。在某个性质没有赋值之前,另一个性质则无法赋值。这些情况使得性质本身的建造涉及到复杂的商业逻辑。这时候,此对象相当于一个有待建造的产品,而对象的这些性质相当于产品的零件,建造产品的

系统 2019-08-12 09:29:47 2240

编程技术

设计原则(一 策略模式)

一、找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。把会变化的部分取出并封装起来,二、针对接口编程,而不是针对实现编程。三多有组合,少用继承。策略模式:定义了算法簇,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。设计原则(一策略模式)

系统 2019-08-12 01:33:11 2240

编程技术

利用GetInvalidFileNameChars()得到有效的文

有时候需要利用从数据库中检索出来的字符串来生成一个文件名,如果这个字符串包容了不允许的字符(\、?、<、>等),还需要把这些字符逐个替换掉。最近刚刚一个很实用的函数,就是Path.GetInvalidFileNameChars(),有了它,可以很方便的生成一个有效的文件名称,代码如下:publicstaticstringGetValidName(stringfileName){foreach(charcinSystem.IO.Path.GetInvalid

系统 2019-08-12 01:32:18 2240

Python

Python数据分析之时间序列

1.时间序列类型时间戳(timestramp)即特定的时刻固定时期(period)如2018年1月或2018年1月1日时间间隔(interval)由起始和结束时间戳表示2.Python处理模块Python标准库包含用于日期和时间数据的数据类型,主要用到datetime、time、calendar模块。datetime模块常使用datetime和timedelta两种实例方法datetime:以毫秒形式存储日期和时间timedelta:表示两个datetim

系统 2019-09-27 17:54:48 2239

Python

笨办法学Python-----习题15_读取文件

上集回顾懒散的周末度假回来要打起精神了。上一节学习了使用argv模块添加参数,并分析了和input用户输入的不同。注意输入提示符的使用更加人性化。读取文件输入和运行结果没有问题,今天学习的信息量可就大啦,读取文件!!注意以下几点:open()函数,实际上就是把一个名字在括号里的文件存到一个变量里。read()函数,每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。避免把文件写死,用argv来获取文件名字巩固练习1、每一行加注释:2、删除10~15

系统 2019-09-27 17:45:33 2239

Java

Java中的Collection Framework(上)

理解什么是数组不是要说CollectionFramework么,怎么又提到数组了。这就要看一下Framework这个单词了,我们常听人说到一些OpenSourceFramework像Struts、Hibernate、Spring等等。从根本上说这些Framework的作用就是为了提高开发效率,如果抛开效率不考虑完全可以不使用这些Framework,Java中的CollectionFramework也是一样,只不过它在更底层,被放在了Java类库中,其底层实

系统 2019-08-29 23:45:27 2239

编程技术

JasperReport学习笔记1-了解JasperReport

JasperReports是一个开源的java报表制作引擎,他的网页是http://jasperforge.org/projects/jasperreports一,先下载JasperReport的包二,进入官方面的JasperReportsRequirements说明了JasperReports所必须的类库Commons,JRXML,JDBC,PDF,XLS,Chart(http://jasperforge.org/website/jasperreport

系统 2019-08-29 22:57:15 2239

编程技术

查询每门课分数最高的学生

三个表:score:course:stu:查询每科成绩最高的学生:select*from(selectst.sname,sc.grade,c.cnamefromscorescleftjoinstustonsc.sno=st.snoleftjoincourseconc.cno=sc.cnoorderbysc.gradedesc)fgroupbyf.cname思路:首先三表连接查询,降序,再以科目分组,即可查得每门中的最高分,及所属学生。查询每门课分数最高的学

系统 2019-08-29 22:48:44 2239

Java

JasperReport+iReport进行java报表开发

一相关基础知识1.关于JasperReport和iReportJasperreport是一个报表制作程序,用户需要按照它制定的规则编写一个XML文件,然后得到用户需要输出的格式文件。它支持输出的文件格式包括PDF,HTML,XML,XLS,CVS等等.而iReport就是一个可以帮助我们制作Jasperreport的XML文件的可视化开发工具。他的作用和dreamware的作用是类似的.2、下载ireport和jasperreportjasperrepor

系统 2019-08-29 22:45:24 2239

编程技术

FreeSwitch Sip

在继续学习FreeSWITCH之前我们有必要来学习一下SIP协议,因为它是FreeSWITCH的核心。但即使如此,讲清楚SIP必然需要很大篇幅,本书是关于FreeSWITCH的,而重点不是SIP。因此,我将仅就理解FreeSWITCH必需的一些概念加以通俗的解释,更严肃一些的请参阅其它资料或RFC(RequestForComments)。SIP的概念和相关元素会话初始协议(SessionInitiationProtocol)是一个控制发起、修改和终结交互式

系统 2019-08-29 22:42:20 2239

编程技术

spring 3.0 应用springmvc 构造RESTful URL 详

spring3.0应用springmvc构造RESTfulURL详细讲解Spring应用服务器RESTServletCSS在线springmvc_restdemo由于下一版本的rapid-framwork需要集成springRESTfulURL,所以研究了一下怎么搭建.并碰到了一下问题。springmvc3.0中增加RESTfulURL功能,构造出类似javaeye现在的URL。rest介绍,这里还有struts2rest构造的一篇文章:使用Struts2

系统 2019-08-29 22:38:25 2239

Android

Android开发之又见Hello World!

量变产生质变,如果你从第一篇一直看到了这篇,可以说这就是你的质变点之一。回顾及展望经过数篇对Android应用程序的原理的讲述,现在我们大概回顾一下。首先我们利用HelloWorld程序介绍了一个Android应用程序的目录结构,包括src文件夹、gen文件夹、Androidx文件夹、assets文件夹、AndroidMainifest.xml、default.properties;接下来我们又站在架构的高度分析了一下Android系统的主要组成部分,包括

系统 2019-08-29 22:32:07 2239