`

jshoper3x在线商城系统更新说明及未来开发计划

阅读更多
>这是ostocyjshop计划下的一个新版本,主要是重构并增强App部分的功能。希望可以制作成一个可以稳定在线上运行的系统。
>ostocyjshop更名为jshoper3x简称jshoper。取义行走在java上的人。3x标示版本号

##项目目标
>我们要做一个支持android,ios和web的电商类移动应用解决方案

==Jshoper 介绍站及社区==
我们正在尝试把jshoper作为一个更加完善的产品,推荐给大家,所以我们制作了介绍站,并搭建了一个论坛,希望关注过我们的朋友继续支持与鼓励我们,同时我们也希望有一个机会把编码知识分享给大家,继续走好我们的开源道路。Jshoper开源,我们再继续。

介绍站:http://www.jshoper.org/ 设计师正在砌墙中...

论坛:http://www.jshoper.org/forum/forum.php  设计师正在砌墙中...  我正在准备文档中...

##什么是通用电商类移动应用解决方案?
>电商类移动应用解决方案的意思是说,我们可以在系统中容易的增加数据表和功能模块并开放服务给android及ios使用以达到O2O的模式或者提供更好的移动化服务,方便大家在既定的开发模式下顺利的增加你想要的功能。
>
>应用领域可以很多,例如汽车维修,订餐,教育,远程学习等等

##如何参与?
>你必须有一个github账号会使用git
>
>你必须会用eclipse的git插件来提交更新和合并别人的代码
>
>你必须能够遵守我们的一些开发规范,例如注释要多写,完善你的代码文档

##协议许可是?
>我们目前使用GPLv3协议

##组织和理念?
>我们希望大家都是热于奉献的代码人
>
>我们希望大家可以通过共同参与这个项目来提高自己或者帮助别人
>
>我们希望大家可以互相成为好朋友,互相学习
>
>我们希望把大家最擅长的一面表现出来,无论是设计或者是细节上的代码编写
>
>我们希望大家可以用于分享自己的经验和总结
>
>我们更加希望这里是我们代码人,程序员在这个行业的一个证明(可能有些人以后去卖水果)



##开发的态度?
>认真
>负责
>热情

##我们已经做了?
>jshoperv2是一个初级版本,你可以在这里下载https://github.com/sdywcd/jshoperv2  但我们已不再维护仅供参考和学习
>
>该版本完成了基础服务端和一个基于android的平板系统,并以电子菜单形式的产品进行过小范围生成测试和运营
>
>由于历时原因我们在https://code.google.com/p/ostocy-jshop/ 也保留了一份源码
>
>平板的app由于那时我主要写设计,基础架构是我写的,更新是其他人做的,我就暂时不公开源码了

##我们将来做什么?
>简化jshoperv2的功能把过去不合理的设计进行重构并优化和规范代码
>
>继续编写和优化android平板上的app
>
>增加android手机上的app
>
>新增内容管理类功能,满足新闻类app需求
>
>新增客户关系管理类功能,满足客户分析类app需求
>
>新增库存管理类功能,完善jshoper的整体流程
>
>新增采购管理类功能,完成jshoper的整体流程
>
最终我们希望jshoper3x是一个jshoperv2的流程完善版本,并增强移动平台上的客户端,通过抽离和重组模块可以帮助企业或者个人完成中小型应用或者电商开发。更多功能可能是你给我的想法,或者你fork后自己的创新


##我们的一些解释
>jshoper并不是一个完美的东西,我们力求做到更好
>
>无论是手机还是平板上的app都需要不断改进
>
>我们并不是什么大牛,只是喜欢写代码而已,也想通过代码来实现理想
>
>无论是安全性,性能,功能上我们希望可以慢慢的兼顾
>

##关于技术选型
>struts2,spring3.0,hibernate4,freemarker,jsp,jquery,dwr,js,html5,css,mysql5,android4这些事我们目前用到的
>我们乐于使用新技术,我们也在系统中使用了很多国内的开源组件

##关于未来想加入的技术
>搜索技术 lucene
>
>缓存 redius(已加入)
>
>nosql
>
------------------------------------------------------
#欢迎使用jshoper3x版本,欢迎技术咨询,欢迎业务合作
-------------------------------------------------------
##你可以在如下几个地方找到我
>1,上海
>
>2,我的博客:http://sdywcd.iteye.com/
>
>3,我的微博:http://weibo.com/sdywcd
>
>4,我的邮箱:sdywcd@gmail.com
>
>5,我的qq:281198200 (请某些行业的某先生/女士自重不要乱加,加时请注明github字样,让我知道你是好人就行)
分享到:
评论
18 楼 sdywcd 2013-11-21  
water_quite 写道
sdywcd 写道
water_quite 写道
从github上下载下来的源码,导入eclipse,运行后台登录界面,输入完账号和密码,点击登录,出现以下错误:
There is no Action mapped for namespace [/admin/user] and action name [adminlogin] associated with context path 。
请问这是怎么回事???

你可能需要自己新建一个工程复制源码过去编译了。project文件里都是我的环境配置,可能导致编译没有通过


谢谢,已经解决,是否只有后台管理界面,没有商城的界面??


新的前台正在制作当中,预计要到12月底才会有一个较为完整的样例
17 楼 water_quite 2013-11-20  
sdywcd 写道
water_quite 写道
从github上下载下来的源码,导入eclipse,运行后台登录界面,输入完账号和密码,点击登录,出现以下错误:
There is no Action mapped for namespace [/admin/user] and action name [adminlogin] associated with context path 。
请问这是怎么回事???

你可能需要自己新建一个工程复制源码过去编译了。project文件里都是我的环境配置,可能导致编译没有通过


谢谢,已经解决,是否只有后台管理界面,没有商城的界面??
16 楼 sdywcd 2013-11-18  
water_quite 写道
从github上下载下来的源码,导入eclipse,运行后台登录界面,输入完账号和密码,点击登录,出现以下错误:
There is no Action mapped for namespace [/admin/user] and action name [adminlogin] associated with context path 。
请问这是怎么回事???

你可能需要自己新建一个工程复制源码过去编译了。project文件里都是我的环境配置,可能导致编译没有通过
15 楼 water_quite 2013-11-17  
从github上下载下来的源码,导入eclipse,运行后台登录界面,输入完账号和密码,点击登录,出现以下错误:
There is no Action mapped for namespace [/admin/user] and action name [adminlogin] associated with context path 。
请问这是怎么回事???
14 楼 water_quite 2013-11-17  
从github上下载下来的源码,导入eclipse,运行后台登录界面,输入完账号和密码,点击登录,出现以下错误:
There is no Action mapped for namespace [/admin/user] and action name [adminlogin] associated with context path 。
请问这是怎么回事???
13 楼 searchjack 2013-07-06  
  、
12 楼 phoebe827 2013-04-28  
com.opensymphony.xwork2.interceptor.Exception.MappingInterceptor
java.lang.NullPointerException at com.jshop.action.UserTAction.adminlogin(UserTAction.java:733)

登录时报空指针,没有注册上service。。。。这个是啥原因的,代码一点没改,连从code.google上下了两个版本都不行。
11 楼 zygwlh 2013-01-28  
,你好,我看了咱最近的项目,可是我发现数据库不是最新的。还有项目会出现这种异常:Write operations are not allowed in read-only mode,有的不明白?所以请老大指导一下。
10 楼 rainyear 2012-12-06  
能否加你QQ聊聊.我的QQ:279042749
9 楼 rainyear 2012-12-06  
2012-12-6 15:30:21 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter struts2
java.lang.NoClassDefFoundError: com/jshop/action/templates/DataCollectionTAction
at java.lang.Class.getDeclaredMethods0(Native Method)

我导入eclispe跟上面哪个兄弟出现了一样的问题。求解。
8 楼 hyongl 2012-11-20  
我从github下载了一个zip包,然后ostocyjshop源码编译和部署指南将项目import进eclipse,运行后,tomcat控制台出现一下错误信息,请问我哪一步错了?



2012-11-20 11:14:51 org.apache.catalina.core.AprLifecycleListener init
信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:/Program Files/Java/jre6/lib/i386;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Symantec\pcAnywhere\;C:\Program Files\Java\jdk1.6.0_25\bin;C:\Program Files\Java\jdk1.6.0_25\jre\bin;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;D:\Program Files\TortoiseSVN\bin;D:\android-sdk\tools;C:\Program Files\IBM\SDP\bin;d:\Eclipse;
2012-11-20 11:14:51 org.apache.tomcat.util.digester.SetPropertiesRule begin
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:ROOT' did not find a matching property.
2012-11-20 11:14:51 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2012-11-20 11:14:51 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 718 ms
2012-11-20 11:14:51 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2012-11-20 11:14:51 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.32
2012-11-20 11:14:52 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
2012-11-20 11:14:53 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter struts2
java.lang.NoClassDefFoundError: com/jshop/action/templates/DataCollectionTAction
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetPublicMethods(Unknown Source)
at java.lang.Class.getMethods(Unknown Source)
at org.apache.struts2.convention.PackageBasedActionConfigBuilder.getActionAnnotations(PackageBasedActionConfigBuilder.java:728)
at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildConfiguration(PackageBasedActionConfigBuilder.java:541)
at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:318)
at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:204)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:374)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:418)
at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:190)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4071)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4725)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.ClassNotFoundException: com.jshop.action.templates.DataCollectionTAction
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
... 31 more
2012-11-20 11:14:53 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2012-11-20 11:14:53 org.apache.catalina.core.StandardContext start
严重: Context [/ROOT] startup failed due to previous errors
2012-11-20 11:14:53 org.apache.catalina.core.ApplicationContext log
信息: Closing Spring root WebApplicationContext
2012-11-20 11:14:53 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
严重: The web application [/ROOT] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@132ae7]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@65b738]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
2012-11-20 11:14:53 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
严重: The web application [/ROOT] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@1dfd868]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@f894ce]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
2012-11-20 11:14:53 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory docs
2012-11-20 11:14:53 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory examples
2012-11-20 11:14:54 org.apache.catalina.core.ApplicationContext log
信息: ContextListener: contextInitialized()
2012-11-20 11:14:54 org.apache.catalina.core.ApplicationContext log
信息: SessionListener: contextInitialized()
2012-11-20 11:14:54 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory host-manager
2012-11-20 11:14:54 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory manager
2012-11-20 11:14:54 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory ROOT
2012-11-20 11:14:54 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
2012-11-20 11:14:55 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter struts2
java.lang.NoClassDefFoundError: com/jshop/action/templates/DataCollectionTAction
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetPublicMethods(Unknown Source)
at java.lang.Class.getMethods(Unknown Source)
at org.apache.struts2.convention.PackageBasedActionConfigBuilder.getActionAnnotations(PackageBasedActionConfigBuilder.java:728)
at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildConfiguration(PackageBasedActionConfigBuilder.java:541)
at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:318)
at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:204)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:374)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:418)
at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:190)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4071)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4725)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.ClassNotFoundException: com.jshop.action.templates.DataCollectionTAction
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
... 40 more
2012-11-20 11:14:55 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2012-11-20 11:14:55 org.apache.catalina.core.StandardContext start
严重: Context [] startup failed due to previous errors
2012-11-20 11:14:55 org.apache.catalina.core.ApplicationContext log
信息: Closing Spring root WebApplicationContext
2012-11-20 11:14:55 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
严重: The web application [] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@58cca9]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@1e4905a]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
2012-11-20 11:14:55 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
严重: The web application [] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@c12474]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@407166]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
2012-11-20 11:14:56 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2012-11-20 11:14:56 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2012-11-20 11:14:56 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/47  config=null
2012-11-20 11:14:56 org.apache.catalina.startup.Catalina start
信息: Server startup in 4819 ms


错误的意思是找不到DataCollectionTAction这个类,但我在源码包中看到这个类是存在的!
7 楼 sdywcd 2012-11-08  
delholm 写道
sdywcd 写道
delholm 写道
新的项目有好多问题啊!

是的。所以现在不让下面的人把更新直接放到git上去了。以后我会统一下。

希望能早点看到新版本,底层没问题大家才可以在此基础上二次开发。。。要不很多人下载你下来源码看有问题就放弃了!所以希望这个项目能够做好!有个疑问,这个项目是不是现在没人管?

我再管呢。但是公司项目多了最近。所以效率出了点问题。放心吧。我会在近期放一个版本上来的。
6 楼 delholm 2012-11-08  
sdywcd 写道
delholm 写道
新的项目有好多问题啊!

是的。所以现在不让下面的人把更新直接放到git上去了。以后我会统一下。

希望能早点看到新版本,底层没问题大家才可以在此基础上二次开发。。。要不很多人下载你下来源码看有问题就放弃了!所以希望这个项目能够做好!有个疑问,这个项目是不是现在没人管?
5 楼 sdywcd 2012-11-07  
delholm 写道
新的项目有好多问题啊!

是的。所以现在不让下面的人把更新直接放到git上去了。以后我会统一下。
4 楼 delholm 2012-11-06  
新的项目有好多问题啊!
3 楼 sdywcd 2012-10-16  
dddggg 写道
兄弟,你最新的项目里出来貌似缺少模板

噢。模板在db库中。需要给你一份才全
2 楼 dddggg 2012-10-16  
兄弟,你最新的项目里出来貌似缺少模板
1 楼 newego 2012-08-04  
看了你得项目,有些问题,请问可以加qq:3540395么?我只是后台进不去,tomat7,我是做案桌得,看到你系统里有案桌,我们可以一起发展这个项目!

相关推荐

    jshoper3x:简化原版,增加移动平台特性

    jshoper3x项目将进行重大重构和更新,以后将更名为jshoperxms。 jshoper3x基于Gradle构建的项目名称是jshoperx 地址是: 作出如上决定是因为墙太深,阻碍了日常的开发和朋友们获取代码的便捷性。所以搬迁到国内的git...

    sdywcd-ostocy-jshop(在线商城程序)

    sdywcd-ostocy-jshop 是Android平台下的在线商城程序,内有详细介绍!

    jshoperv2:欧斯塔克在线商城系统

    ostocy-jshop已经更称为jshoper3x 请大家关注新版jshoper3x地址 ostocy-jshop的功能会陆续移植到jshoper3x中 欧斯塔克在线商城系统 基于java技术开发有如下特性: 1,使用spring + hibernate + struts2 + ...

    jshoper3x:店铺

    3,请下载mongodb,然后配置好。 4,请还原项目目录/db/下的数据库文件,请选择最近日期的.sql文件还原,数据库是mysql5 5,请新建一个动态web项目,将源码复制到您的项目,然后修改src/database配置文件,将数据库连接...

    jshoperx:jshoperx gralde版本

    是从jshoper3x更新而来,基于gradle构建的系统 是一个公司级开源产品 ##jshoperx能带给你什么? 如果你是一个代码初学者,那他能帮助你认识编程 如果你是一个“码农”,那么他能帮助你了解一些较新的技术和一个已经...

Global site tag (gtag.js) - Google Analytics