文章目录
时间:2018/10/22 – ?
【基础架构学习】
【Mac解压和压缩的命令总结】
zip文件
压缩
zip -q -r -e -m -o 'yourName.zip' "zipfile list''
-q :不显示压缩进度状态
-r :子目录子文件全部压缩为zip
-e :压缩文件需要加密,终端会提示你输入密码的
-m :压缩完删除原文件
-o :设置所有被压缩文件的最后修改时间为当前压缩时间
跨目录的时候是这么操作的
zip -q -r -e -m -o '\user\someone\someDir\someFile.zip' '\users\someDir'
解压
unzip -n text.zip -d /tmp
tar文件
把/home目录下包括它的子目录全部打包,打包文件名为usr.tar。
$ tar cvf usr.tar /home
例2:把/home目录下包括它的子目录全部打包,并进行压缩,文件名为usr.tar.gz 。
$ tar czvf usr.tar.gz /home
例3:把压缩文件usr.tar.gz还原并解包。
$ tar xzvf usr.tar.gz
【cat】
cat命令可以查看整个文件的内容cat filename
【chown】
chown命令改变文件拥有者或组chown mahede /data/applogs
【mkdir】
mkdir -p /data/applogs/log
【cd】
1. cd / 进入系统根目录
2. cd ~ 进入主目录
【ll和ls】
ll 列表查询
ls 模块查询
【git 学习】
【1. 提交项目代码流程】
git status
git add 【文件名】
git commit -m “描述”
git push origin 【本地分支】:【远程分支】
【2. Git的学习】
2.1 git init 文件生成 …git 便于git
2.2 git clone 【地址】 进入本地文件进行克隆
2.3 git checkout -b 【分支名】 切换到对应的分支下,创建新的分支并且切换到新的分支下
2.4 git checkout 【分支名】 切换到分支下
2.5 git branch 查看当前处于哪个分支
2.6 git branch -a 查看所有分支
2.7 git status 查看当前分支的代码详情,被改动的代码 ,注意一点就是父分支下的子分支和父分支都是相同代码结构
2.8 git add 【在git status中被修改的文件】在当前分支下添加被改动过的代码
2.9 git push origin 【本地分支】:【远程分支】将本地分支push到远程分支下,包括创建
2.10 git-keygen 生成密钥,github需要,在查找时使用cat ~/.ssh/id_rsa_pub命令直接找到公钥
2.11 git log 查看log
【前端学习】
- div将HTML分块
- form表单 action代表form表单数据提交到哪,onsubmit代表点击提交触发的js事件
- onclick鼠标点击事件 hello
- formaction经常和submit混合使用
<form action="demo-form.php" method="get">
First name: <input type="text" name="fname" /><br>
Last name: <input type="text" name="lname" /><br>
<button type="submit">提交</button><br>
<button type="submit" formaction="demo-admin.php">提交</button>
</form>
- select标签和option配合使用
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
- Js获取html的标签数据
document.getElementById('id')
document.getElementByName(“id”)
document.getElementByClassName(“name”)
document.getElementsByTagName("span")[0]; //根据标签name获取信息
- div多层获取精确的信息使用class
<code class="language-html"><div id="div111">
<div class="divclass"></div>
<div class="divclass"></div>
<div class="divclass"></div>
<div class="divclass"></div>
</div>
<div id="div222">
<div class="divclass"></div>
<div class="divclass"></div>
<div class="divclass"></div>
<div class="divclass"></div>
</div>
</code>
Js:
var oDiv = document.getElementById("div111");
var aDiv = oDiv.getElementsByTagName("div");
alert(aDiv.length);
JQuery:
var oDiv= $("#div111 .divclass");
alert(oDiv.length);
- jquery和div的关系
<div class = "a b"></div>
$(“.a.b”)
- id 使用#aa.attr(“name”)
- input和button的type属性可以是button、text、submit、reset
【AOP学习】
AOP:使用场景一般做事务处理,日志处理,权限控制,用户请求
- 一个类被注解@Aspect注释,代表该类是一个切面类
- @component注解:把切面类加入到IOC容器中
- Springboot定义切面的步骤:
1. 定义切面类
@Aspect
@Component
public class Hello{}
2. 定义切点
@Aspect
@Component
public class Hello{
private final static String POINT_CUT=“execution(public * com.ruider.controller .* .*(..))”
}
*注意
public:切点方法的修饰符
第一个*:返回数据类型*代表不限制
com.ruider.controller:类的全限名
第二个*:代表所有类
第三个*:代表当前类的所有方法
():代表方法的参数
.. :代表所有参数,参数不限制
其他方式:execution(* com.ruider.controller..add*(..)||* com.ruider.controller..delete*(..)) 加上或者判断也行
3. 定义切面方法
@Aspect
@Component
public class Hello{
private final static String POINT_CUT=“execution(public * com.ruider.controller .* .*(..))”
@PointCut(value=POINT_CUT)
public void point(){}
}
4. 定义Advice
@Aspect
@Component
public class Hello{
private final static String POINT_CUT=“execution(public * com.ruider.controller .* .*(..))”
@PointCut(value=POINT_CUT)
public void point(){}
@Before(value=“point()”)
public void before(JoinPoint point){…前置方法…}
*注意
1. Before:代表前置方法(方法执行的操作)
JoinPoint:切点类,代理切面的切点方法,可以根据JoinPoint获取切点的方法名,参数,所属类名
@After(value=POINT_CUT)
public void after(JoinPoint point){…后置方法…}
@AfterReturing(value=POINT_CUT,returing=“result”)
public void after(JoinPoint point,Object result){…后置返回方法…}
*注意
1. AfterReturing方法在After方法之后执行,且有返回参数result
@AfterThrowing(value=POINT_CUT)
public void afterThrowing(JoinPoint point){…异常处理方法…}
*注意
AfterThrowing:异常处理方法
@Around(value=POINT_CUT)
public void around(ProceedingJoinPoint jp){
…用户检测代码…
if(条件满足){
jp.proceed(jp.getArgs()); //执行方法
}
else{
…不满足代码…
}
}
*注意
1. @Around代表before和afterReturning两个注解的总和
2. ProceedingJoinPoint执行方法的切点代理
}
【注解学习】
- @component注解:把类加入到IOC容器中
- @Aspect注释,代表该类是一个切面类
- @Value(value=“${jdbc.username}”)加载properties文件中的数据
- @PostConstructor注解在某个方法上,表示改bean被Spring调用构造器初始化bean的实例之后,立即执行该方法
- @Autowired 按照引用类型查找并注入字段
例如:
@Autowired
User user;
*注意
这里的@Autowired会在Spring IOC中查找User的bean并注入字段,如果使用@Autowired和beanName查找bean注入,必须和@qualifier(“beanName”)配合使用
比如
@Autowired@Qualifier(“user”)
User user;
User user;
- @Resource(“user”)根据bean的name在SpringIOC中查找bean,实在找不到,再根据bean的属性查找
例如
@Resource(“user”)
User user;
*注意
按照name=“user”在SpringIOC查找也可以是
@Resource
User user; //这样的话就是默认为user的bean name
- @Configuration注解用于配置类
- @Bean一般是在方法头部的注解,经常和@Configuration配合使用用于将方法返回的bean放入SpringIOC容器中管理,bean的name默认是方法的名字也可以是
@bean(name=“beaName”)
@Scope(value=“”)
@Description(value=“”)
- @ControllerAdvice+@ExceptionHandle处理在Controller中请求发生的异常
比如
@ControllerAdvice
public class GlobalExceptionHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(GlobalExceptionHandler.class);
@ExceptionHandler(value = Exception.class)
public String defaultErrorHandler(HttpServletRequest req, Exception e) {
LOGGER.error("发生异常了", e);
return "forward:/?viewName=resultInfo";
}
}
- @EnableScheduling 快速开启任务调度功能,新开启线程服务
下面是一篇使用ActiveMQ的案例,其中ActiveMQ的消费者使用到了该注解,作用在于以指定的时间间隔执行获取消息队列的消息
@EnableScheduling一般和@Scheduled(fixedDelay = 3000)搭配使用
@Component
@EnableScheduling
public class ActiveMQConsumer {
private Logger logger = LoggerFactory.getLogger(ActiveMQConsumer.class);
@Autowired
private ActiveMQConnectionFactory activeMQConnectionFactory;
public void receive(String queueName) {
try {
System.out.println("MQ准备输出用户消息");
logger.info("MQ准备输出用户消息");
Connection connection = activeMQConnectionFactory.createConnection();
connection.start();
logger.info("MQ当前连接启动成功");
Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(queueName);
MessageConsumer consumer = session.createConsumer(destination);
consumer.setMessageListener(new MQMessageListener(session));
//ObjectMessage message = (ObjectMessage) consumer.receive();
session.close();
logger.info("MQ关闭当前session成功");
}
catch (JMSException e) {
e.printStackTrace();
}
}
@Scheduled(fixedDelay = 4000)
public void receive() {
receive("message");
}
}