- 浏览: 1140723 次
- 性别:
- 来自: 上海
-
最新评论
-
nizhipeng123:
private SessionFactory sessio ...
用map接收参数的几个注意的问题
文章列表
连表语句在用大括号括成一个整体的时候就是一张表,不需要再加表别名区分表查字段:
SELECT day FROM
(SELECT m.*, s.* FROM cms.daily_new_client88_master m LEFT JOIN cms.daily_new_client88_slave s on m.event_id= s.event_id) T
WHERE event_code = '101000100008' AND ( event_id like 'GL%' or event_code like '10%' ) GROUP BY day
...
总结:
通知:定义了什么时候,用什么
切点:定义了在何处用
切点+通知=切面(我们定义的aop类)---什么时候,什么地点用什么
连接点:程序中可以插入切面的地方
织入:在连接点织入切面
示例:
1:知识背景
软件系统可以看成是由一组关注点组成的,其中,直接的业务关注点,是直切关注点。而为直切关注点提供服务的,就是横切关注点。
2:面向切面的基本原理
什么是面向切面编程
横切关注点:影响应用多处的功能(安全、事务、日志)
切面:
横切关注点被模块化为特殊的类,这些类称为切面
这样就不用每次都配置Oralce下tnsnames.ora文件了。在PLSQL登录框的Database下直接填写:ip:port/instance,例如:10.27.192.43:1522/ORCL
总括:
Hystrix有两种方式来应对高并发场景,分别是请求缓存与请求合并
请求缓存是在同一请求(controller)多次访问中保证只调用一次这个服务提供者的接口(service),在这同一次请求第一次的结果会被缓存,保证同一请求中同样的多次访问返回结果相同
请求缓存不是只写入一次结果就不再变化的,而是每次请求到达Controller的时候,我们都需要为HystrixRequestContext进行初始化(每次执行完成请求就刷新缓存),之前的缓存也就是不存在了,我们是在同一个请求中保证结果相同,同一次请求中的第一次访问后对结果进行缓存,
缓存的生命 ...
断路器是否打开
在命令结果没有缓存命中的时候,Hystrix在执行命令前需要检查断路器是否为打开状态:
如果断路器是打开的,那么Hystrix不会执行命令,而是转接到fallback处理逻辑
如果断路器是关闭的,那么Hystrix调到第5步(线程池/请求队列/信号量是否占满),检查是否有可用资源来执行命令
断路器开启:
1.整个链路达到一定的阈值,默认情况下,10秒内产生超过20次请求,则符合第一个条件
2.满足第一个条件的情况下,如果请求的错误百分比大于阈值,则会打开断路器,默认50%
public class OpenMain {
public st ...
总括:
注解的作用
1,用于标记处理
2,结合切面使用,打包配置属性生成代理对象,用反射等实现配置效果
下面的代码示例相当于静态代理以某一个类实现熔断举例,在具体方法上,类上用注解属性开启 ...
https://www.iteye.com/blog/user/yuhuiblog6956676dfdsfs8883568269/blog/2509258
以上是string模板,html模板也有对应的模板框架
用对应的引擎把模板路径,实际内容传入即可--思路一样
1,对应的模板引擎加入模板路径生成对应的模板实例
2,模板实例处理要处理的内容
davinci的邮件模板源码:
MailUtils
inviteOrgMemberTemplate.html
String text = templateEngine.process(temp ...
今天发现idea的debug模式启动运行特别慢,查找原因是因为在多个方法上打了断点导致,关闭断点问题解决--尤其在主方法上打断点。关闭断点方法为:
import org.stringtemplate.v4.ST;
import org.stringtemplate.v4.STGroup;
import org.stringtemplate.v4.STGroupFile;
stringtemplate,可以用来通过实体类操作的方式转化sql---从而实现sql的页面拖拽配置拼接
1,准备ST可识别的模板
sqlTemplate.stg
2 ...
自己设计一套新的bi工具也不外乎此,其他逻辑思路简单
获取图形信息---获取图形对应的视图信息---获取视图对应的数据信息
获取图形信息---获取图形对应的视图信息---获取视图对应的数据信息
http://localhost:8080/api/v3/views?projectId=3---获取project对应的视图以及对应的数据源
"select v.id, v.`name`, v.`description`, s.name as 'sourceName'",
"from `view` v ...
JsonWebToken工具结合切面token实现认证---前后端结合使用思路:
前后加工不一样用于安全混淆
后端工具生成:eyJhbGciOiJIUzUxMiJ9.eyJ0b2tlbl9jcmVhdGVfdGltZSI6MTU3MTk2Mzg5OTMwOCwic3ViIjoicm9vdCIsInRva2VuX3VzZXJfbmFtZSI6InJvb3QiLCJleHAiOjE1NzE5NjU2OTksInRva2VuX3VzZXJfcGFzc3dvcmQiOiIkMmEkMTAkbDZmTG04NnlPazcub3ByUVhMNlNmdUtRTHp0 ...
总结:
filter过滤器的return 就是执行完了器其一次过滤操作,map的return 就是执行完了其一次修操作,filte,map都是要晚于collect方式执行--调试还要注意分行写
单语句不需要{}和return可以省略 ,多语句需要
示例:
总括:
springboot两个数据源配置
1,用注解或配置文件的方式排除自动配置---否则出现一个数据源的mapper接口找不到
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
2,分别配置数据源,并指定一个 ...
定时任务实现的几种方式:
Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。
ScheduledExecutorService:也jdk自带的一个类;是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说,任务是并发执行,互不影响。
Spring Task:Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多。
Quartz:这是一个功能 ...
可配置化的定时任务实现思路:
配置化的思路就是
思路一:页面维护入库,调用公用的工具类加入任务的组装即可---quartz(配置化核心)---优点,页面配置好一个,工具类就组装好一个--这种也需要在启动的时候开启所有已有的配置
页面增加维护定时任务,开始就是按照调度工厂,触发器,任务去组装即可,去除任务就是反之---页面配置用状态标识
加入后按照,调度工厂,触发器,任务(组装成jobDetail)去组装即可---到了自动执行
方式一组装方式 quarzt
SchedulerConfig CronJobController Qu ...