首页 > 编程语言 >JAVA 相关知识点整理

JAVA 相关知识点整理

时间:2022-11-24 23:12:43浏览次数:42  
标签:知识点 JAVA applicationContext getBean public static 整理 return class

序号 标题 内容
1  springboot 请求设置  
server:
tomcat:
# 等待队列最大长度
 accept-count: 1000
# 最大工作线程数
 max-threads: 1000
# 最小工作线程数
 min-spare-threads: 10
# 最大可被链接数
 max-connections: 2000
# 编码
 uri-encoding: UTF-8
2 springboot中获取容器并应用
1、
/**
* @Description 获取SpringBoot的容器
 * @Author cheney
* @Date 2019-03-14
**/
@Component
public class ApplicationContextRegister implements ApplicationContextAware {

@Override
 public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringUtil.setApplicationContext(applicationContext);
 }

}

2、

**
* @Description 获取通过Spring注入实现的bean
* @Author cheney
* @Date 2019-03-14
**/
public class SpringUtil {
private static final Logger logger = LoggerFactory.getLogger(SpringUtil.class);

private static ApplicationContext applicationContext = null;

public static void setApplicationContext(ApplicationContext ac) {
SpringUtil.applicationContext = ac;
 }

public static <T> T getBean(String beanName) {
try {
if(applicationContext.containsBean(beanName)){
return (T) applicationContext.getBean(beanName);
 }else{
return null;
 }
}catch (Exception e) {
logger.error("getBean error beanName {}",beanName, e);
return null;
 }
}
public static OrderAttachLocalService getOrderAttachLocalService() {
return applicationContext.getBean(OrderAttachLocalService.class);
 }
public static OrderAttachMapper getOrderAttachMapper() {
return applicationContext.getBean(OrderAttachMapper.class);
 }

public static ShopBaseInfoService getShopBaseService() {
return applicationContext.getBean(ShopBaseInfoService.class);
 }
public static HPosInfo getHPosInfo() {
return applicationContext.getBean(HPosInfo.class);
 }
public static RedisClient getRedisClient() {
return applicationContext.getBean(RedisClient.class);
 }
}

 

3、在不能注入的地方使用 

private OrderUploadSignService orderUploadSignService = SpringUtil.getBean("orderUploadSignService");

 

二、第二种方式

1、定义 SpringApplicationContext 实现ApplicationContextAware 

@Component
@Lazy(value = false)
public class SpringApplicationContext implements ApplicationContextAware {

private static ApplicationContext applicationContext;

 //获取applicationContext
 public static ApplicationContext getApplicationContext() {
return applicationContext;
 }

//通过name获取 Bean.
 public static Object getBean(String name) {
return getApplicationContext().getBean(name);
 }

//通过class获取Bean.
 public static <T> T getBean(Class<T> clazz) {
return getApplicationContext().getBean(clazz);
 }

//通过name,以及Clazz返回指定的Bean
 public static <T> T getBean(String name, Class<T> clazz) {
return getApplicationContext().getBean(name, clazz);
 }

@Override
 public void setApplicationContext(ApplicationContext context) throws BeansException {
if (applicationContext == null) {
applicationContext = context;
 }
}
}

2、在使用的地方只接使用

UserService userService2= SpringApplicationContext.getBean(UserService.class);
String ss2=userService2.getUserNameByID(22);

 

三、在利用Controller 参数HttpServletRequest request 获取ApplicationContext 再获取对应的bean

// 设置静态 spring 对象
ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());
UserService userService3= ctx.getBean(UserService.class);
  mybatis-log控制台输出sql文 1、在application中加 就会将执行的sql输出在控制台。
logging:
level:
com.hualala.mendianbao.mapper: DEBUG

 

2、logback level设置DEBUG

<root level="DEBUG">
  循环迭代性能

1、外部for 循环和 .stream().foreach

简单数据外部for 循环性能比较 .stream()好,但有复杂处理两者相当

2.parallel处理比 for和.stream().froeach 性能好,但注意处理过程中使用的存储对象需要是线程安全的。

  Prometheus和Grafana

首先简单介绍Prometheus和Grafana
Prometheus是由SoundCloud开发的开源监控报警系统和时间序列数据库(TSDB),它是一个监控采集与数据存储框架(监控服务器端),具体采集什么数据依赖于Exporter(监控客户端),例如:采集MySQL的数据需要使用mysql_exporter,当Prometheus调用mysql_expoter采集到MySQL的监控指标之后,把采集数据存放到Prometheus所在服务器的磁盘数据文件中。它的各个组件基本都是用Golang编写的,对编译和部署十分友好,并且没有特殊依赖,基本都是独立工作的。
Grafana是一个高“颜值”的监控绘图程序,也是一个可视化面板(Dashboard)。Grafana的厉害之处除了高“颜值”,还支持多种数据源(支持Graphite、Zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源)和灵活丰富的Dashboard配置选项(例如:可以把多个实例的相同采集项配置在一个展示框里),使其更易用,学习成本更低。从视觉上说,相比其他开源的监控系统,Grafana看起来要养眼得多。

   直接用JSONObject 创建对象
JSONObject foodJson = new com.alibaba.fastjson.JSONObject();
foodJson.put("orderKey", weChatOrderKey);

直接用JSONObject 创建对象

  idea生成、优化lamda表达式
boolean result= listUserinfo.stream().filter(x->x.getUserName()!=null && x.getUserName().equals("li")).findFirst().isPresent(); 在isPresent()方法上按 ALT+Enter

变化成:

boolean result= listUserinfo.stream().anyMatch(x->x.getUserName()!=null && x.getUserName().equals("li")); 
  枚举类定义

@Getter
public enum OrderStatusEnum {
WAiT("1","待接单"),ACCEPT("2","已接单"),SEND("3","已配送");

private String code;
private String name;

 OrderStatusEnum(String code, String name) {
this.code = code;
this.name = name;
 }
// 可以用orderStatusMap、listOrderStatus 做如是否存在枚举值
 public static Map<String,OrderStatusEnum> orderStatusMap=new HashMap<String, OrderStatusEnum>();
public static List<OrderStatusEnum> listOrderStatus=new ArrayList<>();
static {
// 将枚举所有值转换成 Hashmap
 Arrays.stream(OrderStatusEnum.values()).forEach(s->orderStatusMap.put(s.getCode(),s));
 listOrderStatus=Arrays.asList(OrderStatusEnum.values());
 }
}
  springboot新建测试

1、需要引入pom节点

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>

2、测试类创建所需注解

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MultiDataSourceApplication.class)
public class ServiceTest {
// 可以直接注入
@Autowired
CustomerService customerService;
// 也可以注入 applicationContext,再通过 applicationContext.getBean(CustomerService.class); 获取实例
@Autowired
ApplicationContext applicationContext;
  liunx 命令查询生成新文件

grep -a '2022080912212013720163610264' application.2022-08-09-12.log > application02.txt

  设置jvm 堆内存大小

一、

java.lang.OutOfMemoryError: Java heap space Heap size 设置 JVM堆的设置是指java程序运行过程中JVM
可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值
,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4
。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。
Heap size 的大小是Young Generation 和Tenured Generaion 之和。
提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。
提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。

Xmx20m -Xms5m -XX:HeapDumpOnOutofMemoryError -XX:HeapDumpPath=d:/a.dump

二、

java -Xmx72g -Xms72 -Xmn4g -Xss256m

-Xmx72g:设置JVM最大可用内存为72g。

 -Xms72g:设置JVM最小内存为72g。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

 -Xmn4g:设置年轻代大小为4G。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小

 

   
1、使用commons-lang3 包下很多语法如:
StringUtils.isNumeric(cacheStatus); 
StringUtils.equalsIgnoreCase(table.getOrderKey(), saasOrderKey)

2、

常量与变量比较应该
Integer.valueOf(1).equals(request.getIncludeDeliverOverTime())
不应该
1==request.getIncludeDeliverOverTime() 当request.getIncludeDeliverOverTime() 为null时会报错

 

  git 临时保存,切换

git stash save 'no commit';

git stash list
git stash pop

  class path和文件路径

1、  工具包hutool.jar里面有强大的基础工具封装,可以直接通过Props类获取资源文件。 

2、  使用classpath:这种前缀,就只能代表一个文件;使用classpath*:这种前缀,则可以代表多个匹配的文件。     

用法1:classpath:xxxx.xml  (匹配单文件)

用法2:classpath*:**/mapper/*Mapper.xml (匹配多文件)

3、

// 获取编译后 .class 所在目录,Resource下的文件也在该目录存储

ClassLoader classLoader = FirstController.class.getClassLoader();
Enumeration<URL> config = classLoader.getResources("");
URL url = config.nextElement();

  针对一个方法用泛型
public <T> void getStr(T s1){
System.out.println("it is method");
}
  查看表结构 show create table tbl_mendian_order_pay
 

标签:知识点,JAVA,applicationContext,getBean,public,static,整理,return,class
From: https://www.cnblogs.com/liyanbofly/p/16900146.html

相关文章

  • JAVA-图片移动业务之上移动
    代码一packagecom.itheima_06;publicclassApp{publicstaticvoidmain(String[]args){PictureFramepf=newPictureFrame();}}代码二p......
  • 45个超实用的JavaScript技巧及最佳实践 一 (收藏)
    1.第一次给变量赋值时,别忘记var关键字如果初次赋值给未声明的变量,该变量会被自动创建为全局变量,在​​JS​​开发中,应该避免使用全局变量,这是大家容易忽略的错误。2.使用===......
  • 45个超实用的JavaScript技巧及最佳实践(二)
    45个超实用的JavaScript技巧及最佳实践(一)21.使用逻辑AND/OR来处理条件语句varfoo=10;foo==10&&doSomething();//isthesamethingasif(foo==10)doSomething......
  • Docker Java+Tomcat 环境搭建
    Docker更多资料请到​​https://dashboard.daocloud.io​​学习 软件环境:jdk、tomcat、docker、centos、虚拟机  首先,您要准备一个CentOS的操作系统,虚拟机也行。总之,......
  • JavaWeb+SVN+Maven+Tomcat +jenkins实现自动化部署
       在日常开发项目中常见的开发模式是使用代码库来存放我们的项目例如:SVN、Git、CVS等,采用Maven来进行项目管理而需要在测试和发布项目的时候需要手动打包然后部署到服......
  • Java对象值传递和对象传递的总结
    值传递和对象传递的问题总结下。   先看基本类型作为参数传递的例子:publicclassTest1{publicstaticvoidmain(String[]args){intn=3;System.......
  • Java的内存回收机制
    1.Java在内存中的状态首先我们先写一个代码为例子:Person.javapackagetest;importjava.io.Serializable;publicclassPersonimplementsSerializable{static......
  • java8 升级 java11 的一些bug
    1.反射异常有些反射异常,不是自己代码的错而是一些框架调用的时候,所带来的,不好处理。用压制输出的形式,1行为压制,2行为调试模式,输出所有的报错信息。这里用java.base/ja......
  • java 反射 Reflection
    一.什么是反射:Relection(反射):是Java被视为动态语言的关键,反射机制允许程序在执行期间借助于ReflectionAPI取得任何类的内部信息,并能直接操作任意对象的内部属性及方法公式......
  • cmake的几个常用语法整理
    1、​​find_library​​寻找库此命令用于查找库。<VAR>创建名为的缓存条目以存储此命令的结果。如果找到库,则结果存储在变量中,除非清除变量,否则不会重复搜索。如果找不到......