jacob 对指定word摸板 替换,为什么图片替换不了啊 求大神指教

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

public class Jacob {
private boolean saveOnExit;

/**
 * word文档
 */
private Dispatch doc = null;

/**
 * word运行程序对象
 */
private ActiveXComponent word;

/**
 * 所有word文档
 */
private Dispatch documents;

/**
 * 构造函数
 */
public Jacob() {
    saveOnExit = false;
    word = new ActiveXComponent("Word.Application");
    word.setProperty("Visible", new Variant(false));
    documents = word.getProperty("Documents").toDispatch();
}

/**
 * 设置参数:退出时是否保存
 * 
 * @param saveOnExit
 *            true-退出时保存文件,false-退出时不保存文件
 */
public void setSaveOnExit(boolean saveOnExit) {
    this.saveOnExit = saveOnExit;
}

/**
 * 得到参数:退出时是否保存
 * 
 * @return boolean true-退出时保存文件,false-退出时不保存文件
 */
public boolean getSaveOnExit() {
    return saveOnExit;
}

/**
 * 打开文件
 * 
 * @param inputDoc
 *            要打开的文件,全路径
 * @return Dispatch 打开的文件
 */
public Dispatch open(String inputDoc) {
    return Dispatch.call(documents, "Open", inputDoc).toDispatch();
}

/**
 * 选定内容
 * 
 * @return Dispatch 选定的范围或插入点
 */
public Dispatch select() {
    return word.getProperty("Selection").toDispatch();
}

/**
 * 把选定内容或插入点向上移动
 * 
 * @param selection
 *            要移动的内容
 * @param count
 *            移动的距离
 */
public void moveUp(Dispatch selection, int count) {
    for (int i = 0; i < count; i++)
        Dispatch.call(selection, "MoveUp");
}

/**
 * 把选定内容或插入点向下移动
 * 
 * @param selection
 *            要移动的内容
 * @param count
 *            移动的距离
 */
public void moveDown(Dispatch selection, int count) {
    for (int i = 0; i < count; i++)
        Dispatch.call(selection, "MoveDown");
}

/**
 * 把选定内容或插入点向左移动
 * 
 * @param selection
 *            要移动的内容
 * @param count
 *            移动的距离
 */
public void moveLeft(Dispatch selection, int count) {
    for (int i = 0; i < count; i++)
        Dispatch.call(selection, "MoveLeft");
}

/**
 * 把选定内容或插入点向右移动
 * 
 * @param selection
 *            要移动的内容
 * @param count
 *            移动的距离
 */
public void moveRight(Dispatch selection, int count) {
    for (int i = 0; i < count; i++)
        Dispatch.call(selection, "MoveRight");
}

/**
 * 把插入点移动到文件首位置
 * 
 * @param selection
 *            插入点
 */
public void moveStart(Dispatch selection) {
    Dispatch.call(selection, "HomeKey", new Variant(6));
}

/**
 * 从选定内容或插入点开始查找文本
 * 
 * @param selection
 *            选定内容
 * @param toFindText
 *            要查找的文本
 * @return boolean true-查找到并选中该文本,false-未查找到文本
 */
public boolean find(Dispatch selection, String toFindText) {
    if (toFindText == null || toFindText.equals(""))
        return false;
    // 从selection所在位置开始查询
    Dispatch find = Dispatch.call(selection, "Find").toDispatch();
    // 设置要查找的内容
    Dispatch.put(find, "Text", toFindText);
    // 向前查找
    Dispatch.put(find, "Forward", "True");
    // 设置格式
    Dispatch.put(find, "Format", "True");
    // 大小写匹配
    Dispatch.put(find, "MatchCase", "True");
    // 全字匹配
    Dispatch.put(find, "MatchWholeWord", "True");
    // 查找并选中
    System.out.println(Dispatch.call(find, "Execute").getBoolean());
    return Dispatch.call(find, "Execute").getBoolean();
}

/**
 * 把选定内容替换为设定文本
 * 
 * @param selection
 *            选定内容
 * @param newText
 *            替换为文本
 */
public void replace(Dispatch selection, String newText) {
    // 设置替换文本
    Dispatch.put(selection, "Text", newText);
}

/**
 * 全局替换
 * 
 * @param selection
 *            选定内容或起始插入点
 * @param oldText
 *            要替换的文本
 * @param newText
 *            替换为文本
 */
public void replaceAll(Dispatch selection, String oldText, Object replaceObj) {
    // 移动到文件开头
    moveStart(selection);
    if (oldText.startsWith("table") || replaceObj instanceof List) {
        replaceTable(selection, oldText, (List) replaceObj);
    } else {
        String newText = (String) replaceObj;
        if (oldText.indexOf("image") != -1
                || newText.lastIndexOf(".bmp") != -1
                || newText.lastIndexOf(".jpg") != -1
                || newText.lastIndexOf(".gif") != -1)
            while (find(selection, oldText)) {
                replaceImage(selection, newText);
                Dispatch.call(selection, "MoveRight");
            }
        else
            while (find(selection, oldText)) {
                replace(selection, newText);
                Dispatch.call(selection, "MoveRight");
            }
    }
}

/**
 * 替换图片
 * 
 * @param selection
 *            图片的插入点
 * @param imagePath
 *            图片文件(全路径)
 */
public void replaceImage(Dispatch selection, String imagePath) {
    Dispatch.call(Dispatch.get(selection, "InLineShapes").toDispatch(),
            "AddPicture", imagePath);
}

/**
 * 替换表格
 * 
 * @param selection
 *            插入点
 * @param tableName
 *            表格名称,形如table$1@1、table$2@1...table$R@N,R代表从表格中的第N行开始填充,
 *            N代表word文件中的第N张表
 * @param fields
 *            表格中要替换的字段与数据的对应表
 */
public void replaceTable(Dispatch selection, String tableName, List dataList) {
    if (dataList.size() == 1) {
        System.out.println("Empty table!");
        return;
    }
    // 要填充的列
    String[] cols = (String[]) dataList.get(0);
    // 表格序号
    String tbIndex = tableName.substring(tableName.lastIndexOf("@") + 1);
    // 从第几行开始填充
    int fromRow = Integer.parseInt(tableName.substring(
            tableName.lastIndexOf("$") + 1, tableName.lastIndexOf("@")));
    // 所有表格
    Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
    // 要填充的表格
    Dispatch table = Dispatch.call(tables, "Item", new Variant(tbIndex))
            .toDispatch();
    // 表格的所有行
    Dispatch rows = Dispatch.get(table, "Rows").toDispatch();
    // 填充表格
    for (int i = 1; i < dataList.size(); i++) {
        // 某一行数据
        String[] datas = (String[]) dataList.get(i);
        // 在表格中添加一行
        if (Dispatch.get(rows, "Count").getInt() < fromRow + i - 1)
            Dispatch.call(rows, "Add");
        // 填充该行的相关列
        for (int j = 0; j < datas.length; j++) {
            // 得到单元格
            Dispatch cell = Dispatch.call(table, "Cell",
                    Integer.toString(fromRow + i - 1), cols[j])
                    .toDispatch();
            // 选中单元格
            Dispatch.call(cell, "Select");
            // 设置格式
            Dispatch font = Dispatch.get(selection, "Font").toDispatch();
            Dispatch.put(font, "Bold", "0");
            Dispatch.put(font, "Italic", "0");
            // 输入数据
            Dispatch.put(selection, "Text", datas[j]);
        }
    }
}

/**
 * 保存文件
 * 
 * @param outputPath
 *            输出文件(包含路径)
 */
public void save(String outputPath) {
    Dispatch.call(
            (Dispatch) Dispatch.call(word, "WordBasic").getDispatch(),
            "FileSaveAs", outputPath);
}

/**
 * 关闭文件
 * 
 * @param document
 *            要关闭的文件
 */
public void close(Dispatch doc) {
    Dispatch.call(doc, "Close", new Variant(saveOnExit));
}

/**
 * 退出程序
 * 
 */
public void quit() {
    word.invoke("Quit", new Variant[0]);
    ComThread.Release();
}

/**
 * 根据模板、数据生成word文件
 * 
 * @param inputPath
 *            模板文件(包含路径)
 * @param outPath
 *            输出文件(包含路径)
 * @param data
 *            数据包(包含要填充的字段、对应的数据)
 */
public void toWord(String inputPath, String outPath, HashMap data) {
    String oldText;
    Object newValue;
    ComThread.InitSTA();
    try {
        doc = open(inputPath);
        Dispatch selection = select();
        Iterator keys = data.keySet().iterator();
        while (keys.hasNext()) {
            oldText = (String) keys.next();
            newValue = data.get(oldText);
            replaceAll(selection, oldText, newValue);
        }
        save(outPath);
    } catch (Exception e) {
        // debug.println("toword[Java2Word]------------操作word文件失败!"+e.getMessage(),true);
    } finally {
        if (doc != null) {
            close(doc);
        }
        quit();
    }
}

public static void main(String[] args) throws Exception {
    Jacob j = new Jacob();
    String inputPath = "C:/Users/Administrator/Desktop/精英国际简历-中文.doc";
    String outPath = "C:/Users/Administrator/Desktop/test1.doc";
    HashMap<String, String> data = new HashMap<String, String>();
    data.put("java开发", "程序猿");
    data.put("赵伟", "安夏");
    data.put("D:/c.jpg", "D:/b.jpg");
    j.toWord(inputPath, outPath, data);
    System.out.println("别泡大哥啊");

}

}

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java项目 刚刚用Jacob实现了word Excel转PDF,但linux服务器下怎么办。。。
java项目 刚刚用Jacob实现了word Excel转PDF,但网上大家说Jacob不能在linux下使用,那么linux服务器下怎么办啊。。。
如何使用jacob在word中的指定位置插入图片
项目中需要将客户提交的文字图片 按照一定格式插入一个word模板 例如 如何将图片插入表格单元格的中心或者右下角位置 多谢!
jacob的问题,我在操作word,替换文字的时候,第一次调用可以成功,第二次调用就没有效果了
package com.hundsun.cby.htblthsz; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; import com.jacob.com.Variant; public class HtblthszUtil { // word文档 private Dispatch doc; // word运行程序对象 private ActiveXComponent word; // 所有word文档集合 private Dispatch documents; // 选定的范围或插入点 private Dispatch selection; private boolean saveOnExit = true; /** */ /** * * @param visible * 为true表示word应用程序可见 */ public HtblthszUtil(boolean visible) { if (word == null) { word = new ActiveXComponent("Word.Application"); word.setProperty("Visible", new Variant(visible)); } if (documents == null) documents = word.getProperty("Documents").toDispatch(); } /** */ /** * 设置退出时参数 * * @param saveOnExit * boolean true-退出时保存文件,false-退出时不保存文件 */ public void setSaveOnExit(boolean saveOnExit) { this.saveOnExit = saveOnExit; } /** */ /** * 创建一个新的word文档 * */ public void createNewDocument() { doc = Dispatch.call(documents, "Add").toDispatch(); selection = Dispatch.get(word, "Selection").toDispatch(); } /** */ /** * 打开一个已存在的文档 * * @param docPath */ public void openDocument(String docPath) { closeDocument(); doc = Dispatch.call(documents, "Open", docPath).toDispatch(); selection = Dispatch.get(word, "Selection").toDispatch(); } /** */ /** * 把选定的内容或插入点向上移动 * * @param pos * 移动的距离 */ public void moveUp(int pos) { if (selection == null) selection = Dispatch.get(word, "Selection").toDispatch(); for (int i = 0; i < pos; i++) Dispatch.call(selection, "MoveUp"); } /** */ /** * 把选定的内容或者插入点向下移动 * * @param pos * 移动的距离 */ public void moveDown(int pos) { if (selection == null) selection = Dispatch.get(word, "Selection").toDispatch(); for (int i = 0; i < pos; i++) Dispatch.call(selection, "MoveDown"); } /** */ /** * 把选定的内容或者插入点向左移动 * * @param pos * 移动的距离 */ public void moveLeft(int pos) { if (selection == null) selection = Dispatch.get(word, "Selection").toDispatch(); for (int i = 0; i < pos; i++) { Dispatch.call(selection, "MoveLeft"); } } /** */ /** * 把选定的内容或者插入点向右移动 * * @param pos * 移动的距离 */ public void moveRight(int pos) { if (selection == null) selection = Dispatch.get(word, "Selection").toDispatch(); for (int i = 0; i < pos; i++) Dispatch.call(selection, "MoveRight"); } /** */ /** * 把插入点移动到文件首位置 * */ public void moveStart() { if (selection == null) selection = Dispatch.get(word, "Selection").toDispatch(); Dispatch.call(selection, "HomeKey", new Variant(6)); } public void moveEnd() { if (selection == null) selection = Dispatch.get(word, "Selection").toDispatch(); Dispatch.call(selection, "EndKey", new Variant(6)); } /** */ /** * 从选定内容或插入点开始查找文本 * * @param toFindText * 要查找的文本 * @return boolean true-查找到并选中该文本,false-未查找到文本 */ public boolean find(String toFindText) { if (toFindText == null || toFindText.equals("")) return false; // 从selection所在位置开始查询 Dispatch find = word.call(selection, "Find").toDispatch(); // 设置要查找的内容 Dispatch.put(find, "Text", toFindText); // 向前查找 Dispatch.put(find, "Forward", "True"); // 设置格式 Dispatch.put(find, "Format", "True"); // 大小写匹配 Dispatch.put(find, "MatchCase", "True"); // 全字匹配 Dispatch.put(find, "MatchWholeWord", "True"); // 查找并选中 return Dispatch.call(find, "Execute").getBoolean(); } /** */ /** * 把选定选定内容设定为替换文本 * * @param toFindText * 查找字符串 * @param newText * 要替换的内容 * @return */ public boolean replaceText(String toFindText, String newText) { if (!find(toFindText)){ return false; } Dispatch.put(selection, "Text", newText); return true; } /** */ /** * 全局替换文本 * * @param toFindText * 查找字符串 * @param newText * 要替换的内容 */ public void replaceAllText(String toFindText, String newText) { while (find(toFindText)) { Dispatch.put(selection, "Text", newText); Dispatch.call(selection, "MoveRight"); } } /** */ /** * 在当前插入点插入字符串 * * @param newText * 要插入的新字符串 */ public void insertText(String newText) { Dispatch.put(selection, "Text", newText); } /** */ /** * 关闭全部应用 * */ public void close() { closeDocument(); if (word != null) { Dispatch.call(word, "Quit"); word = null; } selection = null; documents = null; ComThread.Release(); } /** */ /** * 打印当前word文档 * */ public void printFile() { if (doc != null) { Dispatch.call(doc, "PrintOut"); } } public static void main(String args[]) throws Exception { HtblthszUtil msWordManager = new HtblthszUtil(false); msWordManager.openDocument("F:\\基础版-基金子公司(1).docx"); msWordManager.replaceText("资产管理", "castiel计划"); msWordManager.replaceText("123", "客户资产管理计划"); msWordManager.moveEnd(); msWordManager.close(); } }
jacob操作word添加页脚二维码图片
java 使用jacob控制有内容的word文档,动态添加页脚二维码图片
java代码中用jacob操作word,怎么实现word中的组合键效果?
我想用jacob实现word中按ctrl+shift+enter组合键的作用。 原因:我在合并两个word时,word文档1需要插入到word文档2中,而word文档2的第一页又是一张表格。 需要在这个表格的前面加上一行,就需要按ctrl+shift+enter,使得多出一行,然后在这个多的一行上面再插入word文档1,这样才能满足要求。 现在的问题在于,不知道怎么用jacob来达到与在word中按ctrl+shift+enter组合键同样的效果。
java中使用jacob插件生成word文件乱码
java中使用jacob插件生成word文件,使用的是先生成rtf再生成Word,当前在中文操作系统下完全正常,但是在英文和繁体操作系统下生成的Word文件内容中汉字显示乱码~ 求大神指导!
jacob给word文档添加水印,怎样能让水印铺满,而不是一页只有一条水印
jacob给word文档添加水印,怎样能让水印铺满,而不是一页只有一条水印
jacob生成word文档报错
jacob生成word时候,单个可以生成,批量生成报错集合所要求的成员不存在。 ``` ```
java操作word文档,使用jacob怎么获取word的全部文本?
java操作word文档,使用的是jacob,现在要读取一些word里的一些内容,在网上没有找到读取的方法 怎么才能读取到word文档中的所有文本啊,求方法
jacob操作word剪贴板为空或无效
我在项目中使用jacob操作word,在拷贝粘贴会出现剪贴板为空或无效的错误,请问大神到底什么原因,help!!!!!!!!!!!!!!!!!
Java jacob怎么获得Word文档一段一段内容
Java jacob怎么获得Word文档一段一段内容,我现在能够循环一段一段Word文档段落,但是怎么获得这一段的内容
jacob如何对word进行强制保护,不输入密码无法复制内容及编辑
我用Dispatch.call(doc, "Protect",new Object[]{new Variant(3), new Variant(true), "SD#$Dfdf"}); 设置以后,word可以打开编辑、复制,并且另存,没有提示输入密码。怎么设置才能像打开word时设置的效果,不允许任何更改。
Mac系统下,在哪里可以找到jacob.dll开发包?
在Windows上系统需要用jacob.dll调用本地的word文档,需要把jacob.dll放在JDK的目录下。 但是现在使用的是mac系统,找了半天找不到有Mac系统版本的jacob对应的开发包,请问在哪里可以下载到这个开发包?
java 使用jacob组件操作word文件,怎么勾选word文件的复选框?
如题,jacob都是发命令式的编程,不知道命令就没得搞,找了一下也没有这方面的资料,哪位大神知道怎么勾选复选框?
jacob 生成word时提示 内存不足
环境是:win2008 r2 jdk: 1.7(64bit) tomcat: tomcat7.0(64bit) com.jacob.com.ComFailException: Invoke of: Add Source: Microsoft Word Description: 内存不足,请现在保存文档。 at com.jacob.com.Dispatch.invokev(Native Method) at com.jacob.com.Dispatch.invokev(Dispatch.java:625) at com.jacob.com.Dispatch.invoke(Dispatch.java:498).... 求大神们帮个忙,小弟先谢谢了。
jacob,如何在word文档里生成柱状的统计图,以及图表的样式设置,如下图的样式,求源代码,谢谢了
![图片说明](https://img-ask.csdn.net/upload/201702/08/1486522175_674288.png) 这是一部分自己做的代码,但是不知道怎么设置统计图的样式 public void setChartDate(String filepath,String pos,List<Object[]> list){ ActiveXComponent word=null; Dispatch doc=null; Dispatch graph=null; try{ word = new ActiveXComponent("Word.Application");//开启 //得到word对象的处于活动状态的Document Dispatch documents = Dispatch.get(word,"Documents").toDispatch(); //打开已经存在的word对象如果是新建一个word文件的话,需要将Open换成Add,然后去掉filepath参数即可 doc = Dispatch.call(documents, "Open",filepath).toDispatch(); //得到该对象的编辑区域 Dispatch selection = Dispatch.get(word, "Selection").toDispatch(); //设置该对象不可见 Dispatch.put(word, "Visible", new Variant(false)); //插入ole对象 Dispatch inLine =Dispatch.get(selection,"InlineShapes").toDispatch(); graph=Dispatch.call(inLine, "AddOLEObject","MSGraph.Chart.8").toDispatch(); //设置图表的高度 Dispatch.put(graph, "Height", new Variant(200.00)); //设置表的宽度 Dispatch.put(graph, "Width", new Variant(350.00)); //格式化图表 Dispatch oleFormat = Dispatch.call(graph,"OLEFormat").toDispatch(); Dispatch obj = Dispatch.call(oleFormat, "Object").toDispatch(); Dispatch dataSheet = Dispatch.get(obj, "Application").toDispatch(); Dispatch dataSheet2 = Dispatch.get(dataSheet, "dataSheet").toDispatch(); //得到该图表的数据表 //得到数据表的单元格 Dispatch cells = Dispatch.get(dataSheet2, "Cells").toDispatch(); //得到数据表的行 //Dispatch rows= Dispatch.get(cells, "Rows").toDispatch(); // System.out.println(rows); //清空数据表行的默认数据 //Dispatch.call(rows, "Clear"); //for循环添加数据 for(int i=0;i<list.size();i++){ Object[] o=list.get(i); for(int j=0;j<o.length;j++){ Dispatch item = Dispatch.call(cells, "Item",new Variant(i+2),new Variant(j+2)).toDispatch(); Dispatch.put(item, "value", o[i]); } } if (find(selection,pos)) { Dispatch textRange = Dispatch.get(selection, "Range") .toDispatch(); Dispatch.call(textRange, "Paste"); } }catch(Exception e){ e.printStackTrace(); }finally{ //关闭word文档,参数表示是否保存 Dispatch.call(doc, "Close",new Variant(true)); //退出word文档,这步和关闭一样,因为只关闭不退出,该word的进程不会结束 Dispatch.call(word, "Quit",new Variant(0)); //释放word编辑的时候引用的其他资源,比如Graph.exe进程 ComThread.Release(); doc=null; graph=null; word=null; } } 求大神帮忙解决一下,万分感谢
使用Jacob word转PDF无法将目录转为书签
目前使用jacob将word转成PDF,但是转译后无法将word的目录转译成pdf的书签,不能实现快读定位,需要急需解决这个问题,如果问题解决,单独在发200-500的现金红包。
Jacob,初始化ActiveXComponent 操作word
1. Exception in thread "main" java.lang.ExceptionInInitializerError at Jacob.<init>(Jacob.java:34) at Jacob.main(Jacob.java:347) Caused by: java.lang.IllegalStateException: Can't find META-INF/JacobVersion.properties using JacobReleaseInfo.class.getClassLoader().getResourceAsStream() at com.jacob.com.JacobReleaseInfo.loadVersionProperties(JacobReleaseInfo.java:55) at com.jacob.com.JacobReleaseInfo.getBuildVersion(JacobReleaseInfo.java:91) at com.jacob.com.LibraryLoader.getPreferredDLLName(LibraryLoader.java:199) at com.jacob.com.LibraryLoader.loadJacobLibrary(LibraryLoader.java:178) at com.jacob.com.JacobObject.<clinit>(JacobObject.java:107) ... 2 more
JACOB 怎么设置Word文件的自定义属性
ActiveXComponent word = new ActiveXComponent("Word.Application"); word.setProperty("qqq", new Variant(12)); Dispatch documents = word.getProperty("Documents").toDispatch(); String docPath="c:/123213.docx"; Dispatch doc = Dispatch.call(documents, "Open", docPath).toDispatch(); System.out.println("+++++++++++11+++++++++++"); //Dispatch.putRef(doc, "Enovia_Object_Id", new Variant(12)); System.out.println("++++++++++++22++++++++++"); //Dispatch selection = Dispatch.get(word, "Selection").toDispatch();
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
MyBatis研习录(01)——MyBatis概述与入门
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis原本是apache的一个开源项目iBatis, 2010年该项目由apache software foundation 迁移到了google code并改名为MyBatis 。2013年11月MyBatis又迁移到Github。
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
Python爬虫精简步骤1 获取数据
爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据。 爬虫能做很多事,能做商业分析,也能做生活助手,比如:分析北京近两年二手房成交均价是多少?广州的Python工程师平均薪资是多少?北京哪家餐厅粤菜最好吃?等等。 这是个人利用爬虫所做到的事情,而公司,同样可以利用爬虫来实现巨大的商业价值。比如你所熟悉的搜索引擎——百度和谷歌,它们的核心技术之一也是爬虫,而且是超级爬虫。 从搜索巨头到人工...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
web前端javascript+jquery知识点总结
1.Javascript 语法.用途 javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
渗透测试-灰鸽子远控木马
木马概述 灰鸽子( Huigezi),原本该软件适用于公司和家庭管理,其功能十分强大,不但能监视摄像头、键盘记录、监控桌面、文件操作等。还提供了黑客专用功能,如:伪装系统图标、随意更换启动项名称和表述、随意更换端口、运行后自删除、毫无提示安装等,并采用反弹链接这种缺陷设计,使得使用者拥有最高权限,一经破解即无法控制。最终导致被黑客恶意使用。原作者的灰鸽子被定义为是一款集多种控制方式于一体的木马程序...
Python:爬取疫情每日数据
前言 目前每天各大平台,如腾讯、今日头条都会更新疫情每日数据,他们的数据源都是一样的,主要都是通过各地的卫健委官网通报。 以全国、湖北和上海为例,分别为以下三个网站: 国家卫健委官网:http://www.nhc.gov.cn/xcs/yqtb/list_gzbd.shtml 湖北卫健委官网:http://wjw.hubei.gov.cn/bmdt/ztzl/fkxxgzbdgrfyyq/xxfb...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允许使用这...
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧???? 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升自...
粒子群算法求解物流配送路线问题(python)
1.Matlab实现粒子群算法的程序代码:https://www.cnblogs.com/kexinxin/p/9858664.html matlab代码求解函数最优值:https://blog.csdn.net/zyqblog/article/details/80829043 讲解通俗易懂,有数学实例的博文:https://blog.csdn.net/daaikuaichuan/article/...
教你如何编写第一个简单的爬虫
很多人知道爬虫,也很想利用爬虫去爬取自己想要的数据,那么爬虫到底怎么用呢?今天就教大家编写一个简单的爬虫。 下面以爬取笔者的个人博客网站为例获取第一篇文章的标题名称,教大家学会一个简单的爬虫。 第一步:获取页面 #!/usr/bin/python # coding: utf-8 import requests #引入包requests link = "http://www.santostang....
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
相关热词 c# id读写器 c#俄罗斯方块源码 c# linq原理 c# 装箱有什么用 c#集合 复制 c# 一个字符串分组 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图
立即提问