【实习总结】学习经验2

1、okhttp

String url="http://www.";
/**
 * 发送HTTPS GET请求,处理服务端的响应。
 */
Request request = new Request.Builder().url(url).get().build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
System.out.println(response.headers().toString());

2、ConcurrentHashMap

多线程增加修改时,不会抛出ConcurrentModificationException,而HashMap会;推荐应用场景 多线程对HashMap数据添加删除操作。

应用:保存session

3、NIO

IO是面向流的,NIO是面向缓冲区的

Java NIO 管道是2个线程之间的单向数据连接。组成:Channel(通道),Buffer(缓冲区), Selector

Channel主要实现有:FileChannel 文件IO、DatagramChannel UDP、SocketChannel TCP Client、ServerSocketChannel TCP Server

Buffer:ByteBuffer, CharBuffer, DoubleBuffer, FloatBuffer, IntBuffer, LongBuffer, ShortBuffer

Selector运行单线程处理多个Channel

Pipe有一个source通道和一个sink通道。数据会被写到sink通道从source通道读取

4、长连接和短连接

a.长连接:client方与server方先建立连接,连接建立后不断开,然后再进行报文发送和接收。

b.短连接:Client方与server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此方式常用于一点对多点通讯

发送接收方式:

a.异步双工:接收和发送在同一个程序中,有两个不同的子进程分别负责发送和接送。

b.异步单工:接送和发送使用两个不同的程序来完成。

c.同步:报文发送和接收是同步进行,发送后等待接送返回报文

5、 Arrays.fill(buff, (byte) 0); 

6、sso单点登录

访问应用时,填写完用户名、密码后,完成登录(session状态为yes,浏览器中写入cookie)

有一个应用叫a.com 两个业务系统app1.a.com和app2.a.com SSO登录系统:sso.a.com

cookie不能跨域.

流程:

a.a.com创建令牌token,把令牌放入全局会话session中,同时把令牌放入redis库中

b.a.com携带令牌到客户端:redirectAttributes.addAttribute("ssoToken", ssoToken);

c.app1.a.com子系统判断是否有局部会话/全局会话,校验token有效性,从redis中获取,并记录到该子系统的redis库中

d.app1.a.com子系统设置本域cookie

d.退出登录,退出监听。redis删除令牌

7、sql

(1)数据类型:如果是json较长的用text 短的可以用varchar

8、多线程,事务回滚

service:

@Transactional(transactionManager = "xxTransactionManager", rollbackFor = Exception.class)

dao:

@Bean(name = "xxTransactionManager")
public PlatformTransactionManager transactionManager(
@Autowired @Qualifier("examDataSource") DataSource ds) {
    return createTransactionManager(ds);
}

9、mybatis:

a.条件模糊筛选

qw.and(wrapper ->wrapper.likeRight("subject", xxx).or().likeRight("qid", xxx));

b.java8 stream().map().collect()用法

eg:从user这个List中获得身份证id,以往是for循环,现在如下代码:

List<Long> ids = list.getRecords().stream().map(UserEntity::getId).collect(Collectors.toList());

c.批量插入

mapper.batchInsert(list);

10、判空

字符串:StringUtils.isEmpty()

list:CollectionUtils.isEmpty

int:==null

11、提交异步任务

a.定义异步任务名

public static final String ASYNC_TASK_XXX = "project1.name";

b.提交任务

 timerTaskExecutor.submit(AsyncTaskNames.ASYNC_TASK_XXX,
            () -> service.genAudioUrl());

12、map遍历

 Iterator<String> key= map.keySet().iterator();
    while (key.hasNext()) {
        String key= key.next();
        String value = map.get(key);
    }

12、kafka

(1)配置Kafka

a.注册消费者

//消费者    
@Bean("msgKafkaMsgHandler")
    public KafkaMsgHandler createKafkaMsgHandler() {
        MsgHandleService msgyHandleService = beanFactory.getBean(MsgHandleService.class);
        KafkaMsgHandler handler = super.createKafkaMsgHandler(beanFactory);
        //注册xxx任务结束后的handler
        handler.registerPayloadHandler(XXX.class, msgHandleService::handle);
        return handler;
    }
//监听消费
    @Bean("msgNotifyKafkaListenerCF")
    public KafkaListenerContainerFactory
            <ConcurrentMessageListenerContainer<String, KafkaMsg>> createKafkaListenerCf(BeanFactory beanFactory) {
        return super.createKafkaListenerContainerFactory(beanFactory);
    }
}

b.生产者

private KafkaMsgSender kafkaMsgSender;
kafkaMsgSender.send(req, sessionId);

c.消费者的Handle

@Service
@Profile("!local")
public class MsgQueueConsumer {
    @Autowired
    @Qualifier("msgKafkaMsgHandler")
    KafkaMsgHandler kafkaMsgHandler;
    @KafkaListener(id = "msgQueueListener",
            topics = "${topicName}",
            containerFactory = "msgKafkaListenerCF")
    public void onMessage(KafkaMsg msg) {
        kafkaMsgHandler.handle(msg);
    }
    public void handle(Req req) {
        //业务代码
    }
}

13、feign

@FeignClient(value = "xxx-boot")
public interface IApiService {
    /**
     * 异步获取评分.
     */
    @PostMapping(value = "/logan/score")
    Resp syncGetScore(@RequestBody Req req);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据分析实习学习路线可以从以下几个方面入手: 1. 数据分析基础:学习数据分析的基本概念、方法和技术。这包括数据可视化分析、数据挖掘算法、预测性分析能力、语义引擎等方面的知识。可视化分析能够直观地呈现大数据特点,数据挖掘算法能够科学地挖掘数据的特点,预测性分析能够通过建立模型预测未来的数据,语义引擎能够分析用户需求和实现更好的用户体验。 2. 编程语言和工具:学习编程语言和数据分析工具,如Python、R、SQL等。这些工具可以帮助你处理和分析大数据,进行数据清洗、数据处理和数据可视化等操作。 3. 数据结构与算法:学习数据结构和算法的基本知识,这对于进行高效的数据分析和处理非常重要。了解常用的数据结构和算法可以帮助你更好地处理和分析大数据。 4. 数据库知识:学习数据库的基本知识,包括数据库的设计、查询语言和数据管理等方面的知识。数据库是存储和管理大数据的重要工具,掌握数据库知识可以帮助你更好地进行数据分析和处理。 5. 计算机基础知识:学习计算机基础知识,包括操作系统、计算机网络和计算机组成原理等方面的知识。这些知识对于理解和应用数据分析的技术和工具非常重要。 总结来说,数据分析实习学习路线包括数据分析基础、编程语言和工具、数据结构与算法、数据库知识和计算机基础知识等方面的内容。通过系统学习这些知识,你可以为数据分析实习打下坚实的基础。[1][2][3]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值