原文链接:http://studygolang.com/articles/9154
情景:将工资条的内容发送到相应员工的邮箱中。 xlsx文件内容格式:
获取excel文件内容,使用第三方库:github.com/tealeg/xlsx 代码:
package main
import (
"fmt"
"github.com/tealeg/xlsx"
"log"
)
func main() {
excelFileName := "F:\\Test\\list.xlsx"
xlFIle, err := xlsx.OpenFile(excelFileName)
if err != nil {
log.Fatalln("err:" , err.Error())
}
for _, sheet := range xlFIle.Sheet{
for _, row := range sheet.Rows {
for _, cell := range row.Cells {
fmt.Printf("%s\n" , cell.Value)
}
}
}
}
知识点: xlsx操作excel文件先获取Sheet对象,代表excel文件的sheet,通过遍历Sheet对象,获取每个sheet的行结果Rows,对Rows遍历,就获取到了每个单元格的内容,封装在Cells对象中。
分割工资条 使用正则表达式,将每个人的工资条分开,如果读取到新的邮箱地址,就用新的存储空间存储工资条的内容。这里使用一个函数:isEmailRow()
func isEmailRow(r []string ) (isEmail bool , email string ) {
reg := regexp.MustCompile(`^[a-zA-Z_0-9.-]{1,64}@([a-zA-Z0-9-]{1,200}.){1,5}[a-zA-Z]{1,6}$` )
for _, v := range r{
if reg.MatchString(v) {
return true , v
}
}
return false , ""
}
isEmailRow函数接收的参数是数组,所以将单元格内容转换为数组形式,并且去除了空格和空行:
func _getCellValues(r *xlsx.Row) (cells []string ) {
for _, cell := range r.Cells{
txt := strings.Replace(strings.Replace(cell.Value, "\n" , "" , -1 )," " , "" , -1 )
cells = append (cells, txt)
}
return
}
使用map来存储每个人的工资条数据,并且用电子邮件作为键值,然后将数据组装成一个HTML的表格行代码(因为需要发送HTML格式的电子邮件才能以表格的形式展现)。于是,main里的循环代码就变成了这样:
sendList := make (map [string ]string )
for _, sheet := range xlFile.Sheets {
curMail := ""
for _, row := range sheet.Rows {
cells := getCellValues(row)
if isEmail, emailStr := isEmailRow(cells); isEmail {
curMail = emailStr
}
sendList[curMail] += fmt.Sprintf("%s " , strings.Join(cells, " "))
}
}
发送电子邮件
使用标准包:net/smtp就可以发送电子邮件 封装一个函数:
func sendToMail (user , password , host , to , subject , body , mailtype string ) error {
auth := smtp.PlainAuth("" , user, password, strings.Split(host, ":" ) [0 ])
msg := []byte("To: " + to + "\r\nFrom: " + user + "\r\nSubject: " + subject + "\r\n" + "Content-Type: text/" + mailtype + "; charset=UTF-8" + "\r\n\r\n" + body)
sendto := strings.Split(to, ";" )
err := smtp.SendMail(host, auth, user, sendto, msg)
return err
}
创建一个函数,遍历所有内容并调用发送邮件函数发送出去
func sendMail(sendList map [string]string) {
fmt.Printf("共需要发送%d 封邮件\n" , len(sendList))
index := 1
for mail, content := range sendList {
fmt.Printf("发送第%d 封" , index )
/* 将里边的用户名密码,smtp服务器换成自己的 */
if err := sendToMail("xxx@xxxxxx .com" ,
"xxxxxxx" ,
"smtp.xxxxxx.com:25" ,
mail,
"工资条" ,
fmt.Sprintf("" , content),
"html" ); err != nil {
fmt.Printf(" ... 发送错误(X) %s %s \n" , mail, err.Error())
} else {
fmt.Printf(" ... 发送成功(V) %s \n" , mail)
}
index ++
fmt.Printf(" \n" , content)
}
}
最后的main函数:
excelFileName := "F:\\Test\\list.xlsx"
xlFile, err := xlsx.OpenFile(excelFileName)
if err != nil {
log.Fatalln("err:" , err.Error())
}
sendList := make (map [string ]string )
for _, sheet := range xlFile.Sheets {
curMail := ""
for _, row := range sheet.Rows {
cells := getCellValues(row)
if isEmail, emailStr := isEmailRow(cells); isEmail {
curMail = emailStr
} else {
count := 0
for _, c := range cells {
if len (c) > 0 {
count++
}
}
if count > 1 {
sendList[curMail] += fmt.Sprintf("%s " , strings.Join(cells, "
"))
} else {
sendList[curMail] += fmt.Sprintf("%s " , len (cells), strings.Join(cells, "" ))
}
}
}
}
sendMail(sendList)
fmt.Print("按下回车结束" )
bufio.NewReader(os.Stdin).ReadLine()
亲测可用。作为学习收藏。
你可能感兴趣的:(GO语言)
Python,C++,go语言开发社会犯罪人群回归社会跟踪与辅助管理APP
Geeker-2025
python c++ golang
开发一款用于**社会犯罪人群回归社会跟踪与辅助管理**的App,结合Python、C++和Go语言的优势,可以实现高效的数据处理、实时的跟踪监控以及用户友好的前端界面。以下是一个详细的开发方案,涵盖技术选型、功能模块、开发步骤等内容。##技术选型###后端(Python+Go)-**编程语言**:-**Python**:用于数据处理、机器学习(如风险评估、行为预测)、脚本编写等。-**Go**:用
Python,C++,go语言开发人类100年后1000种技术解析与实操APP
Geeker-2025
python c++ golang
以下是为"人类100年后1000种技术解析与实操APP"设计的全栈技术方案,融合跨学科技术预测、虚拟仿真与增强现实技术,构建面向未来的技术探索平台:---###一、三维混合架构```mermaidgraphTDA[Python-认知引擎]-->|gRPC|B[Go-协调中枢]B-->|FFI|C[C++-物理核心]C-->|光子总线|D{技术沙盒}D-->E[量子计算接口]D-->F[生物工程模拟
Go语言--语法基础6--基本数据类型--切片类型
Go语言切片是对数组的抽象。Go数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活、功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。切片是一个在Go语言中引入的新理念,它有一些特征如下:对数组抽象数组长度不固定可追加元素切片容量可增大1、定义切片你可以声明一个未指定大小的数组来定义切片:varidentif
Go语言切片(Slice)详解
gopher.guo
golang 数据结构 golang go语言 后端
Go语言切片(Slice)详解在Go语言中,切片(slice)是一种非常常用且强大的数据结构。它提供了对数组的动态视图,并且相比数组更具灵活性。切片本质上是对数组的一个视图,支持动态增长和缩小,因此是Go中最常用的集合类型之一。1.切片的基本概念切片与数组的主要区别在于:数组的长度是固定的,而切片的长度是可变的。切片并不保存自己的数据,它只是引用了数组的一部分。切片通过以下三个部分来定义:指针:指
结合Golang语言说明对多线程编程以及 select/epoll等网络模型的使用
zhoupenghui168
golang 计算机网络 golang 网络 数据库 select网络模型 epoll网络模型 多线程编程
首先介绍select和epoll这两个I/O多路复用的网络模型,然后介绍多线程编程,最后结合Go语言项目举例说明如何应用一、select和epoll的介绍1.select模型select是一种I/O多路复用技术,它允许程序同时监视多个文件描述符(通常是套接字),等待一个或多个描述符就绪(可读、可写或异常)然后进行相应的操作,它的跨平台兼容性好(Windows/Linux/macOS)核心原理:使用
第一章:Go语言基础入门之流程控制
Go语言的流程控制:驾驭程序执行的艺术在任何编程语言中,流程控制语句都是构建复杂逻辑的基石。它们赋予程序“思考”和“决策”的能力,决定了代码的执行路径。Go语言以其简洁和高效而闻名,其流程控制语句也沿袭了这一哲学,既强大又易于理解。本文将带您深入探讨Go语言的流程控制语句,包括条件判断if-else、唯一的循环语句for(及其多种形态)、分支选择switch(及其高级用法),以及强大的跳转语句br
深入解析Go设计模式:组合模式实战
什么是组合模式?Go语言中的组合模式是一种结构型设计模式,它采用树形结构来组织对象,以表达"部分-整体"的层次关系。这种设计使得客户端能够以统一的方式处理单个对象和对象组合。该模式的核心思想是将一组对象视为同类型的单一实例。通过构建树形结构,每个对象独立完成特定任务,并递归地将执行结果传递到顶层对象进行聚合处理。主要应用场景:树形结构数据:如文件系统、组织架构等存在树形结构关系的数据。动态嵌
在 Go 语言中使用正则表达式提取所有匹配字符串的方法详解
gopher.guo
golang golang 正则表达式 数据库
在Go语言中使用正则表达式提取所有匹配字符串的方法详解正则表达式(RegEx)是一种强大的文本处理工具,而在Go语言中,官方regexp标准库提供了完整的正则功能。一个常见需求是:从字符串中提取出所有符合某种模式的内容,比如所有邮箱地址、所有数字、所有HTML标签等。本文将介绍如何在Go中使用正则表达式一次性提取所有匹配项,并提供详细示例。一、核心函数:FindAllString与FindAllS
golang学习线路图
gopher.guo
golang go golang go语言
学习Go(Golang)开发,应该从基础语法开始,逐步深入到并发编程、网络编程、Web开发、微服务架构、项目部署与调试等方向。以下是一个系统性的学习路线和内容详解,适合从零到进阶的开发者参考:一、Go语言基础Go语言的安装与配置Go的安装包下载与环境变量配置(GOROOT,GOPATH,gomod)使用GoModules管理依赖基础语法变量与常量的定义(var,const,类型推断:=)数据类型:
go语言数据结构与排序算法
fbbqt
golang 数据结构 排序算法
packagemainimport"fmt"funcmain(){Bubble_Sort()Select_Sort()Insert_Sort()Shell_Sort()Heap_Sort()Merge_Sort()Quick_Sort()}一、1、冒泡排序//冒泡排序funcBubble_Sort(){str:=[]int{9,1,5,8,3,7,4,6,2}//正向冒泡fori:=0;istr[
Golang Gorilla 框架性能优化:10 个必知技巧
GolangGorilla框架性能优化:10个必知技巧关键词:Gorilla框架、性能优化、Go语言、路由匹配、中间件、内存管理、并发处理、HTTP服务、Web开发、实战技巧摘要:Gorilla是Go语言生态中最受欢迎的Web开发框架之一,广泛用于构建高并发API和实时应用(如WebSocket聊天)。但随着业务规模扩大,如何让Gorilla应用保持“丝滑”性能?本文将从路由优化、内存管理、并发设
WebSocket:构建实时交互的 Web 应用
IsPrisoner
websocket 交互 前端 golang 网络
在现代Web开发中,实现实时交互功能是提升用户体验的重要一环。无论是实时聊天、在线游戏、实时协作编辑,还是实时数据监控等场景,都需要一种能够支持客户端与服务器之间双向通信的技术。而WebSocket正是这样一种强大的技术,它突破了传统HTTP协议单向通信的限制,为Web应用的实时交互提供了可能。在众多编程语言中,Go语言以其简洁高效、并发友好等特性,在构建高性能的WebSocket服务端方面具有独
Gin 框架中如何实现 JWT 鉴权中间件
IsPrisoner
gin 中间件 golang JWT
在现代Web开发中,安全地验证用户身份是构建可靠应用程序的关键环节。JWT(JSONWebToken)作为一种流行的认证方式,因其简洁、高效和易于扩展等特性,被广泛应用于许多应用中。而Gin框架作为Go语言中一个高性能的HTTPWeb框架,在构建微服务和RESTfulAPI应用中表现卓越。将JWT鉴权集成到Gin框架中,可以为我们的应用提供更安全的用户认证与授权机制。本篇博客将深入探讨如何在Gin
【Golang】Go语言运算符
云教员
golang 开发语言 后端 运维开发 自动化
Go语言运算符文章目录Go语言运算符一、Go语言运算符1.1、算术运算符1.2、关系运算符1.3、逻辑运算符1.4、位运算符1.5、赋值运算符1.6、其他运算符1.7、运算符优先级一、Go语言运算符运算符用于在程序运行时执行数学活逻辑运算。Go语言内置的运算符有:算术运算符关系运算符逻辑运算符位运算符赋值运算符其他运算符1.1、算术运算符下表列出了所有Go语言的算术运算符。假定A值为10,B值为2
Go语言从入门到精通
qq_44601070
go语言 go语言
“Gowillbetheserverlanguageofthefuture.”—TobiasLütke,Shopify在过去几年,崛起了一门新的语言:Go或者GoLang。没有什么比一门新的编程语言更令开发者兴奋了,不是么?目前一些开源社区,纷纷采用Go语言开发了许多平台、框架等,如:Docker、Kubernetes等,甚至逐步从其它语言(如:C、Java等)转换到了Go,相信这一点你已经体会到
GO 从入门到精通2
好学且牛逼的马
GO golang
Go语言的反射(Reflection)机制通过reflect包实现,允许程序在运行时动态检查、修改和操作变量的类型信息和值。以下是反射的核心概念、用法及注意事项的详细解析:一、反射的基本概念reflect.Type表示变量的类型信息,包括类型名称、方法、字段等。通过reflect.TypeOf()获取:varxint=42t:=reflect.TypeOf(x)//输出:intreflect.Va
go语言trim的使用
许墨の小蝴蝶
golang
在Go语言中,`strings.Trim`函数用于去除字符串**首尾**指定的字符集。通过该函数,您可以灵活地删除字符串开头和结尾的特定字符,使字符串符合预期的格式。####主要作用1.**数据清洗**:处理用户输入或外部数据时,去除首尾不需要的字符,如空格、标点符号等。2.**字符串格式化**:确保字符串以特定的格式呈现,便于后续处理或展示。####函数签名```gofuncTrim(sstri
Go语言操作Word文档神器:WordZero 让文档处理变得如此简单!
一只特立独行的兔先森
word golang go 自动化
前言在企业级应用开发中,Word文档操作是一个常见需求。无论是生成报告、制作合同模板,还是批量处理文档,我们都需要一个可靠、高效的文档操作库。今天给大家介绍一个纯Go语言实现的Word文档操作库——WordZero,让复杂的文档操作变得简单而优雅。为什么选择WordZero?纯Go实现,零依赖WordZero完全使用Go语言编写,无需任何外部依赖,符合Go语言"少即是多"的设计哲学。安装即用,部署
怎么学习网络安全(2025年系统教程)
程序员小何SS
web安全 学习 网络
网络安全学习许多网络安全新手面临的第一道认知鸿沟便是对编程语言的过度执着:“学网络安全必须精通Python吗?”“选C语言还是Go语言好?”面对这类疑问,一个深刻却常被忽略的真相浮出水面:学习网络安全时,任何一种主流的通用编程语言本质上并无差别,更非学习的阻碍或关键。它们皆只是通往掌握安全原理与实践的工具载体。真正的奥秘在于你是否掌握了一条结构化攀升的路径。第一阶段:构筑稳固基石-系统化入门要义:
【学习路线】Go语言云原生开发之路:从简洁语法到微服务架构
自学也学好编程
学习路线 golang golang 学习
一、Go语言基础入门(1-2个月)(一)环境搭建与工具链Go环境安装官方安装:从golang.org下载安装包版本管理:g、gvm等Go版本管理工具环境变量:GOROOT、GOPATH、GOPROXY配置GoModules:现代依赖管理,go.mod文件工作区设置:项目结构、包管理开发工具选择VSCode:轻量级,Go插件丰富GoLand:JetBrains专业GoIDEVim/Neovim:vi
JS与Go:编程语言双星的碰撞与共生
万能小贤哥
ffmpeg java 数据结构 小程序 游戏
在编程语言的璀璨星河中,JavaScript(简称JS)与Go语言凭借各自独特的魅力,成为不同领域的佼佼者。前者以灵活多变的姿态征服了前端世界,后者则以高效稳健的特性在后端领域崭露头角,二者的碰撞与共生,勾勒出当代编程世界的多元图景。JS:从前端霸主到全栈多面手JavaScript诞生于浏览器环境,凭借“只要有浏览器就能运行”的特性,迅速成为前端开发的基石。它是动态脚本语言,语法灵活,无需编译即可
第一章:Go语言基础入门之Hello World与Go程序结构
不过普通话一乙不改名
go语言进阶到高级 golang chrome 开发语言
Go语言基础:深入理解HelloWorld与程序结构欢迎来到Go语言的奇妙世界!在任何编程语言的学习旅程中,“HelloWorld”程序都是你的第一步,它像一扇窗户,让你窥见语言的基本语法和执行机制。Go语言也不例外。本文将带领你深入理解Go语言经典的“HelloWorld”程序,剖析其背后的程序结构、packagemain和funcmain()的特殊含义,并掌握Go程序从编写到编译、运行的整个生
第一章:Go语言基础入门之Go语言安装与环境配置
不过普通话一乙不改名
go语言进阶到高级 golang 开发语言 后端
Go语言新手指南:从SDK安装到你的第一个Go程序一、Go语言SDK的下载与安装Go语言的安装非常简单,官方为主流操作系统提供了便捷的安装包。1.1访问官方下载页面首先,请访问Go语言的官方下载页面:https://go.dev/dl/你会看到针对不同操作系统的最新稳定版安装包。1.2选择适合你的操作系统a)Windows用户:下载.msi格式的安装程序。双击下载的MSI文件,启动安装向导。按照提
第一章:Go语言基础入门之函数
不过普通话一乙不改名
go语言进阶到高级 golang 开发语言 后端
Go语言函数:深度掌握其核心概念与强大用法在Go语言中,函数是代码组织和复用的基本单元。它们不仅承载了特定任务的逻辑,更以其“一等公民”的特性,为Go语言带来了极大的灵活性和表现力。本文将从函数的定义、调用等基础知识开始,逐步深入探讨多返回值、命名返回值、可变参数,最终揭示函数作为一等公民的奥秘,以及匿名函数和闭包在实际开发中的强大应用。1.函数的定义与调用:基础构建块函数定义了一段执行特定任务的
Zap日志库指南
ん贤
# GoWeb go 后端
Zap是由Uber开发的高性能Go日志库,特别适合后端服务。入门:第一目:为什么要选择Zap?在Go语言的日志库中,流行的有zap、logrus...甚至还有Go自带的原生的log。zap:极致性能(低延迟、低内存占用)、支持多种日志级别、偏底层、Uber官方维护并持续更新Logrus:灵活易用、支持多种日志级别、高层封装支持全局调用、基本停滞更新原生log包:简单易用的基础工具、学习成本低。高并
Go语言中的GOROOT和GOPATH详解:作用、区别与配置指南
北辰alk
golang 开发语言 后端
文章目录1.GOROOT:Go的安装根目录1.1GOROOT的作用1.2默认值1.3何时需要设置GOROOT1.4设置示例1.5验证GOROOT2.GOPATH:Go的工作区目录2.1GOPATH的作用2.2GOPATH的目录结构2.3GOPATH的历史演变2.4默认值2.5设置多个GOPATH2.6验证GOPATH3.GOROOT与GOPATH的区别4.现代Go开发中的最佳实践4.1对于新项目(
Go 语言基础语法
沐知全栈开发
开发语言
Go语言基础语法引言Go语言,也称为Golang,是由Google开发的一种静态强类型、编译型、并发型、并具有垃圾回收功能的编程语言。自2009年推出以来,Go语言以其简洁的语法、高效的性能和强大的并发处理能力在编程界赢得了广泛的好评。本文将为您详细介绍Go语言的基础语法,帮助您快速入门。数据类型基本数据类型Go语言中包含以下基本数据类型:整型(int、int8、int16、int32、int64
Go语言实战案例-批量重命名文件
程序员爱钓鱼
golang 开发语言 后端
在《Go语言100个实战案例》中的文件与IO操作篇-案例17:批量重命名文件的完整内容,适合初学者实践如何使用Go操作文件系统并批量处理文件名。案例目标实现一个小工具,能够批量重命名指定目录下的所有文件,例如统一添加前缀、后缀,或按照顺序编号。应用场景•批量重命名图片、视频、文档等•整理爬虫下载的文件•按规则生成项目资源命名涉及知识点•使用os.ReadDir()读取目录内容•使用os.Renam
Go语言--语法基础6--基本数据类型--map类型
探索未来 航行现在
golang 开发语言 后端
Map是一种无序的键值对的集合。Map最重要的一点是通过key来快速检索数据,key类似于索引,指向数据的值。Map是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map是无序的,我们无法决定它的返回顺序,这是因为Map是使用hash表来实现的。1、定义声明Map可以使用内建函数make也可以使用map关键字来定义Map:/*声明变量,默认map是nil*/varmap_variable
Go进阶高并发(多线程)处理教程
Go进阶高并发处理教程目录Go并发编程基础Goroutine深入理解同步原语详解并发模式与最佳实践性能优化技巧实战案例Go并发编程基础什么是并发?并发是指程序能够同时处理多个任务的能力。Go语言从设计之初就将并发作为核心特性,提供了简洁而强大的并发编程模型。Go并发模型的优势轻量级协程:Goroutine比传统线程更轻量CSP模型:通过通信来共享内存,而不是通过共享内存来通信内置调度器:Go运行时
mongodb3.03开启认证
21jhf
mongodb
下载了最新mongodb3.03版本,当使用--auth 参数命令行开启mongodb用户认证时遇到很多问题,现总结如下:
(百度上搜到的基本都是老版本的,看到db.addUser的就是,请忽略)
Windows下我做了一个bat文件,用来启动mongodb,命令行如下:
mongod --dbpath db\data --port 27017 --directoryperdb --logp
【Spark103】Task not serializable
bit1129
Serializable
Task not serializable是Spark开发过程最令人头疼的问题之一,这里记录下出现这个问题的两个实例,一个是自己遇到的,另一个是stackoverflow上看到。等有时间了再仔细探究出现Task not serialiazable的各种原因以及出现问题后如何快速定位问题的所在,至少目前阶段碰到此类问题,没有什么章法
1.
package spark.exampl
你所熟知的 LRU(最近最少使用)
dalan_123
java
关于LRU这个名词在很多地方或听说,或使用,接下来看下lru缓存回收的实现
1、大体的想法
a、查询出最近最晚使用的项
b、给最近的使用的项做标记
通过使用链表就可以完成这两个操作,关于最近最少使用的项只需要返回链表的尾部;标记最近使用的项,只需要将该项移除并放置到头部,那么难点就出现 你如何能够快速在链表定位对应的该项?
这时候多
Javascript 跨域
周凡杨
JavaScript jsonp 跨域 cross-domain
 
linux下安装apache服务器
g21121
apache
安装apache
下载windows版本apache,下载地址:http://httpd.apache.org/download.cgi
1.windows下安装apache
Windows下安装apache比较简单,注意选择路径和端口即可,这里就不再赘述了。 2.linux下安装apache:
下载之后上传到linux的相关目录,这里指定为/home/apach
FineReport的JS编辑框和URL地址栏语法简介
老A不折腾
finereport web报表 报表软件 语法总结
JS编辑框:
1.FineReport的js。
作为一款BS产品,browser端的JavaScript是必不可少的。
FineReport中的js是已经调用了finereport.js的。
大家知道,预览报表时,报表servlet会将cpt模板转为html,在这个html的head头部中会引入FineReport的js,这个finereport.js中包含了许多内置的fun
根据STATUS信息对MySQL进行优化
墙头上一根草
status
mysql 查看当前正在执行的操作,即正在执行的sql语句的方法为:
show processlist 命令
mysql> show global status;可以列出MySQL服务器运行各种状态值,我个人较喜欢的用法是show status like '查询值%';一、慢查询mysql> show variab
我的spring学习笔记7-Spring的Bean配置文件给Bean定义别名
aijuans
Spring 3
本文介绍如何给Spring的Bean配置文件的Bean定义别名?
原始的
<bean id="business" class="onlyfun.caterpillar.device.Business">
<property name="writer">
<ref b
高性能mysql 之 性能剖析
annan211
性能 mysql mysql 性能剖析 剖析
1 定义性能优化
mysql服务器性能,此处定义为 响应时间。
在解释性能优化之前,先来消除一个误解,很多人认为,性能优化就是降低cpu的利用率或者减少对资源的使用。
这是一个陷阱。
资源时用来消耗并用来工作的,所以有时候消耗更多的资源能够加快查询速度,保持cpu忙绿,这是必要的。很多时候发现
编译进了新版本的InnoDB之后,cpu利用率上升的很厉害,这并不
主外键和索引唯一性约束
百合不是茶
索引 唯一性约束 主外键约束 联机删除
目标;第一步;创建两张表 用户表和文章表
第二步;发表文章
1,建表;
---用户表 BlogUsers
--userID唯一的
--userName
--pwd
--sex
create
线程的调度
bijian1013
java 多线程 thread 线程的调度 java多线程
1. Java提供一个线程调度程序来监控程序中启动后进入可运行状态的所有线程。线程调度程序按照线程的优先级决定应调度哪些线程来执行。
2. 多数线程的调度是抢占式的(即我想中断程序运行就中断,不需要和将被中断的程序协商)
a) 
查看日志常用命令
bijian1013
linux 命令 unix
一.日志查找方法,可以用通配符查某台主机上的所有服务器grep "关键字" /wls/applogs/custom-*/error.log
二.查看日志常用命令1.grep '关键字' error.log:在error.log中搜索'关键字'2.grep -C10 '关键字' error.log:显示关键字前后10行记录3.grep '关键字' error.l
【持久化框架MyBatis3一】MyBatis版HelloWorld
bit1129
helloworld
MyBatis这个系列的文章,主要参考《Java Persistence with MyBatis 3》。
样例数据
本文以MySQL数据库为例,建立一个STUDENTS表,插入两条数据,然后进行单表的增删改查
CREATE TABLE STUDENTS
(
stud_id int(11) NOT NULL AUTO_INCREMENT,
【Hadoop十五】Hadoop Counter
bit1129
hadoop
1. 只有Map任务的Map Reduce Job
File System Counters
FILE: Number of bytes read=3629530
FILE: Number of bytes written=98312
FILE: Number of read operations=0
FILE: Number of lar
解决Tomcat数据连接池无法释放
ronin47
tomcat 连接池 优化
近段时间,公司的检测中心报表系统(SMC)的开发人员时不时找到我,说用户老是出现无法登录的情况。前些日子因为手头上 有Jboss集群的测试工作,发现用户不能登录时,都是在Tomcat中将这个项目Reload一下就好了,不过只是治标而已,因为大概几个小时之后又会 再次出现无法登录的情况。
今天上午,开发人员小毛又找到我,要我协助将这个问题根治一下,拖太久用户难保不投诉。
简单分析了一
java-75-二叉树两结点的最低共同父结点
bylijinnan
java
import java.util.LinkedList;
import java.util.List;
import ljn.help.*;
public class BTreeLowestParentOfTwoNodes {
public static void main(String[] args) {
/*
* node data is stored in
行业垂直搜索引擎网页抓取项目
carlwu
Lucene Nutch Heritrix Solr
公司有一个搜索引擎项目,希望各路高人有空来帮忙指导,谢谢!
这是详细需求:
(1) 通过提供的网站地址(大概100-200个网站),网页抓取程序能不断抓取网页和其它类型的文件(如Excel、PDF、Word、ppt及zip类型),并且程序能够根据事先提供的规则,过滤掉不相干的下载内容。
(2) 程序能够搜索这些抓取的内容,并能对这些抓取文件按照油田名进行分类,然后放到服务器不同的目录中。
[通讯与服务]在总带宽资源没有大幅增加之前,不适宜大幅度降低资费
comsci
资源
降低通讯服务资费,就意味着有更多的用户进入,就意味着通讯服务提供商要接待和服务更多的用户,在总体运维成本没有由于技术升级而大幅下降的情况下,这种降低资费的行为将导致每个用户的平均带宽不断下降,而享受到的服务质量也在下降,这对用户和服务商都是不利的。。。。。。。。
&nbs
Java时区转换及时间格式
Cwind
java
本文介绍Java API 中 Date, Calendar, TimeZone和DateFormat的使用,以及不同时区时间相互转化的方法和原理。
问题描述:
向处于不同时区的服务器发请求时需要考虑时区转换的问题。譬如,服务器位于东八区(北京时间,GMT+8:00),而身处东四区的用户想要查询当天的销售记录。则需把东四区的“今天”这个时间范围转换为服务器所在时区的时间范围。
readonly,只读,不可用
dashuaifu
js jsp disable readOnly readOnly
readOnly 和 readonly 不同,在做js开发时一定要注意函数大小写和jsp黄线的警告!!!我就经历过这么一件事:
使用readOnly在某些浏览器或同一浏览器不同版本有的可以实现“只读”功能,有的就不行,而且函数readOnly有黄线警告!!!就这样被折磨了不短时间!!!(期间使用过disable函数,但是发现disable函数之后后台接收不到前台的的数据!!!)
LABjs、RequireJS、SeaJS 介绍
dcj3sjt126com
js Web
LABjs 的核心是 LAB(Loading and Blocking):Loading 指异步并行加载,Blocking 是指同步等待执行。LABjs 通过优雅的语法(script 和 wait)实现了这两大特性,核心价值是性能优化。LABjs 是一个文件加载器。RequireJS 和 SeaJS 则是模块加载器,倡导的是一种模块化开发理念,核心价值是让 JavaScript 的模块化开发变得更
[应用结构]入口脚本
dcj3sjt126com
PHP yii2
入口脚本
入口脚本是应用启动流程中的第一环,一个应用(不管是网页应用还是控制台应用)只有一个入口脚本。终端用户的请求通过入口脚本实例化应用并将将请求转发到应用。
Web 应用的入口脚本必须放在终端用户能够访问的目录下,通常命名为 index.php,也可以使用 Web 服务器能定位到的其他名称。
控制台应用的入口脚本一般在应用根目录下命名为 yii(后缀为.php),该文
haoop shell命令
eksliang
hadoop hadoop shell
cat
chgrp
chmod
chown
copyFromLocal
copyToLocal
cp
du
dus
expunge
get
getmerge
ls
lsr
mkdir
movefromLocal
mv
put
rm
rmr
setrep
stat
tail
test
text
MultiStateView不同的状态下显示不同的界面
gundumw100
android
只要将指定的view放在该控件里面,可以该view在不同的状态下显示不同的界面,这对ListView很有用,比如加载界面,空白界面,错误界面。而且这些见面由你指定布局,非常灵活。
PS:ListView虽然可以设置一个EmptyView,但使用起来不方便,不灵活,有点累赘。
<com.kennyc.view.MultiStateView xmlns:android=&qu
jQuery实现页面内锚点平滑跳转
ini
JavaScript html jquery html5 css
平时我们做导航滚动到内容都是通过锚点来做,刷的一下就直接跳到内容了,没有一丝的滚动效果,而且 url 链接最后会有“小尾巴”,就像#keleyi,今天我就介绍一款 jquery 做的滚动的特效,既可以设置滚动速度,又可以在 url 链接上没有“小尾巴”。
效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/37.htmHTML文件代码:
&
kafka offset迁移
kane_xie
kafka
在早前的kafka版本中(0.8.0),offset是被存储在zookeeper中的。
到当前版本(0.8.2)为止,kafka同时支持offset存储在zookeeper和offset manager(broker)中。
从官方的说明来看,未来offset的zookeeper存储将会被弃用。因此现有的基于kafka的项目如果今后计划保持更新的话,可以考虑在合适
android > 搭建 cordova 环境
mft8899
android
1 , 安装 node.js
http://nodejs.org
node -v 查看版本
2, 安装 npm
可以先从 https://github.com/isaacs/npm/tags 下载 源码 解压到
java封装的比较器,比较是否全相同,获取不同字段名字
qifeifei
非常实用的java比较器,贴上代码:
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
i
记录一些函数用法
.Aky.
位运算 PHP 数据库 函数 IP
高手们照旧忽略。
想弄个全天朝IP段数据库,找了个今天最新更新的国内所有运营商IP段,copy到文件,用文件函数,字符串函数把玩下。分割出startIp和endIp这样格式写入.txt文件,直接用phpmyadmin导入.csv文件的形式导入。(生命在于折腾,也许你们觉得我傻X,直接下载人家弄好的导入不就可以,做自己的菜鸟,让别人去说吧)
当然用到了ip2long()函数把字符串转为整型数
sublime text 3 rust
wudixiaotie
Sublime Text
1.sublime text 3 => install package => Rust
2.cd ~/.config/sublime-text-3/Packages
3.mkdir rust
4.git clone https://github.com/sp0/rust-style
5.cd rust-style
6.cargo build --release
7.ctrl