学习笔记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数据库

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 本文是对Redis基础知识的一个学习总结,共包括如下章节内容: Redis是什么 安装和部署 数据库操作 Java...
    我是老薛阅读 483评论 0 4
  • Hadoop部署方式 本地模式 伪分布模式(在一台机器中模拟,让所有进程在一台机器上运行) 集群模式 服务器只是一...
    陈半仙儿阅读 1,601评论 0 9
  • 《JavaEE开发的颠覆者:Spring Boot实战》 2016年版读书笔记 第一章 Spring概述 1.Sp...
    GunnerAha阅读 449评论 2 13
  • 简介 Java与C++之间有一堆由内存动态分配与垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来...
    黄俊彬阅读 955评论 2 14
  • 01 连续沙哑的大笑声传遍罗马广场的赌石铺子,一家迅即窜到另一家。 哈哈哈,老赵啊老赵,亏你玩了一辈子...
    任_尔阅读 385评论 0 6