整理下.net分布式系统架构的思路面向云的.net core开发框架

目录 头条资讯

最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路。今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正。

首先说明的是.net下开源内容较少,并且也不是做并行数据库等基础服务,因此在这里什么Hadoop、Spark、ZooKeeper、dubbo等我们暂不去考虑。

一、最初假设的网站中,我们把应用系统网站、文件和数据库都放在一台服务器上,一台服务器包打天下。

继续阅读 “整理下.net分布式系统架构的思路面向云的.net core开发框架”

如何将java文件编译成class文件

目录 头条资讯

一般情况下,在myeclipse中保存java文件后会自动编译成class文件,但是这种情况只能编译当前工程的java文件,但是如果需要编译不是一个工程的java文件,比如在网上拷贝的java文件改如何编译呢,换句话说是在普通文件夹的java文件应该怎么编译呢?

如下:

首先需要配置好java的环境变量(保证javac文件可以执行),不再赘述

1.win+r后输入cmd进入命令输入行;

继续阅读 “如何将java文件编译成class文件”

jira的插件开发流程实践

目录 头条资讯

  怎么开头呢,由于自己比较懒,博客一直不怎么弄,以后克己一点,多传点自己遇到的问题和经历上来,供自己以后记忆,也供需要的小伙伴少走点弯路吧

  最近公司项目需要竞标一个运维项目,甲方给予了既定的几种比较常用的平台各司其职,并提出了一些定制化要求,让所有竞标厂商,用同样的平台,同样的环境去POC,其中jira就是一种一部分,然后学习过程就开始了。

  请让我再多一句题外话,说点心得,我们要做的事情,和想要做的事情,基本上atlassion官方都给予了文档,无奈,本人的英文实在渣到死,更无奈的是,国内关于jira的文档也比较少,只能硬着头皮去看英文,好好就在,它并没有想象中那么难懂,作为一个程序员,一些常用的界面,配置文件,只要截图贴出来,基本不需要过多的解释,应该就明白个一二了。为什么提这个,因为我知道就是我有心想要把我这次学习中碰到的所有问题都写出来,也肯定写不全,最全面的文档还要是回归官方文档的,这篇文章,算是给那些想去了解jira插件开发的小伙伴入个门,省的到官网去,都不知道用什么关键字去搜索相关文档 。

  好了,围绕思维三部曲开始吧。

继续阅读 “jira的插件开发流程实践”

angularjs中的页面访问权限设置

目录 头条资讯

  11月在赶一个项目,这阵子比较忙,挤挤时间更一篇博客吧,如标题所述说说在ng中页面访问权限控制的问题,水平有限各位看官见谅;  

  在以往的项目中,前后端常见的配合方式是前端提供页面和ui加一点DuangDuangDuang的效果,后端搭建框架数据结构和数据交互(数据交互前后端有交集),不管是.net、java or php都能一对多的提供前端服务,然而在新形式下项目中运用了前端框架,开发情况就不一样了,比如我要说的这是在angular框架下完成的开发,模式是后端提供服务和api文档,页面和数据交互及逻辑处理由前端完成,前端俨然是个完全的programer了,这个过程中就会遇到之前意想不到的问题(如果没有做过后端开发),比如页面权限控制,不得不说,使用前端的方式去做这些设置比较纠结,因为这方面的数据,也就是这些权限的‘标示’,后端运行的时候是可以直接获得的,即像获取字段数据a.b点一下就出来了,而前端只能用http请求的方式获取,繁琐麻烦;

  其实在ng中做页面访问权有很多种方法,各有利弊,运用的比较多的是拦截器,拦截器使得在前端往后端发送http请求之前或之后做一些操作,比如全局监测用户是否登录,没登陆就要跳转的登录页面,登录就可以访问页面;拦截器的使用往往配合后台数据,也就是获取到最新的‘标示’,来确定这个页面或者下个页面要做什么操作;而这里我使用的是一种用前端控制的方式,不用数据交互,理念就是定义好不同等级/阶段可以访问的页面,在路由的地方作拦截,针对一些不同等级/阶段访问权限定义明确的可以参考使用这种方法,代码如下:

......
app.run(['$rootScope', '$state', '$window', function($rootScope, $state, $window) {
    $rootScope.$on('$stateChangeStart', function(event, toState, toStateParams) {
        //用户访问等级阶段, 0 1 2
        Array.prototype.contains = function(needle) {
            for(i in this) {
                if(this[i] == needle) return true;
            }
            return false;
        }

        var status=new Array("user.a","user.b","user.c","user.d","user.e","user.f","user.g");
        var status0=new Array("user.a","user.b");
        var status1=new Array("user.c","user.d");
        var status2=new Array("user.a","user.b","user.c","user.d"); 

     if (status.contains(toState.name)) {

       if(initObj.getStatus()=="0"){ if(!status0.contains(toState.name)){ event.preventDefault(); $state.go('user.approve'); } return; } if(initObj.getStatus()=="1"){ if(!status1.contains(toState.name)){ event.preventDefault(); $state.go('user.result'); } return; } if(initObj.getStatus()=="2"){ if(!status2.contains(toState.name)){ event.preventDefault(); $state.go('user.result'); } return; } } }) }]) ......

继续阅读 “angularjs中的页面访问权限设置”

.net core快速上手

目录 头条资讯

2014年11月12日的Connect ();开发者活动上宣布将.NET堆栈基于MIT协议开源,并且提供开源保证,托管在Github上。当时的版本与最终目标相距甚远,然而有一点可以肯定的是,这是一个与.NET Framework 4.x完全不同的框架。

这在社区引发了诸多疑惑和争论���进行剧烈变更的原因显而易见:.NET Framework 4.x已经无法充分发挥最新的技术的威力,而且无法完全满足开发跨平台,云化的大规模应用需求,而一个全新的框架可以让.NET开发者以更简单、更直接的方式来开发Web服务与应用。然而,大家普遍感到担忧。如果把所使用的第三方软件代码库升级到最新版本,然后导致不能向下兼容的问题,这是开发者最大的噩梦。迁移的问题看起来无比艰巨,甚至毫无可能,在github社区上大家提出了迁移思路,微软dotnet团队在统一.NET 三大平台的基础上,让我们的迁移更加简单,能充分享受到.NET Core的各种优点。

Web的进化–大前端时代

近年来,Web已经发生了大幅度的进化,以NodeJs为代表的,我们知道,Javascript最初开发的这门语言的时候,目标只是用来编写简单的客户端脚本,但是随着时间的推移,它的角色已经发生了很大的转变。现在,我们可以利用HTML5提供的API来处理音频和视频文件,用全双工通道和外部服务进行通信,传输和处理大块原始数据,如此等等。我们已经来到了大前端时代,大前端时代是WEB统一的时代,利用html5或者6甚至7,不但可以开发传统的网站,做炫酷的网页动态效果,更可以采用BS架构应用程序、开发手机端web应用、移动端Native应用程序、智能设备(比如可穿戴智能手表,可穿戴智能衣服)等。

继续阅读 “.net core快速上手”

前端学PHP之数据类型

目录 头条资讯

前面的话

  同javascript一样,php也是一门弱类型语言,或者说成类型松散的语言。在强类型语言中,变量要先指定类型,然后才可以对应指定类型的数制。而php则不必告知变量的数据类型,会根据它的值,自动把变量转换成正确的数据类型。下面将详细介绍php的数据类型

 

继续阅读 “前端学PHP之数据类型”

Nodejs事件引擎libuv源码剖析之:高效队列(queue)的实现

目录 头条资讯

     声明:本文为原创博文,转载请注明出处。

     在libuv中,有一个只使用简单的宏封装成的高效队列(queue),现在我们就来看一下它是怎么实现的。

     首先,看一下queue中最基本的几个宏:

1 typedef void *QUEUE[2];
2 
3 /* Private macros. */
4 #define QUEUE_NEXT(q)       (*(QUEUE **) &((*(q))[0]))
5 #define QUEUE_PREV(q)       (*(QUEUE **) &((*(q))[1]))
6 #define QUEUE_PREV_NEXT(q)  (QUEUE_NEXT(QUEUE_PREV(q)))
7 #define QUEUE_NEXT_PREV(q)  (QUEUE_PREV(QUEUE_NEXT(q)))

继续阅读 “Nodejs事件引擎libuv源码剖析之:高效队列(queue)的实现”

pushState、replaceState、onpopstate 实现Ajax页面的前进后退刷新

目录 头条资讯

使用Ajax可以异步获取数据,可以更高效地渲染页面。

但也存在这一些问题:

再刷新页面,页面就会变成初始的状态

浏览器的前进后退功能无效

对搜索引擎的爬虫抓取不友好

 1、

早前会使用浏览器的 hash锚点 来解决

不同的hash标记着页面不同的部分,能修正页面刷新数据不正确的问题

继续阅读 “pushState、replaceState、onpopstate 实现Ajax页面的前进后退刷新”