Python连接SQL Server数据获取
importpyodbcconn=pyodbc.connect(r'DRIVER={SQLServerNativeClient10.0};SERVER=10.10.1.87;DATABASE=test_1;UID=qcm;PWD=qcm123')cursor=conn.cursor()cursor.execute("exectest")row=cursor.fetchone()ifrow:print(row)rows=cursor.fetchall()forrowinrows:print(row.F1,row.F4)forrowincursor:print(row.F1,row.F4)cursor.execute("deletefromA20170816whereF4=?",'513902198511158151')conn.commit()cursor.close()conn.close()importpyodbc
不同的SQLserver版本对应的DRIVER字段不同。
SQLServer实战日记--日志传送同步中断问题排查
背景给客户搭建了一个日志传送,从A服务器通过日志传送到B服务器,B服务器作为报表服务器,可以查询一些报表.架构如下图:但是今天突然告诉我,他们的日志传送不同步了,辅助服务器上面没有最新的数据。问题排查打开辅助服务器上面的作业活动监视器,检查作业的执行情况:果然还原日志的作业发生了错误。点开查看详情,可以看到错误如下:原来是正在还原的文件太新了,无法应用到辅助服务器.此文件我2017-12-1717:00的文件但是查看上一条历史记录可以看,上次还原的日志记录是2017-12-1716:30所以问题是发生在2017-12-1717:00的备份上,此时我们检查主服务器的日志备份:SELECTbackup_set_id,database_name,(CASEtypeWHEN'd'THEN'完整'WHEN'i'THEN'差异数据库'WHEN'l'THEN'日志'ELSEtypeEND)ASbackuptype,b.physical_device_name,backup_start_
AJAX跨域“Access-Control-Allow-Origin” JAVA WEB个人解决方法
ajax跨域访问是一个老问题了,解决方法很多,比较常用的是JSONP方法,JSONP方法是一种非官方方法,存在各种问题,大家可以自行百度。我们项目使用SpringWebMVC,如果你们没有用SpringWebMVC也不用担心,因为方法是通用的。解决方法:通过设置Access-Control-Allow-Origin来实现跨域访问,需要通过response设置。Access-Control-Allow-Origin:*表示允许任何域名跨域访问,如果需要指定域名,大家自行百度学习,我们的项目是手机客户端页面,用不上。SpringWebMVC下面完整例子@Controller@RequestMapping("/LuozhuangMobileControl.do")publicclassLuozhuangMobileControl{/***用户登录**@paramrequest*@return*/@RequestMapping(params="loginCheck")@ResponseBodypublic
Webpack实战-为单页应用生成HTML
Webpack实战-为单页应用生成HTML引入问题在简单的项目里因为只输出了一个bundle.js文件,所以手写了一个index.html文件去引入这个bundle.js,才能让应用在浏览器中运行起来。在实际项目中远比这复杂,一个页面常常有很多资源要加载。接下来举一个实战中的例子,要求如下:项目采用ES6语言加React框架。给页面加入GoogleAnalytics,这部分代码需要内嵌进HEAD标签里去。给页面加入Disqus用户评论,这部分代码需要异步加载以提升首屏加载速度。压缩和分离JavaScript和CSS代码,提升加载速度。在开始前先来看看该应用最终发布到线上的代码:
从 webpack 到全面拥抱 Parcel #2 让 Parcel 支持 vue
原文发表于:www.rails365.net相关链接(网友提供):parcel-plugin-vueparcel-demo默认情况下Parcel是支持React和Preact,可以通过查看下面这个页面得知。https://parceljs.org/recipes.html要让Parcel支持vue,需要简单处理一下。(下面的方法是我尝试的,如果有更好的,欢迎评论留言)首先初始化一个项目。$mkdirparcel-vue$cdparcel-vue$npminit-y接着安装vue。$npminstallvueindex.htmlHelloParcel
Mobx React 最佳实践
在这一篇文章里,将展示一些使用了mobx的React的最佳实践方式,并按照一条一条的规则来展示。在你遇到问题的时候,可以依照着这些规则来解决。这篇文章要求你对于mobx的stores有基本的理解,如果没有的话请先阅读官方文档。stores代表着UI状态永远记住,你的stores代表着你的UI状态,这就意味着,当你将你的stores储存下来后,就算你关了网页,再次打开,载入这个stores,你得到的网页也应该是相同的。虽然stores并不是一个本地数据库的角色,但是他依然存储着一些类似于按钮是否可见,input里面的内容之类的UI状态。classSearchStore{@observablesearchText;@actionsetSearchText=(searchText)=>{this.searchText=searchText}}@observerclassSearchInputextendsReact.Component{handleInputChanged=(event)=>{cons
回归本源:JavaScript 之中的值和引用
阅读花费时间:2分钟这是一个非常简短的值和引用的解释。首先,对于每一个JavaScript开发者来说,值(value)和引用(reference)的定义,一般是从一些bug被引出的,而且在面试中也经常会被问到。这篇文章中也将简单的涵盖这些基本概念。别先急着往下滑,你知道下面这些代码会有什么结果吗?console.log([10]===[10]);varoldArray=[];varobject={};object.newArray=oldArray;oldArray.push(10);console.log(object.newArray===oldArray);第一个例子是false而第二个例子是true。你答对了么,我们来看看这是为什么:在JavaScript中,有一些类型和值是直接复制了引用,分别是下面的这些:原始值(复制值)nullundefinedNumberStringBoolean对象(复制引用)ObjectArrayFunction原始值vara=5;varb
什么是Node.js
有关Node.js的技术报道越来越多,Node.js的写法也是五花八门,有写成NodeJS的,有写成Nodejs的,到底哪一种写法最标准呢,我们不妨遵循官方的说法。在Node.js的官方网站上,一直将其项目称之为”Node“或者”Node.js“,没有发现其他的说法,”Node“用的最多,考虑到Node这个单词的意思和用途太广泛,容易让开发人员误解,我们采用了第二种称呼——”Node.js“,js的后缀点出了Node项目的本意,其他的名称五花八门,没有确切的出处,我们不推荐使用。2Node旨在解决什么问题Node公开宣称的目标是“旨在提供一种简单的构建可伸缩网络程序的方法”。当前的服务器程序有什么问题?我们来做个数学题。在Java™和PHP这类语言中,每个连接都会生成一个新线程,每个新线程可能需要2MB的配套内存。在一个拥有8GBRAM的系统上,理论上最大的并发连接数量是4,000个用户。随着您的客户群的增长,如果希望您的Web应用程序支持更多用户,那么,您必须添加更多服务器。当然,这会增加服务器成本、
全面理解虚拟Dom,如何来实现虚拟Dom
1.为什么需要虚拟DOMDOM是很慢的,其元素非常庞大,页面的性能问题由JS引起的,大部分都是由DOM操作引起的。如果对前端工作进行抽象的话,主要就是维护状态和更新视图;而更新视图和维护状态都需要DOM操作。其实近年来,前端的框架主要发展方向就是解放DOM操作的复杂性。在jQuery出现以前,我们直接操作DOM结构,这种方法复杂度高,兼容性也较差;有了jQuery强大的选择器以及高度封装的API,我们可以更方便的操作DOM,jQuery帮我们处理兼容性问题,同时也使DOM操作变得简单;但是聪明的程序员不可能满足于此,各种MVVM框架应运而生,有angularJS、avalon、vue.js等,MVVM使用数据双向绑定,使得我们完全不需要操作DOM了,更新了状态视图会自动更新,更新了视图数据状态也会自动更新,可以说MMVM使得前端的开发效率大幅提升,但是其大量的事件绑定使得其在复杂场景下的执行性能堪忧;有没有一种兼顾开发效率和执行效率的方案呢?ReactJS就是一种不错的方案,虽然其将JS代码和HTML代码混合在一起的设计有不少争议,但是其
剪贴板事件
剪贴板事件在现在的前端开发中经常会用到,对于现代浏览器来说,可以简单的通过execCommand命令来对处于可编辑状态的文字进行一些操作。这个方法可以做很多操作,比如影响文档的选择(粗体,斜体等),而其他命令插入新元素(添加链接)或影响整行(缩进)等等。这里以复制操作为例,给出一个通用复制方法,同时借此方法说明execCommand的用法copyToClipboard=function(textToCopy){//创建一个容器consttextArea=document.createElement('textarea');//隐藏位置textArea.style.display='none';//内容textArea.value=textToCopy;//插入文档document.body.appendChild(textArea);//选中复制文字textArea.select();try{//复制if(!document.execCommand('copy')){thrownewErro
JavaScript实现单例模式
传统单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。实现单例核心思想无非是用一个变量来标志当前是否已经为某个类创建过对象,如果是,则在下一次获取该类的实例时,直接返回之前创建的对象,接下来我们用JavaScript来强行实现这个思路,请看代码:varSingleton=function(name){this.name=name;};Singleton.prototype.getName=function(){alert(this.name);};Singleton.getInstance=(function(){varinstance=null;returnfunction(name){if(!instance){instance=newSingleton(name);}returninstance;}})();我们通过Singleton.getInstance来获取Singleton类的唯一对象,这样确实是没问题的,但是js本身是没
MobX入门
本文尝试解释MobX是如何运作的。我们将用MobX创建一个小案例。如果你正在找靠谱的MobX文档,可以去看官方文档。什么是MobX官方文档的解释:简洁,易扩展的状态管理。简单来说,MobX可以很好的管理应用程序的状态/数据,同时又简洁,易扩展。先来看一张图:我们通过上图的的步骤来创建一个简单应用。State在MobX中你可以设置一个或者多个state,我们先设置一个:varstore=mobx.observable({counter:0})我们初始化store,只有一个状态数据counter。你的对象可能有多个层级对应多个不同的属性。RenderingMobX.js一起用效果很好,但是不用react.js也可以。我们用原生JavaScript来把状态渲染到页面:`
两行 CSS 代码实现 PNG 任意颜色赋色技术
很久之前在张鑫旭大大的博客看到过一篇PNG格式小图标的CSS任意颜色赋色技术,当时惊为天人,感慨还可以这样玩,私底下也曾多次想过有没有其他方法可以实现,又或者不仅仅局限于PNG图片。mix-blend-mode与background-blend-modemix-blend-mode在我之前的一篇文章初略介绍过--不可思议的混合模式mix-blend-mode,与本文的主角background-blend-mode一样,都是实现混合模式的。混合模式最常见于photoshop中,是PS中十分强大的功能之一。当然,瞎用乱用混合模式谁都会,利用混合模式将多个图层混合得到一个新的效果,只是要用到恰到好处,或者说在CSS中利用混合模式制作出一些效果则需要对混合模式很深的理解及不断的尝试。简单区分一下这两个属性:mix-blend-mode用于多个不同标签间的混合模式background-blend-mode用于单个标签间内背景图与渐变背景间的混合模式。background-blend-mode的
获取伪元素的属性和改变伪元素的属性
获取伪元素的属性值获取伪元素的属性值可以使用window.getComputedStyle()方法,获取伪元素的CSS样式声明对象。然后利用getPropertyValue方法或直接使用键值访问都可以获取对应的属性值。语法:window.getComputedStyle(element,[pseudoElement])参数如下:element(Object):伪元素的所在的DOM元素;pseudoElement(String):伪元素类型。可选值有:”:after”、”:before”、”:first-line”、”:first-letter”、”:selection”、”:backdrop”;js语法实例:varmydiv=document.querySelector('#mydiv');varfontSize=window.getComputedStyle(mydiv,'::before').getPropertyValue('font-size');//获取before伪元素的字号大小更改伪元素的样式
canvas入门里,你没注意到的那些知识
前言本文写在七月底,进来不加班就整理了一下,一些非常基础的知识,对于canvas刚入门的人来说,值得阅读一下。来个气势如虹的开头与看各种文章相比,我更喜欢数学里的逻辑;与学习各种日新月异的框架相比,我更喜欢基础扎实带给人的那种踏实;与拼凑页面页面来回跳转相比,我更喜欢动画,图形在页面中表现的直观。也许你和我一样,冲着对H5的好奇,冲着对图形的热爱,学了一下canvas,没有熟练,只是简单入了个门,或许你在入门的门槛上就绊倒了,同学不哭,站起来继续撸。我把我入门两天的积累写下来,有些门槛,绊倒了数百次,有些应该也适合你。下文的ctx指的是canvas创建的2d图形化实例,代码:varcanvas=document.querySelector('#test');//test是Html中一个canvas元素的ID,其宽为600,高为400;varctx=canvas.getContext('2d');说件重要的事2d上下文(画布)坐标开始于
DevExpress XtraScheduler日程管理控件应用实例(2)-- 深入理解数据存储
DevExpress年终击穿底价,单套授权低至67折!查看详情>>>在上篇随笔《DevExpressXtraScheduler日程管理控件应用实例(1)--基本使用》中介绍了DevExpress的XtraScheduler日程控件的各种使用知识点,对于我们来说,日程控件不陌生,如OutLook里面就有日历的模块,但是这个日程控件真的是很复杂的一个控件,需要全面掌握可能需要花费很多的时间去了解,由于是技术研究,我总是希望把它常用的功能剖析的更加彻底一些,前面随笔也介绍了它的存储功能,把它基于实体类的方式存储在数据库里面,不过介绍的还不够,本文继续上面的内容,进行数据存储方面的介绍。在查阅了大量资料,以及一两天的潜入研究,总算把它的数据存储和相关熟悉有一个比较清晰的了解。1、数据绑定及加载的处理回顾在上篇随笔里面,我总体性介绍了这个控件的数据绑定,以及数据是如何保存到数据库里面的,绑定到DevExpress的XtraScheduler日程控件的步骤是需要先设置好映射关系(Mappings),然后绑定数据源即可。操作代码如下所示。///<
Visual Studio Code VSCode 常用 插件 扩展
界面主题Monokai:VSCcode内置主题Agila:包含多个主题Dark-DraculaTheme:Dracula风格主题里面比较好的Nosferatu:Dracula风格主题monokailight:白色,背景色类色默认的vs亮色主题背景FlatUI:包含多个主题FlatlandMonokaiTheme:theme-dark-monokai:MonokaiDarkSoda:MonokaiLight:图标主题vscode-icons:Icons:主要推荐materialicontheme:备选功能插件C#:VSCode开发C#必备C#FixFormat:格式化代码,好用C#Extensions:提高开发效率的扩展工具BracketPairColorizer:对括号对进行着色,再也不会眼晕了。MarkdownAllinOne:AllinOne,好用markdownlint:编写Markdown文件时智能提示,有助于养成好习惯。M
C#系列之聊聊.net core的InMemoryCache
这两天在看.netcore的inmemorycache,这里记录一下用法,主要涉及MemoryCache的Get/Set/Expire/Flush。首先我们先用dotnet命令创建一个mvc的项目,这里我们将使用postman来请求server,dotnetnewmvc因为我们要用到Microsoft.Extensions.Caching.Memory这个nuget包,所以需要添加引用,用VsCode(或任何编辑器)打开刚才建的mvc项目路径下的*.csproj文件,在这里我的是cache.csproj,找到