- 浏览: 140096 次
- 性别:
- 来自: 深圳
最新评论
-
wzk2111:
代码 可用,楼主的思路可以参考
javascript加密java解密 -
Imini123:
[align=center][color=red][/colo ...
freemarker实现通用分页,首页静态化,通用select,通用文章显示 -
igting:
js对+,@符号的加密应该有问题,java解密不对。
javascript加密java解密 -
Seanman:
初学freemarker,源码不全,不知道怎么用
freemarker实现通用分页,首页静态化,通用select,通用文章显示 -
无敌洋葱头:
目前这个只能对0-9 A-Z a-z加密,而且js还有问题。c ...
javascript加密java解密
<select id="queryRegThreeDaysNotCharge" parameterType="map" resultMap="BaseResultMap"> SELECT id FROM member m where m.register_time >= to_date(concat(to_char(sysdate-3,'yyyy-mm-dd'),' 11:00:00'),'yyyy-mm-dd hh24:mi:ss') <![CDATA[ and m.register_time < to_date(concat(to_char(sysdate-2,'yyyy-mm-dd'),' 11:00:00'),'yyyy-mm-dd hh24:mi:ss') ]]> and BITAND(m.flag_bit,${memberFlagBit}) = 0 </select>
<update id="addMemberFlagBit" parameterType="map"> update member set flag_bit = (flag_bit + ${flagBit}) - bitand(flag_bit, ${flagBit}) where id = #{memberId} </update> <update id="clearMemberFlagBit" parameterType="map"> update member set flag_bit = bitand(flag_bit, ${flagBit}) where id = #{memberId} </update>
引用
package com.xxx.dao.domain; public interface ExtensionFeatures { String getFeatures(); void setFeatures(String features); int getFeaturesVersion(); void setupFeature(String columnName, String value); void setupFeature(String columnName, Object value); void removeFeature(String columnName); String getFeature(String columnName); <T> T getFeature(String columnName, Class<T> clz); }
package com.xxx.dao.domain; public interface ExtensionFlagBit { long getFlagBit(); /** * flagBit的乐观锁字段,最好要有对应的数据表字段,要不代码/sql配置写得很麻烦。 * * 假设flagVersion没有数据表字段,而是用flagBit的旧值作为乐观锁: * DO中有flagVersion存放从数据库刚取出时的值, * 那就要setFlagBit()后手动调用setFlageVersion(),在setFlagBit()里隐藏地调用setFlagVersion()是不好的 * 或着mybatis中resultMap要配置多一行将同字段内容放进两个setter中。 * * 如果取单条要手动调用setFlagVersion(),在取出是列表时,要在manager中手动加个循环手动setFlagVersion() * * 即使在mybatis中resultMap配置了多一行将同字段内容放进两个setter中,因为都是用自身的值作乐观锁, * 处理不了超高频率并发交替改变这个bit的情形。 * 彩票行业比一些行业在这里多了一个乐观锁字段,因为我们行业会在"跟单"这业务领域在同一记录上的并发比较常见。 * */ int getFlagVersion(); }
package com.xxx.dao.domain; /** * <ul> * <li>某个设置如果不用于where条件,选用flagBit和feature都行</li> * <li>如果用于where条件,选用flagBit,用于where条件时用bitand()/bitor()/bitxor()函数</li> * <li>如果是值选取比较少,比如1~4,可以选用flagBit,或4个bit内的组合能比较对应</li> * <li>如果值的范围可能比较扩充,可用json表达的features</li> * </ul> * * @author zhoufeng * */ public interface ExtensionField extends ExtensionFlagBit, ExtensionFeatures { }
package com.xxxpiao.common.entity.member; import java.util.Calendar; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Enumerated; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.SequenceGenerator; import javax.persistence.Transient; import org.hibernate.annotations.Type; import com.xxx.dao.domain.ExtensionField; import com.xxx.dao.domain.HasLoadedAttach; import com.xxx.dao.util.HasLoadedAttachUtil; import com.xxx.member.common.constant.MemberHasLoadedAttachBit; import com.xxxpiao.common.entity.BaseEntity; import com.xxxpiao.common.entity.enumerated.BindBankType; import com.xxxpiao.common.entity.enumerated.CertType; import com.xxxpiao.common.entity.enumerated.MemberStatus; import com.xxxpiao.common.entity.enumerated.SellClient; import com.xxxpiao.common.entity.enumerated.Sex; import com.xxxpiao.common.entity.enumerated.ThirdType; import com.xxxpiao.common.service.vo.RegisterType; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.parser.Feature; import com.alibaba.fastjson.serializer.SerializerFeature; /** * 网站客户 * * @author yaya * */ @Entity @org.hibernate.annotations.Entity(dynamicUpdate = true) @SequenceGenerator(name = "SEQ_MEMBER", sequenceName = "SEQ_MEMBER", allocationSize = 1, initialValue = 1) public class Member extends BaseEntity implements HasLoadedAttach, ExtensionField { private static final long serialVersionUID = 6014921986862506261L; @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_MEMBER") private Long id; @Column(nullable = false, unique = true) private String account; /** 昵称(屏蔽手机号,默认跟帐户名相同) */ @Column(nullable = false) private String nickname; @Column(nullable = false) private String password; /** 联系电话 */ @Column(name = "phone") private String phone; /** 电邮地址 */ private String email; /** 用户状态 (0-正常,1-关闭) */ @Enumerated @Column(nullable = false) private MemberStatus status = MemberStatus.ENABLE; /** 注册时间 */ @Column(nullable = false) private Calendar registerTime; /** 来源客户端 */ @Enumerated @Column(nullable = false) private SellClient sellClient; /** 市场渠道 */ @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "sell_channel", nullable = false) private MemberMarketChannel sellChannel; /** 证件类型 (0-身份证,1-军官证 ,2-护照) */ @Enumerated private CertType certType; /** 证件号码 */ private String certNo; /** */ private Calendar lastLoginTime; /** */ private String name; /** */ private Calendar birthday; /** 性别 (0-男,1-女) */ @Enumerated private Sex sex; /** 用户所在地区 */ private Long areaId; /** IM */ private String im; /** 提款银行ID */ private Long bankId; /** 开户行全称 */ private String bankName; /** 银行帐号 */ private String bankCardNo; /** 消费级别 */ private int userLevel = 0; /** 头衔 */ private String title; /** 推荐人 */ private String recoMember; /** 用户资料完整度(0-快速注册,1-完整注册) */ @Column(name = "INFO_FULL_STATUS") private int infoFullStatus; @Type(type = "thirdType") private ThirdType thirdType = ThirdType.LOCAL; /** 用户在第三方系统的标识,如在支付宝的标识,一般会在共享注册时设置 */ private String thirdId; /** 用户是本站注册的,但通过第三方绑定登陆的,有这个信息*/ private MemberThirdLogin thirdLogin; /** 注册类型,暂时不保存到数据库中 */ @Transient private RegisterType registerType; /** 用户绑定类型 */ @Type(type = "bindBankType") private BindBankType bindBankType = BindBankType.NORMAL; /** 用户绑定银行卡信息 **/ private String bindBankInfo; /** 会员信息更新时间 */ private Calendar updateTime = Calendar.getInstance(); /** 用户提款手机号码绑定 */ private String getMoneyPhone; /** * 出生月日 */ private String birthdayMmdd; @Transient private long attachBit; private Long flagBit = 0L; private Integer flagVersion = 0; private JSONObject features = new JSONObject(); private Integer featuresVersion = 0; public Member() { } public Member(Long id) { this.id = id; } /** * 快速注册用户构造方法 * * @param account * @param password * @param sellClient * @param sellChannel */ public Member(String account, String password, SellClient sellClient, MemberMarketChannel sellChannel) { this.account = account; this.nickname = account; this.password = password; this.registerTime = Calendar.getInstance(); this.sellClient = sellClient; this.sellChannel = sellChannel; } public Member(String account, String password) { this.account = account; this.password = password; } @Override public Long getId() { return id; } public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public MemberStatus getStatus() { return status; } public void setStatus(MemberStatus status) { this.status = status; } public Calendar getRegisterTime() { return registerTime; } public void setRegisterTime(Calendar registerTime) { this.registerTime = registerTime; } public SellClient getSellClient() { return sellClient; } public void setSellClient(SellClient sellClient) { this.sellClient = sellClient; } public MemberMarketChannel getSellChannel() { return sellChannel; } public void setSellChannel(MemberMarketChannel sellChannel) { this.sellChannel = sellChannel; addAttachFlag(MemberHasLoadedAttachBit.sellChannel); } public void setSellChannelId(Long sellChannel) { this.sellChannel = new MemberMarketChannel(sellChannel); removeAttachFlag(MemberHasLoadedAttachBit.sellChannel); } public CertType getCertType() { return certType; } public void setCertType(CertType certType) { this.certType = certType; } public String getCertNo() { return certNo; } public void setCertNo(String certNo) { this.certNo = certNo; } public Calendar getLastLoginTime() { return lastLoginTime; } public void setLastLoginTime(Calendar lastLoginTime) { this.lastLoginTime = lastLoginTime; } public String getName() { return name; } public void setName(String name) { if(name!=null){ this.name = name.trim(); }else{ this.name = null; } } public Calendar getBirthday() { return birthday; } public void setBirthday(Calendar birthday) { this.birthday = birthday; } public Sex getSex() { return sex; } public void setSex(Sex sex) { this.sex = sex; } public Long getAreaId() { return areaId; } public void setAreaId(Long areaId) { this.areaId = areaId; } public String getIm() { return im; } public void setIm(String im) { this.im = im; } public Long getBankId() { return bankId; } public void setBankId(Long bankId) { this.bankId = bankId; } public String getBankName() { return bankName; } public void setBankName(String bankName) { this.bankName = bankName; } public String getBankCardNo() { return bankCardNo; } public void setBankCardNo(String bankCardNo) { this.bankCardNo = bankCardNo; } public int getUserLevel() { return userLevel; } public void setUserLevel(int userLevel) { this.userLevel = userLevel; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getRecoMember() { return recoMember; } public void setRecoMember(String recoMember) { this.recoMember = recoMember; } public int getInfoFullStatus() { if(this.name!=null && this.name.length()>0 && this.phone!=null && this.phone.length()>0 && this.certNo!=null && this.certNo.length()>0){ return 1;//完善资料 } return infoFullStatus; } public void setInfoFullStatus(int infoFullStatus) { this.infoFullStatus = infoFullStatus; } public String getThirdId() { return thirdId; } public void setThirdId(String thirdId) { this.thirdId = thirdId; } public MemberThirdLogin getThirdLogin() { return thirdLogin; } public void setThirdLogin(MemberThirdLogin thirdLogin) { this.thirdLogin = thirdLogin; this.addAttachFlag(MemberHasLoadedAttachBit.thirdLogin); } public void setId(Long id) { this.id = id; } public ThirdType getThirdType() { return thirdType; } public void setThirdType(ThirdType thirdType) { this.thirdType = thirdType; } public RegisterType getRegisterType() { return registerType; } public void setRegisterType(RegisterType registerType) { this.registerType = registerType; } public BindBankType getBindBankType() { return bindBankType; } public void setBindBankType(BindBankType bindBankType) { this.bindBankType = bindBankType; } public String getBindBankInfo() { return bindBankInfo; } public void setBindBankInfo(String bindBankInfo) { this.bindBankInfo = bindBankInfo; } public Calendar getUpdateTime() { return updateTime; } public void setUpdateTime(Calendar updateTime) { this.updateTime = updateTime; } public String getGetMoneyPhone() { return getMoneyPhone; } public void setGetMoneyPhone(String getMoneyPhone) { this.getMoneyPhone = getMoneyPhone; } @Override public boolean hasAttachLoaded(long bitForPart) { return HasLoadedAttachUtil.hasAttachLoaded(attachBit, bitForPart); } private void removeAttachFlag(long flagBit) { this.attachBit &= flagBit ^ Long.MAX_VALUE; } private void addAttachFlag(long flagBit) { this.attachBit |= flagBit; } @Override public long getFlagBit() { return this.flagBit == null ? 0 : flagBit; } @Override public int getFlagVersion() { return this.flagVersion == null ? 0 : flagVersion; } @Override public String getFeatures() { return JSON.toJSONString(features,SerializerFeature.UseISO8601DateFormat); } @Override public int getFeaturesVersion() { return this.featuresVersion == null ? 0 : featuresVersion; } @Override public void setupFeature(String columnName, String value) { features.put(columnName, value); } @Override public void setupFeature(String columnName, Object value) { features.put(columnName, value); } @Override public void removeFeature(String columnName) { features.remove(columnName); } @Override public String getFeature(String columnName) { return features.getString(columnName); } @Override public <T> T getFeature(String columnName, Class<T> clz) { return features.getObject(columnName, clz); } public void addFlagBit(Long flagBit) { this.flagBit |= flagBit.longValue(); } public void removeFlagBit(long flagBit) { this.flagBit &= flagBit ^ Long.MAX_VALUE; } public void setFlagBit(Long flagBit) { this.flagBit = flagBit == null ? 0 : flagBit; } public void setFeatures(String features) { this.features = JSONObject.parseObject(features,Feature.AllowISO8601DateFormat); } public void setFlagVersion(Integer flagVersion) { this.flagVersion = flagVersion == null ? 0 : flagVersion; } public void setFeaturesVersion(Integer featuresVersion) { this.featuresVersion = featuresVersion == null ? 0 : featuresVersion; } public String getBirthdayMmdd() { return birthdayMmdd; } public void setBirthdayMmdd(String birthdayMmdd) { this.birthdayMmdd = birthdayMmdd; } }
引用
http://blog.csdn.net/hengyunabc/article/details/34623957
发表评论
文章已被作者锁定,不允许评论。
-
ES聚合查询大全
2020-11-18 16:16 266package com.xxx.es; import ... -
spring中使用logback日志组件替换log4j
2015-04-29 15:27 944logback比log4j的强大之处,请到logback的主页 ... -
java加密解密
2015-02-10 15:05 1729package com.neo.xnol.weixin.u ... -
eclipse常用配置
2015-01-05 11:23 1241Eclipse常用配置介绍 以 ... -
分布式事务-幂等
2014-12-30 14:04 682引用 http://www.360doc.com/conten ... -
实现基于nginx的tomcat负载均衡和集群配置
2014-12-26 16:22 1114今天看到"基于apache的tomcat负载均衡和集 ... -
java导出Excel
2014-10-14 17:00 1103package com.xxxpiao.datacompa ... -
<base target="_self"/>标签的巧妙用法
2014-10-10 15:34 746最近项目中一个小问题卡了我不少时间。我遇到的问题是:在项目的弹 ... -
分布式一致性-幂等
2014-09-28 14:53 1097关于分布式系统的数据 ... -
ModelResult-查询封装类
2014-09-25 09:14 3547package com.xxx.appmodel.doma ... -
LDAP工具类
2014-09-05 10:12 884package com.xxxpiao.common.ut ... -
通过JNDI访问LDAP目录服务
2014-09-04 17:46 3105package com.sina.test; imp ... -
java获取两个日期之间的年月(yyyy-MM)和年月日(yyyy-MM-dd)
2014-07-29 14:42 1842public List<String> pro ... -
maven-.m2
2014-07-28 14:48 797<settings> <!--< ... -
maven实战
2014-07-07 10:04 755<settings> <!--< ... -
验证敏感词汇
2014-07-04 10:01 958package com.xxxpiao.core.memb ... -
Jms实战
2014-07-02 09:27 695<?xml version="1.0&qu ... -
线程运用-抽象类使用
2014-06-26 17:34 856package com.xxx.betcart.serve ... -
JDBC分批更新
2014-06-26 17:11 621@Override public boolean ba ... -
分批查询
2014-06-26 17:08 834package com.xxxpiao.common.ut ...
相关推荐
`django-feature-flag` 是一个针对 Python 的 Django 框架开发的库,它专为实现“功能旗标”或“特性开关”(Feature Flags/Feature Toggles)而设计。这个工具允许开发者在不发布新代码的情况下,通过简单的配置来...
【标题】:“Laravel开发-laravel-simple-featureflag”是一个关于在Laravel框架中实现功能标记(Feature Flags)的项目,它提供了一种快速且简洁的方法来管理应用中的特性开关。 【描述】:“Laravel的快速和肮脏...
Laravel是PHP框架中的一个明星,以其优雅的语法和强大的功能著称,而laravel-feature则进一步扩展了其功能,帮助开发者更好地组织和控制项目中的不同特性。 首先,让我们理解一下什么是“功能标记”。在软件开发中...
高通Camera Chi-CDK Feature2框架是一个功能强大、灵活的框架,能够满足camera应用程序对高性能和高效率的需求。通过了解Feature2框架的架构、组件、工作流程和关键技术点,我们可以更好地理解和应用Feature2框架,...
3. **功能扩展**:可能包括增加多语言支持、自定义分类、促销和折扣管理、客户评论、评分等。这些功能可以通过编写Laravel控制器、模型、视图和路由来实现,同时利用Magento 2的API接口进行数据交互。 4. **支付...
主要功能: (1)支持C++项目的dgml生成:可以查看项目和类的依赖关系 (2)UML类图的代码双向生成: 从UML类图生成代码 从代码形成UML类图 安装: 运行Visualization_and_Modeling_Feature_Pack_Runtime.vsix和 ...
综上所述,"feature-flag-service"项目很可能是实现了一个Java功能标记服务,允许开发者通过简单的API调用来控制功能的开启和关闭,以实现灵活的软件部署和管理。通过学习和应用这些知识点,可以提高软件开发的效率...
在GIS领域,ArcGIS是Esri公司开发的一套强大的地理信息系统软件,用于处理地理空间数据。ArcGIS Featureservice是ArcGIS Server...在实际开发中,还需要结合具体的业务需求和用户体验设计,来优化和扩展这些基本功能。
**MFC Feature Pack 示例**是微软为Visual Studio 2008 SP1提供的一系列示例代码,旨在展示MFC(Microsoft Foundation Classes)的新功能和改进。这些示例旨在帮助开发者更好地理解和利用MFC库在现代Windows应用程序...
在SharePoint中,Feature是核心的扩展机制,它允许开发人员将自定义的功能集打包,以便在SharePoint环境中部署和启用。Feature可以包含一系列元素,如列表实例、内容类型、页面布局、Web部件等,以实现特定的功能...
`IFeatureLayer` 接口提供了对 `FeatureLayer` 的操作,包括管理数据源、选择集以及查询功能。例如,`IFeatureLayer::DataSourceType` 可以用来查看数据源类型,而 `IFeatureLayer::FeatureClass` 属性则返回该图层...
总结来说,`ArcGIS for Android FeatureLayer`的属性更新涉及到创建和操作特征表,查询特征,修改属性,以及同步编辑。这是一个基础但至关重要的功能,对于构建交互式和动态的GIS应用程序至关重要。在实际开发中,应...
本篇文章将深入探讨如何利用CXF的Interceptor(拦截器)和Feature(特性)功能,提升我们的服务开发体验。 首先,Interceptor是CXF框架中的一个核心组件,它允许我们在服务调用的生命周期中插入自定义的行为。拦截...
Chrome Feature Flag CRX 插件是一款专为Google Chrome浏览器设计的扩展程序,它允许用户方便地管理和调整浏览器中的“功能标志”(Feature Flags)。功能标志是Chrome开发团队用于实验性功能的一种机制,通过这些...
下面将详细介绍如何更改FeatureClass范围,包括使用ArcGIS desktop重新导入要素类、修改SDE系统表和修改PersonalGDB系统表等方法。 一、重新导入要素类 要更改FeatureClass范围,首先需要重新导入要素类。在 ...
"Feature 转化为 Json 对象" 在 GIS 应用中,Feature 对象是非常重要的一种数据结构,用于描述空间要素的属性和几何信息。但是在实际应用中,我们需要将 Feature 对象转换为 Json 对象,以便在客户端进行处理和展示...
功能切换关于FeatureToggle是一个易于使用的可扩展库,旨在为PHP应用程序提供功能切换功能。模型库模型基于Toggles,它们是定义用于评估功能是否应打开或关闭(启用或禁用)的算法的类。 例如,一个Toggle会读取配置...
在SuperMap iClient 6R for JavaScript开发模式中,`Feature`对象是地图服务中基本的数据单元,它代表了地图上的一个实体,如点、线、面等地理要素。为`Feature`对象设置文本风格是地图展示的重要环节,能够帮助用户...
通过可视化和建模功能包,可以扩展 Visual Studio 2010的功能,可以从 UML 类关系图生成代码、从代码创建 UML 类关系图、创建和验证 C 和 C++ 代码的层关系图、编写自定义代码以创建、修改和验证层关系图等。
在地理信息系统(GIS)和遥感领域中,Google Earth Engine(简称GEE)是一个功能强大的云端平台,它允许用户对地理空间信息进行处理和分析。GEE的一个显著特点是,它提供了丰富的数据类型来处理和分析地理空间数据。...