手机进销存系统/供应链管理系统

花了将近两个月的时间学习了一个企业级进销存项目,已经结束了两周多,现在终于有时间来对这个项目的学习做个总结了!

一、首先介绍下这个项目

(注:本人目前大三,专业为信息管理,与编程沾边不多。而我对编程很感兴趣,从大一下期开始主要通过看书和视频自学学习java编程!)。

项目名称:手机进销存系统(Mobile SCM)

主要开发技术:Struts2+Spring+ibatis+jQuery

数据库:MySql5.1(Navicat客户端管理工具)

服务器:tomcat7.0

建模工具:ER/Studio

运行系统:Linux

其他技术:报表应用iReport+jasperReport技术,应用jxl进行excel导出。

项目介绍(视频原话):本系统由某手机贸易企业定制开发,合同价格9.8万元,开发周期3个月,5人开发完成。本系统既具有一般进销存系统功能,又有客户独有的需求,通过学习本课程,可以全面了解进销存类项目。

视频评价:

①.这是我在网上找的一套视频教程,总共80集,每集60分钟左右(需要很大的耐心啊!)。项目有点老,大概是12年左右录制的,但是学到的东西很多。

②.这是我看的视频中总时间最长的一套视频了,虽然有80集之多,但仍有很多模块功能的实现没有在视频中展现出来。但是,这套视频已经把该讲的都讲了,而且讲的很全面,学到了很多东西。

③.这套视频是基于现有的、企业实际在使用的系统来讲解,从售前的与客户沟通->开发阶段->售后维护阶段,让我了解到了公司项目开发流程。不过这套视频的着重点是在开发阶段,主要讲解了系统设计、建模工具的使用、主要模块功能实现等;像与客户沟通、具体参与项目需求分析、团队分工合作等还是得工作后具体参与其中才能真正有所体会。

④.视频讲解的内容也非常详细,就一个功能而言,详细地讲解了JS,页面构成,代码编写,文件配置等等,所以也能学到很多细节性的东西,某些内容会在后面写出来。作为一个开发人员,最主要的是需要了解项目的需求,根据需求来完成代码的编写。

实际学习:

①.首先,视频中的持久层框架使用的是iBatis,我因为在学习这套视频之前不久刚学习过了MyBatis框架,所以将iBatis换成了MyBatis,ibatis、mybatis和hibernate后面会具体说一说。总的来说,框架的使用感觉是非常简单的,在此之前就已经学习过了S2SH(Struts2+Spring+Hibernate),SSM(SpringMVC+Spring+MyBatis),学框架就是学配置!。

②.在实际学习时,视频中讲解系统设计等内容时是跟着视频认真听的,涉及到代码的编写等内容大部分是先了解模块功能的需求后,先自行编写代码实现功能后再快进地看视频,代码编写相对简单,主要还是业务需求。代码写多了之后会发现(刚刚统计了下代码量<仅统计了.java和.jsp>,到现在为止,已超过11W行啦(∩_∩)),无非就是增删改查,要说难一点的就是将需求转换为逻辑实现。

③.因为是练习,加上学校时间也比较紧,实际编写代码时,部分类似于表单验证的就没有具体做了;到后面部分模块也没有具体去实现了,因为基本都是些重复的工作了,在以前的学习和项目中代码写得够多的啦~\(≧▽≦)/~,而且视频总的来说也只实现了一半不到的功能,因为视频讲的非常详细,所以想要80集讲完所有功能不可能,也没有必要!!

④.因为讲得很详细,所以学到了以前很多没注意到的细节;在学习这套视频的同时,一方面学到了很多新知识,类似于建模工具ER/Studio的使用;另一方面也复习了以前的知识,并更加熟练地加以运用。在这期间,有些新的知识点或者解决的问题写了几篇新的博客(可以看之前的博客),有些则会在接下来的篇幅中进行总结!

 

二、项目相关截图展示

1.登录页面

 2.首页

 3.功能展示

菜单管理

权限管理

供应商业务

 

4.虚拟机运行效果(Linux)

 5.工程目录结构

 6.项目相关文件

 

 三、项目学习总结

 1.进销存系统概述

 进销存系统也称作供应链管理系统(Supply Chain Management, SCM)。SCM基本内容:计划(决策管理层,主要体现在报表上)、采购、[制造(跟生产有关的企业)]、库存、销售、退换货管理。SCM总体为两大流程:物品流、财务流。
 百度百科解释:进销存系统是对企业生产经营中进货、出货、批发销售、付款等进行全程跟踪管理,从接获订单合同开始,进入物料采购、入库、领用到产品完工入库、交货、回收货款、支付原材料款等,每一步都为您提供详尽准确的数据。有效辅助企业解决业务管  理、分销管理、存  货管理、营销计划的执行和监控、统计信息的收集等方面的业务问题。

 系统总流程图:

 

 2.项目组成员及分工(企业开发):我想刚进公司的新人则处于开发工程师这个阶段,然后一步步往上走!

 项目经理(PM):与客户沟通、进度、成本、质量的控制、资源(人力资源)协调等。

 系统分析师(SA)[架构设计师/技术经理]:技术带头人,需求分析、架构设计、指导开发、重要功能开发等。

 开发工程师(SE):具体模块的设计与实现。

 测试工程师(Test Engineer):测试用例编写、执行测试提交BUG列表。

 3.项目开发流程

 需求分析 -> 系统设计 -> 开发 -> 测试 -> 实施及试运行 -> 客户培训 -> 维护

 项目开发流程图:

 4.系统设计主要工作内容:

 ①分析需求、了解环境及限制等

 ②总体设计、完成子系统划分,并确定子系统间关联及通信方式

 ③对每个子系统进行模块及子模块划分,并确定之间关联

 ④每个模块输入、处理流程、输出

 ⑤设计数据结构

 ⑥设计用户界面

 ⑦完成《概要设计说明书》

5.概要设计说明书(主要内容参考《概要设计说明书主要的内容.doc》)

概要设计的目的就是希望一个从来没有接触过的人一看就能从各个方面都对系统的作用,功能,实现方面有一个大概的了解,并为以后的各类详细设计文档提供一个指引和方向。

6.《需求规格说明书》作用及主要内容(可具体参考《LSD-软件需求规格说明书.doc》)

作用:

①项目组成员、测试人员、公司审核部门的一个参照标准

②客户验收标准

主要内容:

①标题、编号、版本、作者、时间等信息

②变更记录

③项目概况、编写目的、目标读者、系统用户与环境等

④系统模块、总流程图等

⑤功能性需求

⑥性能性需求

7.模块设计

①分析模块流程

②根据需求确定输入、输出及处理逻辑

③设计用户界面

④面向对象的设计方法[UML(统一建模语言),时序图,状态图,类图等]

⑤以数据为中心的设计方法(数据建模)

8.MVC与分层设计(具体可网上查阅)

①MVC(Model-View-Controller):MVC是一种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而达到更好的开发和维护效率。在MVC模式中,应用程序被划分成模型(Model)、视图(View)和控制器(Controller)三个部分。其中,模型部分包含了应用程序的业务逻辑和业务数据;视图部分封装了应用程序的输出形式(页面、界面);而控制器部分负责协调模型和视图,根据用户请求来选择要调用哪个模型来处理业务,以及最终由哪个视图为用户做出应答。MVC模式的这三个部分的职责非常明确,而且相互分离,每个部分都可以独立的改变而不影响其他部分,大大提高了应用的灵活性和重用性。

②为什么分层:便于重用、维护。

③三层结构及各层次的结构:业务逻辑层(Service):不要出现直接的数据访问;传进来一组数据,根据传进来的参数和业务逻辑的要求把业务逻辑实现,最后把要显示的数据传递出去。业务逻辑层是重用性最高的一层,是核心。

④这里想说一下Struts2的MVC:推荐一篇博客:Struts2与MVC基础入门

9.ER/Studio(专业的数据建模工具):

ERStudio:ERStudio是优秀的数据库建模软件,它不仅可以建立表、视图等模型,还可以建立多表间各种关系的模型,另外还可以根据模型生成表到数据库。

使用体会:在这次的学习中,使用频率较多的一个软件就是ERStudio了。在此之前每次做项目时,因为数据量都比较小,基本10张表左右,因此都没有使用过建模工具,一个初步的分析后就开始直接建表;之前一直会遇到的问题是在开发中对表结构的修改是比较麻烦的,就算只有10张表左右,比如修改了某张表名后,与其相关联的表都要去修改,比较麻烦;而且很难看出表与表之间的联系,容易遗漏东西。而在这种中大型项目中(在这个项目中只做了三个模块就已经有30张表了),如果没有提前进行一个好的表结构设计的话,对后面的维护将是灾难性的。所以如果有一个好的建模工具就可以解决这些问题了。

表关联设计:如果我们对数据库拥有完全的控制权限,创建数据库时,可以不用考虑表之间的关联,因为数据库维护关联关系会消耗一定的资源。我们可以通过程序来维护即可。

可以看看下图使用ERStudio建立的逻辑模型:我们可以通过图形界面很清晰的了解模块划分、表结构、表之间的关联(这里并没有很严谨的设计表之间的关联,主要通过程序来维护)等等。我们如果需要临时修改一个字段或是关联关系等,可以很容易的修改。而且最方便的是可以直接将该逻辑模型生成物理模型并导出sql文件,直接导入数据库就可以使用了。ERStudio连上数据库后,还可以把数据库中的表拉到可视化建模界面显示,表与表之间的联系能够清晰地展现出来。

10.编码的一些技巧

①可直接使用Spring的字符编码过滤器来设置UTF-8格式,虽然以前学过,但在实际使用时就忘了Spring还有这个功能,每次都是自己建立一个过滤器来设置字符编码。

 1 <filter>
 2       <filter-name>CharacterEncodingFilter</filter-name>
 3     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
 4       <init-param>
 5           <param-name>encoding</param-name>
 6           <param-value>UTF-8</param-value>
 7       </init-param>
 8 </filter>
 9 <filter-mapping>
10       <filter-name>CharacterEncodingFilter</filter-name>
11       <url-pattern>/*</url-pattern>
12 </filter-mapping>

②写一个系统初始化类实现ServletContextListener来加载系统初始化需要的数据以及启动一个定时器来定时清除系统日志等功能。系统公用的东西(如系统标题)可写在配置文件里,系统初始化时就加载进来。

③系统用户表一般会设置一个用户状态,如启动,停用,删除等状态。一般来说,删除用户不会真正删除用户信息,而是设置其状态为删除状态。角色也是一样,会有一个状态信息,如果停用了就要禁止该角色下的权限。

④如果我们对数据库拥有完全的控制权限,创建数据库时,可以不用考虑表之间的关联,因为数据库维护关联关系会消耗一定的资源。我们可以通过程序来维护即可。

⑤权限系统独立出来成一个模块或项目,以方便以后可以重用。

⑥写一个BaseAction来放置一些常用的request,resposne等等,其它的action类如果要用到这些资源可以直接继承BaseAction。

 

⑦利用好struts的标签库。<%@ taglib uri="/struts-tags" prefix="s"%>

 可以用其来按需求显示某些数据或者模块。比如:<s:if test=" ">...</s:if>  <s:elseif test=" ">...</s:elseif>

 以及利用好c标签来做页面的一些判断处理。比如:<c:choose><c:when test="${status.first}">...</c:when><c:otherwise>...</c:otherwise></c:choose>

1 <c:url value="${ctx}/mobileBasic_delete.action" var="delUrl">
2      <c:param name="table" value="basic_config"></c:param>
3      <c:param name="id" value="${config.id}"></c:param>
4 </c:url>
5 <a href="${delUrl}" onclick="return confirm('确定要删除吗?');">删除</a>
6 //这种方式也可以对中文进行编码

⑧测试的时候记得经常清空浏览器缓存(尤其是js文件更改后),否则某些数据一直测试不正常。以及,测试的时候个人觉得最好还是用火狐浏览器,用好火狐的firebug能节省很多时间。

⑨以前一般点击某些功能简单的按钮时,会用js来实现。现在才意识到还可以这样:

例如使用input按钮来简单跳转页面:<input type="button" class="btn cancel" value="取消" οnclick="location='menu_menuDetail.action?menu.id=${menu.id}'"/>

⑩不要忘了可以自定义标签来处理某些问题,代替某些js代码以及<%= %>。与jsp页面整体统一。自定义标签一是可以自定义类继承SimpleTagSupport,在doTag方法里实现逻辑处理,此种方式需要在xml中配置tag。另一种方式是在静态类中写一个静态方法处理逻辑,此种方式需要在xml中配置function,前台的书写方式则是:${my:dateFormat(beginDate)}

可参考个人博客:JSP自定义标签/自定义标签打包

以及,自定义注解、自定义拦截器、自定义标签等配合使用能更方便的编程。

⑪字符串处理时,StringBuilder速度更快,但是线程不安全的。SringBuffer是线程安全的,速度相比较慢。

⑫在类似于easyui这类框架下,我们点击菜单按钮跳转的页面往往是跳转到一个iframe中,但如果有这么一个业务需求:修改密码/退出系统,需要返回到首页,但如果直接让struts的result跳转到首页时,首页则显示到iframe中了,我们的需求是整个窗口刷新。这里有三种方法:

⑴js获取该按钮,利用ajax来实现,在action中处理后,返回时利用window.top.location = “”; 即可。

⑵使用一个临时页面,result配置转到该页面后,立即跳转。

⑶还有一种则是,临时生成一个脚本代码跳转:这种方式就非常简单了,以前怎么就没想到呢,反正都是通过js来跳转。

out.print(“<script type=’text/javascript’>top.location=index.action</script>”);

out.close();

⑬注销与退出系统的区别:注销系统:清除用户信息,返回首页;退出系统:清除用户信息,关闭浏览器。

⑭利用mybatis-generator自动生成javabean,sqlMap,dao等,就像利用HIbernate反向生成一样。我们使用建模工具建好逻辑模型后,生成物理模型,导出sql文件,再导入数据库,然后利用这个插件就可以自动生成javabean,sqlMap,dao等,极其方便。具体怎么安装插件和使用,这里给出一个百度链接:mybatis generator eclipse插件的安装

日期:我们选择日期如2016-05-03 这个代表的是5月3日0时,即5月2日一整天,所以逻辑上我们如果获取5月3日的数据时,还需要加上一天的时间。

⑯使用Navicat查询创建工具完成复杂SQL构建:

⑰项目完成后可以将工具类留存。

 

11.遇到的一些小问题

①mybatis联合查询(association)的配置问题及某些细节:查看个人博客:MyBatis关联查询 (association) 时遇到的某些问题/mybatis映射

②一次偶然的断网条件下,启动系统发现报了如下错误:

1 DEBUG - Loaded schema mappings: {http://mybatis.org/schema/mybatis-spring-1.2.xsd=org/mybatis/spring/config/mybatis-spring-1.2.xsd, 
2 http://www.springframework.org/schema/util/spring-util.xsd=org/springframework/beans/factory/xml/spring-util-3.1.xsd, 
3 http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd=org/springframework/web/servlet/config/spring-mvc-3.1.xsd, 
4 ....................................

网上查了下,原因是断网后,applicationContext.xml配置文件中指定的xsd文件读取不到了——也就是说xsd每次都是从网上读取的?

当然这是不怎么可取的,具体解决办法参考这个博客:Spring如何加载XSD文件。我这里出错的原因是版本不一致导致的。

③一定要将action配置@Scope(value="prototype"),配置成原型模式的,否则就算你重定向也会有意向不到的问题,会将原来的数据带到新的页面去。

④MyBatis的<foreach ></foreach>标签:

当collection为List<Map<String,Object>>的时候,而且我们要使用map的key和value,如下使用item:

<foreach collection="mapList" item="item" separator=",">

  (#{item.key},#{item.value})

</foreach>

当遍历的集合collection为Map<String, Object>时,要使用key和value,如下使用:

<foreach collection="map" index="key" item="value" separator=",">

  (#{key},#{roleId},#{value})

</foreach>

⑤登出系统时,要清空session所有信息。request.getSession().invalidate();//注:此处必须使用原始的session,不能使用框架的Map<> session,那只是个映射.

⑥表单设置为disabled="disabled"时,将无法提交该表单数据,可以设置为readonly

<input type="text" readonly="readonly" name="supplier.id" value="${supplier.id}"/>

⑦Jstl标签可以用在js中,但只能在jsp文件的js中,外部js文件不可用。

1 <c:forEach items="${mobileTypeList}" var="mobType">
2     if("${mobType.id}" == mobileTypeId){
3         $("#refPrice").html("¥${mobType.buyPrice}");
4     }
5 </c:forEach>

 

12.关于JSON使用的一些问题

①从服务端返回的json格式数据 键/值都必须用双引号(无论是json文件,还是json数据),不要用单引号,否则会出现一些意想不到的问题,像数据解析不正确等。

看官网的说明:

正确格式:JSON数据格式

 ②Spring的json插件:

以前一直都是使用JSONObject,JSONArray来得到json格式数据。这次发现还可以直接添加一个json插件,就可以很轻松的返回json数据了。

步奏:

⑴添加struts2-json-plugin-2.3.28.jar包

⑵修改配置文件(注意绿色的地方)

1 <package name="dev" namespace="/" extends="json-default">
2     <action name="menu_*" class="menuAction" method="{1}">
3         <result name="menuTree" type="json"></result>            
4     </action>
5 </package>

⑶Action中将要转化成json的数据放在全局中(成员变量)。不必在方法内像JSONObject那样转成字符串再输出。

//使用JSONObject转换数据
JSONObject jsonObject = new JSONObject();
//将data转换为json格式数据
String result = jsonObject.fromObject(data).toString();
//返回
response.write(result);

⑷在前台获取的时候,注意需要从data里面取出来,因为此时的data中可能包含多个数据:

function(data){

   var json= [data.key];

}

⑸插件原理:在返回到前台时,框架会自动将有get方法的成员变量转换成json格式数据返回(所以在action中不要将具体逻辑方法名带get,还有Action中的service成员也不要设置get方法,否则极容易出错。如果非要带get,可以在这个方法上加注解;@JSON(serialize=false),使其不要序列化,就不会转成json了)。

这种插件方式比使用JSONObject虽然更方便,但不容易控制,JSONObject可以控制具体输出的类容。

1 JSONObject jsonObject = new JSONObject();
2 //json配置
3 JsonConfig config = new JsonConfig();
4 //设置需要过滤掉的字段
5 config.setExcludes(new String[]{"subMenuList"});
6 //得到json数据
7 String result = jsonObject.fromObject(menuTree, config).toString();

而且使用JsonConfig可以注册转换器,比如将Date对象转换成字符串。

注册转换器:config.registerDefaultValueProcessor(target, defaultValueProcessor);

13.switch…case…

变量的使用:

 

switch(此处数据类型):switch后面的括号里面只能放int(byte,short,char)类型和String类型的数据

case后的数据类型不能为Integer:

 

14.MyBatis、iBatis、Hibernate:具体区别百度

ibatis:半自动ORM框架,需手动写sql语句;开发效率相对于hibernate较低,但是更灵活,适应性更广泛(在企业开发中,我们可能不能完全去控制数据库结构 );

mybatis:MyBatis 最强大的特性之一就是它的动态语句功能。其前身就是ibatis。

Hibernate:由hibernate自动生成sql语句;hibernate则需要在符合一定规范(如数据库结构必须规范)下才能发挥它的最大效用。

15.mybatis缓存:默认情况下是没有开启缓存的,除了局部的 session 缓存(一级缓存),可以增强变现而且处理循环依赖也是必须的。要开启二级缓存,需要在你的 SQL 映射文件中添加一行:<cache/>

 

 

四、项目相关资料

项目打包文件:手机进销存系统

视频分享:北风网-手机进销存系统 

注意所有视频及资料仅供学习使用!!!

然后,说一下此时此刻的感受,通过自学学习的东西虽然有点多,但也比较杂,不能形成一套系统性的知识链;而且,越是到后面就越不想再学下去,主要是现在所学的东西没能有地方使用,有点类似于一身武艺没有用武之地的感觉。以前一直碍于学校的课程和其它的琐事没有找工作,虽然有做过一些课程上的小项目,但都不能满足我。大三马上就结束了,所以还是尽快找个工作,也只有在工作中才能用我所学,也能学到更多新东西,学习才更有动力、更有激情!

 

转载于:https://www.cnblogs.com/chiangchou/p/project-mobilescm.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何评价马云和马斯克在世界人工智能大会的对话?

来源&#xff1a;刘锋的未来课堂马云和马斯克在世界人工智能大会的对话&#xff0c;虽然风轻云淡&#xff0c;天马行空&#xff0c;但两个人其实是针锋相对的&#xff0c;马云的观点是认为人工智能还是人类的工具&#xff0c;为人类的未来提供服务&#xff0c;马斯克继续保持他…

linux 检测mysql链接_MySQL笔记

#忘记原始密码1、修改 /etc/my.cnf&#xff0c;在 [mysqld] 小节下添加一行&#xff1a;skip-grant-tables12、重启mysql&#xff1a;service restart stop3、刷新权限&#xff1a;flush privileges;4、修改密码&#xff1a;alter user rootlocalhost identified by Kgj2019;若…

matplotlib设置多个图例横向水平放置

一般多个图例都是竖向放置 如果想要多个图例横向放置&#xff0c;设置plt.legend的ncol参数&#xff0c;ncol参数表示将图例分为多少列&#xff0c;以两个图例横向放置为例&#xff1a; plt.legend(ncol2)

内存对齐分配策略(含位域模式)

&#xff11;&#xff1a;内存对齐定义&#xff1a; 现在使用的计算机中内存空间都是按照字节划分的&#xff0c;从理论上讲似乎对任何类型的变量的访问可以从任何地址开始&#xff0c;但是实际上计算机系统对于基本数据类型在内存 中的存放位置都有限制&#xff0c;要求这…

科技部发布新一批国家新一代人工智能开放创新平台

来源&#xff1a;科技部8月29日上午&#xff0c;在上海举办的2019世界人工智能大会开幕式上&#xff0c;科技部李萌副部长发布了新启动建设的十家国家新一代人工智能开放创新平台。分别是&#xff1a;依托上海依图网络科技有限公司建设视觉计算国家新一代人工智能开放创新平台&…

开发里程碑计划_里程碑——让你轻松控制项目进度

对于项目结果的最好控制就是控制项目开发的过程&#xff0c;也就是控制项目开发过程中的几个关键节点——项目的里程碑事件。通过对里程碑事件的控制用于评估项目各阶段工作进展的有效性&#xff0c;以及及时的明确开发过程中存在的风险过程。我们在做项目开发计划的时候&#…

SQL Server数据库大型应用解决方案总结【转】

【IT168 技术】随着互联网应用的广泛普及&#xff0c;海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用&#xff0c;每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。 一、负载均衡技术 负载均衡集…

Python正在吞噬世界

来源&#xff1a; AI前线AI 前线导读&#xff1a;2018 到 2019 年&#xff0c;所有编程语言的流行度都在下滑&#xff0c;除了 Python。Python 为什么会变得越来越火&#xff1f;本文梳理了 Python 的发展史&#xff0c;试图揭示背后的秘密。1994 年末&#xff0c;一群来自美国…

登录python自动化_Appium+Python实现自动化登录

#AppiumPython实现自动化测试 Appium简介 官方的概述为&#xff1a; Appium is an open source test automation framework for use with native, hybrid and mobile web apps. It drives iOS, Android, and Windows apps using the WebDriver protocol. Appium是一个开源的测试…

lvalue-xvalue-prvalue

• iM: has identity and cannot be moved from • im: has identity and can be moved from (e.g. the result of casting an lvalue to a rvalue reference) • Im: does not have identity and can be moved from 转载于:https://www.cnblogs.com/Searchor/p/5604736.html

城市仿真为何成为大势所趋?

来源&#xff1a;智慧城市联合实验室不知从何时起&#xff0c;人们开始从城市的角度构想&#xff0c;未来可以建设一个虚拟城市&#xff0c;来映射真实城市的运行&#xff0c;再进一步管理真实城市的运行。现在&#xff0c;这种构想已经初步实现……&#xff08;内附《城市环境…

linux网络配置_linux复制和网络配置的小注意事项

centos7&#xff0c;vbox复制出来的虚拟机无法ping通。其实这是vbox低版本没有解决的一个小问题&#xff0c;复制过去&#xff0c;主机的mac重新生成了(复制时候一定要选这个选项),但是配置文件的mac还是被复制的主机配置&#xff0c;网上搜索很多方案各种改&#xff0c;其实只…

实验室培养的迷你大脑,产生了脑电波...

十月龄如豌豆大小的类器官。图片来源&#xff1a;Muotri Lab来源&#xff1a;中国生物技术网近日&#xff0c;来自美国加州大学圣地亚哥分校的科学家用发育了功能性神经网络的干细胞创造了“迷你大脑”。尽管这些实验室发育的大脑比人脑小一百万倍&#xff0c;但它们是第一个被…

jupyternotebook运行python_jupyter notebook参数化运行python方式

Updates &#xff08;2019.8.14 19:53&#xff09;吃饭前用这个方法实战了一下&#xff0c;吃完回来一看好像不太行&#xff1a;跑完一组参数之后&#xff0c;到跑下一组参数时好像没有释放之占用的 GPU&#xff0c;于是 notebook 上的结果&#xff0c;后面好几条都报错说 cuda…

重磅|PPT讲解机器人产业发展现状与未来展望,重磅资料

来源&#xff1a;机器人大讲堂前段时间咱们分享过王喜文博士做的关于《5G》的PPT&#xff0c;大家反映做的很棒&#xff0c;最近王喜文博士在机械工业出版社又出了一本新书&#xff1a;智能&#xff1a;《新一代人工智能发展规划》解读&#xff0c;ISBN&#xff1a;978-7-111-6…

中国之光!中国最酷黑科技30强名单公布!

来源&#xff1a;智慧芽当前的中国正在迎来一个科技大爆发的时代&#xff0c;科技成果输出的速度远远快于经济成长的速度。中国现在每年产出科技成果&#xff0c;居世界第二&#xff0c;且正在高速接近美国。最好的一个证明就是含金量相对较高的PCT国际专利申请量&#xff0c;2…

python为什么没有指针_Python 没有指针,如何解算法题?

&#x1f446;“Python猫” &#xff0c;一个值得加星标的公众号 花下猫语&#xff1a; 今天一大早&#xff0c;读者群里又讨论了 Python 的“指针”问题。之前在公众号里发布过樱雨楼小姐姐的《对比 C 和 Python&#xff0c;谈谈指针与引用》&#xff0c;它从概念上有比较清晰…

深度 | 刘群:基于深度学习的自然语言处理,边界在哪里?

来源&#xff1a; AI科技评论 编辑 | Camel四大边界&#xff1a;数据边界、语义边界、符号边界和因果边界当前&#xff0c;深度学习之于自然语言处理&#xff0c;有其局限性。那么它所能起作用的边界在哪里呢&#xff1f;对此问题&#xff0c;我们应当深思。近日&#xff0c;在…

html border阴影效果_【开发小技巧】026—如何使用HTML和CSS创建浮动框阴影效果?...

英文 | https://www.geeksforgeeks.org/how-to-create-floating-box-effect-using-html-and-css/?refrp浮动框效果是自定义框阴影技术的经典示例。在这种技术中&#xff0c;我们无需使用CSS提供的box-shadow属性即可创建逼真的阴影效果。实现方法&#xff1a;在选择器之后使用…