自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李秀才的博客

苟日新,日日新,又日新

  • 博客(91)
  • 资源 (46)
  • 问答 (2)
  • 收藏
  • 关注

原创 java后台封装echarts

前些日子用到了Echarts,觉得比之前用的funshioncharts好用太多!可是拼装数据到前台显示的时候,有点费时费力,于是对Echarts在后台做了封装。具体做法了抽象出众图类、零件之上用零件组装成组件(坐标轴、标题、提示、图例、值域漫游、工具箱、数据项之类),组件之上抽象出图类(柱状图、折线图、饼图、仪表盘、地图、漏斗图之类),然后根据这些图类在图形工厂里灵活组装代码生成整个option

2016-01-30 19:43:24 17997 12

原创 两个线程交替执行的几种方式

有个常见的面试题是这样,有2个字符串,一个字符串是1234567,另一个字符串是ABCDEFG,然后需要按1A2B3C4D5E6F7G或者A1B2C3D45E6F7G这种输出,就需要用到多线程交替执行来实现。本文列举了5种实现方式。

2023-05-24 12:49:16 1936

原创 设计模式专栏——观察者模式(Observer)

观察者模式(Observer Pattern),又称为发布订阅模式(Publish/subscribe),当观察对象的状态发生变化时,会通知给观察者。这种类型的设计模式属于行为型设计模式。它的核心结构有四个角色:观察对象(Subject)、具体观察对象(ConcreteSubject)、观察者(Observer)、具体的观察者(ConcreteObserver)(1)Subject角色:表示观察对象,里面订阅了订阅、取消订阅、通知观察者的方法,并且维护了观察者的实例。(2)ConcreteSub

2022-01-16 23:04:54 463

原创 设计模式专栏——状态模式(State)

状态模式(State Pattern),当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。这种类型的设计模式属于行为型设计模式。它的核心结构有三个角色:状态(State)、具体状态(ConcreteState)、上下文(Context)(1)State角色:抽象状态,定义了根据不同状态进行不同处理的接口,和Context提供的接口对应。(2)ConcreteState角色:表示各个具体的状态,它实现了State接口,State中定义的一个接口,对应这里的一个具体的类。

2022-01-16 16:33:55 817

原创 设计模式专栏——模板方法模式(Template Method)

模板方法模式(Template Method) ,在父类抽象类中定义处理流程的框架,在子类中实现具体的处理,父类中会调用子类中实现的方法。这种类型的设计模式属于行为型设计模式。它的核心结构有两个角色:抽象类角色(AbstractClass)、具体类角色(ConcreteClass)。(1)AbstractClass角色:不仅负责实现模板方法,还声明在模板方法中所使用到的抽象方法。(2)ConcreteClass角色:实现了AbstractClass中定义的抽象方法,实现的方法将会在Abstrac

2022-01-13 21:05:13 408

原创 设计模式专栏——代理模式(Proxy)

代理模式(Proxy Pattern)为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。它的核心结构有三个角色:抽象主体角色(Subject)、真实主体角色(RealSubject)、代理角色(Proxy)。(1)Subject角色:定义了RealSubject和Proxy角色中共同的接口。(2)RealSubject角色:实现了Subject中定义的接口。(3)Proxy角色:除

2022-01-09 17:36:26 274

原创 设计模式专栏——外观模式(Facade)

概述外观模式(Facade Pattern),又称为门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。这种类型的设计模式属于结构型设计模式。类图示例库存服务public class StockService { static AtomicInteger atomicInteger = new AtomicInteger(); /** * 初始化库存数量 */

2022-01-06 08:30:00 495

原创 设计模式专栏——享元模式(FlyWeight)

享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型设计模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。它的核心结构有四个角色:抽象享元角色(AbstractFlyWeight)、具体享元角色(ConcreteFlyWeight)、享元工厂(FlyWeightFactory)、客户端(Client)。(1) 抽象享元角色:为具体享元角色规定了必须实现的方法,在Java中可以是抽象类,可以是接口。(2) 具体享元角

2022-01-04 22:03:56 1011

原创 设计模式专栏——装饰器模式

概述装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。它的核心结构有四个角色:抽象构件(Component)、具体构件(ConcreteComponent)、抽象装饰器(Decorator)、具体装饰器(ConcreteDecorator)我们通过下面的实例来演示装饰器模式的用法。我们以手抓饼

2021-12-27 08:15:00 383

原创 设计模式专栏——组合模式

概述组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。...

2021-12-24 23:50:27 331

原创 设计模式专栏——桥接模式

桥接模式(Bridge Pattern)属于结构型设计模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。将抽象部分与它的实现部分分离,使它们都可以独立地变化。它的核心结构有四个角色:抽象化角色(Abstraction)、扩展抽象化角色(RefinedAbstraction)、实现化角色(Implementor)、具体实现化角色(Concretelmplementor)。举个生活中的例子,汽车有多种类型,SUV、轿车、轿跑等等,这个类型可以不断扩充,然后汽车是由具体的

2021-12-15 00:10:21 434

原创 设计模式专栏——适配器模式

适配器模式(Adapter Pattern)属于结构型设计模式,也被成为Wrapper模式。将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。适配器模式有以下两种。类适配器模式(使用继承的适配器)对象适配器模式(使用委托的适配器)本节将以此展开这两种的介绍。

2021-12-13 23:16:19 618

原创 JVM堆内存溢出排查

是否有小伙伴在碰到了OOM的时候,抓耳挠腮,不知如何下手,通过这篇保姆级的教程,可以教会你快速定位堆内存溢出的bug,本篇讲述的主题是生成dump文件以及通过Visual VM分析dump文件

2021-12-05 23:08:51 2386

原创 Spring Data JPA批量处理性能优化

我们使用JPA的saveAll的时候,会发现这个方法特别慢,我在本地做的测试是插入10万条数据的时候,耗时51503ms,和JDBC方式的批量处理对比后就会发现,性能差了百倍,所以我们要优化下我们的代码。一:修改setId的策略 我们观察就会发现,在saveAll传入的对象里面,设置了id的情况下,JPA会根据id去执行一条select语句,数据量越多,和数据库交互次数越多,这个操作会极大的拖慢性能,那我们首要解决的,就是不让JPA去执行select。解决办法有两个,麻烦一点的是这样的,实

2021-11-23 08:00:00 5761

原创 设计模式专栏——原型模式

概述 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。它的核心结构有两个角色:原型抽象类(Prototype)、具体的原型(Concre...

2021-11-18 08:15:00 679

原创 设计模式专栏——建造者模式

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。它的核心结构有三个角色:建造者(Builder)、具体的建造者(ConcreteBuilder)、Director(监工)。

2021-11-16 08:00:00 334

原创 设计模式专栏——抽象工厂模式

抽象工厂模式(Abstract Factory),属于创建型设计模式,用于产品族的构建。抽象工厂是指当有多个抽象角色时使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象。它的核心结构有四个角色:抽象产品(AbstractProduct)、具体产品(ConcreteProduct)、抽象工厂(AbstractFactory)、具体工厂(ConcreteFactory)。

2021-11-14 23:01:44 522

原创 设计模式专栏——工厂方法模式

工厂方法模式(Pactory Method),属于创建型设计模式,在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做遵循了开闭原则,当需求变化,新增了产品时,我们不需要去修改原来的代码,只需要新增一个工厂子类就好了。它的核心结构有四个角色:抽象产品、具体产品、抽象工厂、具体工厂。

2021-11-14 00:29:13 362

原创 设计模式专栏——单例模式

单例模式(Singleton),属于创建型设计模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式,大致可分为五类:饿汉模式、懒汉模式、双重检查锁、静态内部类、枚举。

2021-10-27 23:38:39 186

原创 使用数据库实现分布式锁

使用数据库实现分布式锁需要建一张lock表,表中设置一个unique索引,获取锁时,尝试给表中insert记录,若失败,则说明锁被别的线程抢占了,还未释放。当处理完业务,释放锁,删除表中的那条记录即可。step1:建表CREATE TABLE `my_lock` ( `id` varchar(32) NOT NULL, `resource` varchar(45) NOT NULL, `createTime` bigint(13) DEFAULT NULL, PR...

2021-10-10 23:41:47 5515 2

原创 设计模式之——策略模式

在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法我们以邮件的发送来解释怎么使用策略模式来替换掉冗余的代码策略接口MailStrategyService.javapublic interface MailStrategyService { /** * * 策略名称 * @return */ public String getStrategyNam

2021-05-09 23:44:30 217 1

原创 EasyExcel导入Excel和导出Excel教程

EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 它底层是基于POI做的封装和优化,避免了POI耗费内存,内存溢出的问题。笔者之前做导出、导入Excel也是使用POI,后来在生产上总是出现内存溢出的问题,在寻求解决方案的路途中,就找到了EasyExcel。1.集成ExasyExcel <dependency> <groupId>com.alibaba</groupI

2021-02-01 23:53:20 3230 2

原创 windows下配置nginx反向代理tomcat

Nginx下载官方地址:http://nginx.org/en/download.html 下载之后解压后的目录结构是这样的 常用的命令: nginx -v 查看nginx版本 start nginx启动nginx命令 nginx -s reload 修改了配置文件后重新reload nginx -s stop 立刻停止 nginx -s quit 优雅地停止 启动成功后,打开...

2021-01-31 00:18:35 7803 1

原创 Redis主从复制原理及配置

为了实现高可用,我们通常需要将Redis部署多份,部署在不同的服务器上,然后通过数据同步,来实现多副本之间数据的一致,Redis自身提供了主从复制机制来实现数据同步,从而使得我们可以在此基础上,能实现快速的故障恢复,达到生产中高可用的要求。主从复制的用途:1 数据冗余:主从复制实现了数据的热备份;2 故障恢复:当主节点出现问题,可以由从节点提供服务,实现快速的故障恢复;3 负载均衡:在主从复制的基础上,配合读写分离,由从库分担读的压力,主库只有写的压力,从而实现负载均衡,提高redis服务.

2021-01-20 00:07:01 162 1

原创 ElasticSearch7.8.0集群搭建

1.下载在elastic下载中心找到我们要安装的版本,地址:https://elasticsearch.cn/download/2.安装下载完后解压到安装目录,然后复制2份3.节点配置在config目录下,修改每个节点的elasticsearch.ymlnode-1节点配置#集群名称,节点之间要保持一致cluster.name: es-cluster#节点名称,集群内要唯一node.name: node-1node.master: truenode.data: .

2020-12-28 00:32:53 1250

原创 ELK环境搭建ElasticSearch7.8.0+Logstash7.8.0+Kibana7.8.0

ELK 就是 Elasticsearch、Logstash 和 Kibana 三个软件的首字母简写,ELK可以理解为集日志(数据)收集、分析、展示的一个系统。我这边用的ELK版本是:elasticsearch-7.8.0、kibana-7.8.0-windows-x86、logstash-7.8.0,三个版本要一致才行。我们在elastic中文社区的下载中心可以下载到各个版本的我们需要用到的安装包,下载中心地址:https://elasticsearch.cn/download/一:Elastics

2020-12-27 00:47:11 777

原创 SpringBoot接入支付宝支付

引入pom依赖 <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.10.97.ALL</version> </dependency>注入AliPayBean

2020-12-02 00:36:01 6395 11

原创 SpringBoot自定义注解实现Token校验

1.定义Token的注解,需要Token校验的接口,方法上加上此注解import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@R...

2020-04-09 21:35:25 4665

原创 java服务端接入微信支付

App里做微信支付的前提是有在微信开放平台注册账号,然后在微信商户平台成为商家,并且在开放平台里绑定商户id一:设置密钥在账户中心-API安全-API密钥 里设置下API密钥。二:写配置文件配置文件WeixinPayConfig.javapublic class WeixinPayConfig { /** * 微信开放平台分配的应用ID * */ p...

2019-07-29 15:35:47 2060 2

原创 java服务端集成支付宝

在蚂蚁金服开放平台注册了账号并签约支付等需要用到的权限之后,开始集成。一:设置密钥在账户中心-密钥管理-开放平台密钥里设置下应用公钥,支付宝会根据我们设置的应用公钥,生成支付宝公钥。可以使用支付宝提供的:RSA签名验签工具 去生成一对公钥和私钥工具下载页面,提供了windows版本和mac版本https://docs.open.alipay.com/291/105971/二:集...

2019-07-29 14:59:07 630

原创 短信验证码常见漏洞总结

使用短信验证码验证身份已经是很普遍的了,注册和忘记密码时最为常见。但是在实际应用中,很多产品的短信验证接口存在诸多漏洞,很多人在开发中也是没有注意到这些问题,因此呢给企业和个人造成不必要的损失。接下来我将常见的漏洞总结如下:一:短信轰炸漏洞发送短信接口是最容易被盗刷的接口,不法分子利用接口的漏洞,任意的发送短信,给企业造成直接的经济损失。因此这个要特别注意,主要防御手段有四:(一)同一...

2019-03-04 16:47:48 11894

原创 SpringMVC集成Rocketmq

软件环境: windows7 Rocketmq 4.2 (上):安装配置RocketMq 一:配置环境变量 NAMESRV_ADDR=127.0.0.1:9876和rocketMQ的安装目录ROCKETMQ_HOME= D:\rocketmq-4.2.0 二:启动nameserver 在bin目录下,使用mqnamesrv.cmd 启动成功输出:The Name Server b...

2018-08-06 15:48:08 6566 4

原创 Java实现二维码扫码授权登陆

Java实现二维码扫码授权登陆

2018-05-11 17:20:44 11791 3

原创 Windows下配置mongodb

(一)配置:安装成功后进入安装目录,在和bin同级创建出2个文件夹data(数据存储目录)和log(日志写入目录)在log目录下创建一个mongo.log的文件,在和bin同级的目录下创建一个mongo.conf的文件#数据库路径 注意此路径一定要改成你安装data文件夹的路径dbpath=D:\Program Files\MongoDB\Server\3.4\data #日志输

2018-04-24 14:51:06 996

原创 springMVC集成redis

Redis现在已经是开发中的标配了,我们在使用SpringMVC的时候可以通过集成Jedis来很方便地操作Redis,Jedis实现了一个redis连接池,以及实现了很多Java操作redis的方法。集成Jedis第一步要引入依赖: &lt;dependency&gt; &lt;groupId&gt;redis.clients&lt;/groupId&gt; ...

2018-04-01 00:59:18 6224 7

原创 微信JSSDK自定义分享详解--微信公众平台开发(六)

要想自定义分享的link、title、desc、imgUrl(分享卡片缩略图)就得集成JSSDK做自定义分享。准备阶段第一步要先配置安全域名:开发阶段可以将测试服和正式服的域名都配进去。没配置的话点击设置---公众号设置---功能设置进入设置界面:注意:域名前面不用加协议名称,还有域名服务器根目录下要上传公众号提供的文件(配置的每个域名服务器都要上传哦):MP_verify_qoTb3e9VQBl...

2018-03-26 16:34:30 12670 5

原创 利用Redis实现高并发计数器

业务需求中经常有需要用到计数器的场景:譬如一个手机号一天限制发送5条短信、一个接口一分钟限制多少请求、一个接口一天限制调用多少次等等。使用Redis的Incr自增命令可以轻松实现以上需求。以一个接口一天限制调用次数为例: /** * 是否拒绝服务 * @return */ private boolean denialOfService(String userId){ long c...

2018-03-02 22:58:57 47378 13

原创 Java获取网络图片上传到OSS

OSS不支持通过一个网络地址来上传图片,所以若想将网络上的图片上传到OSS上需要走点弯路。1:通过链接将图片下载到本地的一个文件夹下面2:用OSS上传该文件夹下的文件3:上传完成后删除本地的文件具体代码如下: //获取当前项目的绝对路径 public static String getTomcatPath(){ String nowpath; ...

2018-01-24 16:48:02 5950

原创 app开放接口签名设计与实现

只要接口暴露在外网,就避免不了安全问题。如果让接口裸奔,其他人只要知道接口地址和参数就可以调用,那简直就是灾难。试想有一个发送注册验证码的接口,如果仅仅知道接口地址和参数(手机号)就可以调用,那短信接口早被人盗刷不知道多少了。理想情况下,我们只希望我们的接口被我们自己的客户端去调用,那么问题来了,我们如何验证调用者身份呢,如何防止参数被篡改呢?如何防止别人盗刷我们的接口来攻击我们呢?常见的做法就是给接口加签名。原理是:每次请求的时候根据请求的参数加上时间戳,根据约定好的规则和秘钥生成一个签名

2017-10-21 23:55:53 5869 3

原创 java爬虫入门--用jsoup爬取汽车之家的新闻

public static boolean isContainChinese(String str) { Pattern p = Pattern.compile("[\u4e00-\u9fa5]"); Matcher m = p.matcher(str); if (m.find()) { return true

2017-10-15 22:32:47 852

mycat读写分离教程

基于Mycat的读写分离教程。一步一步带你实现主从复制读写分离。

2016-10-28

springMVC集成activiti所需的jar包

springMVC集成activiti所需的jar包,activiti版本5.21.0.

2016-08-31

angularJS1.4.6版本

angularJS的类库。

2016-08-31

dom4j1.6.jar

dom4j需要的jar包,解析xml,你会用得到的。

2016-08-12

springMVC集成junit4需要的jar包

springMVC集成junit4需要的jar包 junit-4.10.jar和spring-test-4.2.0.RELEASE.jar

2016-07-08

log4j所需的jar包

log4j所需的jar包commons-logging.jar和log4j-1.2.17.jar 日志你会用得到的。

2016-07-06

springMVC入门教程,集成了缓存、安全框架

springMVC做的小项目,springMVC+spring+hibernate+ehcache+shiro jar包全,代码也全,结构清晰明了,非常适合springMVC初学者、ehcache初学者、shiro初学者。shiro除了做认证以及授权外,还做了并发登录控制,多个人登录同一个账号,踢出前者。

2016-06-21

springMVC集成Ehcache所需的jar包

包括ehcache-core-2.4.3.jar、ehcache-web-2.0.4.jar、guava-15.0.jar、slf4j-api-1.7.12.jar、commons-logging.jar springMVC集成Ehcache你会用得到。

2016-06-15

activiti-designer-5.15.0

activiti-designer-5.15.0 eclipse插件包

2016-06-14

eclipse安装Activiti designer所需的jar包

eclipse若安装Activiti designer插件失败,且将此三个jar放到eclipse安装目录features文件夹下,再重新安装。别问我问什么,我第一次也安装不上去,呵呵。

2016-06-14

SpringMVC+hibernate+spring+shiro+Ehcache所需jar包

SpringMVC+Spring4.2+hibernate4.3+shiro1.2.4+ehcache2.0所需jar包,非常有用,你可能会需要。

2016-06-13

shiro all 1.2.4

Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。 Apache Shiro 的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要这样。框架应 该尽可能掩盖复杂的地方,露出一个干净而直观的 API,来简化开发人员在使他们的应用程序安全上的努力。 以下是你可以用 Apache Shiro 所做的事情:  验证用户来核实他们的身份  对用户执行访问控制,如:  判断用户是否被分配了一个确定的安全角色  判断用户是否被允许做某事  在任何环境下使用 Session API,即使没有 Web 或 EJB 容器。  在身份验证,访问控制期间或在会话的生命周期,对事件作出反应。  聚集一个或多个用户安全数据的数据源,并作为一个单一的复合用户“视图”。  启用单点登录(SSO)功能。  为没有关联到登录的用户启用"Remember Me"服务 … 以及更多——全部集成到紧密结合的易于使用的 API 中。 Shiro 视图在所有应用程序环境下实现这些目标——从最简单的命令行应用程序到最大的企业应用,不强制依赖其 他第三方框架,容器,或应用服务器。当然,该项目的目标是尽可能地融入到这些环境,但它能够在任何环境下立 即可用。

2016-06-03

shiro-all.jar

Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。Apache Shiro 的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要这样。框架应 该尽可能掩盖复杂的地方,露出一个干净而直观的 API,来简化开发人员在使他们的应用程序安全上的努力

2016-06-03

springMVC做的小项目,可作为springMVC入门教材

框架基于SpringMVC+spring4.2+hibernate4.3,数据库为mysql. 基于全注解,开发过程零配置。

2016-05-11

springmvc框架所需的jar包下载

springMVC框架所需的jar包下载地址 hibernate4.3+spring4.2

2016-03-25

SQLite的js移植版本

SQLite的js移植版本

2016-03-24

jquery仿淘宝的评价插件

jquery仿淘宝的评价插件 function loading(starId){ var oStar = document.getElementById(starId); var aLi = oStar.getElementsByTagName("li"); var oUl = oStar.getElementsByTagName("ul")[0]; var oSpan = oStar.getElementsByTagName("span")[1]; var oP = oStar.getElementsByTagName("p")[0]; var i = iScore = iStar = 0; var aMsg =new Array(); aMsg[0]="(很不满意)"; aMsg[1]="(不满意)"; aMsg[2]="(一般)"; aMsg[3]="(满意)"; aMsg[4]="(非常满意)"; for (i = 1; i <= aLi.length; i++){ aLi[i - 1].index = i; //鼠标移过显示分数 aLi[i - 1].onmouseover = function (){ fnPoint(this.index); //浮动层显示 oP.style.display = "block"; //计算浮动层位置 oP.style.left = oUl.offsetLeft + this.index * this.offsetWidth - 104 + "px"; //匹配浮动层文字内容 oP.innerHTML = "<em><b>" + this.index + "</b> 分 "+aMsg[this.index-1]; }; //鼠标离开后恢复上次评分 aLi[i - 1].onmouseout = function (){ fnPoint(); //关闭浮动层 oP.style.display = "none" }; //点击后进行评分处理 aLi[i - 1].onclick = function (){ iStar = this.index; document.getElementById("hidden"+starId).value=this.index; oP.style.display = "none"; // oSpan.innerHTML = "<strong>" + (this.index) + " 分</strong> (" + aMsg[this.index - 1].match(/\|(.+)/)[1] + ")" } } //评分处理 function fnPoint(iArg){ //分数赋值 iScore = iArg || iStar; for (i = 0; i < aLi.length; i++) aLi[i].className = i < iScore ? "on" : ""; } }

2016-03-03

原生态js写的日期选择器

原生态js写的日期选择器 function HS_DateAdd(interval,number,date){ number = parseInt(number); if (typeof(date)=="string"){var date = new Date(date.split("-")[0],date.split("-")[1],date.split("-")[2])} if (typeof(date)=="object"){var date = date} switch(interval){ case "y":return new Date(date.getFullYear()+number,date.getMonth(),date.getDate()); break; case "m":return new Date(date.getFullYear(),date.getMonth()+number,checkDate(date.getFullYear(),date.getMonth()+number,date.getDate())); break; case "d":return new Date(date.getFullYear(),date.getMonth(),date.getDate()+number); break; case "w":return new Date(date.getFullYear(),date.getMonth(),7*number+date.getDate()); break; } }

2016-03-03

jquery tagbox插件

jquery tagbox插件,我博客中有关于此插件的教程。

2016-02-23

jquery多功能弹出层插件Lightcase

jquery多功能弹出层插件Lightcase Lightcase 支持照片,视频,HTML5 视频,iframe,swf 和 ajax 调用。 我博客里有关于jquery常用的插件的详细教程。

2016-02-23

Java实现txt转pdf

Java实现txt转pdf完整demo,开箱即用。 // 读取TXT文件 FileInputStream inputStream = new FileInputStream(new File(inputTxtFile)); byte[] inputBytes = new byte[inputStream.available()]; inputStream.read(inputBytes); inputStream.close(); // 创建PDF文档 Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(outputPdfFile)); document.open();

2023-09-07

EasyExcel导入excel和导出excel的demo

springboot集成easyexcel做的导入导出demo,下载即可运行。

2021-02-07

图形验证码工具类.zip

java生成图形验证码工具类,很实用的东西

2021-01-25

elasticsearch7.8.0版本的IK分词器

elasticsearch7.8.0版本的IK分词器

2020-12-30

elasticsearch-analysis-ik-7.10.1.zip

elasticsearch-analysis-ik分词器,最新版本7.10.1

2020-12-22

echarts-java.zip

用java封装了echarts。只要一行代码就可以得到option对象,大大减少化了后台的代码量和前台的代码量,同时也降低了开发难度,不需要了解太多echarts的知识,便可以以我封装出的组件做出图表。由于时间关系,暂时只封装了常用到的柱状图、柱状堆积图、折线图、面积图、柱状折线混搭图、饼图、环形图、玫瑰图、仪表盘、漏斗图等。代码里有示例。

2020-11-19

CsvUtil.java

导入csv文件解析工具类

2020-07-23

全球200多个国家和地区电话区号清单.xls

全球200多个国家和地区电话区号清单,总会用得到的。

2019-05-16

windows下配置nginx反向代理tomcat

windows下配置nginx反向代理tomcat,从下载地址开始讲起,第二步讲常用命令 第三步讲了一个实例,第四步是配置说明

2018-08-15

windows环境下配置安装rocketmq

windows环境下配置安装rocketmq,文档分上下两篇,上篇讲配置,下篇讲和springMVC集成,很好的demo

2018-08-06

需要过滤的敏感词

互联网常用的需要过滤的敏感词。约300个敏感词,你会用得到的。

2018-05-29

window下安装配置mongodb.docx

window下安装配置mongodb,从配置到启动到将 mongodb设置成windows服务

2018-04-28

windows64位系统的mongodb(版本3.4)

mongodb-win32-x86_64-v3.4-latest-signed.msi(windows64位系统的mongodb)

2018-04-24

JedisUtil,java操作redis的工具类

JedisUtil,java操作redis的工具类,里面实现了常用的操作redis的方法。很实用的工具类。

2018-04-01

jquery的两个插件base64和MD5

jquery的两个插件base64和MD5,很实用的2个插件。使用方法是引入jquery再引入这里面的插件 var passwd=$.base64.btoa("123456"); 是base64编码; var passwd=$.md5("123456");是md5加密,你会用得到的。

2018-03-21

仿淘宝拖动验证jquery插件(登陆、注册场景下使用)

仿淘宝拖动验证jquery插件(登陆、注册场景下使用)。

2018-01-03

photoSwipe插件

photoSwipe插件,相册插件,支出移动端。你会用的到的。

2017-03-01

ueditor基础功能demo(包含文件上传)

ueditor基础功能demo(包含文件上传),你会用的到的。

2017-02-17

mongo开发所需的jar包

mongo开发所需的jar包

2016-11-01

mysql5.7官方手册

mysql5.7官方手册

2016-10-31

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除