geekymv

Do one thing, do it well.


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

security

发表于 2018-12-21

对称加密
信息的发方和接收方使用同一个密钥去加密和解密数据,它的最大优势是加/解密速度快,

非对称加密:

生成RSA密钥工具:https://docs.open.alipay.com/291/105971/

machine-learning

发表于 2018-12-19

电影:模仿游戏

推荐系统

  • 简介
    • 信息过载,推荐系统是信息过载所采取的措施,面对海量的数据信息,从中快速推荐出符合用户特点的物品,解决一些人的选择恐惧症;
    • 面向没有明确需求的人;
    • 解决如何从大量信息中找到自己感兴趣的信息;
    • 解决如何让自己生产的信息脱颖而出,受到大众的喜爱;
      阅读全文 »

kafka

发表于 2018-12-19 | 分类于 Kafka

https://mp.weixin.qq.com/s/bc2YcVeBglZkeHdASg3wXw

1.为什么使用消息队列?
引入MQ好处:

  • 系统解耦
  • 异步调用
  • 流量削峰

2.使用消息队列有什么缺点?

  • 系统可用性降低
  • 系统复杂性增加
    阅读全文 »

spring-aop

发表于 2018-12-13 | 分类于 Spring

AOP()
实现AOP的语言为AOL(Aspect-Oriented Language)

JDK1.3之后,引入了动态代理(Dynamic Proxy)

Joinpoint
在系统运行之前,AOP的功能模块需要织入到OOP的功能模块中,我们需要知道在系统的哪些执行点上进行织入操作,
这些将要在其上进行织入操作的系统执行点就称之为Joinpoint。

Pointcut
Pointcut 概念代表的是Joinpoint的表述方式。将横切逻辑织入当前系统的过程中,需要参照Pointcut规定的Joinpoint信息,
才可以知道应该往系统的哪些Jointpoint上织入横切逻辑。
Pointcut 指定了系统中符合条件的一组Jointput。

Advice
Advice 是单一横切关注点逻辑的载体,它代表将会织入到Joinpoint 的横切逻辑。

  • Before Advice
  • After Advice
  • Around Advice

Advice 实现了将被织入到Pointcut规定的Joinpoint 处的横切逻辑。

“叵” 字
中间的那一“口” 就是Joinpoint
上下一横就是要执行的逻辑

Aspect
Aspect 是对系统中的横切关注点逻辑进行模块化封装的AOP概念实体。通常情况下,Aspect 可以包含多个Pointcut 以及相关的Advice。

Spring AOP
Spring AOP 采用动态代理机制和字节码生成技术实现。在运行期间为目标对象生成一个代理对象,将横切逻辑织入到这个代理对象中,系统
最终使用的是织入了横切逻辑的代理对象,而不是真正的目标对象。

  • 代理模式(Proxy Pattern)

  • 动态代理(Dynamic Proxy)(基于接口的代理)
    InvocationHandler 就是我们要实现横切逻辑的地方,它是横切逻辑的载体,作用跟Advice是一样的。
    动态代理机制只能对实现了相应interface 的类使用,如果某个类没有实现任何interface,就无法使用动态代理机制为其生成相应的动态代理对象。

默认情况下,Spring AOP 发现目标对象如果实现了相应interface,则采用动态代理机制为其生成代理对象实例,如果目标对象没有实现任何interface,
Spring AOP 会尝试使用CGLIB(Code Generation Library)动态字节码生成技术为目标对象生成动态的代理对象实例。

  • 动态字节码生成技术(基于类的代理)
    动态字节码生成是对目标对象进行继承扩展,在系统运行期间动态地为目标对象生成相应子类。
    而子类可以通过重写来扩展父类的行为,只要将横切逻辑的实现放到子类中,然后让系统使用扩展后的目标对象的子类,就可以达到与代理模式相同的效果了。
    使用CGLIB 对类进行扩展的唯一限制就是无法对final方法进行重写。

org.springframework.aop.BeforeAdvice 所实现的横切逻辑将在相应的Joinpoint 之前执行,在Before Advice 执行完成之后,程序执行流程将从Joinpoint 处继续执行。
所以Before Advice 通常不会打断程序的执行流程,如果需要,可以通过抛出异常的形式中断程序流程。

org.springframework.aop.ThrowsAdvice 对应通常AOP概念中的 AfterThrowingAdvice。

ProxyFactory 织入器,进行横切逻辑的织入,生成代理对象。
基于接口的代理

基于类的代理
如果目标类没有实现任何接口,那么默认情况下,ProxyFactory会对目标类进行基于类的代理,即使用CGLIB。

可以通过设置ProxyFactory的proxyTargetClass 或optimize 属性值为true,强制ProxyFactory采用基于类的代理。

FactoryBean
如果容器的某个对象持有FactoryBean 的引用,它取得的不是FactoryBean 本身,而是FactoryBean 的getObject方法所返回的对象。

spring-transaction

发表于 2018-12-11

如果同一个类中有方法:methodA(); methodB()。methodA()没有开启事务,methodB()开启了事务

且methodA()会调用methodB()。

那么,methodA()调用methodB()时,不会开启事务!!!

即:同一个类中,无事务的方法调用有事务的方法,结果就是没有事务!!!

声明式事务配置详解
https://blog.csdn.net/jiadajing267/article/details/81056057

MySQL安装

发表于 2018-12-06

下载地址

检查当前系统是否安装mysql
rpm -qa|grep -i mysql

如果已经安装,卸载
sudo yum -y remove mysql-libs*

安装mysql服务端和客户端
sudo rpm -ivh MySQL-server-5.5.62-1.el6.x86_64.rpm
sudo rpm -ivh MySQL-client-5.5.62-1.el6.x86_64.rpm

查看mysql安装时创建的mysql用户和mysql组
cat /etc/passwd| grep mysql
cat /etc/group | grep mysql
或者通过mysqladmin –version命令查看

启动mysql
sudo service mysql start

直接连上
$ mysql

阅读全文 »

线程

发表于 2018-11-19

查看进程下的线程数:ps -Lf pid | wc -l
查看cpu核数:执行top命令后 按数字1

系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路

查看cpu消耗过高的进程
top

查看该进程中有哪些线程cpu过高,一般超过80%就是比较高的。
top -Hp pid

输入线程的十六进制值
printf “%x\n” tid

jstack pid | grep tid对应的十六进制

线程池大小设置多大合适
https://mp.weixin.qq.com/s/G0toGUjKQRcCpskheR32vA
https://mp.weixin.qq.com/s/YbyC3qQfUm4B_QQ03GFiNw
https://segmentfault.com/a/1190000022296465

CPU密集型
IO密集型

程序在进行IO操作时,CPU是处于空闲状态的。

线程等待时间所占比例越高,需要越多线程;
线程CPU时间所在比例越高,需要越少线程。

volatile 的使用

发表于 2018-11-18

防止指令重排序;
确保线程之间共享变量的立即可见性。

Lock 指令
在多处理器系统上,将当前处理器缓存行的内容写回到系统内存

CPU缓存

volatile 无法保证原子性操作。

redis

发表于 2018-11-16

https://www.jianshu.com/p/bc84b2b71c1c
https://juejin.im/post/5c3b4c4b518825253806335e

Redis 可以用来做什么

Redis 是 Remote Dictionary Service 的首字母缩写,也就是远程字典服务。

  • 记录帖子的点赞数、评论数、点击数;

redis 生产环境启动方案

阅读全文 »

Hello World

发表于 2018-11-15

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

1…1011

geekymv

110 日志
8 分类
23 标签
© 2022 geekymv
由 Hexo 强力驱动
| 总访问量次 | 总访客人 |
主题 — NexT.Muse v5.1.4