1 | yield put(action) 有办法直接try catch . 其它module 的action |
1.StyleSheet.compose和直接传递style数组
2.core-ng: useAction将action转化成普通函数
3.类型& 代表生成一个类型含有所有键值, | 联合类型 就是其中一种
4.Omit 是排除,pick是选中某些属性
5.所有use的依赖数组,如果都不会使用最新的,而是当时创建时的值
1 | yield put(action) 有办法直接try catch . 其它module 的action |
1.StyleSheet.compose和直接传递style数组
2.core-ng: useAction将action转化成普通函数
3.类型& 代表生成一个类型含有所有键值, | 联合类型 就是其中一种
4.Omit 是排除,pick是选中某些属性
5.所有use的依赖数组,如果都不会使用最新的,而是当时创建时的值
Word Embeddings/Sentence Embeddings
1.LLM 数据更新问题
2.数据安全问题
3.幻觉
1:无法处理隐含关系(推理).A的所在部门销售
2:全局推理缺陷
GraphRAG(仍有缺陷)
Ollama是一个开源的大模型管理工具,它提供了丰富的功能,包括模型的训练、部署、监控等。 通过Ollama,你可以轻松地管理本地的大模型,提高模型的训练速度和部署效率。
Hugging Face Hub 是一个协作平台,其中托管了大量的用于机器学习的开源模型和数据集,你可以将其视为 ML 的 Github。该 hub 让你可以轻松地找到、学习开源社区中有用的 ML 资产并与之交互,从而促进共享和协作
LangChain 的核心是一个开发环境,通过使用抽象方法简化 LLM 应用程序的编程:将一个或多个复杂流程表示为封装所有组成步骤的命名组件
1.some test
1 |
|
1 | function a() { |
执行过程类似Okhttp的责任链Filter.doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain)
.
如
1 |
|
以下顺序越来越精确,拦截链则是越精确越后拦截,其它都相同情况下则拦截顺按拦截器类名字母排序
1:指定资源匹配。例如”/index.jsp”
2:目录匹配。例如”/servlet/“
3:后缀名匹配,例如”.jsp”
4:通配符,拦截所有web资源。”/*”
Cookie.path = xxx eg:req.contextPath
来指定path,浏览器默认根据要访问的url依次匹配最接近的1级,2级path的cookie并带上URLEncode
Cookie.maxAge = 1000 // 秒为单位
${cookie.key.value} key为cookie对应的key
获取CookieSession作用域,浏览器重启或者新session后则刷新,原理是利用Cookie,带了个JSESSIONID=BE09C25AA4F9F1CBDC6B5641F59DBA36
, 同一对话
该session id值会一致,java web服务器根据id获取对应session,提供session作用域.
浏览器会自动管理session对应的cookie键值对,会话结束或者浏览器关闭时不进行存储,保证下次新会话不带上。
2种方式销毁
1:过期,可以配置过期时间
在web.xml
中配置
1 |
|
没有配置默认30分钟,在tomcat的web.xml中配置
2:主动销毁调用Session.invalidate()
方法
1 | <%@ page import="org.example.mybatis.pojo.User" %><%-- |
语法${变量名}
会依次从 page(当前页面有效)->request(当前请求有效)->session(当前会话有效)->application(当前应用有效) 寻找直到寻找到为止
1:引入依赖库
2:在 JSP 页面上引入 JSTL 标签库 如<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
1 | <c:if test="${flag == 1}"> |
get 或 post请求&&Content-Type 为application/x-www-form-urlencoded :
可以通过HttpServletRequest.getParameter
或HttpServletRequest.parameterMap
来获取URL中字段参数
post请求body参数只能通过HttpServletRequest.reader
或HttpServletRequest.inputStream
获取
1.HttpServletRequest.getParameter
或HttpServletRequest.parameterMap
获取URL中字段参数中文乱码问题
原因是浏览器默认用UTF-8进行URL encode,而tomcat
默认用ISO-8859-1解码后放入parameterMap。解决方案:String(req.getParameter("xxx").getBytes("ISO-8859-1"),"UTF-8")
Tomcat 8后默认以UTF-8解码,故无此问题
请求转发(forward)
一种在服务器内部的资源跳转方式,1次请求 req.getRequestDispatcher("/本服务内要挑战的路径").forward(req, resp)
请求2次
方式1:
1 | resp.setStatus(302) |
方式2:
1 | resp.sendRedirect("重定向地址") |
1 | resp.contentType = "text/html;charset=utf-8" //告诉客户端响应字符集,如果用字节流返回文字,也要设置 |
1 | # 查看所有可用的订阅 |
报错 ... executable kubelogin not found
1 | 你遇到的错误信息指出你需要安装kube login ,这是一个用于 Azure Kubernetes Service (AKS)与 |
###多个kubeconfig合并切换问题
export KUBECONFIG=/.kube/qaconfig:/.kube/uatconfig:~/.kube/prodonfig
kubectl config view –merge –flatten > ~/.kube/merged_config
mv ~/.kube/merged_config ~/.kube/config
1 | export KUBECONFIG=~/.kube/config:~/.kube/uatconfig |
1 | # 验证 YAML 文件的语法和结构是否正确,分别客户端验证和服务端验证 |
1 | kubectl get services -n uat-aggregator -o json | jq -c . |
1 | # 查看某个具体资源信息 |
docker exec -it <container-id或container-name> /bin/bash
对应docker file写法
kubectl exec po/session-0 -n dev-shipping -it – /bin/bash
kubectl exec session-0 -n dev-shipping -it – /bin/bash
kubectl exec -it
1 | sudo apt update #升级apt |
1 | sudo groupadd tomcat #增加tomcat用户组 |
在tomcat官网找到合适版本点击,获取对应tar.gz
链接
将其下载到/tmp
(这是一个很好的下载短暂项目的目录,)目录下
1 | wget https://dlcdn.apache.org/tomcat/tomcat-10/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp # 下载对应tomcat到tmp目录下 |
设置的tomcat用户需要能够访问Tomcat安装
1 | sudo chgrp -R tomcat /opt/tomcat # 在整个安装目录中授予tomcat组权限 |
我们希望能够将Tomcat作为服务运行,因此我们将设置systemd服务文件。 Tomcat需要知道Java的安装位置。此路径通常称为“JAVA_HOME”sudo update-java-alternatives -l
,将会得出如java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
有了这条信息,我们就可以创建systemd服务文件了。在/etc/systemd/system目录中键入以下内容以打开一个名为tomcat.service的文件:sudo nano /etc/systemd/system/tomcat.service
将以下内容粘贴到您的服务文件中。替换对应JAVA_HOME
, 如有必要可进行其他属性替换
1 | [Unit] |
完成后,保存并关闭文件(按下Ctrl+X),然后根据提示输入Y
确认,最后按下Enter
键退出编辑器.
1 | sudo systemctl daemon-reload #重新加载systemd守护程序,以便它知道我们的服务文件 |
conf
目录下logging.propertis
中java.util.logging.ConsloeHandler.encoding = GBK
8080
可在conf/server
的 <Connector port="8080"/>
中修改Servlet从3.0版本后开始支持使用注解配置,3.0版本前只支持XML配置文件的配置方式
1 |
|
精确路径>目录路径(“/xx/*“)>扩展路径(“*.do”)>任意匹配(“/“,”/*“)
扩展匹配前不能再有/
/和/*区别:
当我们的项目中的Servlet配置了“/”,会覆盖掉tomcat中的DefaultServlet,当其他的url-pattern都匹配不上时都会走这个Servlet
当我们的项目中配置了“/*“,意味着匹配任意访问路径
而实际请求时差别就是调用http://localhost:8080/项目名称/ 时,该servlet是否会调用。只是替换默认的则不会,匹配任意的则会。
任意匹配路径都会直接屏蔽静态资源直接访问
不使用代理时:
1.config.xml文件可随意放,可在resources文件下再创建文件。SqlSessionFactoryBuilder
加载时路径传相对resources根目录。
2.config.xml文件中配置的mapper文件位置<mapper resource="xxx/xxx"/>
可以随意放,路径相对于resources根目录下,而不是相对config.xml文件位置
3.mapper.xml文件中的命名空间(namespace=”user”)随便定义,如简单定义为数据库名即可
4.使用sqlSession.selectxxx或updatexxx等("${3中mapper文件中定义namespace}.${mapper文件中sql语句的id}")
来查询
MyBatis 配置中标签存在一定顺序,可以利用别名标签给pojo类统一省略包名,别名大小写忽略如
1 |
|
特殊字符如 <
在xml文件 mapper标签中会被认为是标签的开始,所以在mapper标签sql中需转义(html encode)或cddata注释(
特殊字符较多时用cddata较少时用转义)如:
1 | 1 ... where xxx < 10 |
1 | //不封装直接传 |
1.以上多条件查询时,可能存在后面参数password
不传参问题,那整个SQL就会变为SELECT * FROM tb_use WHERE username like #{userName} and password like
,查询就会出错,
可以用
1 | SELECT * FROM tb_use WHERE |
2.此时如果出现第一个参数username
不传仍然有问题,此时可以将所有条件都加上and
开头然后
2.1 以一个恒等式 eg: where 1=1 <if test="userName!=null and userName!='' "> and username like #{userName}</if>
来避免
2.2 使用Mybatis的<where>
标签实现2.1功能
即 <where> 1=1 <if test="userName!=null and userName!='' "> and username like #{userName}</if> <if>...</if></where>
choose (when,otherwise)
选择类似switch
1 |
|
同理以上语句当所有条件都不成立时会变成SELECT * FROM tb_use where
,会出问题,解决方案
<when text="..">...</when> <otherwise>1=1</otherwise>
1.动态删除sql中and
。当sql中第一个标签语句含and时,会动态删除。但做不到动态添加and
,如第2个标签缺and
,不会自动添加
2.动态删除where
,当标签内所有条件都不成立时,不会给语句添加where,使sql出问题.
factory.openSession(true)
设置默认自动提交<insert id="add" useGeneratedKeys="true" keyProperty="自动生成主键名">
可以通过,
问题eg:
1 |
|
1 | fun deleteSome(@Param("ids") ids:List<Int>) |
1 | <delete id="deleteSome"> |
eg:
1 | @Delete("delete from tb_use where id=#{id}") |
用于映射实体类字段名与列名关系,如果2者一样则可不映射,如果不一样默认以实体类定义字段顺序映射,可通过ResultMap设定映射关系
1 | <mapper> |
1: 如果SQL是写在接口的注解中,则同时使用@ResultMap("${userResultMap //mapper文件定义的resultMap id}")
2: 如果SQL是通过mapper xml标签写的,则在对应标签中eg: <select id="selectAll" resultType="user" resultMap="userResultMap">