自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(23)
  • 资源 (17)
  • 收藏
  • 关注

原创 FourBeauties四大美人C#.net core 分库分表ORM框架

自己写了一个超轻量级的ORM框架满足了八亿数据迁移的需求,支持分库分表,支持超事务,项目代号四大美人,希望同行们能优美的增、删、改、查并改善,也祝天下程序员终成眷属,爱江山更爱美人...

2020-05-29 17:56:17 880

原创 Java学习之SpringMVC零配置实践

概述:本实践主要是对SpringMVC的主要功能做了一个大概的体验,将原来的SpringMVC的大量配置改成用SpringBoot进行集成,做到了零XML配置,本次实践分为两个部分,一部分为基本功能实践和另一部分以Employee管理为背景做的一个更贴近实战的实践。内容:本次实践内容包括RequestMapping关键字修饰类和方法(请求方式、请求参数&请求头、Ant风格路径...

2019-04-29 19:59:25 516

原创 Java学习之ZooKeeper瑞士军刀简介

1、简介ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能,ZooKeeper被称为分布式系统中的万能工具好比瑞士军刀。2、基本概念本节将介绍 ZooKeeper 的几个...

2019-04-29 19:56:55 199

原创 Java学习之系统高可用性渲染接口日志自动服务降级

背景:公司都追求系统的高可用性,这里不可用时间就是其中很重要的一个指标,为此在做系统功能升级迭代的过程中如何快速处理异常恢复正常功能极为重要。现在对新增模块的要求是都增加开关,方便快速关闭异常模块,但是如果开关只是一个配置需要人为手动干预才能达到关闭异常模块的作用,其中远程连接服务器,修改配置文件,重启网站等动作不免要浪费好多的系统不可用时间,因此这里提出一个自动服务降级的想法,在程序出现...

2019-04-29 19:54:10 260

原创 公司日志系统个人看法

背景:之前做过渲染日志的记录工作,做过一些日志采集、日志分析及系统实时状况监控方面的工作,简单的学习过一些ElasticSearch的知识,而最近又有在学习大数据方面Hadoop和Storm方面的简介,就自己对这三个开源框架的了解和自己在日志记录分析方面的体验谈谈自己的想法,其中ElasticSearch、Hadoop、Storm等开源框架的学习体会也会在后续的JAVA学习开源框架中跟大家做分享,...

2019-04-29 19:50:57 648

原创 Hadoop之家族成员Pig简介

Hadoop发展很快,Hadoop作为Apache的一个顶级项目旗下有许多的子项目,今天的内容就是简单的介绍一下Hadoop家族的子项目中的Pig。下图是一个Hadoop子项目的大体结构图Pig简介Pig是Hadoop数据操作的客户端是一个数据分析引擎,采用了一定的语法操作HDFS中的数据(Pig应该说是一种语言,有人说Pig是类SQL的语言我这里只能说它的功能类似Sql语言和数据...

2019-04-29 19:46:43 8040

原创 Hadoop之HBase逻辑模型简介

HBase概念:HBase是一个分布式面向列的开源数据库,它的思想来源于Google的一篇叫BigTable的论文。与BigTable类似,BigTable是基于GFS(Google File System)的分布式列式数据库,HBase是基于HDFS(Hadoop Distributed File System)的分布式列式数据库,不了解BigTable的读者可能不知道它的内容是什么,这里简...

2019-04-29 19:45:49 1494

原创 Hadoop之YARN简介

YARN :Yet Another Resource Negotiator,有部电影《The Negotiator》叫王牌对王牌,可以看出YARN取名设计之初即有对它的定位,除了有一个霸气的英文名字同时也有个一见倾心的中文名字“雅恩”它是Hadoop 2.0后的新一代计算框架,目前可以支持多种计算框架运行在YARN上面,比如MapReduce(离线计算)、Storm(实时计算)、Spark(内...

2019-04-29 19:44:50 495

原创 Hadoop之MapReduce简介

背景:今天的MapReduce简介从生活中的一个例子说起,相信麻将作为一个中国人大家应该都熟悉,现在有一个任务,将一堆数量不确定的麻将中的萬字都挑出来统计个数该怎么做?最直接的办法就是自己动手一个一个的清一个一个的数,如果这堆麻将的数量很大呢?是不是可以分成多份,多个人清多个人数,然后把每个人的数量加起来就是所需要的总数。没错,MapReduce就是这个原理,在分布式文件系统中进行分布式处理就是把...

2019-04-29 19:43:40 325

原创 Hadoop之HDFS简介

Hadoop是Google的集群系统的开源实现:Google集群系统包括GFS(Google File System)、MapReduce、BigTable。Hadoop的两大核心支撑就是HDFS(Hadoop Distributed File System)Hadoop分布式文件管理系统和MapReduce,Hadoop的初衷是为了解决Nutch的海量数据数据爬取和存取的需求。这里主要讲解HDF...

2019-04-29 19:42:22 573

原创 C# 多线程资源克隆解决方式及其应用

背景:多线程中的共享资源处理常用的方法是加锁,但是加锁是的任务处理由并行处理编程了串行处理大大降低了多线程的效率,这里介绍另一种处理多线程共享资源的处理方式克隆,介绍在C#中克隆解决多线程问题的示例和其他开源框架中使用这种思想实现的一些功能,欢迎大家留言交流。代码:这是一段很简单的多线程循环取值的代码,虽然简单但是很快就出错了,索引超出范围原理:这就是同一个公共变量i共享出现的问题,解...

2018-10-13 10:40:58 184

原创 C#多线程List的非线程安全性

背景:最近在做多线程方面的工作,工作中发现多线程中很多坑,这里就有一个List添加对象的误区,这里做个分享跟大家讲讲这个坑是怎么形成的怎么样避免。示例:代码及错误:如果单单只从程序逻辑上看,应该没有逻辑错误,但是结果却是是有为空值的情况,这时候有些多线程经验的读者可能会想到,构造函数也是一个函数,有可能在往List中添加对象的时候,构造函数还没有将对象返回就执行了添加操作,造成了这...

2018-10-13 10:35:47 2752

原创 Java学习之SpringBoot整合SSM Demo

背景:在Java Web中Spring家族有着很重要的地位,之前JAVA开发需要做很多的配置,一堆的配置文件和部署调试一直是JavaWeb开发中的一大诟病,但现在Spring推出了SpringBoot,提供了快速单机部署调试和注解配置的便利。作为一名Java初学者本不该一开始就使用这么偷懒的方法,不利于学习但实在是抵制不住SpingBoot的诱惑还是亲自尝试了一把,本来是想自己整合Dubbo搭建一...

2018-06-20 08:52:37 563

原创 Java学习之Mysql结构优化

背景:业务发展初期为了便于快速迭代,很多应用都采用集中式的架构,随着业务规模的扩展,系统变得越来越复杂,访问量越来越大,不得不进一步扩展系统的吞吐能力。 优化1、主从集群:通过数据库的复制策略,可以将一台mysql数据库服务器中的数据复制到其他的mysql数据库服务器之上,当各台数据库服务器上都包含相同数据的时候,前端应用通过访问mysql集群中任意一台服务器,都能够读取到相同的数据,这样,每台m...

2018-06-19 15:36:58 131

原创 Java学习之Dubbo+ZooKeeper分布式服务Demo

背景:在之前的一个《Java学习之SpringBoot整合SSM Demo》分享中说到搭建ZooKeeper和Dubbo分布式框架中遇到了一些技术问题没能成功,只分享了其中的一个中间产物,那就是大家看到的《Java学习之SpringBoot整合SSM Demo》分享,带着深深的遗憾父亲节端午节没有回家陪老婆孩子也没有陪岳父岳母在公司苦学JAVA,终于现在解决了这其中的技术难点将ZooKeeper ...

2018-06-19 15:34:23 522

原创 C# 面向切面编程--监控日志记录方案

背景:现在公司整体在做监控平台,要求把各个部分的细节都记录下来,在前台页面上有所显示,所以现在需要做的就是一个监控日志的记录工作,今天讲的就是渲染监控日志的例子。 现状:当前的渲染程序没有为监控日志记录预留代码接入口,因此要新增加监控日志势必要增加新的代码。但是如果只是单单在已有逻辑中新增日志记录的代码似乎不太合理:因为记录日志的代码很多都是一样的,直接插入代码有很多重复代码;原有代码已经上线并且...

2018-06-19 15:30:06 3146

原创 C# 通用类型转换方法

在程序开发过程中经常需要进行数据的类型转换,而且如果一个字段的类型改成另一个类型时,所有相关的类型转换的地方都要跟着修改,不但造成了很多重复转换的代码而且修改字段类型时额外修改相关转换代码的工作量也很大,为此做了一个通用的类型转换方法,此方法能转换几乎所有简单的值类型以及实现了强制类型转换的引用类型,此方法利用反射和lambda实现,由于此方法是在大约2010年左右写的,当时个人知识有限对反射了解...

2018-06-19 15:24:35 904

原创 C# 结构体集合元素属性不可修改疑惑

背景:用C#的人都知道结构体在C#中是值类型的,由于这个原因出现了一个有趣的问题,那就是结构体集合通过数字索引修改对应属性的值能不能影响到集合中的结构体呢?答案很多人可能会说不能,因为结构体是值类型的那是一个副本;也可能有人说会,因为它是通过集合索引来操作的,集合本身时引用类型,集合索引取得的将是集合引用的一个地址按理应该也是引用类型的。 结论:结果可能会大跌眼镜,结果是C#编译器根本通不过这样的...

2018-06-19 15:19:44 2651

原创 C# 异常内存信息导出Dump文件

背景:很多情况下程序崩溃我们只能看到程序抛出来的异常信息,但是有时候异常信息不清不楚我们处理异常还是一头雾水,这种情况下我们就很希望能有种办法获取程序运行时的内存进行调试,查看其中的变量、参数、方法执行情况等信息,这里就提供一种异常时将程序的异常时内存信息导出到文件的方法,这是当初设计渲染监控日志时的一个初步设想,想错误内存导出保存起来帮助分析处理异常,但是与渲染的同事接触后了解到渲染时内存达10...

2018-06-19 15:15:27 2065

原创 C# 不使用Task实现的多线程顺序执行

多线程有很好的并发性即无序性,在某些特殊情况下需要用到多线程然而又要使其具备顺序性,这种时候就有了一个特殊的场景那就是多线程顺序执行,在现在VS2015中Task自带了顺序执行的方法,但在此之前的旧项目中如果需要使用多线程顺序执行该怎么办呢?Task又是怎么实现的呢?这里提供了一种类似Task顺序执行多线程的实现(可能跟Task的原理有很大区别),希望对大家能有帮助,对此类问题的实现有更好的思路和...

2018-06-19 15:10:53 1870

原创 C# Lambda快速深度拷贝

背景:今天上班在班车上和一个同事讨论有关C#拷贝效率的问题,聊到了多种深度拷贝方法,其中就提到了一种Lambda表达式拷贝的方法,这位同事说这种深度拷贝快是快但是如果对象里面再嵌入对象就不能深度拷贝了,只进行浅拷贝,我很疑惑,如果是这样设计的那这个深度拷贝还有什么意义呢?于是办公室开始写Demo,经过多次修改发现是可以实现嵌套对象深度拷贝的,把实验结果写出来跟大家分享,顺便告诉那位同事问题解决了。...

2018-06-19 15:05:49 348

原创 C# IL中间代码注入实现切面编程

背景及现状:之前分享的那篇“面向切面编程–渲染监控日志记录方案”中提供了利用RealProxy作为代理类来生成代理的面向切面的编程方法,那个方法可以实现面向切面编程进行日志记录,现在渲染主程序也是采用的这种方式。那篇分享中也提到使用这中方式不适用于静态方法,而且代理类需继承一个接口或者MarshalByRefObject类,为此这里寻找到了另一种更直接的方法进行动态代理,来解决这两个弊端。 解决方...

2018-06-19 15:01:27 1751 1

原创 C# Dynamic通用反序列化Json类型并遍历属性比较

背景 : 最近在做JAVA 3D API重写,重写的结果需要与原有的API结果进行比较,只有结果一致时才能说明接口是等价重写的,为此需要做一个API结果比较的工具,比较的内容就是Json内容,但是为了实现宽泛的内容相等即只需要字段和值相等即可,不需要字符串严格相等,这种情况下就需要将Json内容字符串转换成具体的对象,出于通用性方面的考虑希望这个工具能比较所有的API结果不单单只是3D的API,所...

2018-06-19 14:41:08 2576

FourBeauties.zip

使用过程面向对象无SQL语句 支持生成无限查询条件 支持分库分表 自带DAO 自带Service 支持统计查询 支持Sql语句查询 支持事务查询

2020-05-29

C#多线程List的非线程安全性

最近在做多线程方面的工作,工作中发现多线程中很多坑,这里就有一个List添加对象的误区,解释了List容量扩展后内存开辟导致的线程不安全性的问题,这里做个分享跟大家讲讲这个坑是怎么形成的怎么样避免。

2018-11-07

C#泛型参数多线程与复杂参数多线程2

最近用多线程用的比较多自己走了一些弯路,分享出来希望大家少走弯路,C#中的多线程有两个重载,一个是不带参数的,一个是带参数的,但是即便是带参数的多线程也不支持泛型,这使得使用泛型参数多线程的时候很不方便,毕竟从泛型类型传入参数向上转型的objcet类型的参数调用带参的多线程很容易,而将object类型还原成泛型却很难。 复杂参数的多线程,如果方法带有参数ref或out就不能使用带参数的多线程。

2018-07-19

C#泛型参数多线程与复杂参数多线程

最近用多线程用的比较多自己走了一些弯路,分享出来希望大家少走弯路,C#中的多线程有两个重载,一个是不带参数的,一个是带参数的,但是即便是带参数的多线程也不支持泛型,这使得使用泛型参数多线程的时候很不方便,毕竟从泛型类型传入参数向上转型的objcet类型的参数调用带参的多线程很容易,而将object类型还原成泛型却很难。 复杂参数的多线程,如果方法带有参数ref或out就不能使用带参数的多线程。

2018-07-19

SpringMVC Employee Demo

内容:本次实践内容包括RequestMapping关键字修饰类和方法(请求方式、请求参数&请求头、Ant风格路径)、PathVariable注解、HiddenHttpMethodFilter 过滤器(将Get请求转换成PUT、DELETE请求)、RequestParam 注解、RequestHeader 注解、CookieValue 注解、使用POJO作为参数(属性与页面自动匹配及级联)、使用Servlet原生API作为参数、处理模型数据(ModelAndView、Map、SessionAttributes注解)、ModelAttribute注解如修饰POJO类型的入参、SessionAttributes注解引发的异常处理、JstlView、mvc_view-controller标签转换成注解、自定义视图、重定向、Employee管理RESTRUL_CRUD_显示所有员工信息、RESTRUL_CRUD_添加操作&表单标签、RESTRUL_CRUD_删除操作&处理静态资源、RESTRUL_CRUD_修改操作、自定义类型转换器、annotation-driven配置、InitBinder注解、数据的格式化、JSR303数据校验、错误消息的显示及国际化、Ajax返回JSON、使用HttpMessageConverter、国际化_通过超链接切换中英文、文件上传、自定义的拦截器、拦截器的零Xml配置、异常处理(ExceptionHandler注解、ResponseStatusExceptionResolver、SimpleMappingExceptionResolver)等

2018-06-20

SpringMVC示例

本次实践内容包括RequestMapping关键字修饰类和方法(请求方式、请求参数&请求头、Ant风格路径)、PathVariable注解、HiddenHttpMethodFilter 过滤器(将Get请求转换成PUT、DELETE请求)、 RequestParam 注解、RequestHeader 注解、CookieValue 注解、使用POJO作为参数(属性与页面自动匹配及级联)、使用Servlet原生API作为参数、处理模型数据(ModelAndView、Map、SessionAttributes 注解)、ModelAttribute注解如修饰POJO类型的入参、SessionAttributes注解引发的异常处理、JstlView、mvc_view-controller标签转换成注解、自定义视图、重定向、Employee管理RESTRUL_CRUD_显示所有 员工信息、RESTRUL_CRUD_添加操作&表单标签、RESTRUL_CRUD_删除操作&处理静态资源、RESTRUL_CRUD_修改操作、自定义类型转换器、annotation-driven配置、InitBinder注解、数据的格式化、JSR 303数据校验、错误消息的显示及国际化、Ajax返回JSON、使用HttpMessageConverter、国际化_通过超链接切换中英文、文件上传、自定义的拦截器、拦截器的零Xml配置、异常处理(ExceptionHandler注解、 ResponseStatusExceptionResolver、SimpleMappingExceptionResolver)等

2018-06-20

Java学习之Dubbo+ZooKeeper分布式服务Demo

在之前的一个《Java学习之SpringBoot整合SSM Demo》分享中说到搭建ZooKeeper和Dubbo分布式框架中遇到了一些技术问题没能成功,只分享了其中的一个中间产物,那就是大家看到的《Java学习之SpringBoot整合SSM Demo》分享,带着深深的遗憾父亲节端午节没有回家陪老婆孩子也没有陪岳父岳母在公司苦学JAVA,终于现在解决了这其中的技术难点将ZooKeeper Dubbo框架的搭建工作完成,所以赶紧跟大家写一篇分享,由于只是一个Demo,所以只是写了一个很简单的例子,希望大家不要见笑。

2018-06-19

C# 面向切面编程--监控日志记录方案

对于所有需要进行日志记录的方法的采用对该方法所在的类进行动态代理的方式处理。在代理方法中的在原有方法的前后新增日志记录,动态代理采用装饰器模式实现通常称为AOP,AOP方面的内容请参阅: https://msdn.microsoft.com/zh-cn/library/dn574804.aspx 。以上是对已经存在的类的方法进行日志记录采用动态代理该类,对于方法内部的某个地方进行日志记录的,采用动态代理Stopwatch来实现。因为方法内部的日志一般都要统计时间长度,动态代理Stopwatch的Start方法和Stop方法,在Start和Stop调用的时后记录出方法的执行时间和中间参变量的值。

2018-06-19

C# 通用类型转换方法

在程序开发过程中经常需要进行数据的类型转换,而且如果一个字段的类型改成另一个类型时,所有相关的类型转换的地方都要跟着修改,不但造成了很多重复转换的代码而且修改字段类型时额外修改相关转换代码的工作量也很大,为此做了一个通用的类型转换方法,此方法能转换几乎所有简单的值类型以及实现了强制类型转换的引用类型,此方法利用反射和lambda实现,由于此方法是在大约2010年左右写的,当时个人知识有限对反射了解不深,没有将元数据中的方法成功转换成委托以达到更高的运行效率,对效率有要求的同学可以自行扩展一下,有很多考虑不全面的地方还望大家多多交流。

2018-06-19

C# 结构体集合元素属性不可修改疑惑

背景:用C#的人都知道结构体在C#中是值类型的,由于这个原因出现了一个有趣的问题,那就是结构体集合通过数字索引修改对应属性的值能不能影响到集合中的结构体呢?答案很多人可能会说不能,因为结构体是值类型的那是一个副本;也可能有人说会,因为它是通过集合索引来操作的,集合本身时引用类型,集合索引取得的将是集合引用的一个地址按理应该也是引用类型的。 结论:结果可能会大跌眼镜,结果是C#编译器根本通不过这样的修改,有关文档的说法是值类型的数据是一个栈上的值,索引取出的是一个栈返回值是一个临时数据副本,即使能够修改结果也影响不到原有数据,所以编译器禁止做这样的操作。(C++中由于结构体是一个特殊的类属于引用类型因此没有这个问题)

2018-06-19

C# 异常内存信息导出Dump文件

背景:很多情况下程序崩溃我们只能看到程序抛出来的异常信息,但是有时候异常信息不清不楚我们处理异常还是一头雾水,这种情况下我们就很希望能有种办法获取程序运行时的内存进行调试,查看其中的变量、参数、方法执行情况等信息,这里就提供一种异常时将程序的异常时内存信息导出到文件的方法,这是当初设计渲染监控日志时的一个初步设想,想错误内存导出保存起来帮助分析处理异常,但是与渲染的同事接触后了解到渲染时内存达10G,导出太占资源便放弃了,这里只抛砖引玉跟大家介绍有这种东西如有需要再进行深入研究,这种方法在C++中很常见,但在C#中却鲜为人知,如有这方面深入研究的同事欢迎大家留言交流。如果将来遇到异常无法调试时就可以考虑将目标机器上异常现场内存导出到Dump文件中,然后通过Dump文件操作达到分析处理异常的目的,具体关于Dump的操作请参看如下文章http://blog.csdn.net/icandoit_2014/article/details/78739962

2018-06-19

C# 不使用Task实现的多线程顺序执行

多线程有很好的并发性即无序性,在某些特殊情况下需要用到多线程然而又要使其具备顺序性,这种时候就有了一个特殊的场景那就是多线程顺序执行,在现在VS2015中Task自带了顺序执行的方法,但在此之前的旧项目中如果需要使用多线程顺序执行该怎么办呢?Task又是怎么实现的呢?这里提供了一种类似Task顺序执行多线程的实现(可能跟Task的原理有很大区别),希望对大家能有帮助,对此类问题的实现有更好的思路和技巧的同学欢迎留言,大家一起探讨。

2018-06-19

C# Lambda快速深度拷贝

今天上班在班车上和一个同事讨论有关C#拷贝效率的问题,聊到了多种深度拷贝方法,其中就提到了一种Lambda表达式拷贝的方法,这位同事说这种深度拷贝快是快但是如果对象里面再嵌入对象就不能深度拷贝了,只进行浅拷贝,我很疑惑,如果是这样设计的那这个深度拷贝还有什么意义呢?于是办公室开始写Demo,经过多次修改发现是可以实现嵌套对象深度拷贝的,把实验结果写出来跟大家分享,顺便告诉那位同事问题解决了。

2018-06-19

C# IL中间代码注入实现切面编程

之前分享的那篇“面向切面编程–渲染监控日志记录方案”中提供了利用RealProxy作为代理类来生成代理的面向切面的编程方法,那个方法可以 实现面向切面编程进行日志记录,现在渲染主程序也是采用的这种方式。那篇分享中也提到使用这中方式不适用于静态方法,而且代理类需继承一个接口或 者MarshalByRefObject类,为此这里寻找到了另一种更直接的方法进行动态代理,来解决这两个弊端。

2018-06-19

C# Dynamic通用反序列化Json类型并遍历属性比较

个API结果比较的工具,比较的内容就是Json内容,但是为了实现宽泛的内容相等即只需要字段和值相等即可,不需要字符串严格相等,这种情况下就需要将Json内容字符串转换成具体的对象,出于通用性方面的考虑希望这个工具能比较所有的API结果不单单只是3D的API,所有在反序列化Json字符串时需要一种通用的转换方式,而不是写死的某个类的反序列化,这里介绍的一种思路就是使用dynamic关键字来实现通用反序列化并比较反序列化后的对象是否深度相等即比较对象的各个字段是否相等。深度相等通过两个方法一个字段相等和集合相等,字段相等区分字段名称和字段值是否相等,集合相等则将集合转换成元素,元素再比较字段相等,字段中包含集合的再递归调用实现。

2018-06-19

C# 设计模式示例

设计模式示例源码 关乎20种设计模式简单代码,主要是实现方式,讲解比较详细。 每一种设计模式都有具体的描述以及详细的实现代码。 学习设计模式的朋友可以参考。

2012-02-29

C#邮件发送功能实现,以163邮箱服务器为例,读取Excel文件内容的收信人发送邮件。

C#邮件发送功能实现,以163邮箱服务器为例,读取Excel文件内容的收信人发送邮件。

2011-03-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除