学习笔记1

1.MyBatis Mapper.xml文件中 $和#的区别

例子中假设参数名为 paramName,类型为 VARCHAR 。

①优先使用#{paramName,jdbcType=VARCHAR} 写法,除了可以防止sql注入以外,它还能在参数里含有单引号的时候自动转义,而${paramName}由于是类似于拼接sql的写法,不具备此功能。

②注意,使用 #{paramName,jdbcType=VARCHAR} 写法的时候,模糊查询的写法为:'%'||#{paramName,jdbcType=VARCHAR}||'%'

2.System.out.println(JsonUtils.toJsonPrettyString(dataList));输出日志

3.git使用基本步骤:③git status 查看此时状态

  ②git add -A 添加文件

  ③git commit -am "备注"  提交文件到服务器

  ④git status 查看此时状态

  ⑤git remote update 更新本地文件

  ⑥git status 查看此时状态  如果有冲突,在IDEA中右键项目,选择最后git→最后一个Respository→Merge changes

  ⑦git push origin HEAD:refs/for/分支名  将本地代码提交  例:git push origin HEAD:refs/for/DEV_190626_X_NS

git rebase 自动处理合并 git rebase --abort 停止合并

abort万能的终止命令,例:git merge --abort

仓库:存放代码的地方。分支:一个仓库可以包含很多分支

切换仓库:git remote -vv查看当前仓库地址

git remote remove origin 移除当前仓库

git remote add origin http://xiaolvyun... 添加仓库

切换分支:git branch -a  查看所有分支

git checkout 分支名,例:git checkout DEV_190417_D_HT

4.IDEA 快捷键

①shift+F8 调到下一断点

②alt+F8 显示变量值

③ctrl+H 替换

5.SQL 查看建表语句 show create table 表名

6.session和cookie的区别

①cookie数据存在客户端浏览器上,session数据存放在服务器端

②cookie不是很安全,session相对安全

③session一段时间内会保存在服务器上,当访问增多,会比较占用服务器性能,考虑到减轻服务器性能,应当使用cookie

④单个cookie保存的数据不能超过4K

7.resources文件夹下db.properties设置连接DB信息

8.main-java-resources-_pofile-A、B、C...  各环境信息,DB不同,服务器IP不同

9.缓存击穿:查询数据库不存在的值

10.缓存血崩:指在某一个时间段,缓存集中过期失效

11.基本数据类型不能用==,包装数据类型不能用equals比较

12.mybatis中判断字符串类型是否为0,0不加'',例:<if test="typeCode != 0">

13.字符串连接用StringBuilder.append

14.类成员方法只对继承类公开,使用protected

15.sum(case when t.FQZ_dealType = 'Reject' then 1 else 0 end) as txn_reject

16.ExecutorService是Java提供的用于管理线程池的类。该类的两个作用:控制线程数量和重用线程。

①Executors.newCacheThreadPool()可缓存线程池,先查看池中有没有以前建立的线程,如果有,就直接使用。如果没有,就建一个新的线程加入池中,缓存型池子通常用于执行一些生存期很短的异步型任务。线程池为无限大,当执行当前任务时上一个任务已经完成,会复用执行上一个任务的线程,而不用每次新建线程。

②Executors.newFixedThreadPool(int n)创建一个可重用固定个数的线程池,以共享的无界队列方式来运行这些线程。

③Executors.newScheduledThreadPool(int n):创建一个定长线程池,支持定时及周期性任务执行

例:ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);

          //延迟1秒后每3秒执行一次

          scheduledThreadPool.scheduleAtFixedRate(new Runnable() {

              public void run() {

                  System.out.println("延迟1秒后每3秒执行一次");

              }

          }, 1, 3, TimeUnit.SECONDS);

④Executors.newSingleThreadExecutor():创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行

17.缓冲队列BlockingQueue和自定义线程池ThreadPoolExecutor‘

常见的构造函数:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime,TimeUnit unit, BlockingQueue<Runnable> workQueue)

例:      // 创建数组型缓冲等待队列

          BlockingQueue<Runnable> bq = new ArrayBlockingQueue<Runnable>(10);

          // ThreadPoolExecutor:创建自定义线程池,池中保存的线程数为3,允许最大的线程数为6,如果该线程50秒没用将被收回

          ThreadPoolExecutor tpe = new ThreadPoolExecutor(3, 6, 50, TimeUnit.MILLISECONDS, bq);

18.转发forward:请求地址看不到转变,不能跨域,重定向redirect:请求地址发生改变,可以跨域

  解释:

转发:为找前台办事,前台办不了,把资料发给别人,我的事办完了,可以访问WEB-INF中的资源

重定向:前台办不了,前台又让找别人办,最后找别人办完了,不可以访问WEB-INF中的资源

如果转到外网:redirect:https://www.baidu.com/

如果转到jsp文件:forward:error  不加.jsp后缀

19. properties配置文件定义变量,建立对应的model文件,引用@Value

例:

配置文件:

smartbiURL=http://10.0.38.208:8080/smartbi

smartbi.username=admin

smartbi.password=manager

requestURL=http://10.0.38.208:8080/smartbi/vision/openresource.jsp?resid={resId}\&user={userName}&password{pwd}&showtoolbar=false&hiddenParamPanel=false&hidetoolbaritems=REFRESH MYFAVORITE PRINT

model文件:

package com.aibank.bigdata.portal.conf;

import lombok.Data;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.PropertySource;

@Configuration

@PropertySource(value = {"classpath:smartBIProxy.properties"})

@Data

public class SmartBIProperties {

    @Value("${smartbiURL}")

    private String smartbiURL;

    @Value("${smartbi.username}")

    private String username;

    @Value("${smartbi.password}")

    private String pwd;

    @Value("${requestURL}")

    private String requestURL;

}

在controller中:

@Autowired

    private SmartBIProperties smartBIProperties;

smartBIProperties.getUsername()

如果有参数需传入,用替换方法:

String url = smartBIProperties.getRequestURL();

        url = StringUtils.replace(url,"{resId}",resId);

        url = StringUtils.replace(url,"{userName}",request.getSession().getAttribute("LOGINNAME").toString());

        url = StringUtils.replace(url,"{pwd}",result.toString());

20.单例:全局状态不可变。多例:会更改状态。

21.ThreadLocal:用于保存某个线程共享变量(变量隔离),可能会导致内存泄漏。一个线程只能放入一个ThreadLocal变量。

内存泄漏:由程序申请的一块内存,且没有任何一个指针指向它,那么这块内存就泄露了。

22.Restful是一种原则,规范。符合就叫RestfulURL

23.线程池的好处:减少在创建和销毁线程上所消耗的时间以及系统资源的开销,解决资源不足的问题。

24.springboot:约定大于配置 starter: 帮我们引入开发相关jar包

25.Jedis是Redis官方首选的Java客户端开发包

26.yarn是作业调度和集群资源管理的一个框架

27.rpop和brpop,都是获取列表最后一位的值,但是brpop如果获取的空列表会阻塞线程。

例:brpop list1 list2 list3

就如list1位空的话,list2和list3为非空。

brpop 会返回 list2尾部的一个值。

否则,如何三个都一直为空的话,会一直阻塞。直到有lpush和rpush的操作。

如果设定了timeout的话,在timeout结束的时候,会解除阻塞。

28.对list添加元素:

lpush:从左往右添加元素,在key 对应 list的头部添加字符串元素

rpush:从右到左添加元素,在key 对应 list 的尾部添加字符串元素

29.LPUSH log newest_log

  LTRIM log 0 99

  模拟了一个日志程序,每次将最新日志 newest_log 放到 log 列表中,并且只保留最新的 100 项。

30.集群与分布式:

分布式:一个业务拆分为多个子业务,部署在多个服务器上

集群:同一业务,部署在多个服务器上

例:123分成1,2,3部署到不同地方,叫分布式;1部署到3台不同机器上,叫集群。

31.Redis是单节点操作,Redis cluster是分布式。

key→根据哈希函数映射到槽(一个节点对应多个分槽)→根据槽和映射表找到槽所对应的节点(槽不存储数据,节点存储数据)→从节点中获取key所对应的value值

master为主节点:集群模式下,首次启动的节点和被分配槽的节点都是主节点

slave节点为从节点:从节点负责复制主节点槽的信息和相关数据

Redis cluster相当于楼,节点相当于房间,槽相当于房间里的桶,key,value存在节点中

32.缓存分析过程:

非关系型(NoSQL)数据库redis,通过自带的jedis或者spring封装好的Redis cluster去连接redis,调用其get,set方法

33.注册中心与代理:

注册中心:将所有服务器信息存储在注册中心,客户端去注册中心查询哪台服务器可以满足其需求的具体信息

代理:类似于明星的经纪人。找不到需要用的服务器,需要代理去联系

34.数据入库过程:有一个大库存放获取的所有数据,每存入一条数据,blog将会多条记录,根据blog记录,通过流的方式获取并处理存放到kafka文件中,订阅卡夫卡(卡夫卡:分布式发布订阅消息系统)消息,获取数据存放到kudu数据库

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文是对Redis基础知识的一个学习总结,共包括如下章节内容: Redis是什么 安装和部署 数据库操作 Java...
    我是老薛阅读 491评论 0 4
  • 《JavaEE开发的颠覆者:Spring Boot实战》 2016年版读书笔记 第一章 Spring概述 1.Sp...
    GunnerAha阅读 459评论 2 13
  • 简介 Java与C++之间有一堆由内存动态分配与垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来...
    黄俊彬阅读 964评论 2 14
  • 01 连续沙哑的大笑声传遍罗马广场的赌石铺子,一家迅即窜到另一家。 哈哈哈,老赵啊老赵,亏你玩了一辈子...
    任_尔阅读 422评论 0 6
  • 两名大学生脚踩滑轮五百公里“长途刷街”的事引发热议。这是件好事,却被交警指出,不对——它违反了交规。这件...
    毛毛的小小世界阅读 1,080评论 0 1