聚合文章列表
16 浏览

通过减少内存使用改善.NET性能

对.NET的性能调优来说,我们有一个普遍被误解的观念:规避内存分配的重要性。人们认为,由于内存分配是快速的,因此很少会对性能产生影响。要理解导致这种误解的原因,我们必须回到在C++和VisualBasic4到6中所看到的COM编程时代。对于COM,内存是使用引用计数形式的垃圾回收器进行管理的。每当将一个对象分配给一个引用变量时,就会增加一个隐藏的计数器。如果变量被重新分配或从作用域退出,计数器就会被取消。如果计数器达到0,对象就会被删除,将内存释放到其他地方。这种内存管理系统是“确定的”。通过仔细分析,你可以确定何时删除一个对象。这意味着你可以自动释放数据库连接等资源。而对于.NET而言,你需要一个单独的机制(例如,销毁/启用)以确保非内存资源能够及时地被释放。引用计数垃圾收集器有三个主要的缺点。首先,它们容易受到“循环引用”的影响。如果两个对象相互引用,即使是间接的,那么引用计数也不可能降为0,这便会导致内存泄漏的发生。我们必须小心地编写代码,要么避免循环引用,要么提供某种解构方法以便在当对象不再需要时中断循环。工作在多线程

.Net 2017-12-14 发布
13 浏览

SQLServer复习文档1(with C#)

正文:回到顶部前言:对于SQLServer的相关知识我都是在校的时候了解的,毕业到现在可以说完全没有再碰了,所谓三天不练手生,所以关于数据库这一块的知识我可以说完完全全还给老师了(emmmm,对不起我的学费呀),而且最尴尬的是数据库的知识可以说是软件开发一块很重要的东西了,不说特别精通,但是我这种完全还给老师的“人才”可能也是没谁了,所以!为了我曾经的学费,又重新捡起来学一下吧,目前本人供职于C#,所以文中所有的代码联系均为C#语言,另:文中的点都是基础知识复习(就我这水平也暂时别指望从这里看到很高深的技术了o(╯□╰)o)。回到顶部SQLServer基础准备SQLServer:StructuredQueryLanguage结构化查询语句。1.新建数据库这里我就懒得说什么乱七八糟的定义了,SQL中重要的就是建表,表中重要的就是有主键,差不多就这两个点。然后我现在直接通过数据库建表:2.在数据库中添加表然后再表中添加各种信息(在这里我将学生编号设置为主键):注意:一个表中一定要有一个主键!

.Net 2017-12-14 发布
31 浏览

HandlerThread解析以及相关问题分析

HandlerThread相信大家都比较熟悉了,从名字上看是一个带有Handler消息循环机制的一个线程,比一般的线程多了消息循环的机制,可以说是Handler+Thread的结合,从源码上看也是如此的设计,一般情况下如果需要子线程和主线程之间相互交互,可以用HandlerThread来设计,这比单纯的Thread要方便,而且更容易管理,因为大家都知道Thread的生命周期在一些情况下是不可控制的,比如直接newThread().start(),这种方式在项目中是不推荐使用的,实际上Android的源码中也有很多地方用到了HandlerThread,下面我将分析一下HandlerThread以及涉及到的一些其他相关的问题。HandlerThread的源码简单分析intmPriority;intmTid=-1;LoopermLooper;private@NullableHandlermHandler;publicHandlerThread(Stringname){super(name);mPriority=Pro

消息系统 2017-12-14 发布
AD 友情赞助
18 浏览

Android程序员的救赎之路(一)

十年之前,你不认识我,我不认识你。2008年Android刚刚发布SDK1.0的时候,我提醒一个同事去学习,一年之后他又把我推荐回Android开发。可以说,Android开发改变了我很多,对于遇事总是慢半拍的我来说,总算有一样赶上了一波浪潮。我一直是一个能把工作和生活区分得很开的人,所以Android应用的开发比较合适当时投身移动端开发的我。你当前做的决定都是最合适当前的你的,不是吗。因为Android应用在业务和框架上是比较单一的,很多应用其实一个人都可以搞定,比较利于小作坊或者小团队,沟通的节点会少很多。沟通的节点少了,你才可能有更多的时间和精力关注自己的事情。这也是我最初从J2EE转到J2ME的理由。但是,老子说的对:“祸兮福之所倚,福兮祸之所伏”。单纯的Android应用开发,可能你会觉得很容易把控,但却会让你很容易就走到职业的天花板。Android应用太专注于某一个面,如用战争来比喻的话,相对于整个战役,它可能仅是前线的战壕。你可能很擅长在战壕里和敌人近身搏击,但兵马未动粮草先行,运筹帷幄在千里之外可能更容易看到多

程序员 2017-12-19 发布
16 浏览

女程序员被黑的最惨的一张图,拍照的还活着吗?

分享之后我还是要推荐下我自己的前端学习群:547931294,不管你是小白还是大牛,小编我都挺欢迎,不定期分享干货,包括我自己整理的一份2017最新的前端资料和零基础入门教程,送给大家,欢迎初学和进阶中的小伙伴。06程序员爱情观:爱情就是死循环,一旦执行就陷进去了;爱上一个人,就是内存泄漏–你永远释放不了;真正爱上一个人的时候,那就是常量限定,永远不会改变;女朋友就是私有变量,只有我这个类才能调用;情人就是指针用的时候一定要注意,要不然就带来巨大的灾难。07据说有一位软件工程师,一位硬件工程师和一位项目经理同坐车参加研讨会。不幸在从盘山公路下山时坏在半路上了。于是两位工程师和一位经理就如何修车的问题展开了讨论。硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”08

程序员 2017-12-19 发布
18 浏览

程序猿秒懂的段子动态图,平常人看了一头雾水

8.一晚下班回家,一民警迎面巡逻而来。突然对我大喊:站住!民警:int类型占几个字节?我:4个。民警:你可以走了。我感到很诧异。我:为什么问这样的问题?民警:深夜还在街上走,辛苦又寒酸的样子,不是小偷就是程序员。9.知道JAVA程序员和C程序员的差别吗?食堂里,吃完饭就走的是JAVA程序员,吃完饭还要自己收拾的那就是是C程序员。分享之后我还是要推荐下我自己的前端学习群:547931294,不管你是小白还是大牛,小编我都挺欢迎,不定期分享干货,包括我自己整理的一份2017最新的前端资料和零基础入门教程,送给大家,欢迎初学和进阶中的小伙伴。10.【程序员被提bug之后的反应】1.怎么可能;2.在我这是好的,不信你来看看;3.真是奇怪,刚刚还好好的;4.肯定是数据问题;5.你清下缓存试试;6.重启下电脑试试;7.你装的什么版本的类库(jdk);8.这谁写的代码;9.尼玛怎么还在用360安全浏览器;10.用户不会像你这么操作的。11.程序员最讨厌的四件事:写注释、写文档、别人不写注释、别人不写文档……12.while(tomorrow

程序员 2017-12-19 发布
AD 友情赞助
14 浏览

MySQL锁优化

常见的有行锁和表锁。表锁会锁住整张表,并发能力弱,开发中要避免使用表级锁。行锁只将单行数据锁住,锁数据期间对其它行数据不影响,并发能力高,一般使用行锁来处理并发事务。MySQL是如何加不同类型的锁的?对于加锁数据的筛选条件,有其对应的索引建立,MySQL可以快速定位的数据进行行级加锁;而对于没有索引的情况,MySQL的做法是会先锁住整张表,然后再去获取数据,然后将不满足条件的数据锁释放掉。等待锁超时问题Lockwaittimeoutexceeded;tryrestartingtransaction一种情况是因为有操作语句对整个表加锁了,这里发现的例子是在开启事务做UPDATE更新时发现的,UPDATE条件如果不是主键或者没有索引则会锁整张表,只有以主键为条件或完全匹配的唯一索引做更新才是行级锁。还有就是另一个事务中持有锁时间过长导致。SELECT*FROMINNODB_TRX;//查看事务表锁状态//创建事务,更新语句,但是不提交SETSESSIONAUTOCOMMIT=off;BEGI

MySQL 2017-12-14 发布
20 浏览

Vue 2.0学习笔记:自定义指令

在Vue中为了更好的操作DOM元素,其内置了一些指令,比如v-model、v-if、v-show、v-text、v-html、v-for和v-bind等。除此之外,Vue也允许注册自定义指令。这些自定义指令可以说我们对普通DOM元素进行底层操作。比如@SARAHDRASNER写的一篇有关于Vue自定义指令的文章,简单易懂。今天自己也仔细撸了一下Vue中怎么实现自定义的指令。钩子函数创建自定义指令,在Vue中一个指令定义对象可以提供下面几个钩子函数,而这几个钩子函数都是可选的:bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置inserted:被绑定元素插入父节点时调用(仅保证父节点存在,但不一定已被插入文档中)update:所在组件的VNode更新时调用,但是可能发生在其子VNode更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新componentUpdated:指令所在组件的VNode及

Vue.js 2017-12-13 发布
19 浏览

Zombie.js in node.js fails to scrape certain websites

Thesimplescriptbelowreturnsabunchofrubbish.Itworksformostwebsites,butnotwilliamhill:varBrowser=require("zombie");varassert=require("assert");//Loadthepagefromlocalhostbrowser=newBrowser()browser.visit("http://sports.williamhill.com/bet/en-gb/betting/y/5/et/Football.html",function(){browser.wait(function(){console.log(browser.html());});});runwithnodeoutput:S锟斤拷锟斤拷J锟斤拷锟斤拷戟�RU�锟�kf锟�6锟斤拷锟�Efr2锟�Riz锟斤拷锟斤拷锟�^锟斤拷0锟�X锟�锟斤拷{锟�^锟�a锟�yp锟斤拷p锟斤

JavaScript 2017-12-14 发布
AD 友情赞助
18 浏览

canvas实现iPhoneX炫彩壁纸屏保外加pixi.js流体动效

这篇文章发布于2017年12月14日,星期四,01:23,归类于canvas相关。阅读93次,今日93次byzhangxinxufromhttp://www.zhangxinxu.com/wordpress/?p=6614本文可全文转载,但需得到原作者书面许可,同时保留原作者和出处,摘要引流则随意。一、iPhoneX风格炫彩壁纸效果先体验这个效果我想实现已经很久了,最近排上日程,花时间研究和试验了下,个人觉得效果还行,拿出来给大家分享一下。随便截几张效果图:每次刷新都会随机生成一个壁纸。Demo页面在这里,您可以狠狠的点击这里:iPhoneX炫彩壁纸背景demo(含动效)如果您的浏览器开启了GPU加速,则可以看到炫彩的背景实际上是在不断流动的。二、如何把这个壁纸效果用在自己项目中?步骤如下:1.引入我写的JS,colorful-min.js:很小,压缩就3K多点。2.根据API调用co

HTML5 2017-12-14 发布
18 浏览

5、C#基础 - C#的值类型

1、C#的值类型有几个特点:存储在栈里基于值类型的变量直接包含值(值类型存储实际值)。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。所有的值类型均隐式派生自System.ValueType。与引用类型不同,不能从值类型派生出新的类型。但与引用类型相同的是,结构也可以实现接口。与引用类型不同,值类型无法包含null值。但是,可以为null的类型功能允许值类型分配给null。每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。值类型分为两类:struct(结构)、enum(枚举)struct(结构)分为以下几类:Numeric(数值)类型

.Net 2017-12-13 发布
41 浏览

rabbitmq(中间消息代理)在python中的使用

在之前的有关线程,进程的博客中,我们介绍了它们各自在同一个程序中的通信方法。但是不同程序,甚至不同编程语言所写的应用软件之间的通信,以前所介绍的线程、进程队列便不再适用了;此种情况便只能使用socket编程了,然而不同程序之间的通信便不再像线程进程之间的那么简单了,要考虑多种情况(比如其中一方断线另一方如何处理;消息群发,多个程序之间的通信等等),如果每遇到一次程序间的通信,便要根据不同情况编写不同的socket,还要维护、完善这个socket这会使得编程人员的工作量大大增加,也使得程序更易崩溃。所以,一般遇到这种情况,便使用消息队列MQ(MessageQueue),那么问题来了。1.什么是消息队列MQ?MQ是一种应用程序对应用程序的通信方法。应用程序通过读出(写入)队列的消息(针对应用程序的数据)来通信,而无需使用专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,排队指的是应用程序通过队列来通信。队列的使用排除了接收和发送应用程序同时执行的要求。2.什么是rabbitmq

消息系统 2017-12-13 发布
AD 友情赞助
30 浏览

Druid学习笔记(4)数据摄入总结

1.概述Druid的数据摄入主要包括两大类:1.实时输入摄入:包括Pull,Push两种-Pull:需要启动一个RealtimeNode节点,通过不同的Firehose摄取不同种类的数据源。-Push:需要启动Tranquility或是Kafka索引服务。通过HTTP调用的方式进行数据摄入2.离线数据摄入:可以通过Realtime节点摄入,也可以通过索引节点启动任务摄入本文演示环节主要基于上一章部署的集群来进行2.实时数据摄入2.1Pull由于RealtimeNode没有提供高可用,可伸缩等特性,对于比较重要的场景推荐使用TranquilityServeror或是TranquilityKafka索引服务2.2PushIndexingservice在前文已经介绍过了,Tranquility是一个Scala库,它通过索引服务实现数据实时的摄入。它之所以存在,是因为IndexingserviceAPI属于低层面的。Tranquility是对索引服务进行抽象封装,对使用者屏蔽了创建任务

消息系统 2017-12-13 发布
40 浏览

rocketmq定时清理commitlog文件源码分析

rocketmq的配置参数//何时触发删除文件,默认凌晨4点删除文件@ImportantFieldprivateStringdeleteWhen="04";猜想rocketmq会起一个一天执行一次的定时任务。但看了代码发现并不是这样。在存储服务启动时,启动如下的定时任务:privatevoidaddScheduleTask(){//定时删除过期文件this.scheduledExecutorService.scheduleAtFixedRate(newRunnable(){@Overridepublicvoidrun(){DefaultMessageStore.this.cleanFilesPeriodically();}},1000*60,this.messageStoreConfig.getCleanResourceInterval(),TimeUnit.MILLISECONDS);getCleanResourceInterval默认是10s。没10s执行CleanCommitLogS

消息系统 2017-12-19 发布
34 浏览

我是为什么因为饱醉豚离开简书?

我是为什么因为饱醉豚离开简书?这应该不是一个伪命题,搜一下关于因为饱醉豚离开简书是日趋增多。这不伐饱醉豚对于程序员黑的事情,加上简叔跟风为了一己私利维护网站蛀虫的存在。我是很早就开始写小说了,大概在2005年的时候就开始了。当时起点也是类似饱醉豚蛀虫的存在。虽然这么作者给起点带来了流量,但是无疑是一种恶性,并且不是良性的存在。最后起点还是痛下心来整改了这些所谓的蛀虫。我起先写小说是因为我爱好文学,后来做了程序员是为了生活。我抱起了文学,却站不起来。我站起来,却触摸不到文学。这个世界是残酷的,这个世界是需要生存的。我们在理想和生存之间必须选择一种的话,那必须是生存。所以虽然我是程序员,但是我的骨子里面却不喜欢别人这么称呼我。我总觉得程序员和我理想的文艺小说家差距太大。但是这并不能成为让别人诋毁我的一个特点,我成为程序员也是为了养活自己。我虽然不觉得程序员是一种光荣的职业,但是也不会诋毁程序员。因为这个行业让我养活了我自己,养活了我的家人,包括目前正在健康成长的女儿。在饱醉豚的众多文章当众,骂程序员的占了一大半。我

程序员 2017-12-19 发布
26 浏览

程序员最经常用的5大编程学习网站,你用过几个?

编程现在越来越受人们的欢迎。Python居然成了高考项目,纳入浙江省信息技术高考范畴。有些新手程序员可能并不清楚在哪个网站学编程,下面我们不妨来看下程序员必须收藏的5大网站(适用于PHP、python、java、C等):程序员最经常用的5大编程学习网站,你用过几个?0、博客园博客园是一个面向开发者的知识分享社区。在博客园里,有新手,也有专家,他们会分享各种的编程技术。当然,还有他们的编程经历。程序员最经常用的5大编程学习网站,你用过几个?1、w3cschool有不少计算机专业的学生应该都有此经历,计算机老师会推荐w3cschool官方网站。w3cschool网站的包含大量的编程教程,如后端开发:PHP开发、java开发、前端开发:web前端开发、html5等。不过,有不少的程序员搜的时候,会发现有很多类似的网站,认清楚w3cschool官方logo就可以啦!程序员最经常用的5大编程学习网站,你用过几个?比如你可以使用w3cschool微课进行学习python。w3cschool微课采用循序渐进的方式

程序员 2017-06-29 发布
19 浏览

软件开发知识体系

作者|杨_飞地址|http://blog.csdn.net/yangfeixien/article/details/54647026声明|本文是杨_飞原创,已获授权发布,未经原作者允许请勿转载软件开发历程ALLINONE软件开发最早时期的开发模式,可以理解为一体化,所有业务、接口都在一套系统,毫无层次可言。MVCMVC是一种使用MVC(ModelViewController模型-视图-控制器)设计创建Web应用程序的模式。RPCRPC(RemoteProcedureCallProtocol)——远程过程调用协议简单的说,RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。RPC会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯)RPC是一个请求响应模型。客户端发起请求,服务器返回响应(类似于Http的工作方式)RPC在使用形式上像调用本地函数(或方法)

软件架构 2017-12-13 发布
35 浏览

MySQL 引擎特性:InnoDB崩溃恢复

原文出处:水中的泪前言数据库系统与文件系统最大的区别在于数据库能保证操作的原子性,一个操作要么不做要么都做,即使在数据库宕机的情况下,也不会出现操作一半的情况,这个就需要数据库的日志和一套完善的崩溃恢复机制来保证。本文仔细剖析了InnoDB的崩溃恢复流程,代码基于5.6分支。基础知识lsn:可以理解为数据库从创建以来产生的redo日志量,这个值越大,说明数据库的更新越多,也可以理解为更新的时刻。此外,每个数据页上也有一个lsn,表示最后被修改时的lsn,值越大表示越晚被修改。比如,数据页A的lsn为100,数据页B的lsn为200,checkpointlsn为150,系统lsn为300,表示当前系统已经更新到300,小于150的数据页已经被刷到磁盘上,因此数据页A的最新数据一定在磁盘上,而数据页B则不一定,有可能还在内存中。redo日志:现代数据库都需要写redo日志,例如修改一条数据,首先写redo日志,然后再写数据。在写完redo日志后,就直接给客户端返回成功。这样虽然看过去多写了一次盘,但是由于把对磁盘的随机写入(

MySQL 2017-12-13 发布
17 浏览

学习Angular前了解下TypeScript

Angular2对比于Angular1就像是Java与Javascript,正因为变化巨大,用AngularJS来代表1.x版本,而Angular代表2.x、4.x、5.x等后续版本。参考《Angular权威教程》记录一下Angular家族史,本文简介一下TypeScript。TypeScriptAngular是用一种类似于JavaScript的语言–TypeScript构建的。TypeScript并不是一门全新的语言,而是ES6的超集。所有ES6代码都是完全有效且可编译的TypeScript代码。TypeScript相对于ES5有五大改善:

JavaScript 2017-12-13 发布
35 浏览

前端代码异常监控实战

写文章登录前端代码异常监控实战林东洲7hoursago原文地址前言之前在对公司的前端代码脚本错误进行排查,试图降低JSError的错误量,结合自己之前的经验对这方面内容进行了实践并总结,下面就此谈谈我对前端代码异常监控的一些见解。本文大致围绕下面几点展开讨论:JS处理异常的方式上报方式异常监控上报常见问题JS异常处理对于Javascript而言,我们面对的仅仅只是异常,异常的出现不会直接导致JS引擎崩溃,最多只会使当前执行的任务终止。当前代码块将作为一个任务压入任务队列中,JS线程会不断地从任务队列中提取任务执行。当任务执行过程中出现异常,且异常没有捕获处理,则会一直沿着调用栈一层层向外抛出,最终终止当前任务的执行。JS线程会继续从任务队列中提取下一个任务继续执行。在对脚本错误进行上报之前,我们需要对异常进行处理,程序需要先感知到脚本错误的发生,

JSONP 2017-12-13 发布
AD 友情赞助