使用jsonp实现js跨域请求

页面内跨域请求 ##跨域限制 浏览器出于安全限制了不同域间的请求,jsonp使用动态生成前端js代码的方式绕过这个限制可以实现跨域请求。 ##前端 前端使用jquery封装的ajax <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script type="text/javascript" src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <title></title> </head> <body> <div id="content"></div> <script> $(function () { $.getJSON("http://127.0.0.1:8080/ajax?callback=?",function(data){ $("#content").html("This is "+data.name); }); }) </script> </body> </html> 调用时可以指定callback或由jquery自动生成callback的参数。 ##后端 后端代码使用springmvc实现一个可以处理异步请求的方法 @RequestMapping(value = "/ajax") public @ResponseBody String getAjaxResult(@RequestParam(value = "callback") String callback) { String json = "{'name':'张三'}"; return callback + "(" + json + ")"; } 后端服务需要可以处理callback参数,并在返回前端需要的回调函数。 …

2015年终总结

回顾过去、展望未来 ##一、职责概述 入职以来主要负责自动风控项目的研发管理工作,自主开发基于多样化用户数据,实现分析用户行为分析,辅助决策贷款审核的风控平台。目前自建爬虫不能满足需求,数据源主要依赖第三方采集,分析方式采用主观判断信用项分类的打分机制,初始参数采用逻辑回归的模型计算而来。此产品对外提供贷前辅助决策的功能。团队目标:在现有数据基础上给出尽可能客观的、能够被正常解释的分析结论,为公司现有贷款业务服务。围绕此项目,工作内容如下: 管理型工作: 新人培训 产品研发 资源协调 组织列会 内培培训、分享 团队建设 技术型工作: 技术选型 产品架构 技术指导 ##二、成绩和做法 设计之初考虑分布式的需求,为后续开发打下良好基础 数据库监控层 分布式服务、缓存 利于扩展的代码组织结构 爬虫技术攻关,实现密码登陆、二次验证、js沙箱 管理请求连接,便于重用、状态保持 含有复杂ajax的数据获取方式使用执行js的方式获取 登录含有验证码的请求页面 计算服务 抽象数据源、计算规则,便于扩展 支持不同算法的计算框架 适合现有团队的沟通协作方式 团队角色:数据科学家,业务专家,数据消费者 每个人工作侧重点不同 执行力较高 适应快速迭代 对业务推,对技术拉 ##三、经验和教训 对未知领域保持兴趣、敬畏,对结论的严谨,不明白的一定要找到原因,一知半解不可取。 做事讲究方式方法,用对的方法解决问题起着至关重要的作用,综合团队意见。 相互信任,预留时间储备,可以给团队成员快速的成长空间 项目长远规划很重要,避免做无用功。 产品项目最大的人力支出项并不是薪酬,而是招募组建这支团队的时间成本,以及在不得已的情况下,降低标准组队带来的质量与效率下降。 ##四、今后目标 业务框架稳定后工作重心向数据分析转移 规范的团队管理方式,改进任务分配、评估、跟踪 继续锻炼身体,培养好的生活习惯 ##五、对组织意见或建议 明确各项目组任务、职责,让每个人明确自己的定位,不仅有事做,而且愿意做。为其他人创造成长的机会,达到公司、个人双赢。 …

maven引用snapshot版本jar

##问题描述 在本地编译上传snapshot jar,在其他环境无法正常获取,发现每次执行mvn deploy时都会在本地仓库生成相应的文件,本地编译其他依赖项目是没有问题的,但在其他环境编译发现始终从PublicRepositorie获取,推断部署阶段应该是没问题的,猜测问题出在snapshot获取的路径配置上,查看maven配置setting.xml。 ##配置setting.xml ###mirror段 <mirror> <id>snapshot</id> <mirrorOf>snapshots-repo</mirrorOf> <name>snapshots</name> <url>http://xxx.com/content/repositories/snapshots</url> </mirror> ###profile段 <profile> <id>allow-snapshots</id> <activation><activeByDefault>true</activeByDefault></activation> <repositories> <repository> <id>snapshots-repo</id> <url>http://xxx.com/content/repositories/snapshots</url> <releases><enabled>false</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> </profile> 再次编译依赖项目即可从SnapshotsRepositorie获取快照版本的类库。 …

maven发布带有javadoc、source的库文件

如果只发布打包的jar,在其他项目中引用看到的参数都是以var1…的形式存在,而且不包含注释文档,本文介绍如何向布带有源码、注释的jar. ##maven配置 向maven配置文件settings.xml中添加servers段,例如: <server> <id>thirdparty</id> <username>admin</username> <password>admin</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin</password> </server> 分别用于release、snapshot版本发布. ##project配置 修改项目下的pom.xml文件 <plugin> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <phase>deploy</phase> </execution> </executions> </plugin> <plugin> <artifactId>maven-javadoc-plugin</artifactId> <executions> <execution> <id>attach-javadocs</id> <phase>deploy</phase> </execution> </executions> </plugin> <plugin> <!-- explicitly define maven-deploy-plugin after other to force exec order --> <artifactId>maven-deploy-plugin</artifactId> <executions> <execution> <id>deploy</id> <phase>deploy</phase> <goals> <goal>deploy</goal> </goals> </execution> </executions> </plugin> ##发布 使用如下命令发布 mvn source:jar javadoc:jar deploy 这样在其他项目引用时就可以获取到文档及源码。 …

springmvc中配置FreeMarker

前端模板freemarker配置 ##freemarker与JSP freemarker是一种模板技术,类似的技术在python与nodejs众比较常见,语法直观 JSP会在编译器生成集成Servlet的class文件 除此之外freemarker也被用于代码生成、票据报表、邮件生成等方面 ##springmvc中集成freemarker pom.xml中添加freemarker依赖 <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> springmvc相关配置 <bean id="freemarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/views/" /> <property name="defaultEncoding" value="utf-8" /> <property name="freemarkerSettings"> <props> <prop key="template_update_delay">10</prop> <prop key="locale">zh_CN</prop> <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop> <prop key="date_format">yyyy-MM-dd</prop> <prop key="number_format">#.##</prop> </props> </property> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"></property> <property name="suffix" value=".jsp" /> <property name="contentType" value="text/html;charset=utf-8" /> <property name="exposeRequestAttributes" value="true" /> <property name="exposeSessionAttributes" value="true" /> <property name="exposeSpringMacroHelpers" value="true" /> </bean> ##模板文件常用语法 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 描述:${description} <br/> 集合大小:${nameList?size} <br/> 迭代list集合: <br/> <#list nameList as names> 这是第${names_index+1}个人,叫做:<label style="color:red">${names}</label>...…

idea 快捷键

idea 定制快捷键Mac版 ##Edit Action up/down/right/left ⌃ I/K/L/J cut up to line end ⌃ K delete to line start ⌘ del duplicate lines ⌥ ⌘ down join lines ⌃ ⇧ J split lines ⌘ enter move caret to line end ⌃ E move caret to next word ⌥ right toggle case ⇧ ⌘ X column selection mode ⇧ ⌘ 8 copy path ⌥ ⇧ C copy reference ⌥ ⇧ ⌘ C paste from history ⇧ ⌘ V replace ⌥ F find next ⌘ K select all occurrences ⌃ ⌘ G show usages ⇧ ⌘ F7 ##View quick definition ⌘ Y quick...…