自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Codefan的博客

中小规模软件企业框架研发之路

  • 博客(39)
  • 资源 (2)
  • 收藏
  • 关注

原创 【低代码】低代码平台演变过程和最终形态预测

低代码平台那么多,为了低代码会是什么走向? 低代码平台会成为未来主流的开发平台吗? 低代码平台应该具备哪些功能? 低代码平台到底在哪些反面对程序设计进行了变革?

2022-10-12 09:06:46 688 1

原创 [算法:深入理解计算机]用单一感知器实现逻辑与或非和与非,并用逻辑原型实现加减乘除模拟计算机模型

用与非门实现其他所有逻辑运算

2021-12-29 16:28:54 1782 2

原创 江苏南大先腾J2EE持久化框架(〇)为什么要重复制造“轮子”

先腾的研发框架定位为一个业务研发,而不是技术框架;对于所采用的技术我们一直秉承着“相信大家的眼光”选择最成熟、使用最为广泛的技术;绝大多数来自于开源社区,更是集中在apache和spring两个阵营。一般我们不选择冷门的技术,更不会自己重复制造一个“轮子”。

2020-01-02 10:39:42 451 2

原创 [面试:数据库]一道关于学生选课的sql语句面试题【附答案】

题干假设有一个张学生选课表(stud_subject),这个表有两个字段:姓名(name)和学科(subject),另假设班级没有重名的,这个表的两个字段构成联合主键(name,subject)。建表和测试数据初始化语句如下:create table stud_subject(name varchar(50) not null,subject varchar(50) not null);...

2018-10-09 11:26:38 1560

原创 4个数字计算24点java算法(附源码)

今天看到一个帖子说程序员面试考24点算法,想为什么不用程序来实现呢。在网上没有找到非常完美的算法,包括那个24点计算器,给出的结果重复的也较多。所以自己写了一个。在这儿贴出来给大家分享一下。附源码。问题给出4个1~10之间的数字,使用加、减、乘、除和括号列出一个计算结果为24的算式。比如: 3、3、8、8 可以写成 8/(3-8/3)。但不是每一个都像这个例子只有一个结果,需要列出所有可能...

2018-07-18 13:08:22 15618 5

原创 南大先腾工作流引擎(五)事件与时间控制

工作流事件是工作流在特定的时间点暴露出来用于处理业务相关事务的机制。工作流事件主要有: - 节点创建后;用户处理节点创建后的业务初始化工作。 - 节点提交前;用于节点提交前检查业务数据的一致性。 - 提交失败(异常)时;用于处理异常业务数据。 工作流时间控制,相对来说要复杂一点。它的目的是用来控制业务流程执行的周期。

2019-09-24 08:57:05 422

原创 南大先腾工作流引擎(四)权限与任务分配

南大先腾工作流引擎在任务分配方面有一套完整权限体系。它利用系统的组织机构、流程的组织机构、系统的角色权限、流程变量来对系统中的用户进行定位,从而实现灵活的任务分配工作。

2019-09-23 14:58:53 454

原创 南大先腾工作流引擎(三)流程中的业务

流程中的业务节点。即业务操作节点,分为两类:交互节点和自动处理节点。通常我们说的节点都是指交互操作节点。这个节点一般会绑定到一个业务系统界面或者一个自定义表单。一般说的流程中的业务都是指 交互业务操作节点

2019-09-23 10:54:23 306

原创 南大先腾工作流引擎(二)流程定义与绘制

先腾持久化框架与Hibernate和Mybatis对比欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程...

2019-09-21 16:09:21 375

原创 南大先腾工作流引擎(一)概述与基本概念

概述节点与路由业务操作权限与任务分配辅助功能时限与预警事件机制消息与同志管理与干预

2019-09-16 16:16:54 778

原创 github行业开源项目收藏

电商https://github.com/macrozheng/mallhttps://github.com/crmeb/CRMEB进销存https://github.com/okhelperTeam/okhelper-servicehttps://github.com/okhelperTeam/okhelper-web电子办公OAhttps://github.com/xuhuish...

2019-09-06 09:02:10 810

原创 江苏南大先腾业务框架(十一)框架服务(进程)间调用[附源码]

appSession通讯格式通讯协议

2019-09-05 11:37:44 152

原创 江苏南大先腾业务框架(九)数据字典与框架数据缓存[附源码]

框架中除了用户、机构、业务、权限等信息,还有一类信息也是每个应用都需要,并且在同一个“客户”的不同业务系统中需要统一的数据,数据字典。比如:一般我们都习惯用一个字母来表示人员的性别,但是各个业务系统可能不一样,这样数据交换是就会导致需要做编码之间的转换,所以如果做一个统一的数据字典就能避免这个问题。

2018-11-13 15:29:37 275

原创 江苏南大先腾业务框架(十)RESTFUL服务与返回数据格式[附源码]

框架是基于前后端分离的架构思想开发的,后端以restful风格url提供返回json格式的数据服务。框架对返回结果的形式做了一个约定,返回形式如下的json:```json5{ code:'integer 型,0 表示成功,其他均为错误代码, 不可以为空', message:'code=0:消息:code!=0:错误信息。 也可以为空', data:'any 可以是简单的一个数字,也可以是一个复杂的对象,Map等等,甚至可以为 null'}```

2018-11-09 10:26:50 392 2

原创 通过字符串模板生成字符串[附源码]

其模板为一个字符串,并对其中的 { 变量表达式 }内部的内容进行替换,其中用“\”作为转义符;变量表达式类似于jsp中的el表达式。这个功能比较单一,直接用使用示例来展示。

2018-11-08 18:19:19 834

原创 江苏南大先腾业务框架(八)操作日志记录[附源码]

框架通过接口将日志的记录和调用分离,并通过RecordOperationLog注解实现AOP方式的日志记录;同时OperationLogCenter类通过静态方法向应用开发人员提供了更加灵活的日志记录方式。

2018-11-08 16:43:37 514

原创 江苏南大先腾业务框架(七)通知与消息机制[附源码]

框架中提供的基础服务都是通过接口将实现和调用分离,这样应用开发人员可以根据业务的需求定制符合用户需求的实现方式。系统中的消息分两种:1. 信息,针对一个用户发送的信息,比如:待办提醒、日程提醒等待。2. 通知,针对一个群体,比如:部门,的广播消息。

2018-11-08 15:44:24 343

原创 江苏南大先腾业务框架(六)身份认证与session管理[附源码]

先腾框架的安全体系采用了spring security的框架。本文主要阐述框架中在身份认证和session管理方面的考虑。

2018-10-23 15:13:05 294

原创 江苏南大先腾业务框架(五)角色与授权体系[附源码]

权限控制模型和方式中介绍了先腾框架权限控制的方法和控制的粒度。这一篇主要讲用户的授权模式。框架只能通过角色为用户授权,不能将操作权限直接赋给用户。这样做主要是为了简化权限模型。

2018-10-22 18:36:12 397

原创 江苏南大先腾业务框架(四)权限控制模型和方式[附源码]

先腾框架的权限控制从控制点分两类:1. 前端控制;前端页面显示和页面上的操作按钮的显示控制。2. 后端控制;后端业务访问控制。从控制的内容也分两类:1. 功能控制;业务功能控制。比如:对某个业务的修改操作。2. 数据范围控制;业务操作数据范围控制。框架设计的时候是基于这样的假设:1. 前后端式分离的,并且推荐前端都是静态文件,部署在http服务器上。2. 前端通过ajax请求对后端进行访问。所以,前端的访问控制是可以绕过去的,比如,你知道一个前端页

2018-10-19 14:20:03 333

原创 江苏南大先腾业务框架(三)用户机构关系计算引擎[附源码]

概述在业务调研中用户经常会说这个申请表需要你的上级领导审批、或者需要分管领导审批或者需要兄弟单位进行同行评审,面对这样的需求一半都是要写很多逻辑代码的,问题是用户这样的规则还经常变化,如何快速的面对这样的需求变更呢?框架研发了一个用户机构关系的计算引擎来解决这个问题。用户机构模型...

2018-09-29 20:01:37 568

原创 江苏南大先腾业务框架(二)组织机构[附源码]

对应用系统中的组织机构信息进行建模,用一个多对多的用户机构表来构建用户在组织中的工作内容和职责。

2018-09-28 16:34:54 307

原创 长URL链接转短码JAVA算法[附源码]

用md5散列算法和base64编码对长url链接进行编码,生成对应的短码

2018-09-27 10:25:44 6671 8

原创 江苏南大先腾业务框架(一)框架总体设计

适用场景任何实物的内涵越多外延必将越小,框架的内涵和外延是一个不断平衡的过程。南大先腾是一个以政府、大型企业内部办公平台为重点的软件企业,建设的框架自然是为这类业务系统服务。随着框架的发展我们在框架中加入了很多业务功能,慢慢的框架越来越大变得臃肿而不实用。在4.×版本中,我们将框架重构了一边,将核心功能(内涵)减少到最小以扩大它的使用范围(外延)。将前期加入框架的功能抽象出来独立为服务,或者抽...

2018-09-12 15:54:52 757

原创 江苏南大先腾J2EE持久化框架(二)Spring JDBC框架[附源码]

江苏南大先腾J2EE持久化框架(二)Spring JDBC框架[附源码]Maven 引用示例模型增删改查子表查询页面查询权限控制

2018-09-06 16:21:16 953

原创 江苏南大先腾J2EE持久化框架(一)整体介绍[附源码]

概述江苏南大先腾J2EE持久化框架研发目的不是为了取代MyBatis、Hibernate、Spring JDBC这样的成熟的持久化平台,而是为了让开发人员根容易的使用这些平台。这个框架一共有7个模块,其中一个共用模块,其他的分别是基于MyBatis、Hibernate、Spring JDBC开发的持久化框架和对应的spring 4 配置类。设计这样持久化框架的目标有两个:通过在Hib...

2018-08-09 16:02:03 578

原创 分页查询(二)MyBatis中利用Mapper.xml的Include标签解决方案 [附源码]

分页查询(二)MyBatis中Mapper.xml解决方案 [附源码]

2018-08-07 15:02:56 6156

原创 人民币数字大写转换 java实现 [附源码]

动机业务系统开发的报表中经常需要将人民币数值转换为大写,所以先腾框架中写了一个通用的大写转换函数。由于报表的数值一般比较大所以在java开发中不建议使用float或者int类型,请用BigDecimal类型,为了更加方便调用函数的参数使用字符串类型。源码 final static private String CNum[]={"零","壹&a

2018-08-06 17:51:30 2464 1

原创 分页查询(一)查询语句转换方法[Oracle、DB2、MySql、Sql Server] [附源码]

动机业务系统对数据库进行查询通常需要分页查询(否则数据量太大无法返回),所以需要通用的分页查询。分页查询一般需要做两件事情:生成分页查询语句,进行分页查询。生成求总数的语句,查询所有符合条件的数量,以求一共有多少页。在开发过程中能力强的程序员可以直接写这两个语句,作为先腾框架提供了自动转换的函数,传入一个正常查询的语句,函数会自动转换为上述的两个语句。源码详解所有源码参见...

2018-08-06 17:07:08 575 2

原创 参数驱动SQL(四)与MyBatis框架整合 [附源码]

动机业务系统一般都会选择一个Orm框架,笔者强力推荐使用先腾基于spring jdbc的的持久化框架,但现在这个框架还不是主流,主流的Orm框架还是Hibernate和MyBatis,先腾持久化框架对他们都有封装,提供了很多共用方法和整合参数驱动sql。参数驱动sql和Orm框架在持久化方面进行分工,Orm用于数据的增删改,参数驱动sql主要用于数据的查询与统计工作。Hibernate由于...

2018-08-06 16:16:02 399

原创 参数驱动SQL(三)数据范围权限 [附源码]

动机业务系统开发过程中经常会面对数据范围权限的问题,比如:部分敏感字段只有领导能开、某些业务只能看自己经手的或者只能看自己所在部门的等等。归纳起来和关系数据库相关的数据范围权限可以分为两类:字段权限,通常有称为列权限。数据范围权限,通常称为行权限。参数驱动sql通过两种方式来解决权限问题一、条件标签语句;二、外部顾虑条件。条件标签语句在参数驱动SQL(一)sql语句拼...

2018-08-06 15:42:11 1178

原创 参数驱动SQL(二)变量预处理和转换 [附源码]

动机上一节讲了sql语句的拼接方式,参数驱动sql设计一个重要的目标就是让用户收集的前端输入 能够直接作为转换程序的输入参数。 但是前端输入的参数在类型、格式方面和sql语句需要的参数肯定有很多不一致的地方。前端一般输入的式字符串,sql语句要求的可能式日期、数字、字符串匹配模板甚至是一个用于in语句的数组。所以参数驱动sql设计了一套参数预处理系统。设计思想参数的语法为 : 参数引用...

2018-08-06 11:28:03 469

原创 参数驱动SQL(一)sql语句拼接[附源码]

参数驱动sql它是一个sql预处理引擎,他通过条件标签[],外置条件插入标签{}和预处理标签来将对数据库查询的逻辑规则从代码中剥离出来。设计这个参数化驱动sql的主要目标有: 1. 避免根据输入条件进行复杂的sql语句拼接工作。目标是将前段输入的条件直接转换为Map作为参数驱动sql的参数。 2. 统一处理数据范围权限包括数据行范围和数据的列范围。参数驱动sql语句是基于命名变量语句的,所...

2018-08-05 11:36:45 1360 1

原创 江苏南大先腾J2EE持久化框架(三)用jdbc对JPA进行实现和扩展[附源码]

动机主流的Orm框架有Hibernate、Mybatis和Spring Data。以往我一直推荐使用Hibernate,使用jpa注解不需要写sql语句也不要配置文件,确实比较便捷。说hibernate效率低下,主要式指用hibernate进行查询和统计,我觉得这是不公平的,查询可以原生sql直接返回jsonarry来做,没有必要用hibernate的orm模型做。hibernate功能确实强...

2018-08-03 14:55:35 463

原创 动态数据源、多数据源配置和管理 [附源码]

动机业务系统中经常会需要同时操作多个数据库。 分表分库动态DynamicDataSourceSpring- AbstractRoutingDataSource 是什么?DynamicDataSource 动态数据源,为 Spring 提供动态数据源获取支持。 原理: DynamicDataSource 采用 AOP 机制拦截所有使用了注解 @TargetData...

2018-08-03 10:24:39 2779

原创 词法分析(Lexer)与四则运算java实现[附源码]

动机项目研发过程中经常会需要将业务逻辑外置,需要将业务逻辑和代码分离。一般面对这样的需求有以下几种解决办法:引入一个规则引擎,比如Drools。利用java的javax.script.ScriptEngineManager调用javascript脚本。利用antlr这样的开源项目定义自己的业务领域语言。 笔者在开发过程中经常需要对字符串进行分析,比如:从一个字符串中取出第一个符合标...

2018-08-02 10:04:39 4051

原创 通用的非递归排列和组合算法[附源码]

动机Apache Math包中有很多关分布的算法,但是没有找到排列组合相关的算法。索性自己写一个。排列组合可以分两个算法:组合算法,就是在一个数组中取出m(小于等于数组的长度 n)个对象,有多少中不同的取法。不考虑重复元素,组合数应该为 n! / m! / (n-m)! 。排列算法,给定一个数据,对这个数组进行排列。如果不考虑相同的元素,排列数应该式n!(n为数组长度),但是算法中需要...

2018-08-01 16:08:24 1671 4

原创 一个简单的缓存实现方案【附源码】

动机在研发中进场会碰到一些更改频率很低但是需要频繁访问的对象,比如:数据字典。这是缓存是最好的解决防范,Spring提供了一个通用的缓存框架Ehcache,那我为什么还要自己写一个呢?Spring ehcahe是一个通用的方案,他可以使用内存也可以使用磁盘,这是一个很好的优点,它拜托了内存大小的限制,但是会进行序列化导致性能降低。如果一个对象集合同时需要list的形式存储已获得整体又需...

2018-07-31 17:44:23 993

原创 将列表按照父子关系深度优先遍历顺序排序

问题在项目中 我们经常需要将一个有父子关系的列表按照树的深度优先遍历的方式排序。所以写了一个通用的排序算法。源码github 地址: CollectionsOpt.java。更多分享参见 https://ndxt.github.io。  public interface ParentChild<T> { boolean parentAndChild(T...

2018-07-18 13:43:41 4473

学习OpenCV3(中文版)示例源码

学习OpenCV3(中文版),清华大学出版社 中的示例源码。 书中下载地址 http://bit.by/learningOpenCV3 不可以用。并且这个资源只能用于OpenCV3,在OpenCv4下有部分无法编译通过, 本人对它进行最新版本的适配。 供同道中人交流学习。

2018-10-31

空空如也

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

TA关注的人

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