学习ACEGI

2024-01-28 16:32
文章标签 学习 acegi

本文主要是介绍学习ACEGI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.建立一个MyEclipse的WebProject,把下列jar文件拷贝到项目的WEB-INF/lib目录:
acegi-security-1.0.3.jar
spring2.0.jar
commons-codec-1.3.jar
2.修改WEB-INF下的web.xml文件,内容如下:

Java代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <web-app>   
  3.   
  4.     <display-name>acegi Example of liuyxit</display-name>   
  5.        
  6.     <!--   
  7.         定义应用的上下文参数,用于ContextLoaderListener       
  8.     -->   
  9.     <context-param>   
  10.         <param-name>contextConfigLocation</param-name>   
  11.         <param-value>   
  12.             classpath:spring/applicationContext.xml   
  13.         </param-value>   
  14.     </context-param>   
  15.   
  16.     <!--acegi 的filter链代理-->   
  17.     <filter>   
  18.         <filter-name>Acegi Filter Chain Proxy</filter-name>   
  19.         <filter-class>   
  20.             org.acegisecurity.util.FilterToBeanProxy   
  21.         </filter-class>   
  22.         <init-param>   
  23.             <param-name>targetClass</param-name>   
  24.             <param-value>   
  25.                 org.acegisecurity.util.FilterChainProxy   
  26.             </param-value>   
  27.         </init-param>   
  28.     </filter>   
  29.     <filter-mapping>   
  30.         <filter-name>Acegi Filter Chain Proxy</filter-name>   
  31.         <url-pattern>/*</url-pattern>   
  32.     </filter-mapping>   
  33.        
  34.     <!--   
  35.         装载应用软件的Spring上下文   
  36.         要由WebapplicationContextUtils.getWebApplicationnContext(servletContext)得到.   
  37.     -->   
  38.     <listener>   
  39.         <listener-class>   
  40.             org.springframework.web.context.ContextLoaderListener   
  41.         </listener-class>   
  42.     </listener>   
  43. </web-app>  
Java代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <web-app>   
  3.   
  4.     <display-name>acegi Example of liuyxit</display-name>   
  5.        
  6.     <!--   
  7.         定义应用的上下文参数,用于ContextLoaderListener       
  8.     -->   
  9.     <context-param>   
  10.         <param-name>contextConfigLocation</param-name>   
  11.         <param-value>   
  12.             classpath:spring/applicationContext.xml   
  13.         </param-value>   
  14.     </context-param>   
  15.   
  16.     <!--acegi 的filter链代理-->   
  17.     <filter>   
  18.         <filter-name>Acegi Filter Chain Proxy</filter-name>   
  19.         <filter-class>   
  20.             org.acegisecurity.util.FilterToBeanProxy   
  21.         </filter-class>   
  22.         <init-param>   
  23.             <param-name>targetClass</param-name>   
  24.             <param-value>   
  25.                 org.acegisecurity.util.FilterChainProxy   
  26.             </param-value>   
  27.         </init-param>   
  28.     </filter>   
  29.     <filter-mapping>   
  30.         <filter-name>Acegi Filter Chain Proxy</filter-name>   
  31.         <url-pattern>/*</url-pattern>   
  32.     </filter-mapping>   
  33.        
  34.     <!--   
  35.         装载应用软件的Spring上下文   
  36.         要由WebapplicationContextUtils.getWebApplicationnContext(servletContext)得到.   
  37.     -->   
  38.     <listener>   
  39.         <listener-class>   
  40.             org.springframework.web.context.ContextLoaderListener   
  41.         </listener-class>   
  42.     </listener>   
  43. </web-app>  
<?xml version="1.0" encoding="UTF-8"?>
<web-app><display-name>acegi Example of liuyxit</display-name><!--定义应用的上下文参数,用于ContextLoaderListener	  --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext.xml</param-value></context-param><!--acegi 的filter链代理--><filter><filter-name>Acegi Filter Chain Proxy</filter-name><filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class><init-param><param-name>targetClass</param-name><param-value>org.acegisecurity.util.FilterChainProxy</param-value></init-param></filter><filter-mapping><filter-name>Acegi Filter Chain Proxy</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--装载应用软件的Spring上下文要由WebapplicationContextUtils.getWebApplicationnContext(servletContext)得到.--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
</web-app>



其中FilterChainProxy实现了filter接口,它主要是实例化FilterChainProxy,并把所有动作交由FilterChainProxy处理。这样简化了web.xml的配置,并且充分利用了Spring IOC管理Bean的优势。

3.在src目录右键新建一个resource folder,在下面再建立acegi和spring目录
在spring目录中创建applicationContext.xml文件,内容:

Java代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xmlns:aop="http://www.springframework.org/schema/aop"  
  5.        xmlns:tx="http://www.springframework.org/schema/tx"  
  6.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd   
  7.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd   
  8.            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"   
  9.            default-autowire="byName" default-lazy-init="true">   
  10.        
  11.      <!--   ========================  FILTER CHAIN  =======================   -->    
  12.      <bean id="filterChainProxy"   class="org.acegisecurity.util.FilterChainProxy">    
  13.        <property name="filterInvocationDefinitionSource">    
  14.           <value>    
  15.             CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON   
  16.             PATTERN_TYPE_APACHE_ANT   
  17.             /**=authenticationProcessingFilter,exceptionTranslationFilter   
  18.          </value>   
  19.       </property>   
  20.     </bean>      
  21.     <!-- ======================== 认证filter ======================= -->   
  22.       
  23.     <!-- 表单认证处理filter -->   
  24.     <bean id="authenticationProcessingFilter" class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter">   
  25.         <property name="authenticationManager" ref="authenticationManager"/>   
  26.         <property name="authenticationFailureUrl" value="/acegilogin.jsp?login_error=1"/>   
  27.         <property name="defaultTargetUrl" value="/userinfo.jsp"/>   
  28.         <property name="filterProcessesUrl" value="/j_acegi_security_check"/>   
  29.     </bean>       
  30.           
  31.    <!-- 认证管理器 -->   
  32.    <bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">   
  33.       <property name="providers"><!-- 可有多个认证提供器,其中一个证通过就可以了 -->   
  34.          <list>   
  35.             <ref local="daoAuthenticationProvider"/>   
  36.          </list>   
  37.       </property>   
  38.    </bean>      
  39.     <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">   
  40.         <property name="userDetailsService" ref="inMemoryDaoImpl"/>           
  41.     </bean>       
  42.     <!-- 用户资料-->   
  43.      <bean id="inMemoryDaoImpl" class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">     
  44.         <property name="userMap">     
  45.             <value>     
  46.                 liuyxit=123,ROLE_SUPERVISOR   
  47.                 user1=user1,ROLE_USER   
  48.                 user2=user2,disabled,ROLE_USER      
  49.             </value>     
  50.         </property>     
  51.     </bean>   
  52.     <!-- 异常处理filter -->   
  53.     <bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter">   
  54.         <property name="authenticationEntryPoint">   
  55.             <bean class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint">   
  56.                 <property name="loginFormUrl" value="/acegilogin.jsp"/>   
  57.                 <property name="forceHttps" value="false"/>   
  58.             </bean>   
  59.         </property>   
  60.         <property name="accessDeniedHandler">   
  61.             <bean class="org.acegisecurity.ui.AccessDeniedHandlerImpl">   
  62.                 <property name="errorPage" value="/accessDenied.jsp"/>   
  63.             </bean>   
  64.         </property>   
  65.     </bean>       
  66. </beans>   
Java代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xmlns:aop="http://www.springframework.org/schema/aop"  
  5.        xmlns:tx="http://www.springframework.org/schema/tx"  
  6.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd   
  7.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd   
  8.            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"   
  9.            default-autowire="byName" default-lazy-init="true">   
  10.        
  11.      <!--   ========================  FILTER CHAIN  =======================   -->    
  12.      <bean id="filterChainProxy"   class="org.acegisecurity.util.FilterChainProxy">    
  13.        <property name="filterInvocationDefinitionSource">    
  14.           <value>    
  15.             CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON   
  16.             PATTERN_TYPE_APACHE_ANT   
  17.             /**=authenticationProcessingFilter,exceptionTranslationFilter   
  18.          </value>   
  19.       </property>   
  20.     </bean>      
  21.     <!-- ======================== 认证filter ======================= -->   
  22.       
  23.     <!-- 表单认证处理filter -->   
  24.     <bean id="authenticationProcessingFilter" class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter">   
  25.         <property name="authenticationManager" ref="authenticationManager"/>   
  26.         <property name="authenticationFailureUrl" value="/acegilogin.jsp?login_error=1"/>   
  27.         <property name="defaultTargetUrl" value="/userinfo.jsp"/>   
  28.         <property name="filterProcessesUrl" value="/j_acegi_security_check"/>   
  29.     </bean>       
  30.           
  31.    <!-- 认证管理器 -->   
  32.    <bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">   
  33.       <property name="providers"><!-- 可有多个认证提供器,其中一个证通过就可以了 -->   
  34.          <list>   
  35.             <ref local="daoAuthenticationProvider"/>   
  36.          </list>   
  37.       </property>   
  38.    </bean>      
  39.     <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">   
  40.         <property name="userDetailsService" ref="inMemoryDaoImpl"/>           
  41.     </bean>       
  42.     <!-- 用户资料-->   
  43.      <bean id="inMemoryDaoImpl" class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">     
  44.         <property name="userMap">     
  45.             <value>     
  46.                 liuyxit=123,ROLE_SUPERVISOR   
  47.                 user1=user1,ROLE_USER   
  48.                 user2=user2,disabled,ROLE_USER      
  49.             </value>     
  50.         </property>     
  51.     </bean>   
  52.     <!-- 异常处理filter -->   
  53.     <bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter">   
  54.         <property name="authenticationEntryPoint">   
  55.             <bean class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint">   
  56.                 <property name="loginFormUrl" value="/acegilogin.jsp"/>   
  57.                 <property name="forceHttps" value="false"/>   
  58.             </bean>   
  59.         </property>   
  60.         <property name="accessDeniedHandler">   
  61.             <bean class="org.acegisecurity.ui.AccessDeniedHandlerImpl">   
  62.                 <property name="errorPage" value="/accessDenied.jsp"/>   
  63.             </bean>   
  64.         </property>   
  65.     </bean>       
  66. </beans>   
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"default-autowire="byName" default-lazy-init="true"><!--   ========================  FILTER CHAIN  =======================   --> <bean id="filterChainProxy"   class="org.acegisecurity.util.FilterChainProxy"> <property name="filterInvocationDefinitionSource"> <value> CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISONPATTERN_TYPE_APACHE_ANT/**=authenticationProcessingFilter,exceptionTranslationFilter</value></property></bean>   <!-- ======================== 认证filter ======================= --><!-- 表单认证处理filter --><bean id="authenticationProcessingFilter" class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter"><property name="authenticationManager" ref="authenticationManager"/><property name="authenticationFailureUrl" value="/acegilogin.jsp?login_error=1"/><property name="defaultTargetUrl" value="/userinfo.jsp"/><property name="filterProcessesUrl" value="/j_acegi_security_check"/></bean>    <!-- 认证管理器 --><bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager"><property name="providers"><!-- 可有多个认证提供器,其中一个证通过就可以了 --><list><ref local="daoAuthenticationProvider"/></list></property></bean>   <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"><property name="userDetailsService" ref="inMemoryDaoImpl"/>        </bean>    <!-- 用户资料--><bean id="inMemoryDaoImpl" class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">  <property name="userMap">  <value>  liuyxit=123,ROLE_SUPERVISORuser1=user1,ROLE_USERuser2=user2,disabled,ROLE_USER   </value>  </property>  </bean><!-- 异常处理filter --><bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter"><property name="authenticationEntryPoint"><bean class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint"><property name="loginFormUrl" value="/acegilogin.jsp"/><property name="forceHttps" value="false"/></bean></property><property name="accessDeniedHandler"><bean class="org.acegisecurity.ui.AccessDeniedHandlerImpl"><property name="errorPage" value="/accessDenied.jsp"/></bean></property></bean>    
</beans> 



[list=A]其中filterChainProxy就是由web.xml声明的filter(FilterToBeanProxy)的targetClass。它主要是装载filterInvocationDefinitionSource指定的filter类(例子中为authenticationProcessingFilter,exceptionTranslationFilter),并顺序调用它们的doFilter方法,进行安全服务处理。[/list]
[list=B]而authenticationProcessingFilter是处理一个认证表单,登陆用的表单必须提交用户名和密码这两个参数给这个filter.由用户名和密码构造一个UsernamePasswordAuthenticationToken,将传给AuthenticationManager的authenticate方法进行认证处理。该filter默认处理filterProcessesUrl属性指定的URL,认证失败会转到authenticationFailureUrl,认证成功会转到defaultTargetUrl页面。[/list]
[list=C]AuthenticationManager顾名思义认证管理器,它只有一个接口方法authenticate用于返回认证结果,他的实现类由多个AuthenticationProvider进行投票,决定认证是否通过。[/list]
[list=D]daoAuthenticationProvider是检验用户录入的认证数据是否正确(说白了就是用户名和密码是否正确)[/list]
[list=E]inMemoryDaoImpl是给daoAuthenticationProvider提供系统的用户资料。而资料的来源是从配置中装载到内存的。[/list]
[list=F]当认证不通过时,AuthenticationManager的实现类AbstractAuthenticationManager会抛出AuthenticationException类型的异常。这时排在最后的exceptionTranslationFilter会捕获该异常,并转向authenticationEntryPoint。[/list]

4.在WebRoot下创建index.jsp(其实不要也没关系,主要是为了方便),直接转向用户资料显示页。内容如下:

Java代码 复制代码
  1. <%@ page language="java" pageEncoding="UTF-8"%>   
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">   
  3. <html>   
  4. <head>   
  5.     <META HTTP-EQUIV="Refresh" CONTENT="0;URL=userinfo.jsp">   
  6. </head>   
  7.   
  8. <body>   
  9. <p>Loading ...</p>   
  10. </body>   
  11. </html>  
Java代码 复制代码
  1. <%@ page language="java" pageEncoding="UTF-8"%>   
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">   
  3. <html>   
  4. <head>   
  5.     <META HTTP-EQUIV="Refresh" CONTENT="0;URL=userinfo.jsp">   
  6. </head>   
  7.   
  8. <body>   
  9. <p>Loading ...</p>   
  10. </body>   
  11. </html>  
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head><META HTTP-EQUIV="Refresh" CONTENT="0;URL=userinfo.jsp">
</head><body>
<p>Loading ...</p>
</body>
</html>



5.在WebRoot下创建userinfo.jsp,用于显示当前登陆的用户信息。内容如下

Java代码 复制代码
  1. <%@ page language="java" pageEncoding="UTF-8"%>   
  2. <%@ page import="org.acegisecurity.context.SecurityContextHolder"%>   
  3. <%@ page import="org.acegisecurity.userdetails.*"%>   
  4.   
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
  6. <html>   
  7.     <head>   
  8.         <title>My JSP 'pass.jsp' starting page</title>   
  9.   
  10.         <meta http-equiv="pragma" content="no-cache">   
  11.         <meta http-equiv="cache-control" content="no-cache">   
  12.         <meta http-equiv="expires" content="0">   
  13.         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">   
  14.         <meta http-equiv="description" content="This is my page">   
  15.     </head>   
  16.   
  17.     <body>   
  18.         当前用户:   
  19.         <%   
  20.             Object obj = SecurityContextHolder.getContext().getAuthentication();           
  21.             if (null != obj){   
  22.                 Object userDetail = SecurityContextHolder.getContext().getAuthentication().getPrincipal();   
  23.                 String username = "";   
  24.                 if (userDetail instanceof UserDetails) {   
  25.                     username = ((UserDetails) userDetail).getUsername();   
  26.                 } else {   
  27.                     username = userDetail.toString();   
  28.                 }   
  29.                 out.print(username);   
  30.                 out.print("<br><a href=\"j_acegi_logout\">注销</a>");   
  31.             }else{   
  32.                 out.print("当前没有有效的用户");   
  33.                 out.print("<br><a href=\"acegilogin.jsp\">登陆</a>");   
  34.             }   
  35.         %>          
  36.     </body>   
  37. </html>  
Java代码 复制代码
  1. <%@ page language="java" pageEncoding="UTF-8"%>   
  2. <%@ page import="org.acegisecurity.context.SecurityContextHolder"%>   
  3. <%@ page import="org.acegisecurity.userdetails.*"%>   
  4.   
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
  6. <html>   
  7.     <head>   
  8.         <title>My JSP 'pass.jsp' starting page</title>   
  9.   
  10.         <meta http-equiv="pragma" content="no-cache">   
  11.         <meta http-equiv="cache-control" content="no-cache">   
  12.         <meta http-equiv="expires" content="0">   
  13.         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">   
  14.         <meta http-equiv="description" content="This is my page">   
  15.     </head>   
  16.   
  17.     <body>   
  18.         当前用户:   
  19.         <%   
  20.             Object obj = SecurityContextHolder.getContext().getAuthentication();           
  21.             if (null != obj){   
  22.                 Object userDetail = SecurityContextHolder.getContext().getAuthentication().getPrincipal();   
  23.                 String username = "";   
  24.                 if (userDetail instanceof UserDetails) {   
  25.                     username = ((UserDetails) userDetail).getUsername();   
  26.                 } else {   
  27.                     username = userDetail.toString();   
  28.                 }   
  29.                 out.print(username);   
  30.                 out.print("<br><a href=\"j_acegi_logout\">注销</a>");   
  31.             }else{   
  32.                 out.print("当前没有有效的用户");   
  33.                 out.print("<br><a href=\"acegilogin.jsp\">登陆</a>");   
  34.             }   
  35.         %>          
  36.     </body>   
  37. </html>  
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page import="org.acegisecurity.context.SecurityContextHolder"%>
<%@ page import="org.acegisecurity.userdetails.*"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>My JSP 'pass.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"></head><body>当前用户:<%Object obj = SecurityContextHolder.getContext().getAuthentication();		if (null != obj){Object userDetail = SecurityContextHolder.getContext().getAuthentication().getPrincipal();String username = "";if (userDetail instanceof UserDetails) {username = ((UserDetails) userDetail).getUsername();} else {username = userDetail.toString();}out.print(username);out.print("<br><a href=\"j_acegi_logout\">注销</a>");}else{out.print("当前没有有效的用户");out.print("<br><a href=\"acegilogin.jsp\">登陆</a>");}%>		</body>
</html>



6.在WebRoot下创建acegilogin.jsp

Java代码 复制代码
  1. <%@ page language="java" pageEncoding="UTF-8"%>   
  2. <%@ page import="org.acegisecurity.ui.AbstractProcessingFilter" %>   
  3. <%@ page import="org.acegisecurity

这篇关于学习ACEGI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/654164

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件