显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

@fc_lamp

关注Web应用解决方案MySql/PHP/Python一盏名为"飞川"的灯~

 
 
 
 
 
 

Sqlite3 大批量插入

2017-10-30 17:06:43 阅读12 评论0 302017/10 Oct30

如果你需要在数据库中一次性插入很多行,那么你真不应该使用 execute。sqlite3 模块提供了批量插入的方式:executemany。

而不是像这样做:

for row in iter_data():

    connection.execute('INSERT INTO my_table VALUES (?)', row)

你可以利用这个事实,即 executemany 接受元组的生成器作为参数:

connection.executemany(

    'INSERT INTO my_table VALUE (?)',

    iter_data()

)来源:https://www.oschina.net/translate/few-tips-sqlite-perf

作者  | 2017-10-30 17:06:43 | 阅读(12) |评论(0) | 阅读全文>>

Python 实现word 操作,并获取word中图片

2017-10-24 19:12:05 阅读16 评论0 242017/10 Oct24

word操作的模块很多:win32、python-docx、textract

#coding:utf-8

__author__='fc_lamp'

'''

Python word 操作

'''

from docx import Document

import os

import zipfile

from snownlp import SnowNLP

'''

python-docx 方式

(通过 pip install python-docx安装)

python-docx只支持docx格式的word

可接合使用snownlp 模块来实现中文分词处理

'''

wordf = '1.docx'

doc = Document(wordf)

#段落

wordn =0

for i in doc.paragraphs:

#一段一文字

print i.text

#print i.style.name

#关于word中图片的获取.......

#转压缩文件,word就是压缩文件

os.rename('1.docx','1.zip')

#释放出所有文件(包括图片)

f = zipfile.ZipFile('1.zip','r')

作者  | 2017-10-24 19:12:05 | 阅读(16) |评论(0) | 阅读全文>>

Python Logging 模块

2017-10-24 14:38:08 阅读12 评论0 242017/10 Oct24

我们可以使用Logging 很方便的实现日志记录,如下代码:

#coding:utf-8

import inspect

import os

import logging

logger = logging.getLogger('[TEST]')

#确定路径

this_file = inspect.getfile(inspect.currentframe())

dirpath = os.path.abspath(os.path.dirname(this_file))

handler = logging.FileHandler(os.path.join(dirpath,'log.log'))

#格式

formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')

#装载

handler.setFormatter(formatter)

logger.addHandler(handler)

logger.setLevel(logging.INFO)

#记录...

logger.info('test...')

logger.info('这是什么,这里错误....'.decode('utf-8'))

2017-10-24 14:31:04,730 [TEST] INFO test...

作者  | 2017-10-24 14:38:08 | 阅读(12) |评论(0) | 阅读全文>>

关于MODBUS协议

2017-7-8 20:23:33 阅读56 评论0 82017/07 July8

(注:MODBUS是应用层的通讯协议,主要用于传送和接收文件包的格式。而RS232,RS485是物理层的串行接口)。

一 官方说明

Modbus是一种单主站的主/从通信模式。Modbus网络上只能有一个主站存在,主站在 Modbus网络上没有地址,从站的地址范围为 0 - 247,其中 0 为广播地址,从站的实际地址范围为 1 - 247。 Modbus通信标准协议可以通过各种传输方式传播,如 RS232C、RS485、光纤、无线电等。

Modbus具有两种串行传输模式,ASCII 和 RTU。它们定义了数据如何打包、解码的不同方式。支持 Modbus 协议的设备一般都支持 RTU 格式。通信双方必须同时支持上述模式中的一种。

二 直白说明

modbus协议也只是通讯协议的一种,没什么神秘的,通讯协议包括两个方面:

一、通讯格式,即: 波特率,检验方式,数据位,停止位 (类似HTTP协议)

波特率:一秒钟传送的位数,也就是通讯速率;比如波特率为9600,即,一秒种可以传送9600个位数。

校验方式:奇校验或偶校验或无校验,目的是判断传输过程中是否有错误!它只是用于判断一个字符(比如八个位或是七个位组成一个字符)传输是否有错误。但是它并不能完全能够判断传输是否有错。比如偶校验,在检验送八个“11111111”时,如果到达接收方,由于干扰而变成了“10111101”,“1”的个数仍然是偶数,接收方就判断不出来传送的字符已经错误!

数据位:传输一个字符由几个位

作者  | 2017-7-8 20:23:33 | 阅读(56) |评论(0) | 阅读全文>>

在电商系统中,到底要怎么扣减库存?

2017-6-14 23:30:28 阅读90 评论0 142017/06 June14

来源:58沈剑

业务复杂、数据量大、并发量大的业务场景下,典型的互联网架构,一般会分为这么几层:

调用层,一般是处于端上的browser或者APP

站点层,一般是拼装html或者json返回的web-server层

服务层,一般是提供RPC调用接口的service层

数据层,提供固化数据存储的db

对于库存业务,一般有个库存服务,提供库存的查询、扣减、设置等RPC接口:

库存查询,stock-service本质上执行的是

select num from stock where sid=$sid

库存扣减,stock-service本质上执行的是

update stock set num=num-$reduce where sid=$sid

库存设置,stock-service本质上执行的是

update stock set num=$num_new where sid=$sid

用户下单前,一般会对库存进行查询,有足够的存量才允许扣减:

如上图所示,通过查询接口,得到库存是5。

用户下单时,接着会对库存进行扣减:

如上图所示,购买3单位的商品,通过扣减接口,最终得到库存是2。

希望设计往往有容错机制,例如“重试”,如果通过扣减接口来修改库存,在重试时,可能会得到错误的数据,导致重复扣减:

如上图所示,如果数据库层面有重试容错机制,可能导致一次扣减执行两次,最终得到一个负数的错误库存。

作者  | 2017-6-14 23:30:28 | 阅读(90) |评论(0) | 阅读全文>>

MySQL常见SQL错误用法

2017-6-7 18:09:08 阅读69 评论0 72017/06 June7

来源:https://yq.aliyun.com/articles/72501

常见SQL错误用法1. LIMIT 语句

分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般DBA想到的办法是在type, name, create_time字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。

de >SELECT * FROM operation WHERE type = 'SQLStats' AND name = 'SlowLog' ORDER BY create_time LIMIT 1000, 10; de>

好吧,可能90%以上的DBA解决该问题就到此为止。但当 LIMIT 子句变成 “LIMIT 1000000,10” 时,程序员仍然会抱怨:我只取10条记录为什么还是慢?

要知道数据库也并不知道第1000000条记录从什么地方开始,即使有索引也需要从头计算一次。出现这种性能问题,多数情形下是程序员偷懒了。在前端数据浏览翻页,或者大数据分批导出等场景下,是可以将上一页的最大值当成参数作为查询条件的。SQL重新设计如下:

de >SELECT * FROM operation WHERE type = 'SQLStats' AND name = 'SlowLog' AND create_time > '2017-03-16 14:00:00' ORDER BY create_time limit 10; de>

作者  | 2017-6-7 18:09:08 | 阅读(69) |评论(0) | 阅读全文>>

客户端(浏览器端)数据存储技术概览

2017-3-15 14:37:25 阅读121 评论0 152017/03 Mar15

在客户端(浏览器端)存储数据有诸多益处,最主要的一点是能快速访问(网页)数据。(以往)在客户端有五种数据存储方法,而目前就只有四种常用方法了(其中一种被废弃了):

CookiesLocal StorageSession StorageIndexedDBWebSQL (被废弃)[fc_lamp: 在基于WebKit 的浏览器是支持 sqllite操作]Cookies

Cookies 是一种在文档内存储字符串数据最典型的方式。一般而言,cookies 会由服务端发送给客户端,客户端存储下来,然后在随后让请求中再发回给服务端。这可以用于诸如管理用户会话,追踪用户信息等事情。

此外,客户端也用使用 cookies 存储数据。因而,cookies 常被用于存储一些通用的数据,如用户的首选项设置。

Cookies 的 基本CRUD 操作

通过下面的语法,我们可以创建,读取,更新和删除 cookies:

// Create

document.cookie = "user_name=Ire Aderinokun";

document.cookie = "user_age=25;max-age=31536000;secure";

// Read (All)

console.log( document.cookie );

// Update

document.cookie = "user_age=24;max-age=31536000;secure";

作者  | 2017-3-15 14:37:25 | 阅读(121) |评论(0) | 阅读全文>>

Linux 上传下载文件快捷方式

2017-2-23 16:46:58 阅读123 评论0 232017/02 Feb23

我们可以使用 rz 命令上传文件,sz 命令下载文件。

我们进入目标目录后,使用rz即可上传。

我们使用 sz /home/www/test.html 即可下载文件。

2017-04-19更新:

有时候我们装的linux系统中没有rz命令,我们只需要安装一下就行了

cd /mmz/tools

wget http://down1.chinaunix.net/distfiles/lrzsz-0.12.20.tar.gz

tar zxvf lrzsz-0.12.20.tar.gz

cd lrzsz-0.12.20

./configure --prefix=/usr/local/lrzsz

make

make install

cd /usr/bin 

ln -s /usr/local/lrzsz/bin/lrz rz #这里是加上命令链接

ln -s /usr/local/lrzsz/bin/lsz sz

rz

作者  | 2017-2-23 16:46:58 | 阅读(123) |评论(0) | 阅读全文>>

虚拟机(virtualbox) ping unknown host www.baidu.com 的问题

2017-2-22 17:23:45 阅读278 评论0 222017/02 Feb22

1 我们首先在虚拟机网络设置中选择“桥接网卡” 桥接模式。在选择驱动时,需要注意主机是使用的什么链网方式:

2 然后我们使用ping 8.8.8.8 (google 公共DNS) 命令检测能否正常访问外网,如果得到:

connect: network is unreachable

说明访问不到外网,那么我们需要编辑 /etc/sysconfig/network-script/目录下的ifcfg-eth0文件

我们vim 进入/etc/sysconfig/network-scripts/ifcfg-eth0 加入如下代码:

通常情况下,我们只需要修改IPADDR值即可。 IPADDR的值是一个内网IP地址(使用一个没有占用的IP地址即可,你可以先在 主机上查看一下主机的IP,然后以此填写一个IP即可)。

保存后,我们执行:

service network restart    重启网络服务

我们还需要设置一下默认网关,执行

route add default gw 192.168.1.1

我们再使用route 命令即可查看到已有默认网关了,到这里我们在使用ping 8.8.8.8 查看网络是否已通(ifconfig 可查看当前IP)。

3 现在我们再来配置DNS,我们进入 vim  /etc/resolv.conf  添加:

nameserver 8.8.8.8

作者  | 2017-2-22 17:23:45 | 阅读(278) |评论(0) | 阅读全文>>

java android 怎么开机自启一个app程序,并且直接打开UI界面

2017-2-21 18:45:08 阅读104 评论0 212017/02 Feb21

我们可直接修改AndroidManifest.xml 文件即可:

<activity

android:name=".MainActivity"

android:label="@string/app_name" >

<intent-filter>

<!-- 这里增加开机自启,并打开UI界面 -->

<category android:name="android.intent.category.HOME" />

<category android:name="android.intent.category.DEFAULT" />

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

作者  | 2017-2-21 18:45:08 | 阅读(104) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 

有道博客搜索

 
 
 
 
 
 
 

四川省 成都市

 发消息  写留言

 
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 

日志分类

 
 
日志分类列表加载中...
 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 我要留言
 
 
 
留言列表加载中...
 
 
 
 
 
 
 
博友列表加载中...
 
 
 
 
 

小工具

 
 
模块内容加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017

注册 登录  
 加关注