• 关于

    功能实体可以做什么

    的搜索结果

回答

我在这里假设你在问怎么阅读jdk的源码,java源码这个名字有点奇怪。 你可以build 一个fast debug版本,然后使用debugger去调试你的程序,这样对程序是怎么调用的有很直观的视图。 其次,可以看看jdk里面的regression tests,里面有很多例子。 其次,openjdk提供了netbean的jdk project,你可以很容易用netbean调试openjdk。jdk有很多native的程序,还有makefile,有空也值得阅读。阅读jdk源码最好才用模块的分割方法。比如这些天你只关注java.util.collection,你需要先了解算法这些基本知识,比如hashmap里面的allocation,capacity的概念,红黑树,二项堆。这样看程序就事半功倍。如果是看API,最好先百度哪些类满足你的要求的,直接看你需要的使用的类就可以了,看完父类看子类,不必要全部都去看,也没有那个时间,如果是看源码,你需要知道这个源码实现的功能是什么,先阅读实体类,再通过程序演示,去阅读源码,类似于按功能模块进行阅读,最好不要从头开始读,也不知道哪里是头,最好是边阅读边做必要的注释。工程我都是用Eclipse来阅读的,按CTRL+左键就能跳到函数,类的定义文件那里。如果你能找到一个熟悉这份源码的人,有人带你过一遍就最简单不过了。如果是javaweb工程,先看实体类,再看框架配置文件,再根据功能分模块看

蛮大人123 2019-12-02 01:50:13 0 浏览量 回答数 0

问题

移动应用应具备的13个特性

chaipanpan 2019-12-01 21:02:53 7638 浏览量 回答数 0

回答

1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。 这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表、社会关系表、工作简历表。这就是“一张原始单证对应多个实体”的典型例子。 2. 主键与外键 一般而言,一个实体不能既无主键又无外键。在E—R 图中, 处于叶子部位的实体, 可以定义主键,也可以不定义主键(因为它无子孙), 但必须要有外键(因为它有父亲)。 主键与外键的设计,在全局数据库的设计中,占有重要地位。当全局数据库的设计完成以后,有个美国数据库设计专家说:“键,到处都是键,除了键之外,什么也没有”,这就是他的数据库设计经验之谈,也反映了他对信息系统核心(数据模型)的高度抽象思想。 因为:主键是实体的高度抽象,主键与外键的配对,表示实体之间的连接。 3. 基本表的性质 基本表与中间表、临时表不同,因为它具有如下四个特性: 原子性。基本表中的字段是不可再分解的。原始性。基本表中的记录是原始数据(基础数据)的记录。演绎性。由基本表与代码表中的数据,可以派生出所有的输出数据。稳定性。基本表的结构是相对稳定的,表中的记录是要长期保存的。理解基本表的性质后,在设计数据库时,就能将基本表与中间表、临时表区分开来。 4. 范式标准 基本表及其字段之间的关系, 应尽量满足第三范式。但是,满足第三范式的数据库设计,往往不是最好的设计。为了提高数据库的运行效率,常常需要降低范式标准:适当增加冗余,达到以空间换时间的目的。〖例2〗:有一张存放商品的基本表,如表1所示。“金额”这个字段的存在,表明该表的设计不满足第三范式,因为“金额”可以由“单价”乘以“数量”得到,说明“金额”是冗余字段。但是,增加“金额”这个冗余字段,可以提高查询统计的速度,这就是以空间换时间的作法。在Rose 2002中,规定列有两种类型:数据列和计算列。“金额”这样的列被称为“计算列”,而“单价”和“数量”这样的列被称为“数据列”。640?wx_fmt=png 表1 商品表的表结构 5. 通俗地理解三个范式 通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就必须通俗地理解三个范式(通俗地理解是够用的理解,并不是最科学最准确的理解): 第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解 第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性; 第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。 没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。 6. 要善于识别与正确处理多对多的关系 若两个实体之间存在多对多的关系,则应消除这种关系。消除的办法是,在两者之间增加第三个实体。这样,原来一个多对多的关系,现在变为两个一对多的关系。要将原来两个实体的属性合理地分配到三个实体中去。 这里的第三个实体,实质上是一个较复杂的关系,它对应一张基本表。一般来讲,数据库设计工具不能识别多对多的关系,但能处理多对多的关系。 〖例3〗:在“图书馆信息系统”中,“图书”是一个实体,“读者”也是一个实体。这两个实体之间的关系,是一个典型的多对多关系:一本图书在不同时间可以被多个读者借阅,一个读者又可以借多本图书。为此,要在二者之间增加第三个实体,该实体取名为“借还书”,它的属性为:借还时间、借还标志(0表示借书,1表示还书),另外,它还应该有两个外键(“图书”的主键,“读者”的主键),使它能与“图书”和“读者”连接。 7. 主键PK的取值方法 PK是供程序员使用的表间连接工具,可以是一无物理意义的数字串, 由程序自动加1来实现。也可以是有物理意义的字段名或字段名的组合。不过前者比后者好。当PK是字段名的组合时,建议字段的个数不要太多,多了不但索引占用空间大,而且速度也慢。 8. 正确认识数据冗余 主键与外键在多表中的重复出现, 不属于数据冗余,这个概念必须清楚,事实上有许多人还不清楚。非键字段的重复出现, 才是数据冗余!而且是一种低级冗余,即重复性的冗余。高级冗余不是字段的重复出现,而是字段的派生出现。〖例4〗:商品中的“单价、数量、金额”三个字段,“金额”就是由“单价”乘以“数量”派生出来的,它就是冗余,而且是一种高级冗余。冗余的目的是为了提高处理速度。 只有低级冗余才会增加数据的不一致性,因为同一数据,可能从不同时间、地点、角色上多次录入。因此,我们提倡高级冗余(派生性冗余),反对低级冗余(重复性冗余)。 9. E--R图没有标准答案 信息系统的E--R图没有标准答案,因为它的设计与画法不是惟一的,只要它覆盖了系统需求的业务范围和功能内容,就是可行的。反之要修改E--R图。尽管它没有惟一的标准答案,并不意味着可以随意设计。好的E—R图的标准是:结构清晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余。 10. 视图技术在数据库设计中很有用 与基本表、代码表、中间表不同,视图是一种虚表,它依赖数据源的实表而存在。视图是供程序员使用数据库的一个窗口,是基表数据综合的一种形式, 是数据处理的一种方法,是用户数据保密的一种手段。 为了进行复杂处理、提高运算速度和节省存储空间, 视图的定义深度一般不得超过三层。若三层视图仍不够用, 则应在视图上定义临时表, 在临时表上再定义视图。这样反复交迭定义, 视图的深度就不受限制了。 对于某些与国家政治、经济、技术、军事和安全利益有关的信息系统,视图的作用更加重要。这些系统的基本表完成物理设计之后,立即在基本表上建立第一层视图,这层视图的个数和结构,与基本表的个数和结构是完全相同。并且规定,所有的程序员,一律只准在视图上操作。 只有数据库管理员,带着多个人员共同掌握的“安全钥匙”,才能直接在基本表上操作。请读者想想:这是为什么? 11. 中间表、报表和临时表 中间表是存放统计数据的表,它是为数据仓库、输出报表或查询结果而设计的,有时它没有主键与外键(数据仓库除外)。临时表是程序员个人设计的,存放临时记录,为个人所用。基表和中间表由DBA维护,临时表由程序员自己用程序自动维护。 12. 完整性约束表现在三个方面 域的完整性:用Check来实现约束,在数据库设计工具中,对字段的取值范围进行定义时,有一个Check按钮,通过它定义字段的值城。 参照完整性:用PK、FK、表级触发器来实现。用户定义完整性:它是一些业务规则,用存储过程和触发器来实现。 13. 防止数据库设计打补丁的方法是“三少原则” 1、一个数据库中表的个数越少越好。只有表的个数少了,才能说明系统的E--R图少而精,去掉了重复的多余的实体,形成了对客观世界的高度抽象,进行了系统的数据集成,防止了打补丁式的设计; 2、一个表中组合主键的字段个数越少越好。因为主键的作用,一是建主键索引,二是做为子表的外键,所以组合主键的字段个数少了,不仅节省了运行时间,而且节省了索引存储空间; 3、一个表中的字段个数越少越好。只有字段的个数少了,才能说明在系统中不存在数据重复,且很少有数据冗余,更重要的是督促读者学会“列变行”,这样就防止了将子表中的字段拉入到主表中去,在主表中留下许多空余的字段。所谓“列变行”,就是将主表中的一部分内容拉出去,另外单独建一个子表。这个方法很简单,有的人就是不习惯、不采纳、不执行。 数据库设计的实用原则是:在数据冗余和处理速度之间找到合适的平衡点。“三少”是一个整体概念,综合观点,不能孤立某一个原则。该原则是相对的,不是绝对的。“三多”原则肯定是错误的。试想:若覆盖系统同样的功能,一百个实体(共一千个属性) 的E--R图,肯定比二百个实体(共二千个属性)的E--R图,要好得多。 提倡“三少”原则,是叫读者学会利用数据库设计技术进行系统的数据集成。数据集成的步骤是将文件系统集成为应用数据库,将应用数据库集成为主题数据库,将主题数据库集成为全局综合数据库。 集成的程度越高,数据共享性就越强,信息孤岛现象就越少,整个企业信息系统的全局E—R图中实体的个数、主键的个数、属性的个数就会越少。提倡“三少”原则的目的,是防止读者利用打补丁技术,不断地对数据库进行增删改,使企业数据库变成了随意设计数据库表的“垃圾堆”,或数据库表的“大杂院”,最后造成数据库中的基本表、代码表、中间表、临时表杂乱无章,不计其数,导致企事业单位的信息系统无法维护而瘫痪。 “三多”原则任何人都可以做到,该原则是“打补丁方法”设计数据库的歪理学说。“三少”原则是少而精的原则,它要求有较高的数据库设计技巧与艺术,不是任何人都能做到的,因为该原则是杜绝用“打补丁方法”设计数据库的理论依据。 14. 提高数据库运行效率的办法 在给定的系统硬件和系统软件条件下,提高数据库系统的运行效率的办法是:在数据库物理设计时,降低范式,增加冗余, 少用触发器, 多用存储过程。 当计算非常复杂、而且记录条数非常巨大时(例如一千万条),复杂计算要先在数据库外面,以文件系统方式用C++语言计算处理完成之后,最后才入库追加到表中去。这是电信计费系统设计的经验。 发现某个表的记录太多,例如超过一千万条,则要对该表进行水平分割。水平分割的做法是,以该表主键PK的某个值为界线,将该表的记录水平分割为两个表。若发现某个表的字段太多,例如超过八十个,则垂直分割该表,将原来的一个表分解为两个表。 对数据库管理系统DBMS进行系统优化,即优化各种系统参数,如缓冲区个数。在使用面向数据的SQL语言进行程序设计时,尽量采取优化算法。 总之,要提高数据库的运行效率,必须从数据库系统级优化、数据库设计级优化、程序实现级优化,这三个层次上同时下功夫。

茶什i 2019-12-27 15:54:46 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

回答

第二个不算是个问题吧: 现在开发工具都可以自动帮你生成 getter/setter 方法的###### 第二项 struts2不是默认提供自动转换的吗? 比如: 用户类 class User { private String name; private String address; get/set略 } 页面上表单有 姓名 地址两项文本域(注意input的nam命名方式) <input name="user.name"/> <input name="user.address"/> action里定义一个user对象变量就可以了, private User user; public get/set方法;   这样表单传过来的数据,就可以自动封装到user对象里了。。。这样就不用写50多个get、set了,只要一个user的get、set就可以了 啊是这个意思?struts2的入门指南里有介绍的呀。。。。还可以转换成list map等等。。。###### 第一点的理解是正确的,DAO封装对数据库的操作,Action处理请求并对数据进行校验,然后调用DAO类实现功能,如果功能比较复杂,可以增加Service层将业务逻辑封装,Action-Service-DAO。 第二点的getter和setter一般都使用IDE自带的功能生成。不需要自己写。楼上提供的使用实体Bean的方式也是可以的。###### getter和setter可以IDE自动生成,况且如果表单里的内容不需要处理的话也就不一定要写getter和setter,bean里只写需要的就行###### 很感谢大家对我的指点,让我学习的劲更足了…… set/get确实不用我们写,但我担心代码太多会不会占用系统资源。 三楼沙逛鱼师兄的方法,一定找个时间研究一下,到时候不免又要麻烦大家,先谢谢了,感谢大家的帮助。###### bean不会太占资源的,放心好了###### 第一个的理解一有点小问题 一般都是.jsp->action->service->dao这样的一个过程,不过你刚开始弄struts2也无所谓.自己知道就行了 关于连接池的话..hibernate和spring好像都可以做 第二个,action处理JSP请求时,对所有的表单项都要get和set,如果你有50项的话那就必须要有50个get/set 因为对于属于提供get/set是java面向对象的一种封装机制,而struts2-core里面的valueStack运行机制是根据页面的表单元素提交到action后,valuestack会自动根据表单元素的Name属性去填充action类中对应元素的属性 很方便的###### 首先要理解的是 MVC 模式###### 4楼和8楼的师兄提到的service不知是什么角色,我买的书上没有提及,是不是和action一样是接口还是其它什么,service是属于那个环节的,看来我要重新买书了…… hibernate和spring倒是在网上看了一些资料,感觉有点难度,准备进一步学习,尤其是orm好像不用再搞sql语句,应该很方便。###### jsp/html属于表现层 action是属于控制层 service属于业务层 dao属于数据层 jsp-->action-->service-->dao 一个完整的ssh就是这样子的过程...一层调一层,,都由spring进行管理

爱吃鱼的程序员 2020-06-05 13:00:52 0 浏览量 回答数 0

回答

1、那个是功能预留接口,尚未实现。 2、没看明白你说的意思。 3、经测试,是正常的。不能再现你的问题。 4、多数据源只需在aos.core.xml再配置一套对应的Dao就行。如下所示: <bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> <property name="url" value="jdbc:sqlserver://localhost:1433;database=aos" /> <property name="username" value="sa" /> <property name="password" value="111111" /> </bean> <bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource2" /> <property name="typeAliasesPackage" value="cn.osworks.aos;com.mycorp.mysystem" /> <property name="mapperLocations" value="classpath:**/*Mapper.xml" /> <property name="configLocation" value="classpath:aos.mybatis.cfg.xml" /> </bean> <bean id="sqlDao2" class="cn.osworks.aos.core.dao.SqlDao"> <property name="sqlSessionFactory" ref="sqlSessionFactory2" /> </bean>###### 1.明白  2.权限分为‘页面权限’和‘页面元素权限’  管理员A  被授权对象B(例如用户、岗位等)  在A给B授权‘页面元素’的时候:左侧树应该是B已有的‘页面权限’,而不是管理员A已有的‘页面权限’。 不知道你听明白没 3.找到原因是因为汉字后台乱码了,我用的tomcat跑的,也许配置一下tomcat就可以了,但是为什么web.xml里面encodingFilter没用? 4.我贴一下整体代码 aos.core.xml 需要新建 cn.osworks.aos.core.annotation.Mapper2 package cn.osworks.aos.core.annotation; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.stereotype.Component; /** * 标识第二数据源Mapper2,方便{@link org.mybatis.spring.mapper.MapperScannerConfigurer}的扫描。 * @author MrZhao * @version 2015-07-08 */ @Retention(RetentionPolicy.RUNTIME) @Target({java.lang.annotation.ElementType.TYPE}) @Documented @Component public @interface Mapper2 { public abstract String value() default ""; } 生成新的Map、XML、Po 新数据源的Map用新的注解 @Mapper2 public interface Sys_userMapper { /** * 插入一个数据持久化对象(插入字段为传入PO实体的非空属性) * <p> 防止DB字段缺省值需要程序中再次赋值 * * @param sys_userPO * 要插入的数据持久化对象 * @return 返回影响行数 */ int insert(Sys_userPO sys_userPO); ..... 最后两种方式测试均通过 Map方式    salDao方式 @ OSWorks-XC ######看明白你想说的意思了。评估后,不需要调整。首先:这个功能是给有root权限的超级用户和有菜单管理权限(被授予了管理权限)的普通管理员使用。其次:这个功能的逻辑是:用户页面元素授权、岗位页面元素授权、角色页面元素授权,可对什么菜单(页面)上的页面元素授权是由当前登录管理员的管理权限(拥有哪些菜单的管理权限)决定不是被操作人员、被操作岗位、被操作角色决定的。######你还是没完完全理解我说得意思,如果被操作人员没有A菜单(页面)的权限,你给他分配A菜单里面的页面元素权限的意义是什么呢?我说的是在给被操作人员授权页面元素权限的时候,左侧树应该是被操作人员已授权的页面菜单权限。 页面元素权限是依托于页面权限的。如果你没有页面权限,还分配什么页面元素权限。你觉得呢?###### 引用来自“AHei”的评论看明白你想说的意思了。评估后,不需要调整。首先:这个功能是给有root权限的超级用户和有菜单管理权限(被授予了管理权限)的普通管理员使用。其次:这个功能的逻辑是:用户页面元素授权、岗位页面元素授权、角色页面元素授权,可对什么菜单(页面)上的页面元素授权是由当前登录管理员的管理权限(拥有哪些菜单的管理权限)决定不是被操作人员、被操作岗位、被操作角色决定的。 回复 @MrZhaoYun : 我知道你说的意思。那样调整需要分别调整用户与授权-角色与授权-岗位与授权的相应功能都得调整。而按现有模式操作不会带来任何问题,该不该给做某个页面下的页面元素和对应的人员-岗位-角色之间的授权操作由操作人员决定(开发人员或者管理人员。)即便他做了不改做的页面元素授权也无任何印象,且可以先做页面元素授权再做页面授权都是可以有效果的。操作人员可以对哪些页面操作并非全部页面而是这个操作人员被授予管理权限的那些页面(root用户的管理权限是全部页面)。这个以后再根据情况看是否需要调整。######好的

kun坤 2020-06-01 00:08:37 0 浏览量 回答数 0

回答

1、那个是功能预留接口,尚未实现。 2、没看明白你说的意思。 3、经测试,是正常的。不能再现你的问题。 4、多数据源只需在aos.core.xml再配置一套对应的Dao就行。如下所示: <bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> <property name="url" value="jdbc:sqlserver://localhost:1433;database=aos" /> <property name="username" value="sa" /> <property name="password" value="111111" /> </bean> <bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource2" /> <property name="typeAliasesPackage" value="cn.osworks.aos;com.mycorp.mysystem" /> <property name="mapperLocations" value="classpath:**/*Mapper.xml" /> <property name="configLocation" value="classpath:aos.mybatis.cfg.xml" /> </bean> <bean id="sqlDao2" class="cn.osworks.aos.core.dao.SqlDao"> <property name="sqlSessionFactory" ref="sqlSessionFactory2" /> </bean>###### 1.明白  2.权限分为‘页面权限’和‘页面元素权限’  管理员A  被授权对象B(例如用户、岗位等)  在A给B授权‘页面元素’的时候:左侧树应该是B已有的‘页面权限’,而不是管理员A已有的‘页面权限’。 不知道你听明白没 3.找到原因是因为汉字后台乱码了,我用的tomcat跑的,也许配置一下tomcat就可以了,但是为什么web.xml里面encodingFilter没用? 4.我贴一下整体代码 aos.core.xml 需要新建 cn.osworks.aos.core.annotation.Mapper2 package cn.osworks.aos.core.annotation; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.stereotype.Component; /** * 标识第二数据源Mapper2,方便{@link org.mybatis.spring.mapper.MapperScannerConfigurer}的扫描。 * @author MrZhao * @version 2015-07-08 */ @Retention(RetentionPolicy.RUNTIME) @Target({java.lang.annotation.ElementType.TYPE}) @Documented @Component public @interface Mapper2 { public abstract String value() default ""; } 生成新的Map、XML、Po 新数据源的Map用新的注解 @Mapper2 public interface Sys_userMapper { /** * 插入一个数据持久化对象(插入字段为传入PO实体的非空属性) * <p> 防止DB字段缺省值需要程序中再次赋值 * * @param sys_userPO * 要插入的数据持久化对象 * @return 返回影响行数 */ int insert(Sys_userPO sys_userPO); ..... 最后两种方式测试均通过 Map方式    salDao方式 @ OSWorks-XC ######看明白你想说的意思了。评估后,不需要调整。首先:这个功能是给有root权限的超级用户和有菜单管理权限(被授予了管理权限)的普通管理员使用。其次:这个功能的逻辑是:用户页面元素授权、岗位页面元素授权、角色页面元素授权,可对什么菜单(页面)上的页面元素授权是由当前登录管理员的管理权限(拥有哪些菜单的管理权限)决定不是被操作人员、被操作岗位、被操作角色决定的。######你还是没完完全理解我说得意思,如果被操作人员没有A菜单(页面)的权限,你给他分配A菜单里面的页面元素权限的意义是什么呢?我说的是在给被操作人员授权页面元素权限的时候,左侧树应该是被操作人员已授权的页面菜单权限。 页面元素权限是依托于页面权限的。如果你没有页面权限,还分配什么页面元素权限。你觉得呢?###### 引用来自“AHei”的评论看明白你想说的意思了。评估后,不需要调整。首先:这个功能是给有root权限的超级用户和有菜单管理权限(被授予了管理权限)的普通管理员使用。其次:这个功能的逻辑是:用户页面元素授权、岗位页面元素授权、角色页面元素授权,可对什么菜单(页面)上的页面元素授权是由当前登录管理员的管理权限(拥有哪些菜单的管理权限)决定不是被操作人员、被操作岗位、被操作角色决定的。 回复 @MrZhaoYun : 我知道你说的意思。那样调整需要分别调整用户与授权-角色与授权-岗位与授权的相应功能都得调整。而按现有模式操作不会带来任何问题,该不该给做某个页面下的页面元素和对应的人员-岗位-角色之间的授权操作由操作人员决定(开发人员或者管理人员。)即便他做了不改做的页面元素授权也无任何印象,且可以先做页面元素授权再做页面授权都是可以有效果的。操作人员可以对哪些页面操作并非全部页面而是这个操作人员被授予管理权限的那些页面(root用户的管理权限是全部页面)。这个以后再根据情况看是否需要调整。######好的

montos 2020-06-03 10:22:08 0 浏览量 回答数 0

回答

1、那个是功能预留接口,尚未实现。 2、没看明白你说的意思。 3、经测试,是正常的。不能再现你的问题。 4、多数据源只需在aos.core.xml再配置一套对应的Dao就行。如下所示: <bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> <property name="url" value="jdbc:sqlserver://localhost:1433;database=aos" /> <property name="username" value="sa" /> <property name="password" value="111111" /> </bean> <bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource2" /> <property name="typeAliasesPackage" value="cn.osworks.aos;com.mycorp.mysystem" /> <property name="mapperLocations" value="classpath:**/*Mapper.xml" /> <property name="configLocation" value="classpath:aos.mybatis.cfg.xml" /> </bean> <bean id="sqlDao2" class="cn.osworks.aos.core.dao.SqlDao"> <property name="sqlSessionFactory" ref="sqlSessionFactory2" /> </bean>###### 1.明白  2.权限分为‘页面权限’和‘页面元素权限’  管理员A  被授权对象B(例如用户、岗位等)  在A给B授权‘页面元素’的时候:左侧树应该是B已有的‘页面权限’,而不是管理员A已有的‘页面权限’。 不知道你听明白没 3.找到原因是因为汉字后台乱码了,我用的tomcat跑的,也许配置一下tomcat就可以了,但是为什么web.xml里面encodingFilter没用? 4.我贴一下整体代码 aos.core.xml 需要新建 cn.osworks.aos.core.annotation.Mapper2 package cn.osworks.aos.core.annotation; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.stereotype.Component; /** * 标识第二数据源Mapper2,方便{@link org.mybatis.spring.mapper.MapperScannerConfigurer}的扫描。 * @author MrZhao * @version 2015-07-08 */ @Retention(RetentionPolicy.RUNTIME) @Target({java.lang.annotation.ElementType.TYPE}) @Documented @Component public @interface Mapper2 { public abstract String value() default ""; } 生成新的Map、XML、Po 新数据源的Map用新的注解 @Mapper2 public interface Sys_userMapper { /** * 插入一个数据持久化对象(插入字段为传入PO实体的非空属性) * <p> 防止DB字段缺省值需要程序中再次赋值 * * @param sys_userPO * 要插入的数据持久化对象 * @return 返回影响行数 */ int insert(Sys_userPO sys_userPO); ..... 最后两种方式测试均通过 Map方式    salDao方式 @ OSWorks-XC ######看明白你想说的意思了。评估后,不需要调整。首先:这个功能是给有root权限的超级用户和有菜单管理权限(被授予了管理权限)的普通管理员使用。其次:这个功能的逻辑是:用户页面元素授权、岗位页面元素授权、角色页面元素授权,可对什么菜单(页面)上的页面元素授权是由当前登录管理员的管理权限(拥有哪些菜单的管理权限)决定不是被操作人员、被操作岗位、被操作角色决定的。######你还是没完完全理解我说得意思,如果被操作人员没有A菜单(页面)的权限,你给他分配A菜单里面的页面元素权限的意义是什么呢?我说的是在给被操作人员授权页面元素权限的时候,左侧树应该是被操作人员已授权的页面菜单权限。 页面元素权限是依托于页面权限的。如果你没有页面权限,还分配什么页面元素权限。你觉得呢?###### 引用来自“AHei”的评论看明白你想说的意思了。评估后,不需要调整。首先:这个功能是给有root权限的超级用户和有菜单管理权限(被授予了管理权限)的普通管理员使用。其次:这个功能的逻辑是:用户页面元素授权、岗位页面元素授权、角色页面元素授权,可对什么菜单(页面)上的页面元素授权是由当前登录管理员的管理权限(拥有哪些菜单的管理权限)决定不是被操作人员、被操作岗位、被操作角色决定的。 回复 @MrZhaoYun : 我知道你说的意思。那样调整需要分别调整用户与授权-角色与授权-岗位与授权的相应功能都得调整。而按现有模式操作不会带来任何问题,该不该给做某个页面下的页面元素和对应的人员-岗位-角色之间的授权操作由操作人员决定(开发人员或者管理人员。)即便他做了不改做的页面元素授权也无任何印象,且可以先做页面元素授权再做页面授权都是可以有效果的。操作人员可以对哪些页面操作并非全部页面而是这个操作人员被授予管理权限的那些页面(root用户的管理权限是全部页面)。这个以后再根据情况看是否需要调整。######好的

kun坤 2020-06-14 07:55:50 0 浏览量 回答数 0

回答

" 1、那个是功能预留接口,尚未实现。 2、没看明白你说的意思。 3、经测试,是正常的。不能再现你的问题。 4、多数据源只需在aos.core.xml再配置一套对应的Dao就行。如下所示: <bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> <property name="url" value="jdbc:sqlserver://localhost:1433;database=aos" /> <property name="username" value="sa" /> <property name="password" value="111111" /> </bean> <bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource2" /> <property name="typeAliasesPackage" value="cn.osworks.aos;com.mycorp.mysystem" /> <property name="mapperLocations" value="classpath:**/*Mapper.xml" /> <property name="configLocation" value="classpath:aos.mybatis.cfg.xml" /> </bean> <bean id="sqlDao2" class="cn.osworks.aos.core.dao.SqlDao"> <property name="sqlSessionFactory" ref="sqlSessionFactory2" /> </bean>###### 1.明白  2.权限分为‘页面权限’和‘页面元素权限’  管理员A  被授权对象B(例如用户、岗位等)  在A给B授权‘页面元素’的时候:左侧树应该是B已有的‘页面权限’,而不是管理员A已有的‘页面权限’。 不知道你听明白没 3.找到原因是因为汉字后台乱码了,我用的tomcat跑的,也许配置一下tomcat就可以了,但是为什么web.xml里面encodingFilter没用? 4.我贴一下整体代码 aos.core.xml 需要新建 cn.osworks.aos.core.annotation.Mapper2 package cn.osworks.aos.core.annotation; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.stereotype.Component; /** * 标识第二数据源Mapper2,方便{@link org.mybatis.spring.mapper.MapperScannerConfigurer}的扫描。 * @author MrZhao * @version 2015-07-08 */ @Retention(RetentionPolicy.RUNTIME) @Target({java.lang.annotation.ElementType.TYPE}) @Documented @Component public @interface Mapper2 { public abstract String value() default ""; } 生成新的Map、XML、Po 新数据源的Map用新的注解 @Mapper2 public interface Sys_userMapper { /** * 插入一个数据持久化对象(插入字段为传入PO实体的非空属性) * <p> 防止DB字段缺省值需要程序中再次赋值 * * @param sys_userPO * 要插入的数据持久化对象 * @return 返回影响行数 */ int insert(Sys_userPO sys_userPO); ..... 最后两种方式测试均通过 Map方式    salDao方式 @ OSWorks-XC ######看明白你想说的意思了。评估后,不需要调整。首先:这个功能是给有root权限的超级用户和有菜单管理权限(被授予了管理权限)的普通管理员使用。其次:这个功能的逻辑是:用户页面元素授权、岗位页面元素授权、角色页面元素授权,可对什么菜单(页面)上的页面元素授权是由当前登录管理员的管理权限(拥有哪些菜单的管理权限)决定不是被操作人员、被操作岗位、被操作角色决定的。######你还是没完完全理解我说得意思,如果被操作人员没有A菜单(页面)的权限,你给他分配A菜单里面的页面元素权限的意义是什么呢?我说的是在给被操作人员授权页面元素权限的时候,左侧树应该是被操作人员已授权的页面菜单权限。 页面元素权限是依托于页面权限的。如果你没有页面权限,还分配什么页面元素权限。你觉得呢?###### 引用来自“AHei”的评论看明白你想说的意思了。评估后,不需要调整。首先:这个功能是给有root权限的超级用户和有菜单管理权限(被授予了管理权限)的普通管理员使用。其次:这个功能的逻辑是:用户页面元素授权、岗位页面元素授权、角色页面元素授权,可对什么菜单(页面)上的页面元素授权是由当前登录管理员的管理权限(拥有哪些菜单的管理权限)决定不是被操作人员、被操作岗位、被操作角色决定的。 回复 @MrZhaoYun : 我知道你说的意思。那样调整需要分别调整用户与授权-角色与授权-岗位与授权的相应功能都得调整。而按现有模式操作不会带来任何问题,该不该给做某个页面下的页面元素和对应的人员-岗位-角色之间的授权操作由操作人员决定(开发人员或者管理人员。)即便他做了不改做的页面元素授权也无任何印象,且可以先做页面元素授权再做页面授权都是可以有效果的。操作人员可以对哪些页面操作并非全部页面而是这个操作人员被授予管理权限的那些页面(root用户的管理权限是全部页面)。这个以后再根据情况看是否需要调整。######好的"

montos 2020-05-31 16:34:51 0 浏览量 回答数 0

回答

你搞错了。。 应该按业务垂直分割包,而不是action-dao-modal这样分割包。。你这么分割会死人的。 比如业务场景叫登录,那么首先是login包,login包下面,再有action包,dao包,modal包。 然后就是业务场景注册,也就是register包下面,再有action包,dao包,modal包平行排列 再具体点是: com.hello.user.action com.hello.user.service com.hello.user.modal com.hell.user.dao ######回复 @Hemi : 只是我举个例子而已嘛。。只是说明结构。真正的系统设计要复杂一点。对于依赖关系的话,最好形成包的单向依赖,真形不成也问题不大。######弱弱的问一句…如果按业务来分的话…假设login业务…放了用户表这个实体以及dao类…那假如别的用业务也用到用户表…这不是相互交叉了嘛……######回复 @notreami : 没什么不可以的,主要看你对系统规模的预估。很小的系统按业务模块分包其实也没必要。如果再大一些的系统可能分的是工程而不是包,甚至可能按服务切分应用。这些都是视情况而定的,无固定法则可循。######这个也是俺目前在用的方式,记得刚毕业那会,也是很傻的根据MVC分层,一个小项目下来,包没几个,问题一个包里几十个文件~~改个文件先要玩次文件名找不同######没啥不对的,就是这样。如果不用ORM ,也不一定是每个表都来一个实体,比如,有些业务是跨表联合查询的,那直接直接是跨表查询后的结果 做一个 值对象类,那么类是数目就少了,######没问题的,刚学的时候都是这么干的,实际应用中还得考虑业务场景,有200张表的系统功能不可能那么单一,那时候就可以按业务再细分了######回复 @Hemi : 那还是业务层面的,可以适当的把公用的抽出来放在公用的包下面######想问一下一个表多个业务用到这怎么处理呢…[54]…

kun坤 2020-05-30 23:22:34 0 浏览量 回答数 0

问题

面向服务的ERP可重构开发模型

hua2012h 2019-12-01 20:13:41 7876 浏览量 回答数 0

回答

Scrapy 使用了 Twisted 异步非阻塞网络库来处理网络通讯,整体架构大致如下(绿线是数据流向): Scrapy主要包括了以下组件: 引擎(Scrapy) 用来处理整个系统的数据流处理, 触发事务(框架核心) 调度器(Scheduler) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址 下载器(Downloader) 用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的) 爬虫(Spiders) 爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面 项目管道(Pipeline) 负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。 下载器中间件(Downloader Middlewares) 介于Scrapy引擎和下载器之间的中间件,主要是处理Scrapy引擎与下载器之间的请求及响应。 爬虫中间件(Spider Middlewares) 介于Scrapy引擎和爬虫之间的中间件,主要工作是处理蜘蛛的响应输入和请求输出。 调度中间件(Scheduler Middewares) 介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。 Scrapy运行流程大概如下: 1.引擎:Hi!Spider, 你要处理哪一个网站? 2.Spider:老大要我处理xxxx.com(初始URL)。 3.引擎:你把第一个需要处理的URL给我吧。 4.Spider:给你,第一个URL是xxxxxxx.com。 5.引擎:Hi!调度器,我这有request请求你帮我排序入队一下。 6.调度器:好的,正在处理你等一下。 7.引擎:Hi!调度器,把你处理好的request请求给我。 8.调度器:给你,这是我处理好的request 9.引擎:Hi!下载器,你按照老大的下载中间件的设置帮我下载一下这个request请求。 10.下载器:好的!给你,这是下载好的东西。(如果失败:sorry,这个request下载失败了。然后引擎告诉调度器,这个request下载失败了,你记录一下,我们待会儿再下载) 11.引擎:Hi!Spider,这是下载好的东西,并且已经按照老大的下载中间件处理过了,你自己处理一下(注意!这儿responses默认是交给def parse()这个函数处理的) 12.Spider:(处理完毕数据之后对于需要跟进的URL),Hi!引擎,我这里有两个结果,这个是我需要跟进的URL,还有这个是我获取到的Item数据。 13.引擎:Hi !管道 我这儿有个item你帮我处理一下!调度器!这是需要跟进URL你帮我处理下。然后从第四步开始循环,直到获取完老大需要全部信息。 14.管道、调度器:好的,现在就做!

珍宝珠 2019-12-02 03:20:36 0 浏览量 回答数 0

回答

1.产品2.UI3.CSS4.JS5.后端(Java/php/python)6.DBA(mysql/oracle)7.运维(OP) 8.测试(QA)9.算法(分类/聚类/关系抽取/实体识别)10.搜索(Lucene/Solr/elasticSearch)11.大数据工程师(Hadoop)12.Android13.IOS14.运营 一.产品1 工作内容:了解用户需求,做竞品调研,画产品原型,写产品文档,讲解产品需求,测试产品Bug,收集用户反馈,苦练金刚罩以防止程序员拿刀砍。2 需要技能:PPT,Word, Axure,XP,MVP,行业知识,沟通。 二. UI1 工作内容:收到产品原型,给原型上色,偶尔会自作主张调整下原型的位置,出不同的风格给老板和客户选,然后听他们的意见给出一个自己极不喜欢的风格,最好给Android,IOS或者是CSS做好标注,还有的需要直接帮他们切好图,最后要练出来象素眼,看看这些不靠谱的程序员们有没有上错色或者是有偏差。2 需要技能:PS,Illustrator,Sketch,耐性,找素材。 三. CSS1 工作内容:产品设计好原型,UI做出来了效果图,剩下的就是CSS工程师用代码把静态文件写出来的。 2 需要技能:环境【IDE(WEBStorm,Sublime,EditPlus),源码管理(SVN/Git) ,WEB服务器(nginx)】基础【PS,域名,Html,Html5,CSS,CSS3】扩展【自适应,响应式,Bootstrap,Less,Flex】 四 .JS 1 工作内容:JS工程师其实分成两类,在之前讲CSS的时候已经提到过,一个是套页面的,一个是前后端分离的。对这两个概念还是分不太清的,可以回过头去看CSS的部分。 2 需要技能:环境【IDE(WEBStorm,Sublime,EditPlus),源码管理(SVN/Git) ,WEB服务器(nginx)】基础【Http,REST,跨域,语法,组件,F12,Json,Websocket】框架【JQuery,AngularJS,Bower,RequireJS,GruntJS,ReactJS,PhoneGap】业务【金融,教育,医疗,汽车,房产等等等等各种行业】 五 .后端(Java/python/go) 1 工作内容:大部分的后端工程师都停留在功能实现的层面上。这是现在国内二流或者是三流的公司的现状,甚至是在某些一流的公司。很多时候都是架构师出了架构设计,更多的外包公司根本就是有DBA来做设计,然后后端程序员从JS到CSS到Java全写,完全就是一个通道,所有的复杂逻辑全部交给DB来做,这也是几年前DBA很受重视的原因。 2 需要技能:环境【IDE(Idea/Eclipse,Maven,jenkins,Nexus,Jetty,Shell,Host),源码管理(SVN/Git) ,WEB服务器(nginx,tomcat,Resin)】基础【Http,REST,跨域,语法,Websocket,数据库,计算机网络,操作系统,算法,数据结构】框架【Spring,AOP,Quartz,Json TagLib,tiles,activeMQ,memcache,redis,mybatis,log4j,junit等等等等等】业务【金融,教育,医疗,汽车,房产等等等等各种行业】。 六 .DBA  1 工作内容:如果你做了一个DBA,基本上会遇到两种情况。一种是你的后端工程师懂架构,知道怎么合便使用DB,知道如何防止穿透DB,那么恭喜你,你只是需要当一个DB技术兜底的顾问就好,基本上没什么活可以做,做个监控,写个统计就好了。你可以花时间在MongoDB了,Hadoop了这些,随便玩玩儿。再按照我之前说的,做好数据备份。如果需求变动比较大,往往会牵涉到一些线上数据的更改,那么就在发布的时候安静的等着,等着他们出问题。。。。如果不出问题就可以回家睡觉了。 2 需要技能:环境【Linux,Mysql,Oracle,MongoDB,Hadoop】工具【各种DB的版本,工具,备份,日志等】。 七. 运维  1 工作内容:运维的工作大概分成几个部分,我对于修真院学习运维的少年们都这么说,大概是:A。基础环境的搭建和常用软件的安装和配置(兼网管的还有各种程控机),常用软件指的是SVN,Git,邮箱这种,更细节的内容请参考修真院对于运维职业的介绍。B。日常的发布和维护,如刚刚讲到的一样,测试环境和线上环境的发布和记录,原则上,对线上所有的变更都应该有记录。C。数据的备份和服务的监控&安全配置。各种数据,都要做好备份和回滚的手段,提前准备好各种紧急预案,服务的监制要做好。安全始终都是不怎么被重点考虑的问题,因为这个东西无底洞,你永远不知道做到什么程度算是比较安全了,所以大多数都是看着情况来。D。运维工具的编写。这一点在大的云服务器商里格外常见,大公司也是一样的。E。Hadoop相关的大数据体系架构的运维,确实有公司在用几百台机器做Hadoop,所以虽然不常见,我还是列出来吧。 2 需要技能:环境【Linux,Mysql,Oracle,MongoDB,Hadoop,nginx,apache,F5,lvs,vpn,iptable,svn,git,memcache,redis】工具【linux 常用工具,Mysql常用工具,Jenkins,zabbix,nagios】自动化运维【openstack,docker,ansible】语言【shell,python】 八 .QA  1 工作内容:QA需要了解需求,很多公司会要求QA写测试用例,我觉得是扯淡。完全是在浪费时间。通常开发三周,QA测试的时间只有一周到一周半。还有关于提前写测试用例的,都不靠谱。 2 需要技能:流程【Bug修复流程,版本发布流程】工具【禅道,BugZilla,Jira,Excel表格来统计Bug数,自动化测试】性格【严谨,耐心】 九. 算法工程师  1 工作内容:算法工程师的工作内容,大部分时间都是在调优。就是调各种参数和语料,寻找特征,验证结果,排除噪音。也会和Hadoop神马的打一些交道,mahout神马的,我那个时候还在用JavaML。现在并不知道有没有什么更好用的工具了。有的时候还要自己去标注语料---当然大部分人都不爱做这个事儿,会找漂亮的小编辑去做。2 需要技能:基础【机器学习,数据挖掘】工具【Mahout,JavaML等其他的算法工具集】 十. 搜索工程师  1 工作内容: 所以搜索现在其实分成两种。一种是传统的搜索。包括:A。抓取 B。解析C。去重D。处理E。索引F。查询另一种是做为架构的搜索。并不包括之前的抓取解析去重,只有索引和查询。A。索引B。查询 2 需要技能:环境【Linux】框架【Luence,Slor,ElasticSearch,Cassandra,MongoDB】算法【倒排索引,权重计算公式,去重算法,Facet搜索的原理,高亮算法,实时索引】 十一. 大数据工程师  1 工作内容:工作内容在前期会比较多一些,基础搭建还是一个挺讲究的事儿。系统搭建好之后呢,大概是两种,一种是向大数据部门提交任务,跑一圈给你。一种是持续的文本信息处理中增加新的处理模块,像我之前说的增加个分类啦,实体识别神马的。好吧第一种其实我也不记得是从哪得来的印象了,我是没有见到过的。架构稳定了之后,大数据部门的工作并不太多,常常会和算法工程师混到一起来。其他的应该就是大数据周边产品的开发工作了。再去解决一些Bug什么的。2 需要技能:环境【Linux】框架【Hadoo,spark,storm,pig,hive,mahout,zookeeper 】算法【mapreduce,hdfs,zookeeper】。 十二. Android工程师  1 工作内容:Android工程师的日常就是听产品经理讲需求,跟后端定接口,听QA反馈哪款机器不兼容,闹着申请各种测试机,以及悲催的用Android做IOS的控件。 2 需要技能:环境【Android Studio,Maven,Gradle】基础【数据结构,Java,计算机网络】组件【IM,地图,支付,拍照,视频,音频,统计,分享,手势密码】 十三. IOS工程师  1 工作内容:IOS工程师的工作内容真的挺简单的,听需求,定接口。做个适配,抛弃一下iphone4。还有啥。。马丹,以我为数不多的IOS知识来讲,真的不知道还有啥了。我知道的比较复杂的系统也是各种背景高斯模糊,各种渐变,各种图片滤镜处理,其他并没有什么。支付,地图,统计这些东西。 嗯。2 需要技能:环境【Xcode】基础【数据结构,Object,计算机网络】组件【IM,地图,支付,拍照,视频,音频,统计,分享,手势密码】

行者武松 2019-12-02 01:21:45 0 浏览量 回答数 0

问题

Android数据库框架-Archiver(LiteOrm)的使用?报错

爱吃鱼的程序员 2020-06-12 14:43:40 2 浏览量 回答数 1

问题

安卓与iOS百问,开发者系统指南

yq传送门 2019-12-01 20:14:48 27317 浏览量 回答数 26

回答

crash之后,jvm打印出来的错误信息是什么,你的demo app运行在什么环境上?######因为是JVM运行时错误,我对JNI不熟,也是需要用到它,最近才开始用。Logcat中没有错误日志,我也不知道该怎么去捕获这个错误信息。(app一启动就崩溃,logcat只提示JVM shutdown)我的app运行环境是华为P8实体机,不是虚拟机。######您好,我已经PO上代码了!######使用Java的char[]来去接受,在java中实现到String的转换。 JNI 没用过,这只是一种可能的方法。###### 样例代码: #include "utils_JniInterface.h" #include <android/log.h> #include <string.h> #include <iostream> #include <sstream> using namespace std; #define TAG "JNI-Log" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__) JNIEXPORT jstring JNICALL Java_utils_JniInterface_constructRGBArrayString (JNIEnv *env, jobject obj, jintArray jArr){ jint *arr = env -> GetIntArrayElements(jArr, 0); int len = env -> GetArrayLength(jArr); std::stringstream result; for(int i = 0; i < len; i++) { result << arr[i]; if(i < len - 1) { result << ','; } } env -> ReleaseIntArrayElements(jArr, arr, 0); return env -> NewStringUTF(result.str().data()); } // int[] a = {1,2,3} ⇒ String b = "1,2,3" 鉴于,如果不能解决std::stringstream崩溃的问题,那希望可以通过JNI解决int到string转换的问题来达到我的需求。不太清楚我的需求的各位,我大致写一下代码的框架: int[] a = {1, 2, 3.....};需要通过转化的整型数组,通过JNI将里面的元素转化为string型;我的想法是这样, JNIEXPORT void JNICALL Java_utils_JniInterface_convertIntToString (JNIEnv *env, jobject obj, jintArray jArr){ jint *arr = env -> GetIntArrayElements(jArr, 0); int len = env -> GetArrayLength(jArr); for(int i = 0; i < len; i++) { //遍历数组并一一就地转换 } env -> ReleaseIntArrayElements(jArr, arr, 0); } ######回复 @frank_123 : 讲道理使用stringstream出问题是不应该的,我在PC机上写过类似代码,运行良好。如果不能解决这个问题,那就使用snprintf这类的函数来做,或者自己另外写一个函数来完成######回复 @GestureWei : 我明白你的意思了!那就不是编译库的问题产生的了,因为除了这个JNI函数之外,我还调用了其他JNI函数,这些函数主要做一些排序和筛选功能,运行完全没有问题!而是一旦牵扯到在JNI中做一些“流操作”,JVM就会崩溃!######首先你这个库的运行环境是手机上的,库编译需要用android ndk提供的工具链,这样出来的库才是能够在手机上运行。如果库不匹配或者找不到库,都会报出UnsatisfiedLinkError,而不是你这个jvm直接crash,所以还需要排查,你可以先写一个简单的求和函数,看看是否有问题######回复 @GestureWei : 不太明白!具体是什么意思?我搜过一些资料有说是Mac调用C++库很怪异的原因产生的,也有说是系统类型armv7,x86 64/32位等等不同产生的。您说的armv7库具体是指什么呢?我该怎么排查?######放在Android上跑应该也不会出现问题,这时候看看你的库是否是正确的编译的armv7库?###### itos 可以吗?

kun坤 2020-06-08 11:14:40 0 浏览量 回答数 0

回答

crash之后,jvm打印出来的错误信息是什么,你的demo app运行在什么环境上?######因为是JVM运行时错误,我对JNI不熟,也是需要用到它,最近才开始用。Logcat中没有错误日志,我也不知道该怎么去捕获这个错误信息。(app一启动就崩溃,logcat只提示JVM shutdown)我的app运行环境是华为P8实体机,不是虚拟机。######您好,我已经PO上代码了!######使用Java的char[]来去接受,在java中实现到String的转换。 JNI 没用过,这只是一种可能的方法。###### 样例代码: #include "utils_JniInterface.h" #include <android/log.h> #include <string.h> #include <iostream> #include <sstream> using namespace std; #define TAG "JNI-Log" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__) JNIEXPORT jstring JNICALL Java_utils_JniInterface_constructRGBArrayString (JNIEnv *env, jobject obj, jintArray jArr){ jint *arr = env -> GetIntArrayElements(jArr, 0); int len = env -> GetArrayLength(jArr); std::stringstream result; for(int i = 0; i < len; i++) { result << arr[i]; if(i < len - 1) { result << ','; } } env -> ReleaseIntArrayElements(jArr, arr, 0); return env -> NewStringUTF(result.str().data()); } // int[] a = {1,2,3} ⇒ String b = "1,2,3" 鉴于,如果不能解决std::stringstream崩溃的问题,那希望可以通过JNI解决int到string转换的问题来达到我的需求。不太清楚我的需求的各位,我大致写一下代码的框架: int[] a = {1, 2, 3.....};需要通过转化的整型数组,通过JNI将里面的元素转化为string型;我的想法是这样, JNIEXPORT void JNICALL Java_utils_JniInterface_convertIntToString (JNIEnv *env, jobject obj, jintArray jArr){ jint *arr = env -> GetIntArrayElements(jArr, 0); int len = env -> GetArrayLength(jArr); for(int i = 0; i < len; i++) { //遍历数组并一一就地转换 } env -> ReleaseIntArrayElements(jArr, arr, 0); } ######回复 @frank_123 : 讲道理使用stringstream出问题是不应该的,我在PC机上写过类似代码,运行良好。如果不能解决这个问题,那就使用snprintf这类的函数来做,或者自己另外写一个函数来完成######回复 @GestureWei : 我明白你的意思了!那就不是编译库的问题产生的了,因为除了这个JNI函数之外,我还调用了其他JNI函数,这些函数主要做一些排序和筛选功能,运行完全没有问题!而是一旦牵扯到在JNI中做一些“流操作”,JVM就会崩溃!######首先你这个库的运行环境是手机上的,库编译需要用android ndk提供的工具链,这样出来的库才是能够在手机上运行。如果库不匹配或者找不到库,都会报出UnsatisfiedLinkError,而不是你这个jvm直接crash,所以还需要排查,你可以先写一个简单的求和函数,看看是否有问题######回复 @GestureWei : 不太明白!具体是什么意思?我搜过一些资料有说是Mac调用C++库很怪异的原因产生的,也有说是系统类型armv7,x86 64/32位等等不同产生的。您说的armv7库具体是指什么呢?我该怎么排查?######放在Android上跑应该也不会出现问题,这时候看看你的库是否是正确的编译的armv7库?###### itos 可以吗?

montos 2020-06-01 09:47:35 0 浏览量 回答数 0

回答

" crash之后,jvm打印出来的错误信息是什么,你的demo app运行在什么环境上?######因为是JVM运行时错误,我对JNI不熟,也是需要用到它,最近才开始用。Logcat中没有错误日志,我也不知道该怎么去捕获这个错误信息。(app一启动就崩溃,logcat只提示JVM shutdown)我的app运行环境是华为P8实体机,不是虚拟机。######您好,我已经PO上代码了!######使用Java的char[]来去接受,在java中实现到String的转换。 JNI 没用过,这只是一种可能的方法。###### 样例代码: #include "utils_JniInterface.h" #include <android/log.h> #include <string.h> #include <iostream> #include <sstream> using namespace std; #define TAG "JNI-Log" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, VA_ARGS) JNIEXPORT jstring JNICALL Java_utils_JniInterface_constructRGBArrayString (JNIEnv *env, jobject obj, jintArray jArr){ jint *arr = env -> GetIntArrayElements(jArr, 0); int len = env -> GetArrayLength(jArr); std::stringstream result; for(int i = 0; i < len; i++) { result << arr[i]; if(i < len - 1) { result << ','; } } env -> ReleaseIntArrayElements(jArr, arr, 0); return env -> NewStringUTF(result.str().data()); } // int[] a = {1,2,3} ⇒ String b = "1,2,3" 鉴于,如果不能解决std::stringstream崩溃的问题,那希望可以通过JNI解决int到string转换的问题来达到我的需求。不太清楚我的需求的各位,我大致写一下代码的框架: int[] a = {1, 2, 3.....};需要通过转化的整型数组,通过JNI将里面的元素转化为string型;我的想法是这样, JNIEXPORT void JNICALL Java_utils_JniInterface_convertIntToString (JNIEnv *env, jobject obj, jintArray jArr){ jint *arr = env -> GetIntArrayElements(jArr, 0); int len = env -> GetArrayLength(jArr); for(int i = 0; i < len; i++) { //遍历数组并一一就地转换 } env -> ReleaseIntArrayElements(jArr, arr, 0); } ######回复 @frank_123 : 讲道理使用stringstream出问题是不应该的,我在PC机上写过类似代码,运行良好。如果不能解决这个问题,那就使用snprintf这类的函数来做,或者自己另外写一个函数来完成######回复 @GestureWei : 我明白你的意思了!那就不是编译库的问题产生的了,因为除了这个JNI函数之外,我还调用了其他JNI函数,这些函数主要做一些排序和筛选功能,运行完全没有问题!而是一旦牵扯到在JNI中做一些“流操作”,JVM就会崩溃!######首先你这个库的运行环境是手机上的,库编译需要用android ndk提供的工具链,这样出来的库才是能够在手机上运行。如果库不匹配或者找不到库,都会报出UnsatisfiedLinkError,而不是你这个jvm直接crash,所以还需要排查,你可以先写一个简单的求和函数,看看是否有问题######回复 @GestureWei : 不太明白!具体是什么意思?我搜过一些资料有说是Mac调用C++库很怪异的原因产生的,也有说是系统类型armv7,x86 64/32位等等不同产生的。您说的armv7库具体是指什么呢?我该怎么排查?######放在Android上跑应该也不会出现问题,这时候看看你的库是否是正确的编译的armv7库?###### itos 可以吗?"

montos 2020-05-31 13:03:28 0 浏览量 回答数 0

回答

转自:阿里云官网 — 知乎 写好代码,阿里专家沉淀了一套“如何写复杂业务代码”的方法论,在此分享给大家,相信同样的方法论可以复制到大部分复杂业务场景。 一文教会你如何写复杂业务代码 了解我的人都知道,我一直在致力于应用架构和代码复杂度的治理。 这两天在看零售通商品域的代码。面对零售通如此复杂的业务场景,如何在架构和代码层面进行应对,是一个新课题。针对该命题,我进行了比较细致的思考和研究。结合实际的业务场景,我沉淀了一套“如何写复杂业务代码”的方法论,在此分享给大家。 我相信,同样的方法论可以复制到大部分复杂业务场景。 一个复杂业务的处理过程 业务背景 简单的介绍下业务背景,零售通是给线下小店供货的B2B模式,我们希望通过数字化重构传统供应链渠道,提升供应链效率,为新零售助力。阿里在中间是一个平台角色,提供的是Bsbc中的service的功能。 在商品域,运营会操作一个“上架”动作,上架之后,商品就能在零售通上面对小店进行销售了。是零售通业务非常关键的业务操作之一,因此涉及很多的数据校验和关联操作。 针对上架,一个简化的业务流程如下所示: 过程分解 像这么复杂的业务,我想应该没有人会写在一个service方法中吧。一个类解决不了,那就分治吧。 说实话,能想到分而治之的工程师,已经做的不错了,至少比没有分治思维要好很多。我也见过复杂程度相当的业务,连分解都没有,就是一堆方法和类的堆砌。 不过,这里存在一个问题:即很多同学过度的依赖工具或是辅助手段来实现分解。比如在我们的商品域中,类似的分解手段至少有3套以上,有自制的流程引擎,有依赖于数据库配置的流程处理: 本质上来讲,这些辅助手段做的都是一个pipeline的处理流程,没有其它。因此,我建议此处最好保持KISS(Keep It Simple and Stupid),即最好是什么工具都不要用,次之是用一个极简的Pipeline模式,最差是使用像流程引擎这样的重方法。 除非你的应用有极强的流程可视化和编排的诉求,否则我非常不推荐使用流程引擎等工具。第一,它会引入额外的复杂度,特别是那些需要持久化状态的流程引擎;第二,它会割裂代码,导致阅读代码的不顺畅。大胆断言一下,全天下估计80%对流程引擎的使用都是得不偿失的。 回到商品上架的问题,这里问题核心是工具吗?是设计模式带来的代码灵活性吗?显然不是,问题的核心应该是如何分解问题和抽象问题,知道金字塔原理的应该知道,此处,我们可以使用结构化分解将问题解构成一个有层级的金字塔结构: 按照这种分解写的代码,就像一本书,目录和内容清晰明了。以商品上架为例,程序的入口是一个上架命令(OnSaleCommand), 它由三个阶段(Phase)组成。 @Command public class OnSaleNormalItemCmdExe { @Resource private OnSaleContextInitPhase onSaleContextInitPhase; @Resource private OnSaleDataCheckPhase onSaleDataCheckPhase; @Resource private OnSaleProcessPhase onSaleProcessPhase; @Override public Response execute(OnSaleNormalItemCmd cmd) { OnSaleContext onSaleContext = init(cmd); checkData(onSaleContext); process(onSaleContext); return Response.buildSuccess(); } private OnSaleContext init(OnSaleNormalItemCmd cmd) { return onSaleContextInitPhase.init(cmd); } private void checkData(OnSaleContext onSaleContext) { onSaleDataCheckPhase.check(onSaleContext); } private void process(OnSaleContext onSaleContext) { onSaleProcessPhase.process(onSaleContext); } } 每个Phase又可以拆解成多个步骤(Step),以OnSaleProcessPhase为例,它是由一系列Step组成的: @Phase public class OnSaleProcessPhase { @Resource private PublishOfferStep publishOfferStep; @Resource private BackOfferBindStep backOfferBindStep; //省略其它step public void process(OnSaleContext onSaleContext){ SupplierItem supplierItem = onSaleContext.getSupplierItem(); // 生成OfferGroupNo generateOfferGroupNo(supplierItem); // 发布商品 publishOffer(supplierItem); // 前后端库存绑定 backoffer域 bindBackOfferStock(supplierItem); // 同步库存路由 backoffer域 syncStockRoute(supplierItem); // 设置虚拟商品拓展字段 setVirtualProductExtension(supplierItem); // 发货保障打标 offer域 markSendProtection(supplierItem); // 记录变更内容ChangeDetail recordChangeDetail(supplierItem); // 同步供货价到BackOffer syncSupplyPriceToBackOffer(supplierItem); // 如果是组合商品打标,写扩展信息 setCombineProductExtension(supplierItem); // 去售罄标 removeSellOutTag(offerId); // 发送领域事件 fireDomainEvent(supplierItem); // 关闭关联的待办事项 closeIssues(supplierItem); } } 看到了吗,这就是商品上架这个复杂业务的业务流程。需要流程引擎吗?不需要,需要设计模式支撑吗?也不需要。对于这种业务流程的表达,简单朴素的组合方法模式(Composed Method)是再合适不过的了。 因此,在做过程分解的时候,我建议工程师不要把太多精力放在工具上,放在设计模式带来的灵活性上。而是应该多花时间在对问题分析,结构化分解,最后通过合理的抽象,形成合适的阶段(Phase)和步骤(Step)上。 过程分解后的两个问题的确,使用过程分解之后的代码,已经比以前的代码更清晰、更容易维护了。不过,还有两个问题值得我们去关注一下: 1、领域知识被割裂肢解什么叫被肢解? 因为我们到目前为止做的都是过程化拆解,导致没有一个聚合领域知识的地方。每个Use Case的代码只关心自己的处理流程,知识没有沉淀。相同的业务逻辑会在多个Use Case中被重复实现,导致代码重复度高,即使有复用,最多也就是抽取一个util,代码对业务语义的表达能力很弱,从而影响代码的可读性和可理解性。 2、代码的业务表达能力缺失 试想下,在过程式的代码中,所做的事情无外乎就是取数据--做计算--存数据,在这种情况下,要如何通过代码显性化的表达我们的业务呢? 说实话,很难做到,因为我们缺失了模型,以及模型之间的关系。脱离模型的业务表达,是缺少韵律和灵魂的。 举个例子,在上架过程中,有一个校验是检查库存的,其中对于组合品(CombineBackOffer)其库存的处理会和普通品不一样。原来的代码是这么写的: boolean isCombineProduct = supplierItem.getSign().isCombProductQuote(); // supplier.usc warehouse needn't check if (WarehouseTypeEnum.isAliWarehouse(supplierItem.getWarehouseType())) { // quote warehosue check if (CollectionUtil.isEmpty(supplierItem.getWarehouseIdList()) && !isCombineProduct) { throw ExceptionFactory.makeFault(ServiceExceptionCode.SYSTEM_ERROR, "亲,不能发布Offer,请联系仓配运营人员,建立品仓关系!"); } // inventory amount check Long sellableAmount = 0L; if (!isCombineProduct) { sellableAmount = normalBiz.acquireSellableAmount(supplierItem.getBackOfferId(), supplierItem.getWarehouseIdList()); } else { //组套商品 OfferModel backOffer = backOfferQueryService.getBackOffer(supplierItem.getBackOfferId()); if (backOffer != null) { sellableAmount = backOffer.getOffer().getTradeModel().getTradeCondition().getAmountOnSale(); } } if (sellableAmount < 1) { throw ExceptionFactory.makeFault(ServiceExceptionCode.SYSTEM_ERROR, "亲,实仓库存必须大于0才能发布,请确认已补货.\r[id:" + supplierItem.getId() + "]"); } } 然而,如果我们在系统中引入领域模型之后,其代码会简化为如下: if(backOffer.isCloudWarehouse()){ return; } if (backOffer.isNonInWarehouse()){ throw new BizException("亲,不能发布Offer,请联系仓配运营人员,建立品仓关系!"); } if (backOffer.getStockAmount() < 1){ throw new BizException("亲,实仓库存必须大于0才能发布,请确认已补货.\r[id:" + backOffer.getSupplierItem().getCspuCode() + "]"); } 有没有发现,使用模型的表达要清晰易懂很多,而且也不需要做关于组合品的判断了,因为我们在系统中引入了更加贴近现实的对象模型(CombineBackOffer继承BackOffer),通过对象的多态可以消除我们代码中的大部分的if-else。 过程分解+对象模型 通过上面的案例,我们可以看到有过程分解要好于没有分解,过程分解+对象模型要好于仅仅是过程分解。对于商品上架这个case,如果采用过程分解+对象模型的方式,最终我们会得到一个如下的系统结构: 写复杂业务的方法论 通过上面案例的讲解,我想说,我已经交代了复杂业务代码要怎么写:即自上而下的结构化分解+自下而上的面向对象分析。 接下来,让我们把上面的案例进行进一步的提炼,形成一个可落地的方法论,从而可以泛化到更多的复杂业务场景。 上下结合 所谓上下结合,是指我们要结合自上而下的过程分解和自下而上的对象建模,螺旋式的构建我们的应用系统。这是一个动态的过程,两个步骤可以交替进行、也可以同时进行。这两个步骤是相辅相成的,上面的分析可以帮助我们更好的理清模型之间的关系,而下面的模型表达可以提升我们代码的复用度和业务语义表达能力。其过程如下图所示: 使用这种上下结合的方式,我们就有可能在面对任何复杂的业务场景,都能写出干净整洁、易维护的代码。 能力下沉 一般来说实践DDD有两个过程: 1. 套概念阶段 了解了一些DDD的概念,然后在代码中“使用”Aggregation Root,Bonded Context,Repository等等这些概念。更进一步,也会使用一定的分层策略。然而这种做法一般对复杂度的治理并没有多大作用。 2. 融会贯通阶段 术语已经不再重要,理解DDD的本质是统一语言、边界划分和面向对象分析的方法。 大体上而言,我大概是在1.7的阶段,因为有一个问题一直在困扰我,就是哪些能力应该放在Domain层,是不是按照传统的做法,将所有的业务都收拢到Domain上,这样做合理吗?说实话,这个问题我一直没有想清楚。 因为在现实业务中,很多的功能都是用例特有的(Use case specific)的,如果“盲目”的使用Domain收拢业务并不见得能带来多大的益处。相反,这种收拢会导致Domain层的膨胀过厚,不够纯粹,反而会影响复用性和表达能力。 鉴于此,我最近的思考是我们应该采用能力下沉的策略。 所谓的能力下沉,是指我们不强求一次就能设计出Domain的能力,也不需要强制要求把所有的业务功能都放到Domain层,而是采用实用主义的态度,即只对那些需要在多个场景中需要被复用的能力进行抽象下沉,而不需要复用的,就暂时放在App层的Use Case里就好了。 注:Use Case是《架构整洁之道》里面的术语,简单理解就是响应一个Request的处理过程 通过实践,我发现这种循序渐进的能力下沉策略,应该是一种更符合实际、更敏捷的方法。因为我们承认模型不是一次性设计出来的,而是迭代演化出来的。 下沉的过程如下图所示,假设两个use case中,我们发现uc1的step3和uc2的step1有类似的功能,我们就可以考虑让其下沉到Domain层,从而增加代码的复用性。 指导下沉有两个关键指标:代码的复用性和内聚性。 复用性是告诉我们When(什么时候该下沉了),即有重复代码的时候。 内聚性是告诉我们How(要下沉到哪里),功能有没有内聚到恰当的实体上,有没有放到合适的层次上(因为Domain层的能力也是有两个层次的,一个是Domain Service这是相对比较粗的粒度,另一个是Domain的Model这个是最细粒度的复用)。 比如,在我们的商品域,经常需要判断一个商品是不是最小单位,是不是中包商品。像这种能力就非常有必要直接挂载在Model上。 public class CSPU { private String code; private String baseCode; //省略其它属性 /** * 单品是否为最小单位。 * */ public boolean isMinimumUnit(){ return StringUtils.equals(code, baseCode); } /** * 针对中包的特殊处理 * */ public boolean isMidPackage(){ return StringUtils.equals(code, midPackageCode); } } 之前,因为老系统中没有领域模型,没有CSPU这个实体。你会发现像判断单品是否为最小单位的逻辑是以StringUtils.equals(code, baseCode)的形式散落在代码的各个角落。这种代码的可理解性是可想而知的,至少我在第一眼看到这个代码的时候,是完全不知道什么意思。 业务技术要怎么做 写到这里,我想顺便回答一下很多业务技术同学的困惑,也是我之前的困惑:即业务技术到底是在做业务,还是做技术?业务技术的技术性体现在哪里? 通过上面的案例,我们可以看到业务所面临的复杂性并不亚于底层技术,要想写好业务代码也不是一件容易的事情。 业务技术和底层技术人员唯一的区别是他们所面临的问题域不一样。业务技术面对的问题域变化更多、面对的人更加庞杂。而底层技术面对的问题域更加稳定、但对技术的要求更加深。比如,如果你需要去开发Pandora,你就要对Classloader有更加深入的了解才行。 但是,不管是业务技术还是底层技术人员,有一些思维和能力都是共通的。比如,分解问题的能力,抽象思维,结构化思维等等。 用我的话说就是:“做不好业务开发的,也做不好技术底层开发,反之亦然。业务开发一点都不简单,只是我们很多人把它做“简单”了因此,如果从变化的角度来看,业务技术的难度一点不逊色于底层技术,其面临的挑战甚至更大。 因此,我想对广大的从事业务技术开发的同学说:沉下心来,夯实自己的基础技术能力、OO能力、建模能力... 不断提升抽象思维、结构化思维、思辨思维... 持续学习精进,写好代码。我们可以在业务技术岗做的很”技术“!。

茶什i 2020-01-10 11:53:44 0 浏览量 回答数 0

回答

在JavaScript范围内的基本层次上,对象的属性是更为复杂的实体。您可以使用setters / getters创建具有不同可枚举性,可写性和可配置性的属性。数组中的项目无法通过这种方式进行自定义:它存在或不存在。在底层引擎级别,这可以在组织表示结构的内存方面进行更多优化。 在从对象(字典)中识别数组方面,JS引擎始终在两者之间做出明确的区分。这就是为什么有很多文章尝试创建类似半伪数组的对象的方法,这些对象的行为类似于一个但允许其他功能。甚至存在这种分离的原因是因为JS引擎本身将两者存储的方式不同。 属性可以存储在数组对象上,但这仅说明了JavaScript如何坚持将所有内容制作为对象。数组中的索引值与您决定在代表基础数组数据的数组对象上设置的所有属性的存储方式不同。 每当您使用合法的数组对象并使用处理该数组的标准方法之一时,您都将访问基础数组数据。特别是在V8中,这些基本上与C ++数组相同,因此将应用这些规则。如果由于某种原因您正在使用一个引擎无法确定其是否为数组的数组,那么您将处于更加不稳定的境地。在最新版本的V8中,还有更多的工作空间。例如,可以创建一个以Array.prototype作为原型的类,并且仍然可以有效地访问各种本机数组操作方法。但这是最近的变化。 指向最近对数组操作所做的更改的特定链接可能会派上用场: http://code.google.com/p/v8/source/detail?r=10024 http://code.google.com/p/v8/source/detail?r=9849 http://code.google.com/p/v8/source/detail?r=9747 另外,这里是直接从V8来源获取的Array Pop和Array Push,它们均在JS本身中实现: function ArrayPop() { if (IS_NULL_OR_UNDEFINED(this) && !IS_UNDETECTABLE(this)) { throw MakeTypeError("called_on_null_or_undefined", ["Array.prototype.pop"]); } var n = TO_UINT32(this.length); if (n == 0) { this.length = n; return; } n--; var value = this[n]; this.length = n; delete this[n]; return value; } function ArrayPush() { if (IS_NULL_OR_UNDEFINED(this) && !IS_UNDETECTABLE(this)) { throw MakeTypeError("called_on_null_or_undefined", ["Array.prototype.push"]); } var n = TO_UINT32(this.length); var m = %_ArgumentsLength(); for (var i = 0; i < m; i++) { this[i+n] = %_Arguments(i); } this.length = n + m; return this.length; }

保持可爱mmm 2020-02-08 11:02:22 0 浏览量 回答数 0

回答

哪位什么不去下载个贪吃蛇源码研究下,然后自己重写? 那为什么不去学习shell? 那为什么不打起精神? 那为什么不去从最基础教材的看起,推导公式什么的学起? 其实我也是菜鸟,刚接触linux和ruby,但是要去迈开那一步,才会看到前方的路。 评论 (2) 引用此回贴 举报 Zoker Zoker 2014/01/18 22:23 回复 @fzfreeguy : 楼下说的对,就是没有目标,我做毕设的时候,只是了解PHP,最基本的语法还得看手册,然后一周不到的时间,写出来了个多博客系统,把你的帽子扔到墙对面去吧! 回复 举报 fzfreeguy fzfreeguy 2014/01/18 22:18 当然想!!!成品一个小软件对我来说这可是一个瓶颈啊!感觉博客什么的能够让我有点存在感,或许会让我打起精神搞个成品出来。不然身边本身没有对软件有共同话题的人的互相督促,很蛋疼+无聊的 回复 举报 0 BlueStragglers BlueStragglers 2014/01/18 22:19 没有目标而已 评论 (2) 引用此回贴 举报 BlueStragglers BlueStragglers 2014/01/18 22:25 这两项都不是等来了,立刻行动吧 回复 举报 fzfreeguy fzfreeguy 2014/01/18 22:21 没有目标+身边没有实体同类 回复 举报 0 elson1024 elson1024 2014/01/19 00:28 别那么浮躁嘛,慢慢来,一定要慢,把数据结构,算法,C,JAVA,这些东西基础都融会贯通,其实就是把基础打扎实这样就可以了,成品啥得都是浮云,基础扎实才能运筹帷幄,决胜于千里之外,很多公司看中得就是你有没有培养的潜力,有计算机协会啥的,加入进去,妹子泡不到,交上基友或许会帮助你一辈子, 评论 (0) 引用此回贴 举报 0 Undeadway Undeadway 2014/01/19 00:42 第一步:把电脑的网络给断了,手机、IPAD之类的封箱了; 第二步:打开 IDE ,然后按F6(或者别的单步调试快捷键),直到把F6按坏掉; 第三步:找个地方(比如OSC)提交你按坏掉 F6 之后的成果, 接受大家的批判。 评论 (0) 引用此回贴 举报 0 兰穆达 兰穆达 2014/01/19 08:32 我和楼主比较类似,前期涉猎很广,只要看到技术就想瞄一眼。 好处是知识面广,懂各种时髦词汇,不过在知识储备完备之后,就应该朝着某一个方向进行深入研究。 我建议动态语言优先选择python,osc有各种代码片段,写一些小的脚本练手,在有一定的手感之后,git一个大项目的源码,尝试自己修改功能。 评论 (0) 引用此回贴 举报 0 caoglish 2014/01/19 09:59 要学好编程,关键不能把兴趣掐没了。至于没有成品,没有关系。进入公司和,领导自然会给你你一个目标的。然后根据他的目标,你编出产品来就行了。 你现在才大一,没有必要一定要搞什么所谓成品。要是要体会编程带来的乐趣和成就感,这样才可以保持你对电脑一直以来的兴趣。 我的学习经验是,图形编程是最容易带来成就感的,因为结果是极度可视化的,你可以观察到你编程的结果,一点小变化就能带来很大的满足感。 学习javascript,现在javascript可以直接在浏览器里面进行2D和3D的图形编程。如果是图形库的话,可以看看three.js(3d图形处理),d3.js, process.js, rapheal.js(2d).或者最简单的,学习jQuery,利用css和动画Api作出一些绚丽图形动画效果。这样也能带来很大的成就感 评论 (0) 引用此回贴 举报 0 jeffsui jeffsui 2014/01/19 10:12 关键是兴趣主导,如果你就是想从事这方面的工作,还是给底子打牢了再说。 评论 (0) 引用此回贴 举报 0 Timco Timco 2014/01/19 13:14 Android 感觉不论前面的经历,还是后头的编程,都是非常非常基础。保持足够的好奇心,学习更深入的知识。尝试阅读成品的源码吧。 评论 (0) 引用此回贴 举报 0 Yashin Yashin 2014/01/21 00:04 楼上说的都对,成品从改开始,核心竞争力: 数据结构,算法,软件工程 评论 (0) 引用此回贴 举报 0 林尘 林尘 2014/01/21 07:33 Android 不要浮躁,把基础学好才是最重要的。

kun坤 2020-06-11 16:55:12 0 浏览量 回答数 0

问题

【Java学习全家桶】1460道Java热门问题,阿里百位技术专家答疑解惑

管理贝贝 2019-12-01 20:07:15 27612 浏览量 回答数 19

回答

我和楼主刚好相反,学完技术,接触了很多行业,反而各种创意和市场思维频出。######你们没看出来么,楼主和我见过那种画大饼的人很相似,楼主意思是你们程序猿管技术就好了,肯定产品不会想的,大家合作合作怎么样?我设计,我想,才能做出好产品。真不明白那种画大饼的人,连自身的素养都不是很高,然后又不尊重团队,合作,都得听他的。又不是很懂市场,其实大家都是猪,不止你是,但你真的比我们更知道风往哪边吹么?不然!######回复 @凯旋1985 : 关键是接触的行业多了,想法就自然来了。 闷头编程真心很难出金点子。 顶多就是各种造轮子想法而已。######咱们两个情况类似,我也是技术出身,现在自己创业,虽然不是技术行业,但是基于丰富的技术基础通常能想到一起其他同行想不到的创意引导行业潮流,搞几年编程真的挺锻炼大脑的!######12月的万事具备, 只差一个....######却发现之前的某段代码执行速度慢了0.0001毫秒,而重新写过。 没那么高端 ,只讲功能,不讲情怀,呵呵######回复 @悦亮工作室 : 你说的很对,我们现在也一直在考虑后面怎么防止被别人模仿、超越,唯一的办法就是快。虽然有找一个百度的程序员愿意接外包做,但是他只能利用业余时间,这样进度无法把控。而且我们需要不断的去迭代。所以必须是长期稳定的人来做,这样就只能是给期权的合伙人。######回复 @秋思童 : 个人感觉互联网项目要的就是快,谁快谁就先占领市场。假设一个功能精雕细琢之后再上线,你会发现市场上充斥着类似的产品,但这些产品就一定好吗,其实则不然,所以无论做什么,都要先做出一个版本来占领地盘,栓得住用户,才有发言权,所以我说,不讲情怀,只说功能。######回复 @悦亮工作室 : 0.0001毫秒是我瞎写的,我一个程序外行。毫秒跟秒的换算的不是太懂~~~######@哈库纳 哈哈 我也在研究是怎么发现的######0.0001 怎么发现的?######0.0001毫秒 = 0.1us,你拿汇编写程序? ###### 你们都已经盈利7年了,目前的产品是用什么技术做的?就在原有的基础上继续迭代啊。能否知道你们项目的名字呢?网站地址?希望拜访一下,学习学习。 我没有认识有开发人员去追求0.0001毫秒差距的,或者有能力去追求这个差异的。毕竟0.1us这个速度的差异太惊人。我想知道你的工程师是怎么控制这个差异的。 ######回复 @秋思童 : 希望能拜访一下你们盈利七年的项目。给个地址看看么。######回复 @klyou :用词不当,用我们设计思维来看,这叫夸张手法。不管怎么样,这样的夸张手法引起了关注,在宣传上就是有效果。我确实不懂程序,所以很明显0.00001毫秒也就是瞎写的。我一个程序外行跑程序员堆里去谈技术,你觉得我会有装逼的心态?只要有点智商,你会跑冠希哥面前去说你摄影技术好吗?######装逼而已 你还当真 一个设计懂个毛######进程调度,加上io阻塞,每次测量都会有很大的波动吧,这种精度的差异根本不可能测出来的######是的。以前学编程完全是兴趣 ######LZ 自认为很NB的设计和想法,也许在开发那就是垃圾,只是因为挣钱不和你们一般见识而已,等你懂技术了,就知道当初自己的想法有多操蛋了,也就是你自己感觉7年的设计经验还好而已###### 引用来自“Tuesday”的评论12月的万事具备, 只差一个.... 虽然昨天才进的开源中国,但是很多社区内关于创业,招聘,技术合伙人被坑的帖我都有浏览。 之所以很多人创业会说“出万事俱备只差一个程序员”,是因为技术是从想法到产品的第一步。而美工、运营、推广的入职门槛不是那么高,边学边实战也慢慢能行,只是可能做得很垃圾。技术没法短时间内速成,水平达不到的话,连垃圾都做不出。 另外创业本身就是高风险获取高回报的事,不可能有所谓的万事俱备。引进合伙人的目的并不完全是为了省钱,更多的是找到有共同目标,共同梦想的伙伴,只有这样在遇到各种挫折的时候,才坚持下去。如果只是拿工资,有困难的立马换个工作,这样怎么可能成功。 ###### 引用来自“Ocelot”的评论在线教育产品,不需要自己开发,可以使用成熟的开源产品Examstack http://www.examstack.com 已经在开源中国发布源代码 谢谢,不过我们要开发的产品不是那种通用,甚至是市场同行没有过的,所以必须找人开发。######回复 @秋思童 : 怎么改,可以私下聊一聊。我以前也在教育机构呆过。######回复 @哈库纳 : 嗯,以前大部分还是实体培训,我们做在线的。算是一种特色,但是现在越来越多人做在线的。所以我们需要改变原有的模式。######是的,创业公司一开始一定是与众不同的。 打造特色。除非能影响整个行业,否则通用产品就是个 “翔”######我想开发个XXX,就差一个程序员了,速来###### 应该是想法更多吧

kun坤 2020-06-08 18:00:53 0 浏览量 回答数 0

问题

福布斯:云计算推动传统CIO职能转型

lindadli 2019-12-01 20:02:51 10813 浏览量 回答数 0

回答

数据库课程设计 “数据库课程设计”是数据库系统及应用课程的后续实验课,是进一步巩固学生的数据库知识,加强学生的实际动手能力和提高学生综合素质。 一、 课程设计目的 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。课程设计的目的: 1. 加深对数据库原理、程序设计语言的理论知识的理解和应用水平; 2. 在理论和实验教学基础上进一步巩固已学基本理论及应用知识并加以综合提高; 3. 学会将知识应用于实际的方法,提高分析和解决问题的能力,增强动手能力; 4. 为毕业设计和以后工作打下必要基础。 二、课程设计要求 运用数据库原理的基本理论与应用知识,在微机RDBMS(SQL Server)的环境上建立一个数据库应用系统。要求把现实世界的事物及事物之间的复杂关系抽象为信息世界的实体及实体之间联系的信息模型,再转换为机器世界的数据模型和数据文件,并对数据文件实施检索、更新和控制等操作。 1. 用E-R图设计选定题目的信息模型; 2. 设计相应的关系模型,确定数据库结构; 3. 分析关系模式各属于第几范式,阐明理由; 4. 设计应用系统的系统结构图,确定系统功能; 5. 通过设计关系的主码约束、外码约束和使用CHECK实现完整性控制; 6. 为参照关系设计插入、删除、修改触发器; 7. 实现应用程序设计、编程、优化功能; 8. 对系统的各个应用程序进行集成和调试,进一步优化系统功能、改善系统用户界面完成实验内容所指定的各项要求; 9. 分析遇到的问题,总结并写出课程设计报告; 10. 自我评价 三、实验环境 开发环境VC++、C#、ASP或JAVA;ODBC/JDBC;数据库SQL Server 四、上机实现内容 1. 创建数据库的结构 2. 创建各基本表的结构 3. 编制系统各功能模块,完成数据的管理(增、删、改)及统计查询。对于程序运行界面不做考核的重点。 五、课程设计考核 1.对学生到实验室的情况进行不定时统计; 2.出勤率+课程设计报告+课程设计所开发的应用系统+其他(上机抽查和提问)=综合评定成绩。 3.课程设计结束时请将下列资料上交: (1) 课程设计报告; (2) 所开发的应用系统的源程序、安装和使用说明; (3) 将(1)(2)中的资料压缩成一个压缩包,压缩包文件的命名规则:班级+学号(末2位)+姓名(例如:计科090101王鹏晓); (4) 班长将本班每人的(3)中的压缩包刻录成光盘连同打印的课程设计报告收齐,交给任课教师。 附录﹑课程设计题目 题目1:课程设计选题管理系统(1,24) 包括三大模块:  课程设计题目维护与查询:题目的添加、修改和删除;按题目类型、名称和关键字查询以及已选与未选题目的查询;  学生信息维护与查询;  学生选题维护与管理:学生选题及查询; 具体功能细化:  前台学生选题:学生上网登录系统进行选题;  前台教师出题:  教师添加、修改和删除题目;  教师确认学生的选题;  后台管理出题和选题  添加用户及权限 题目2:书店管理系统(23) 包括四大模块:  售书(图书销售管理及销售统计,查询)  进书(通过书目,向发行商下定单订购图书)  库存(图书库存,统计)  相关查询 题目3:图书馆管理系统(11) 包括四大模块:  图书的查询  借书  还书  图书的预约 题目4:库存管理系统(8) 包括四大模块:  商品目录建立  商品入库管理  商品出库管理  商品库存查询 题目5:工资管理系统(1 人)41 包括四大模块:  系统数据初始化  员工基本信息数据的输入、修改、删除;  员工个人信息及工资表的查询;  员工工资的计算; 参考数据如下:  员工基本状况:包括员工号、员工姓名、性别、所在部门、工资级别、工资等级等。  工资级别和工资金额:包括工资等级、工资额。  企业部门及工作岗位信息:包括部门名称、工作岗位名称、工作岗位工资等。  工龄和工资金额:包括工龄及对应工资额。  公司福利表:包括福利名称、福利值。  工资信息:包括员工号、员工姓名、员工基础工资、员工岗位工资、员工工龄工资、公司福利、员工实得工资。 题目6:酒店客房管理系统 (1 人)14,26 包括四大模块:  前台操作:包括开房登记、退房结账和房状态查看  预订管理:包括预订房间、预订入住和解除预订  信息查询:包括在住客人列表、预订客人列表和历史客人列表  报表统计:包括开房记录统计、退房结账和预订房间统计  员工基本信息数据的输入、修改、删除; 参考数据如下:  住店管理:客人姓名、证件号码、房号、入住时期、预计离开日期、结账离开日期、应付金额  客人信息:姓名、性别、证件类型、证件号码、联系电话  房间信息:房号、房类型、价格、押金、房状态 预订房间  客人姓名、性别、房类型、房号、价格、证件类型、证件号码、联系电话、入住日期、预计离开日期、历史信息 题目7:旅行社管理信息系统(1 人)3 包括如下模块:  旅游团队、团队团员及旅游路线相关信息的输入  旅游团队、团队团员及旅游路线相关信息的维护(修改、浏览、删除和撤销)  旅游团队管理信息的查询(如按团队编号)  团队团员基本情况的查询(可选多种方式)  旅游路线相关信息的查询(如按线路编号)  旅游路线排行榜发布。  数据备份,更改密码。 参考数据如下:  团员信息表(路线编号,团队编号,团员编号,姓名,性别,电话,通信地址,身份证号码, 团费交否,备注)  线路信息表(路线名称,团费,简介,图形,路线编号)  团队信息表(团队编号,路线编号,团员人数,出发日期,返程日期)  旅游团队信息表(团队编号,团队负责人,团员人数,建团时间,是否出发,团费,盈亏) 密码信息(操作员,密码) 题目8:报刊订阅管理系统 (1 人)25,35 包括如下模块:  登录功能:登录统为身份验证登录。分为管理员登录和一般用户登录。分别通过不 同的用户名和密码进入报刊订阅管理界面,新的用户需要注册。  录入新信息功能:对于管理员,包括新用户信息和新报刊信息的录入功能,信息一旦 提交就存入到后台数据库中;普通用户自行注册进行可以修改个人信息。  订阅功能:用户可以订阅报刊,系统自动计算所需金额,并显示在界面上;管理员不 可订阅报刊,必须以用户身份订阅报刊。  查询功能:用户可以查询并显示自己所订阅的信息;管理员可以按人员、报刊、部门 分类查询。查询出的信息显示在界面上,并且可以预览和打印出结果。  统计功能:管理员可以按用户、部门、报刊统计报刊的销售情况,并对一些重要的订 阅信息进行统计;普通用户可以统计出自己的订阅情况,并且可以预览和打印出结果。  系统维护功能:数据的安全管理,主要是依靠管理员对数据库里的信息进行备份和恢 复,数据库备份后,如果出了什么意外可以恢复数据库到当时备份的状态,这提高了系统和 数据的安全性,有利于系统的维护 参考数据如下:  管理员表(Adminuser) :管理员名、密码。  部门表(Department) :部门号,部门名。  用户表(Users) :用户账号、密码、真实姓名、身 份证号、联系电话,联系地址,部门号(和部门表有关)等。  报刊类别表(NewspaperClass) :分类编号、 分类名称。  报刊信息表(Newspaper) :报刊代号、报刊名称、出版 报社、出版周期、季度报价、内容介绍、分类编号(和报刊类别表有关)等。  订单表(Order) :订单编号、用户编号、报刊代号、订阅份数、订阅月数等。 题目9:计算机等级考试教务管理系统(2 人)32 包括四大模块:  用户设置:对考点代码,考点名称进行设置,设置用户与密码;系统复位:即清除上一次考试数据(在之前存入历史)  报名管理: 报各库录入(姓名不能不空,之间不能有空格) 增加、删除、修改、浏览  准考证管理:准考证生成规则:xxx+yy+zz+kk,其中 XXX 为考点代码;YY 为语言代码,XX 为考场号,KK 为座位号 同一级别、语言应根据报名初始库信息按随机数生成准考证,同一考点最多可有 99*30=2970 名考生;如已生成准考证号,再重新生成准考证号,应该给予提示。 准考证打印  考务管理:考生信息查询、浏览、打印  成绩管理:成绩数据录入、接收 成绩合成(总成绩=笔试成绩*0.6+上机成绩*0.4),按大于或等于 60 合格 参考数据如下:  初始报名表(准考证号(为空) ,报名号(主键) ,级别+语言种类(外键) ,姓名,性别, 出生年份,民族,身份证号,联系地址,联系电话,照片,备注,参加培训)  含准考证号的报名表(准考证号(为主键) ,报名号,级别+语言种类(外键) ,姓名,性别, 出生年份,民族,身份证号,联系地址,联系电话,照片,备注,参加培训)  成绩表(准考证号,笔试成绩,上机成绩,总成绩) 级别语言代码表(级别语言代码,级别+语言)  用户信息表(考点代码,考点名称,用户名,密码) 题目10:人事管理系统(1 人)21 包括四大模块:  登录管理:包括操作员管理,口令设置,权限管理  人员管理:包括人事数据维护、人事信息查询和人事信息统计  工资管理  部门管理:包括部门表,职称表和年份表  查询及报表打印 参考数据如下:  人事表(编号,姓名,性别,出生日期,工作日期,部门代码,职称,婚否,简历,相片)  工资表(基本工资,岗位津贴,奖励,应发工资,水电,保险,实发工资)  部门表(代码,部门名称)  职称表(职称代码,职称名称)  年份表(年份代码,年份名称)  操作员表(操作员代码,操作员姓名,口令,部门,电话) 系统日志表(操作员代号,操作员姓名,登录时间,离开时间) 题目11:商品销售管理系统(1 人)19 包括四大模块:  用户登录  基本信息管理:包括销售情况、商品信息、库存表、员工表等信息的录入、浏览、修改、撤销、删除和查询等  商品销售管理:包括商品售出、退回和入库  盘点:包括库存盘点、当日销售盘点 参考数据如下:  商品信息表(商品编号,商品名称,品牌,型号,销售单价) 商品编号=类别代码(1 位)+品名代码(1 位)+品牌代码(2 位)+型号代码(2 位)  销售情况表(成交编号,商品编号,销售数量,总金额,销售日期,员工编号)  库存表(商品编号,供货商编号,进货日期,进货价,库存数量)  员工表(员工编号,员工姓名,性别,基本工资,职务,密码)  供货商表(供货商编号,供货商名称,所在地,联系电话)  员工资料表(员工编号,员工姓名,是否党员,简历,照片) 题目12:学生成绩管理系统(1 人)29 包括四大模块:  基本数据管理:包括院系管理,专业管理(设置院系下面的专业),班级管理(设置专业下面的班级),课程管理(设置相应专业下面的课程)  学生信息管理:包括基本信息录入、基本信息修改  学生成绩管理:包括学生成绩录入、学生成绩修改  信息查询:包括基本信息查询、成绩信息查询、学校人数统计  系统管理:用户管理、数据备份和系统帮助 参考数据如下:  院系信息(院系代码,院系名称)  院系专业信息(班级、院系代码,专业)  学生基本信息(班号,学号,姓名,性别,出生年月,籍贯,政治面貌,身份证号,入学年月,家庭地址,邮政编码,图片信息,备注)  学生成绩表(学号,课号,成绩,备注)  课程表(课号,课程名称,学期,备注)  班表(班号,班级名称)  用户信息表(用户名,密码,用户标识) 题目13:火车售票管理系统(4 人)36 包括四大模块:  售票管理  订票管理  信息查询  系统维护 参考数据如下:  车次信息表(车次,始发站,终点站,发车时间,到达时间)  订票信息表(车次,座位号,发车时期,发车时间,座位等级,票价)  车次座位等级分配及座位占用表(车次,座位号,座位等级,票价,占用标志)  用户信息表(用户名,密码,用户标识) 题目14:小型物业管理系统(1 人) 包括四大模块:  房源管理:对原始资料的录入、修改、查询和刷新。一般用户可以查询与房间有关 的统计资料;物业主管可其进行增、删、改、插等操作  租房管理:对房产出租,退租以及租房面积调整。其中物业主管可对其进行房租金 额计算和收款操作,一般用户对其查询  水电处理:根据租房资料,结合当月水、电量进行分摊,完成应收水电费。其中物 业主管对其进行计算,其他查询  交款处理:提供收款和发票打印以及交款数据查询  查询处理:对租房资料、交款资料,发票资料进行查询 参考数据如下:  房源资料(名称,面积,月租,物业,仓库)  租房资料(名称,面积,单位,月租,物业,押金,仓库)  水电资料(单位,电量,水量,电费,水费)  交费资料(收费项目,应收日期,应收金额,已收金额,未收金额,本次收款)  发票资料(单位,房租,电费,水费,物业)  权限资料(用户,密码,房源管理,租房管理,水电管理,交费管理,发票管理,系统维护) 其中系统管理员,有权进行系统维护;单位内部物业主管,有权进行物业资源调配、单元出 租,退租和收款开票操作;物业管理员,有权进行水电处理和收款处理等操行;租户代表, 有权进行种类费的查询操作 题目15:机房收费管理系统(1 人)7,34 包括四大模块:  登录模块  上机管理模块 说明:上机登记时,余额不足 3 元或卡处于挂失状态,则拒绝登记 每位同学的一次上机形成一条记录,每 36S 遍历一次上机记录表,对表中所有正上机字段为 TRUE 的记录的上机用时增加 36S,同时从上机卡表的余额减少  上机卡管理模块  充值挂失模块  查找统计模块:统计某天上机的总时数、每次上机的平均时数和机房的收入;某学 生上机的次数、上机总时数、每次上机平均时间;挂失和查询余 参考数据如下:  上机卡(卡号,姓名,专业班级,余额,状态) 状态的取值有:正常(能自费上机)  挂失上机记录(卡号,上机日期,开始时间,上机用时,正上机,管理号代码),上机用时记录学生上机时间(S);正上机是一个布尔型,为 True 表示正上机,每 36 秒刷新 其上机用时并扣除上机费用,为 False 表示上机结束。上机记录表永久保存,用于事后查询 和统计 管理员(代码,姓名,口令)  题目16:高校药房管理(1 人)31 包括四大模块:  基础数据处理:包括医生和药剂师名单的录入,修改,删除及查询  营业数据处理:包括药品进货上柜,处理划价,配药,柜存药品查询,处方综合查 询,交接班结转清。 参考数据如下:  药品信息表(货号,货名,计量单位,进货数量,进货单价,出售单价,进货日期,收货人 和供应商)  处方信息(编号,患者姓名,医生姓名,药剂师姓名,处方日期,配药日期) 处方药品信息(处方编号,药品货号,计量单位,配药数量,销售单价,已配药否)  医生名单和药剂师名单表(姓名)  题目17:考勤管理系统(2 人)40 包括四大模块:  记录每个员工每天所有进入公司的时刻和离开公司的时刻。  每天结束时自动统计当天的工作时间  每天结束时自动统计当天迟到或早退的次数。  对于弹性工作制,每天结束时自动统计当月的工时,并自动算出当月欠缺或富余的 时间  每个月末统计该月的工作时间判断是束足够  每个月末统计该月的工作天数并判断是否足够  管理人员查询并修改工作时间(特殊情况下修改)  管理人员账户管理(如设置密码等)  管理人员设定早退及迟到的条件,每个月的工作时间  管理人员设定每个月的工作日期及放假日期 参考数据如下:  员工信息(工号,姓名,年龄,入职时间,职位,性别,密码)  配置信息(上班时间小时,上班时间分钟,下班时间小时,下班时间分钟,每天工作时间)  每月统计数据表(工号,姓名,剩余的时间,迟到的次数,早退的次数,工作天数)  每天统计信息表(工号,姓名,小时,分钟,动作,时间) 其中动作指的时入或离开公司  题目18:单位房产管理系统(2 人)33,10 包括四大模块:  系统模块:完成数据库维护、系统关闭功能  物业费用模块:完成本月物业的计费、历史资料查询和财务部门接口传送数据、物 业相关费用单价设置  房屋资源模块:对房屋资源进行添加、列表显示、查询  职工信息模块:对职工进行添加、列表显示、查询以及相应部门、职务进行维护  帮助模块:对用户使用本系统提供在线帮助 参考数据如下:  职工(编号,姓名,性别,参加工作时间,行政职务,专业技术职务,评上最高行政职务时 间,评上最高专业技术职务时间,双职工姓名,现居住房号,档案号,房产证号,所在部门 编号,是否为户主)  部门(编号,部门名称) 住房级别表(编号,级别,住房标准,控制标准,级别分类)  房产情况(编号,房号,使用面积,现居住人 id,上一个居住人 id,最早居住人 ID,阳台面积)  物业费用(编号,房号,水基数,水现在值,电基数,电现在值,燃气基数,燃气现在值, 当前年份,当前月份)  价格标准(编号,水单价,电单价,燃气单价) 题目19:标准化考试系统 (2 人)15,39 功能要求: 设计一个简单的标准化考试系统,仅有单项选择题、多项选择题和判断题功能即可。 包括四大模块:  题库管理:实现试题的录入、修改、删除功能;  考试子系统:能够实现考生做题、结果自动存入到数据库中,有时间提示;  选择身份(登录)功能:系统能够记录考生输入的登录信息及交卷信息;  自动评分功能:考生交卷后能自动评分;  查看成绩功能:能够查询考生相关信息(包含成绩等)。 参考数据如下: 其它可供选择的题目: 网上教务评教系统130,127,133 16 学生日常行为评分管理系统232,110,230 网上鲜花店 38 基于BS结构的工艺品销售系统12 基于BS结构的校园二手物品交易网站 37 大学生就业管理系统201,208,234 题库及试卷管理系统 数据库原理及应用 课程设计报告 题目: 课程设计选题管理系统 所在学院: 班 级: 学 号: 姓 名: 李四 指导教师: 2011年12月 日 目录 一、 概述 二、需求分析 三、概念设计 四、逻辑设计 五、系统实现 六、小结 一、概述

玄学酱 2019-12-02 01:22:25 0 浏览量 回答数 0

问题

深入理解Magento – 第六章 – 高级Magento模型 :报错

kun坤 2020-06-14 15:19:25 0 浏览量 回答数 1

问题

深入理解Magento – 第六章 – 高级Magento模型:配置报错 

kun坤 2020-06-02 14:47:07 2 浏览量 回答数 1

问题

深入理解Magento – 第六章 – 高级Magento模型 - Magento报错

montos 2020-06-03 20:30:01 2 浏览量 回答数 1

问题

云计算之路-阿里云上:希望从今天开始乌云变蓝天

cnblogs 2019-12-01 21:13:29 12236 浏览量 回答数 14

问题

大数据时代——数据存储技术百问

yq传送门 2019-12-01 20:27:42 31965 浏览量 回答数 35

问题

让云计算真正省钱,解决云存储架构九个问题让云计算真正省钱

hamtyb 2019-12-01 20:27:33 11001 浏览量 回答数 4
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站