前面介绍了ssm框架的整合开发以及后端接口部分的实现(如今对这些接口有了新的变动以及优化),本文将整合前端框架jquery-easyui来实现前后端接口的对接,更加直接的展示poi导入导出excel的效果。(视频教程地址:https://edu.csdn.net/course/detail/8894 欢迎支持!!)
对于easyui,除了页面的内容展示以及样式排版外,主要的责任在于请求后端接口拿到数据并填充到相应的页面位置中。其中的接口就包括:获取数据列表,搜索,导出数据,导入数据。
为了展示效果,我结合了企业实际项目中的实际业务模块,就用“产品信息列表”来进行演示。页面起名为product.jsp,并在web.xml将其作为welcome-list的欢迎页面中:
product.jsp
具体的页面代码都在下面了,包括:如果获取数据列表并填充到easyui的datagrid,导出数据到excel,打开对话框上传excel文件导入数据等等:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Insert title here
<%-- --%>
在这里,后端新增了一个ProductController控制器,用于对接上面页面的请求接口,具体代码如下:
package com.debug.steadyjack.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import com.debug.steadyjack.dto.BaseResponse;
import com.debug.steadyjack.enums.StatusCode;
import com.debug.steadyjack.enums.WorkBookVersion;
import com.debug.steadyjack.mapper.ProductMapper;
import com.debug.steadyjack.model.Product;
import com.debug.steadyjack.service.PoiService;
import com.debug.steadyjack.service.ProductService;
import com.debug.steadyjack.utils.ExcelBeanUtil;
import com.debug.steadyjack.utils.ExcelUtil;
import com.debug.steadyjack.utils.WebUtil;
@Controller
public class ProductController {
private static final Logger log=LoggerFactory.getLogger(ProductController.class);
private static final String prefix="product";
@Value("${poi.excel.sheet.name}")
private String sheetProductName;
@Value("${poi.excel.file.name}")
private String excelProductName;
@Autowired
private ProductMapper productMapper;
@Autowired
private PoiService poiService;
@Autowired
private ProductService productService;
/**
* 获取产品列表
* @param name
* @return
*/
@RequestMapping(value=prefix+"/list",method=RequestMethod.GET)
@ResponseBody
public List list(String name){
List products=new ArrayList();
try {
products=productMapper.selectAll(name);
} catch (Exception e) {
log.error("获取产品列表发生异常: ",e.fillInStackTrace());
}
return products;
}
/**
* 导出excel
* @param response
* @return
*/
@RequestMapping(value=prefix+"/excel/export",method=RequestMethod.GET)
public @ResponseBody String exportExcel(HttpServletResponse response,String search){
try {
List products=productMapper.selectAll(search);
String[] headers=new String[]{"id编号","名称","单位","单价","库存量","采购日期","备注信息"};
List> dataList=ExcelBeanUtil.manageProductList(products);
log.info("excel下载填充数据: {} ",dataList);
Workbook wb=new HSSFWorkbook();
ExcelUtil.fillExcelSheetData(dataList, wb, headers, sheetProductName);
WebUtil.downloadExcel(response, wb, excelProductName);
return excelProductName;
} catch (Exception e) {
log.error("下载excel 发生异常:",e.fillInStackTrace());
}
return null;
}
/**
* 上传excel导入数据
* @param request
* @return
*/
@SuppressWarnings("rawtypes")
@RequestMapping(value=prefix+"/excel/upload",method=RequestMethod.POST,consumes=MediaType.MULTIPART_FORM_DATA_VALUE)
@ResponseBody
public BaseResponse uploadExcel(MultipartHttpServletRequest request){
BaseResponse response=new BaseResponse<>(StatusCode.Success);
try {
MultipartFile file=request.getFile("productFile");
if (file==null || file.getName()==null) {
return new BaseResponse<>(StatusCode.Invalid_Param);
}
String fileName=file.getOriginalFilename();
String suffix=StringUtils.substring(fileName, fileName.lastIndexOf(".")+1);
if (WorkBookVersion.valueOfSuffix(suffix)==null) {
return new BaseResponse<>(StatusCode.WorkBook_Version_Invalid);
}
log.info("文件名:{} 文件后缀名:{} ",fileName,suffix);
Workbook wb=poiService.getWorkbook(file,suffix);
List products=poiService.readExcelData(wb);
//批量插入-第一种方法
//productService.insertBatch(products);
//批量插入-第二种方法(注意jdbc链接mysql允许批量插入删除的配置)
productMapper.insertBatch(products);
} catch (Exception e) {
log.error("上传excel导入数据 发生异常:",e.fillInStackTrace());
return new BaseResponse<>(StatusCode.System_Error);
}
return response;
}
}
优化过后的PoiService代码如下:
package com.debug.steadyjack.service;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import com.debug.steadyjack.enums.WorkBookVersion;
import com.debug.steadyjack.model.Product;
import com.debug.steadyjack.utils.DateUtil;
import com.debug.steadyjack.utils.ExcelUtil;
@Service
public class PoiService {
private static final Logger log=LoggerFactory.getLogger(PoiService.class);
/**
* 读取excel数据
* @param wb
* @return
* @throws Exception
*/
public List readExcelData(Workbook wb) throws Exception{
Product product=null;
List products=new ArrayList();
Row row=null;
int numSheet=wb.getNumberOfSheets();
if (numSheet>0) {
for(int i=0;i0) {
for(int j=1;j<=numRow;j++){
//TODO:跳过excel sheet表格头部
row=sheet.getRow(j);
product=new Product();
String name=ExcelUtil.manageCell(row.getCell(1), null);
String unit=ExcelUtil.manageCell(row.getCell(2), null);
Double price=Double.valueOf(ExcelUtil.manageCell(row.getCell(3), null));
String stock=ExcelUtil.manageCell(row.getCell(4), null);
String remark=ExcelUtil.manageCell(row.getCell(6), null);
product.setName(name);
product.setUnit(unit);
product.setPrice(price);
product.setStock(Double.valueOf(stock));
String value=ExcelUtil.manageCell(row.getCell(5), "yyyy-MM-dd");
product.setPurchaseDate(DateUtil.strToDate(value, "yyyy-MM-dd"));
product.setRemark(remark);
products.add(product);
}
}
}
}
log.info("获取数据列表: {} ",products);
return products;
}
/**
* 根据版本来区分获取workbook实例
* @param version
* @return
*/
public Workbook getWorkbook(String version,InputStream inputStream) throws Exception{
Workbook wk=null;
if (Objects.equals(WorkBookVersion.WorkBook2003.getCode(), version)) {
wk=new HSSFWorkbook(inputStream);
}else if (Objects.equals(WorkBookVersion.WorkBook2007.getCode(), version)) {
wk=new XSSFWorkbook(inputStream);
}
return wk;
}
/**
* 根据file区分获取workbook实例
* @param version
* @return
*/
public Workbook getWorkbook(MultipartFile file,String suffix) throws Exception{
Workbook wk=null;
if (Objects.equals(WorkBookVersion.WorkBook2003Xls.getCode(), suffix)) {
wk=new HSSFWorkbook(file.getInputStream());
}else if (Objects.equals(WorkBookVersion.WorkBook2007Xlsx.getCode(), suffix)) {
wk=new XSSFWorkbook(file.getInputStream());
}
return wk;
}
}
以及需要用到根据上传的文件名来决定获取的WorkBook的实例的WorkBookVersion枚举类:
package com.debug.steadyjack.enums;
import java.util.Objects;
public enum WorkBookVersion {
WorkBook2003("2003","2003版本workBook"),
WorkBook2007("2007","2007版本workBook"),
WorkBook2003Xls("xls","xls后缀名结尾-2003版本workBook"),
WorkBook2007Xlsx("xlsx","xlsx后缀名结尾-2007版本workBook");
private String code;
private String name;
private WorkBookVersion(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/*public static WorkBookVersion valueOfVersion(String code){
if (Objects.equals(WorkBook2003.getCode(), code)) {
return WorkBook2003;
}else if (Objects.equals(WorkBook2007.getCode(), code)) {
return WorkBook2007;
}else{
return null;
}
}*/
public static WorkBookVersion valueOfVersion(String version) {
if (Objects.equals(WorkBook2003.getCode(), version)) {
return WorkBook2003;
}else if (Objects.equals(WorkBook2007.getCode(), version)) {
return WorkBook2007;
}else{
return null;
}
}
public static WorkBookVersion valueOfSuffix(String suffix) {
if (Objects.equals(WorkBook2003Xls.getCode(), suffix)) {
return WorkBook2003Xls;
}else if (Objects.equals(WorkBook2007Xlsx.getCode(), suffix)) {
return WorkBook2007Xlsx;
}else{
return null;
}
}
}
到此,就没有了。然后点击项目右键run到tomcat7服务器,可以看到请求了产品的数据列表,搜索,导出数据到Excel以及导入数据到数据并展示在列表中,详细截图如下:
好了,关于springmvc+spring+mybatis整合框架之poi导入导出excel这一系列就介绍到这里来,相关的源码已经贴在这几篇博客了,有相关问题可以加qq咨询:1948831260 。
另外,为了能介绍得更加清楚,我将特意将此录制为两三节小视频来介绍这个小项目,包括ssm框架的通用搭建法,整合poi框架实现导入导出excel以及如何整合easyui框架等等,如果需要,可以加上面qq付费领取(毕竟是自己辛勤付出,总要有点回报!),大概35-50块低价出售:包括项目源码、整体框架搭建的全过程以及实战视频、以及售后指导服务!当然啦,如果有需要定制开发的或者有外包的也可以加我上面qq咨询。
你可能感兴趣的:(ssh,ssm整合案例)
修改CentOS的SSH登录端口(22端口)
❀͜͡傀儡师
centos ssh linux
要修改CentOS系统的SSH服务默认端口(22端口),请按照以下步骤操作:备份SSH配置文件sudocp/etc/ssh/sshd_config/etc/ssh/sshd_config.bak编辑SSH配置文件sudovi/etc/ssh/sshd_config查找并修改端口设置找到以下行(大约在第13行左右):#Port22取消注释并添加新端口(例如使用56001):#Port22Port56
如何在 Ubuntu 24.04 或 22.04 Linux 上安装和使用 NoMachine
山岚的运维笔记
Linux 运维及使用 linux ubuntu 运维 nomachine 远程连接
NoMachine是一款适用于Linux(Ubuntu)及其他支持的操作系统的远程桌面应用程序,允许用户通过本地或远程系统从世界任何地方控制计算机。它可以在低带宽连接下工作,被专业人士和家庭用户广泛使用。NoMachine的主要功能高性能远程访问跨平台兼容性易于使用,因为用户界面友好提供强大的加密协议,如SSH、SSL及其他安全标准支持远程文件传输和打印服务允许从远程计算机进行音频和视频流媒体传输
第三方库&第三方平台
lllaa
1.AFNetworking、MJRefresh、SDWebImage、Masonry、MJExtensionMBProgressHUDYYText、YYModel2.友盟分享极光推送神策TalkingData数盟可信ID能帮助APP公司在不同场景下确认设备唯一性,识别修改设备及复用、虚拟机刷量等行为,可以反作弊、防刷单,并通过数字联盟生成的设备ID和客户账户体系的关联,实时有效识别小号恶意注册等
没有公网ip怎么访问家里内网?简单操作通用的内网让外网访问的方法步骤
搬码临时工
tcp/ip 网络 网络协议
有公网IP时,可以用路由器管理后台做端口映射转发规则,实现内网本地提供外网访问。在无公网IP时,就需要用到nat123端口映射工具了。没有公网IP下,简单几步操作,将内网IP端口让外网可以访问:1、内网业务先确定家里内网是什么应用需要让外面连接访问的,先本地正常开启,并在内网其他电脑可以正常访问先。常见的有如:管理计算机(远程桌面连接、SSH访问),网站web服务,数据库mysql,监控系统应用,
TCP概述\三次握手四次挥手\报文首部,常用熟知端口号
25岁学Python
1.TCP概述TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若IP地址为192.3.4.16而端口号为80,那么得到的套接字为192.3.4.16:80。2.常用熟知端口号应用程序FTPTFTPTELNETSMTPDNSHTTPSSHMYSQL熟知端口21,206923255380223306
智能家居平台服务端安装教程——东方仙盟部署
未来之窗软件服务
过去未来疑难破阵录 github linux 运维 仙盟创梦IDE 东方仙盟 智能家居
1.准备工作登录阿里云服务器:使用SSH工具(如ssh命令)登录到你的阿里云Linux服务器。确保服务器已安装并能正常运行,且网络连接正常。更新系统软件包:执行以下命令更新系统软件包到最新版本。bashsudoaptupdatesudoaptupgrade-y2.安装依赖HomeAssistant是基于Python的应用,需要安装Python及其相关依赖。bashsudoaptinstall-yp
systemd和OpenSSH
SEP5010
System systemd OpenSSH
1systemd1.1配置文件/etc/systemd/system,AmbientCapabilities=CAP_SYS_NICECAP_NETCAP_NET_RAWCAP_NET_ADMINCAP_NET_BROADCAST/lib/systemd/system/run/systemd/system/usr/lib/systemd/user1.2commandssystemctllist-u
qt c++借助开源的.pro工程文件解读.pro文件中的各项配置的含义
##ProjecttocompileQCustomPlotassharedlibrary(.so/.dll)fromtheamalgamatedsources#QT+=coreguigreaterThan(QT_MAJOR_VERSION,4):QT+=widgetsprintsupportgreaterThan(QT_MAJOR_VERSION,4):CONFIG+=c++11lessThan(
交叉熵损失函数
onlyzzr
深度学习 pytorch 深度学习 机器学习
importtorchimporttorch.nn.functionalasFimporttorch.nnasnnimportmathdefcross_entropyloss(y_pred,y_true):#y_pred'sshapeis[N,C]y_pred=torch.log_softmax(y_pred,dim=-1)loss=-torch.sum(y_true*y_pred,dim=-1)
宝塔linux面板如何开启openssl,宝塔linux面板之升级OpenSSL教程
EdisonGzq
下面由宝塔面板教程栏目给大家介绍升级OpenSSL教程,希望对需要的朋友有所帮助!升级OpenSSL教程(亲测可用)目前一些服务器的OpenSSL还是1.0.1e版本,今天进行服务器漏洞检测出现OpenSSL存在漏洞,那只能升级OpenSSL了。1、登录SSH,查看OpenSSL版本opensslversion2、下载源代码wgethttps://github.com/openssl/openss
Java数据结构和算法-希尔排序[移位式]算法实现
Shaw_Young
packagecom.young.sort;importjava.text.SimpleDateFormat;importjava.util.Arrays;importjava.util.Date;publicclassShellSort{publicstaticvoidmain(String[]args){//int[]arr={8,9,1,7,2,3,5,4,6,0};//shellSort2
Linux: 为什么不应该在内核代码中使用 volatile ?
JiMoKuangXiangQu
# 内存管理 linux volatile
文章目录1.前言2.背景3.为什么不应该在内核代码中使用volatile?4.参考资料1.前言限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。2.背景本文基于Linux内核文档Whythe“volatile”typeclassshouldnotbeused进行翻译,加上了笔者的理解后整理而成。本文并非对原文一对一的翻译,这一点提请读者注意。3.为什么不应该在内核代码中
躁动是别人的,你是坚定的。
无梦为安Ph
(2002,text2)Butifrobotsaretoreachthenextstageoflaborsavingutility,theywillhavetooperatewithlesshumansupervisionandbeabletomakeatleastafewdecisionsforthemselves—goalsthatposearealchallenge.句子结构条件状语从句:B
Ubuntu-24.04-live-server-amd64安装界面中文版
椰子a
ubuntu
系列文章目录Ubuntu安装qemu-guest-agentUbuntu-24.04-live-server-amd64启用sshUbuntu乌班图安装VIM文本编辑器工具文章目录系列文章目录前言一、准备工作二、开始安装三、测试效果总结前言Centos结束,转战Ubuntu。我之所以写这篇文章,是因为我想帮助大家更好地理解Ubuntu24.04的服务器版安装过程。我知道网上已经有很多类似的文章,但
Ubuntu服务器安装与运维手册——操作纯享版
夏天里的肥宅水
LINUX SQL 服务器 服务器 运维 ubuntu
本手册汇总了从硬件预配置、Ubuntu安装、网络与服务配置,到Windows/macOS访问共享、MySQL初始化的完整流程,便于今后运维参考。目录环境与硬件概览BIOS/UEFI设置制作与启动安装介质Ubuntu24.04LTS安装流程静态IP配置(netplan)SSH远程登录配置Samba文件共享配置MySQL数据库初始化FTPvsSamba对比常见问题&解决环境与硬件概览机型:DellXP
CloudFlare Tunnel实现内网穿透
Grovvy_Deng
anti-design-vue
CloudFlareTunnel背景:家中设备处于内网NAT环境,希望使用CFtunnel构建内网穿透的环境。有了CFtunnel后,可实现:家中的NAS可以直接SSHAWS的云服务可迁到到NASNAT主机借助CFtunnel部署服务步骤:cloudflare创建tunnels打开cfdash路径:Networks->Tunnels->创建一个Tunnerl参考教程server端使用dokcer部
SSH登录方式主要分为两种:
1220
SSH登录方式主要分为两种:1.用户名密码验证方式image说明:(1)当客户端发起ssh请求,服务器会把自己的公钥发送给用户;(2)用户会根据服务器发来的公钥对密码进行加密;(3)加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功。2.基于密钥的登录方式image说明:(1)首先在客户端生成一对密钥(ssh-keygen);(2)并将客户端的公钥ssh-copy-id
linux中如何清除history命令
伊成
其它 linux chrome 运维
写在前面使用ssh远程连接客户端连接上linux后操作的命令多了,有时候需要清除对应的历史命令记录,可以通过下面几种方式实现。第一种方法通过修改.bash_history文件这是最简单直接的方法,但是只会影响当前用户的历史记录。执行以下命令即可清除:>~/.bash_historyhistory-c第二种方法:使用export命令同样只会影响当前用户的历史记录。执行以下命令清除历史记录:expor
jsch连接Linux工具类
aisi5339
ui java
importcom.alibaba.fastjson.JSONObject;importcom.jcraft.jsch.*;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjava.io.*;/***Createdbysolonon2017/3/1.*远程调用工具*/publicclassSSHBase{Stringhost;S
虚拟机连不上Xhell
线断木偶人
刚刚安装的虚拟机,ping网络是通的,不知道是什么原因连不上xhell最后的原因是没有安装openssh那就安装吧!Ubantu18.10检查是安装了ssh服务sshlocalhost结果ssh:connecttohostlocalhostport22:Connectionrefused安装和启动sudoapt-getinstallopenssh-serversudo/etc/init.d/ssh
设计模式——原型模式
舟景辞雾枝
软件设计模式 设计模式 原型模式 java
原型模式1.克隆羊问题现在有一只羊tom,姓名为:tom,年龄为:1,颜色为:白色,请编写程序创建和tom羊属性完全相同的10只羊。2.传统方式解决克隆羊问题思路分析通过构造器手动new够需要数量的对象代码//Sheep类publicclassSheep{privateStringname;privateintage;privateStringcolor;publicSheep(Stringnam
如何让vscode 远程登录记住密码
孤独的程序员dis1500
流媒体技术 vscode ide 编辑器
方法1:使用SSH密钥(推荐)SSH密钥是最安全的方法,不需要输入密码。步骤在本地生成SSH密钥ssh-keygen-trsa-b4096运行后按Enter直接使用默认路径(~/.ssh/id_rsa)。可以设置密码(如果不想要密码,直接回车)。将公钥复制到远程服务器ssh-copy-iduser@remote_ipuser是远程用户名,remote_ip是远程服务器的IP地址。如果ssh-cop
10个内网穿透工具推荐,有免费开源,也有国产,太香了!一文打开内网穿透大门,建议收藏!
搬码临时工
智能路由器
你还不知道怎么将内网IP端口开放到互联网上使用?你还不知什么是内网穿透?你在找有哪些工具实现内网穿透?自己网络应用场景适合用什么样的内网穿透应用?一文打开内网穿透大门,建议收藏细品和按需查阅!引言:在现代网络环境中,内网穿透技术成为了很多开发者和系统管理员解决内网与外网互通问题的重要手段。尤其对于需要远程访问的应用场景,如FTP跨网访问、windows远程桌面连接、SSH远程管理Linux服务器、
牛崽姿的ScalerTalk第四轮新概念朗读持续力训练Day59 20181205补作业(20181208)
欢_45f4
练习材料:Ourdog,Rex,usedtositoutsideourfrontgateandbark.Everytimehewantedtocomeintothegardenhewouldbarkuntilsomeoneopenedthegate.Astheneighbourscomplainedofthenoise,myhusbandspentweekstraininghimtopresshi
MySQL高可用部署
杨了个杨8982
mysql scala 数据库
目录一、MHA(一主多从模式)1.环境准备(所有节点)2.部署MySQL主从复制(Master+Slave)3.部署MHAManager(管理节点)(1)安装MHAManager(2)配置SSH无密码登录(3)创建MHA配置文件4.部署MHANode(所有MySQL节点)5.验证和启动MHA二、PXC(多主模式)1.环境准备2.安装PXC相关软件(所有节点)3.配置PXC(所有节点)(1)创建数据
为什么私钥这样的敏感信息却常常以明文形式存储在电脑上?
dev.null
网络 安全
一、为什么私钥如此重要?私钥(PrivateKey)是非对称加密体系的核心机密,作用包括:场景私钥作用加密通信解密别人用你的公钥加密的数据身份认证生成签名证明“这是我本人”发出的数据SSH登录用私钥登录远程服务器(服务器有对应公钥)SSL/TLS网站HTTPS证书中含有私钥,验证身份、加密通信区块链数字钱包中的私钥控制资产,谁持有私钥,谁就拥有比特币/以太坊等一旦私钥泄露,等同于“别人冒充你”。二
隐藏源IP的核心方案与高防实践
一、源IP暴露的风险直接DDoS攻击:2025年Q2全球DDoS攻击峰值达3.8Tbps(来源:Cloudflare报告)漏洞利用:暴露的SSH端口平均每天遭受12,000+暴力破解尝试数据泄露:直接连接数据库风险提升300%二、4种有效隐藏方案反向代理实战配置Nginx核心配置:#/etc/nginx/conf.d/proxy.confserver{listen80;server_nameyou
ssh -T [email protected] 出现异常
光影3415
ssh git github
上传代码到github私有仓库步骤1.生成SSHKey(如果没有)打开终端并运行:bash复制ssh-keygen-ted25519-C"
[email protected] "按提示保存密钥文件和设置密码短语(可选)。默认位置是~/.ssh/id_ed25519。2.添加SSHKey到GitHub复制公钥内容:bash复制cat~/.ssh/id_ed25519.pub登录GitHub,进
如何使用 Git 和 SSH 将项目推送到 GitHub
乖宅猫
git ssh github
目录1.前提条件2.安装Git3.生成SSH密钥生成SSH密钥的步骤:添加SSH密钥到SSHAgent:4.将SSH密钥添加到GitHub5.配置Git用户信息6.将本地代码推送到GitHub1.初始化本地Git仓库2.添加远程仓库3.添加文件并提交4.推送到GitHub7.常见问题及解决方法1.GitHub提示权限拒绝(Permissiondenied)2.连接GitHub超时或被重置3.无法解
利用Cloudflare实现内网穿透访问内部ssh服务器
恐极
服务器 运维 ssh 网络
参考文档:SSH|CloudflareZeroTrustdocs利用Cloudflare的ZeroTrust的Tunnel功能实现内网穿透访问ssh服务器。具体操作流程可以查找视频网站或者按照上面参考文档的链接给出的指示。----------------但是如果你已经搭建好了tunnel,还是无法建立连接的原因是:需要在客户端也安装cloudflared,并配置/.ssh/config:vim~/
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