- 浏览: 523716 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (299)
- Oracle(pl/sql_Erp_Pro*C) (69)
- 设计模式 (4)
- spring (23)
- ext (17)
- apache开源项目应用 (4)
- jquery (16)
- 生活琐事 (8)
- 下载资源 (23)
- mysql (2)
- Eclipse使用积累 (5)
- 报表类(报表/图表) (13)
- php (4)
- Web多彩文本框 (3)
- json (4)
- jqgrid (2)
- ant (2)
- java算法积累 (8)
- EL表达式/JSTL (4)
- poi (3)
- gwt (2)
- 爬网第一步 (2)
- javascript (17)
- Javaweb (8)
- tomcat (1)
- flex (1)
- Java&DB (3)
- J2SE (7)
- linux (3)
- 数据结构 (1)
- dot net (5)
- struts (1)
- ibatis (1)
- log4j (1)
- 项目管理 (1)
- Java native interface(jni,jacob......) (5)
- applet (1)
- VB.net/C#.net/JNI (20)
- css (1)
- Sqlite (1)
- servlet (1)
- REST (1)
最新评论
-
wenhurena:
能不能给一下解压密码roki.work.2017@gmail. ...
Ebs解体新書と学習資料1 -
liutao1600:
楼主写的太好了,每天学习~~
Spring_MVC(6)测试 -
liutao1600:
太好了,每天学习你的文章~~~
Spring_MVC(3)表单页面处理 -
liutao1600:
学习了,太好了
Spring_MVC(2)控制层处理 -
liutao1600:
学习了~~~
Spring_MVC(1)构建简单web应用
使用 jcaptcha 产生图片校验码
具体使用的例子: www.tongriben.com
第一步:下载 jcaptcha-all-1.0-RC2.0.1.jar
第二步:代码实现
CaptchaServiceSingleton.java
ImageCaptchaServlet.java
jsp页面增加校验码内容:
<tr><td>
校验码:<input type="text" size="8" name="checkCode" id="checkCode" class="normal_input"/><img src="/jcaptcha" id="checkCodeImg" onclick="this.src='/jcaptcha?now=' + new Date().getTime()" alt="看不清,点击换一张" >请输入校验码,大小写不区分<br> 如看不清,请点击图片换一张
</td></tr>
判断校验码是否正确的java代码:
第一步:下载 jcaptcha-all-1.0-RC2.0.1.jar
第二步:代码实现
CaptchaServiceSingleton.java
- package com.yh.web.jcaptcha;
- import java.awt.Color;
- import java.awt.image.BufferedImage;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.util.ArrayList;
- import java.util.Iterator;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import org.apache.log4j.Logger;
- import com.octo.captcha.component.image.backgroundgenerator.BackgroundGenerator;
- import com.octo.captcha.component.image.backgroundgenerator.GradientBackgroundGenerator;
- import com.octo.captcha.component.image.fontgenerator.FontGenerator;
- import com.octo.captcha.component.image.fontgenerator.RandomFontGenerator;
- import com.octo.captcha.component.image.textpaster.RandomTextPaster;
- import com.octo.captcha.component.image.textpaster.SimpleTextPaster;
- import com.octo.captcha.component.image.textpaster.TextPaster;
- import com.octo.captcha.component.image.wordtoimage.ComposedWordToImage;
- import com.octo.captcha.component.image.wordtoimage.WordToImage;
- import com.octo.captcha.component.wordgenerator.RandomWordGenerator;
- import com.octo.captcha.component.wordgenerator.WordGenerator;
- import com.octo.captcha.engine.image.ListImageCaptchaEngine;
- import com.octo.captcha.image.ImageCaptcha;
- import com.octo.captcha.image.ImageCaptchaFactory;
- import com.octo.captcha.image.gimpy.GimpyFactory;
- import com.sun.image.codec.jpeg.JPEGCodec;
- import com.sun.image.codec.jpeg.JPEGImageEncoder;
- public class CaptchaServiceSingleton extends ListImageCaptchaEngine {
- private static Logger log = Logger.getLogger(CaptchaServiceSingleton.class);
- private static final Integer MIN_WORD_LENGTH = new Integer(4);
- private static final Integer MAX_WORD_LENGTH = new Integer(6);
- private static final Integer IMAGE_WIDTH = new Integer(70);
- private static final Integer IMAGE_HEIGHT = new Integer(20);
- private static final Integer MIN_FONT_SIZE = new Integer(12);
- private static final Integer MAX_FONT_SIZE = new Integer(14);
- private static final String NUMERIC_CHARS = "23456789";// No numeric 0
- private static final String UPPER_ASCII_CHARS = "ABCDEFGHJKLMNPQRSTXYZ";// No
- // upper
- // O I
- // we dont use the lower characters because it cause dificult in some case,
- // so that
- // we must always UPPERCASE the input from user (currently in
- // OnlineUserImpl)
- private static final String LOWER_ASCII_CHARS = "abcdefghjkmnpqrstxyz";// No
- // lower
- // o i
- /**
- * Singleton instance of this class
- */
- private static CaptchaServiceSingleton instance = new CaptchaServiceSingleton();
- private ArrayList textPasterList;
- private ArrayList backgroundGeneratorList;
- private ArrayList fontGeneratorList;
- ImageCaptcha imageCaptcha = null;
- /**
- * Private constructor to prevent instantiation
- */
- private CaptchaServiceSingleton() {
- }
- public static CaptchaServiceSingleton getInstance() {
- return instance;
- }
- protected void buildInitialFactories() {
- try {
- textPasterList = new ArrayList();
- backgroundGeneratorList = new ArrayList();
- fontGeneratorList = new ArrayList();
- textPasterList.add(new SimpleTextPaster(MIN_WORD_LENGTH,
- MAX_WORD_LENGTH, Color.black));
- textPasterList.add(new RandomTextPaster(MIN_WORD_LENGTH,
- MAX_WORD_LENGTH, Color.black));
- textPasterList.add(new SimpleTextPaster(MIN_WORD_LENGTH,
- MAX_WORD_LENGTH, Color.black));
- textPasterList.add(new RandomTextPaster(MIN_WORD_LENGTH,
- MAX_WORD_LENGTH, Color.black));
- textPasterList.add(new SimpleTextPaster(MIN_WORD_LENGTH,
- MAX_WORD_LENGTH, Color.blue));
- textPasterList.add(new RandomTextPaster(MIN_WORD_LENGTH,
- MAX_WORD_LENGTH, Color.blue));
- backgroundGeneratorList.add(new GradientBackgroundGenerator(
- IMAGE_WIDTH, IMAGE_HEIGHT, Color.orange, Color.white));
- backgroundGeneratorList.add(new GradientBackgroundGenerator(
- IMAGE_WIDTH, IMAGE_HEIGHT, Color.white, Color.green));
- backgroundGeneratorList.add(new GradientBackgroundGenerator(
- IMAGE_WIDTH, IMAGE_HEIGHT, Color.gray, Color.white));
- backgroundGeneratorList.add(new GradientBackgroundGenerator(
- IMAGE_WIDTH, IMAGE_HEIGHT, Color.white, Color.orange));
- backgroundGeneratorList.add(new GradientBackgroundGenerator(
- IMAGE_WIDTH, IMAGE_HEIGHT, Color.green, Color.white));
- backgroundGeneratorList.add(new GradientBackgroundGenerator(
- IMAGE_WIDTH, IMAGE_HEIGHT, Color.yellow, Color.white));
- backgroundGeneratorList.add(new GradientBackgroundGenerator(
- IMAGE_WIDTH, IMAGE_HEIGHT, Color.white, Color.magenta));
- // fontGeneratorList.add(new
- // TwistedAndShearedRandomFontGenerator(MIN_FONT_SIZE,
- // MAX_FONT_SIZE));
- // fontGeneratorList.add(new
- // TwistedRandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE));// link
- // character too much
- fontGeneratorList.add(new RandomFontGenerator(MIN_FONT_SIZE,
- MAX_FONT_SIZE));// to easy to read
- // fontGeneratorList.add(new
- // DeformedRandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE));// to
- // small font
- // no char upper O, char lower o and numerric 0 because user cannot
- // answer
- WordGenerator words = new RandomWordGenerator(NUMERIC_CHARS
- + UPPER_ASCII_CHARS);
- for (Iterator fontIter = fontGeneratorList.iterator(); fontIter
- .hasNext();) {
- FontGenerator font = (FontGenerator) fontIter.next();
- for (Iterator backIter = backgroundGeneratorList.iterator(); backIter
- .hasNext();) {
- BackgroundGenerator back = (BackgroundGenerator) backIter
- .next();
- for (Iterator textIter = textPasterList.iterator(); textIter
- .hasNext();) {
- TextPaster parser = (TextPaster) textIter.next();
- WordToImage word2image = new ComposedWordToImage(font,
- back, parser);
- ImageCaptchaFactory factory = new GimpyFactory(words,
- word2image);
- addFactory(factory);
- }
- }
- }
- } catch (Exception ex) {
- log.error("产生校验码初始化异常 == " + ex);
- // throw ex;
- }
- }
- /**
- * Write the captcha image of current user to the servlet response
- *
- * @param request
- * HttpServletRequest
- * @param response
- * HttpServletResponse
- * @throws IOException
- */
- public void writeCaptchaImage(HttpServletRequest request,
- HttpServletResponse response) throws IOException {
- imageCaptcha = getNextImageCaptcha();
- HttpSession session = request.getSession();
- session.setAttribute("imageCaptcha", imageCaptcha);
- BufferedImage image = (BufferedImage) imageCaptcha.getChallenge();
- OutputStream outputStream = null;
- try {
- outputStream = response.getOutputStream();
- // render the captcha challenge as a JPEG image in the response
- response.setHeader("Cache-Control", "no-store");
- response.setHeader("Pragma", "no-cache");
- response.setDateHeader("Expires", 0);
- response.setContentType("image/jpeg");
- JPEGImageEncoder encoder = JPEGCodec
- .createJPEGEncoder(outputStream);
- encoder.encode(image);
- outputStream.flush();
- outputStream.close();
- outputStream = null;// no close twice
- } catch (IOException ex) {
- log.error("产生图片异常 == " + ex);
- throw ex;
- } finally {
- if (outputStream != null) {
- try {
- outputStream.close();
- } catch (IOException ex) {
- }
- }
- imageCaptcha.disposeChallenge();
- }
- }
- public boolean validateCaptchaResponse(String validateCode,
- HttpSession session) {
- boolean flag = true;
- try {
- imageCaptcha = (ImageCaptcha) session.getAttribute("imageCaptcha");
- if (imageCaptcha == null) {
- // log.info("validateCaptchaResponse returned false due to
- // imageCaptcha is null");
- flag = false;
- }
- //validateCode = validateCode.toLowerCase();// use upper case for
- validateCode = validateCode.toUpperCase();// use upper case for
- // easier usage
- flag = (imageCaptcha.validateResponse(validateCode)).booleanValue();
- session.removeAttribute("imageCaptcha");
- return flag;
- } catch (Exception ex) {
- ex.printStackTrace();
- log.error("校验码校验异常 == " + ex);
- return false;
- }
- }
- }
package com.yh.web.jcaptcha; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import com.octo.captcha.component.image.backgroundgenerator.BackgroundGenerator; import com.octo.captcha.component.image.backgroundgenerator.GradientBackgroundGenerator; import com.octo.captcha.component.image.fontgenerator.FontGenerator; import com.octo.captcha.component.image.fontgenerator.RandomFontGenerator; import com.octo.captcha.component.image.textpaster.RandomTextPaster; import com.octo.captcha.component.image.textpaster.SimpleTextPaster; import com.octo.captcha.component.image.textpaster.TextPaster; import com.octo.captcha.component.image.wordtoimage.ComposedWordToImage; import com.octo.captcha.component.image.wordtoimage.WordToImage; import com.octo.captcha.component.wordgenerator.RandomWordGenerator; import com.octo.captcha.component.wordgenerator.WordGenerator; import com.octo.captcha.engine.image.ListImageCaptchaEngine; import com.octo.captcha.image.ImageCaptcha; import com.octo.captcha.image.ImageCaptchaFactory; import com.octo.captcha.image.gimpy.GimpyFactory; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class CaptchaServiceSingleton extends ListImageCaptchaEngine { private static Logger log = Logger.getLogger(CaptchaServiceSingleton.class); private static final Integer MIN_WORD_LENGTH = new Integer(4); private static final Integer MAX_WORD_LENGTH = new Integer(6); private static final Integer IMAGE_WIDTH = new Integer(70); private static final Integer IMAGE_HEIGHT = new Integer(20); private static final Integer MIN_FONT_SIZE = new Integer(12); private static final Integer MAX_FONT_SIZE = new Integer(14); private static final String NUMERIC_CHARS = "23456789";// No numeric 0 private static final String UPPER_ASCII_CHARS = "ABCDEFGHJKLMNPQRSTXYZ";// No // upper // O I // we dont use the lower characters because it cause dificult in some case, // so that // we must always UPPERCASE the input from user (currently in // OnlineUserImpl) private static final String LOWER_ASCII_CHARS = "abcdefghjkmnpqrstxyz";// No // lower // o i /** * Singleton instance of this class */ private static CaptchaServiceSingleton instance = new CaptchaServiceSingleton(); private ArrayList textPasterList; private ArrayList backgroundGeneratorList; private ArrayList fontGeneratorList; ImageCaptcha imageCaptcha = null; /** * Private constructor to prevent instantiation */ private CaptchaServiceSingleton() { } public static CaptchaServiceSingleton getInstance() { return instance; } protected void buildInitialFactories() { try { textPasterList = new ArrayList(); backgroundGeneratorList = new ArrayList(); fontGeneratorList = new ArrayList(); textPasterList.add(new SimpleTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, Color.black)); textPasterList.add(new RandomTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, Color.black)); textPasterList.add(new SimpleTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, Color.black)); textPasterList.add(new RandomTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, Color.black)); textPasterList.add(new SimpleTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, Color.blue)); textPasterList.add(new RandomTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, Color.blue)); backgroundGeneratorList.add(new GradientBackgroundGenerator( IMAGE_WIDTH, IMAGE_HEIGHT, Color.orange, Color.white)); backgroundGeneratorList.add(new GradientBackgroundGenerator( IMAGE_WIDTH, IMAGE_HEIGHT, Color.white, Color.green)); backgroundGeneratorList.add(new GradientBackgroundGenerator( IMAGE_WIDTH, IMAGE_HEIGHT, Color.gray, Color.white)); backgroundGeneratorList.add(new GradientBackgroundGenerator( IMAGE_WIDTH, IMAGE_HEIGHT, Color.white, Color.orange)); backgroundGeneratorList.add(new GradientBackgroundGenerator( IMAGE_WIDTH, IMAGE_HEIGHT, Color.green, Color.white)); backgroundGeneratorList.add(new GradientBackgroundGenerator( IMAGE_WIDTH, IMAGE_HEIGHT, Color.yellow, Color.white)); backgroundGeneratorList.add(new GradientBackgroundGenerator( IMAGE_WIDTH, IMAGE_HEIGHT, Color.white, Color.magenta)); // fontGeneratorList.add(new // TwistedAndShearedRandomFontGenerator(MIN_FONT_SIZE, // MAX_FONT_SIZE)); // fontGeneratorList.add(new // TwistedRandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE));// link // character too much fontGeneratorList.add(new RandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE));// to easy to read // fontGeneratorList.add(new // DeformedRandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE));// to // small font // no char upper O, char lower o and numerric 0 because user cannot // answer WordGenerator words = new RandomWordGenerator(NUMERIC_CHARS + UPPER_ASCII_CHARS); for (Iterator fontIter = fontGeneratorList.iterator(); fontIter .hasNext();) { FontGenerator font = (FontGenerator) fontIter.next(); for (Iterator backIter = backgroundGeneratorList.iterator(); backIter .hasNext();) { BackgroundGenerator back = (BackgroundGenerator) backIter .next(); for (Iterator textIter = textPasterList.iterator(); textIter .hasNext();) { TextPaster parser = (TextPaster) textIter.next(); WordToImage word2image = new ComposedWordToImage(font, back, parser); ImageCaptchaFactory factory = new GimpyFactory(words, word2image); addFactory(factory); } } } } catch (Exception ex) { log.error("产生校验码初始化异常 == " + ex); // throw ex; } } /** * Write the captcha image of current user to the servlet response * * @param request * HttpServletRequest * @param response * HttpServletResponse * @throws IOException */ public void writeCaptchaImage(HttpServletRequest request, HttpServletResponse response) throws IOException { imageCaptcha = getNextImageCaptcha(); HttpSession session = request.getSession(); session.setAttribute("imageCaptcha", imageCaptcha); BufferedImage image = (BufferedImage) imageCaptcha.getChallenge(); OutputStream outputStream = null; try { outputStream = response.getOutputStream(); // render the captcha challenge as a JPEG image in the response response.setHeader("Cache-Control", "no-store"); response.setHeader("Pragma", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); JPEGImageEncoder encoder = JPEGCodec .createJPEGEncoder(outputStream); encoder.encode(image); outputStream.flush(); outputStream.close(); outputStream = null;// no close twice } catch (IOException ex) { log.error("产生图片异常 == " + ex); throw ex; } finally { if (outputStream != null) { try { outputStream.close(); } catch (IOException ex) { } } imageCaptcha.disposeChallenge(); } } public boolean validateCaptchaResponse(String validateCode, HttpSession session) { boolean flag = true; try { imageCaptcha = (ImageCaptcha) session.getAttribute("imageCaptcha"); if (imageCaptcha == null) { // log.info("validateCaptchaResponse returned false due to // imageCaptcha is null"); flag = false; } //validateCode = validateCode.toLowerCase();// use upper case for validateCode = validateCode.toUpperCase();// use upper case for // easier usage flag = (imageCaptcha.validateResponse(validateCode)).booleanValue(); session.removeAttribute("imageCaptcha"); return flag; } catch (Exception ex) { ex.printStackTrace(); log.error("校验码校验异常 == " + ex); return false; } } }
ImageCaptchaServlet.java
- package com.yh.web.servlet;
- import java.io.IOException;
- import javax.servlet.ServletConfig;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import com.yh.web.jcaptcha.CaptchaServiceSingleton;
- import com.octo.captcha.service.CaptchaServiceException;
- public class ImageCaptchaServlet extends HttpServlet {
- private static final long serialVersionUID = -5382766069139170499L;
- public void init(ServletConfig servletConfig) throws ServletException {
- super.init(servletConfig);
- }
- protected void doGet(HttpServletRequest httpServletRequest,
- HttpServletResponse httpServletResponse) throws ServletException,
- IOException {
- System.out.println("---------- ImageCaptchaServlet pass here -------------");
- try {
- CaptchaServiceSingleton.getInstance().writeCaptchaImage(
- httpServletRequest, httpServletResponse);
- } catch (IllegalArgumentException e) {
- httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);
- return;
- } catch (CaptchaServiceException e) {
- httpServletResponse
- .sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- return;
- }
- }
- }
package com.yh.web.servlet; import java.io.IOException; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.yh.web.jcaptcha.CaptchaServiceSingleton; import com.octo.captcha.service.CaptchaServiceException; public class ImageCaptchaServlet extends HttpServlet { private static final long serialVersionUID = -5382766069139170499L; public void init(ServletConfig servletConfig) throws ServletException { super.init(servletConfig); } protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException { System.out.println("---------- ImageCaptchaServlet pass here -------------"); try { CaptchaServiceSingleton.getInstance().writeCaptchaImage( httpServletRequest, httpServletResponse); } catch (IllegalArgumentException e) { httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND); return; } catch (CaptchaServiceException e) { httpServletResponse .sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); return; } } }
jsp页面增加校验码内容:
<tr><td>
校验码:<input type="text" size="8" name="checkCode" id="checkCode" class="normal_input"/><img src="/jcaptcha" id="checkCodeImg" onclick="this.src='/jcaptcha?now=' + new Date().getTime()" alt="看不清,点击换一张" >请输入校验码,大小写不区分<br> 如看不清,请点击图片换一张
</td></tr>
判断校验码是否正确的java代码:
- HttpSession session = request.getSession();
- boolean isResponseCorrect = false;
- // retrieve the response
- String validateCode = checkCode.trim();
- System.out.println("checkCode == "
- + checkCode);
- try {
- isResponseCorrect = CaptchaServiceSingleton.getInstance()
- .validateCaptchaResponse(validateCode, session);
- return isResponseCorrect;
- } catch (Exception e) {
- // should not happen, may be thrown if the id is not valid
- return false;
- }
发表评论
-
Request用法总结
2010-05-08 13:56 1237HttpServletRequest方法总结 HttpS ... -
jsp出现getOutputStream() has already been called for this response异常的原因和解决方法 - []
2010-04-29 23:09 923在tomcat5下jsp中出现此错误一般都是在jsp中使用了输 ... -
Cookie
2010-04-29 10:40 812正常的cookie只能在一个应用中共享,即一个cookie只能 ... -
Cookie保存登陆帐号密码
2010-04-29 10:34 2543login.jsp 代码: String host = req ... -
servlet验证码
2010-04-29 10:16 1520servlet package chenlh; import ... -
@RequestParam注解用于在控制器中绑定请求参数到方法参数.
2010-04-24 19:01 7188@RequestParam注解用于在控制器中绑定请求参数到方法 ... -
隐藏页面地址栏
2009-03-30 16:30 1900<!DOCTYPE HTML PUBLIC " ...
相关推荐
2. **添加文字**:然后,Jcaptcha会选择一个`WordGenerator`来生成随机单词,如`RandomWordGenerator`,并使用`FontGenerator`如`RandomFontGenerator`来确定字体样式。接着,`TextPaster`如`RandomTextPaster`或`...
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
kolesar_3cd_01_0716
latchman_01_0108
matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
pimpinella_3cd_01_0716
petrilla_01_0308
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
内容概要:本文档由张卓老师讲解,重点探讨DeepSeek的技术革新及强化学习对未来AI发展的重要性。文章回顾了AI的历史与发展阶段,详细解析Transformer架构在AI上半场所起到的作用,深入介绍了MoE混合专家以及MLA低秩注意机制等技术特点如何帮助DeepSeek在AI中场建立优势,并探讨了当前强化学习的挑战和边界。文档不仅提及AlphaGo和小游戏等成功案例来说明强化学习的强大力量,还提出了关于未来人工通用智能(AGI)的展望,特别是如何利用强化学习提升现有LLMs的能力和性能。 适用人群:本资料适宜对深度学习感兴趣的研究人员、开发者以及想要深入了解人工智能最新进展的专业人士。 使用场景及目标:通过了解最新的AI技术和前沿概念,在实际工作中能够运用更先进的工具和技术解决问题。同时为那些寻求职业转型或者学术深造的人提供了宝贵的参考。 其他说明:文中提到了许多具体的例子和技术细节,如DeepSeek的技术特色、RL的理论背景等等,有助于加深读者对于现代AI系统的理解和认识。
有师傅小程序开源版v2.4.14 新增报价短信奉告 优化部分细节
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
商城二级三级分销系统(小程序+后台含源码).zip
li_3ck_01b_0918
nicholl_3cd_01_0516
媒体关注度是一个衡量公众对某个事件、话题或个体关注程度的重要指标。它主要反映了新闻媒体、社交媒体、博客等对于某一事件、话题或个体的报道和讨论程度。 媒体监督的J-F系数(Janis-Fadner系数)是一种用于测量媒体关注度的指标,特别是用于评估媒体对企业、事件或话题的监督力度。J-F系数基于媒体报道的正面和负面内容来计算,从而为公众、研究者或企业提供一个量化工具,以了解媒体对其关注的方向和强度。 本数据含原始数据、参考文献、代码do文件、最终结果。参考文献中JF系数计算公式。 指标 代码、年份、标题出现该公司的新闻总数、内容出现该公司的新闻总数、正面新闻数全部、中性新闻数全部、负面新闻数全部、正面新闻数原创、中性新闻数原创、负面新闻数原创,媒体监督JF系数。
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
lusted_3cd_02_0716